summaryrefslogtreecommitdiffstats
path: root/apps/dav
diff options
context:
space:
mode:
authorGeorg Ehrke <developer@georgehrke.com>2019-08-18 20:56:57 +0200
committerGeorg Ehrke <developer@georgehrke.com>2019-08-18 20:56:57 +0200
commit6f66fba559377d257be07c9a5f13db58bbc39b09 (patch)
tree95c4719d77ea6e2a482cbfe7466c1ad0725f83fd /apps/dav
parent08a61f3373d00b144be668d50b756e313cb4b5c3 (diff)
downloadnextcloud-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.php8
-rw-r--r--apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php32
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 = [