From 6f66fba559377d257be07c9a5f13db58bbc39b09 Mon Sep 17 00:00:00 2001 From: Georg Ehrke <developer@georgehrke.com> Date: Sun, 18 Aug 2019 20:56:57 +0200 Subject: fix foreach error for reminder generator Signed-off-by: Georg Ehrke <developer@georgehrke.com> --- apps/dav/lib/CalDAV/Reminder/ReminderService.php | 8 ++++++ .../unit/CalDAV/Reminder/ReminderServiceTest.php | 32 ++++++++++++++++++++++ 2 files changed, 40 insertions(+) (limited to 'apps') 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 @@ -164,6 +164,23 @@ TRIGGER:-P8D END:VALARM 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() { @@ -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 = [ -- cgit v1.2.3