diff options
Diffstat (limited to 'lib/private/Server.php')
-rw-r--r-- | lib/private/Server.php | 1198 |
1 files changed, 260 insertions, 938 deletions
diff --git a/lib/private/Server.php b/lib/private/Server.php index bd33cdf58bd..22cd13438b8 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -1,63 +1,18 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * @copyright Copyright (c) 2016, Lukas Reschke <lukas@statuscode.ch> - * - * @author Arne Hamann <kontakt+github@arne.email> - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Bart Visscher <bartv@thisnet.nl> - * @author Bernhard Posselt <dev@bernhard-posselt.com> - * @author Bernhard Reiter <ockham@raz.or.at> - * @author Bjoern Schiessle <bjoern@schiessle.org> - * @author Björn Schießle <bjoern@schiessle.org> - * @author Christopher Schäpers <kondou@ts.unde.re> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Damjan Georgievski <gdamjan@gmail.com> - * @author Daniel Kesselberg <mail@danielkesselberg.de> - * @author Georg Ehrke <oc.list@georgehrke.com> - * @author Joas Schilling <coding@schilljs.com> - * @author John Molakvoæ <skjnldsv@protonmail.com> - * @author Jörn Friedrich Dreyer <jfd@butonic.de> - * @author Julius Haertl <jus@bitgrid.net> - * @author Julius Härtl <jus@bitgrid.net> - * @author Lionel Elie Mamane <lionel@mamane.lu> - * @author Lukas Reschke <lukas@statuscode.ch> - * @author Maxence Lange <maxence@artificial-owl.com> - * @author Michael Weimann <mail@michael-weimann.eu> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Piotr Mrówczyński <mrow4a@yahoo.com> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author root <root@localhost.localdomain> - * @author Thomas Müller <thomas.mueller@tmit.eu> - * @author Thomas Tanghus <thomas@tanghus.net> - * @author Tobia De Koninck <tobia@ledfan.be> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OC; use bantu\IniGetWrapper\IniGetWrapper; +use NCU\Security\Signature\ISignatureManager; use OC\Accounts\AccountManager; use OC\App\AppManager; use OC\App\AppStore\Bundles\BundleFetcher; use OC\App\AppStore\Fetcher\AppFetcher; -use OC\App\AppStore\Fetcher\CategoryFetcher; use OC\AppFramework\Bootstrap\Coordinator; use OC\AppFramework\Http\Request; use OC\AppFramework\Http\RequestId; @@ -68,6 +23,7 @@ use OC\Authentication\Listeners\UserLoggedInListener; use OC\Authentication\LoginCredentials\Store; use OC\Authentication\Token\IProvider; use OC\Avatar\AvatarManager; +use OC\Blurhash\Listener\GenerateBlurhashMetadata; use OC\Collaboration\Collaborators\GroupPlugin; use OC\Collaboration\Collaborators\MailPlugin; use OC\Collaboration\Collaborators\RemoteGroupPlugin; @@ -82,12 +38,14 @@ use OC\DB\Connection; use OC\DB\ConnectionAdapter; use OC\Diagnostics\EventLogger; use OC\Diagnostics\QueryLogger; -use OC\EventDispatcher\SymfonyAdapter; use OC\Federation\CloudFederationFactory; use OC\Federation\CloudFederationProviderManager; use OC\Federation\CloudIdManager; +use OC\Files\Cache\FileAccess; +use OC\Files\Config\MountProviderCollection; use OC\Files\Config\UserMountCache; use OC\Files\Config\UserMountCacheListener; +use OC\Files\Conversion\ConversionManager; use OC\Files\Lock\LockManager; use OC\Files\Mount\CacheMountProvider; use OC\Files\Mount\LocalHomeMountProvider; @@ -97,11 +55,13 @@ use OC\Files\Mount\RootMountProvider; use OC\Files\Node\HookConnector; use OC\Files\Node\LazyRoot; use OC\Files\Node\Root; +use OC\Files\ObjectStore\PrimaryObjectStoreConfig; use OC\Files\SetupManager; use OC\Files\Storage\StorageFactory; use OC\Files\Template\TemplateManager; use OC\Files\Type\Loader; use OC\Files\View; +use OC\FilesMetadata\FilesMetadataManager; use OC\FullTextSearch\FullTextSearchManager; use OC\Http\Client\ClientService; use OC\Http\Client\NegativeDnsCache; @@ -109,8 +69,8 @@ use OC\IntegrityCheck\Checker; use OC\IntegrityCheck\Helpers\AppLocator; use OC\IntegrityCheck\Helpers\EnvironmentHelper; use OC\IntegrityCheck\Helpers\FileAccessHelper; -use OC\LDAP\NullLDAPProviderFactory; use OC\KnownUser\KnownUserService; +use OC\LDAP\NullLDAPProviderFactory; use OC\Lock\DBLockingProvider; use OC\Lock\MemcacheLockingProvider; use OC\Lock\NoopLockingProvider; @@ -120,15 +80,19 @@ use OC\Log\PsrLoggerAdapter; use OC\Mail\Mailer; use OC\Memcache\ArrayCache; use OC\Memcache\Factory; -use OC\Metadata\Capabilities as MetadataCapabilities; -use OC\Metadata\IMetadataManager; -use OC\Metadata\MetadataManager; use OC\Notification\Manager; +use OC\OCM\Model\OCMProvider; +use OC\OCM\OCMDiscoveryService; use OC\OCS\DiscoveryService; use OC\Preview\GeneratorHelper; +use OC\Preview\IMagickSupport; +use OC\Preview\MimeIconProvider; +use OC\Profile\ProfileManager; +use OC\Profiler\Profiler; use OC\Remote\Api\ApiFactory; use OC\Remote\InstanceFactory; use OC\RichObjectStrings\Validator; +use OC\Route\CachingRouter; use OC\Route\Router; use OC\Security\Bruteforce\Throttler; use OC\Security\CertificateManager; @@ -139,31 +103,42 @@ use OC\Security\CSP\ContentSecurityPolicyNonceManager; use OC\Security\CSRF\CsrfTokenManager; use OC\Security\CSRF\TokenStorage\SessionStorage; use OC\Security\Hasher; +use OC\Security\Ip\RemoteAddress; +use OC\Security\RateLimiting\Limiter; use OC\Security\SecureRandom; +use OC\Security\Signature\SignatureManager; use OC\Security\TrustedDomainHelper; use OC\Security\VerificationToken\VerificationToken; use OC\Session\CryptoWrapper; +use OC\Settings\DeclarativeManager; +use OC\SetupCheck\SetupCheckManager; use OC\Share20\ProviderFactory; use OC\Share20\ShareHelper; +use OC\SpeechToText\SpeechToTextManager; use OC\SystemTag\ManagerFactory as SystemTagManagerFactory; -use OC\Tagging\TagMapper; use OC\Talk\Broker; +use OC\Teams\TeamManager; use OC\Template\JSCombiner; +use OC\Translation\TranslationManager; +use OC\User\AvailabilityCoordinator; use OC\User\DisplayNameCache; use OC\User\Listeners\BeforeUserDeletedListener; use OC\User\Listeners\UserChangedListener; use OC\User\Session; use OCA\Theming\ImageManager; +use OCA\Theming\Service\BackgroundService; use OCA\Theming\ThemingDefaults; use OCA\Theming\Util; use OCP\Accounts\IAccountManager; use OCP\App\IAppManager; +use OCP\AppFramework\Utility\ITimeFactory; use OCP\Authentication\LoginCredentials\IStore; +use OCP\Authentication\Token\IProvider as OCPIProvider; use OCP\BackgroundJob\IJobList; -use OCP\Collaboration\AutoComplete\IManager; use OCP\Collaboration\Reference\IReferenceManager; use OCP\Command\IBus; use OCP\Comments\ICommentsManager; +use OCP\Config\IUserConfig; use OCP\Contacts\ContactsMenu\IActionFactory; use OCP\Contacts\ContactsMenu\IContactsStore; use OCP\Defaults; @@ -175,8 +150,10 @@ use OCP\EventDispatcher\IEventDispatcher; use OCP\Federation\ICloudFederationFactory; use OCP\Federation\ICloudFederationProviderManager; use OCP\Federation\ICloudIdManager; +use OCP\Files\Cache\IFileAccess; use OCP\Files\Config\IMountProviderCollection; use OCP\Files\Config\IUserMountCache; +use OCP\Files\Conversion\IConversionManager; use OCP\Files\IMimeTypeDetector; use OCP\Files\IMimeTypeLoader; use OCP\Files\IRootFolder; @@ -184,39 +161,30 @@ use OCP\Files\Lock\ILockManager; use OCP\Files\Mount\IMountManager; use OCP\Files\Storage\IStorageFactory; use OCP\Files\Template\ITemplateManager; +use OCP\FilesMetadata\IFilesMetadataManager; use OCP\FullTextSearch\IFullTextSearchManager; -use OCP\GlobalScale\IConfig; -use OCP\Group\Events\BeforeGroupCreatedEvent; -use OCP\Group\Events\BeforeGroupDeletedEvent; -use OCP\Group\Events\BeforeUserAddedEvent; -use OCP\Group\Events\BeforeUserRemovedEvent; -use OCP\Group\Events\GroupCreatedEvent; -use OCP\Group\Events\GroupDeletedEvent; -use OCP\Group\Events\UserAddedEvent; -use OCP\Group\Events\UserRemovedEvent; use OCP\Group\ISubAdmin; use OCP\Http\Client\IClientService; use OCP\IAppConfig; use OCP\IAvatarManager; +use OCP\IBinaryFinder; use OCP\ICache; use OCP\ICacheFactory; use OCP\ICertificateManager; -use OCP\IBinaryFinder; use OCP\IDateTimeFormatter; use OCP\IDateTimeZone; use OCP\IDBConnection; +use OCP\IEventSourceFactory; use OCP\IGroupManager; use OCP\IInitialStateService; use OCP\IL10N; -use OCP\ILogger; use OCP\INavigationManager; +use OCP\IPhoneNumberUtil; use OCP\IPreview; use OCP\IRequest; use OCP\IRequestId; -use OCP\ISearch; use OCP\IServerContainer; use OCP\ISession; -use OCP\ITagManager; use OCP\ITempManager; use OCP\IURLGenerator; use OCP\IUserManager; @@ -228,44 +196,49 @@ use OCP\Lock\ILockingProvider; use OCP\Lockdown\ILockdownManager; use OCP\Log\ILogFactory; use OCP\Mail\IMailer; +use OCP\OCM\ICapabilityAwareOCMProvider; +use OCP\OCM\IOCMDiscoveryService; +use OCP\OCM\IOCMProvider; +use OCP\Preview\IMimeIconProvider; +use OCP\Profile\IProfileManager; +use OCP\Profiler\IProfiler; use OCP\Remote\Api\IApiFactory; use OCP\Remote\IInstanceFactory; +use OCP\RichObjectStrings\IRichTextFormatter; use OCP\RichObjectStrings\IValidator; use OCP\Route\IRouter; use OCP\Security\Bruteforce\IThrottler; -use OCP\Security\IContentSecurityPolicyManager; use OCP\Security\ICredentialsManager; use OCP\Security\ICrypto; use OCP\Security\IHasher; +use OCP\Security\Ip\IRemoteAddress; use OCP\Security\ISecureRandom; use OCP\Security\ITrustedDomainHelper; +use OCP\Security\RateLimiting\ILimiter; use OCP\Security\VerificationToken\IVerificationToken; +use OCP\ServerVersion; +use OCP\Settings\IDeclarativeManager; +use OCP\SetupCheck\ISetupCheckManager; +use OCP\Share\IProviderFactory; use OCP\Share\IShareHelper; +use OCP\SpeechToText\ISpeechToTextManager; use OCP\SystemTag\ISystemTagManager; use OCP\SystemTag\ISystemTagObjectMapper; use OCP\Talk\IBroker; -use OCP\User\Events\BeforePasswordUpdatedEvent; +use OCP\Teams\ITeamManager; +use OCP\Translation\ITranslationManager; use OCP\User\Events\BeforeUserDeletedEvent; use OCP\User\Events\BeforeUserLoggedInEvent; use OCP\User\Events\BeforeUserLoggedInWithCookieEvent; use OCP\User\Events\BeforeUserLoggedOutEvent; -use OCP\User\Events\PasswordUpdatedEvent; use OCP\User\Events\PostLoginEvent; use OCP\User\Events\UserChangedEvent; use OCP\User\Events\UserLoggedInEvent; use OCP\User\Events\UserLoggedInWithCookieEvent; use OCP\User\Events\UserLoggedOutEvent; -use Psr\Container\ContainerExceptionInterface; +use OCP\User\IAvailabilityCoordinator; use Psr\Container\ContainerInterface; use Psr\Log\LoggerInterface; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; -use Symfony\Component\EventDispatcher\GenericEvent; -use OCA\Files_External\Service\UserStoragesService; -use OCA\Files_External\Service\UserGlobalStoragesService; -use OCA\Files_External\Service\GlobalStoragesService; -use OCA\Files_External\Service\BackendService; -use OCP\Profiler\IProfiler; -use OC\Profiler\Profiler; /** * Class Server @@ -293,28 +266,21 @@ class Server extends ServerContainer implements IServerContainer { $this->registerService(ContainerInterface::class, function (ContainerInterface $c) { return $c; }); - $this->registerService(\OCP\IServerContainer::class, function (ContainerInterface $c) { - return $c; - }); + $this->registerDeprecatedAlias(\OCP\IServerContainer::class, ContainerInterface::class); $this->registerAlias(\OCP\Calendar\IManager::class, \OC\Calendar\Manager::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('CalendarManager', \OC\Calendar\Manager::class); $this->registerAlias(\OCP\Calendar\Resource\IManager::class, \OC\Calendar\Resource\Manager::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('CalendarResourceBackendManager', \OC\Calendar\Resource\Manager::class); $this->registerAlias(\OCP\Calendar\Room\IManager::class, \OC\Calendar\Room\Manager::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('CalendarRoomBackendManager', \OC\Calendar\Room\Manager::class); $this->registerAlias(\OCP\Contacts\IManager::class, \OC\ContactsManager::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('ContactsManager', \OCP\Contacts\IManager::class); + + $this->registerAlias(\OCP\ContextChat\IContentManager::class, \OC\ContextChat\ContentManager::class); $this->registerAlias(\OCP\DirectEditing\IManager::class, \OC\DirectEditing\Manager::class); $this->registerAlias(ITemplateManager::class, TemplateManager::class); + $this->registerAlias(\OCP\Template\ITemplateManager::class, \OC\Template\TemplateManager::class); $this->registerAlias(IActionFactory::class, ActionFactory::class); @@ -331,16 +297,15 @@ class Server extends ServerContainer implements IServerContainer { $c->get(SystemConfig::class) ), $c->get(IEventDispatcher::class), - $c->get(SymfonyAdapter::class), $c->get(GeneratorHelper::class), $c->get(ISession::class)->get('user_id'), $c->get(Coordinator::class), $c->get(IServerContainer::class), - $c->get(IBinaryFinder::class) + $c->get(IBinaryFinder::class), + $c->get(IMagickSupport::class) ); }); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('PreviewManager', IPreview::class); + $this->registerAlias(IMimeIconProvider::class, MimeIconProvider::class); $this->registerService(\OC\Preview\Watcher::class, function (ContainerInterface $c) { return new \OC\Preview\Watcher( @@ -355,7 +320,7 @@ class Server extends ServerContainer implements IServerContainer { return new Profiler($c->get(SystemConfig::class)); }); - $this->registerService(\OCP\Encryption\IManager::class, function (Server $c): Encryption\Manager { + $this->registerService(Encryption\Manager::class, function (Server $c): Encryption\Manager { $view = new View(); $util = new Encryption\Util( $view, @@ -372,11 +337,8 @@ class Server extends ServerContainer implements IServerContainer { new ArrayCache() ); }); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('EncryptionManager', \OCP\Encryption\IManager::class); + $this->registerAlias(\OCP\Encryption\IManager::class, Encryption\Manager::class); - /** @deprecated 21.0.0 */ - $this->registerDeprecatedAlias('EncryptionFileHelper', IFile::class); $this->registerService(IFile::class, function (ContainerInterface $c) { $util = new Encryption\Util( new View(), @@ -391,8 +353,6 @@ class Server extends ServerContainer implements IServerContainer { ); }); - /** @deprecated 21.0.0 */ - $this->registerDeprecatedAlias('EncryptionKeyStorage', IStorage::class); $this->registerService(IStorage::class, function (ContainerInterface $c) { $view = new View(); $util = new Encryption\Util( @@ -409,12 +369,8 @@ class Server extends ServerContainer implements IServerContainer { $c->get(\OCP\IConfig::class) ); }); - /** @deprecated 20.0.0 */ - $this->registerDeprecatedAlias('TagMapper', TagMapper::class); $this->registerAlias(\OCP\ITagManager::class, TagManager::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('TagManager', \OCP\ITagManager::class); $this->registerService('SystemTagManagerFactory', function (ContainerInterface $c) { /** @var \OCP\IConfig $config */ @@ -431,22 +387,27 @@ class Server extends ServerContainer implements IServerContainer { $this->registerService(ISystemTagObjectMapper::class, function (ContainerInterface $c) { return $c->get('SystemTagManagerFactory')->getObjectMapper(); }); + $this->registerAlias(IFileAccess::class, FileAccess::class); $this->registerService('RootFolder', function (ContainerInterface $c) { - $manager = \OC\Files\Filesystem::getMountManager(null); + $manager = \OC\Files\Filesystem::getMountManager(); $view = new View(); + /** @var IUserSession $userSession */ + $userSession = $c->get(IUserSession::class); $root = new Root( $manager, $view, - null, + $userSession->getUser(), $c->get(IUserMountCache::class), $this->get(LoggerInterface::class), $this->get(IUserManager::class), $this->get(IEventDispatcher::class), + $this->get(ICacheFactory::class), ); $previewConnector = new \OC\Preview\WatcherConnector( $root, - $c->get(SystemConfig::class) + $c->get(SystemConfig::class), + $this->get(IEventDispatcher::class) ); $previewConnector->connectWatcher(); @@ -456,24 +417,17 @@ class Server extends ServerContainer implements IServerContainer { return new HookConnector( $c->get(IRootFolder::class), new View(), - $c->get(\OC\EventDispatcher\SymfonyAdapter::class), - $c->get(IEventDispatcher::class) + $c->get(IEventDispatcher::class), + $c->get(LoggerInterface::class) ); }); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('SystemTagObjectMapper', ISystemTagObjectMapper::class); - $this->registerService(IRootFolder::class, function (ContainerInterface $c) { return new LazyRoot(function () use ($c) { return $c->get('RootFolder'); }); }); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('LazyRootFolder', IRootFolder::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('UserManager', \OC\User\Manager::class); $this->registerAlias(\OCP\IUserManager::class, \OC\User\Manager::class); $this->registerService(DisplayNameCache::class, function (ContainerInterface $c) { @@ -483,54 +437,13 @@ class Server extends ServerContainer implements IServerContainer { $this->registerService(\OCP\IGroupManager::class, function (ContainerInterface $c) { $groupManager = new \OC\Group\Manager( $this->get(IUserManager::class), - $c->get(SymfonyAdapter::class), + $this->get(IEventDispatcher::class), $this->get(LoggerInterface::class), - $this->get(ICacheFactory::class) + $this->get(ICacheFactory::class), + $this->get(IRemoteAddress::class), ); - $groupManager->listen('\OC\Group', 'preCreate', function ($gid) { - /** @var IEventDispatcher $dispatcher */ - $dispatcher = $this->get(IEventDispatcher::class); - $dispatcher->dispatchTyped(new BeforeGroupCreatedEvent($gid)); - }); - $groupManager->listen('\OC\Group', 'postCreate', function (\OC\Group\Group $group) { - /** @var IEventDispatcher $dispatcher */ - $dispatcher = $this->get(IEventDispatcher::class); - $dispatcher->dispatchTyped(new GroupCreatedEvent($group)); - }); - $groupManager->listen('\OC\Group', 'preDelete', function (\OC\Group\Group $group) { - /** @var IEventDispatcher $dispatcher */ - $dispatcher = $this->get(IEventDispatcher::class); - $dispatcher->dispatchTyped(new BeforeGroupDeletedEvent($group)); - }); - $groupManager->listen('\OC\Group', 'postDelete', function (\OC\Group\Group $group) { - /** @var IEventDispatcher $dispatcher */ - $dispatcher = $this->get(IEventDispatcher::class); - $dispatcher->dispatchTyped(new GroupDeletedEvent($group)); - }); - $groupManager->listen('\OC\Group', 'preAddUser', function (\OC\Group\Group $group, \OC\User\User $user) { - /** @var IEventDispatcher $dispatcher */ - $dispatcher = $this->get(IEventDispatcher::class); - $dispatcher->dispatchTyped(new BeforeUserAddedEvent($group, $user)); - }); - $groupManager->listen('\OC\Group', 'postAddUser', function (\OC\Group\Group $group, \OC\User\User $user) { - /** @var IEventDispatcher $dispatcher */ - $dispatcher = $this->get(IEventDispatcher::class); - $dispatcher->dispatchTyped(new UserAddedEvent($group, $user)); - }); - $groupManager->listen('\OC\Group', 'preRemoveUser', function (\OC\Group\Group $group, \OC\User\User $user) { - /** @var IEventDispatcher $dispatcher */ - $dispatcher = $this->get(IEventDispatcher::class); - $dispatcher->dispatchTyped(new BeforeUserRemovedEvent($group, $user)); - }); - $groupManager->listen('\OC\Group', 'postRemoveUser', function (\OC\Group\Group $group, \OC\User\User $user) { - /** @var IEventDispatcher $dispatcher */ - $dispatcher = $this->get(IEventDispatcher::class); - $dispatcher->dispatchTyped(new UserRemovedEvent($group, $user)); - }); return $groupManager; }); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('GroupManager', \OCP\IGroupManager::class); $this->registerService(Store::class, function (ContainerInterface $c) { $session = $c->get(ISession::class); @@ -540,14 +453,16 @@ class Server extends ServerContainer implements IServerContainer { $tokenProvider = null; } $logger = $c->get(LoggerInterface::class); - return new Store($session, $logger, $tokenProvider); + $crypto = $c->get(ICrypto::class); + return new Store($session, $logger, $crypto, $tokenProvider); }); $this->registerAlias(IStore::class, Store::class); $this->registerAlias(IProvider::class, Authentication\Token\Manager::class); + $this->registerAlias(OCPIProvider::class, Authentication\Token\Manager::class); $this->registerService(\OC\User\Session::class, function (Server $c) { $manager = $c->get(IUserManager::class); - $session = new \OC\Session\Memory(''); + $session = new \OC\Session\Memory(); $timeFactory = new TimeFactory(); // Token providers might require a working database. This code // might however be called when Nextcloud is not yet setup. @@ -557,8 +472,6 @@ class Server extends ServerContainer implements IServerContainer { $provider = null; } - $legacyDispatcher = $c->get(SymfonyAdapter::class); - $userSession = new \OC\User\Session( $manager, $session, @@ -566,9 +479,9 @@ class Server extends ServerContainer implements IServerContainer { $provider, $c->get(\OCP\IConfig::class), $c->get(ISecureRandom::class), - $c->getLockdownManager(), + $c->get('LockdownManager'), $c->get(LoggerInterface::class), - $c->get(IEventDispatcher::class) + $c->get(IEventDispatcher::class), ); /** @deprecated 21.0.0 use BeforeUserCreatedEvent event with the IEventDispatcher instead */ $userSession->listen('\OC\User', 'preCreateUser', function ($uid, $password) { @@ -580,10 +493,9 @@ class Server extends ServerContainer implements IServerContainer { \OC_Hook::emit('OC_User', 'post_createUser', ['uid' => $user->getUID(), 'password' => $password]); }); /** @deprecated 21.0.0 use BeforeUserDeletedEvent event with the IEventDispatcher instead */ - $userSession->listen('\OC\User', 'preDelete', function ($user) use ($legacyDispatcher) { + $userSession->listen('\OC\User', 'preDelete', function ($user) { /** @var \OC\User\User $user */ \OC_Hook::emit('OC_User', 'pre_deleteUser', ['run' => true, 'uid' => $user->getUID()]); - $legacyDispatcher->dispatch('OCP\IUser::preDelete', new GenericEvent($user)); }); /** @deprecated 21.0.0 use UserDeletedEvent event with the IEventDispatcher instead */ $userSession->listen('\OC\User', 'postDelete', function ($user) { @@ -593,18 +505,10 @@ class Server extends ServerContainer implements IServerContainer { $userSession->listen('\OC\User', 'preSetPassword', function ($user, $password, $recoveryPassword) { /** @var \OC\User\User $user */ \OC_Hook::emit('OC_User', 'pre_setPassword', ['run' => true, 'uid' => $user->getUID(), 'password' => $password, 'recoveryPassword' => $recoveryPassword]); - - /** @var IEventDispatcher $dispatcher */ - $dispatcher = $this->get(IEventDispatcher::class); - $dispatcher->dispatchTyped(new BeforePasswordUpdatedEvent($user, $password, $recoveryPassword)); }); $userSession->listen('\OC\User', 'postSetPassword', function ($user, $password, $recoveryPassword) { /** @var \OC\User\User $user */ \OC_Hook::emit('OC_User', 'post_setPassword', ['run' => true, 'uid' => $user->getUID(), 'password' => $password, 'recoveryPassword' => $recoveryPassword]); - - /** @var IEventDispatcher $dispatcher */ - $dispatcher = $this->get(IEventDispatcher::class); - $dispatcher->dispatchTyped(new PasswordUpdatedEvent($user, $password, $recoveryPassword)); }); $userSession->listen('\OC\User', 'preLogin', function ($uid, $password) { \OC_Hook::emit('OC_User', 'pre_login', ['run' => true, 'uid' => $uid, 'password' => $password]); @@ -649,36 +553,24 @@ class Server extends ServerContainer implements IServerContainer { $userSession->listen('\OC\User', 'changeUser', function ($user, $feature, $value, $oldValue) { /** @var \OC\User\User $user */ \OC_Hook::emit('OC_User', 'changeUser', ['run' => true, 'user' => $user, 'feature' => $feature, 'value' => $value, 'old_value' => $oldValue]); - - /** @var IEventDispatcher $dispatcher */ - $dispatcher = $this->get(IEventDispatcher::class); - $dispatcher->dispatchTyped(new UserChangedEvent($user, $feature, $value, $oldValue)); }); return $userSession; }); $this->registerAlias(\OCP\IUserSession::class, \OC\User\Session::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('UserSession', \OC\User\Session::class); $this->registerAlias(\OCP\Authentication\TwoFactorAuth\IRegistry::class, \OC\Authentication\TwoFactorAuth\Registry::class); $this->registerAlias(INavigationManager::class, \OC\NavigationManager::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('NavigationManager', INavigationManager::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('AllConfig', \OC\AllConfig::class); $this->registerAlias(\OCP\IConfig::class, \OC\AllConfig::class); $this->registerService(\OC\SystemConfig::class, function ($c) use ($config) { return new \OC\SystemConfig($config); }); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('SystemConfig', \OC\SystemConfig::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('AppConfig', \OC\AppConfig::class); $this->registerAlias(IAppConfig::class, \OC\AppConfig::class); + $this->registerAlias(IUserConfig::class, \OC\Config\UserConfig::class); + $this->registerAlias(IAppManager::class, AppManager::class); $this->registerService(IFactory::class, function (Server $c) { return new \OC\L10N\Factory( @@ -686,72 +578,75 @@ class Server extends ServerContainer implements IServerContainer { $c->getRequest(), $c->get(IUserSession::class), $c->get(ICacheFactory::class), - \OC::$SERVERROOT + \OC::$SERVERROOT, + $c->get(IAppManager::class), ); }); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('L10NFactory', IFactory::class); $this->registerAlias(IURLGenerator::class, URLGenerator::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('URLGenerator', IURLGenerator::class); - - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('AppFetcher', AppFetcher::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('CategoryFetcher', CategoryFetcher::class); $this->registerService(ICache::class, function ($c) { return new Cache\File(); }); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('UserCache', ICache::class); $this->registerService(Factory::class, function (Server $c) { $profiler = $c->get(IProfiler::class); - $arrayCacheFactory = new \OC\Memcache\Factory('', $c->get(LoggerInterface::class), + $arrayCacheFactory = new \OC\Memcache\Factory(fn () => '', $c->get(LoggerInterface::class), $profiler, ArrayCache::class, ArrayCache::class, ArrayCache::class ); - /** @var \OCP\IConfig $config */ - $config = $c->get(\OCP\IConfig::class); - - if ($config->getSystemValue('installed', false) && !(defined('PHPUNIT_RUN') && PHPUNIT_RUN)) { - if (!$config->getSystemValueBool('log_query')) { - $v = \OC_App::getAppVersions(); - } else { - // If the log_query is enabled, we can not get the app versions - // as that does a query, which will be logged and the logging - // depends on redis and here we are back again in the same function. - $v = [ - 'log_query' => 'enabled', - ]; - } - $v['core'] = implode(',', \OC_Util::getVersion()); - $version = implode(',', $v); - $instanceId = \OC_Util::getInstanceId(); - $path = \OC::$SERVERROOT; - $prefix = md5($instanceId . '-' . $version . '-' . $path); - return new \OC\Memcache\Factory($prefix, + /** @var SystemConfig $config */ + $config = $c->get(SystemConfig::class); + /** @var ServerVersion $serverVersion */ + $serverVersion = $c->get(ServerVersion::class); + + if ($config->getValue('installed', false) && !(defined('PHPUNIT_RUN') && PHPUNIT_RUN)) { + $logQuery = $config->getValue('log_query'); + $prefixClosure = function () use ($logQuery, $serverVersion): ?string { + if (!$logQuery) { + try { + $v = \OCP\Server::get(IAppConfig::class)->getAppInstalledVersions(true); + } catch (\Doctrine\DBAL\Exception $e) { + // Database service probably unavailable + // Probably related to https://github.com/nextcloud/server/issues/37424 + return null; + } + } else { + // If the log_query is enabled, we can not get the app versions + // as that does a query, which will be logged and the logging + // depends on redis and here we are back again in the same function. + $v = [ + 'log_query' => 'enabled', + ]; + } + $v['core'] = implode(',', $serverVersion->getVersion()); + $version = implode(',', array_keys($v)) . implode(',', $v); + $instanceId = \OC_Util::getInstanceId(); + $path = \OC::$SERVERROOT; + return md5($instanceId . '-' . $version . '-' . $path); + }; + return new \OC\Memcache\Factory($prefixClosure, $c->get(LoggerInterface::class), $profiler, - $config->getSystemValue('memcache.local', null), - $config->getSystemValue('memcache.distributed', null), - $config->getSystemValue('memcache.locking', null), - $config->getSystemValueString('redis_log_file') + /** @psalm-taint-escape callable */ + $config->getValue('memcache.local', null), + /** @psalm-taint-escape callable */ + $config->getValue('memcache.distributed', null), + /** @psalm-taint-escape callable */ + $config->getValue('memcache.locking', null), + /** @psalm-taint-escape callable */ + $config->getValue('redis_log_file') ); } return $arrayCacheFactory; }); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('MemCacheFactory', Factory::class); $this->registerAlias(ICacheFactory::class, Factory::class); $this->registerService('RedisFactory', function (Server $c) { $systemConfig = $c->get(SystemConfig::class); - return new RedisFactory($systemConfig, $c->getEventLogger()); + return new RedisFactory($systemConfig, $c->get(IEventLogger::class)); }); $this->registerService(\OCP\Activity\IManager::class, function (Server $c) { @@ -761,11 +656,11 @@ class Server extends ServerContainer implements IServerContainer { $c->get(IUserSession::class), $c->get(\OCP\IConfig::class), $c->get(IValidator::class), - $l10n + $c->get(IRichTextFormatter::class), + $l10n, + $c->get(ITimeFactory::class), ); }); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('ActivityManager', \OCP\Activity\IManager::class); $this->registerService(\OCP\Activity\IEventMerger::class, function (Server $c) { return new \OC\Activity\EventMerger( @@ -788,24 +683,20 @@ class Server extends ServerContainer implements IServerContainer { }); $this->registerAlias(IAvatarManager::class, AvatarManager::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('AvatarManager', AvatarManager::class); $this->registerAlias(\OCP\Support\CrashReport\IRegistry::class, \OC\Support\CrashReport\Registry::class); $this->registerAlias(\OCP\Support\Subscription\IRegistry::class, \OC\Support\Subscription\Registry::class); $this->registerAlias(\OCP\Support\Subscription\IAssertion::class, \OC\Support\Subscription\Assertion::class); + /** Only used by the PsrLoggerAdapter should not be used by apps */ $this->registerService(\OC\Log::class, function (Server $c) { $logType = $c->get(AllConfig::class)->getSystemValue('log_type', 'file'); $factory = new LogFactory($c, $this->get(SystemConfig::class)); $logger = $factory->get($logType); $registry = $c->get(\OCP\Support\CrashReport\IRegistry::class); - return new Log($logger, $this->get(SystemConfig::class), null, $registry); + return new Log($logger, $this->get(SystemConfig::class), crashReporters: $registry); }); - $this->registerAlias(ILogger::class, \OC\Log::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('Logger', \OC\Log::class); // PSR-3 logger $this->registerAlias(LoggerInterface::class, PsrLoggerAdapter::class); @@ -814,36 +705,29 @@ class Server extends ServerContainer implements IServerContainer { }); $this->registerAlias(IJobList::class, \OC\BackgroundJob\JobList::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('JobList', IJobList::class); $this->registerService(Router::class, function (Server $c) { $cacheFactory = $c->get(ICacheFactory::class); - $logger = $c->get(LoggerInterface::class); if ($cacheFactory->isLocalCacheAvailable()) { - $router = new \OC\Route\CachingRouter($cacheFactory->createLocal('route'), $logger); + $router = $c->resolve(CachingRouter::class); } else { - $router = new \OC\Route\Router($logger); + $router = $c->resolve(Router::class); } return $router; }); $this->registerAlias(IRouter::class, Router::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('Router', IRouter::class); - - $this->registerAlias(ISearch::class, Search::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('Search', ISearch::class); $this->registerService(\OC\Security\RateLimiting\Backend\IBackend::class, function ($c) { - $cacheFactory = $c->get(ICacheFactory::class); - if ($cacheFactory->isAvailable()) { + $config = $c->get(\OCP\IConfig::class); + if (ltrim($config->getSystemValueString('memcache.distributed', ''), '\\') === \OC\Memcache\Redis::class) { $backend = new \OC\Security\RateLimiting\Backend\MemoryCacheBackend( + $c->get(AllConfig::class), $this->get(ICacheFactory::class), new \OC\AppFramework\Utility\TimeFactory() ); } else { $backend = new \OC\Security\RateLimiting\Backend\DatabaseBackend( + $c->get(AllConfig::class), $c->get(IDBConnection::class), new \OC\AppFramework\Utility\TimeFactory() ); @@ -853,37 +737,26 @@ class Server extends ServerContainer implements IServerContainer { }); $this->registerAlias(\OCP\Security\ISecureRandom::class, SecureRandom::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('SecureRandom', \OCP\Security\ISecureRandom::class); $this->registerAlias(\OCP\Security\IRemoteHostValidator::class, \OC\Security\RemoteHostValidator::class); $this->registerAlias(IVerificationToken::class, VerificationToken::class); $this->registerAlias(ICrypto::class, Crypto::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('Crypto', ICrypto::class); $this->registerAlias(IHasher::class, Hasher::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('Hasher', IHasher::class); $this->registerAlias(ICredentialsManager::class, CredentialsManager::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('CredentialsManager', ICredentialsManager::class); $this->registerAlias(IDBConnection::class, ConnectionAdapter::class); $this->registerService(Connection::class, function (Server $c) { $systemConfig = $c->get(SystemConfig::class); - $factory = new \OC\DB\ConnectionFactory($systemConfig); + $factory = new \OC\DB\ConnectionFactory($systemConfig, $c->get(ICacheFactory::class)); $type = $systemConfig->getValue('dbtype', 'sqlite'); if (!$factory->isValidType($type)) { throw new \OC\DatabaseException('Invalid database type'); } - $connectionParams = $factory->createConnectionParams(); - $connection = $factory->getConnection($type, $connectionParams); + $connection = $factory->getConnection($type, []); return $connection; }); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('DatabaseConnection', IDBConnection::class); $this->registerAlias(ICertificateManager::class, CertificateManager::class); $this->registerAlias(IClientService::class, ClientService::class); @@ -896,8 +769,6 @@ class Server extends ServerContainer implements IServerContainer { $this->registerService(IEventLogger::class, function (ContainerInterface $c) { return new EventLogger($c->get(SystemConfig::class), $c->get(LoggerInterface::class), $c->get(Log::class)); }); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('EventLogger', IEventLogger::class); $this->registerService(IQueryLogger::class, function (ContainerInterface $c) { $queryLogger = new QueryLogger(); @@ -907,32 +778,9 @@ class Server extends ServerContainer implements IServerContainer { } return $queryLogger; }); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('QueryLogger', IQueryLogger::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('TempManager', TempManager::class); $this->registerAlias(ITempManager::class, TempManager::class); - - $this->registerService(AppManager::class, function (ContainerInterface $c) { - // TODO: use auto-wiring - return new \OC\App\AppManager( - $c->get(IUserSession::class), - $c->get(\OCP\IConfig::class), - $c->get(\OC\AppConfig::class), - $c->get(IGroupManager::class), - $c->get(ICacheFactory::class), - $c->get(SymfonyAdapter::class), - $c->get(LoggerInterface::class) - ); - }); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('AppManager', AppManager::class); - $this->registerAlias(IAppManager::class, AppManager::class); - $this->registerAlias(IDateTimeZone::class, DateTimeZone::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('DateTimeZone', IDateTimeZone::class); $this->registerService(IDateTimeFormatter::class, function (Server $c) { $language = $c->get(\OCP\IConfig::class)->getUserValue($c->get(ISession::class)->get('user_id'), 'core', 'lang', null); @@ -942,50 +790,40 @@ class Server extends ServerContainer implements IServerContainer { $c->getL10N('lib', $language) ); }); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('DateTimeFormatter', IDateTimeFormatter::class); $this->registerService(IUserMountCache::class, function (ContainerInterface $c) { - $mountCache = new UserMountCache( - $c->get(IDBConnection::class), - $c->get(IUserManager::class), - $c->get(LoggerInterface::class) - ); + $mountCache = $c->get(UserMountCache::class); $listener = new UserMountCacheListener($mountCache); $listener->listen($c->get(IUserManager::class)); return $mountCache; }); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('UserMountCache', IUserMountCache::class); $this->registerService(IMountProviderCollection::class, function (ContainerInterface $c) { - $loader = \OC\Files\Filesystem::getLoader(); + $loader = $c->get(IStorageFactory::class); $mountCache = $c->get(IUserMountCache::class); - $manager = new \OC\Files\Config\MountProviderCollection($loader, $mountCache); + $eventLogger = $c->get(IEventLogger::class); + $manager = new MountProviderCollection($loader, $mountCache, $eventLogger); // builtin providers $config = $c->get(\OCP\IConfig::class); $logger = $c->get(LoggerInterface::class); + $objectStoreConfig = $c->get(PrimaryObjectStoreConfig::class); $manager->registerProvider(new CacheMountProvider($config)); $manager->registerHomeProvider(new LocalHomeMountProvider()); - $manager->registerHomeProvider(new ObjectHomeMountProvider($config)); - $manager->registerRootProvider(new RootMountProvider($config, $c->get(LoggerInterface::class))); + $manager->registerHomeProvider(new ObjectHomeMountProvider($objectStoreConfig)); + $manager->registerRootProvider(new RootMountProvider($objectStoreConfig, $config)); $manager->registerRootProvider(new ObjectStorePreviewCacheMountProvider($logger, $config)); return $manager; }); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('MountConfigManager', IMountProviderCollection::class); - /** @deprecated 20.0.0 */ - $this->registerDeprecatedAlias('IniWrapper', IniGetWrapper::class); $this->registerService(IBus::class, function (ContainerInterface $c) { - $busClass = $c->get(\OCP\IConfig::class)->getSystemValue('commandbus'); + $busClass = $c->get(\OCP\IConfig::class)->getSystemValueString('commandbus'); if ($busClass) { [$app, $class] = explode('::', $busClass, 2); - if ($c->get(IAppManager::class)->isInstalled($app)) { - \OC_App::loadApp($app); + if ($c->get(IAppManager::class)->isEnabledForUser($app)) { + $c->get(IAppManager::class)->loadApp($app); return $c->get($class); } else { throw new ServiceUnavailableException("The app providing the command bus ($app) is not enabled"); @@ -996,34 +834,46 @@ class Server extends ServerContainer implements IServerContainer { } }); $this->registerDeprecatedAlias('AsyncCommandBus', IBus::class); - /** @deprecated 20.0.0 */ - $this->registerDeprecatedAlias('TrustedDomainHelper', TrustedDomainHelper::class); $this->registerAlias(ITrustedDomainHelper::class, TrustedDomainHelper::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('Throttler', Throttler::class); $this->registerAlias(IThrottler::class, Throttler::class); - $this->registerService('IntegrityCodeChecker', function (ContainerInterface $c) { - // IConfig and IAppManager requires a working database. This code - // might however be called when ownCloud is not yet setup. + + $this->registerService(\OC\Security\Bruteforce\Backend\IBackend::class, function ($c) { + $config = $c->get(\OCP\IConfig::class); + if (!$config->getSystemValueBool('auth.bruteforce.protection.force.database', false) + && ltrim($config->getSystemValueString('memcache.distributed', ''), '\\') === \OC\Memcache\Redis::class) { + $backend = $c->get(\OC\Security\Bruteforce\Backend\MemoryCacheBackend::class); + } else { + $backend = $c->get(\OC\Security\Bruteforce\Backend\DatabaseBackend::class); + } + + return $backend; + }); + + $this->registerDeprecatedAlias('IntegrityCodeChecker', Checker::class); + $this->registerService(Checker::class, function (ContainerInterface $c) { + // IConfig requires a working database. This code + // might however be called when Nextcloud is not yet setup. if (\OC::$server->get(SystemConfig::class)->getValue('installed', false)) { $config = $c->get(\OCP\IConfig::class); - $appManager = $c->get(IAppManager::class); + $appConfig = $c->get(\OCP\IAppConfig::class); } else { $config = null; - $appManager = null; + $appConfig = null; } return new Checker( - new EnvironmentHelper(), + $c->get(ServerVersion::class), + $c->get(EnvironmentHelper::class), new FileAccessHelper(), new AppLocator(), $config, + $appConfig, $c->get(ICacheFactory::class), - $appManager, + $c->get(IAppManager::class), $c->get(IMimeTypeDetector::class) ); }); - $this->registerService(\OCP\IRequest::class, function (ContainerInterface $c) { + $this->registerService(Request::class, function (ContainerInterface $c) { if (isset($this['urlParams'])) { $urlParams = $this['urlParams']; } else { @@ -1057,8 +907,7 @@ class Server extends ServerContainer implements IServerContainer { $stream ); }); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('Request', \OCP\IRequest::class); + $this->registerAlias(\OCP\IRequest::class, Request::class); $this->registerService(IRequestId::class, function (ContainerInterface $c): IRequestId { return new RequestId( @@ -1078,11 +927,9 @@ class Server extends ServerContainer implements IServerContainer { $c->get(IFactory::class) ); }); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('Mailer', IMailer::class); - /** @deprecated 21.0.0 */ - $this->registerDeprecatedAlias('LDAPProvider', ILDAPProvider::class); + /** @since 30.0.0 */ + $this->registerAlias(\OCP\Mail\Provider\IManager::class, \OC\Mail\Provider\Manager::class); $this->registerService(ILDAPProviderFactory::class, function (ContainerInterface $c) { $config = $c->get(\OCP\IConfig::class); @@ -1100,13 +947,14 @@ class Server extends ServerContainer implements IServerContainer { $this->registerService(ILockingProvider::class, function (ContainerInterface $c) { $ini = $c->get(IniGetWrapper::class); $config = $c->get(\OCP\IConfig::class); - $ttl = $config->getSystemValue('filelocking.ttl', max(3600, $ini->getNumeric('max_execution_time'))); - if ($config->getSystemValue('filelocking.enabled', true) or (defined('PHPUNIT_RUN') && PHPUNIT_RUN)) { + $ttl = $config->getSystemValueInt('filelocking.ttl', max(3600, $ini->getNumeric('max_execution_time'))); + if ($config->getSystemValueBool('filelocking.enabled', true) or (defined('PHPUNIT_RUN') && PHPUNIT_RUN)) { /** @var \OC\Memcache\Factory $memcacheFactory */ $memcacheFactory = $c->get(ICacheFactory::class); $memcache = $memcacheFactory->createLocking('lock'); if (!($memcache instanceof \OC\Memcache\NullCache)) { - return new MemcacheLockingProvider($memcache, $ttl); + $timeFactory = $c->get(ITimeFactory::class); + return new MemcacheLockingProvider($memcache, $timeFactory, $ttl); } return new DBLockingProvider( $c->get(IDBConnection::class), @@ -1117,8 +965,6 @@ class Server extends ServerContainer implements IServerContainer { } return new NoopLockingProvider(); }); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('LockingProvider', ILockingProvider::class); $this->registerService(ILockManager::class, function (Server $c): LockManager { return new LockManager(); @@ -1130,8 +976,6 @@ class Server extends ServerContainer implements IServerContainer { return $c->get(\OC\Files\Mount\Manager::class)->getSetupManager(); }); $this->registerAlias(IMountManager::class, \OC\Files\Mount\Manager::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('MountManager', IMountManager::class); $this->registerService(IMimeTypeDetector::class, function (ContainerInterface $c) { return new \OC\Files\Type\Detection( @@ -1141,18 +985,12 @@ class Server extends ServerContainer implements IServerContainer { \OC::$SERVERROOT . '/resources/config/' ); }); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('MimeTypeDetector', IMimeTypeDetector::class); $this->registerAlias(IMimeTypeLoader::class, Loader::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('MimeTypeLoader', IMimeTypeLoader::class); $this->registerService(BundleFetcher::class, function () { return new BundleFetcher($this->getL10N('lib')); }); $this->registerAlias(\OCP\Notification\IManager::class, Manager::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('NotificationManager', \OCP\Notification\IManager::class); $this->registerService(CapabilitiesManager::class, function (ContainerInterface $c) { $manager = new CapabilitiesManager($c->get(LoggerInterface::class)); @@ -1162,13 +1000,8 @@ class Server extends ServerContainer implements IServerContainer { $manager->registerCapability(function () use ($c) { return $c->get(\OC\Security\Bruteforce\Capabilities::class); }); - $manager->registerCapability(function () use ($c) { - return $c->get(MetadataCapabilities::class); - }); return $manager; }); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('CapabilitiesManager', CapabilitiesManager::class); $this->registerService(ICommentsManager::class, function (Server $c) { $config = $c->get(\OCP\IConfig::class); @@ -1182,50 +1015,52 @@ class Server extends ServerContainer implements IServerContainer { $userDisplayName = $manager->getDisplayName($id); if ($userDisplayName === null) { $l = $c->get(IFactory::class)->get('core'); - return $l->t('Unknown user'); + return $l->t('Unknown account'); } return $userDisplayName; }); return $manager; }); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('CommentsManager', ICommentsManager::class); $this->registerAlias(\OC_Defaults::class, 'ThemingDefaults'); $this->registerService('ThemingDefaults', function (Server $c) { - /* - * Dark magic for autoloader. - * If we do a class_exists it will try to load the class which will - * make composer cache the result. Resulting in errors when enabling - * the theming app. - */ - $prefixes = \OC::$composerAutoloader->getPrefixesPsr4(); - if (isset($prefixes['OCA\\Theming\\'])) { - $classExists = true; - } else { + try { + $classExists = class_exists('OCA\Theming\ThemingDefaults'); + } catch (\OCP\AutoloadNotAllowedException $e) { + // App disabled or in maintenance mode $classExists = false; } - if ($classExists && $c->get(\OCP\IConfig::class)->getSystemValue('installed', false) && $c->get(IAppManager::class)->isInstalled('theming') && $c->getTrustedDomainHelper()->isTrustedDomain($c->getRequest()->getInsecureServerHost())) { + if ($classExists && $c->get(\OCP\IConfig::class)->getSystemValueBool('installed', false) && $c->get(IAppManager::class)->isEnabledForAnyone('theming') && $c->get(TrustedDomainHelper::class)->isTrustedDomain($c->getRequest()->getInsecureServerHost())) { + $backgroundService = new BackgroundService( + $c->get(IRootFolder::class), + $c->getAppDataDir('theming'), + $c->get(IAppConfig::class), + $c->get(\OCP\IConfig::class), + $c->get(ISession::class)->get('user_id'), + ); $imageManager = new ImageManager( $c->get(\OCP\IConfig::class), $c->getAppDataDir('theming'), $c->get(IURLGenerator::class), - $this->get(ICacheFactory::class), - $this->get(ILogger::class), - $this->get(ITempManager::class) + $c->get(ICacheFactory::class), + $c->get(LoggerInterface::class), + $c->get(ITempManager::class), + $backgroundService, ); return new ThemingDefaults( $c->get(\OCP\IConfig::class), + $c->get(\OCP\IAppConfig::class), $c->getL10N('theming'), $c->get(IUserSession::class), $c->get(IURLGenerator::class), $c->get(ICacheFactory::class), - new Util($c->get(\OCP\IConfig::class), $this->get(IAppManager::class), $c->getAppDataDir('theming'), $imageManager), + new Util($c->get(ServerVersion::class), $c->get(\OCP\IConfig::class), $this->get(IAppManager::class), $c->getAppDataDir('theming'), $imageManager), $imageManager, $c->get(IAppManager::class), - $c->get(INavigationManager::class) + $c->get(INavigationManager::class), + $backgroundService, ); } return new \OC_Defaults(); @@ -1240,9 +1075,6 @@ class Server extends ServerContainer implements IServerContainer { ); }); $this->registerAlias(\OCP\EventDispatcher\IEventDispatcher::class, \OC\EventDispatcher\EventDispatcher::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('EventDispatcher', \OC\EventDispatcher\SymfonyAdapter::class); - $this->registerAlias(EventDispatcherInterface::class, \OC\EventDispatcher\SymfonyAdapter::class); $this->registerService('CryptoWrapper', function (ContainerInterface $c) { // FIXME: Instantiated here due to cyclic dependency @@ -1263,52 +1095,24 @@ class Server extends ServerContainer implements IServerContainer { ); return new CryptoWrapper( - $c->get(\OCP\IConfig::class), $c->get(ICrypto::class), $c->get(ISecureRandom::class), $request ); }); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('CsrfTokenManager', CsrfTokenManager::class); $this->registerService(SessionStorage::class, function (ContainerInterface $c) { return new SessionStorage($c->get(ISession::class)); }); $this->registerAlias(\OCP\Security\IContentSecurityPolicyManager::class, ContentSecurityPolicyManager::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('ContentSecurityPolicyManager', ContentSecurityPolicyManager::class); - $this->registerService(\OCP\Share\IManager::class, function (IServerContainer $c) { + $this->registerService(IProviderFactory::class, function (ContainerInterface $c) { $config = $c->get(\OCP\IConfig::class); $factoryClass = $config->getSystemValue('sharing.managerFactory', ProviderFactory::class); /** @var \OCP\Share\IProviderFactory $factory */ - $factory = new $factoryClass($this); - - $manager = new \OC\Share20\Manager( - $c->get(LoggerInterface::class), - $c->get(\OCP\IConfig::class), - $c->get(ISecureRandom::class), - $c->get(IHasher::class), - $c->get(IMountManager::class), - $c->get(IGroupManager::class), - $c->getL10N('lib'), - $c->get(IFactory::class), - $factory, - $c->get(IUserManager::class), - $c->get(IRootFolder::class), - $c->get(SymfonyAdapter::class), - $c->get(IMailer::class), - $c->get(IURLGenerator::class), - $c->get('ThemingDefaults'), - $c->get(IEventDispatcher::class), - $c->get(IUserSession::class), - $c->get(KnownUserService::class) - ); - - return $manager; + return $c->get($factoryClass); }); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('ShareManager', \OCP\Share\IManager::class); + + $this->registerAlias(\OCP\Share\IManager::class, \OC\Share20\Manager::class); $this->registerService(\OCP\Collaboration\Collaborators\ISearch::class, function (Server $c) { $instance = new Collaboration\Collaborators\Search($c); @@ -1322,8 +1126,6 @@ class Server extends ServerContainer implements IServerContainer { return $instance; }); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('CollaboratorSearch', \OCP\Collaboration\Collaborators\ISearch::class); $this->registerAlias(\OCP\Collaboration\Collaborators\ISearchResult::class, \OC\Collaboration\Collaborators\SearchResult::class); $this->registerAlias(\OCP\Collaboration\AutoComplete\IManager::class, \OC\Collaboration\AutoComplete\Manager::class); @@ -1332,6 +1134,7 @@ class Server extends ServerContainer implements IServerContainer { $this->registerAlias(\OCP\Collaboration\Resources\IManager::class, \OC\Collaboration\Resources\Manager::class); $this->registerAlias(IReferenceManager::class, ReferenceManager::class); + $this->registerAlias(ITeamManager::class, TeamManager::class); $this->registerDeprecatedAlias('SettingsManager', \OC\Settings\Manager::class); $this->registerAlias(\OCP\Settings\IManager::class, \OC\Settings\Manager::class); @@ -1354,47 +1157,34 @@ class Server extends ServerContainer implements IServerContainer { $c->get(IClientService::class) ); }); + $this->registerAlias(IOCMDiscoveryService::class, OCMDiscoveryService::class); $this->registerService(ICloudIdManager::class, function (ContainerInterface $c) { return new CloudIdManager( + $c->get(ICacheFactory::class), + $c->get(IEventDispatcher::class), $c->get(\OCP\Contacts\IManager::class), $c->get(IURLGenerator::class), $c->get(IUserManager::class), - $c->get(ICacheFactory::class), - $c->get(IEventDispatcher::class), ); }); $this->registerAlias(\OCP\GlobalScale\IConfig::class, \OC\GlobalScale\Config::class); - - $this->registerService(ICloudFederationProviderManager::class, function (ContainerInterface $c) { - return new CloudFederationProviderManager( - $c->get(IAppManager::class), - $c->get(IClientService::class), - $c->get(ICloudIdManager::class), - $c->get(LoggerInterface::class) - ); - }); - + $this->registerAlias(ICloudFederationProviderManager::class, CloudFederationProviderManager::class); $this->registerService(ICloudFederationFactory::class, function (Server $c) { return new CloudFederationFactory(); }); $this->registerAlias(\OCP\AppFramework\Utility\IControllerMethodReflector::class, \OC\AppFramework\Utility\ControllerMethodReflector::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('ControllerMethodReflector', \OCP\AppFramework\Utility\IControllerMethodReflector::class); $this->registerAlias(\OCP\AppFramework\Utility\ITimeFactory::class, \OC\AppFramework\Utility\TimeFactory::class); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('TimeFactory', \OCP\AppFramework\Utility\ITimeFactory::class); + $this->registerAlias(\Psr\Clock\ClockInterface::class, \OCP\AppFramework\Utility\ITimeFactory::class); $this->registerService(Defaults::class, function (Server $c) { return new Defaults( - $c->getThemingDefaults() + $c->get('ThemingDefaults') ); }); - /** @deprecated 19.0.0 */ - $this->registerDeprecatedAlias('Defaults', \OCP\Defaults::class); $this->registerService(\OCP\ISession::class, function (ContainerInterface $c) { return $c->get(\OCP\IUserSession::class)->getSession(); @@ -1434,6 +1224,7 @@ class Server extends ServerContainer implements IServerContainer { $this->registerAlias(\OCP\Dashboard\IManager::class, \OC\Dashboard\Manager::class); $this->registerAlias(IFullTextSearchManager::class, FullTextSearchManager::class); + $this->registerAlias(IFilesMetadataManager::class, FilesMetadataManager::class); $this->registerAlias(ISubAdmin::class, SubAdmin::class); @@ -1445,14 +1236,51 @@ class Server extends ServerContainer implements IServerContainer { $this->registerAlias(IBroker::class, Broker::class); - $this->registerAlias(IMetadataManager::class, MetadataManager::class); - $this->registerAlias(\OCP\Files\AppData\IAppDataFactory::class, \OC\Files\AppData\Factory::class); + $this->registerAlias(\OCP\Files\IFilenameValidator::class, \OC\Files\FilenameValidator::class); + $this->registerAlias(IBinaryFinder::class, BinaryFinder::class); $this->registerAlias(\OCP\Share\IPublicShareTemplateFactory::class, \OC\Share20\PublicShareTemplateFactory::class); + $this->registerAlias(ITranslationManager::class, TranslationManager::class); + + $this->registerAlias(IConversionManager::class, ConversionManager::class); + + $this->registerAlias(ISpeechToTextManager::class, SpeechToTextManager::class); + + $this->registerAlias(IEventSourceFactory::class, EventSourceFactory::class); + + $this->registerAlias(\OCP\TextProcessing\IManager::class, \OC\TextProcessing\Manager::class); + + $this->registerAlias(\OCP\TextToImage\IManager::class, \OC\TextToImage\Manager::class); + + $this->registerAlias(ILimiter::class, Limiter::class); + + $this->registerAlias(IPhoneNumberUtil::class, PhoneNumberUtil::class); + + $this->registerAlias(ICapabilityAwareOCMProvider::class, OCMProvider::class); + $this->registerDeprecatedAlias(IOCMProvider::class, OCMProvider::class); + + $this->registerAlias(ISetupCheckManager::class, SetupCheckManager::class); + + $this->registerAlias(IProfileManager::class, ProfileManager::class); + + $this->registerAlias(IAvailabilityCoordinator::class, AvailabilityCoordinator::class); + + $this->registerAlias(IDeclarativeManager::class, DeclarativeManager::class); + + $this->registerAlias(\OCP\TaskProcessing\IManager::class, \OC\TaskProcessing\Manager::class); + + $this->registerAlias(IRemoteAddress::class, RemoteAddress::class); + + $this->registerAlias(\OCP\Security\Ip\IFactory::class, \OC\Security\Ip\Factory::class); + + $this->registerAlias(IRichTextFormatter::class, \OC\RichObjectStrings\RichTextFormatter::class); + + $this->registerAlias(ISignatureManager::class, SignatureManager::class); + $this->connectDispatcher(); } @@ -1462,30 +1290,6 @@ class Server extends ServerContainer implements IServerContainer { $hookConnector->viewToNode(); } - /** - * @return \OCP\Calendar\IManager - * @deprecated 20.0.0 - */ - public function getCalendarManager() { - return $this->get(\OC\Calendar\Manager::class); - } - - /** - * @return \OCP\Calendar\Resource\IManager - * @deprecated 20.0.0 - */ - public function getCalendarResourceBackendManager() { - return $this->get(\OC\Calendar\Resource\Manager::class); - } - - /** - * @return \OCP\Calendar\Room\IManager - * @deprecated 20.0.0 - */ - public function getCalendarRoomBackendManager() { - return $this->get(\OC\Calendar\Room\Manager::class); - } - private function connectDispatcher(): void { /** @var IEventDispatcher $eventDispatcher */ $eventDispatcher = $this->get(IEventDispatcher::class); @@ -1493,6 +1297,9 @@ class Server extends ServerContainer implements IServerContainer { $eventDispatcher->addServiceListener(PostLoginEvent::class, UserLoggedInListener::class); $eventDispatcher->addServiceListener(UserChangedEvent::class, UserChangedListener::class); $eventDispatcher->addServiceListener(BeforeUserDeletedEvent::class, BeforeUserDeletedListener::class); + + FilesMetadataManager::loadListeners($eventDispatcher); + GenerateBlurhashMetadata::loadListeners($eventDispatcher); } /** @@ -1520,14 +1327,6 @@ class Server extends ServerContainer implements IServerContainer { } /** - * @return \OCP\Encryption\Keys\IStorage - * @deprecated 20.0.0 - */ - public function getEncryptionKeyStorage() { - return $this->get(IStorage::class); - } - - /** * The current request object holding all information about the request * currently being processed is returned from this method. * In case the current execution was not initiated by a web request null is returned @@ -1540,61 +1339,6 @@ class Server extends ServerContainer implements IServerContainer { } /** - * Returns the preview manager which can create preview images for a given file - * - * @return IPreview - * @deprecated 20.0.0 - */ - public function getPreviewManager() { - return $this->get(IPreview::class); - } - - /** - * Returns the tag manager which can get and set tags for different object types - * - * @see \OCP\ITagManager::load() - * @return ITagManager - * @deprecated 20.0.0 - */ - public function getTagManager() { - return $this->get(ITagManager::class); - } - - /** - * Returns the system-tag manager - * - * @return ISystemTagManager - * - * @since 9.0.0 - * @deprecated 20.0.0 - */ - public function getSystemTagManager() { - return $this->get(ISystemTagManager::class); - } - - /** - * Returns the system-tag object mapper - * - * @return ISystemTagObjectMapper - * - * @since 9.0.0 - * @deprecated 20.0.0 - */ - public function getSystemTagObjectMapper() { - return $this->get(ISystemTagObjectMapper::class); - } - - /** - * Returns the avatar manager, used for avatar functionality - * - * @return IAvatarManager - * @deprecated 20.0.0 - */ - public function getAvatarManager() { - return $this->get(IAvatarManager::class); - } - - /** * Returns the root folder of ownCloud's data directory * * @return IRootFolder @@ -1669,6 +1413,7 @@ class Server extends ServerContainer implements IServerContainer { /** * @param \OCP\ISession $session + * @return void */ public function setSession(\OCP\ISession $session) { $this->get(SessionStorage::class)->setSession($session); @@ -1677,22 +1422,6 @@ class Server extends ServerContainer implements IServerContainer { } /** - * @return \OC\Authentication\TwoFactorAuth\Manager - * @deprecated 20.0.0 - */ - public function getTwoFactorAuthManager() { - return $this->get(\OC\Authentication\TwoFactorAuth\Manager::class); - } - - /** - * @return \OC\NavigationManager - * @deprecated 20.0.0 - */ - public function getNavigationManager() { - return $this->get(INavigationManager::class); - } - - /** * @return \OCP\IConfig * @deprecated 20.0.0 */ @@ -1709,16 +1438,6 @@ class Server extends ServerContainer implements IServerContainer { } /** - * Returns the app config manager - * - * @return IAppConfig - * @deprecated 20.0.0 - */ - public function getAppConfig() { - return $this->get(IAppConfig::class); - } - - /** * @return IFactory * @deprecated 20.0.0 */ @@ -1732,7 +1451,7 @@ class Server extends ServerContainer implements IServerContainer { * @param string $app appid * @param string $lang * @return IL10N - * @deprecated 20.0.0 + * @deprecated 20.0.0 use DI of {@see IL10N} or {@see IFactory} instead, or {@see \OCP\Util::getL10N()} as a last resort */ public function getL10N($app, $lang = null) { return $this->get(IFactory::class)->get($app, $lang); @@ -1747,14 +1466,6 @@ class Server extends ServerContainer implements IServerContainer { } /** - * @return AppFetcher - * @deprecated 20.0.0 - */ - public function getAppFetcher() { - return $this->get(AppFetcher::class); - } - - /** * Returns an ICache instance. Since 8.1.0 it returns a fake cache. Use * getMemCacheFactory() instead. * @@ -1776,17 +1487,6 @@ class Server extends ServerContainer implements IServerContainer { } /** - * Returns an \OC\RedisFactory instance - * - * @return \OC\RedisFactory - * @deprecated 20.0.0 - */ - public function getGetRedisFactory() { - return $this->get('RedisFactory'); - } - - - /** * Returns the current session * * @return \OCP\IDBConnection @@ -1817,45 +1517,6 @@ class Server extends ServerContainer implements IServerContainer { } /** - * Returns a logger instance - * - * @return ILogger - * @deprecated 20.0.0 - */ - public function getLogger() { - return $this->get(ILogger::class); - } - - /** - * @return ILogFactory - * @throws \OCP\AppFramework\QueryException - * @deprecated 20.0.0 - */ - public function getLogFactory() { - return $this->get(ILogFactory::class); - } - - /** - * Returns a router for generating and matching urls - * - * @return IRouter - * @deprecated 20.0.0 - */ - public function getRouter() { - return $this->get(IRouter::class); - } - - /** - * Returns a search instance - * - * @return ISearch - * @deprecated 20.0.0 - */ - public function getSearch() { - return $this->get(ISearch::class); - } - - /** * Returns a SecureRandom instance * * @return \OCP\Security\ISecureRandom @@ -1886,16 +1547,6 @@ class Server extends ServerContainer implements IServerContainer { } /** - * Returns a CredentialsManager instance - * - * @return ICredentialsManager - * @deprecated 20.0.0 - */ - public function getCredentialsManager() { - return $this->get(ICredentialsManager::class); - } - - /** * Get the certificate manager * * @return \OCP\ICertificateManager @@ -1905,50 +1556,6 @@ class Server extends ServerContainer implements IServerContainer { } /** - * Returns an instance of the HTTP client service - * - * @return IClientService - * @deprecated 20.0.0 - */ - public function getHTTPClientService() { - return $this->get(IClientService::class); - } - - /** - * Create a new event source - * - * @return \OCP\IEventSource - * @deprecated 20.0.0 - */ - public function createEventSource() { - return new \OC_EventSource(); - } - - /** - * Get the active event logger - * - * The returned logger only logs data when debug mode is enabled - * - * @return IEventLogger - * @deprecated 20.0.0 - */ - public function getEventLogger() { - return $this->get(IEventLogger::class); - } - - /** - * Get the active query logger - * - * The returned logger only logs data when debug mode is enabled - * - * @return IQueryLogger - * @deprecated 20.0.0 - */ - public function getQueryLogger() { - return $this->get(IQueryLogger::class); - } - - /** * Get the manager for temporary files and folders * * @return \OCP\ITempManager @@ -1989,66 +1596,6 @@ class Server extends ServerContainer implements IServerContainer { } /** - * @return \OC\OCSClient - * @deprecated 20.0.0 - */ - public function getOcsClient() { - return $this->get('OcsClient'); - } - - /** - * @return IDateTimeZone - * @deprecated 20.0.0 - */ - public function getDateTimeZone() { - return $this->get(IDateTimeZone::class); - } - - /** - * @return IDateTimeFormatter - * @deprecated 20.0.0 - */ - public function getDateTimeFormatter() { - return $this->get(IDateTimeFormatter::class); - } - - /** - * @return IMountProviderCollection - * @deprecated 20.0.0 - */ - public function getMountProviderCollection() { - return $this->get(IMountProviderCollection::class); - } - - /** - * Get the IniWrapper - * - * @return IniGetWrapper - * @deprecated 20.0.0 - */ - public function getIniWrapper() { - return $this->get(IniGetWrapper::class); - } - - /** - * @return \OCP\Command\IBus - * @deprecated 20.0.0 - */ - public function getCommandBus() { - return $this->get(IBus::class); - } - - /** - * Get the trusted domain helper - * - * @return TrustedDomainHelper - * @deprecated 20.0.0 - */ - public function getTrustedDomainHelper() { - return $this->get(TrustedDomainHelper::class); - } - - /** * Get the locking provider * * @return ILockingProvider @@ -2060,22 +1607,6 @@ class Server extends ServerContainer implements IServerContainer { } /** - * @return IMountManager - * @deprecated 20.0.0 - **/ - public function getMountManager() { - return $this->get(IMountManager::class); - } - - /** - * @return IUserMountCache - * @deprecated 20.0.0 - */ - public function getUserMountCache() { - return $this->get(IUserMountCache::class); - } - - /** * Get the MimeTypeDetector * * @return IMimeTypeDetector @@ -2096,27 +1627,6 @@ class Server extends ServerContainer implements IServerContainer { } /** - * Get the manager of all the capabilities - * - * @return CapabilitiesManager - * @deprecated 20.0.0 - */ - public function getCapabilitiesManager() { - return $this->get(CapabilitiesManager::class); - } - - /** - * Get the EventDispatcher - * - * @return EventDispatcherInterface - * @since 8.2.0 - * @deprecated 18.0.0 use \OCP\EventDispatcher\IEventDispatcher - */ - public function getEventDispatcher() { - return $this->get(\OC\EventDispatcher\SymfonyAdapter::class); - } - - /** * Get the Notification Manager * * @return \OCP\Notification\IManager @@ -2128,14 +1638,6 @@ class Server extends ServerContainer implements IServerContainer { } /** - * @return ICommentsManager - * @deprecated 20.0.0 - */ - public function getCommentsManager() { - return $this->get(ICommentsManager::class); - } - - /** * @return \OCA\Theming\ThemingDefaults * @deprecated 20.0.0 */ @@ -2152,14 +1654,6 @@ class Server extends ServerContainer implements IServerContainer { } /** - * @return \OC\Session\CryptoWrapper - * @deprecated 20.0.0 - */ - public function getSessionCryptoWrapper() { - return $this->get('CryptoWrapper'); - } - - /** * @return CsrfTokenManager * @deprecated 20.0.0 */ @@ -2168,22 +1662,6 @@ class Server extends ServerContainer implements IServerContainer { } /** - * @return Throttler - * @deprecated 20.0.0 - */ - public function getBruteForceThrottler() { - return $this->get(Throttler::class); - } - - /** - * @return IContentSecurityPolicyManager - * @deprecated 20.0.0 - */ - public function getContentSecurityPolicyManager() { - return $this->get(ContentSecurityPolicyManager::class); - } - - /** * @return ContentSecurityPolicyNonceManager * @deprecated 20.0.0 */ @@ -2192,80 +1670,6 @@ class Server extends ServerContainer implements IServerContainer { } /** - * Not a public API as of 8.2, wait for 9.0 - * - * @return \OCA\Files_External\Service\BackendService - * @deprecated 20.0.0 - */ - public function getStoragesBackendService() { - return $this->get(BackendService::class); - } - - /** - * Not a public API as of 8.2, wait for 9.0 - * - * @return \OCA\Files_External\Service\GlobalStoragesService - * @deprecated 20.0.0 - */ - public function getGlobalStoragesService() { - return $this->get(GlobalStoragesService::class); - } - - /** - * Not a public API as of 8.2, wait for 9.0 - * - * @return \OCA\Files_External\Service\UserGlobalStoragesService - * @deprecated 20.0.0 - */ - public function getUserGlobalStoragesService() { - return $this->get(UserGlobalStoragesService::class); - } - - /** - * Not a public API as of 8.2, wait for 9.0 - * - * @return \OCA\Files_External\Service\UserStoragesService - * @deprecated 20.0.0 - */ - public function getUserStoragesService() { - return $this->get(UserStoragesService::class); - } - - /** - * @return \OCP\Share\IManager - * @deprecated 20.0.0 - */ - public function getShareManager() { - return $this->get(\OCP\Share\IManager::class); - } - - /** - * @return \OCP\Collaboration\Collaborators\ISearch - * @deprecated 20.0.0 - */ - public function getCollaboratorSearch() { - return $this->get(\OCP\Collaboration\Collaborators\ISearch::class); - } - - /** - * @return \OCP\Collaboration\AutoComplete\IManager - * @deprecated 20.0.0 - */ - public function getAutoCompleteManager() { - return $this->get(IManager::class); - } - - /** - * Returns the LDAP Provider - * - * @return \OCP\LDAP\ILDAPProvider - * @deprecated 20.0.0 - */ - public function getLDAPProvider() { - return $this->get('LDAPProvider'); - } - - /** * @return \OCP\Settings\IManager * @deprecated 20.0.0 */ @@ -2278,97 +1682,15 @@ class Server extends ServerContainer implements IServerContainer { * @deprecated 20.0.0 Use get(\OCP\Files\AppData\IAppDataFactory::class)->get($app) instead */ public function getAppDataDir($app) { - /** @var \OC\Files\AppData\Factory $factory */ $factory = $this->get(\OC\Files\AppData\Factory::class); return $factory->get($app); } /** - * @return \OCP\Lockdown\ILockdownManager - * @deprecated 20.0.0 - */ - public function getLockdownManager() { - return $this->get('LockdownManager'); - } - - /** * @return \OCP\Federation\ICloudIdManager * @deprecated 20.0.0 */ public function getCloudIdManager() { return $this->get(ICloudIdManager::class); } - - /** - * @return \OCP\GlobalScale\IConfig - * @deprecated 20.0.0 - */ - public function getGlobalScaleConfig() { - return $this->get(IConfig::class); - } - - /** - * @return \OCP\Federation\ICloudFederationProviderManager - * @deprecated 20.0.0 - */ - public function getCloudFederationProviderManager() { - return $this->get(ICloudFederationProviderManager::class); - } - - /** - * @return \OCP\Remote\Api\IApiFactory - * @deprecated 20.0.0 - */ - public function getRemoteApiFactory() { - return $this->get(IApiFactory::class); - } - - /** - * @return \OCP\Federation\ICloudFederationFactory - * @deprecated 20.0.0 - */ - public function getCloudFederationFactory() { - return $this->get(ICloudFederationFactory::class); - } - - /** - * @return \OCP\Remote\IInstanceFactory - * @deprecated 20.0.0 - */ - public function getRemoteInstanceFactory() { - return $this->get(IInstanceFactory::class); - } - - /** - * @return IStorageFactory - * @deprecated 20.0.0 - */ - public function getStorageFactory() { - return $this->get(IStorageFactory::class); - } - - /** - * Get the Preview GeneratorHelper - * - * @return GeneratorHelper - * @since 17.0.0 - * @deprecated 20.0.0 - */ - public function getGeneratorHelper() { - return $this->get(\OC\Preview\GeneratorHelper::class); - } - - private function registerDeprecatedAlias(string $alias, string $target) { - $this->registerService($alias, function (ContainerInterface $container) use ($target, $alias) { - try { - /** @var LoggerInterface $logger */ - $logger = $container->get(LoggerInterface::class); - $logger->debug('The requested alias "' . $alias . '" is deprecated. Please request "' . $target . '" directly. This alias will be removed in a future Nextcloud version.', ['app' => 'serverDI']); - } catch (ContainerExceptionInterface $e) { - // Could not get logger. Continue - } - - return $container->get($target); - }, false); - } } |