return $content;
}
-function calendar_get_upcoming($courses, $groups, $users, $daysinfuture, $maxevents) {
+function calendar_get_upcoming($courses, $groups, $users, $daysinfuture, $maxevents, $fromtime=0) {
global $CFG;
$display = &New object;
$now = time(); // We 'll need this later
$nowsecs = $now % SECS_IN_DAY; // this too
$nowdays = $now - $nowsecs; // and this
- $date = usergetdate($now); // Nominal datetime
- // Fill in the variables we 're going to use, nice and tidy
- list($d, $m, $y) = array($date['mday'], $date['mon'], $date['year']);
- $display->tstart = gmmktime(0, 0, 0, $m, $d, $y);
+ if ($fromtime) {
+ $display->tstart = $fromtime;
+ } else {
+ $display->tstart = usergetmidnight(time());
+ }
// This effectively adds as many days as needed, and the final SECS_IN_DAY - 1
// serves to cover the duration until the end of the final day. We could
// Get the events matching our criteria
$whereclause = calendar_sql_where($display->tstart, $display->tend, $users, $groups, $courses);
- if($whereclause === false) {
+ if ($whereclause === false) {
$events = false;
- }
- else {
+ } else {
$whereclause .= ' ORDER BY timestart'; // We want them this way
$events = get_records_select('event', $whereclause);
}
// also that it is an automatically-generated event. And of course that the
// three fields for get_coursemodule_from_instance are set correctly.
+ calendar_get_course_cached($coursecache, $event->courseid);
+
$module = calendar_get_module_cached($coursecache, $event->modulename, $event->instance, $event->courseid);
- if($module === false) {
+ if ($module === false) {
// This shouldn't have happened. What to do now?
// Just ignore it
continue;
$modulename = get_string('modulename', $event->modulename);
$eventtype = get_string($event->eventtype, $event->modulename);
$icon = $CFG->modpixpath.'/'.$event->modulename.'/icon.gif';
- $output[$outkey]->referer = '<a href="'.$CFG->wwwroot.'/mod/'.$event->modulename.'/view.php?id='.$module->id.'">'.$event->name.'</a>';
+
$output[$outkey]->icon = '<img height=16 width=16 src="'.$icon.'" alt="" title="'.$modulename.'" style="vertical-align: middle;" />';
+ $output[$outkey]->referer = '<a href="'.$CFG->wwwroot.'/mod/'.$event->modulename.'/view.php?id='.$module->id.'">'.$event->name.'</a>';
$output[$outkey]->name = $event->name;
$output[$outkey]->time = $eventtime;
$output[$outkey]->description = $event->description;
- }
- else if($event->courseid == 1) {
+ $output[$outkey]->courselink = '<a href="'.$CFG->wwwroot.'/course/view.php?id='.$event->courseid.'">'.$coursecache[$event->courseid]->fullname.'</a>';
+ $output[$outkey]->timestart = $event->timestart;
+ $output[$outkey]->id = $event->id;
+ $output[$outkey]->cmid = $module->id;
+ $output[$outkey]->modulename = $event->modulename;
+
+
+
+ } else if($event->courseid == 1) {
$output[$outkey]->icon = '<img height=16 width=16 src="'.$CFG->pixpath.'/c/site.gif" alt="" style="vertical-align: middle;" />';
$output[$outkey]->name = $event->name;
$output[$outkey]->time = $eventtime;
$output[$outkey]->description = $event->description;
- }
- else if($event->courseid > 1) {
+ $output[$outkey]->timestart = $event->timestart;
+ $output[$outkey]->id = $event->id;
+
+
+
+ } else if($event->courseid > 1) {
// Course event
calendar_get_course_cached($coursecache, $event->courseid);
- $output[$outkey]->referer = '<a href="'.$CFG->wwwroot.'/course/view.php?id='.$coursecache[$event->courseid]->id.'">'.$coursecache[$event->courseid]->fullname.'</a>';
$output[$outkey]->icon = '<img height=16 width=16 src="'.$CFG->pixpath.'/c/course.gif" alt="" style="vertical-align: middle;" />';
$output[$outkey]->name = $event->name;
$output[$outkey]->time = $eventtime;
$output[$outkey]->description = $event->description;
- }
- else if($event->groupid) {
+ $output[$outkey]->courselink = '<a href="'.$CFG->wwwroot.'/course/view.php?id='.$event->courseid.'">'.$coursecache[$event->courseid]->fullname.'</a>';
+ $output[$outkey]->timestart = $event->timestart;
+ $output[$outkey]->id = $event->id;
+
+
+
+ } else if($event->groupid) {
// Group event
$output[$outkey]->icon = '<img height=16 width=16 src="'.$CFG->pixpath.'/c/group.gif" alt="" style="vertical-align: middle;" />';
$output[$outkey]->name = $event->name;
$output[$outkey]->time = $eventtime;
$output[$outkey]->description = $event->description;
- }
- else if($event->userid) {
+ $output[$outkey]->timestart = $event->timestart;
+ $output[$outkey]->id = $event->id;
+
+
+
+ } else if($event->userid) {
// User event
$output[$outkey]->icon = '<img height=16 width=16 src="'.$CFG->pixpath.'/c/user.gif" alt="" style="vertical-align: middle;" />';
$output[$outkey]->name = $event->name;
$output[$outkey]->time = $eventtime;
$output[$outkey]->description = $event->description;
+ $output[$outkey]->timestart = $event->timestart;
+ $output[$outkey]->id = $event->id;
}
++$processed;
}
print_footer();
+
+
function calendar_show_day($d, $m, $y, $courses, $groups, $users) {
- global $CFG, $THEME;
+ global $CFG, $THEME, $db;
- if(!checkdate($m, $d, $y)) {
+ if (!checkdate($m, $d, $y)) {
$now = usergetdate(time());
list($d, $m, $y) = array(intval($now['mday']), intval($now['mon']), intval($now['year']));
}
$getvars = 'from=day&cal_d='.$d.'&cal_m='.$m.'&cal_y='.$y; // For filtering
$starttime = make_timestamp($y, $m, $d);
- $endtime = $starttime + SECS_IN_DAY - 1;
- $whereclause = calendar_sql_where($starttime, $endtime, $users, $groups, $courses);
+ $endtime = $starttime + SECS_IN_DAY - 1;
- if($whereclause === false) {
- $events = array();
- }
- else {
- $events = get_records_select('event', $whereclause);
- }
+ $events = calendar_get_upcoming($courses, $groups, $users, 1, 100, $starttime);
// New event button
- if(isguest()) {
+ if (isguest()) {
$text = get_string('dayview', 'calendar').': '.calendar_course_filter_selector($getvars);
- }
- else {
- $text = '<div style="float: left;">'.get_string('dayview', 'calendar').': '.calendar_course_filter_selector($getvars).'</div><div style="float: right;">';
+
+ } else {
+ $text = '<div style="float: left;">'.get_string('dayview', 'calendar').': '.
+ calendar_course_filter_selector($getvars).'</div><div style="float: right;">';
$text.= '<form style="display: inline;" action="'.CALENDAR_URL.'event.php" method="get">';
$text.= '<input type="hidden" name="action" value="new" />';
$text.= '<input type="hidden" name="cal_m" value="'.$m.'" />';
print_side_block_start($text, '', 'mycalendar');
echo '<p>'.calendar_top_controls('day', array('d' => $d, 'm' => $m, 'y' => $y)).'</p>';
- if($events === false) {
+ if (empty($events)) {
// There is nothing to display today.
echo '<p style="text-align: center;">'.get_string('daywithnoevents', 'calendar').'</p>';
- }
- else {
- $coursecache = array();
- $summarize = array();
+
+ } else {
+
+ $underway = array();
// First, print details about events that start today
- foreach($events as $event) {
- if($event->timestart >= $starttime && $event->timestart <= $endtime) {
- // Print this
- calendar_print_event_table($event, $starttime, $endtime, $coursecache);
- }
- else {
- // Save this for later
- $summarize[] = $event->id;
+ foreach ($events as $event) {
+ if ($event->timestart >= $starttime && $event->timestart <= $endtime) { // Print it now
+ unset($event->time);
+ calendar_print_event($event);
+
+ } else { // Save this for later
+ $underway[] = $event;
}
}
// Then, show a list of all events that just span this day
- if(!empty($summarize)) {
- $until = get_string('durationuntil', 'calendar');
+ if (!empty($underway)) {
echo '<p style="text-align: center;"><strong>'.get_string('spanningevents', 'calendar').':</strong></p>';
- echo '<p style="text-align: center;"><ul>';
- foreach($summarize as $index) {
- $endstamp = $events[$index]->timestart + $events[$index]->timeduration;
- $startdate = usergetdate($events[$index]->timestart);
- $enddate = usergetdate($endstamp);
- echo '<li><a href="'.calendar_get_link_href('view.php?view=day&', $startdate['mday'], $startdate['mon'], $startdate['year']).'">'.$events[$index]->name.'</a> ';
- echo '('.$until.' <a href="'.calendar_get_link_href('view.php?view=day&', $enddate['mday'], $enddate['mon'], $enddate['year']).'">';
- echo calendar_day_representation($endstamp, false, false).'</a>)</li>';
+ foreach ($underway as $event) {
+ calendar_print_event($event);
}
- echo '</ul></p>';
}
}
}
print_side_block_start($text, '', 'mycalendar');
- foreach ($events as $event) {
- calendar_print_event($event);
+ if ($events) {
+ foreach ($events as $event) {
+ calendar_print_event($event);
+ }
+ } else {
+ echo '<br />';
+ print_heading(get_string('noupcomingevents', 'calendar'));
}
print_side_block_end();
}
function calendar_print_event($event) {
- global $THEME;
+ global $CFG, $THEME;
- echo '<table border="0" cellpadding="3" cellspacing="0" class="forumpost" width="100%">';
- echo "<tr><td bgcolor=\"$THEME->cellcontent2\" class=\"forumpostpicture\" width=\"16\" valign=\"top\">";
+ static $strftimetime;
+
+ echo '<table border="0" cellpadding="3" cellspacing="0" class="eventfull" width="100%">';
+ echo "<tr><td bgcolor=\"$THEME->cellcontent2\" class=\"eventfullpicture\" width=\"32\" valign=\"top\">";
if (!empty($event->icon)) {
echo $event->icon;
+ } else {
+ print_spacer(16,16);
}
echo '</td>';
- echo "<td bgcolor=\"$THEME->cellheading\" class=\"forumpostheader\" width=\"100%\">";
+ echo "<td bgcolor=\"$THEME->cellheading\" class=\"eventfullheader\" width=\"100%\">";
- if(!empty($event->referer) and empty($event->icon)) {
- echo '<span class="calendarreferer">'.$event->referer.': </span>';
- }
- echo '<span class="cal_event">'.$event->name."</span> ";
- echo '<span class="cal_event_date">'.$event->time.'</span>';
-
- echo "</td></tr>";
- echo "<tr><td bgcolor=\"$THEME->cellcontent2\" valign=\"top\" class=\"forumpostside\" width=\"16\"> </td>";
- echo "<td bgcolor=\"$THEME->cellcontent\" class=\"forumpostmessage\">\n";
- echo format_text($event->description, FORMAT_HTML);
- echo "</td></tr>\n</table><br />\n\n";
-}
-
-
-function calendar_print_event_table($event, $starttime, $endtime, &$coursecache, $alldetails = false) {
- global $CFG;
-
- echo '<table class="cal_event_table"><thead>';
-
- if(calendar_edit_event_allowed($event)) {
- echo '<tr><td colspan="2">'.$event->name;
- echo ' <a href="'.CALENDAR_URL.'event.php?action=edit&id='.$event->id.'"><img style="vertical-align: middle;" src="'.$CFG->pixpath.'/t/edit.gif" alt="'.get_string('tt_editevent', 'calendar').'" title="'.get_string('tt_editevent', 'calendar').'" /></a>';
- echo ' <a href="'.CALENDAR_URL.'event.php?action=delete&id='.$event->id.'"><img style="vertical-align: middle;" src="'.$CFG->pixpath.'/t/delete.gif" alt="'.get_string('tt_deleteevent', 'calendar').'" title="'.get_string('tt_deleteevent', 'calendar').'" /></a>';
- echo '</td></tr>';
+ if (!empty($event->referer)) {
+ echo '<span style="float:left;" class="calendarreferer">'.$event->referer.' </span>';
+ } else {
+ echo '<span style="float:left;" class="cal_event">'.$event->name."</span>";
}
- else {
- echo '<tr><td colspan="2">'.$event->name.'</td></tr>';
+ if (!empty($event->courselink)) {
+ echo '<br /><span style="float:left; font-size: 0.8em;">'.$event->courselink.' </span>';
}
-
- echo "</thead>\n<tbody>\n<tr><td style='vertical-align: top;' width=40%>";
-
- if(!empty($event->modulename)) {
- // The module name is set. This handling code should be synchronized with that in calendar_get_upcoming()
- $module = calendar_get_module_cached($coursecache, $event->modulename, $event->instance, $event->courseid);
- if($module === false) {
- // This shouldn't have happened. What to do now? Just ignore it...
- echo '</td></tr></table>';
- return;
- }
- $modulename = get_string('modulename', $event->modulename);
- $eventtype = get_string($event->eventtype, $event->modulename);
- $icon = $CFG->modpixpath.'/'.$event->modulename.'/icon.gif';
- $coursereferer = '<a href="'.$CFG->wwwroot.'/course/view.php?id='.$module->course.'">'.$coursecache[$module->course]->fullname.'</a>';
- $instancereferer = '<a href="'.$CFG->wwwroot.'/mod/'.$event->modulename.'/view.php?id='.$module->id.'">'.$module->name.'</a>';
-
- echo '<div><strong>'.get_string('course').':</strong></div><div>'.$coursereferer.'</div>';
- echo '<div><strong><img src="'.$icon.'" title="'.$modulename.'" style="vertical-align: middle;" /> '.$modulename.':</strong></div><div>'.$instancereferer.'</div>';
- }
- else if($event->courseid > 1) {
- $course = calendar_get_course_cached($coursecache, $event->courseid);
- $coursereferer = '<a href="'.$CFG->wwwroot.'/course/view.php?id='.$course->id.'">'.$course->fullname.'</a>';
- echo '<div><strong>'.get_string('course').':</strong></div><div>'.$coursereferer.'</div>';
- }
- else if($event->courseid == 1) {
- echo '<div><strong>'.get_string('typesite', 'calendar').'</strong></div>';
- }
-
- if($event->timeduration) {
- if($event->timestart + $event->timeduration > $endtime || $alldetails) {
- // It doesn't end today, or full details requested, so we 'll go into a little more trouble
- $enddate = usergetdate($event->timestart + $event->timeduration);
- $enddisplay = calendar_get_link_tag(
- calendar_day_representation($event->timestart + $event->timeduration, $starttime, false),
- CALENDAR_URL.'view.php?view=day&', $enddate['mday'], $enddate['mon'], $enddate['year']);
- $enddisplay .= ', '.calendar_time_representation($event->timestart + $event->timeduration);
- }
- else {
- $enddisplay = calendar_time_representation($event->timestart + $event->timeduration);
- }
- if($alldetails) {
- // We want to give a full representation of the event's date
- $startdate = usergetdate($event->timestart);
- $startdisplay = calendar_get_link_tag(
- calendar_day_representation($event->timestart, $starttime, false),
- CALENDAR_URL.'view.php?view=day&', $startdate['mday'], $startdate['mon'], $startdate['year']);
- $startdisplay .= ', '.calendar_time_representation($event->timestart);
- }
- else {
- $startdisplay = calendar_time_representation($event->timestart);
+ if (!empty($event->time)) {
+ echo '<span style="float:right;" class="cal_event_date">'.$event->time.'</span>';
+ } else {
+ if (!isset($strftimetime)) {
+ $strftimetime = get_string('strftimetime');
}
- echo '<div><strong>'.get_string('eventstarttime', 'calendar').':</strong></div><div>'.$startdisplay.'</div>';
- echo '<div><strong>'.get_string('eventendtime', 'calendar').':</strong></div><div>'.$enddisplay.'</div>';
+ echo '<span style="float:right;" class="cal_event_date">'.userdate($event->timestart, $strftimetime).'</span>';
}
- else {
- // Event without duration
- if($alldetails) {
- // We want to give a full representation of the event's date
- $startdate = usergetdate($event->timestart);
- $startdisplay = calendar_get_link_tag(
- calendar_day_representation($event->timestart, $starttime, false),
- CALENDAR_URL.'view.php?view=day&', $startdate['mday'], $startdate['mon'], $startdate['year']);
- $startdisplay .= ', '.calendar_time_representation($event->timestart);
- }
- else {
- $startdisplay = calendar_time_representation($event->timestart);
+
+ echo "</td></tr>";
+ echo "<tr><td bgcolor=\"$THEME->cellcontent2\" valign=\"top\" class=\"eventfullside\" width=\"32\"> </td>";
+ echo "<td bgcolor=\"$THEME->cellcontent\" class=\"eventfullmessage\">\n";
+ echo format_text($event->description, FORMAT_HTML);
+ if (calendar_edit_event_allowed($event)) {
+ echo '<div align="right">';
+ if (empty($event->cmid)) {
+ $editlink = CALENDAR_URL.'event.php?action=edit&id='.$event->id;
+ $deletelink = CALENDAR_URL.'event.php?action=delete&id='.$event->id;
+ } else {
+ $editlink = "$CFG->wwwroot/mod/$event->modulename/view.php?id=$event->cmid";
+ $deletelink = "$CFG->wwwroot/course/mod.php?delete=$event->cmid";
}
- echo '<div><strong>'.get_string('eventinstanttime', 'calendar').':</strong></div><div>'.$startdisplay.'</div>';
+ echo ' <a href="'.$editlink.'"><img
+ src="'.$CFG->pixpath.'/t/edit.gif" alt="'.get_string('tt_editevent', 'calendar').'"
+ title="'.get_string('tt_editevent', 'calendar').'" /></a>';
+ echo ' <a href="'.$deletelink.'"><img
+ src="'.$CFG->pixpath.'/t/delete.gif" alt="'.get_string('tt_deleteevent', 'calendar').'"
+ title="'.get_string('tt_deleteevent', 'calendar').'" /></a>';
+ echo '</div>';
}
+ echo "</td></tr>\n</table><br />\n\n";
- echo '</td><td class="cal_event_description">'.$event->description.'</td></tr>'."\n";
- echo "</tbody>\n</table>\n";
}