[Tickets #5258] Make use of LDAP pagination if available
bugs at bugs.horde.org
bugs at bugs.horde.org
Mon Apr 16 04:54:15 UTC 2007
DO NOT REPLY TO THIS MESSAGE. THIS EMAIL ADDRESS IS NOT MONITORED.
Ticket URL: http://bugs.horde.org/ticket/?id=5258
-----------------------------------------------------------------------
Ticket | 5258
Created By | Chuck Hagenbuch <chuck at horde.org>
Summary | Make use of LDAP pagination if available
Queue | Turba
Version | HEAD
Type | Enhancement
State | Accepted
Priority | 2. Medium
Owners |
-----------------------------------------------------------------------
Chuck Hagenbuch <chuck at horde.org> (2007-04-15 21:54) wrote:
>From the nyphp-talk list:
The below code demonstrates how to use the pagedResultsControl. The PHP
LDAP API is somewhat course but it should work.
Mike
$continue = true;
while ($continue) {
$paged_control = array(
array(
'oid' => PAGED_CONTROL_OID,
'iscritical' => true,
'value' => ldap_ber_printf ('{iO}',
PAGE_SIZE,
$cookie)
)
);
if (!ldap_set_option($l, LDAP_OPT_SERVER_CONTROLS, $paged_control)) {
echo "Not OK: ldap_set_option (controls)\n";
exit;
}
$sr = ldap_search($l, $query, $query_filter, $query_attribs, 0, 0, 0,
LDAP_DEREF_NEVER);
if ($sr === FALSE) {
echo "Not OK: ldap_search\n";
exit;
}
if (!ldap_parse_result ($l, $sr, &$errcode, &$matcheddn, &$errmsg,
&$referrals, &$serverctrls)) {
echo "Not OK: ldap_parse_result\n";
exit;
}
$paged_control_found = FALSE;
if (isset($serverctrls)) {
foreach ($serverctrls as $i) {
if ($i['oid'] == PAGED_CONTROL_OID) {
ldap_ber_scanf($i['value'], '{iO}', &$pagesize,
&$cookie);
$paged_control_found = TRUE;
break;
}
}
}
if (!$paged_control_found) {
echo "Not OK: paged control not found in response \n";
exit;
}
// process entries as usual here ...
if ($cookie == '') {
$continue = false;
}
}
More information about the bugs
mailing list