Passed
Push — master ( c4d09a...d06716 )
by Christoph
18:36 queued 02:55
created
apps/dav/lib/AppInfo/Application.php 1 patch
Indentation   +277 added lines, -277 removed lines patch added patch discarded remove patch
@@ -97,290 +97,290 @@
 block discarded – undo
97 97
 use function is_null;
98 98
 
99 99
 class Application extends App implements IBootstrap {
100
-	public const APP_ID = 'dav';
100
+    public const APP_ID = 'dav';
101 101
 
102
-	public function __construct() {
103
-		parent::__construct(self::APP_ID);
104
-	}
102
+    public function __construct() {
103
+        parent::__construct(self::APP_ID);
104
+    }
105 105
 
106
-	public function register(IRegistrationContext $context): void {
107
-		$context->registerServiceAlias('CardDAVSyncService', SyncService::class);
108
-		$context->registerService(PhotoCache::class, function (ContainerInterface $c) {
109
-			/** @var IServerContainer $server */
110
-			$server = $c->get(IServerContainer::class);
106
+    public function register(IRegistrationContext $context): void {
107
+        $context->registerServiceAlias('CardDAVSyncService', SyncService::class);
108
+        $context->registerService(PhotoCache::class, function (ContainerInterface $c) {
109
+            /** @var IServerContainer $server */
110
+            $server = $c->get(IServerContainer::class);
111 111
 
112
-			return new PhotoCache(
113
-				$server->getAppDataDir('dav-photocache'),
114
-				$c->get(ILogger::class)
115
-			);
116
-		});
112
+            return new PhotoCache(
113
+                $server->getAppDataDir('dav-photocache'),
114
+                $c->get(ILogger::class)
115
+            );
116
+        });
117 117
 
118
-		/*
118
+        /*
119 119
 		 * Register capabilities
120 120
 		 */
121
-		$context->registerCapability(Capabilities::class);
121
+        $context->registerCapability(Capabilities::class);
122 122
 
123
-		/*
123
+        /*
124 124
 		 * Register Search Providers
125 125
 		 */
126
-		$context->registerSearchProvider(ContactsSearchProvider::class);
127
-		$context->registerSearchProvider(EventsSearchProvider::class);
128
-		$context->registerSearchProvider(TasksSearchProvider::class);
129
-
130
-		/**
131
-		 * Register event listeners
132
-		 */
133
-		$context->registerEventListener(CalendarCreatedEvent::class, ActivityUpdaterListener::class);
134
-		$context->registerEventListener(CalendarDeletedEvent::class, ActivityUpdaterListener::class);
135
-		$context->registerEventListener(CalendarDeletedEvent::class, CalendarObjectReminderUpdaterListener::class);
136
-		$context->registerEventListener(CalendarDeletedEvent::class, CalendarDeletionDefaultUpdaterListener::class);
137
-		$context->registerEventListener(CalendarMovedToTrashEvent::class, ActivityUpdaterListener::class);
138
-		$context->registerEventListener(CalendarMovedToTrashEvent::class, CalendarObjectReminderUpdaterListener::class);
139
-		$context->registerEventListener(CalendarUpdatedEvent::class, ActivityUpdaterListener::class);
140
-		$context->registerEventListener(CalendarRestoredEvent::class, ActivityUpdaterListener::class);
141
-		$context->registerEventListener(CalendarRestoredEvent::class, CalendarObjectReminderUpdaterListener::class);
142
-		$context->registerEventListener(CalendarObjectCreatedEvent::class, ActivityUpdaterListener::class);
143
-		$context->registerEventListener(CalendarObjectCreatedEvent::class, CalendarContactInteractionListener::class);
144
-		$context->registerEventListener(CalendarObjectCreatedEvent::class, CalendarObjectReminderUpdaterListener::class);
145
-		$context->registerEventListener(CalendarObjectUpdatedEvent::class, ActivityUpdaterListener::class);
146
-		$context->registerEventListener(CalendarObjectUpdatedEvent::class, CalendarContactInteractionListener::class);
147
-		$context->registerEventListener(CalendarObjectUpdatedEvent::class, CalendarObjectReminderUpdaterListener::class);
148
-		$context->registerEventListener(CalendarObjectDeletedEvent::class, ActivityUpdaterListener::class);
149
-		$context->registerEventListener(CalendarObjectDeletedEvent::class, CalendarObjectReminderUpdaterListener::class);
150
-		$context->registerEventListener(CalendarObjectMovedToTrashEvent::class, ActivityUpdaterListener::class);
151
-		$context->registerEventListener(CalendarObjectMovedToTrashEvent::class, CalendarObjectReminderUpdaterListener::class);
152
-		$context->registerEventListener(CalendarObjectRestoredEvent::class, ActivityUpdaterListener::class);
153
-		$context->registerEventListener(CalendarObjectRestoredEvent::class, CalendarObjectReminderUpdaterListener::class);
154
-		$context->registerEventListener(CalendarShareUpdatedEvent::class, CalendarContactInteractionListener::class);
155
-
156
-
157
-		$context->registerEventListener(AddressBookCreatedEvent::class, AddressbookListener::class);
158
-		$context->registerEventListener(AddressBookDeletedEvent::class, AddressbookListener::class);
159
-		$context->registerEventListener(AddressBookUpdatedEvent::class, AddressbookListener::class);
160
-		$context->registerEventListener(AddressBookShareUpdatedEvent::class, AddressbookListener::class);
161
-		$context->registerEventListener(CardCreatedEvent::class, CardListener::class);
162
-		$context->registerEventListener(CardDeletedEvent::class, CardListener::class);
163
-		$context->registerEventListener(CardUpdatedEvent::class, CardListener::class);
164
-
165
-		$context->registerNotifierService(Notifier::class);
166
-
167
-		$context->registerCalendarProvider(CalendarProvider::class);
168
-	}
169
-
170
-	public function boot(IBootContext $context): void {
171
-		// Load all dav apps
172
-		\OC_App::loadApps(['dav']);
173
-
174
-		$context->injectFn([$this, 'registerHooks']);
175
-		$context->injectFn([$this, 'registerContactsManager']);
176
-		$context->injectFn([$this, 'registerCalendarManager']);
177
-		$context->injectFn([$this, 'registerCalendarReminders']);
178
-	}
179
-
180
-	public function registerHooks(HookManager $hm,
181
-								   EventDispatcherInterface $dispatcher,
182
-								   IAppContainer $container,
183
-								   IServerContainer $serverContainer) {
184
-		$hm->setup();
185
-
186
-		// first time login event setup
187
-		$dispatcher->addListener(IUser::class . '::firstLogin', function ($event) use ($hm) {
188
-			if ($event instanceof GenericEvent) {
189
-				$hm->firstLogin($event->getSubject());
190
-			}
191
-		});
192
-
193
-		$birthdayListener = function ($event) use ($container): void {
194
-			if ($event instanceof GenericEvent) {
195
-				/** @var BirthdayService $b */
196
-				$b = $container->query(BirthdayService::class);
197
-				$b->onCardChanged(
198
-					(int) $event->getArgument('addressBookId'),
199
-					(string) $event->getArgument('cardUri'),
200
-					(string) $event->getArgument('cardData')
201
-				);
202
-			}
203
-		};
204
-
205
-		$dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::createCard', $birthdayListener);
206
-		$dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::updateCard', $birthdayListener);
207
-		$dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::deleteCard', function ($event) use ($container) {
208
-			if ($event instanceof GenericEvent) {
209
-				/** @var BirthdayService $b */
210
-				$b = $container->query(BirthdayService::class);
211
-				$b->onCardDeleted(
212
-					(int) $event->getArgument('addressBookId'),
213
-					(string) $event->getArgument('cardUri')
214
-				);
215
-			}
216
-		});
217
-
218
-		$clearPhotoCache = function ($event) use ($container): void {
219
-			if ($event instanceof GenericEvent) {
220
-				/** @var PhotoCache $p */
221
-				$p = $container->query(PhotoCache::class);
222
-				$p->delete(
223
-					$event->getArgument('addressBookId'),
224
-					$event->getArgument('cardUri')
225
-				);
226
-			}
227
-		};
228
-		$dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::updateCard', $clearPhotoCache);
229
-		$dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::deleteCard', $clearPhotoCache);
230
-
231
-		$dispatcher->addListener('OC\AccountManager::userUpdated', function (GenericEvent $event) use ($container) {
232
-			$user = $event->getSubject();
233
-			/** @var SyncService $syncService */
234
-			$syncService = $container->query(SyncService::class);
235
-			$syncService->updateUser($user);
236
-		});
237
-
238
-
239
-		$dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::updateShares', function (GenericEvent $event) use ($container) {
240
-			/** @var Backend $backend */
241
-			$backend = $container->query(Backend::class);
242
-			$backend->onCalendarUpdateShares(
243
-				$event->getArgument('calendarData'),
244
-				$event->getArgument('shares'),
245
-				$event->getArgument('add'),
246
-				$event->getArgument('remove')
247
-			);
248
-
249
-			// Here we should recalculate if reminders should be sent to new or old sharees
250
-		});
251
-
252
-		$dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::publishCalendar', function (GenericEvent $event) use ($container) {
253
-			/** @var Backend $backend */
254
-			$backend = $container->query(Backend::class);
255
-			$backend->onCalendarPublication(
256
-				$event->getArgument('calendarData'),
257
-				$event->getArgument('public')
258
-			);
259
-		});
260
-
261
-
262
-		$dispatcher->addListener('OCP\Federation\TrustedServerEvent::remove',
263
-			function (GenericEvent $event) {
264
-				/** @var CardDavBackend $cardDavBackend */
265
-				$cardDavBackend = \OC::$server->query(CardDavBackend::class);
266
-				$addressBookUri = $event->getSubject();
267
-				$addressBook = $cardDavBackend->getAddressBooksByUri('principals/system/system', $addressBookUri);
268
-				if (!is_null($addressBook)) {
269
-					$cardDavBackend->deleteAddressBook($addressBook['id']);
270
-				}
271
-			}
272
-		);
273
-
274
-		$dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::createSubscription',
275
-			function (GenericEvent $event) use ($container, $serverContainer) {
276
-				$jobList = $serverContainer->getJobList();
277
-				$subscriptionData = $event->getArgument('subscriptionData');
278
-
279
-				/**
280
-				 * Initial subscription refetch
281
-				 *
282
-				 * @var RefreshWebcalService $refreshWebcalService
283
-				 */
284
-				$refreshWebcalService = $container->query(RefreshWebcalService::class);
285
-				$refreshWebcalService->refreshSubscription(
286
-					(string) $subscriptionData['principaluri'],
287
-					(string) $subscriptionData['uri']
288
-				);
289
-
290
-				$jobList->add(\OCA\DAV\BackgroundJob\RefreshWebcalJob::class, [
291
-					'principaluri' => $subscriptionData['principaluri'],
292
-					'uri' => $subscriptionData['uri']
293
-				]);
294
-			}
295
-		);
296
-
297
-		$dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::deleteSubscription',
298
-			function (GenericEvent $event) use ($container, $serverContainer) {
299
-				$jobList = $serverContainer->getJobList();
300
-				$subscriptionData = $event->getArgument('subscriptionData');
301
-
302
-				$jobList->remove(\OCA\DAV\BackgroundJob\RefreshWebcalJob::class, [
303
-					'principaluri' => $subscriptionData['principaluri'],
304
-					'uri' => $subscriptionData['uri']
305
-				]);
306
-
307
-				/** @var CalDavBackend $calDavBackend */
308
-				$calDavBackend = $container->get(CalDavBackend::class);
309
-				$calDavBackend->purgeAllCachedEventsForSubscription($subscriptionData['id']);
310
-				/** @var ReminderBackend $calDavBackend */
311
-				$reminderBackend = $container->get(ReminderBackend::class);
312
-				$reminderBackend->cleanRemindersForCalendar((int) $subscriptionData['id']);
313
-			}
314
-		);
315
-
316
-		$eventHandler = function () use ($container, $serverContainer): void {
317
-			try {
318
-				/** @var UpdateCalendarResourcesRoomsBackgroundJob $job */
319
-				$job = $container->query(UpdateCalendarResourcesRoomsBackgroundJob::class);
320
-				$job->run([]);
321
-				$serverContainer->getJobList()->setLastRun($job);
322
-			} catch (Exception $ex) {
323
-				$serverContainer->getLogger()->logException($ex);
324
-			}
325
-		};
326
-
327
-		$dispatcher->addListener('\OCP\Calendar\Resource\ForceRefreshEvent', $eventHandler);
328
-		$dispatcher->addListener('\OCP\Calendar\Room\ForceRefreshEvent', $eventHandler);
329
-	}
330
-
331
-	public function registerContactsManager(IContactsManager $cm, IAppContainer $container): void {
332
-		$cm->register(function () use ($container, $cm): void {
333
-			$user = \OC::$server->getUserSession()->getUser();
334
-			if (!is_null($user)) {
335
-				$this->setupContactsProvider($cm, $container, $user->getUID());
336
-			} else {
337
-				$this->setupSystemContactsProvider($cm, $container);
338
-			}
339
-		});
340
-	}
341
-
342
-	private function setupContactsProvider(IContactsManager $contactsManager,
343
-										   IAppContainer $container,
344
-										   string $userID): void {
345
-		/** @var ContactsManager $cm */
346
-		$cm = $container->query(ContactsManager::class);
347
-		$urlGenerator = $container->getServer()->getURLGenerator();
348
-		$cm->setupContactsProvider($contactsManager, $userID, $urlGenerator);
349
-	}
350
-
351
-	private function setupSystemContactsProvider(IContactsManager $contactsManager,
352
-												 IAppContainer $container): void {
353
-		/** @var ContactsManager $cm */
354
-		$cm = $container->query(ContactsManager::class);
355
-		$urlGenerator = $container->getServer()->getURLGenerator();
356
-		$cm->setupSystemContactsProvider($contactsManager, $urlGenerator);
357
-	}
358
-
359
-	public function registerCalendarManager(ICalendarManager $calendarManager,
360
-											 IAppContainer $container): void {
361
-		$calendarManager->register(function () use ($container, $calendarManager) {
362
-			$user = \OC::$server->getUserSession()->getUser();
363
-			if ($user !== null) {
364
-				$this->setupCalendarProvider($calendarManager, $container, $user->getUID());
365
-			}
366
-		});
367
-	}
368
-
369
-	private function setupCalendarProvider(ICalendarManager $calendarManager,
370
-										   IAppContainer $container,
371
-										   $userId) {
372
-		$cm = $container->query(CalendarManager::class);
373
-		$cm->setupCalendarProvider($calendarManager, $userId);
374
-	}
375
-
376
-	public function registerCalendarReminders(NotificationProviderManager $manager,
377
-											   ILogger $logger): void {
378
-		try {
379
-			$manager->registerProvider(AudioProvider::class);
380
-			$manager->registerProvider(EmailProvider::class);
381
-			$manager->registerProvider(PushProvider::class);
382
-		} catch (Throwable $ex) {
383
-			$logger->logException($ex);
384
-		}
385
-	}
126
+        $context->registerSearchProvider(ContactsSearchProvider::class);
127
+        $context->registerSearchProvider(EventsSearchProvider::class);
128
+        $context->registerSearchProvider(TasksSearchProvider::class);
129
+
130
+        /**
131
+         * Register event listeners
132
+         */
133
+        $context->registerEventListener(CalendarCreatedEvent::class, ActivityUpdaterListener::class);
134
+        $context->registerEventListener(CalendarDeletedEvent::class, ActivityUpdaterListener::class);
135
+        $context->registerEventListener(CalendarDeletedEvent::class, CalendarObjectReminderUpdaterListener::class);
136
+        $context->registerEventListener(CalendarDeletedEvent::class, CalendarDeletionDefaultUpdaterListener::class);
137
+        $context->registerEventListener(CalendarMovedToTrashEvent::class, ActivityUpdaterListener::class);
138
+        $context->registerEventListener(CalendarMovedToTrashEvent::class, CalendarObjectReminderUpdaterListener::class);
139
+        $context->registerEventListener(CalendarUpdatedEvent::class, ActivityUpdaterListener::class);
140
+        $context->registerEventListener(CalendarRestoredEvent::class, ActivityUpdaterListener::class);
141
+        $context->registerEventListener(CalendarRestoredEvent::class, CalendarObjectReminderUpdaterListener::class);
142
+        $context->registerEventListener(CalendarObjectCreatedEvent::class, ActivityUpdaterListener::class);
143
+        $context->registerEventListener(CalendarObjectCreatedEvent::class, CalendarContactInteractionListener::class);
144
+        $context->registerEventListener(CalendarObjectCreatedEvent::class, CalendarObjectReminderUpdaterListener::class);
145
+        $context->registerEventListener(CalendarObjectUpdatedEvent::class, ActivityUpdaterListener::class);
146
+        $context->registerEventListener(CalendarObjectUpdatedEvent::class, CalendarContactInteractionListener::class);
147
+        $context->registerEventListener(CalendarObjectUpdatedEvent::class, CalendarObjectReminderUpdaterListener::class);
148
+        $context->registerEventListener(CalendarObjectDeletedEvent::class, ActivityUpdaterListener::class);
149
+        $context->registerEventListener(CalendarObjectDeletedEvent::class, CalendarObjectReminderUpdaterListener::class);
150
+        $context->registerEventListener(CalendarObjectMovedToTrashEvent::class, ActivityUpdaterListener::class);
151
+        $context->registerEventListener(CalendarObjectMovedToTrashEvent::class, CalendarObjectReminderUpdaterListener::class);
152
+        $context->registerEventListener(CalendarObjectRestoredEvent::class, ActivityUpdaterListener::class);
153
+        $context->registerEventListener(CalendarObjectRestoredEvent::class, CalendarObjectReminderUpdaterListener::class);
154
+        $context->registerEventListener(CalendarShareUpdatedEvent::class, CalendarContactInteractionListener::class);
155
+
156
+
157
+        $context->registerEventListener(AddressBookCreatedEvent::class, AddressbookListener::class);
158
+        $context->registerEventListener(AddressBookDeletedEvent::class, AddressbookListener::class);
159
+        $context->registerEventListener(AddressBookUpdatedEvent::class, AddressbookListener::class);
160
+        $context->registerEventListener(AddressBookShareUpdatedEvent::class, AddressbookListener::class);
161
+        $context->registerEventListener(CardCreatedEvent::class, CardListener::class);
162
+        $context->registerEventListener(CardDeletedEvent::class, CardListener::class);
163
+        $context->registerEventListener(CardUpdatedEvent::class, CardListener::class);
164
+
165
+        $context->registerNotifierService(Notifier::class);
166
+
167
+        $context->registerCalendarProvider(CalendarProvider::class);
168
+    }
169
+
170
+    public function boot(IBootContext $context): void {
171
+        // Load all dav apps
172
+        \OC_App::loadApps(['dav']);
173
+
174
+        $context->injectFn([$this, 'registerHooks']);
175
+        $context->injectFn([$this, 'registerContactsManager']);
176
+        $context->injectFn([$this, 'registerCalendarManager']);
177
+        $context->injectFn([$this, 'registerCalendarReminders']);
178
+    }
179
+
180
+    public function registerHooks(HookManager $hm,
181
+                                    EventDispatcherInterface $dispatcher,
182
+                                    IAppContainer $container,
183
+                                    IServerContainer $serverContainer) {
184
+        $hm->setup();
185
+
186
+        // first time login event setup
187
+        $dispatcher->addListener(IUser::class . '::firstLogin', function ($event) use ($hm) {
188
+            if ($event instanceof GenericEvent) {
189
+                $hm->firstLogin($event->getSubject());
190
+            }
191
+        });
192
+
193
+        $birthdayListener = function ($event) use ($container): void {
194
+            if ($event instanceof GenericEvent) {
195
+                /** @var BirthdayService $b */
196
+                $b = $container->query(BirthdayService::class);
197
+                $b->onCardChanged(
198
+                    (int) $event->getArgument('addressBookId'),
199
+                    (string) $event->getArgument('cardUri'),
200
+                    (string) $event->getArgument('cardData')
201
+                );
202
+            }
203
+        };
204
+
205
+        $dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::createCard', $birthdayListener);
206
+        $dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::updateCard', $birthdayListener);
207
+        $dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::deleteCard', function ($event) use ($container) {
208
+            if ($event instanceof GenericEvent) {
209
+                /** @var BirthdayService $b */
210
+                $b = $container->query(BirthdayService::class);
211
+                $b->onCardDeleted(
212
+                    (int) $event->getArgument('addressBookId'),
213
+                    (string) $event->getArgument('cardUri')
214
+                );
215
+            }
216
+        });
217
+
218
+        $clearPhotoCache = function ($event) use ($container): void {
219
+            if ($event instanceof GenericEvent) {
220
+                /** @var PhotoCache $p */
221
+                $p = $container->query(PhotoCache::class);
222
+                $p->delete(
223
+                    $event->getArgument('addressBookId'),
224
+                    $event->getArgument('cardUri')
225
+                );
226
+            }
227
+        };
228
+        $dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::updateCard', $clearPhotoCache);
229
+        $dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::deleteCard', $clearPhotoCache);
230
+
231
+        $dispatcher->addListener('OC\AccountManager::userUpdated', function (GenericEvent $event) use ($container) {
232
+            $user = $event->getSubject();
233
+            /** @var SyncService $syncService */
234
+            $syncService = $container->query(SyncService::class);
235
+            $syncService->updateUser($user);
236
+        });
237
+
238
+
239
+        $dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::updateShares', function (GenericEvent $event) use ($container) {
240
+            /** @var Backend $backend */
241
+            $backend = $container->query(Backend::class);
242
+            $backend->onCalendarUpdateShares(
243
+                $event->getArgument('calendarData'),
244
+                $event->getArgument('shares'),
245
+                $event->getArgument('add'),
246
+                $event->getArgument('remove')
247
+            );
248
+
249
+            // Here we should recalculate if reminders should be sent to new or old sharees
250
+        });
251
+
252
+        $dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::publishCalendar', function (GenericEvent $event) use ($container) {
253
+            /** @var Backend $backend */
254
+            $backend = $container->query(Backend::class);
255
+            $backend->onCalendarPublication(
256
+                $event->getArgument('calendarData'),
257
+                $event->getArgument('public')
258
+            );
259
+        });
260
+
261
+
262
+        $dispatcher->addListener('OCP\Federation\TrustedServerEvent::remove',
263
+            function (GenericEvent $event) {
264
+                /** @var CardDavBackend $cardDavBackend */
265
+                $cardDavBackend = \OC::$server->query(CardDavBackend::class);
266
+                $addressBookUri = $event->getSubject();
267
+                $addressBook = $cardDavBackend->getAddressBooksByUri('principals/system/system', $addressBookUri);
268
+                if (!is_null($addressBook)) {
269
+                    $cardDavBackend->deleteAddressBook($addressBook['id']);
270
+                }
271
+            }
272
+        );
273
+
274
+        $dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::createSubscription',
275
+            function (GenericEvent $event) use ($container, $serverContainer) {
276
+                $jobList = $serverContainer->getJobList();
277
+                $subscriptionData = $event->getArgument('subscriptionData');
278
+
279
+                /**
280
+                 * Initial subscription refetch
281
+                 *
282
+                 * @var RefreshWebcalService $refreshWebcalService
283
+                 */
284
+                $refreshWebcalService = $container->query(RefreshWebcalService::class);
285
+                $refreshWebcalService->refreshSubscription(
286
+                    (string) $subscriptionData['principaluri'],
287
+                    (string) $subscriptionData['uri']
288
+                );
289
+
290
+                $jobList->add(\OCA\DAV\BackgroundJob\RefreshWebcalJob::class, [
291
+                    'principaluri' => $subscriptionData['principaluri'],
292
+                    'uri' => $subscriptionData['uri']
293
+                ]);
294
+            }
295
+        );
296
+
297
+        $dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::deleteSubscription',
298
+            function (GenericEvent $event) use ($container, $serverContainer) {
299
+                $jobList = $serverContainer->getJobList();
300
+                $subscriptionData = $event->getArgument('subscriptionData');
301
+
302
+                $jobList->remove(\OCA\DAV\BackgroundJob\RefreshWebcalJob::class, [
303
+                    'principaluri' => $subscriptionData['principaluri'],
304
+                    'uri' => $subscriptionData['uri']
305
+                ]);
306
+
307
+                /** @var CalDavBackend $calDavBackend */
308
+                $calDavBackend = $container->get(CalDavBackend::class);
309
+                $calDavBackend->purgeAllCachedEventsForSubscription($subscriptionData['id']);
310
+                /** @var ReminderBackend $calDavBackend */
311
+                $reminderBackend = $container->get(ReminderBackend::class);
312
+                $reminderBackend->cleanRemindersForCalendar((int) $subscriptionData['id']);
313
+            }
314
+        );
315
+
316
+        $eventHandler = function () use ($container, $serverContainer): void {
317
+            try {
318
+                /** @var UpdateCalendarResourcesRoomsBackgroundJob $job */
319
+                $job = $container->query(UpdateCalendarResourcesRoomsBackgroundJob::class);
320
+                $job->run([]);
321
+                $serverContainer->getJobList()->setLastRun($job);
322
+            } catch (Exception $ex) {
323
+                $serverContainer->getLogger()->logException($ex);
324
+            }
325
+        };
326
+
327
+        $dispatcher->addListener('\OCP\Calendar\Resource\ForceRefreshEvent', $eventHandler);
328
+        $dispatcher->addListener('\OCP\Calendar\Room\ForceRefreshEvent', $eventHandler);
329
+    }
330
+
331
+    public function registerContactsManager(IContactsManager $cm, IAppContainer $container): void {
332
+        $cm->register(function () use ($container, $cm): void {
333
+            $user = \OC::$server->getUserSession()->getUser();
334
+            if (!is_null($user)) {
335
+                $this->setupContactsProvider($cm, $container, $user->getUID());
336
+            } else {
337
+                $this->setupSystemContactsProvider($cm, $container);
338
+            }
339
+        });
340
+    }
341
+
342
+    private function setupContactsProvider(IContactsManager $contactsManager,
343
+                                            IAppContainer $container,
344
+                                            string $userID): void {
345
+        /** @var ContactsManager $cm */
346
+        $cm = $container->query(ContactsManager::class);
347
+        $urlGenerator = $container->getServer()->getURLGenerator();
348
+        $cm->setupContactsProvider($contactsManager, $userID, $urlGenerator);
349
+    }
350
+
351
+    private function setupSystemContactsProvider(IContactsManager $contactsManager,
352
+                                                    IAppContainer $container): void {
353
+        /** @var ContactsManager $cm */
354
+        $cm = $container->query(ContactsManager::class);
355
+        $urlGenerator = $container->getServer()->getURLGenerator();
356
+        $cm->setupSystemContactsProvider($contactsManager, $urlGenerator);
357
+    }
358
+
359
+    public function registerCalendarManager(ICalendarManager $calendarManager,
360
+                                                IAppContainer $container): void {
361
+        $calendarManager->register(function () use ($container, $calendarManager) {
362
+            $user = \OC::$server->getUserSession()->getUser();
363
+            if ($user !== null) {
364
+                $this->setupCalendarProvider($calendarManager, $container, $user->getUID());
365
+            }
366
+        });
367
+    }
368
+
369
+    private function setupCalendarProvider(ICalendarManager $calendarManager,
370
+                                            IAppContainer $container,
371
+                                            $userId) {
372
+        $cm = $container->query(CalendarManager::class);
373
+        $cm->setupCalendarProvider($calendarManager, $userId);
374
+    }
375
+
376
+    public function registerCalendarReminders(NotificationProviderManager $manager,
377
+                                                ILogger $logger): void {
378
+        try {
379
+            $manager->registerProvider(AudioProvider::class);
380
+            $manager->registerProvider(EmailProvider::class);
381
+            $manager->registerProvider(PushProvider::class);
382
+        } catch (Throwable $ex) {
383
+            $logger->logException($ex);
384
+        }
385
+    }
386 386
 }
Please login to merge, or discard this patch.