quiz.pages.inc in Quiz 8.5
User pages.
File
quiz.pages.incView source
<?php
/**
* @file
* User pages.
*/
/**
* Show result page for a given result id.
*
* @param $result_id
* Result id.
*/
function quiz_user_results($result_id) {
$quiz_result = QuizResult::load($result_id);
$view = entity_view('quiz_result', array(
$quiz_result,
));
if ($quiz_result->is_invalid) {
\Drupal::messenger()
->addWarning(t('Your previous score on this @quiz was equal or better. This result will not be saved.', array(
'@quiz' => _quiz_get_quiz_name(),
)));
}
return $view;
}
/**
* Helper function to remove the message saying the quiz haven't been scored.
*/
function _quiz_remove_unscored_message() {
if (!empty($_SESSION['messages']['warning'])) {
// Search for the message, and remove it if we find it.
foreach ($_SESSION['messages']['warning'] as $key => $val) {
if ($val == t('This @quiz has not been scored yet.', array(
'@quiz' => _quiz_get_quiz_name(),
))) {
unset($_SESSION['messages']['warning'][$key]);
}
}
// Clean up if the message array was left empty.
if (empty($_SESSION['messages']['warning'])) {
unset($_SESSION['messages']['warning']);
if (empty($_SESSION['messages'])) {
unset($_SESSION['messages']);
}
}
}
}
/**
* Returns an array of score information for a quiz.
*
* @param unknown_type $result_id
* @param unknown_type $quiz_vid
* @param unknown_type $is_evaluated
*/
function quiz_get_score_array($result_id, $quiz_vid, $is_evaluated) {
$properties = db_query('SELECT max_score, number_of_random_questions
FROM {quiz_node_properties}
WHERE vid = :vid', array(
':vid' => $quiz_vid,
))
->fetchObject();
$total_score = db_query('SELECT SUM(points_awarded)
FROM {quiz_node_results_answers}
WHERE result_id = :result_id', array(
':result_id' => $result_id,
))
->fetchField();
return array(
'question_count' => $properties->number_of_random_questions + quiz_get_number_of_questions($quiz_vid, $result_id),
'possible_score' => $properties->max_score,
'numeric_score' => $total_score,
'percentage_score' => $properties->max_score == 0 ? 0 : round($total_score * 100 / $properties->max_score),
'is_evaluated' => $is_evaluated,
);
}
Functions
Name | Description |
---|---|
quiz_get_score_array | Returns an array of score information for a quiz. |
quiz_user_results | Show result page for a given result id. |
_quiz_remove_unscored_message | Helper function to remove the message saying the quiz haven't been scored. |