Skip to content

Commit

Permalink
iterate over bases instead of doing parallel search
Browse files Browse the repository at this point in the history
parallel search is not compatible with paged search, but the letter is
usually always applied.

Signed-off-by: Arthur Schiwon <[email protected]>
  • Loading branch information
blizzz committed Jan 28, 2019
1 parent 4bd3916 commit c868892
Showing 1 changed file with 28 additions and 5 deletions.
33 changes: 28 additions & 5 deletions apps/user_ldap/lib/Access.php
Original file line number Diff line number Diff line change
Expand Up @@ -975,7 +975,11 @@ private function fetchList($list, $manyAttributes) {
* 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;
}

/**
Expand All @@ -986,7 +990,12 @@ public function searchUsers($filter, $attr = null, $limit = null, $offset = null
* @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;
}

/**
Expand All @@ -1000,7 +1009,11 @@ public function countUsers($filter, $attr = array('dn'), $limit = null, $offset
* 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;
}

/**
Expand All @@ -1012,7 +1025,12 @@ public function searchGroups($filter, $attr = null, $limit = null, $offset = nul
* @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;
}

/**
Expand All @@ -1023,7 +1041,12 @@ public function countGroups($filter, $attr = array('dn'), $limit = null, $offset
* @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;
}

/**
Expand Down

0 comments on commit c868892

Please sign in to comment.