From 8f89658261eede50f50dcfc5c72e4033c82afb24 Mon Sep 17 00:00:00 2001 From: defacer Date: Sun, 22 Aug 2004 17:19:24 +0000 Subject: [PATCH] Fix for bug 1494: Calendar events in day view now show their start and end times. The only thing I 'm not satisfied with is that they also show the full start and end dates, even if it's not really needed (e.g. for a 15:00 -> 17:00 event). Still, it's loads better than only showing the start time. --- calendar/lib.php | 120 ++++++++++++++++++++++++---------------------- calendar/view.php | 7 +-- 2 files changed, 67 insertions(+), 60 deletions(-) diff --git a/calendar/lib.php b/calendar/lib.php index 9215a796a0..95fbbf6044 100644 --- a/calendar/lib.php +++ b/calendar/lib.php @@ -321,63 +321,7 @@ function calendar_get_upcoming($courses, $groups, $users, $daysinfuture, $maxeve break; } - $startdate = usergetdate($event->timestart); - $enddate = usergetdate($event->timestart + $event->timeduration); - $usermidnightstart = usergetmidnight($event->timestart); - - if($event->timeduration) { - // To avoid doing the math if one IF is enough :) - $usermidnightend = usergetmidnight($event->timestart + $event->timeduration); - } - else { - $usermidnightend = $usermidnightstart; - } - - // OK, now to get a meaningful display... - // First of all we have to construct a human-readable date/time representation - - if($event->timestart + $event->timeduration < $now) { - // It has expired, so we don't care about duration - $day = calendar_day_representation($event->timestart + $event->timeduration, $now); - $time = calendar_time_representation($event->timestart + $event->timeduration); - - // This var always has the printable time representation - $eventtime = ''.$day.' ('.$time.')'; - - } - else if($event->timeduration) { - // It has a duration - if($usermidnightstart == $usermidnightend) { - // But it's all on the same day - $day = calendar_day_representation($event->timestart, $now); - $timestart = calendar_time_representation($event->timestart); - $timeend = calendar_time_representation($event->timestart + $event->timeduration); - - // Set printable representation - $eventtime = calendar_get_link_tag($day, CALENDAR_URL.'view.php?view=day'.$morehref.'&', $enddate['mday'], $enddate['mon'], $enddate['year']). - ' ('.$timestart.' -> '.$timeend.')'; - } - else { - // It spans two or more days - $daystart = calendar_day_representation($event->timestart, $now); - $dayend = calendar_day_representation($event->timestart + $event->timeduration, $now); - $timestart = calendar_time_representation($event->timestart); - $timeend = calendar_time_representation($event->timestart + $event->timeduration); - - // Set printable representation - $eventtime = calendar_get_link_tag($daystart, CALENDAR_URL.'view.php?view=day'.$morehref.'&', $startdate['mday'], $startdate['mon'], $startdate['year']). - ' ('.$timestart.') -> '.calendar_get_link_tag($dayend, CALENDAR_URL.'view.php?view=day'.$morehref.'&', $enddate['mday'], $enddate['mon'], $enddate['year']). - ' ('.$timeend.')'; - } - } - else { - // It's an "instantaneous" event - $day = calendar_day_representation($event->timestart, $now); - $time = calendar_time_representation($event->timestart); - - // Set printable representation - $eventtime = calendar_get_link_tag($day, CALENDAR_URL.'view.php?view=day'.$morehref.'&', $startdate['mday'], $startdate['mon'], $startdate['year']).' ('.$time.')'; - } + $eventtime = calendar_format_event_time($event, $now, $morehref); $outkey = count($output); @@ -1167,6 +1111,68 @@ function calendar_preferences_button() { ""; } +function calendar_format_event_time($event, $now, $morehref, $usecommonwords = true) { + $startdate = usergetdate($event->timestart); + $enddate = usergetdate($event->timestart + $event->timeduration); + $usermidnightstart = usergetmidnight($event->timestart); + + if($event->timeduration) { + // To avoid doing the math if one IF is enough :) + $usermidnightend = usergetmidnight($event->timestart + $event->timeduration); + } + else { + $usermidnightend = $usermidnightstart; + } + + // OK, now to get a meaningful display... + // First of all we have to construct a human-readable date/time representation + + if($event->timestart + $event->timeduration < $now) { + // It has expired, so we don't care about duration + $day = calendar_day_representation($event->timestart + $event->timeduration, $now, $usecommonwords); + $time = calendar_time_representation($event->timestart + $event->timeduration); + + // This var always has the printable time representation + $eventtime = ''.$day.' ('.$time.')'; + + } + else if($event->timeduration) { + // It has a duration + if($usermidnightstart == $usermidnightend) { + // But it's all on the same day + $day = calendar_day_representation($event->timestart, $now, $usecommonwords); + $timestart = calendar_time_representation($event->timestart); + $timeend = calendar_time_representation($event->timestart + $event->timeduration); + + // Set printable representation + $eventtime = calendar_get_link_tag($day, CALENDAR_URL.'view.php?view=day'.$morehref.'&', $enddate['mday'], $enddate['mon'], $enddate['year']). + ' ('.$timestart.' -> '.$timeend.')'; + } + else { + // It spans two or more days + $daystart = calendar_day_representation($event->timestart, $now, $usecommonwords); + $dayend = calendar_day_representation($event->timestart + $event->timeduration, $now, $usecommonwords); + $timestart = calendar_time_representation($event->timestart); + $timeend = calendar_time_representation($event->timestart + $event->timeduration); + + // Set printable representation + $eventtime = calendar_get_link_tag($daystart, CALENDAR_URL.'view.php?view=day'.$morehref.'&', $startdate['mday'], $startdate['mon'], $startdate['year']). + ' ('.$timestart.') -> '.calendar_get_link_tag($dayend, CALENDAR_URL.'view.php?view=day'.$morehref.'&', $enddate['mday'], $enddate['mon'], $enddate['year']). + ' ('.$timeend.')'; + } + } + else { + // It's an "instantaneous" event + $day = calendar_day_representation($event->timestart, $now, $usecommonwords); + $time = calendar_time_representation($event->timestart); + + // Set printable representation + $eventtime = calendar_get_link_tag($day, CALENDAR_URL.'view.php?view=day'.$morehref.'&', $startdate['mday'], $startdate['mon'], $startdate['year']).' ('.$time.')'; + } + + return $eventtime; +} + if(!function_exists('array_diff_assoc')) { // PHP < 4.3.0 function array_diff_assoc($source, $diff) { diff --git a/calendar/view.php b/calendar/view.php index e192d76368..a46a5b6765 100644 --- a/calendar/view.php +++ b/calendar/view.php @@ -227,16 +227,16 @@ function calendar_show_day($d, $m, $y, $courses, $groups, $users) { foreach ($events as $event) { if ($event->timestart >= $starttime && $event->timestart <= $endtime) { // Print it now -/* - print_object($event->time); +/* $dayend = calendar_day_representation($event->timestart + $event->timeduration); $timeend = calendar_time_representation($event->timestart + $event->timeduration); $enddate = usergetdate($event->timestart + $event->timeduration); // Set printable representation echo calendar_get_link_tag($dayend, CALENDAR_URL.'view.php?view=day'.$morehref.'&', $enddate['mday'], $enddate['mon'], $enddate['year']).' ('.$timeend.')'; */ - unset($event->time); + //unset($event->time); + $event->time = calendar_format_event_time($event, time(), '', false); calendar_print_event($event); } else { // Save this for later @@ -248,6 +248,7 @@ function calendar_show_day($d, $m, $y, $courses, $groups, $users) { if (!empty($underway)) { echo '

'.get_string('spanningevents', 'calendar').':

'; foreach ($underway as $event) { + $event->time = calendar_format_event_time($event, time(), '', false); calendar_print_event($event); } } -- 2.39.5