Exemple #1
0
 /**
  * saves the results of the contest as elggObject
  * @param <boolean> $complete_status
  * @return ElggObject $result
  */
 public function save_results($complete_status = true)
 {
     $_SESSION['challenge'][$this->guid]['completed'] = $complete_status;
     $challenge = $_SESSION['challenge'][$this->guid];
     $result = new ElggObject();
     $result->subtype = 'izap_challenge_results';
     $result->access_id = ACCESS_PUBLIC;
     $result->container_guid = $this->guid;
     $result->title = $this->title;
     $result->description = serialize($challenge['answers']);
     $result->total_score = (int) $challenge['totals'];
     $result->total_correct_answers = (int) $challenge['total_correct_answers'];
     $result->total_attemped_questions = (int) $challenge['qc'];
     $result->total_questions = (int) count($challenge['questions']);
     $result->required_percentage = $this->required_correct;
     $total_percentage = round($result->total_score / $result->total_questions * 100, 0);
     $result->total_percentage = (int) ($total_percentage ? $total_percentage : 0);
     $result->status = (int) $result->total_percentage < (int) $this->required_correct ? 'failed' : 'passed';
     $result->challenge_guid = $this->guid;
     $result->is_completed = $complete_status ? 'yes' : 'no';
     $result->total_time_taken = time() - $challenge['start_time'];
     IzapBase::getAllAccess();
     // force save
     $user_var = elgg_get_logged_in_user_entity()->username . '_last_attempt';
     $this->{$user_var} = time();
     $this->total_attempted = (int) $this->total_attempted + 1;
     $user_var = elgg_get_logged_in_user_entity()->username . '_total_attempted';
     $this->{$user_var} = (int) $this->{$user_var} + 1;
     if ($result->status == 'passed') {
         $pass_var = elgg_get_logged_in_user_entity()->username . '_total_passed';
         $this->total_passed = (int) $this->total_passed + 1;
         $this->{$pass_var} = (int) $this->{$pass_var} + 1;
     }
     $result->save();
     Izapbase::removeAccess();
     //unset($_SESSION['challenge'][$this->guid]['active']);
     return $result;
 }