mirror of
https://github.com/nextcloud/server.git
synced 2026-03-31 06:36:18 -04:00
Merge pull request #32461 from nextcloud/display-name-cache-public
expose display name cache trough a public interface
This commit is contained in:
commit
604c175284
6 changed files with 30 additions and 11 deletions
|
|
@ -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 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),
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue