quiz reports MDL-21111 Quiz duration is reported in years if Time Finish is before Time Start

Suppose you have two load-balanced servers with badly-synchronised clocks, and
a student does a really quick quiz attempt.

Then it is possible that quiz_attemtp.timestart is greater than quiz_attemtp.timefinish.
And these columns are unsigned (on MySQL) so timefinish - timestart is compulted as
a number close to 2^64, which is about 42 times the age of the universe.

Do the subtraction in PHP instead. (But we still need to compute a duration columnin PHP
because sometimes we sort on it.)
This commit is contained in:
Tim Hunt
2010-08-05 12:43:15 +00:00
parent f7046b2599
commit 348aae8680
+1 -1
View File
@@ -491,7 +491,7 @@ class quiz_report extends quiz_default_report {
}
if ($attempt->timefinish) {
$timefinish = userdate($attempt->timefinish, $strtimeformat);
$duration = format_time($attempt->duration);
$duration = format_time($attempt->timefinish - $attempt->timestart);
if (!$download) {
$row[] = '<a href="review.php?q='.$quiz->id.'&amp;attempt='.$attempt->attempt.'">'.$timefinish.'</a>';
} else {