function quiz_calculate_personality_score in Quiz 6.3
Same name and namespace in other branches
- 6.6 quiz.module \quiz_calculate_personality_score()
- 6.5 quiz.module \quiz_calculate_personality_score()
Calculates score for a personality quiz.
1 call to quiz_calculate_personality_score()
- quiz_calculate_score in ./
quiz.module - Calculates the score user received on quiz.
File
- ./
quiz.module, line 1720 - Quiz Module
Code
function quiz_calculate_personality_score($quiz, $rid) {
$sql = 'SELECT qnr.child_nid, qnr.child_vid , n.type
FROM {quiz_node_relationship} qnr
INNER JOIN {node} n ON n.nid = qnr.child_nid
WHERE qnr.parent_nid = %d';
$results = db_query($sql, $quiz->nid);
$count = 0;
$scores = array();
$options = array();
while ($question = db_fetch_object($results)) {
$function = $question->type . '_quiz_personality_question_score';
if (function_exists($function)) {
$option_id = $function($quiz, $question->child_nid, $question->child_vid, $rid);
$options[$option_id] = isset($options[$option_id]) ? $options[$option_id] + 1 : 1;
}
++$count;
}
// Figure out the most popular option:
$best = new stdClass();
$best->id = NULL;
$best->count = 0;
foreach ($options as $id => $number) {
if ($number >= $best->count) {
$best->id = $id;
$best->count = $number;
}
}
// Return total number of questions and the option_summary for the best option.
return array(
'question_count' => $count,
'result_option' => $best->id,
);
}