function _quiz_cleanup_after_jumping in Quiz 7.4
Same name and namespace in other branches
- 8.4 quiz.module \_quiz_cleanup_after_jumping()
- 6.4 quiz.module \_quiz_cleanup_after_jumping()
- 7 quiz.module \_quiz_cleanup_after_jumping()
Clean up result data when the user jumps forward in a quiz
When jumping in a quiz we might be skipping lots of questions. We need to update the result data according to this...
Parameters
object $quiz: The quiz node we want to clean up results for
int $rid: Result id for the result we want to clean up
1 call to _quiz_cleanup_after_jumping()
- quiz_jump_to in ./
quiz.module - Set the current session to jump to a specific question number
File
- ./
quiz.module, line 3892 - Quiz Module
Code
function _quiz_cleanup_after_jumping($quiz, $rid) {
foreach ($_SESSION['quiz_' . $quiz->nid]['previous_quiz_questions'] as $previous_question) {
// tried db_merge() instead of separate SELECT and INSERT query
// but it marks all the questions as skipped.
$condition = array(
':rid' => $rid,
':nid' => $previous_question['nid'],
':vid' => $previous_question['vid'],
);
$duplicate = db_query('SELECT * FROM {quiz_node_results_answers} WHERE result_id = :rid AND question_nid = :nid AND question_vid = :vid', $condition)
->fetchAssoc();
if (empty($duplicate)) {
db_insert('quiz_node_results_answers')
->fields(array(
'result_id' => $rid,
'question_nid' => $previous_question['nid'],
'question_vid' => $previous_question['vid'],
'is_skipped' => 1,
'answer_timestamp' => REQUEST_TIME,
'number' => $previous_question['number'],
'tid' => isset($previous_question['tid']) ? $previous_question['tid'] : 0,
))
->execute();
}
}
}