registerService('APIController', function (ContainerInterface $c) { /** @var IServerContainer $server */ $server = $c->get(IServerContainer::class); return new ApiController( $c->get('AppName'), $c->get(IRequest::class), $c->get(IUserSession::class), $c->get(TagService::class), $c->get(IPreview::class), $c->get(IShareManager::class), $c->get(IConfig::class), $server->getUserFolder(), $c->get(UserConfig::class), $c->get(ViewConfig::class), ); }); /** * Services */ $context->registerService(TagService::class, function (ContainerInterface $c) { /** @var IServerContainer $server */ $server = $c->get(IServerContainer::class); return new TagService( $c->get(IUserSession::class), $c->get(IActivityManager::class), $c->get(ITagManager::class)->load(self::APP_ID), $server->getUserFolder(), $c->get(IEventDispatcher::class), ); }); /* * Register capabilities */ $context->registerCapability(Capabilities::class); $context->registerCapability(DirectEditingCapabilities::class); $context->registerEventListener(LoadSidebar::class, LoadSidebarListener::class); $context->registerEventListener(RenderReferenceEvent::class, RenderReferenceEventListener::class); $context->registerEventListener(BeforeNodeRenamedEvent::class, SyncLivePhotosListener::class); $context->registerEventListener(BeforeNodeDeletedEvent::class, SyncLivePhotosListener::class); $context->registerEventListener(CacheEntryRemovedEvent::class, SyncLivePhotosListener::class); $context->registerEventListener(BeforeNodeCopiedEvent::class, SyncLivePhotosListener::class); $context->registerEventListener(NodeCopiedEvent::class, SyncLivePhotosListener::class); $context->registerEventListener(LoadSearchPlugins::class, LoadSearchPluginsListener::class); $context->registerSearchProvider(FilesSearchProvider::class); $context->registerNotifierService(Notifier::class); } public function boot(IBootContext $context): void { $context->injectFn(Closure::fromCallable([$this, 'registerCollaboration'])); $context->injectFn([Listener::class, 'register']); $context->injectFn(Closure::fromCallable([$this, 'registerSearchProvider'])); $this->registerTemplates(); $this->registerHooks(); } private function registerCollaboration(IProviderManager $providerManager): void { $providerManager->registerResourceProvider(ResourceProvider::class); } private function registerSearchProvider(ISearch $search): void { $search->registerProvider(File::class, ['apps' => ['files']]); } private function registerTemplates(): void { $templateManager = \OC_Helper::getFileTemplateManager(); $templateManager->registerTemplate('application/vnd.oasis.opendocument.presentation', 'core/templates/filetemplates/template.odp'); $templateManager->registerTemplate('application/vnd.oasis.opendocument.text', 'core/templates/filetemplates/template.odt'); $templateManager->registerTemplate('application/vnd.oasis.opendocument.spreadsheet', 'core/templates/filetemplates/template.ods'); } private function registerHooks(): void { Util::connectHook('\OCP\Config', 'js', '\OCA\Files\App', 'extendJsConfig'); } }