registerServiceAlias('principalBackend', Principal::class); $context->registerCapability(Capabilities::class); $context->registerEventListener(LoadAdditionalScriptsEvent::class, LoadAdditionalScriptsListener::class); $context->registerEventListener(BeforeTemplateRenderedEvent::class, LoadAdditionalScriptsListener::class); $context->registerEventListener(CircleDestroyedEvent::class, CircleDestroyedEventListener::class); $context->registerEventListener(NodeRenamedEvent::class, NodeRenamedListener::class); $context->registerService(MountProvider::class, function (ContainerInterface $c): MountProvider { /** @var IAppConfig $config */ $config = $c->get(IAppConfig::class); $allowRootShare = $config->getValueBool('groupfolders', 'allow_root_share', true); $enableEncryption = $config->getValueBool('groupfolders', 'enable_encryption'); return new MountProvider( $c->get(FolderManager::class), $c->get(ACLManagerFactory::class), $c->get(IUserSession::class), $c->get(IRequest::class), $c->get(IMountProviderCollection::class), $c->get(IDBConnection::class), $c->get(FolderStorageManager::class), $allowRootShare, $enableEncryption ); }); $context->registerService(TrashBackend::class, function (ContainerInterface $c): TrashBackend { $trashBackend = new TrashBackend( $c->get(FolderManager::class), $c->get(TrashManager::class), $c->get(ACLManagerFactory::class), $c->get(IRootFolder::class), $c->get(LoggerInterface::class), $c->get(IUserManager::class), $c->get(IUserSession::class), $c->get(MountProvider::class), $c->get(IMountManager::class), $c->get(IStorageFactory::class), ); $hasVersionApp = interface_exists(\OCA\Files_Versions\Versions\IVersionBackend::class); if ($hasVersionApp) { $trashBackend->setVersionsBackend($c->get(VersionsBackend::class)); } return $trashBackend; }); $context->registerService(ExpireGroupBase::class, function (ContainerInterface $c): ExpireGroupBase { // Multiple implementation of this class exists depending on if the trash and versions // backends are enabled. $hasVersionApp = interface_exists(\OCA\Files_Versions\Versions\IVersionBackend::class); $hasTrashApp = interface_exists(\OCA\Files_Trashbin\Trash\ITrashBackend::class); if ($hasVersionApp && $hasTrashApp) { return new ExpireGroupVersionsTrash( $c->get(GroupVersionsExpireManager::class), $c->get(IEventDispatcher::class), $c->get(TrashBackend::class), $c->get(Expiration::class) ); } if ($hasVersionApp) { return new ExpireGroupVersions( $c->get(GroupVersionsExpireManager::class), $c->get(IEventDispatcher::class), ); } if ($hasTrashApp) { return new ExpireGroupTrash( $c->get(TrashBackend::class), $c->get(Expiration::class) ); } return new ExpireGroupBase(); }); $context->registerService(\OCA\GroupFolders\BackgroundJob\ExpireGroupVersions::class, function (ContainerInterface $c): TimedJob { if (interface_exists(\OCA\Files_Versions\Versions\IVersionBackend::class)) { return new ExpireGroupVersionsJob( $c->get(ITimeFactory::class), $c->get(GroupVersionsExpireManager::class), $c->get(IAppConfig::class), $c->get(FolderManager::class), $c->get(LoggerInterface::class), ); } return new ExpireGroupPlaceholder($c->get(ITimeFactory::class)); }); $context->registerService(\OCA\GroupFolders\BackgroundJob\ExpireGroupTrash::class, function (ContainerInterface $c): TimedJob { if (interface_exists(\OCA\Files_Trashbin\Trash\ITrashBackend::class)) { return new ExpireGroupTrashJob( $c->get(TrashBackend::class), $c->get(Expiration::class), $c->get(IAppConfig::class), $c->get(ITimeFactory::class) ); } return new ExpireGroupPlaceholder($c->get(ITimeFactory::class)); }); $context->registerServiceAlias(IUserMappingManager::class, UserMappingManager::class); $context->registerMiddleware(AuthorizedAdminSettingMiddleware::class); } public function boot(IBootContext $context): void { $context->injectFn(function (IMountProviderCollection $mountProviderCollection, CacheListener $cacheListener, IEventDispatcher $eventDispatcher): void { $mountProviderCollection->registerProvider(Server::get(MountProvider::class)); $eventDispatcher->addListener(GroupDeletedEvent::class, function (GroupDeletedEvent $event): void { Server::get(FolderManager::class)->deleteGroup($event->getGroup()->getGID()); }); $cacheListener->listen(); }); } }