From 46c9ef36cb79d898290c152f484b780581ef3c8c Mon Sep 17 00:00:00 2001 From: Carl Schwan Date: Mon, 27 Jul 2026 20:12:39 +0200 Subject: [PATCH] feat(UserManager): Add method to create lazy user This is useful when implementing the ISearchableGroupBackend for example. Signed-off-by: Carl Schwan --- lib/private/Group/Database.php | 3 +-- lib/private/User/Manager.php | 4 ++++ lib/public/IUserManager.php | 13 +++++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/private/Group/Database.php b/lib/private/Group/Database.php index a3958775ced65..a37b583e2b157 100644 --- a/lib/private/Group/Database.php +++ b/lib/private/Group/Database.php @@ -8,7 +8,6 @@ namespace OC\Group; -use OC\User\LazyUser; use OCP\DB\Exception; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\Group\Backend\ABackend; @@ -425,7 +424,7 @@ public function searchInGroup(string $gid, string $search = '', int $limit = -1, $users = []; $userManager = Server::get(IUserManager::class); while ($row = $result->fetchAssociative()) { - $users[$row['uid']] = new LazyUser($row['uid'], $userManager, $row['displayname'] ?? null); + $users[$row['uid']] = $userManager->getLazyUser($row['uid'], $row['displayname'] ?? null); } $result->closeCursor(); diff --git a/lib/private/User/Manager.php b/lib/private/User/Manager.php index ec048a2d08a89..6f823ae0162b2 100644 --- a/lib/private/User/Manager.php +++ b/lib/private/User/Manager.php @@ -460,6 +460,10 @@ public function createUserFromBackend($uid, $password, UserInterface $backend): return false; } + public function getLazyUser(string $uid, string $displayName = null, ?IUserBackend $backend = null): IUser { + return new LazyUser($uid, $this, $displayName, $backend); + } + /** * returns how many users per backend exist (if supported by backend) * diff --git a/lib/public/IUserManager.php b/lib/public/IUserManager.php index d37d47c9a7e85..3a618f67bb91f 100644 --- a/lib/public/IUserManager.php +++ b/lib/public/IUserManager.php @@ -8,6 +8,9 @@ namespace OCP; +use OC\User\LazyUser; +use OCP\AppFramework\Attribute\Implementable; + /** * Class Manager * @@ -24,6 +27,7 @@ * * @since 8.0.0 */ +#[Implementable(since: '8.0.0')] interface IUserManager { /** * @since 26.0.0 @@ -161,6 +165,15 @@ public function createUser($uid, $password); */ public function createUserFromBackend($uid, $password, UserInterface $backend); + /** + * Create a lazy user. + * + * This will create a lazy user object which will be then loaded when needed. + * + * @since 35.0.0 + */ + public function getLazyUser(string $uid, string $displayName = null, ?IUserBackend $backend = null): IUser; + /** * Get how many users per backend exist (if supported by backend) *