From ad4e76e77dcaba891b0fbd12a2f79c1fceb14436 Mon Sep 17 00:00:00 2001 From: skodak Date: Thu, 21 Feb 2008 09:36:19 +0000 Subject: [PATCH] MDL-13549 major bugfixing and improvements in outline report; merged from MOODLE_19_STABLE --- course/report/outline/index.php | 163 ++++++++++++++------------------ 1 file changed, 72 insertions(+), 91 deletions(-) diff --git a/course/report/outline/index.php b/course/report/outline/index.php index 784d589fcc..989543970f 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 ""; - echo "
$stractivityreport:
"; - - get_all_mods($course->id, $mods, $modnames, $modnamesplural, $modnamesused); - - $sections = get_all_sections($course->id); - - for ($i=0; $i<=$course->numsections; $i++) { - - if (isset($sections[$i])) { // should always be true - - $section = $sections[$i]; + if (!$logstart = get_field_sql("SELECT MIN(time) FROM {$CFG->prefix}log")) { + error('Logs not available'); + } - if ($section->sequence) { - echo "
"; - echo "

"; + echo '
'.get_string('computedfromlogs', 'admin', userdate($logstart)).'
'; + + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + + $modinfo = get_fast_modinfo($course); + + $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); + + $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 ''; + echo ""; + echo ""; + echo ""; + echo ''; } } + echo '
'.$stractivity.''.$strviews.''.$strlast.'

'; 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); + case 'weeks': print_string('week'); break; + case 'topics': print_string('topic'); break; + default: print_string('section'); break; } + echo ' '.$sectionnum.''; + + $prevsecctionnum = $sectionnum; + } - echo "
"; + $dimmed = $cm->visible ? '' : 'class="dimmed"'; + $modulename = get_string('modulename', $cm->modname); + echo '
modpixpath/$cm->modname/icon.gif\" class=\"icon\" alt=\"$modulename\" />"; + echo "wwwroot/mod/$cm->modname/view.php?id=$cm->id\">".format_string($cm->name).""; + if (!empty($views[$cm->id]->numviews)) { + echo $views[$cm->id]->numviews; + } else { + echo '-'; } + echo ""; + if (isset($views[$cm->id]->lasttime)) { + $timeago = format_time(time() - $views[$cm->id]->lasttime); + echo userdate($views[$cm->id]->lasttime)." ($timeago)"; + } + 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 ""; -} - ?> -- 2.39.5