| Extracted from Pike v7.8 release 866 at 2016-04-05.

[Top]
Protocols
Protocols.LDAP
Protocols.LDAP.client

# Method Protocols.LDAP.client()->search()

Method search

  `result|int search(string|object|void filter, array(string)|void attrs, int|void attrsonly, void|mapping(string:array(int|string)) controls, void|int flags)`

Description

  Search LDAP directory.

Parameter `filter`

  Search filter to override the one from the LDAP URL. It's either a string with the format specified in RFC 2254, or an object returned by Protocols.LDAP.make_filter .

Parameter `attrs`

  The array of attribute names which will be returned by server for every entry.

Parameter `attrsonly`

  This flag causes server return only the attribute types (aka names) but not their values. The values will instead be empty arrays or - if Protocols.LDAP.SEARCH_MULTIVAL_ARRAYS_ONLY is given - zeroes for single-valued attributes.

Parameter `controls`

  Extra controls to send in the search query, to modify how the server executes the search in various ways. The value is a mapping with an entry for each control.

  `object_identifier : string`

  The index is the object identifier in string form for the control type. There are constants in Protocols.LDAP for the object identifiers for some known controls.

  The mapping value is an array of two elements:

  Array
  `int 0` | The first element is an integer flag that specifies whether the control is critical or not. If it is nonzero, the server returns an error if it doesn't understand the control. If it is zero, the server ignores it instead.
  `string|int(0..0) 1` | The second element is the string value to pass with the control. It may also be zero to not pass any value at all.

Parameter `flags`

  Bitfield with flags to control various behavior at the client side of the search operation. See the `Protocol.LDAP.SEARCH_*` constants for details.

Returns

  Returns object LDAP.client.result on success, `0` otherwise.

Note

  The API change: the returning code was changed in Pike 7.3+ to follow his logic better.

See also

  result , result.fetch , read , get_supported_controls , Protocols.LDAP.ldap_encode_string , Protocols.LDAP.make_filter