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

Class: Net_LDAP2_Util

Source Location: /Net_LDAP2-2.2.0/Net/LDAP2/Util.php

Class Overview

PEAR
   |
   --Net_LDAP2_Util

Utility Class for Net_LDAP2


Author(s):

Methods


Inherited Variables

Inherited Methods


Class Details

[line 34]
Utility Class for Net_LDAP2

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



[ Top ]


Method Detail

__construct (Constructor)   [line 41]

Net_LDAP2_Util __construct( )

Constructor
  • Access: public

[ Top ]

asc2hex32   [line 493]

string asc2hex32( string $string)

Converts all ASCII chars < 32 to "\HEX"
  • Access: public

Parameters:

string   $string   —  String to convert

[ Top ]

canonical_dn   [line 316]

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

Returns the given DN in a canonical form

Returns false if DN is not a valid Distinguished Name. DN can either be a string or an array as returned by ldap_explode_dn, which is useful when constructing a DN. The DN array may have be indexed (each array value is a OCL=VALUE pair) or associative (array key is OCL and value is VALUE).

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. [NOT IMPLEMENTED] 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 (',').

Note: The empty string "" is a valid DN, so be sure not to do a "$can_dn == false" test, because an empty string evaluates to false. Use the "===" operator instead.

  • Return: The canonical DN or FALSE
  • Todo: implement option mbcescape
  • Access: public

Parameters:

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

[ Top ]

correct_dn_splitting   [line 598]

array correct_dn_splitting( [array $dn = array()], [array $separator = ','])

Corrects splitting of dn parts
  • Return: Corrected array
  • Access: protected

Parameters:

array   $dn   —  Raw DN array
array   $separator   —  Separator that was used when splitting

[ Top ]

escape_dn_value   [line 202]

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

Escapes a DN value according to RFC 2253

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.

  • Return: The array $values, but escaped
  • Access: public

Parameters:

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

[ Top ]

escape_filter_value   [line 435]

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
  • Access: public

Parameters:

array   $values   —  Array of values to escape

[ Top ]

hex2asc   [line 515]

string hex2asc( string $string)

Converts all Hex expressions ("\HEX") to their original ASCII characters
  • Author: beni@php.net, heavily based on work from DavidSmith@byu.net
  • Access: public

Parameters:

string   $string   —  String to convert

[ Top ]

ldap_explode_dn   [line 91]

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] => 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' } ]; See http://www.vijaymukhi.com/vmis/berldap.htm for more information on BER.

It also performs the following operations on the given DN:

  • Unescape "\" followed by ",", "+", """, "\", "<", ">", ";", "#", "=", " ", or a hexpair and strings beginning with "#".
  • Removes the leading 'OID.' characters if the type is an OID instead of a name.
  • 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 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
  • Todo: implement BER
  • Access: public

Parameters:

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

[ Top ]

split_attribute_string   [line 578]

array split_attribute_string( string $attr, [boolean $extended = false], [boolean $withDelim = false])

Splits an attribute=value syntax into an array

If escaped delimeters are used, they are returned escaped as well. The split will occur at the first unescaped delimeter character. In case an invalid delimeter is given, no split will be performed and an one element array gets returned. Optional also filter-assertion delimeters can be considered (>, <, >=, <=, ~=).

  • Return: Indexed array: 0=attribute name, 1=attribute value OR ($withDelim=true): 0=attr, 1=delimeter, 2=value
  • Access: public

Parameters:

string   $attr   —  Attribute and Value Syntax ("foo=bar")
boolean   $extended   —  If set to true, also filter-assertion delimeter will be matched
boolean   $withDelim   —  If set to true, the return array contains the delimeter at index 1, putting the value to index 2

[ Top ]

split_rdn_multival   [line 556]

array split_rdn_multival( string $rdn)

Split an multivalued RDN value into an Array

A RDN can contain multiple values, spearated by a plus sign. This function returns each separate ocl=value pair of the RDN part.

If no multivalued RDN is detected, an array containing only the original rdn part is returned.

For example, the multivalued RDN 'OU=Sales+CN=J. Smith' is exploded to: array([0] => 'OU=Sales', [1] => 'CN=J. Smith')

The method trys to be smart if it encounters unescaped "+" characters, but may fail, so ensure escaped "+"es in attr names and attr values.

[BUG] If you have a multivalued RDN with unescaped plus characters and there is a unescaped plus sign at the end of an value followed by an attribute name containing an unescaped plus, then you will get wrong splitting: $rdn = 'OU=Sales+C+N=J. Smith'; returns: array('OU=Sales+C', 'N=J. Smith'); The "C+" is treaten as value of the first pair instead as attr name of the second pair. To prevent this, escape correctly.

  • Return: Array with the components of the multivalued RDN or Error
  • Access: public

Parameters:

string   $rdn   —  Part of an (multivalued) escaped RDN (eg. ou=foo OR ou=foo+cn=bar)

[ Top ]

unescape_dn_value   [line 254]

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.

  • Return: Same as $values, but unescaped
  • Access: public

Parameters:

array   $values   —  Array of DN Values

[ Top ]

unescape_filter_value   [line 470]

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.

  • Return: Array $values, but unescaped
  • Access: public

Parameters:

array   $values   —  Array of values to escape

[ Top ]


Documentation generated on Mon, 11 Mar 2019 16:03:55 -0400 by phpDocumentor 1.4.4. PEAR Logo Copyright © PHP Group 2004.