Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulius Härtl <jus@bitgrid.net>2021-06-16 15:47:36 +0300
committerJulius Härtl <jus@bitgrid.net>2022-10-14 15:11:20 +0300
commite0ef68037a8cfec3752e0e8962621b0ac1201739 (patch)
treec8713b512aaeec2ba92157974127ba8882a4e4ea
parent0ac2a9036d8cc88b5f882aa8e3e2f10f472a588a (diff)
Manually search for displayname by iterating over group membersenh/displayname-group-search
Signed-off-by: Julius Härtl <jus@bitgrid.net>
-rw-r--r--lib/private/Group/Manager.php20
1 files changed, 8 insertions, 12 deletions
diff --git a/lib/private/Group/Manager.php b/lib/private/Group/Manager.php
index 28f7a400b41..0b8032a52b3 100644
--- a/lib/private/Group/Manager.php
+++ b/lib/private/Group/Manager.php
@@ -370,21 +370,17 @@ class Manager extends PublicEmitter implements IGroupManager {
if (!empty($search)) {
// only user backends have the capability to do a complex search for users
- $searchOffset = 0;
- $searchLimit = $limit * 100;
- if ($limit === -1) {
- $searchLimit = 500;
- }
-
+ $chunkOffset = 0;
+ $chunkLimit = 500;
do {
- $filteredUsers = $this->userManager->searchDisplayName($search, $searchLimit, $searchOffset);
- foreach ($filteredUsers as $filteredUser) {
- if ($group->inGroup($filteredUser)) {
- $groupUsers[] = $filteredUser;
+ $userChunk = $group->searchUsers('', $chunkLimit, $chunkOffset);
+ foreach ($userChunk as $user) {
+ if (mb_stripos($user->getDisplayName(), $search) > -1) {
+ $groupUsers[] = $user;
}
}
- $searchOffset += $searchLimit;
- } while (count($groupUsers) < $searchLimit + $offset && count($filteredUsers) >= $searchLimit);
+ $chunkOffset += $chunkLimit;
+ } while (count($userChunk) !== 0);
if ($limit === -1) {
$groupUsers = array_slice($groupUsers, $offset);