summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorArthur Schiwon <blizzz@arthur-schiwon.de>2019-01-28 16:16:52 +0100
committerArthur Schiwon <blizzz@arthur-schiwon.de>2019-01-30 12:12:24 +0100
commitd77220bc7e7c1b54f07551b45fd673f531af6d13 (patch)
tree1f44adbcb6c6ace8939eca94b51e51be638e2342 /apps
parent0306473a59ed51e993ee37c8e3569b07a83c1441 (diff)
downloadnextcloud-server-d77220bc7e7c1b54f07551b45fd673f531af6d13.tar.gz
nextcloud-server-d77220bc7e7c1b54f07551b45fd673f531af6d13.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')
-rw-r--r--apps/user_ldap/lib/Access.php33
1 files changed, 28 insertions, 5 deletions
diff --git a/apps/user_ldap/lib/Access.php b/apps/user_ldap/lib/Access.php
index 66d302460a3..4abf8620866 100644
--- a/apps/user_ldap/lib/Access.php
+++ b/apps/user_ldap/lib/Access.php
@@ -976,7 +976,11 @@ class Access extends LDAPUtility implements IUserTools {
* 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;
}
/**
@@ -987,7 +991,12 @@ class Access extends LDAPUtility implements IUserTools {
* @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;
}
/**
@@ -1001,7 +1010,11 @@ class Access extends LDAPUtility implements IUserTools {
* 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;
}
/**
@@ -1013,7 +1026,12 @@ class Access extends LDAPUtility implements IUserTools {
* @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;
}
/**
@@ -1024,7 +1042,12 @@ class Access extends LDAPUtility implements IUserTools {
* @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;
}
/**