/** * Quiz periodic clean-up tasks. */ function quiz_cron() { global $CFG; mtrace(''); // Since the quiz specifies $module->cron = 60, so that the subplugins can // have frequent cron if they need it, we now need to do our own scheduling. $quizconfig = get_config('quiz'); if (!isset($quizconfig->overduelastrun)) { $quizconfig->overduelastrun = 0; $quizconfig->overduedoneto = 0; } $timenow = time(); if ($timenow > $quizconfig->overduelastrun + 3600) { require_once($CFG->dirroot . '/mod/quiz/cronlib.php'); $overduehander = new mod_quiz_overdue_attempt_updater(); $processto = $timenow - $quizconfig->graceperiodmin; mtrace(' Looking for quiz overdue quiz attempts between ' . userdate($quizconfig->overduedoneto) . ' and ' . userdate($processto) . '...'); list($count, $quizcount) = $overduehander->update_overdue_attempts($timenow, $quizconfig->overduedoneto, $processto); set_config('overduelastrun', $timenow, 'quiz'); set_config('overduedoneto', $processto, 'quiz'); mtrace(' Considered ' . $count . ' attempts in ' . $quizcount . ' quizzes.'); } // Run cron for our sub-plugin types. cron_execute_plugin_type('quiz', 'quiz reports'); cron_execute_plugin_type('quizaccess', 'quiz access rules'); return true; }
/** * Quiz periodic clean-up tasks. */ function quiz_cron() { global $CFG; require_once $CFG->dirroot . '/mod/quiz/cronlib.php'; mtrace(''); $timenow = time(); $overduehander = new mod_quiz_overdue_attempt_updater(); $processto = $timenow - get_config('quiz', 'graceperiodmin'); mtrace(' Looking for quiz overdue quiz attempts...'); list($count, $quizcount) = $overduehander->update_overdue_attempts($timenow, $processto); mtrace(' Considered ' . $count . ' attempts in ' . $quizcount . ' quizzes.'); // Run cron for our sub-plugin types. cron_execute_plugin_type('quiz', 'quiz reports'); cron_execute_plugin_type('quizaccess', 'quiz access rules'); return true; }