From 9fb8f1fcd323fe90d7c6008be93b7ead7d8181b5 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Mon, 11 Sep 2017 15:30:44 +0200 Subject: [PATCH] fix counting found results in search op Signed-off-by: Arthur Schiwon --- apps/user_ldap/lib/Access.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/apps/user_ldap/lib/Access.php b/apps/user_ldap/lib/Access.php index e036f6ccb8b..b6674cf0332 100644 --- a/apps/user_ldap/lib/Access.php +++ b/apps/user_ldap/lib/Access.php @@ -1030,7 +1030,7 @@ class Access extends LDAPUtility implements IUserTools { * @param array $sr the array containing the LDAP search resources * @param string $filter the LDAP filter for the search * @param array $base an array containing the LDAP subtree(s) that shall be searched - * @param int $iFoundItems number of results in the search operation + * @param int $iFoundItems number of results in the single search operation * @param int $limit maximum results to be counted * @param int $offset a starting point * @param bool $pagedSearchOK whether a paged search has been executed @@ -1180,15 +1180,18 @@ class Access extends LDAPUtility implements IUserTools { return array(); } + $iFoundItems = 0; foreach($sr as $res) { $findings = array_merge($findings, $this->invokeLDAPMethod('getEntries', $cr, $res)); + $iFoundItems = max($iFoundItems, $findings['count']); + unset($findings['count']); } - $continue = $this->processPagedSearchStatus($sr, $filter, $base, $findings['count'], + $continue = $this->processPagedSearchStatus($sr, $filter, $base, $iFoundItems, $limitPerPage, $offset, $pagedSearchOK, $skipHandling); $offset += $limitPerPage; - } while ($continue && $pagedSearchOK && ($limit === null || $findings['count'] < $limit)); + } while ($continue && $pagedSearchOK && ($limit === null || count($findings) < $limit)); // reseting offset $offset = $savedoffset;