From 57aa0716a1ad2b0ffee343de9ebd7e9d5da726ea Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Fri, 1 May 2020 11:37:50 +0200 Subject: [PATCH 1/3] Consider only reminders with calendar data Signed-off-by: Thomas Citharel --- apps/dav/lib/CalDAV/Reminder/Backend.php | 4 ++-- apps/dav/lib/CalDAV/Reminder/ReminderService.php | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/apps/dav/lib/CalDAV/Reminder/Backend.php b/apps/dav/lib/CalDAV/Reminder/Backend.php index 48b1e9aed4636..b0476e9594c1e 100644 --- a/apps/dav/lib/CalDAV/Reminder/Backend.php +++ b/apps/dav/lib/CalDAV/Reminder/Backend.php @@ -67,8 +67,8 @@ public function getRemindersToProcess():array { $query->select(['cr.*', 'co.calendardata', 'c.displayname', 'c.principaluri']) ->from('calendar_reminders', 'cr') ->where($query->expr()->lte('cr.notification_date', $query->createNamedParameter($this->timeFactory->getTime()))) - ->leftJoin('cr', 'calendarobjects', 'co', $query->expr()->eq('cr.object_id', 'co.id')) - ->leftJoin('cr', 'calendars', 'c', $query->expr()->eq('cr.calendar_id', 'c.id')); + ->join('cr', 'calendarobjects', 'co', $query->expr()->eq('cr.object_id', 'co.id')) + ->join('cr', 'calendars', 'c', $query->expr()->eq('cr.calendar_id', 'c.id')); $stmt = $query->execute(); return array_map( diff --git a/apps/dav/lib/CalDAV/Reminder/ReminderService.php b/apps/dav/lib/CalDAV/Reminder/ReminderService.php index ad5c18d477ded..109fc95e9bef7 100644 --- a/apps/dav/lib/CalDAV/Reminder/ReminderService.php +++ b/apps/dav/lib/CalDAV/Reminder/ReminderService.php @@ -119,6 +119,10 @@ public function processReminders():void { ? stream_get_contents($reminder['calendardata']) : $reminder['calendardata']; + if (!$calendarData) { + continue; + } + $vcalendar = $this->parseCalendarData($calendarData); if (!$vcalendar) { $this->backend->removeReminder($reminder['id']); @@ -168,6 +172,10 @@ public function onCalendarObjectCreate(array $objectData):void { ? stream_get_contents($objectData['calendardata']) : $objectData['calendardata']; + if (!$calendarData) { + return; + } + /** @var VObject\Component\VCalendar $vcalendar */ $vcalendar = $this->parseCalendarData($calendarData); if (!$vcalendar) { From 3d82ff605ba5d3058eacd9b88e42080afc07788d Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Fri, 17 Dec 2021 15:49:21 +0100 Subject: [PATCH 2/3] Clean reminders for calendar when deleting a subscription Signed-off-by: Thomas Citharel --- apps/dav/lib/AppInfo/Application.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/dav/lib/AppInfo/Application.php b/apps/dav/lib/AppInfo/Application.php index 7e26912120ad9..8d9bd230f94b8 100644 --- a/apps/dav/lib/AppInfo/Application.php +++ b/apps/dav/lib/AppInfo/Application.php @@ -38,6 +38,7 @@ use OCA\DAV\CalDAV\BirthdayService; use OCA\DAV\CalDAV\CalDavBackend; use OCA\DAV\CalDAV\CalendarManager; +use OCA\DAV\CalDAV\Reminder\Backend as ReminderBackend; use OCA\DAV\CalDAV\Reminder\NotificationProvider\AudioProvider; use OCA\DAV\CalDAV\Reminder\NotificationProvider\EmailProvider; use OCA\DAV\CalDAV\Reminder\NotificationProvider\PushProvider; @@ -303,6 +304,9 @@ function (GenericEvent $event) use ($container, $serverContainer) { /** @var CalDavBackend $calDavBackend */ $calDavBackend = $container->query(CalDavBackend::class); $calDavBackend->purgeAllCachedEventsForSubscription($subscriptionData['id']); + /** @var ReminderBackend $calDavBackend */ + $reminderBackend = $container->query(ReminderBackend::class); + $reminderBackend->cleanRemindersForCalendar($subscriptionData['id']); } ); From 1503798725e8b7306e610d838695ab7024bd049d Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 21 Feb 2022 11:36:09 +0100 Subject: [PATCH 3/3] Fix cleaning reminders after subscription purge Signed-off-by: Thomas Citharel --- apps/dav/lib/AppInfo/Application.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/dav/lib/AppInfo/Application.php b/apps/dav/lib/AppInfo/Application.php index 8d9bd230f94b8..551ad8ebaa266 100644 --- a/apps/dav/lib/AppInfo/Application.php +++ b/apps/dav/lib/AppInfo/Application.php @@ -302,11 +302,11 @@ function (GenericEvent $event) use ($container, $serverContainer) { ]); /** @var CalDavBackend $calDavBackend */ - $calDavBackend = $container->query(CalDavBackend::class); + $calDavBackend = $container->get(CalDavBackend::class); $calDavBackend->purgeAllCachedEventsForSubscription($subscriptionData['id']); /** @var ReminderBackend $calDavBackend */ - $reminderBackend = $container->query(ReminderBackend::class); - $reminderBackend->cleanRemindersForCalendar($subscriptionData['id']); + $reminderBackend = $container->get(ReminderBackend::class); + $reminderBackend->cleanRemindersForCalendar((int) $subscriptionData['id']); } );