You are here

function quiz_calculate_score in Quiz 6.2

Same name and namespace in other branches
  1. 8.4 quiz.module \quiz_calculate_score()
  2. 5.2 quiz.module \quiz_calculate_score()
  3. 5 quiz.module \quiz_calculate_score()
  4. 6.6 quiz.module \quiz_calculate_score()
  5. 6.3 quiz.module \quiz_calculate_score()
  6. 6.4 quiz.module \quiz_calculate_score()
  7. 6.5 quiz.module \quiz_calculate_score()
  8. 7.6 quiz.module \quiz_calculate_score()
  9. 7 quiz.module \quiz_calculate_score()
  10. 7.4 quiz.module \quiz_calculate_score()
  11. 7.5 quiz.module \quiz_calculate_score()

Calculates the score user received on quiz.

Parameters

$quiz: The quiz node.

$rid: Quiz result ID.

Return value

array Contains three elements: question_count, num_correct and percentage_score.

3 calls to quiz_calculate_score()
quiz_admin_results in ./quiz.admin.inc
quiz_end_actions in ./quiz.module
Actions to take at the end of a quiz.
quiz_user_results in ./quiz.pages.inc

File

./quiz.module, line 1071
Quiz Module

Code

function quiz_calculate_score($quiz, $rid) {
  if ($quiz->pass_rate > 0) {
    $score = db_fetch_array(db_query("SELECT count(*) as question_count, sum(is_correct) as num_correct " . "FROM {quiz_node_results_answers} " . "WHERE result_id = %d", $rid));
    if ($score['question_count'] > 0) {
      $score['percentage_score'] = round($score['num_correct'] * 100 / $score['question_count']);
    }
  }
  else {
    $score = db_fetch_array(db_query("SELECT " . "(SELECT count(*) FROM {quiz_node_results_answers} WHERE result_id = %d) as question_count," . "(SELECT option_summary " . "FROM {quiz_multichoice_user_answers} " . "LEFT JOIN {quiz_multichoice_answers} USING (answer_id) " . "LEFT JOIN {quiz_node_result_options} ON (result_option = option_id) " . "WHERE result_id = %d " . "GROUP BY result_option ORDER BY COUNT(result_option) desc LIMIT 1) as result_option", $rid, $rid));
  }
  return $score;
}