function quiz_cron in Quiz 8.6
Same name and namespace in other branches
- 8.4 quiz.module \quiz_cron()
- 8.5 quiz.module \quiz_cron()
- 6.6 quiz.module \quiz_cron()
- 6.3 quiz.module \quiz_cron()
- 6.4 quiz.module \quiz_cron()
- 6.5 quiz.module \quiz_cron()
- 7.6 quiz.module \quiz_cron()
- 7 quiz.module \quiz_cron()
- 7.4 quiz.module \quiz_cron()
- 7.5 quiz.module \quiz_cron()
- 6.x quiz.module \quiz_cron()
Implements hook_cron().
File
- ./
quiz.module, line 52 - Contains quiz.module
Code
function quiz_cron() {
$db = Drupal::database();
$result_ids = array();
// Remove old quiz results that haven't been finished.
$rm_time = Drupal::config('quiz.settings')
->get('remove_partial_quiz_record');
// $time = 0 for never.
if ($rm_time) {
$res = $db
->select('quiz_result', 'qnr')
->fields('qnr', array(
'result_id',
))
->condition('time_end', 0)
->where('(:request_time - time_start) > :remove_time', array(
':request_time' => Drupal::time()
->getRequestTime(),
':remove_time' => $rm_time,
))
->execute();
while ($result_id = $res
->fetchField()) {
$result_ids[$result_id] = $result_id;
}
}
// Remove invalid quiz results.
$rm_time = Drupal::config('quiz.settings')
->get('remove_invalid_quiz_record');
// $time = 0 for never.
if ($rm_time) {
$query = $db
->select('quiz_result', 'qnr');
$query
->fields('qnr', array(
'result_id',
));
$query
->join('quiz', 'qnp', 'qnr.vid = qnp.vid');
// If the user has a limited amount of takes we don't delete invalid
// results.
$db_or = $query
->orConditionGroup();
$db_or
->isNull('qnp.takes');
$db_or
->condition('qnp.takes', 0);
$query
->condition($db_or);
$query
->condition('qnr.is_invalid', 1);
$query
->condition('qnr.time_end', Drupal::time()
->getRequestTime() - $rm_time, '<=');
$res = $query
->execute();
while ($result_id = $res
->fetchField()) {
$result_ids[$result_id] = $result_id;
}
}
$quiz_results = QuizResult::loadMultiple($result_ids);
Drupal::entityTypeManager()
->getStorage('quiz_result')
->delete($quiz_results);
}