statistics MDL-25822 Fix get_records_sql returning non-unique first column
authorDan Poltawski <dan.poltawski@luns.net.uk>
Thu, 30 Dec 2010 11:27:46 +0000 (11:27 +0000)
committerDan Poltawski <dan.poltawski@luns.net.uk>
Thu, 30 Dec 2010 12:42:41 +0000 (12:42 +0000)
course/report/stats/report.php
lib/statslib.php

index 65962dd..e13f064 100644 (file)
@@ -98,7 +98,7 @@
                 .' ORDER BY timeend DESC';
         }
 
-        $stats = $DB->get_records_sql($sql, $params);
+        $stats = $DB->get_records_sql($sql);
 
         if (empty($stats)) {
             echo $OUTPUT->notification(get_string('statsnodata'));
index e987ff9..8a49917 100644 (file)
@@ -1333,8 +1333,8 @@ function stats_get_report_options($courseid,$mode) {
     case STATS_MODE_GENERAL:
         $reportoptions[STATS_REPORT_ACTIVITY] = get_string('statsreport'.STATS_REPORT_ACTIVITY);
         if ($courseid != SITEID && $context = get_context_instance(CONTEXT_COURSE, $courseid)) {
-            $sql = 'SELECT r.id,r.name FROM {role} r JOIN {stats_daily} s ON s.roleid = r.id WHERE s.courseid = '.$courseid;
-            if ($roles = $DB->get_records_sql($sql)) {
+            $sql = 'SELECT r.id, r.name FROM {role} r JOIN {stats_daily} s ON s.roleid = r.id WHERE s.courseid = :courseid GROUP BY s.roleid';
+            if ($roles = $DB->get_records_sql($sql, array('courseid' => $courseid))) {
                 foreach ($roles as $role) {
                     $reportoptions[STATS_REPORT_ACTIVITYBYROLE.$role->id] = get_string('statsreport'.STATS_REPORT_ACTIVITYBYROLE). ' '.$role->name;
                 }