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:
@@ -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.'&attempt='.$attempt->attempt.'">'.$timefinish.'</a>';
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user