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)) {