diff options
author | Carl Schwan <carl@carlschwan.eu> | 2022-08-16 11:48:50 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-16 11:48:50 +0200 |
commit | 604c1752845df068a7dd5d168abfbfc04065ac3f (patch) | |
tree | 1e820dfbeffc80ea19a0f7b9cf718ebd7ad48411 | |
parent | 3e2ab35af5aa14ed77fba66b63b9d858a5607394 (diff) | |
parent | 51b9847fad73a1ca67dbf504358d90bd8f9e71d8 (diff) | |
download | nextcloud-server-604c1752845df068a7dd5d168abfbfc04065ac3f.tar.gz nextcloud-server-604c1752845df068a7dd5d168abfbfc04065ac3f.zip |
Merge pull request #32461 from nextcloud/display-name-cache-public
expose display name cache trough a public interface
-rw-r--r-- | lib/private/Files/View.php | 7 | ||||
-rw-r--r-- | lib/private/Server.php | 5 | ||||
-rw-r--r-- | lib/private/User/LazyUser.php | 6 | ||||
-rw-r--r-- | lib/private/User/Manager.php | 11 | ||||
-rw-r--r-- | lib/public/IUserManager.php | 11 | ||||
-rw-r--r-- | tests/lib/User/ManagerTest.php | 1 |
6 files changed, 30 insertions, 11 deletions
diff --git a/lib/private/Files/View.php b/lib/private/Files/View.php index d12869fbdaa..e5394e72ffe 100644 --- a/lib/private/Files/View.php +++ b/lib/private/Files/View.php @@ -49,9 +49,7 @@ namespace OC\Files; use Icewind\Streams\CallbackWrapper; use OC\Files\Mount\MoveableMount; use OC\Files\Storage\Storage; -use OC\User\DisplayNameCache; use OC\User\LazyUser; -use OC\User\User; use OCA\Files_Sharing\SharedMount; use OCP\Constants; use OCP\Files\Cache\ICacheEntry; @@ -103,8 +101,6 @@ class View { private LoggerInterface $logger; - private DisplayNameCache $displayNameCache; - /** * @param string $root * @throws \Exception If $root contains an invalid path @@ -121,7 +117,6 @@ class View { $this->lockingProvider = \OC::$server->getLockingProvider(); $this->lockingEnabled = !($this->lockingProvider instanceof \OC\Lock\NoopLockingProvider); $this->userManager = \OC::$server->getUserManager(); - $this->displayNameCache = \OC::$server->get(DisplayNameCache::class); $this->logger = \OC::$server->get(LoggerInterface::class); } @@ -1319,7 +1314,7 @@ class View { * @return IUser */ private function getUserObjectForOwner(string $ownerId) { - return new LazyUser($ownerId, $this->displayNameCache, $this->userManager); + return new LazyUser($ownerId, $this->userManager); } /** diff --git a/lib/private/Server.php b/lib/private/Server.php index b473f4e75c0..7223c3b8ae3 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -151,6 +151,7 @@ use OC\SystemTag\ManagerFactory as SystemTagManagerFactory; use OC\Tagging\TagMapper; use OC\Talk\Broker; use OC\Template\JSCombiner; +use OC\User\DisplayNameCache; use OC\User\Listeners\UserChangedListener; use OC\User\Listeners\UserDeletedListener; use OCA\Theming\ImageManager; @@ -474,6 +475,10 @@ class Server extends ServerContainer implements IServerContainer { $this->registerDeprecatedAlias('UserManager', \OC\User\Manager::class); $this->registerAlias(\OCP\IUserManager::class, \OC\User\Manager::class); + $this->registerService(DisplayNameCache::class, function (ContainerInterface $c) { + return $c->get(\OC\User\Manager::class)->getDisplayNameCache(); + }); + $this->registerService(\OCP\IGroupManager::class, function (ContainerInterface $c) { $groupManager = new \OC\Group\Manager( $this->get(IUserManager::class), diff --git a/lib/private/User/LazyUser.php b/lib/private/User/LazyUser.php index 8e93d6481ab..118dd3d0699 100644 --- a/lib/private/User/LazyUser.php +++ b/lib/private/User/LazyUser.php @@ -29,12 +29,10 @@ use OCP\UserInterface; class LazyUser implements IUser { private ?IUser $user = null; - private DisplayNameCache $displayNameCache; private string $uid; private IUserManager $userManager; - public function __construct(string $uid, DisplayNameCache $displayNameCache, IUserManager $userManager) { - $this->displayNameCache = $displayNameCache; + public function __construct(string $uid, IUserManager $userManager) { $this->uid = $uid; $this->userManager = $userManager; } @@ -53,7 +51,7 @@ class LazyUser implements IUser { } public function getDisplayName() { - return $this->displayNameCache->getDisplayName($this->uid); + return $this->userManager->getDisplayName($this->uid); } public function setDisplayName($displayName) { diff --git a/lib/private/User/Manager.php b/lib/private/User/Manager.php index a6f56585325..55ac663f3ec 100644 --- a/lib/private/User/Manager.php +++ b/lib/private/User/Manager.php @@ -95,6 +95,8 @@ class Manager extends PublicEmitter implements IUserManager { /** @var IEventDispatcher */ private $eventDispatcher; + private DisplayNameCache $displayNameCache; + public function __construct(IConfig $config, EventDispatcherInterface $oldDispatcher, ICacheFactory $cacheFactory, @@ -108,6 +110,7 @@ class Manager extends PublicEmitter implements IUserManager { unset($cachedUsers[$user->getUID()]); }); $this->eventDispatcher = $eventDispatcher; + $this->displayNameCache = new DisplayNameCache($cacheFactory, $this); } /** @@ -185,6 +188,10 @@ class Manager extends PublicEmitter implements IUserManager { return null; } + public function getDisplayName(string $uid): string { + return $this->displayNameCache->getDisplayName($uid); + } + /** * get or construct the user object * @@ -742,4 +749,8 @@ class Manager extends PublicEmitter implements IUserManager { return !file_exists(rtrim($dataDirectory, '/') . '/' . $uid); } + + public function getDisplayNameCache(): DisplayNameCache { + return $this->displayNameCache; + } } diff --git a/lib/public/IUserManager.php b/lib/public/IUserManager.php index 77e2fc21a22..c107b2c5025 100644 --- a/lib/public/IUserManager.php +++ b/lib/public/IUserManager.php @@ -85,6 +85,17 @@ interface IUserManager { public function get($uid); /** + * Get the display name of a user + * + * Note that this will return the uid if the user is not found instead of throwing an exception + * + * @param string $uid + * @return string + * @since 25.0.0 + */ + public function getDisplayName(string $uid): string; + + /** * check if a user exists * * @param string $uid diff --git a/tests/lib/User/ManagerTest.php b/tests/lib/User/ManagerTest.php index 2536eee8441..cef578e9555 100644 --- a/tests/lib/User/ManagerTest.php +++ b/tests/lib/User/ManagerTest.php @@ -50,7 +50,6 @@ class ManagerTest extends TestCase { $this->cache = $this->createMock(ICache::class); $this->cacheFactory->method('createDistributed') - ->with('user_backend_map') ->willReturn($this->cache); } |