MDL-34109 quiz cron: timelimit are timeclose of 0 are special.
authorTim Hunt <T.J.Hunt@open.ac.uk>
Fri, 29 Jun 2012 10:07:21 +0000 (11:07 +0100)
committerDan Poltawski <dan@moodle.com>
Mon, 2 Jul 2012 08:44:35 +0000 (16:44 +0800)
If the timelimit or timeclose of a quiz are 0, this means 'no
restriction', rather than '1970' or '0 seconds'. We need to handle these
special cases correctly in the code that looks for quiz attempts that
might be in the wrong state.

mod/quiz/cronlib.php

index b6a1eb0..111419c 100644 (file)
@@ -127,15 +127,15 @@ class mod_quiz_overdue_attempt_updater {
 
           WHERE (
                 state = 'inprogress' AND (
-                    :timenow1 > usertimeclose OR
-                    :timenow2 > quiza.timestart + usertimelimit
+                    (usertimeclose > 0 AND :timenow1 > usertimeclose) OR
+                    (usertimelimit > 0 AND :timenow2 > quiza.timestart + usertimelimit)
                 )
             )
           OR
             (
                 state = 'overdue' AND (
-                    :timenow3 > graceperiod + usertimeclose OR
-                    :timenow4 > graceperiod + quiza.timestart + usertimelimit
+                    (usertimeclose > 0 AND :timenow3 > graceperiod + usertimeclose) OR
+                    (usertimelimit > 0 AND :timenow4 > graceperiod + quiza.timestart + usertimelimit)
                 )
             )