Browse Source

Move back to IGroupManager::displayNamesInGroup()

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>
Joas Schilling 4 years ago
parent
commit
2ec7b59688
1 changed files with 6 additions and 10 deletions
  1. 6 10
      lib/private/Collaboration/Collaborators/UserPlugin.php

+ 6 - 10
lib/private/Collaboration/Collaborators/UserPlugin.php

@@ -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);
 				}