|
Posted by Jacques Lebastard on 02/22/06 20:52
I'm trying to perform an ldap_search in order to *always* get the whole
list of objects matching the filter I provide, whatever the PageSize
defined in the directory.
Reading through the LDAP documentation, I understand that I should use
LDAP server controls (with "1.2.840.113556.1.4.319" OID
-LDAP_PAGED_RESULT_OID_STRING). My understanding is that in case of
partial results (using a previous ldap_set_option(...,
LDAP_OPT_SERVER_CONTROLS, array(array("oid"=>"1.2.840.113556.1.4.319",
"value"=>100, "iscritical" => FALSE))) I should analyse, upon a
successful ldap_search, the returned server controls to know whether
there are remaining objects matching the provided filter. It seems that
if the ServerControls should include a ""cookie"" that I should use for
the next ldap_search() to get the "next" 100 matching objects.
Unfortunately PHP ldap_parse_results is not documented. Moreover,
php-4.3.10/ext/ldap/ldap.c currently contains:
> rc = ldap_parse_result( ld->link, ldap_result, &lerrcode,
> myargcount > 3 ? &lmatcheddn : NULL,
> myargcount > 4 ? &lerrmsg : NULL,
> myargcount > 5 ? &lreferrals : NULL,
> NULL /* &serverctrls */,
> 0 );
:-(
Is it possible using PHP Ldap extension (the web is Apache/1.3.34
(Win32) PHP/4.3.10 mod_ssl/2.8.25 OpenSSL/0.9.7g, with PHP Ldap built
using OpenLdap 2.2.26) to get all matching results whatever the PageSize
of the directory?
PS: I'm currently using an Active Directory. Does the answer to the
above question depends on the searched directory?
Navigation:
[Reply to this message]
|