diff options
author | Georg Ehrke <developer@georgehrke.com> | 2019-08-18 20:56:57 +0200 |
---|---|---|
committer | Georg Ehrke <developer@georgehrke.com> | 2019-08-18 20:56:57 +0200 |
commit | 6f66fba559377d257be07c9a5f13db58bbc39b09 (patch) | |
tree | 95c4719d77ea6e2a482cbfe7466c1ad0725f83fd /apps/dav | |
parent | 08a61f3373d00b144be668d50b756e313cb4b5c3 (diff) | |
download | nextcloud-server-6f66fba559377d257be07c9a5f13db58bbc39b09.tar.gz nextcloud-server-6f66fba559377d257be07c9a5f13db58bbc39b09.zip |
fix foreach error for reminder generator
Signed-off-by: Georg Ehrke <developer@georgehrke.com>
Diffstat (limited to 'apps/dav')
-rw-r--r-- | apps/dav/lib/CalDAV/Reminder/ReminderService.php | 8 | ||||
-rw-r--r-- | apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php | 32 |
2 files changed, 40 insertions, 0 deletions
diff --git a/apps/dav/lib/CalDAV/Reminder/ReminderService.php b/apps/dav/lib/CalDAV/Reminder/ReminderService.php index f36ddd157cc..dd19c400720 100644 --- a/apps/dav/lib/CalDAV/Reminder/ReminderService.php +++ b/apps/dav/lib/CalDAV/Reminder/ReminderService.php @@ -196,6 +196,10 @@ class ReminderService { foreach($recurrenceExceptions as $recurrenceException) { $eventHash = $this->getEventHash($recurrenceException); + if (!isset($recurrenceException->VALARM)) { + continue; + } + foreach($recurrenceException->VALARM as $valarm) { /** @var VAlarm $valarm */ $alarmHash = $this->getAlarmHash($valarm); @@ -216,6 +220,10 @@ class ReminderService { $masterAlarms = []; $masterHash = $this->getEventHash($masterItem); + if (!isset($masterItem->VALARM)) { + return; + } + foreach($masterItem->VALARM as $valarm) { $masterAlarms[] = $this->getAlarmHash($valarm); } diff --git a/apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php b/apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php index a9acca66a81..4dcb688caa1 100644 --- a/apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php +++ b/apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php @@ -166,6 +166,23 @@ END:VEVENT END:VCALENDAR EOD; + public const CALENDAR_DATA_NO_ALARM = <<<EOD +BEGIN:VCALENDAR +PRODID:-//Nextcloud calendar v1.6.4 +BEGIN:VEVENT +CREATED:20160602T133732 +DTSTAMP:20160602T133732 +LAST-MODIFIED:20160602T133732 +UID:wej2z68l9h +SUMMARY:Test Event +LOCATION:Somewhere ... +DESCRIPTION:maybe .... +DTSTART;TZID=Europe/Berlin;VALUE=DATE:20160609 +DTEND;TZID=Europe/Berlin;VALUE=DATE:20160610 +END:VEVENT +END:VCALENDAR +EOD; + public function setUp() { parent::setUp(); @@ -278,6 +295,21 @@ EOD; $this->reminderService->onTouchCalendarObject($action, $objectData); } + public function testOnCalendarObjectCreateEmpty():void { + $action = '\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject'; + $objectData = [ + 'calendardata' => self::CALENDAR_DATA_NO_ALARM, + 'id' => '42', + 'calendarid' => '1337', + 'component' => 'vevent', + ]; + + $this->backend->expects($this->never()) + ->method('insertReminder'); + + $this->reminderService->onTouchCalendarObject($action, $objectData); + } + public function testOnCalendarObjectCreateRecurringEntryWithRepeat():void { $action = '\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject'; $objectData = [ |