From 348aae868089ed626eee204cd2e02ad58353710a Mon Sep 17 00:00:00 2001 From: Tim Hunt Date: Thu, 5 Aug 2010 12:43:15 +0000 Subject: [PATCH] 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.) --- mod/quiz/report/overview/report.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/quiz/report/overview/report.php b/mod/quiz/report/overview/report.php index 9053178f858..1cdd5acd5ca 100644 --- a/mod/quiz/report/overview/report.php +++ b/mod/quiz/report/overview/report.php @@ -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[] = ''.$timefinish.''; } else {