You are here

function QuizResult::score in Quiz 8.5

Same name and namespace in other branches
  1. 8.6 src/Entity/QuizResult.php \Drupal\quiz\Entity\QuizResult::score()
  2. 6.x src/Entity/QuizResult.php \Drupal\quiz\Entity\QuizResult::score()

Calculates the score user received on quiz.

Parameters

$quiz: The quiz node.

$result_id: Quiz result ID.

Return value

array Contains five elements:

  • question_count
  • possible_score
  • numeric_score
  • percentage_score
  • is_evaluated
1 call to QuizResult::score()
QuizResult::finalize in src/Entity/QuizResult.php
Score a quiz result.

File

src/Entity/QuizResult.php, line 483

Class

QuizResult
Defines the Quiz entity class.

Namespace

Drupal\quiz\Entity

Code

function score() {
  $quiz_result_answers = $this
    ->getLayout();
  $numeric_score = $possible_score = 0;
  $is_evaluated = 1;
  foreach ($quiz_result_answers as $quiz_result_answer) {

    // Get the scaled point value for this question response.
    $numeric_score += $quiz_result_answer
      ->getPoints();

    // Get the scaled max score for this question relationship.
    $possible_score += $quiz_result_answer
      ->getMaxScore();
    if (!$quiz_result_answer
      ->isEvaluated()) {
      $is_evaluated = 0;
    }
  }
  return array(
    'question_count' => count($quiz_result_answers),
    'possible_score' => $possible_score,
    'numeric_score' => $numeric_score,
    'percentage_score' => $possible_score == 0 ? 0 : round($numeric_score * 100 / $possible_score),
    'is_evaluated' => $is_evaluated,
  );
}