From f1dce1f5b9b097ffaf6a3fc5ff925a120273f49b Mon Sep 17 00:00:00 2001 From: Thomas Bruederli Date: Fri, 29 Nov 2013 20:23:17 +0100 Subject: [PATCH] Also consider exceptions when checking if first instance is to be listed (#2625) --- plugins/calendar/drivers/kolab/kolab_calendar.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/plugins/calendar/drivers/kolab/kolab_calendar.php b/plugins/calendar/drivers/kolab/kolab_calendar.php index 9eb70bdc..9427b1c7 100644 --- a/plugins/calendar/drivers/kolab/kolab_calendar.php +++ b/plugins/calendar/drivers/kolab/kolab_calendar.php @@ -267,9 +267,18 @@ class kolab_calendar $add = true; // skip the first instance of a recurring event if listed in exdate - if ($virtual && !empty($event['recurrence']['EXDATE'])) { + if ($virtual && (!empty($event['recurrence']['EXDATE']) || !empty($event['recurrence']['EXCEPTIONS']))) { $event_date = $event['start']->format('Ymd'); - foreach ($event['recurrence']['EXDATE'] as $exdate) { + $exdates = (array)$event['recurrence']['EXDATE']; + + // add dates from exceptions to list + if (is_array($event['recurrence']['EXCEPTIONS'])) { + foreach ($event['recurrence']['EXCEPTIONS'] as $exception) { + $exdates[] = clone $exception['start']; + } + } + + foreach ($exdates as $exdate) { if ($exdate->format('Ymd') == $event_date) { $add = false; break;