From 42389890d5abb4b56328423b77e16728b07ef9dd Mon Sep 17 00:00:00 2001 From: martin Date: Mon, 2 Sep 2002 16:35:41 +0000 Subject: [PATCH] More efficient use of database in userday as well, plus the day graph now always shows the whole current day --- course/loggraph.php | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/course/loggraph.php b/course/loggraph.php index dd1ded98b3..7e48cd960d 100644 --- a/course/loggraph.php +++ b/course/loggraph.php @@ -69,7 +69,7 @@ $graph->x_data = $days; $graph->y_data['logs'] = $logs; - $graph->y_format['logs'] = array('colour' => 'blue','line' => 'line','point' => 'square'); + $graph->y_format['logs'] = array('colour' => 'blue','line' => 'line'); $graph->y_label_left = "Hits"; $graph->label_size = "6"; @@ -85,22 +85,28 @@ case "userday.png": if ($date) { - $timestart = usergetmidnight($date); + $daystart = usergetmidnight($date); } else { - $timestart = usergetmidnight(time()); + $daystart = usergetmidnight(time()); } - while ($timestart < $timenow) { - $timefinish = $timestart + 3600; - if (! $logcount = get_record_sql("SELECT COUNT(*) as count FROM log - WHERE user = '$user->id' AND course = '$course->id' - AND `time` > '$timestart' AND `time` < '$timefinish'")) { - $logs[$i] = 0; + $dayfinish = $daystart + 86400; + + for ($i=0; $i<=23; $i++) { + $logs[$i] = 0; + $hour = $daystart + $i * 3600; + $hh = (int)userdate($hour, "%I"); + $hours[$i] = userdate($hour, "$hh %p"); + } + + if ($rawlogs = get_records_sql("SELECT floor((`time` - $daystart)/3600) as hour, + count(*) as num FROM log + WHERE user = '$user->id' + AND course = '$course->id' + AND `time` > '$daystart' + GROUP BY hour ")) { + foreach ($rawlogs as $rawlog) { + $logs[$rawlog->hour] = $rawlog->num; } - $logs[$i] = $logcount->count; - $hh = (int)userdate($timestart, "%I"); - $hours[$i] = userdate($timestart, "$hh %p"); - $i++; - $timestart = $timefinish; } $maxlogs = max($logs); -- 2.39.5