6.0.0-git
2019-08-24

[#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 2007-04-16 (4513 days ago)
Due
Updated 2007-04-16 (4513 days ago)
Assigned
Resolved
Milestone
Patch No

History
2007-04-16 04:54:15 Chuck Hagenbuch Comment #1
Type ⇒ Enhancement
State ⇒ Accepted
Priority ⇒ 2. Medium
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