/** * Factory method to create the Schema node. * * @param Zend_Ldap $ldap * @return Zend_Ldap_Node_Schema * @throws Zend_Ldap_Exception */ public static function create(Zend_Ldap $ldap) { $dn = $ldap->getRootDse()->getSchemaDn(); $data = $ldap->getEntry($dn, array('*', '+'), true); switch ($ldap->getRootDse()->getServerType()) { case Zend_Ldap_Node_RootDse::SERVER_TYPE_ACTIVEDIRECTORY: /** * @see Zend_Ldap_Node_Schema_ActiveDirectory */ return new Zend_Ldap_Node_Schema_ActiveDirectory($dn, $data, $ldap); case Zend_Ldap_Node_RootDse::SERVER_TYPE_OPENLDAP: /** * @see Zend_Ldap_Node_RootDse_ActiveDirectory */ return new Zend_Ldap_Node_Schema_OpenLdap($dn, $data, $ldap); case Zend_Ldap_Node_RootDse::SERVER_TYPE_EDIRECTORY: default: return new self($dn, $data, $ldap); } }