Merge pull request #16784 from nextcloud/bugfix/noid/fix_foreach_valarm_error

fix foreach error for reminder generator
This commit is contained in:
Roeland Jago Douma 2019-08-19 09:20:08 +02:00 committed by GitHub
commit 8514a2a436
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 40 additions and 0 deletions

View File

@ -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);
}

View File

@ -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 = [