Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merge branch 'MDL-34351' of git://github.com/timhunt/moodle

  • Loading branch information...
commit bc659e5284f784c826a25696ed8a6ca0602ffde2 2 parents 3fb8128 + c33d527
@danpoltawski danpoltawski authored
Showing with 29 additions and 20 deletions.
  1. +29 −20 mod/quiz/cronlib.php
View
49 mod/quiz/cronlib.php
@@ -57,27 +57,36 @@ public function update_overdue_attempts($timenow, $processfrom, $processto) {
$count = 0;
$quizcount = 0;
foreach ($attemptstoprocess as $attempt) {
- // If we have moved on to a different quiz, fetch the new data.
- if (!$quiz || $attempt->quiz != $quiz->id) {
- $quiz = $DB->get_record('quiz', array('id' => $attempt->quiz), '*', MUST_EXIST);
- $cm = get_coursemodule_from_instance('quiz', $attempt->quiz);
- $quizcount += 1;
+ try {
+
+ // If we have moved on to a different quiz, fetch the new data.
+ if (!$quiz || $attempt->quiz != $quiz->id) {
+ $quiz = $DB->get_record('quiz', array('id' => $attempt->quiz), '*', MUST_EXIST);
+ $cm = get_coursemodule_from_instance('quiz', $attempt->quiz);
+ $quizcount += 1;
+ }
+
+ // If we have moved on to a different course, fetch the new data.
+ if (!$course || $course->id != $quiz->course) {
+ $course = $DB->get_record('course', array('id' => $quiz->course), '*', MUST_EXIST);
+ }
+
+ // Make a specialised version of the quiz settings, with the relevant overrides.
+ $quizforuser = clone($quiz);
+ $quizforuser->timeclose = $attempt->usertimeclose;
+ $quizforuser->timelimit = $attempt->usertimelimit;
+
+ // Trigger any transitions that are required.
+ $attemptobj = new quiz_attempt($attempt, $quizforuser, $cm, $course);
+ $attemptobj->handle_if_time_expired($timenow, false);
+ $count += 1;
+
+ } catch (moodle_exception $e) {
+ // If an error occurs while processing one attempt, don't let that kill cron.
+ mtrace("Error while processing attempt {$attempt->id} at {$attempt->quiz} quiz:");
+ mtrace($e->getMessage());
+ mtrace($e->getTraceAsString());
}
-
- // If we have moved on to a different course, fetch the new data.
- if (!$course || $course->id != $quiz->course) {
- $course = $DB->get_record('course', array('id' => $quiz->course), '*', MUST_EXIST);
- }
-
- // Make a specialised version of the quiz settings, with the relevant overrides.
- $quizforuser = clone($quiz);
- $quizforuser->timeclose = $attempt->usertimeclose;
- $quizforuser->timelimit = $attempt->usertimelimit;
-
- // Trigger any transitions that are required.
- $attemptobj = new quiz_attempt($attempt, $quizforuser, $cm, $course);
- $attemptobj->handle_if_time_expired($timenow, false);
- $count += 1;
}
$attemptstoprocess->close();
Please sign in to comment.
Something went wrong with that request. Please try again.