# Zend_Ldap_Node_RootDse

The following methods are available on all vendor-specific subclasses.

`Zend_Ldap_Node_RootDse` includes the magic property accessors `__get()` and `__isset()` to access the attributes by their name. They proxy to `Zend_Ldap_Node_RootDse::getAttribute()` and `Zend_Ldap_Node_RootDse::existsAttribute()` respectively. `__set()` and `__unset()` are also implemented but they throw a `BadMethodCallException` as modifications are not allowed on RootDSE nodes. Furthermore the class implements `ArrayAccess` for array-style-access to the attributes. `offsetSet()` and `offsetUnset()` also throw a `BadMethodCallException` due ro obvious reasons.

## Zend_Ldap_Node_RootDse API

Method | Description
--- | ---
`Zend_Ldap_Dn getDn()` | Gets the DN of the current node as a Zend_Ldap_Dn.
`string getDnString(string $caseFold)` | Gets the DN of the current node as a string.
`array getDnArray(string $caseFold)` | Gets the DN of the current node as an array.
`string getRdnString(string $caseFold)` | Gets the RDN of the current node as a string.
`array getRdnArray(string $caseFold)` | Gets the RDN of the current node as an array.
`array getObjectClass()` | Returns the objectClass of the node.
`string toString()` | Returns the DN of the current node - proxies to `Zend_Ldap_Dn::getDnString()`.
`string __toString()` | Casts to string representation - proxies to `Zend_Ldap_Dn::toString()`.
`array toArray(boolean $includeSystemAttributes)` | Returns an array representation of the current node. If `$includeSystemAttributes` is `FALSE` (defaults to `TRUE`) the system specific attributes are stripped from the array. Unlike `Zend_Ldap_Node_RootDse::getAttributes()` the resulting array contains the DN with key `'dn'`.
`string toJson(boolean $includeSystemAttributes)` | Returns a JSON representation of the current node using `Zend_Ldap_Node_RootDse::toArray()`.
`array getData(boolean $includeSystemAttributes)` | Returns the node's attributes. The array contains all attributes in its internal format (no conversion).

`boolean existsAttribute(string $name, boolean $emptyExists)`

Checks whether a given attribute exists. If `$emptyExists` is `FALSE`, empty attributes (containing only array()) are treated as non-existent returning `FALSE`. If `$emptyExists` is `TRUE`, empty attributes are treated as existent returning `TRUE`. In this case the method returns `FALSE` only if the attribute name is missing in the key-collection.

`boolean attributeHasValue(string $name, mixed|array $value)` | Checks if the given value(s) exist in the attribute. The method returns `TRUE` only if all values in `$value` are present in the attribute. Comparison is done strictly (respecting the data type).
`integer count()` | Returns the number of attributes in the node. Implements Countable.
`mixed getAttribute(string $name, integer|null $index)` | Gets a LDAP attribute. Data conversion is applied using `Zend_Ldap_Attribute::getAttribute()`.
`array getAttributes(boolean $includeSystemAttributes)` | Gets all attributes of node. If `$includeSystemAttributes` is `FALSE` (defaults to `TRUE`) the system specific attributes are stripped from the array.
`array|integer getDateTimeAttribute(string $name, integer|null $index)` | Gets a LDAP date/time attribute. Data conversion is applied using `Zend_Ldap_Attribute::getDateTimeAttribute()`.
`Zend_Ldap_Node_RootDse reload(Zend_Ldap $ldap)` | Reloads the current node's attributes from the given LDAP server.
`Zend_Ldap_Node_RootDse create(Zend_Ldap $ldap)` | Factory method to create the RootDSE.
`array getNamingContexts()` | Gets the namingContexts.
`string|null getSubschemaSubentry()` | Gets the subschemaSubentry.
`boolean supportsVersion(string|int|array $versions)` | Determines if the LDAP version is supported.
`boolean supportsSaslMechanism(string|array $mechlist)` | Determines if the sasl mechanism is supported.

`integer getServerType()`

Gets the server type. Returns

`Zend_Ldap_Node_RootDse::SERVER_TYPE_GENERIC`

  for unknown LDAP servers

`Zend_Ldap_Node_RootDse::SERVER_TYPE_OPENLDAP`

  for OpenLDAP servers

`Zend_Ldap_Node_RootDse::SERVER_TYPE_ACTIVEDIRECTORY`

  for Microsoft ActiveDirectory servers

`Zend_Ldap_Node_RootDse::SERVER_TYPE_EDIRECTORY`

  For Novell eDirectory servers

`Zend_Ldap_Dn getSchemaDn()` | Returns the schema DN.

## OpenLDAP

Additionally the common methods above apply to instances of `Zend_Ldap_Node_RootDse_OpenLdap`.

Refer to LDAP Operational Attributes and Objectsfor information on the attributes of OpenLDAP RootDSE.

### Zend_Ldap_Node_RootDse_OpenLdap API

Method | Description
--- | ---
`integer getServerType()` | Gets the server type. Returns `Zend_Ldap_Node_RootDse::SERVER_TYPE_OPENLDAP`
`string|null getConfigContext()` | Gets the configContext.
`string|null getMonitorContext()` | Gets the monitorContext.
`boolean supportsControl(string|array $oids)` | Determines if the control is supported.
`boolean supportsExtension(string|array $oids)` | Determines if the extension is supported.
`boolean supportsFeature(string|array $oids)` | Determines if the feature is supported.

## ActiveDirectory

Additionally the common methods above apply to instances of `Zend_Ldap_Node_RootDse_ActiveDirectory`.

Refer to RootDSEfor information on the attributes of Microsoft ActiveDirectory RootDSE.

### Zend_Ldap_Node_RootDse_ActiveDirectory API

Method | Description
--- | ---
`integer getServerType()` | Gets the server type. Returns `Zend_Ldap_Node_RootDse::SERVER_TYPE_ACTIVEDIRECTORY`
`string|null getConfigurationNamingContext()` | Gets the configurationNamingContext.
`string|null getCurrentTime()` | Gets the currentTime.
`string|null getDefaultNamingContext()` | Gets the defaultNamingContext.
`string|null getDnsHostName()` | Gets the dnsHostName.
`string|null getDomainControllerFunctionality()` | Gets the domainControllerFunctionality.
`string|null getDomainFunctionality()` | Gets the domainFunctionality.
`string|null getDsServiceName()` | Gets the dsServiceName.
`string|null getForestFunctionality()` | Gets the forestFunctionality.
`string|null getHighestCommittedUSN()` | Gets the highestCommittedUSN.
`string|null getIsGlobalCatalogReady()` | Gets the isGlobalCatalogReady.
`string|null getIsSynchronized()` | Gets the isSynchronized.
`string|null getLdapServiceName()` | Gets the ldapServiceName.
`string|null getRootDomainNamingContext()` | Gets the rootDomainNamingContext.
`string|null getSchemaNamingContext()` | Gets the schemaNamingContext.
`string|null getServerName()` | Gets the serverName.
`boolean supportsCapability(string|array $oids)` | Determines if the capability is supported.
`boolean supportsControl(string|array $oids)` | Determines if the control is supported.
`boolean supportsPolicy(string|array $policies)` | Determines if the version is supported.

## eDirectory

Additionally the common methods above apply to instances of `Zend_Ldap_Node_RootDse_eDirectory`.

Refer to Getting Information about the LDAP Serverfor information on the attributes of Novell eDirectory RootDSE.

### Zend_Ldap_Node_RootDse_eDirectory API

Method | Description
--- | ---
`integer getServerType()` | Gets the server type. Returns `Zend_Ldap_Node_RootDse::SERVER_TYPE_EDIRECTORY`
`boolean supportsExtension(string|array $oids)` | Determines if the extension is supported.
`string|null getVendorName()` | Gets the vendorName.
`string|null getVendorVersion()` | Gets the vendorVersion.
`string|null getDsaName()` | Gets the dsaName.
`string|null getStatisticsErrors()` | Gets the server statistics "errors".
`string|null getStatisticsSecurityErrors()` | Gets the server statistics "securityErrors".
`string|null getStatisticsChainings()` | Gets the server statistics "chainings".
`string|null getStatisticsReferralsReturned()` | Gets the server statistics "referralsReturned".
`string|null getStatisticsExtendedOps()` | Gets the server statistics "extendedOps".
`string|null getStatisticsAbandonOps()` | Gets the server statistics "abandonOps".
`string|null getStatisticsWholeSubtreeSearchOps()` | Gets the server statistics "wholeSubtreeSearchOps".