PHP Class LdapTools\Utilities\TSProperty

See also: https://msdn.microsoft.com/en-us/library/ff635169.aspx
See also: http://daduke.org/linux/userparameters.html
Author: Chad Sikorra ([email protected])
Show file Open project: ldaptools/ldaptools Class Usage Examples

Protected Properties

Property Type Description
$name The property name.
$propTypes array There are some names that are simple repeats but have 'W' at the end. Not sure as to what that signifies. I cannot find any information on them in Microsoft documentation. However, their values appear to stay in sync with their non 'W' counterparts. But not doing so when manipulating the data manually does not seem to affect anything. This probably needs more investigation.
$value The property value.
$valueType The property value type.

Public Methods

Method Description
__construct ( string | null $value = null )
getName ( ) : string Get the name for the TSProperty.
getValue ( ) : string | integer Get the value for the TSProperty.
setName ( string $name ) Set the name for the TSProperty.
setValue ( string | integer $value ) Set the value for the TSProperty.
toBinary ( ) : string Convert the TSProperty name/value back to its binary representation for the userParameters blob.

Protected Methods

Method Description
dec2hex ( integer $int, integer $padLength = 2 ) : string Need to make sure hex values are always an even length, so pad as needed.
decode ( string $tsProperty ) Given a TSProperty blob, decode the name/value/type/etc.
decodePropValue ( string $hex, boolean $string = false ) : string Decode the property by inspecting the nibbles of each blob, checking the control, and adding up the results into a final value.
encodePropValue ( string $value, boolean $string = false ) : string Get the encoded property value as a binary blob.
getDecodedValueForProp ( string $propName, string $propValue ) : string | integer Based on the property name in question, get its actual value from the binary blob value.
getEncodedValueForProp ( string $propName, string | integer $propValue ) : string Based on the property name/value in question, get its encoded form.
getNibbleWithControl ( string $nibbleType, $nibble ) : string Get the nibble value with the control prefixed.
nibbleControl ( string $nibble, string $control ) : string Based on the control, adjust the nibble accordingly.
packBitString ( string $bits, boolean $len ) : string PHP's pack() function has no 'b' or 'B' template. This is a workaround that turns a literal bit-string into a packed byte-string with 8 bits per byte.

Method Details

__construct() public method

public __construct ( string | null $value = null )
$value string | null Pass binary TSProperty data to construct its object representation.

dec2hex() protected method

Need to make sure hex values are always an even length, so pad as needed.
protected dec2hex ( integer $int, integer $padLength = 2 ) : string
$int integer
$padLength integer The hex string must be padded to this length (with zeros).
return string

decode() protected method

Given a TSProperty blob, decode the name/value/type/etc.
protected decode ( string $tsProperty )
$tsProperty string

decodePropValue() protected method

Decode the property by inspecting the nibbles of each blob, checking the control, and adding up the results into a final value.
protected decodePropValue ( string $hex, boolean $string = false ) : string
$hex string
$string boolean Whether or not this is simple string data.
return string

encodePropValue() protected method

Get the encoded property value as a binary blob.
protected encodePropValue ( string $value, boolean $string = false ) : string
$value string
$string boolean
return string

getDecodedValueForProp() protected method

Based on the property name in question, get its actual value from the binary blob value.
protected getDecodedValueForProp ( string $propName, string $propValue ) : string | integer
$propName string
$propValue string
return string | integer

getEncodedValueForProp() protected method

Based on the property name/value in question, get its encoded form.
protected getEncodedValueForProp ( string $propName, string | integer $propValue ) : string
$propName string
$propValue string | integer
return string

getName() public method

Get the name for the TSProperty.
public getName ( ) : string
return string

getNibbleWithControl() protected method

If the nibble dec is <= 9, the control X equals 001011 and Y equals 001110, otherwise if the nibble dec is > 9 the control for X or Y equals 011010. Additionally, if the dec value of the nibble is > 9, then the nibble value must be subtracted by 9 before the final value is constructed.
protected getNibbleWithControl ( string $nibbleType, $nibble ) : string
$nibbleType string Either X or Y
$nibble
return string

getValue() public method

Get the value for the TSProperty.
public getValue ( ) : string | integer
return string | integer

nibbleControl() protected method

Based on the control, adjust the nibble accordingly.
protected nibbleControl ( string $nibble, string $control ) : string
$nibble string
$control string
return string

packBitString() protected method

PHP's pack() function has no 'b' or 'B' template. This is a workaround that turns a literal bit-string into a packed byte-string with 8 bits per byte.
protected packBitString ( string $bits, boolean $len ) : string
$bits string
$len boolean
return string

setName() public method

Set the name for the TSProperty.
public setName ( string $name )
$name string

setValue() public method

Set the value for the TSProperty.
public setValue ( string | integer $value )
$value string | integer

toBinary() public method

Convert the TSProperty name/value back to its binary representation for the userParameters blob.
public toBinary ( ) : string
return string

Property Details

$name protected property

The property name.
protected $name

$propTypes protected property

There are some names that are simple repeats but have 'W' at the end. Not sure as to what that signifies. I cannot find any information on them in Microsoft documentation. However, their values appear to stay in sync with their non 'W' counterparts. But not doing so when manipulating the data manually does not seem to affect anything. This probably needs more investigation.
protected array $propTypes
return array

$value protected property

The property value.
protected $value

$valueType protected property

The property value type.
protected $valueType