diff --git a/apps/dav/lib/BackgroundJob/BuildReminderIndexBackgroundJob.php b/apps/dav/lib/BackgroundJob/BuildReminderIndexBackgroundJob.php index ad5bf7736a..badfc2ca04 100644 --- a/apps/dav/lib/BackgroundJob/BuildReminderIndexBackgroundJob.php +++ b/apps/dav/lib/BackgroundJob/BuildReminderIndexBackgroundJob.php @@ -125,7 +125,7 @@ class BuildReminderIndexBackgroundJob extends QueuedJob { $row['component'] = $row['componenttype']; try { - $this->reminderService->onTouchCalendarObject('\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject', $row); + $this->reminderService->onCalendarObjectCreate($row); } catch (\Exception $ex) { $this->logger->logException($ex); } diff --git a/apps/dav/lib/CalDAV/Reminder/ReminderService.php b/apps/dav/lib/CalDAV/Reminder/ReminderService.php index 9c27231cb8..83fe413c0e 100644 --- a/apps/dav/lib/CalDAV/Reminder/ReminderService.php +++ b/apps/dav/lib/CalDAV/Reminder/ReminderService.php @@ -44,6 +44,7 @@ use Sabre\VObject\InvalidDataException; use Sabre\VObject\ParseException; use Sabre\VObject\Recur\EventIterator; use Sabre\VObject\Recur\NoInstancesException; +use function strcasecmp; class ReminderService { @@ -154,39 +155,15 @@ class ReminderService { } /** - * @param string $action * @param array $objectData * @throws VObject\InvalidDataException */ - public function onTouchCalendarObject(string $action, - array $objectData):void { + public function onCalendarObjectCreate(array $objectData):void { // We only support VEvents for now if (strcasecmp($objectData['component'], 'vevent') !== 0) { return; } - switch ($action) { - case '\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject': - $this->onCalendarObjectCreate($objectData); - break; - - case '\OCA\DAV\CalDAV\CalDavBackend::updateCalendarObject': - $this->onCalendarObjectEdit($objectData); - break; - - case '\OCA\DAV\CalDAV\CalDavBackend::deleteCalendarObject': - $this->onCalendarObjectDelete($objectData); - break; - - default: - break; - } - } - - /** - * @param array $objectData - */ - private function onCalendarObjectCreate(array $objectData):void { $calendarData = is_resource($objectData['calendardata']) ? stream_get_contents($objectData['calendardata']) : $objectData['calendardata']; @@ -307,8 +284,9 @@ class ReminderService { /** * @param array $objectData + * @throws VObject\InvalidDataException */ - private function onCalendarObjectEdit(array $objectData):void { + public function onCalendarObjectEdit(array $objectData):void { // TODO - this can be vastly improved // - get cached reminders // - ... @@ -319,8 +297,14 @@ class ReminderService { /** * @param array $objectData + * @throws VObject\InvalidDataException */ - private function onCalendarObjectDelete(array $objectData):void { + public function onCalendarObjectDelete(array $objectData):void { + // We only support VEvents for now + if (strcasecmp($objectData['component'], 'vevent') !== 0) { + return; + } + $this->backend->cleanRemindersForEvent((int) $objectData['id']); } diff --git a/apps/dav/lib/Listener/CalendarObjectReminderUpdaterListener.php b/apps/dav/lib/Listener/CalendarObjectReminderUpdaterListener.php index 4c201a19c3..b976ef3ad9 100644 --- a/apps/dav/lib/Listener/CalendarObjectReminderUpdaterListener.php +++ b/apps/dav/lib/Listener/CalendarObjectReminderUpdaterListener.php @@ -74,8 +74,7 @@ class CalendarObjectReminderUpdaterListener implements IEventListener { } } elseif ($event instanceof CalendarObjectCreatedEvent) { try { - $this->reminderService->onTouchCalendarObject( - '\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject', + $this->reminderService->onCalendarObjectCreate( $event->getObjectData() ); @@ -90,8 +89,7 @@ class CalendarObjectReminderUpdaterListener implements IEventListener { } } elseif ($event instanceof CalendarObjectUpdatedEvent) { try { - $this->reminderService->onTouchCalendarObject( - '\OCA\DAV\CalDAV\CalDavBackend::updateCalendarObject', + $this->reminderService->onCalendarObjectEdit( $event->getObjectData() ); @@ -106,8 +104,7 @@ class CalendarObjectReminderUpdaterListener implements IEventListener { } } elseif ($event instanceof CalendarObjectDeletedEvent) { try { - $this->reminderService->onTouchCalendarObject( - '\OCA\DAV\CalDAV\CalDavBackend::deleteCalendarObject', + $this->reminderService->onCalendarObjectDelete( $event->getObjectData() ); diff --git a/apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php b/apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php index 2d4cbfd0c8..ce5b5acdd6 100644 --- a/apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php +++ b/apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php @@ -211,17 +211,15 @@ EOD; ->method('cleanRemindersForEvent') ->with(44); - $action = '\OCA\DAV\CalDAV\CalDavBackend::deleteCalendarObject'; $objectData = [ 'id' => '44', 'component' => 'vevent', ]; - $this->reminderService->onTouchCalendarObject($action, $objectData); + $this->reminderService->onCalendarObjectDelete($objectData); } public function testOnCalendarObjectCreateSingleEntry():void { - $action = '\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject'; $objectData = [ 'calendardata' => self::CALENDAR_DATA, 'id' => '42', @@ -242,11 +240,10 @@ EOD; ->with() ->willReturn(\DateTime::createFromFormat(\DateTime::ATOM, '2016-06-08T00:00:00+00:00')); - $this->reminderService->onTouchCalendarObject($action, $objectData); + $this->reminderService->onCalendarObjectCreate($objectData); } public function testOnCalendarObjectCreateSingleEntryWithRepeat(): void { - $action = '\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject'; $objectData = [ 'calendardata' => self::CALENDAR_DATA_REPEAT, 'id' => '42', @@ -270,11 +267,10 @@ EOD; ->with() ->willReturn(\DateTime::createFromFormat(\DateTime::ATOM, '2016-06-08T00:00:00+00:00')); - $this->reminderService->onTouchCalendarObject($action, $objectData); + $this->reminderService->onCalendarObjectCreate($objectData); } public function testOnCalendarObjectCreateRecurringEntry(): void { - $action = '\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject'; $objectData = [ 'calendardata' => self::CALENDAR_DATA_RECURRING, 'id' => '42', @@ -295,11 +291,10 @@ EOD; ->with() ->willReturn(\DateTime::createFromFormat(\DateTime::ATOM, '2016-06-29T00:00:00+00:00')); - $this->reminderService->onTouchCalendarObject($action, $objectData); + $this->reminderService->onCalendarObjectCreate($objectData); } public function testOnCalendarObjectCreateEmpty():void { - $action = '\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject'; $objectData = [ 'calendardata' => self::CALENDAR_DATA_NO_ALARM, 'id' => '42', @@ -310,11 +305,10 @@ EOD; $this->backend->expects($this->never()) ->method('insertReminder'); - $this->reminderService->onTouchCalendarObject($action, $objectData); + $this->reminderService->onCalendarObjectCreate($objectData); } public function testOnCalendarObjectCreateRecurringEntryWithRepeat():void { - $action = '\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject'; $objectData = [ 'calendardata' => self::CALENDAR_DATA_RECURRING_REPEAT, 'id' => '42', @@ -339,7 +333,7 @@ EOD; ->with() ->willReturn(\DateTime::createFromFormat(\DateTime::ATOM, '2016-06-29T00:00:00+00:00')); - $this->reminderService->onTouchCalendarObject($action, $objectData); + $this->reminderService->onCalendarObjectCreate($objectData); } public function testProcessReminders():void {