statistics MDL-25822 multiple values in get_field_sql
authorDan Poltawski <dan.poltawski@luns.net.uk>
Thu, 30 Dec 2010 09:40:28 +0000 (09:40 +0000)
committerDan Poltawski <dan.poltawski@luns.net.uk>
Thu, 30 Dec 2010 10:30:07 +0000 (10:30 +0000)
A variety of get_field_sql calls returning multiple values, switched
to using MIN/MAX selects.

admin/report/courseoverview/index.php
course/report/stats/lib.php
lib/statslib.php

index 74c6d24..da91b61 100644 (file)
@@ -27,9 +27,9 @@
 
     $reportoptions = stats_get_report_options($course->id,STATS_MODE_RANKED);
 
-    $earliestday = $DB->get_field_sql('SELECT timeend FROM {stats_daily} ORDER BY timeend');
-    $earliestweek = $DB->get_field_sql('SELECT timeend FROM {stats_weekly} ORDER BY timeend');
-    $earliestmonth = $DB->get_field_sql('SELECT timeend FROM {stats_monthly} ORDER BY timeend');
+    $earliestday = $DB->get_field_sql('SELECT MIN(timeend) FROM {stats_daily}');
+    $earliestweek = $DB->get_field_sql('SELECT MIN(timeend) FROM {stats_weekly}');
+    $earliestmonth = $DB->get_field_sql('SELECT MIN(timeend) FROM {stats_monthly}');
 
     if (empty($earliestday)) $earliestday = time();
     if (empty($earliestweek)) $earliestweek = time();
index 095d13c..85a7609 100644 (file)
@@ -54,13 +54,13 @@ function report_stats_timeoptions($mode) {
     global $CFG, $DB;
 
     if ($mode == STATS_MODE_DETAILED) {
-        $earliestday = $DB->get_field_sql('SELECT timeend FROM {stats_user_daily} ORDER BY timeend');
-        $earliestweek = $DB->get_field_sql('SELECT timeend FROM {stats_user_weekly} ORDER BY timeend');
-        $earliestmonth = $DB->get_field_sql('SELECT timeend FROM {stats_user_monthly} ORDER BY timeend');
+        $earliestday = $DB->get_field_sql('SELECT MIN(timeend) FROM {stats_user_daily}');
+        $earliestweek = $DB->get_field_sql('SELECT MIN(timeend) FROM {stats_user_weekly}');
+        $earliestmonth = $DB->get_field_sql('SELECT MIN(timeend) FROM {stats_user_monthly}');
     } else {
-        $earliestday = $DB->get_field_sql('SELECT timeend FROM {stats_daily} ORDER BY timeend');
-        $earliestweek = $DB->get_field_sql('SELECT timeend FROM {stats_weekly} ORDER BY timeend');
-        $earliestmonth = $DB->get_field_sql('SELECT timeend FROM {stats_monthly} ORDER BY timeend');
+        $earliestday = $DB->get_field_sql('SELECT MIN(timeend) FROM {stats_daily}');
+        $earliestweek = $DB->get_field_sql('SELECT MIN(timeend) FROM {stats_weekly}');
+        $earliestmonth = $DB->get_field_sql('SELECT MIN(timeend) FROM {stats_monthly}');
     }
 
 
@@ -90,4 +90,4 @@ function stats_report_extend_navigation($navigation, $course, $context) {
             $navigation->add(get_string('stats'), $url, navigation_node::TYPE_SETTING, null, null, new pix_icon('i/report', ''));
         }
     }
-}
\ No newline at end of file
+}
index b52a7c4..e987ff9 100644 (file)
@@ -854,13 +854,13 @@ function stats_get_start_from($str) {
     global $CFG, $DB;
 
     // are there any data in stats table? Should not be...
-    if ($timeend = $DB->get_field_sql('SELECT timeend FROM {stats_'.$str.'} ORDER BY timeend DESC')) {
+    if ($timeend = $DB->get_field_sql('SELECT MAX(timeend) FROM {stats_'.$str.'}')) {
         return $timeend;
     }
     // decide what to do based on our config setting (either all or none or a timestamp)
     switch ($CFG->statsfirstrun) {
         case 'all':
-            if ($firstlog = $DB->get_field_sql('SELECT time FROM {log} ORDER BY time ASC')) {
+            if ($firstlog = $DB->get_field_sql('SELECT MIN(time) FROM {log}')) {
                 return $firstlog;
             }
         default: