From 2be327dca9ea2b35bbc40684b65e27e16dcc64fb Mon Sep 17 00:00:00 2001 From: Lars Anderson Date: Wed, 25 Mar 2015 15:29:44 +0100 Subject: [PATCH] MDL-49561 core_calendar: Fix ical export for events with no duration --- calendar/export_execute.php | 6 +++++- lib/bennu/bennu.class.php | 8 ++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/calendar/export_execute.php b/calendar/export_execute.php index 9f2700ebb75..2aa52fb508d 100644 --- a/calendar/export_execute.php +++ b/calendar/export_execute.php @@ -189,10 +189,14 @@ foreach($events as $event) { $ev->add_property('class', 'PUBLIC'); // PUBLIC / PRIVATE / CONFIDENTIAL $ev->add_property('last-modified', Bennu::timestamp_to_datetime($event->timemodified)); $ev->add_property('dtstamp', Bennu::timestamp_to_datetime()); // now - $ev->add_property('dtstart', Bennu::timestamp_to_datetime($event->timestart)); // when event starts if ($event->timeduration > 0) { //dtend is better than duration, because it works in Microsoft Outlook and works better in Korganizer + $ev->add_property('dtstart', Bennu::timestamp_to_datetime($event->timestart)); // when event starts. $ev->add_property('dtend', Bennu::timestamp_to_datetime($event->timestart + $event->timeduration)); + } else { + // When no duration is present, ie an all day event, VALUE should be date instead of time and dtend = dtstart + 1 day + $ev->add_property('dtstart', Bennu::timestamp_to_date($event->timestart), array('value' => 'DATE')); // All day event. + $ev->add_property('dtend', Bennu::timestamp_to_date($event->timestart + 86400), array('value' => 'DATE')); // All day event. } if ($event->courseid != 0) { $coursecontext = context_course::instance($event->courseid); diff --git a/lib/bennu/bennu.class.php b/lib/bennu/bennu.class.php index b278c14fa78..4e6f09b032c 100644 --- a/lib/bennu/bennu.class.php +++ b/lib/bennu/bennu.class.php @@ -20,6 +20,14 @@ class Bennu { return gmstrftime('%Y%m%dT%H%M%SZ', $t); } + static function timestamp_to_date($t = NULL) { + if($t === NULL) { + $t = time(); + } + return strftime('%Y%m%d', $t); + } + + static function generate_guid() { // Implemented as per the Network Working Group draft on UUIDs and GUIDs