On Wed, Nov 28, 2001 at 03:08:52PM +0930, [EMAIL PROTECTED] wrote:
> Hi All-
> 
> Can anyone tell me if PHP's LDAP functions support "server side sorting of
> search results" as defined in this RFC:
> 
> http://www.ietf.org/rfc/rfc2891.txt

Not currently, maybe it will...  Depends on how many wants it.

> Sorting results from LDAP searches in PHP is a pain because of the
> structure
> of the result array.

Yes, but I think that's a poor excuse for doing it on the server side.
I think this should be done by the client in most cases.  One might
also need to take the clients locale into account when sorting the
data.

> Alternatively if anyone has a nice function for sorting the array returned
> by
> ldap_get_entries() by any desired attribute, that would be a great help
> also.

It's not that hard.  What I do, is that I create a new simple array
with just the attribute values I want to sort on and preserve the
indices of the result array.  Next I sort that array (again
preserving indices).  The indices of the sorted array now give me
the order I should use when displaying the entries from the result
array.  Not that hard, it looks something like this:

$n=ldap_count_entries($ds,$sr);
$info = ldap_get_entries($ds, $sr);
ldap_free_result($sr);

for ($i=0; $i<$n; $i++) {
    $cn[$i]=$info[$i]["cn"][0]);
}
asort($cn);
reset($cn);
for ($j=0; list($i,) = each($cn);) {
      $sorted[$j] = $info[$i];
}

Anyway, the next PHP release (in CVS or snapshots now) will have a
function ldap_sort() for client side sorting.  After you've done
the search, simply do ldap_sort($ds, $sr, "cn");
and you have sorted the results on cn, and you access the result
as usual afterwards.

Stig

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to