Net_LDAP
[ class tree: Net_LDAP ] [ index: Net_LDAP ] [ all elements ]

Class: Net_LDAP_Util

Source Location: /Net_LDAP-0.7.2/LDAP/Util.php

Class Overview

PEAR
   |
   --Net_LDAP_Util

Utility Class for Net_LDAP


Author(s):

Version:

  • $Revision: 1.10 $

Methods


Inherited Variables

Inherited Methods


Class Details

[line 39]
Utility Class for Net_LDAP

This class servers some functionality to the other classes of Net_LDAP but most of the methods can be used separately as well.

  • Author: Benedikt Hallinger <beni@php.net>
  • Version: $Revision: 1.10 $


[ Top ]


Method Detail

canonical_dn   [line 226]

string canonical_dn( string $dn, [ $options = array('casefold' => 'upper')], array $option)

Returns the given DN in a canonical form

Returns undef if DN is not a valid Distinguished Name. Note: The empty string "" is a valid DN.) DN can either be a string or reference to an array of hashes as returned by ldap_explode_dn, which is useful when constructing a DN.

It performs the following operations on the given DN:

  • Removes the leading 'OID.' characters if the type is an OID instead of a name.
  • Escapes all RFC 2253 special characters (",", "+", """, "\", "<", ">", ";", "#", "=", " "), slashes ("/"), and any other character where the ASCII code is < 32 as \hexpair.
  • Converts all leading and trailing spaces in values to be \20.
  • If an RDN contains multiple parts, the parts are re-ordered so that the attribute type names are in alphabetical order.
OPTIONS is a list of name/value pairs, valid options are: casefold Controls case folding of attribute type names. Attribute values are not affected by this option. The default is to uppercase. Valid values are: lower Lowercase attribute type names. upper Uppercase attribute type names. This is the default. none Do not change attribute type names. mbcescape If TRUE, characters that are encoded as a multi-octet UTF-8 sequence will be escaped as \(hexpair){2,*}. reverse If TRUE, the RDN sequence is reversed. separator Separator to use between RDNs. Defaults to comma (',').

  • Return: The canonical DN
  • Todo: implement me!

Parameters:

string   $dn   —  The DN
array   $option   —  Options to use
   $options   — 

[ Top ]

escape_dn_value   [line 173]

array escape_dn_value( [array $values = array()])

escape_dn_value ( VALUES )

Comment taken from CPAN: Escapes the given VALUES according to RFC 2253 so that they can be safely used in LDAP DNs. The characters ",", "+", """, "\", "<", ">", ";", "#", "=" with a special meaning in RFC 2252 are preceeded by ba backslash. Control characters with an ASCII code < 32 are represented as \hexpair. Finally all leading and trailing spaces are converted to sequences of \20.

Returns the converted list in list mode and the first element in scalar mode.

  • Return: The array $values, but escaped
  • Todo: implement me!

Parameters:

array   $values   —  A array containing the DN values that should be escaped

[ Top ]

escape_filter_value   [line 244]

array escape_filter_value( [array $values = array()])

Escapes the given VALUES according to RFC 2254 so that they can be safely used in LDAP filters.

Any control characters with an ACII code < 32 as well as the characters with special meaning in LDAP filters "*", "(", ")", and "\" (the backslash) are converted into the representation of a backslash followed by two hex digits representing the hexadecimal value of the character.

  • Return: Array $values, but escaped
  • Todo: The "ASCII escaping" Part needs some work
  • Todo: NULL escaping seems to never apply

Parameters:

array   $values   —  Array of values to escape

[ Top ]

ldap_explode_dn   [line 127]

array ldap_explode_dn( string $dn, [array $options = array('casefold' => 'upper')])

Explodes the given DN into its elements

RFC 2253 says, a Distinguished Name is a sequence of Relative Distinguished Names (RDNs), which themselves are sets of Attributes. For each RDN a array is constructed where the RDN part is stored.

For example, the DN 'OU=Sales+CN=J. Smith,DC=example,DC=net' is exploded to: array( [0] => 'OU=Sales', [1] => 'CN=J. Smith', [2] => 'DC=example', [3] => 'DC=net' )

[NOT IMPLEMENTED] DNs might also contain values, which are the bytes of the BER encoding of the X.500 AttributeValue rather than some LDAP string syntax. These values are hex-encoded and prefixed with a #. To distinguish such BER values, ldap_explode_dn uses references to the actual values, e.g. '1.3.6.1.4.1.1466.0=#04024869,DC=example,DC=com' is exploded to: [ { '1.3.6.1.4.1.1466.0' => "\004\002Hi" }, { 'DC' => 'example' }, { 'DC' => 'com' } ];

[NOT IMPLEMENTED] It also performs the following operations on the given DN:

  • Unescape "\" followed by ",", "+", """, "\", "<", ">", ";", "#", "=", " ", or a hexpair and and strings beginning with "#".
  • Removes the leading 'OID.' characters if the type is an OID instead of a name.
OPTIONS is a list of name/value pairs, valid options are: casefold Controls case folding of attribute types names. Attribute values are not affected by this option. The default is to uppercase. Valid values are: lower Lowercase attribute types names. upper Uppercase attribute type names. This is the default. none Do not change attribute type names. reverse If TRUE, the RDN sequence is reversed. onlyvalues If TRUE, then only attributes values are returned ('foo' instead of 'cn=foo')

  • Return: Parts of the exploded DN
  • Author: beni@php.net, based on work from DavidSmith@byu.net
  • Todo: Escaping stuff needs to be implemented completely: http://www.ietf.org/rfc/rfc2253.txt
  • Todo: OID stuff needs to be implemented
  • Todo: ldap_explode_dn does not (un)escape anything thus we should maybe code our own exploding mechanism. We could use unescape_dn_value() to do that
  • Todo: The return value is currently php-like. Maybe we should return exactly the structure perl would return

Parameters:

string   $dn   —  The escaped DN that should be exploded
array   $options   —  Options to use

[ Top ]

ldap_explode_dn_escaped   [line 70]

void ldap_explode_dn_escaped( string $dn, [string $only_values = 0])

Wrapper function for PHPs ldap_explode_dn()

PHPs ldap_explode_dn() does not escape DNs so it will fail if the parameter $dn is something like "<foobar>" or contains Umlauts. This method ensures, that the DN is properly escaped and encoded.

It is taken from http://php.net/ldap_explode_dn and slightly modified.

  • Author: DavidSmith@byu.net
  • Deprecated: This method gets superseeded by ldap_explode_dn(), if it is done

Parameters:

string   $dn   —  The DN that should be split
string   $only_values   —  Return just values, no attribute names ('foo' instead of 'cn=foo')

[ Top ]

unescape_dn_value   [line 191]

array unescape_dn_value( [array $values = array()])

Undoes the conversion done by escape_dn_value().

Any escape sequence starting with a baskslash - hexpair or special character - will be transformed back to the corresponding character.

Returns the converted list in list mode and the first element in scalar mode.

  • Return: Same as $values, but unescaped
  • Todo: implement me!

Parameters:

array   $values   —  Array of DN Values

[ Top ]

unescape_filter_value   [line 278]

array unescape_filter_value( [array $values = array()])

Undoes the conversion done by escape_filter_value().

Converts any sequences of a backslash followed by two hex digits into the corresponding character.

Returns the converted list in list mode and the first element in scalar mode.

  • Return: Array $values, but unescaped
  • Todo: implement me!

Parameters:

array   $values   —  Array of values to escape

[ Top ]


Documentation generated on Mon, 11 Mar 2019 15:01:40 -0400 by phpDocumentor 1.4.4. PEAR Logo Copyright © PHP Group 2004.