diff options
author | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2019-01-28 16:16:52 +0100 |
---|---|---|
committer | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2019-01-28 23:00:59 +0100 |
commit | c868892d2ddcd6d50e029c4b3ee4490c1d663779 (patch) | |
tree | 39290ec4e557560a541f6d4d4511c7fd16ac80bf /apps/user_ldap/lib | |
parent | 4bd3916445146e6d37cd2e3792e5f98124cc5379 (diff) | |
download | nextcloud-server-c868892d2ddcd6d50e029c4b3ee4490c1d663779.tar.gz nextcloud-server-c868892d2ddcd6d50e029c4b3ee4490c1d663779.zip |
iterate over bases instead of doing parallel search
parallel search is not compatible with paged search, but the letter is
usually always applied.
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
Diffstat (limited to 'apps/user_ldap/lib')
-rw-r--r-- | apps/user_ldap/lib/Access.php | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/apps/user_ldap/lib/Access.php b/apps/user_ldap/lib/Access.php index 6fe2c155416..1044938446e 100644 --- a/apps/user_ldap/lib/Access.php +++ b/apps/user_ldap/lib/Access.php @@ -975,7 +975,11 @@ class Access extends LDAPUtility { * Executes an LDAP search */ public function searchUsers($filter, $attr = null, $limit = null, $offset = null) { - return $this->search($filter, $this->connection->ldapBaseUsers, $attr, $limit, $offset); + $result = []; + foreach($this->connection->ldapBaseUsers as $base) { + $result = array_merge($result, $this->search($filter, [$base], $attr, $limit, $offset)); + } + return $result; } /** @@ -986,7 +990,12 @@ class Access extends LDAPUtility { * @return false|int */ public function countUsers($filter, $attr = array('dn'), $limit = null, $offset = null) { - return $this->count($filter, $this->connection->ldapBaseUsers, $attr, $limit, $offset); + $result = false; + foreach($this->connection->ldapBaseUsers as $base) { + $count = $this->count($filter, [$base], $attr, $limit, $offset); + $result = is_int($count) ? (int)$result + $count : $result; + } + return $result; } /** @@ -1000,7 +1009,11 @@ class Access extends LDAPUtility { * Executes an LDAP search */ public function searchGroups($filter, $attr = null, $limit = null, $offset = null) { - return $this->search($filter, $this->connection->ldapBaseGroups, $attr, $limit, $offset); + $result = []; + foreach($this->connection->ldapBaseGroups as $base) { + $result = array_merge($result, $this->search($filter, [$base], $attr, $limit, $offset)); + } + return $result; } /** @@ -1012,7 +1025,12 @@ class Access extends LDAPUtility { * @return int|bool */ public function countGroups($filter, $attr = array('dn'), $limit = null, $offset = null) { - return $this->count($filter, $this->connection->ldapBaseGroups, $attr, $limit, $offset); + $result = false; + foreach($this->connection->ldapBaseGroups as $base) { + $count = $this->count($filter, [$base], $attr, $limit, $offset); + $result = is_int($count) ? (int)$result + $count : $result; + } + return $result; } /** @@ -1023,7 +1041,12 @@ class Access extends LDAPUtility { * @return int|bool */ public function countObjects($limit = null, $offset = null) { - return $this->count('objectclass=*', $this->connection->ldapBase, array('dn'), $limit, $offset); + $result = false; + foreach($this->connection->ldapBase as $base) { + $count = $this->count('objectclass=*', [$base], ['dn'], $limit, $offset); + $result = is_int($count) ? (int)$result + $count : $result; + } + return $result; } /** |