fixed typos in $string['configshowtimes']
[moodle.git] / course / recent.php
blob632fab0605fd9cf5084c43c30ec202a45c1f5e12
1 <?php // $Id$
3 // Display all recent activity in a flexible way
5 require_once("../config.php");
6 require_once("lib.php");
8 $id = required_param('id', PARAM_INT);
9 $user = optional_param('user', '0', PARAM_INT);
10 $sortby = optional_param('sortby', 'default', PARAM_ALPHA);
11 $selectedgroup = optional_param('selectedgroup', 0, PARAM_INT);
12 $date = optional_param('date', '', PARAM_INT);
13 $advancedfilter = optional_param('advancedfilter', 0, PARAM_INT);
14 $modname = optional_param('modname', '', PARAM_ALPHA); // not used??
15 $modid = optional_param('modid', 'activity/All', PARAM_FILE); // not a file, but looks like it anyway
16 $modaction = optional_param('modaction', '', PARAM_ALPHA); // not used??
17 $chooserecent = optional_param('chooserecent', 0, PARAM_INT);
19 if (! $course = get_record("course", "id", $id) ) {
20 error("That's an invalid course id");
23 require_login($course->id);
25 add_to_log($course->id, "course", "recent", "recent.php?id=$course->id", "$course->id");
27 $strrecentactivity = get_string("recentactivity");
29 $loggedinas = user_login_string($course, $USER);
32 if (!empty($chooserecent)) {
33 $userinfo = get_string("allparticipants");
34 $dateinfo = get_string("alldays");
36 if ($user) {
37 if (!$u = get_record("user", "id", $user) ) {
38 error("That's an invalid user!");
40 $userinfo = fullname($u);
42 if ($date)
43 $dateinfo = userdate($date, get_string("strftimedaydate"));
45 if ($course->category) {
46 print_header("$course->shortname: $strrecentactivity", "$course->fullname",
47 "<a href=\"view.php?id=$course->id\">$course->shortname</a> ->
48 <a href=\"recent.php?id=$course->id\">$strrecentactivity</a> -> $userinfo, $dateinfo", "");
49 } else {
50 print_header("$course->shortname: $strrecentactivity", "$course->fullname",
51 "<a href=\"recent.php?id=$course->id\">$strrecentactivity</a> -> $userinfo, $dateinfo", "");
54 print_heading("$course->fullname: $userinfo, $dateinfo (".usertimezone().")", '', 3);
55 $advancedfilter = 1;
56 print_recent_selector_form($course, $advancedfilter, $user, $date, $modname, $modid, $modaction, $selectedgroup, $sortby);
58 } else {
60 if (empty($date)) { // no date picked, default to last login time
61 $date = time() - COURSE_MAX_RECENT_PERIOD;
63 if (!empty($USER->timeaccess[$course->id])) {
64 if ($USER->timeaccess[$course->id] > $date) {
65 $date = $USER->timeaccess[$course->id];
70 if ($course->category) {
71 print_header("$course->shortname: $strrecentactivity", "$course->fullname",
72 "<a href=\"view.php?id=$course->id\">$course->shortname</a> -> $strrecentactivity", "");
73 } else {
74 print_header("$course->shortname: $strrecentactivity", "$course->fullname",
75 "$strrecentactivity", "");
78 print_heading(get_string("activitysince", "", userdate($date)));
80 print_recent_selector_form($course, $advancedfilter);
84 $tmpmodid = $modid;
86 switch ($tmpmodid) {
87 case "activity/Assignments" : $filter = "assignment"; break;
88 case "activity/Chats" : $filter = "chat"; break;
89 case "activity/Forums" : $filter = "forum"; break;
90 case "activity/Quizzes" : $filter = "quiz"; break;
91 case "activity/Workshops" : $filter = "workshop"; break;
92 default : $filter = "";
95 $activities = array();
96 $sections = array();
98 switch ($course->format) {
99 case "weeks": $sectiontitle = get_string("week"); break;
100 case "topics": $sectiontitle = get_string("topic"); break;
101 default: $sectiontitle = get_string("section"); break;
104 $index = 0;
106 if (is_numeric($modid)) { // you chose a single activity
108 $sections[0]->sequence = "$modid";
110 } else { // you chose a group of activities
112 if (isteacher($course->id)) {
113 $hiddenfilter = "";
114 } else {
115 $hiddenfilter = " AND cs.visible = '1' ";
118 $sections = get_records_sql("SELECT cs.id, cs.section, cs.sequence, cs.summary, cs.visible
119 FROM {$CFG->prefix}course_sections cs
120 WHERE course = '$course->id' $hiddenfilter
121 ORDER by section");
124 get_all_mods($course->id, $mods, $modnames, $modnamesplural, $modnamesused);
126 if (!empty($sections)) {
128 echo "<hr />";
129 $i = 0;
131 if (!empty($filter)) {
132 $activityfilter = "AND m.name = '$filter'";
133 } else {
134 $activityfilter = "";
137 if (isteacher($course->id)) {
138 $hiddenfilter = "";
139 } else {
140 $hiddenfilter = " AND cm.visible = '1' ";
143 foreach ($sections as $section) {
145 if ($i <= $course->numsections) {
146 $activity = new Object;
147 $activity->type = "section";
148 if ($i) {
149 $activity->name = $sectiontitle . " $i";
150 } else {
151 $activity->name = '';
153 $activity->visible = $section->visible;
154 $activities[$index] = $activity;
156 $index++;
157 $i++;
159 $sectionmods = explode(",", $section->sequence);
161 foreach ($sectionmods as $sectionmod) {
163 if (empty($mods[$sectionmod])) {
164 continue;
166 $mod = $mods[$sectionmod];
167 $instance = get_record("$mod->modname", "id", "$mod->instance");
169 $coursemod = get_record_sql("SELECT m.id, m.name, cm.groupmode, cm.visible
170 FROM {$CFG->prefix}course_modules cm,
171 {$CFG->prefix}modules m
172 WHERE course = '$course->id' $hiddenfilter
173 AND m.id = cm.module $activityfilter
174 AND cm.id = '$sectionmod'");
176 $groupmode = groupmode($course, $coursemod);
177 switch ($groupmode) {
178 case SEPARATEGROUPS : $groupid = mygroupid($course->id); break;
179 case VISIBLEGROUPS : $groupid = $selectedgroup; break;
180 case NOGROUPS :
181 default : $groupid = 0;
184 $libfile = "$CFG->dirroot/mod/$coursemod->name/lib.php";
186 if (file_exists($libfile)) {
187 require_once($libfile);
188 $get_recent_mod_activity = $coursemod->name."_get_recent_mod_activity";
190 if (function_exists($get_recent_mod_activity)) {
191 $activity = new Object;
192 $activity->type = "activity";
193 $activity->name = $instance->name;
194 $activity->visible = $coursemod->visible;
195 $activity->content->modfullname = $mod->modfullname;
196 $activity->content->modname = $mod->modname;
197 $activity->content->modid =$mod->id;
198 $activities[$index] = $activity;
199 $index++;
200 $get_recent_mod_activity($activities, $index, $date, $course->id, $sectionmod, $user, $groupid);
207 $detail = true;
209 switch ($sortby) {
210 case "datedesc" : usort($activities, "compare_activities_by_time_desc"); break;
211 case "dateasc" : usort($activities, "compare_activities_by_time_asc"); break;
212 case "default" :
213 default : $detail = false; $sortby = "default";
217 if (!empty($activities)) {
219 $newsection = true;
220 $lastsection = "";
221 $newinstance = true;
222 $lastinstance = "";
223 $inbox = false;
225 $section = 0;
227 if (isteacher($course->id)) {
228 $teacher = true;
229 } else {
230 $teacher = false;
232 $activity_count = count($activities);
234 foreach ($activities as $key => $activity) {
236 // peak at next activity. If it's another section, don't print this one!
237 // this means there are no activities in the current section
238 if (($activity->type == "section") &&
239 (($activity_count == ($key + 1)) ||
240 ($activities[$key+1]->type == "section"))) {
242 continue;
246 if (($activity->type == "section") && ($sortby == "default")) {
247 if ($inbox) {
248 print_simple_box_end();
249 print_spacer(30);
251 print_simple_box_start("center", "90%");
252 echo "<h2>$activity->name</h2>";
253 $inbox = true;
255 } else if ($activity->type == "activity") {
257 if ($sortby == "default") {
258 if ($teacher && $activity->visible == 0) {
259 $linkformat = 'class="dimmed"';
260 } else {
261 $linkformat = '';
263 $image = "<img src=\"$CFG->modpixpath/" . $activity->content->modname . "/icon.gif\"" .
264 "height=\"16\" width=\"16\" alt=\"" . $activity->content->modfullname . "\" />";
265 echo "<ul><h4>$image " . $activity->content->modfullname .
266 " <a href=\"$CFG->wwwroot/mod/" . $activity->content->modname . "/view.php?" .
267 "id=" . $activity->content->modid . "\" $linkformat>" .
268 format_string($activity->name,true) . "</a></h4></ul>";
271 } else {
273 if (!$inbox) {
274 print_simple_box_start("center", "90%");
275 $inbox = true;
278 $print_recent_mod_activity = $activity->type."_print_recent_mod_activity";
280 if (function_exists($print_recent_mod_activity)) {
281 echo '<ul><ul>';
282 $print_recent_mod_activity($activity, $course->id, $detail);
283 echo '</ul></ul>';
288 if ($inbox) {
289 print_simple_box_end();
293 } else {
295 echo "<h4><center>" . get_string("norecentactivity") . "</center></h2>";
298 // fix modid for selection form
299 $modid =$tmpmodid;
301 print_footer($course);
303 function compare_activities_by_time_desc($a, $b) {
304 // make sure the activities actually have a timestamp property
305 if ((!object_property_exists($a,'timestamp')) or (!object_property_exists($b,'timestamp'))) {
306 return 0;
308 if ($a->timestamp == $b->timestamp)
309 return 0;
310 return ($a->timestamp > $b->timestamp) ? -1 : 1;
313 function compare_activities_by_time_asc($a, $b) {
314 // make sure the activities actually have a timestamp property
315 if ((!object_property_exists($a,'timestamp')) or (!object_property_exists($b,'timestamp'))) {
316 return 0;
318 if ($a->timestamp == $b->timestamp)
319 return 0;
320 return ($a->timestamp < $b->timestamp) ? -1 : 1;