6.0.0-alpha10
5/14/25

[#5258] Make use of LDAP pagination if available
Summary Make use of LDAP pagination if available
Queue Turba
Queue Version HEAD
Type Enhancement
State Accepted
Priority 2. Medium
Owners
Requester chuck (at) horde (dot) org
Created 04/16/2007 (6603 days ago)
Due
Updated 04/16/2007 (6603 days ago)
Assigned
Resolved
Milestone
Patch No

History
04/16/2007 04:54:15 AM Chuck Hagenbuch Comment #1
State ⇒ Accepted
Priority ⇒ 2. Medium
Type ⇒ Enhancement
Summary ⇒ Make use of LDAP pagination if available
Queue ⇒ Turba
Reply to this comment
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;

     }

}

Saved Queries