diff --git a/apps/files_sharing/lib/AppInfo/Application.php b/apps/files_sharing/lib/AppInfo/Application.php index 6448d0fab4..fd71f58f12 100644 --- a/apps/files_sharing/lib/AppInfo/Application.php +++ b/apps/files_sharing/lib/AppInfo/Application.php @@ -59,6 +59,7 @@ use OCP\IServerContainer; use OCP\Share\Events\ShareCreatedEvent; use OCP\Util; use Psr\Container\ContainerInterface; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\EventDispatcher\GenericEvent; class Application extends App { @@ -74,6 +75,7 @@ class Application extends App { /** @var IEventDispatcher $dispatcher */ $dispatcher = $container->query(IEventDispatcher::class); + $oldDispatcher = $container->getServer()->getEventDispatcher(); $mountProviderCollection = $server->getMountProviderCollection(); $notifications = $server->getNotificationManager(); @@ -124,7 +126,7 @@ class Application extends App { $notifications->registerNotifierService(Notifier::class); $this->registerMountProviders($mountProviderCollection); - $this->registerEventsScripts($dispatcher); + $this->registerEventsScripts($dispatcher, $oldDispatcher); $this->setupSharingMenus(); /** @@ -138,7 +140,7 @@ class Application extends App { $mountProviderCollection->registerProvider($this->getContainer()->query('ExternalMountProvider')); } - protected function registerEventsScripts(IEventDispatcher $dispatcher) { + protected function registerEventsScripts(IEventDispatcher $dispatcher, EventDispatcherInterface $oldDispatcher) { // sidebar and files scripts $dispatcher->addServiceListener(LoadAdditionalScriptsEvent::class, LoadAdditionalListener::class); $dispatcher->addServiceListener(BeforeTemplateRenderedEvent::class, LegacyBeforeTemplateRenderedListener::class); @@ -151,12 +153,12 @@ class Application extends App { $dispatcher->addServiceListener(UserAddedEvent::class, UserAddedToGroupListener::class); // notifications api to accept incoming user shares - $dispatcher->addListener('OCP\Share::postShare', function (GenericEvent $event) { + $oldDispatcher->addListener('OCP\Share::postShare', function (GenericEvent $event) { /** @var Listener $listener */ $listener = $this->getContainer()->query(Listener::class); $listener->shareNotification($event); }); - $dispatcher->addListener(IGroup::class . '::postAddUser', function (GenericEvent $event) { + $oldDispatcher->addListener(IGroup::class . '::postAddUser', function (GenericEvent $event) { /** @var Listener $listener */ $listener = $this->getContainer()->query(Listener::class); $listener->userAddedToGroup($event); diff --git a/apps/lookup_server_connector/lib/AppInfo/Application.php b/apps/lookup_server_connector/lib/AppInfo/Application.php index 1cd999eae8..707a06af6f 100644 --- a/apps/lookup_server_connector/lib/AppInfo/Application.php +++ b/apps/lookup_server_connector/lib/AppInfo/Application.php @@ -35,9 +35,9 @@ use OCP\AppFramework\App; use OCP\AppFramework\Bootstrap\IBootContext; use OCP\AppFramework\Bootstrap\IBootstrap; use OCP\AppFramework\Bootstrap\IRegistrationContext; -use OCP\EventDispatcher\IEventDispatcher; use OCP\AppFramework\IAppContainer; use OCP\IUser; +use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Component\EventDispatcher\GenericEvent; class Application extends App implements IBootstrap { @@ -57,7 +57,7 @@ class Application extends App implements IBootstrap { /** * @todo move the OCP events and then move the registration to `register` */ - private function registerEventListeners(IEventDispatcher $dispatcher, + private function registerEventListeners(EventDispatcher $dispatcher, IAppContainer $appContainer): void { $dispatcher->addListener('OC\AccountManager::userUpdated', function (GenericEvent $event) use ($appContainer) { /** @var IUser $user */ diff --git a/core/Application.php b/core/Application.php index 2e2579f094..a452ca9677 100644 --- a/core/Application.php +++ b/core/Application.php @@ -73,7 +73,9 @@ class Application extends App { $notificationManager->registerNotifierService(RemoveLinkSharesNotifier::class); $notificationManager->registerNotifierService(AuthenticationNotifier::class); - $eventDispatcher->addListener(IDBConnection::CHECK_MISSING_INDEXES_EVENT, + $oldEventDispatcher = $server->getEventDispatcher(); + + $oldEventDispatcher->addListener(IDBConnection::CHECK_MISSING_INDEXES_EVENT, function (GenericEvent $event) use ($container) { /** @var MissingIndexInformation $subject */ $subject = $event->getSubject(); @@ -179,7 +181,7 @@ class Application extends App { } ); - $eventDispatcher->addListener(IDBConnection::CHECK_MISSING_COLUMNS_EVENT, + $oldEventDispatcher->addListener(IDBConnection::CHECK_MISSING_COLUMNS_EVENT, function (GenericEvent $event) use ($container) { /** @var MissingColumnInformation $subject */ $subject = $event->getSubject(); diff --git a/lib/public/EventDispatcher/IEventDispatcher.php b/lib/public/EventDispatcher/IEventDispatcher.php index 095178f16e..6f3adf159c 100644 --- a/lib/public/EventDispatcher/IEventDispatcher.php +++ b/lib/public/EventDispatcher/IEventDispatcher.php @@ -39,6 +39,7 @@ interface IEventDispatcher { * @param string $eventName preferably the fully-qualified class name of the Event sub class * @psalm-param string|class-string $eventName preferably the fully-qualified class name of the Event sub class * @param callable $listener the object that is invoked when a matching event is dispatched + * @psalm-param callable(T):void $listener * @param int $priority * * @since 17.0.0 @@ -50,6 +51,7 @@ interface IEventDispatcher { * @param string $eventName preferably the fully-qualified class name of the Event sub class * @psalm-param string|class-string $eventName preferably the fully-qualified class name of the Event sub class * @param callable $listener the object that is invoked when a matching event is dispatched + * @psalm-param callable(T):void $listener * * @since 19.0.0 */