Skip to content

Commit 4bb31c0

Browse files
committed
Remove all legacy event dispatchers from CalDAV & CardDAV backends
Move them to proper EventListeners and test them Signed-off-by: Thomas Citharel <tcit@tcit.fr>
1 parent 07c9bf1 commit 4bb31c0

22 files changed

+616
-252
lines changed

apps/dav/appinfo/v1/caldav.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@
6161
$random = \OC::$server->getSecureRandom();
6262
$logger = \OC::$server->get(LoggerInterface::class);
6363
$dispatcher = \OC::$server->get(\OCP\EventDispatcher\IEventDispatcher::class);
64-
$legacyDispatcher = \OC::$server->getEventDispatcher();
6564
$config = \OC::$server->get(\OCP\IConfig::class);
6665

6766
$calDavBackend = new CalDavBackend(
@@ -72,7 +71,6 @@
7271
$random,
7372
$logger,
7473
$dispatcher,
75-
$legacyDispatcher,
7674
$config,
7775
true
7876
);

apps/dav/appinfo/v1/carddav.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
* @author John Molakvoæ <skjnldsv@protonmail.com>
99
* @author Lukas Reschke <lukas@statuscode.ch>
1010
* @author Morris Jobke <hey@morrisjobke.de>
11+
* @author Thomas Citharel <nextcloud@tcit.fr>
1112
* @author Thomas Müller <thomas.mueller@tmit.eu>
1213
*
1314
* @license AGPL-3.0
@@ -60,7 +61,7 @@
6061
'principals/'
6162
);
6263
$db = \OC::$server->getDatabaseConnection();
63-
$cardDavBackend = new CardDavBackend($db, $principalBackend, \OC::$server->getUserManager(), \OC::$server->getGroupManager(), \OC::$server->get(\OCP\EventDispatcher\IEventDispatcher::class), \OC::$server->getEventDispatcher());
64+
$cardDavBackend = new CardDavBackend($db, $principalBackend, \OC::$server->getUserManager(), \OC::$server->getGroupManager(), \OC::$server->get(\OCP\EventDispatcher\IEventDispatcher::class));
6465

6566
$debugging = \OC::$server->getConfig()->getSystemValue('debug', false);
6667

apps/dav/composer/composer/autoload_classmap.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,10 +235,15 @@
235235
'OCA\\DAV\\HookManager' => $baseDir . '/../lib/HookManager.php',
236236
'OCA\\DAV\\Listener\\ActivityUpdaterListener' => $baseDir . '/../lib/Listener/ActivityUpdaterListener.php',
237237
'OCA\\DAV\\Listener\\AddressbookListener' => $baseDir . '/../lib/Listener/AddressbookListener.php',
238+
'OCA\\DAV\\Listener\\BirthdayListener' => $baseDir . '/../lib/Listener/BirthdayListener.php',
238239
'OCA\\DAV\\Listener\\CalendarContactInteractionListener' => $baseDir . '/../lib/Listener/CalendarContactInteractionListener.php',
239240
'OCA\\DAV\\Listener\\CalendarDeletionDefaultUpdaterListener' => $baseDir . '/../lib/Listener/CalendarDeletionDefaultUpdaterListener.php',
240241
'OCA\\DAV\\Listener\\CalendarObjectReminderUpdaterListener' => $baseDir . '/../lib/Listener/CalendarObjectReminderUpdaterListener.php',
242+
'OCA\\DAV\\Listener\\CalendarPublicationListener' => $baseDir . '/../lib/Listener/CalendarPublicationListener.php',
243+
'OCA\\DAV\\Listener\\CalendarShareUpdateListener' => $baseDir . '/../lib/Listener/CalendarShareUpdateListener.php',
241244
'OCA\\DAV\\Listener\\CardListener' => $baseDir . '/../lib/Listener/CardListener.php',
245+
'OCA\\DAV\\Listener\\ClearPhotoCacheListener' => $baseDir . '/../lib/Listener/ClearPhotoCacheListener.php',
246+
'OCA\\DAV\\Listener\\SubscriptionListener' => $baseDir . '/../lib/Listener/SubscriptionListener.php',
242247
'OCA\\DAV\\Migration\\BuildCalendarSearchIndex' => $baseDir . '/../lib/Migration/BuildCalendarSearchIndex.php',
243248
'OCA\\DAV\\Migration\\BuildCalendarSearchIndexBackgroundJob' => $baseDir . '/../lib/Migration/BuildCalendarSearchIndexBackgroundJob.php',
244249
'OCA\\DAV\\Migration\\BuildSocialSearchIndex' => $baseDir . '/../lib/Migration/BuildSocialSearchIndex.php',

apps/dav/composer/composer/autoload_static.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,10 +250,15 @@ class ComposerStaticInitDAV
250250
'OCA\\DAV\\HookManager' => __DIR__ . '/..' . '/../lib/HookManager.php',
251251
'OCA\\DAV\\Listener\\ActivityUpdaterListener' => __DIR__ . '/..' . '/../lib/Listener/ActivityUpdaterListener.php',
252252
'OCA\\DAV\\Listener\\AddressbookListener' => __DIR__ . '/..' . '/../lib/Listener/AddressbookListener.php',
253+
'OCA\\DAV\\Listener\\BirthdayListener' => __DIR__ . '/..' . '/../lib/Listener/BirthdayListener.php',
253254
'OCA\\DAV\\Listener\\CalendarContactInteractionListener' => __DIR__ . '/..' . '/../lib/Listener/CalendarContactInteractionListener.php',
254255
'OCA\\DAV\\Listener\\CalendarDeletionDefaultUpdaterListener' => __DIR__ . '/..' . '/../lib/Listener/CalendarDeletionDefaultUpdaterListener.php',
255256
'OCA\\DAV\\Listener\\CalendarObjectReminderUpdaterListener' => __DIR__ . '/..' . '/../lib/Listener/CalendarObjectReminderUpdaterListener.php',
257+
'OCA\\DAV\\Listener\\CalendarPublicationListener' => __DIR__ . '/..' . '/../lib/Listener/CalendarPublicationListener.php',
258+
'OCA\\DAV\\Listener\\CalendarShareUpdateListener' => __DIR__ . '/..' . '/../lib/Listener/CalendarShareUpdateListener.php',
256259
'OCA\\DAV\\Listener\\CardListener' => __DIR__ . '/..' . '/../lib/Listener/CardListener.php',
260+
'OCA\\DAV\\Listener\\ClearPhotoCacheListener' => __DIR__ . '/..' . '/../lib/Listener/ClearPhotoCacheListener.php',
261+
'OCA\\DAV\\Listener\\SubscriptionListener' => __DIR__ . '/..' . '/../lib/Listener/SubscriptionListener.php',
257262
'OCA\\DAV\\Migration\\BuildCalendarSearchIndex' => __DIR__ . '/..' . '/../lib/Migration/BuildCalendarSearchIndex.php',
258263
'OCA\\DAV\\Migration\\BuildCalendarSearchIndexBackgroundJob' => __DIR__ . '/..' . '/../lib/Migration/BuildCalendarSearchIndexBackgroundJob.php',
259264
'OCA\\DAV\\Migration\\BuildSocialSearchIndex' => __DIR__ . '/..' . '/../lib/Migration/BuildSocialSearchIndex.php',

apps/dav/lib/AppInfo/Application.php

Lines changed: 20 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -35,18 +35,14 @@
3535
use Exception;
3636
use OCA\DAV\BackgroundJob\UpdateCalendarResourcesRoomsBackgroundJob;
3737
use OCA\DAV\CalDAV\Activity\Backend;
38-
use OCA\DAV\CalDAV\BirthdayService;
39-
use OCA\DAV\CalDAV\CalDavBackend;
4038
use OCA\DAV\CalDAV\CalendarManager;
4139
use OCA\DAV\CalDAV\CalendarProvider;
42-
use OCA\DAV\CalDAV\Reminder\Backend as ReminderBackend;
4340
use OCA\DAV\CalDAV\Reminder\NotificationProvider\AudioProvider;
4441
use OCA\DAV\CalDAV\Reminder\NotificationProvider\EmailProvider;
4542
use OCA\DAV\CalDAV\Reminder\NotificationProvider\PushProvider;
4643
use OCA\DAV\CalDAV\Reminder\NotificationProviderManager;
4744
use OCA\DAV\CalDAV\Reminder\Notifier;
4845

49-
use OCA\DAV\CalDAV\WebcalCaching\RefreshWebcalService;
5046
use OCA\DAV\Capabilities;
5147
use OCA\DAV\CardDAV\CardDavBackend;
5248
use OCA\DAV\CardDAV\ContactsManager;
@@ -64,19 +60,28 @@
6460
use OCA\DAV\Events\CalendarObjectMovedToTrashEvent;
6561
use OCA\DAV\Events\CalendarObjectRestoredEvent;
6662
use OCA\DAV\Events\CalendarObjectUpdatedEvent;
63+
use OCA\DAV\Events\CalendarPublishedEvent;
6764
use OCA\DAV\Events\CalendarRestoredEvent;
6865
use OCA\DAV\Events\CalendarShareUpdatedEvent;
66+
use OCA\DAV\Events\CalendarUnpublishedEvent;
6967
use OCA\DAV\Events\CalendarUpdatedEvent;
7068
use OCA\DAV\Events\CardCreatedEvent;
7169
use OCA\DAV\Events\CardDeletedEvent;
7270
use OCA\DAV\Events\CardUpdatedEvent;
71+
use OCA\DAV\Events\SubscriptionCreatedEvent;
72+
use OCA\DAV\Events\SubscriptionDeletedEvent;
7373
use OCA\DAV\HookManager;
7474
use OCA\DAV\Listener\ActivityUpdaterListener;
7575
use OCA\DAV\Listener\AddressbookListener;
76+
use OCA\DAV\Listener\BirthdayListener;
7677
use OCA\DAV\Listener\CalendarContactInteractionListener;
7778
use OCA\DAV\Listener\CalendarDeletionDefaultUpdaterListener;
7879
use OCA\DAV\Listener\CalendarObjectReminderUpdaterListener;
80+
use OCA\DAV\Listener\CalendarPublicationListener;
81+
use OCA\DAV\Listener\CalendarShareUpdateListener;
7982
use OCA\DAV\Listener\CardListener;
83+
use OCA\DAV\Listener\ClearPhotoCacheListener;
84+
use OCA\DAV\Listener\SubscriptionListener;
8085
use OCA\DAV\Search\ContactsSearchProvider;
8186
use OCA\DAV\Search\EventsSearchProvider;
8287
use OCA\DAV\Search\TasksSearchProvider;
@@ -154,6 +159,12 @@ public function register(IRegistrationContext $context): void {
154159
$context->registerEventListener(CalendarObjectRestoredEvent::class, ActivityUpdaterListener::class);
155160
$context->registerEventListener(CalendarObjectRestoredEvent::class, CalendarObjectReminderUpdaterListener::class);
156161
$context->registerEventListener(CalendarShareUpdatedEvent::class, CalendarContactInteractionListener::class);
162+
$context->registerEventListener(CalendarPublishedEvent::class, CalendarPublicationListener::class);
163+
$context->registerEventListener(CalendarUnpublishedEvent::class, CalendarPublicationListener::class);
164+
$context->registerEventListener(CalendarShareUpdatedEvent::class, CalendarShareUpdateListener::class);
165+
166+
$context->registerEventListener(SubscriptionCreatedEvent::class, SubscriptionListener::class);
167+
$context->registerEventListener(SubscriptionDeletedEvent::class, SubscriptionListener::class);
157168

158169

159170
$context->registerEventListener(AddressBookCreatedEvent::class, AddressbookListener::class);
@@ -163,6 +174,11 @@ public function register(IRegistrationContext $context): void {
163174
$context->registerEventListener(CardCreatedEvent::class, CardListener::class);
164175
$context->registerEventListener(CardDeletedEvent::class, CardListener::class);
165176
$context->registerEventListener(CardUpdatedEvent::class, CardListener::class);
177+
$context->registerEventListener(CardCreatedEvent::class, BirthdayListener::class);
178+
$context->registerEventListener(CardDeletedEvent::class, BirthdayListener::class);
179+
$context->registerEventListener(CardUpdatedEvent::class, BirthdayListener::class);
180+
$context->registerEventListener(CardDeletedEvent::class, ClearPhotoCacheListener::class);
181+
$context->registerEventListener(CardUpdatedEvent::class, ClearPhotoCacheListener::class);
166182

167183
$context->registerNotifierService(Notifier::class);
168184

@@ -195,44 +211,6 @@ public function registerHooks(HookManager $hm,
195211
}
196212
});
197213

198-
$birthdayListener = function ($event) use ($container): void {
199-
if ($event instanceof GenericEvent) {
200-
/** @var BirthdayService $b */
201-
$b = $container->query(BirthdayService::class);
202-
$b->onCardChanged(
203-
(int) $event->getArgument('addressBookId'),
204-
(string) $event->getArgument('cardUri'),
205-
(string) $event->getArgument('cardData')
206-
);
207-
}
208-
};
209-
210-
$dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::createCard', $birthdayListener);
211-
$dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::updateCard', $birthdayListener);
212-
$dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::deleteCard', function ($event) use ($container) {
213-
if ($event instanceof GenericEvent) {
214-
/** @var BirthdayService $b */
215-
$b = $container->query(BirthdayService::class);
216-
$b->onCardDeleted(
217-
(int) $event->getArgument('addressBookId'),
218-
(string) $event->getArgument('cardUri')
219-
);
220-
}
221-
});
222-
223-
$clearPhotoCache = function ($event) use ($container): void {
224-
if ($event instanceof GenericEvent) {
225-
/** @var PhotoCache $p */
226-
$p = $container->query(PhotoCache::class);
227-
$p->delete(
228-
$event->getArgument('addressBookId'),
229-
$event->getArgument('cardUri')
230-
);
231-
}
232-
};
233-
$dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::updateCard', $clearPhotoCache);
234-
$dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::deleteCard', $clearPhotoCache);
235-
236214
$dispatcher->addListener('OC\AccountManager::userUpdated', function (GenericEvent $event) use ($container) {
237215
$user = $event->getSubject();
238216
/** @var SyncService $syncService */
@@ -254,16 +232,6 @@ public function registerHooks(HookManager $hm,
254232
// Here we should recalculate if reminders should be sent to new or old sharees
255233
});
256234

257-
$dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::publishCalendar', function (GenericEvent $event) use ($container) {
258-
/** @var Backend $backend */
259-
$backend = $container->query(Backend::class);
260-
$backend->onCalendarPublication(
261-
$event->getArgument('calendarData'),
262-
$event->getArgument('public')
263-
);
264-
});
265-
266-
267235
$dispatcher->addListener('OCP\Federation\TrustedServerEvent::remove',
268236
function (GenericEvent $event) {
269237
/** @var CardDavBackend $cardDavBackend */
@@ -276,48 +244,6 @@ function (GenericEvent $event) {
276244
}
277245
);
278246

279-
$dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::createSubscription',
280-
function (GenericEvent $event) use ($container, $serverContainer) {
281-
$jobList = $serverContainer->getJobList();
282-
$subscriptionData = $event->getArgument('subscriptionData');
283-
284-
/**
285-
* Initial subscription refetch
286-
*
287-
* @var RefreshWebcalService $refreshWebcalService
288-
*/
289-
$refreshWebcalService = $container->query(RefreshWebcalService::class);
290-
$refreshWebcalService->refreshSubscription(
291-
(string) $subscriptionData['principaluri'],
292-
(string) $subscriptionData['uri']
293-
);
294-
295-
$jobList->add(\OCA\DAV\BackgroundJob\RefreshWebcalJob::class, [
296-
'principaluri' => $subscriptionData['principaluri'],
297-
'uri' => $subscriptionData['uri']
298-
]);
299-
}
300-
);
301-
302-
$dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::deleteSubscription',
303-
function (GenericEvent $event) use ($container, $serverContainer) {
304-
$jobList = $serverContainer->getJobList();
305-
$subscriptionData = $event->getArgument('subscriptionData');
306-
307-
$jobList->remove(\OCA\DAV\BackgroundJob\RefreshWebcalJob::class, [
308-
'principaluri' => $subscriptionData['principaluri'],
309-
'uri' => $subscriptionData['uri']
310-
]);
311-
312-
/** @var CalDavBackend $calDavBackend */
313-
$calDavBackend = $container->get(CalDavBackend::class);
314-
$calDavBackend->purgeAllCachedEventsForSubscription($subscriptionData['id']);
315-
/** @var ReminderBackend $calDavBackend */
316-
$reminderBackend = $container->get(ReminderBackend::class);
317-
$reminderBackend->cleanRemindersForCalendar((int) $subscriptionData['id']);
318-
}
319-
);
320-
321247
$eventHandler = function () use ($container, $serverContainer): void {
322248
try {
323249
/** @var UpdateCalendarResourcesRoomsBackgroundJob $job */

apps/dav/lib/CalDAV/Activity/Backend.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ public function onCalendarDelete(array $calendarData, array $shares): void {
119119
* @param array $calendarData
120120
* @param bool $publishStatus
121121
*/
122-
public function onCalendarPublication(array $calendarData, $publishStatus) {
122+
public function onCalendarPublication(array $calendarData, bool $publishStatus): void {
123123
$this->triggerCalendarActivity($publishStatus ? Calendar::SUBJECT_PUBLISH : Calendar::SUBJECT_UNPUBLISH, $calendarData);
124124
}
125125

0 commit comments

Comments
 (0)