diff --git a/course/report/outline/index.php b/course/report/outline/index.php
index 784d589fcc3..989543970fd 100644
--- a/course/report/outline/index.php
+++ b/course/report/outline/index.php
@@ -2,32 +2,25 @@
// Display user activity reports for a course (totals)
- require_once("../../../config.php");
- require_once("../../lib.php");
+ require_once('../../../config.php');
+ require_once($CFG->dirroot.'/course/lib.php');
- $modes = array("outline", "complete", "todaylogs", "alllogs");
+ $id = required_param('id',PARAM_INT); // course id
- $id = required_param('id',PARAM_INT); // course id
- $page = optional_param('page', 0, PARAM_INT);
- $perpage = optional_param('perpage', 100, PARAM_INT);
-
- if (! $course = get_record("course", "id", $id)) {
- error("Course id is incorrect.");
+ if (!$course = get_record('course', 'id', $id)) {
+ error('Course id is incorrect.');
}
- require_login($course->id);
-
+ require_login($course);
require_capability('moodle/site:viewreports', get_context_instance(CONTEXT_COURSE, $course->id));
- add_to_log($course->id, "course", "report outline", "report/outline/index.php?id=$course->id", $course->id);
+ add_to_log($course->id, 'course', 'report outline', "report/outline/index.php?id=$course->id", $course->id);
- $stractivityreport = get_string("activityreport");
- $strparticipants = get_string("participants");
- $stroutline = get_string("outline");
- $strcomplete = get_string("complete");
- $stralllogs = get_string("alllogs");
- $strtodaylogs = get_string("todaylogs");
- $strreports = get_string("reports");
+ $stractivityreport = get_string('activityreport');
+ $stractivity = get_string('activity');
+ $strlast = get_string('lastaccess');
+ $strreports = get_string('reports');
+ $strviews = get_string('views');
$navlinks = array();
$navlinks[] = array('name' => $strreports, 'link' => "../../report.php?id=$course->id", 'type' => 'misc');
@@ -38,87 +31,75 @@
print_heading(format_string($course->fullname));
- echo "
";
- echo "| $stractivityreport: | ";
- echo "
";
+ if (!$logstart = get_field_sql("SELECT MIN(time) FROM {$CFG->prefix}log")) {
+ error('Logs not available');
+ }
- get_all_mods($course->id, $mods, $modnames, $modnamesplural, $modnamesused);
+ echo ''.get_string('computedfromlogs', 'admin', userdate($logstart)).'
';
- $sections = get_all_sections($course->id);
+ echo '';
+ echo '';
+ echo '';
+ echo '';
+ echo '
';
- for ($i=0; $i<=$course->numsections; $i++) {
+ $modinfo = get_fast_modinfo($course);
- if (isset($sections[$i])) { // should always be true
+ $sql = "SELECT cm.id, COUNT('x') AS numviews, MAX(time) AS lasttime
+ FROM {$CFG->prefix}course_modules cm
+ JOIN {$CFG->prefix}modules m ON m.id = cm.module
+ JOIN {$CFG->prefix}log l ON l.cmid = cm.id
+ WHERE cm.course = $course->id AND l.action LIKE 'view%' AND m.visible = 1
+ GROUP BY cm.id";
+ $views = get_records_sql($sql);
- $section = $sections[$i];
-
- if ($section->sequence) {
- echo "
";
- echo "";
- switch ($course->format) {
- case "weeks": print_string("week"); break;
- case "topics": print_string("topic"); break;
- default: print_string("section"); break;
- }
- echo " $i
";
- echo "";
-
- $sectionmods = explode(",", $section->sequence);
- foreach ($sectionmods as $sectionmod) {
- if (empty($mods[$sectionmod])) {
- continue;
- }
- $mod = $mods[$sectionmod];
- $instance = get_record("$mod->modname", "id", "$mod->instance");
- $libfile = "$CFG->dirroot/mod/$mod->modname/lib.php";
-
-
- $result = null;
- if ($logs = get_records_select("log", "module='$mod->modname'
- AND action LIKE 'view%' AND info='$mod->instance'", "time ASC")) {
-
- $numviews = count($logs);
- $lastlog = array_pop($logs);
-
- $result->info = get_string("numviews", "", $numviews);
- $result->time = $lastlog->time;
- }
- print_outline_row($mod, $instance, $result);
- }
-
- echo "
";
+ $ri = 0;
+ $prevsecctionnum = 0;
+ foreach ($modinfo->sections as $sectionnum=>$section) {
+ foreach ($section as $cmid) {
+ $cm = $modinfo->cms[$cmid];
+ if ($cm->modname == 'label') {
+ continue;
}
+ if (!$cm->uservisible) {
+ continue;
+ }
+ if ($prevsecctionnum != $sectionnum) {
+ echo '';
+ switch ($course->format) {
+ case 'weeks': print_string('week'); break;
+ case 'topics': print_string('topic'); break;
+ default: print_string('section'); break;
+ }
+ echo ' '.$sectionnum.' |
';
+
+ $prevsecctionnum = $sectionnum;
+ }
+
+ $dimmed = $cm->visible ? '' : 'class="dimmed"';
+ $modulename = get_string('modulename', $cm->modname);
+ echo '';
+ echo " modpixpath/$cm->modname/icon.gif\" class=\"icon\" alt=\"$modulename\" />";
+ echo "wwwroot/mod/$cm->modname/view.php?id=$cm->id\">".format_string($cm->name)." | ";
+ echo "";
+ if (!empty($views[$cm->id]->numviews)) {
+ echo $views[$cm->id]->numviews;
+ } else {
+ echo '-';
+ }
+ echo " | ";
+ echo "";
+ if (isset($views[$cm->id]->lasttime)) {
+ $timeago = format_time(time() - $views[$cm->id]->lasttime);
+ echo userdate($views[$cm->id]->lasttime)." ($timeago)";
+ }
+ echo " | ";
+ echo '
';
}
}
+ echo '
';
print_footer($course);
-function print_outline_row($mod, $instance, $result) {
-
- global $CFG;
-
- $image = "
modpixpath/$mod->modname/icon.gif\" class=\"icon\" alt=\"$mod->modfullname\" />";
-
- echo "";
- echo "| $image | ";
- echo "";
- echo " modfullname\"";
- echo " href=\"$CFG->wwwroot/mod/$mod->modname/view.php?id=$mod->id\">$instance->name | ";
- echo " | ";
- echo "";
- if (isset($result->info)) {
- echo "$result->info";
- } else {
- echo " - ";
- }
- echo " | ";
- echo " | ";
- if (isset($result->time)) {
- $timeago = format_time(time() - $result->time);
- echo "".userdate($result->time)." ($timeago) | ";
- }
- echo "
";
-}
-
?>