Signed-off-by: Robin Appelman <robin@icewind.nl>tags/v25.0.0beta2
@@ -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); | |||
} | |||
/** |
@@ -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 OCA\Theming\ImageManager; | |||
use OCA\Theming\ThemingDefaults; | |||
use OCA\Theming\Util; | |||
@@ -472,6 +473,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), |
@@ -28,12 +28,10 @@ use OCP\IUserManager; | |||
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; | |||
} | |||
@@ -52,7 +50,7 @@ class LazyUser implements IUser { | |||
} | |||
public function getDisplayName() { | |||
return $this->displayNameCache->getDisplayName($this->uid); | |||
return $this->userManager->getDisplayName($this->uid); | |||
} | |||
public function setDisplayName($displayName) { |
@@ -93,6 +93,8 @@ class Manager extends PublicEmitter implements IUserManager { | |||
/** @var IEventDispatcher */ | |||
private $eventDispatcher; | |||
private DisplayNameCache $displayNameCache; | |||
public function __construct(IConfig $config, | |||
EventDispatcherInterface $oldDispatcher, | |||
ICacheFactory $cacheFactory, | |||
@@ -106,6 +108,7 @@ class Manager extends PublicEmitter implements IUserManager { | |||
unset($cachedUsers[$user->getUID()]); | |||
}); | |||
$this->eventDispatcher = $eventDispatcher; | |||
$this->displayNameCache = new DisplayNameCache($cacheFactory, $this); | |||
} | |||
/** | |||
@@ -183,6 +186,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 | |||
* | |||
@@ -740,4 +747,8 @@ class Manager extends PublicEmitter implements IUserManager { | |||
return !file_exists(rtrim($dataDirectory, '/') . '/' . $uid); | |||
} | |||
public function getDisplayNameCache(): DisplayNameCache { | |||
return $this->displayNameCache; | |||
} | |||
} |
@@ -84,6 +84,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 | |||
* |
@@ -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); | |||
} | |||