mirror of
https://github.com/Icinga/icingaweb2.git
synced 2025-07-28 00:04:04 +02:00
lib/ldap: Set server side sorting after calling ldap_control_paged_result()
ldap_control_paged_result() seems to override already set server controls. refs #9364
This commit is contained in:
parent
9e11d539fd
commit
fa25ce7f2f
@ -742,14 +742,7 @@ class LdapConnection implements Selectable, Inspectable
|
||||
$ds = $this->getConnection();
|
||||
|
||||
$serverSorting = $this->capabilities->hasOid(LdapCapabilities::LDAP_SERVER_SORT_OID);
|
||||
if ($serverSorting && $query->hasOrder()) {
|
||||
ldap_set_option($ds, LDAP_OPT_SERVER_CONTROLS, array(
|
||||
array(
|
||||
'oid' => LdapCapabilities::LDAP_SERVER_SORT_OID,
|
||||
'value' => $this->encodeSortRules($query->getOrder())
|
||||
)
|
||||
));
|
||||
} elseif ($query->hasOrder()) {
|
||||
if (! $serverSorting && $query->hasOrder()) {
|
||||
foreach ($query->getOrder() as $rule) {
|
||||
if (! in_array($rule[0], $fields)) {
|
||||
$fields[] = $rule[0];
|
||||
@ -765,6 +758,15 @@ class LdapConnection implements Selectable, Inspectable
|
||||
// server to return results even if the paged search request cannot be satisfied
|
||||
ldap_control_paged_result($ds, $pageSize, false, $cookie);
|
||||
|
||||
if ($serverSorting) {
|
||||
ldap_set_option($ds, LDAP_OPT_SERVER_CONTROLS, array(
|
||||
array(
|
||||
'oid' => LdapCapabilities::LDAP_SERVER_SORT_OID,
|
||||
'value' => $this->encodeSortRules($query->getOrder())
|
||||
)
|
||||
));
|
||||
}
|
||||
|
||||
$results = @ldap_search(
|
||||
$ds,
|
||||
$base,
|
||||
|
Loading…
x
Reference in New Issue
Block a user