function quiz_calculate_score in Quiz 5.2
Same name and namespace in other branches
- 8.4 quiz.module \quiz_calculate_score()
- 5 quiz.module \quiz_calculate_score()
- 6.6 quiz.module \quiz_calculate_score()
- 6.2 quiz.module \quiz_calculate_score()
- 6.3 quiz.module \quiz_calculate_score()
- 6.4 quiz.module \quiz_calculate_score()
- 6.5 quiz.module \quiz_calculate_score()
- 7.6 quiz.module \quiz_calculate_score()
- 7 quiz.module \quiz_calculate_score()
- 7.4 quiz.module \quiz_calculate_score()
- 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.module - quiz_end_actions in ./
quiz.module - Actions to take at the end of a quiz.
- quiz_user_results in ./
quiz.module
File
- ./
quiz.module, line 1214
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;
}