Skip to content

Commit

Permalink
expose displayname cache trough a public interface
Browse files Browse the repository at this point in the history
Signed-off-by: Robin Appelman <[email protected]>
  • Loading branch information
icewind1991 committed May 17, 2022
1 parent 83f831c commit e092f91
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 8 deletions.
5 changes: 1 addition & 4 deletions lib/private/Files/View.php
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,6 @@ class View {

private LoggerInterface $logger;

private DisplayNameCache $displayNameCache;

/**
* @param string $root
* @throws \Exception If $root contains an invalid path
Expand All @@ -121,7 +119,6 @@ public function __construct($root = '') {
$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);
}

Expand Down Expand Up @@ -1319,7 +1316,7 @@ public function hasUpdated($path, $time) {
* @return IUser
*/
private function getUserObjectForOwner(string $ownerId) {
return new LazyUser($ownerId, $this->displayNameCache, $this->userManager);
return new LazyUser($ownerId, $this->userManager);
}

/**
Expand Down
5 changes: 5 additions & 0 deletions lib/private/Server.php
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@
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;
Expand Down Expand Up @@ -472,6 +473,10 @@ public function __construct($webRoot, \OC\Config $config) {
$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),
Expand Down
6 changes: 2 additions & 4 deletions lib/private/User/LazyUser.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,10 @@

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;
}
Expand All @@ -52,7 +50,7 @@ public function getUID() {
}

public function getDisplayName() {
return $this->displayNameCache->getDisplayName($this->uid);
return $this->userManager->getDisplayName($this->uid);
}

public function setDisplayName($displayName) {
Expand Down
11 changes: 11 additions & 0 deletions lib/private/User/Manager.php
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -106,6 +108,7 @@ public function __construct(IConfig $config,
unset($cachedUsers[$user->getUID()]);
});
$this->eventDispatcher = $eventDispatcher;
$this->displayNameCache = new DisplayNameCache($cacheFactory, $this);
}

/**
Expand Down Expand Up @@ -183,6 +186,10 @@ public function get($uid) {
return null;
}

public function getDisplayName(string $uid): string {
return $this->displayNameCache->getDisplayName($uid);
}

/**
* get or construct the user object
*
Expand Down Expand Up @@ -740,4 +747,8 @@ private function verifyUid(string $uid): bool {

return !file_exists(rtrim($dataDirectory, '/') . '/' . $uid);
}

public function getDisplayNameCache(): DisplayNameCache {
return $this->displayNameCache;
}
}
11 changes: 11 additions & 0 deletions lib/public/IUserManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,17 @@ public function clearBackends() ;
*/
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
*
Expand Down

0 comments on commit e092f91

Please sign in to comment.