function _quiz_maintain_results in Quiz 7.5
Same name and namespace in other branches
- 8.4 quiz.module \_quiz_maintain_results()
- 6.4 quiz.module \_quiz_maintain_results()
- 7.6 quiz.module \_quiz_maintain_results()
- 7 quiz.module \_quiz_maintain_results()
- 7.4 quiz.module \_quiz_maintain_results()
Mark results as invalid for a quiz according to the keep results setting.
This function will only mark the results as invalid. The actual delete action happens based on a cron run. If we would have deleted the results in this function the user might not have been able to view the result screen of the quiz he just finished.
Parameters
object $quiz: The quiz node to be maintained.
int $result_id: The result id of the latest result for the current user.
Return value
bool TRUE if results where marked as invalid, FALSE otherwise.
3 calls to _quiz_maintain_results()
- quiz_quiz_result_update in question_types/
quiz_question/ quiz_question.module - Implements hook_quiz_result_update().
- quiz_report_form_submit in ./
quiz.pages.inc - Submit the report form.
- quiz_update_total_score in ./
quiz.module - Update a score for a quiz.
File
- ./
quiz.module, line 3145 - quiz.module Main file for the Quiz module.
Code
function _quiz_maintain_results($quiz, $result_id) {
global $user;
// Do not delete results for anonymous users.
if ($user->uid == 0) {
return FALSE;
}
$result_ids = array();
switch ($quiz->keep_results) {
case QUIZ_KEEP_ALL:
break;
case QUIZ_KEEP_BEST:
$best_result_id = db_select('quiz_node_results', 'qnr')
->fields('qnr', array(
'result_id',
))
->condition('qnr.nid', $quiz->nid)
->condition('qnr.uid', $user->uid)
->condition('qnr.is_evaluated', 1)
->condition('qnr.is_invalid', 0)
->orderBy('score', 'DESC')
->execute()
->fetchField();
if ($best_result_id) {
$result_ids = db_select('quiz_node_results', 'qnr')
->fields('qnr', array(
'result_id',
))
->condition('qnr.nid', $quiz->nid)
->condition('qnr.uid', $user->uid)
->condition('qnr.is_evaluated', 1)
->condition('qnr.is_invalid', 0)
->condition('qnr.result_id', $best_result_id, '!=')
->execute()
->fetchCol('result_id');
}
break;
case QUIZ_KEEP_LATEST:
$result_ids = db_select('quiz_node_results', 'qnr')
->fields('qnr', array(
'result_id',
))
->condition('qnr.nid', $quiz->nid)
->condition('qnr.uid', $user->uid)
->condition('qnr.is_evaluated', 1)
->condition('qnr.is_invalid', 0)
->condition('qnr.result_id', $result_id, '!=')
->execute()
->fetchCol('result_id');
break;
}
if ($result_ids) {
db_update('quiz_node_results')
->fields(array(
'is_invalid' => 1,
))
->condition('result_id', $result_ids, 'IN')
->execute();
return TRUE;
}
return FALSE;
}