MDL-33471 quiz cron: better mtrace output for overdue handling
authorTim Hunt <T.J.Hunt@open.ac.uk>
Fri, 8 Jun 2012 14:49:19 +0000 (15:49 +0100)
committerTim Hunt <T.J.Hunt@open.ac.uk>
Fri, 8 Jun 2012 15:02:01 +0000 (16:02 +0100)
mod/quiz/cronlib.php
mod/quiz/lib.php

index 7b14735..eab7b0f 100644 (file)
@@ -43,6 +43,7 @@ class mod_quiz_overdue_attempt_updater {
      * @param int $processfrom the value of $processupto the last time update_overdue_attempts was
      *      called called and completed successfully.
      * @param int $processto only process attempt modifed longer ago than this.
+     * @return array with two elements, the number of attempt considered, and how many different quizzes that was.
      */
     public function update_overdue_attempts($timenow, $processfrom, $processto) {
         global $DB;
@@ -53,11 +54,14 @@ class mod_quiz_overdue_attempt_updater {
         $quiz = null;
         $cm = null;
 
+        $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;
             }
 
             // If we have moved on to a different course, fetch the new data.
@@ -73,9 +77,11 @@ class mod_quiz_overdue_attempt_updater {
             // 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();
+        return array($count, $quizcount);
     }
 
     /**
index 6846aef..007a3b1 100644 (file)
@@ -446,6 +446,7 @@ function quiz_user_complete($course, $user, $mod, $quiz) {
  */
 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.
@@ -461,10 +462,15 @@ function quiz_cron() {
         $overduehander = new mod_quiz_overdue_attempt_updater();
 
         $processto = $timenow - $quizconfig->graceperiodmin;
-        $overduehander->update_overdue_attempts($timenow, $quizconfig->overduedoneto, $processto);
 
+        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.