You are here

function quiz_cron in Quiz 7.5

Same name and namespace in other branches
  1. 8.6 quiz.module \quiz_cron()
  2. 8.4 quiz.module \quiz_cron()
  3. 8.5 quiz.module \quiz_cron()
  4. 6.6 quiz.module \quiz_cron()
  5. 6.3 quiz.module \quiz_cron()
  6. 6.4 quiz.module \quiz_cron()
  7. 6.5 quiz.module \quiz_cron()
  8. 7.6 quiz.module \quiz_cron()
  9. 7 quiz.module \quiz_cron()
  10. 7.4 quiz.module \quiz_cron()
  11. 6.x quiz.module \quiz_cron()

Implements hook_cron().

File

./quiz.module, line 320
quiz.module Main file for the Quiz module.

Code

function quiz_cron() {
  $result_ids = array();

  // Remove old quiz results that haven't been finished.
  $rm_time = variable_get('quiz_remove_partial_quiz_record', 0);

  // $time = 0 for never.
  if ($rm_time) {
    $res = db_select('quiz_node_results', 'qnr')
      ->fields('qnr', array(
      'result_id',
    ))
      ->condition('time_end', 0)
      ->where('(:request_time - time_start) > :remove_time', array(
      ':request_time' => REQUEST_TIME,
      ':remove_time' => $rm_time,
    ))
      ->execute();
    while ($result_id = $res
      ->fetchField()) {
      $result_ids[$result_id] = $result_id;
    }
  }

  // Remove invalid quiz results.
  $rm_time = variable_get('quiz_remove_invalid_quiz_record', 86400);

  // $time = 0 for never.
  if ($rm_time) {
    $query = db_select('quiz_node_results', 'qnr');
    $query
      ->fields('qnr', array(
      'result_id',
    ));
    $query
      ->join('quiz_node_properties', 'qnp', 'qnr.vid = qnp.vid');

    // If the user has a limited amount of takes we don't delete invalid
    // results.
    $query
      ->condition('qnp.takes', 0, '=');
    $query
      ->condition('qnr.is_invalid', 1);
    $query
      ->condition('qnr.time_end', REQUEST_TIME - $rm_time, '<=');
    $res = $query
      ->execute();
    while ($result_id = $res
      ->fetchField()) {
      $result_ids[$result_id] = $result_id;
    }
  }
  entity_delete_multiple('quiz_result', $result_ids);
}