Package home | Report new bug | New search | Development Roadmap Status: Open | Feedback | All | Closed Since Version 2.2.0

Request #17267 Paged Search Results
Submitted: 2010-03-25 22:49 UTC
From: czachary Assigned: beni
Status: Assigned Package: Net_LDAP2 (version 2.0.9)
PHP Version: 5.3.1 OS: Fedora 10 Linux
Roadmaps: (Not assigned)    
Subscription  


 [2010-03-25 22:49 UTC] czachary (Carlton Zachary)
Description: ------------ IS it possible to have a feature to page the searched results. This exists in the Perl implementation of Net::LDAP, but I don't see it for PHP. Here are the links to the Perl Net::LDAP paging feature. http://search.cpan.org/~gbarr/perl-ldap-0.4001/lib/Net/LDAP/Control/Paged.pm http://search.cpan.org/~gbarr/perl-ldap-0.4001/lib/Net/LDAP/Control/VLV.pm Thanks

Comments

 [2010-03-26 14:00 UTC] beni (Benedikt Hallinger)
Hello! PEAR Net_LDAP2 layers itself above phps ldap extension. This extension does not export an paging mechanism, as far as i know. The paged search control is a control that is usually set at the search request, but php's ldap_search() function lacks an ability to provide such controls, so im not sure wheter paged searches are suiported by PHPs ldap-module. Paged searches may be activated by providing general controls, please see: http://de.php.net/manual/de/function.ldap-set-option.php The control for paged searches should be '1.2.840.113556.1.4.319'. Unfortunately i did not had the time to experiment with controls - maybe you like to assist?
 [2011-08-24 12:38 UTC] beni (Benedikt Hallinger)
https://bugs.php.net/bug.php?id=42060 Finally, with PHP 5.3 there is a paged search control available that could be implemented in Net_LDAP2. Currently i'm figuring out a good way to do this.
 [2011-08-24 12:44 UTC] beni (Benedikt Hallinger)
-Assigned To: +Assigned To: beni
 [2011-08-24 12:48 UTC] beni (Benedikt Hallinger)
sorry, its of course PHP 5.4.
 [2011-08-24 12:48 UTC] beni (Benedikt Hallinger)
 [2011-08-24 13:05 UTC] beni (Benedikt Hallinger)
A possible way to implement this may be like the perl interface (needs confirmation and deeper research): - Extend the params-parameter to support a "control" key that can hold a single control or an array of controls. - Create a control superclass for general control handling (so to be compatible to further search controls) - Create a paging control class, extending control base class that handles the paging cookie stuff - extend search() to pass the paging-control object to Net_LDAP_Search() - extend Net_LDAP_Search to handle search results with cookies (it looks like shiftEntry() and friends need to do successive searches with the cookie) That said, the actual LDAP searching code may have to be relocated from Net_LDAP2->search() to a new factory method inside Net_LDAP_Search. Usage in usercode would then be: - Instantiate a paging control - pass it in $ldap->search() - be happy as Net_LDAP2 deals with the rest.
 [2011-08-24 16:21 UTC] beni (Benedikt Hallinger)
There is a branch in SVN now (implementingPagedSearches_PHP5.4) that tries to implement this. I hope that the target client code boils down to something like ____________________________ $pagesize = 200; $pagedcontrol = new Net_LDAP2_PagedResultsControl($pagesize); $searchparams = array( 'scope' => ...., 'control' => $pagedcontrol ); $ldap->search(......., $searchparams); ... retrieve entries as usual from the search, it deals with the paging internally ____________________________