aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulius Härtl <jus@bitgrid.net>2021-06-16 14:47:36 +0200
committerJohn Molakvoæ <skjnldsv@users.noreply.github.com>2024-02-27 18:44:09 +0100
commit78970ce58f8215ed371a55071acb4b5d32b3f227 (patch)
tree58a288554f7da781a55f57c0ca413f4d36b200ad
parent455a209b9c4f3b95a016ce1c0bcd1bcfa3fc86bf (diff)
downloadnextcloud-server-enh/displayname-group-search.tar.gz
nextcloud-server-enh/displayname-group-search.zip
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 dafbe4295a4..baa1a5c2542 100644
--- a/lib/private/Group/Manager.php
+++ b/lib/private/Group/Manager.php
@@ -443,21 +443,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);