diff --git a/course/report/stats/graph.php b/course/report/stats/graph.php
index 90d0e9a2bc7..221c804077c 100644
--- a/course/report/stats/graph.php
+++ b/course/report/stats/graph.php
@@ -43,11 +43,9 @@
.((!empty($roleid)) ? ' roleid = '.$roleid.' AND ' : '')
. ((!empty($param->stattype)) ? ' stattype = \''.$param->stattype.'\' AND ' : '')
.' timeend >= '.$param->timeafter
- .$param->extras
+ .' '.$param->extras
.' ORDER BY timeend DESC';
-error_log($sql);
-
$stats = get_records_sql($sql);
$stats = stats_fix_zeros($stats,$param->timeafter,$param->table,(!empty($param->line2)),(!empty($param->line3)));
@@ -87,6 +85,7 @@ error_log($sql);
$graph->y_format['line3'] = array('colour' => $c[3],'line' => 'line','legend' => $param->line3);
}
} else {
+ $data = array();
$times = array();
$roles = array();
foreach ($stats as $stat) {
@@ -98,7 +97,6 @@ error_log($sql);
$times[$stat->timeend] = userdate($stat->timeend,get_string('strftimedate'),$CFG->timezone);
}
}
-
foreach (array_keys($data) as $roleid) {
$graph->y_order[] = $roleid;
$graph->y_format[$roleid] = array('colour' => $c[$roleid], 'line' => 'line','legend' => $roles[$roleid]);
diff --git a/course/report/stats/index.php b/course/report/stats/index.php
index fe4147211fa..af74091e92d 100644
--- a/course/report/stats/index.php
+++ b/course/report/stats/index.php
@@ -13,6 +13,7 @@
$time = optional_param('time', 0, PARAM_INT);
$mode = optional_param('mode', STATS_MODE_GENERAL, PARAM_INT);
$userid = optional_param('userid', 0, PARAM_INT);
+ $roleid = 0;
if ($report > 50) {
$roleid = substr($report,1);
diff --git a/course/report/stats/report.php b/course/report/stats/report.php
index 3e2accfe950..cbcb17af727 100644
--- a/course/report/stats/report.php
+++ b/course/report/stats/report.php
@@ -109,8 +109,9 @@
.((!empty($roleid)) ? ' roleid = '.$roleid.' AND ' : '')
. ((!empty($param->stattype)) ? ' stattype = \''.$param->stattype.'\' AND ' : '')
.' timeend >= '.$param->timeafter
- .$param->extras
+ .' '.$param->extras
.' ORDER BY timeend DESC';
+ error_log($sql);
$stats = get_records_sql($sql);
if (empty($stats)) {
@@ -144,13 +145,8 @@
$table->head[] = $param->line2;
}
}
- $lasttime = null; // used for crosstab
- $lastrecord = null;
- $lastlink = null;
- $headerdone = false;
-
- foreach ($stats as $stat) {
- if (empty($param->crosstab)) {
+ if (empty($param->crosstab)) {
+ foreach ($stats as $stat) {
$a = array(userdate($stat->timeend-(60*60*24),get_string('strftimedate'),$CFG->timezone),$stat->line1);
if (isset($stat->line2)) {
$a[] = $stat->line2;
@@ -162,30 +158,33 @@
.get_string('course').' ' .get_string('logs').' ';
}
$table->data[] = $a;
- } else {
- if ($stat->timeend == $lasttime) {
- $lastrecord[] = $stat->line1;
- if (empty($headerdone)) {
- $table->head[] = get_field('role','name','id',$stat->roleid);
- }
- } else {
- if (!empty($lastrecord)) { // we won't have one if this is the first time round...
- $lastrecord[] = $lastlink;
- $table->data[] = $lastrecord;
- $headerdone = true;
- } else {
- $table->head[] = get_field('role','name','id',$stat->roleid);
- }
- $lastrecord = array(userdate($stat->timeend-(60*60*24),get_string('strftimedate'),$CFG->timezone),$stat->line1);
- if (empty($CFG->loglifetime) || ($stat->timeend-(60*60*24)) >= (time()-60*60*24*$CFG->loglifetime)) {
- $lastlink = ''
- .get_string('course').' ' .get_string('logs').' ';
- }
- $lasttime = $stat->timeend;
+ }
+ } else {
+ $data = array();
+ $roles = array();
+ $times = array();
+ foreach ($stats as $stat) {
+ $data[$stat->timeend][$stat->roleid] = $stat->line1;
+ if (!array_key_exists($stat->roleid,$roles)) {
+ $roles[$stat->roleid] = get_field('role','name','id',$stat->roleid);
+ }
+ if (!array_key_exists($stat->timeend,$times)) {
+ $times[$stat->timeend] = userdate($stat->timeend,get_string('strftimedate'),$CFG->timezone);
}
}
+ foreach ($data as $time => $rolesdata) {
+ krsort($rolesdata);
+ $row = array_merge(array($times[$time]),$rolesdata);
+ if (empty($CFG->loglifetime) || ($stat->timeend-(60*60*24)) >= (time()-60*60*24*$CFG->loglifetime)) {
+ $row[] = ''
+ .get_string('course').' ' .get_string('logs').' ';
+ }
+ $table->data[] = $row;
+ }
+ krsort($roles);
+ $table->head = array_merge($table->head,$roles);
}
$table->head[] = get_string('logs');
if (!empty($lastrecord)) {