]> source.dussan.org Git - nextcloud-server.git/commitdiff
Move back to IGroupManager::displayNamesInGroup()
authorJoas Schilling <coding@schilljs.com>
Wed, 17 Jun 2020 09:59:56 +0000 (11:59 +0200)
committerJoas Schilling <coding@schilljs.com>
Wed, 17 Jun 2020 09:59:56 +0000 (11:59 +0200)
The problem is that despite it's name IGroup::searchDisplayName()
only searches by userid and this is less fixable than changing back to this method here

Signed-off-by: Joas Schilling <coding@schilljs.com>
lib/private/Collaboration/Collaborators/UserPlugin.php

index 7c02e3c79ac0e963c95f0b934f4d1f99e2572496..4e293dd28b9d8b2fce2968b2561db095ae56210c 100644 (file)
@@ -73,20 +73,19 @@ class UserPlugin implements ISearchPlugin {
                $users = [];
                $hasMoreResults = false;
 
-               $userGroups = [];
+               $currentUserGroups = $this->groupManager->getUserGroupIds($this->userSession->getUser());
                if ($this->shareWithGroupOnly) {
                        // Search in all the groups this user is part of
-                       $userGroups = $this->groupManager->getUserGroups($this->userSession->getUser());
-                       foreach ($userGroups as $userGroup) {
-                               $usersInGroup = $userGroup->searchDisplayName($search, $limit, $offset);
-                               foreach ($usersInGroup as $user) {
-                                       $users[$user->getUID()] = $user;
+                       foreach ($currentUserGroups as $userGroupId) {
+                               $usersInGroup = $this->groupManager->displayNamesInGroup($userGroupId, $search, $limit, $offset);
+                               foreach ($usersInGroup as $userId => $displayName) {
+                                       $userId = (string) $userId;
+                                       $users[$userId] = $this->userManager->get($userId);
                                }
                        }
                } else {
                        // Search in all users
                        $usersTmp = $this->userManager->searchDisplayName($search, $limit, $offset);
-                       $currentUserGroups = $this->groupManager->getUserGroupIds($this->userSession->getUser());
                        foreach ($usersTmp as $user) {
                                if ($user->isEnabled()) { // Don't keep deactivated users
                                        $users[$user->getUID()] = $user;
@@ -155,9 +154,6 @@ class UserPlugin implements ISearchPlugin {
 
                                if ($this->shareWithGroupOnly) {
                                        // Only add, if we have a common group
-                                       $userGroupIds = array_map(function (IGroup $group) {
-                                               return $group->getGID();
-                                       }, $userGroups);
                                        $commonGroups = array_intersect($userGroupIds, $this->groupManager->getUserGroupIds($user));
                                        $addUser = !empty($commonGroups);
                                }