From 12bcc92f705e1411504cc593c42fb8c6660543df Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Thu, 21 Sep 2017 17:52:25 +0200 Subject: [PATCH] * CalDAV: alarms on recurring events are lost when snoozing alarm or reloading event after 1. recurrence of alarm --- calendar/inc/class.calendar_groupdav.inc.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/calendar/inc/class.calendar_groupdav.inc.php b/calendar/inc/class.calendar_groupdav.inc.php index 60e97022c6..8fbf52a2d3 100644 --- a/calendar/inc/class.calendar_groupdav.inc.php +++ b/calendar/inc/class.calendar_groupdav.inc.php @@ -677,6 +677,8 @@ class calendar_groupdav extends Api\CalDAV\Handler if (isset($expand['end'])) $expand['end'] = $this->vCalendar->_parseDateTime($expand['end']); } $events =& self::get_series($event['uid'], $this->bo, $expand, $user); + // as alarm is now only on next recurrence, set alarm from original event on master + if ($event['alarm']) $events[0]['alarm'] = $event['alarm']; } elseif(!$this->client_shared_uid_exceptions && $event['reference']) { @@ -733,6 +735,11 @@ class calendar_groupdav extends Api\CalDAV\Handler foreach($events as $k => &$recurrence) { //error_log(__FILE__.'['.__LINE__.'] '.__METHOD__."($uid)[$k]:" . array2string($recurrence)); + if ($master && $recurrence['reference'] != $master['id']) + { + unset($events[$k]); + continue; // same uid, but references a different event or is own master + } if (!$master || $recurrence['id'] != $master['id']) // real exception { // user is NOT participating in this exception