registerService('UserId', static function ($c) { /** @var IUser|null $user */ $user = $c->get(IUserSession::class)->getUser(); return $user === null ? null : $user->getUID(); }); $context->registerService('request', static function ($c) { return $c->get(IRequest::class); }); $context->registerSearchProvider(Provider::class); $context->registerDashboardWidget(Recent::class); $context->registerDashboardWidget(Frequent::class); $context->registerEventListener(CreateEvent::class, TreeCacheManager::class); $context->registerEventListener(UpdateEvent::class, TreeCacheManager::class); $context->registerEventListener(BeforeDeleteEvent::class, TreeCacheManager::class); $context->registerEventListener(MoveEvent::class, TreeCacheManager::class); $context->registerEventListener(CreateEvent::class, ActivityPublisher::class); $context->registerEventListener(UpdateEvent::class, ActivityPublisher::class); $context->registerEventListener(BeforeDeleteEvent::class, ActivityPublisher::class); $context->registerEventListener(MoveEvent::class, ActivityPublisher::class); $context->registerEventListener(BeforeUserDeletedEvent::class, UserGroupListener::class); $context->registerEventListener(UserAddedEvent::class, UserGroupListener::class); $context->registerEventListener(UserRemovedEvent::class, UserGroupListener::class); $context->registerEventListener(BeforeTemplateRenderedEvent::class, BeforeTemplateRenderedListener::class); $context->registerMiddleware(ExceptionMiddleware::class); } /** * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface * @throws \Throwable */ public function boot(IBootContext $context): void { $container = $context->getServerContainer(); CreateBookmark::register($container->get(IEventDispatcher::class)); $context->injectFn(Closure::fromCallable([$this, 'registerCollaborationResources'])); } protected function registerCollaborationResources(IProviderManager $resourceManager, SymfonyAdapter $symfonyAdapter): void { $resourceManager->registerResourceProvider(ResourceProvider::class); $symfonyAdapter->addListener('\OCP\Collaboration\Resources::loadAdditionalScripts', static function () { Util::addScript('bookmarks', 'bookmarks-collections'); }); } }