<?php /* vim: set expandtab tabstop=4 shiftwidth=4: */ /** * File containing the Net_LDAP2_RootDSE interface class. * * PHP version 5 * * @category Net * @package Net_LDAP2 * @author Jan Wagner <wagner@netsols.de> * @copyright 2009 Jan Wagner * @license http://www.gnu.org/licenses/lgpl-3.0.txt LGPLv3 * @version SVN: $Id: RootDSE.php 286718 2009-08-03 07:30:49Z beni $ * @link http://pear.php.net/package/Net_LDAP2/ */ /** * Includes */ require_once 'PEAR.php'; /** * Getting the rootDSE entry of a LDAP server * * @category Net * @package Net_LDAP2 * @author Jan Wagner <wagner@netsols.de> * @license http://www.gnu.org/copyleft/lesser.html LGPL * @link http://pear.php.net/package/Net_LDAP22/ */ class Net_LDAP2_RootDSE extends PEAR { /** * @access protected * @var object Net_LDAP2_Entry **/ protected $_entry; /** * Class constructor * * @param Net_LDAP2_Entry &$entry Net_LDAP2_Entry object of the RootDSE */ protected function __construct(&$entry) { $this->_entry = $entry; } /** * Fetches a RootDSE object from an LDAP connection * * @param Net_LDAP2 $ldap Directory from which the RootDSE should be fetched * @param array $attrs Array of attributes to search for * * @access static * @return Net_LDAP2_RootDSE|Net_LDAP2_Error */ public static function fetch($ldap, $attrs = null) { if (!$ldap instanceof Net_LDAP2) { return PEAR::raiseError("Unable to fetch Schema: Parameter \$ldap must be a Net_LDAP2 object!"); } if (is_array($attrs) && count($attrs) > 0 ) { $attributes = $attrs; } else { $attributes = array('vendorName', 'vendorVersion', 'namingContexts', 'altServer', 'supportedExtension', 'supportedControl', 'supportedSASLMechanisms', 'supportedLDAPVersion', 'subschemaSubentry' ); } $result = $ldap->search('', '(objectClass=*)', array('attributes' => $attributes, 'scope' => 'base')); if (self::isError($result)) { return $result; } $entry = $result->shiftEntry(); if (false === $entry) { return PEAR::raiseError('Could not fetch RootDSE entry'); } $ret = new Net_LDAP2_RootDSE($entry); return $ret; } /** * Gets the requested attribute value * * Same usuage as {@link Net_LDAP2_Entry::getValue()} * * @param string $attr Attribute name * @param array $options Array of options * * @access public * @return mixed Net_LDAP2_Error object or attribute values * @see Net_LDAP2_Entry::get_value() */ public function getValue($attr = '', $options = '') { return $this->_entry->get_value($attr, $options); } /** * Alias function of getValue() for perl-ldap interface * * @see getValue() * @return mixed */ public function get_value() { $args = func_get_args(); return call_user_func_array(array( &$this, 'getValue' ), $args); } /** * Determines if the extension is supported * * @param array $oids Array of oids to check * * @access public * @return boolean */ public function supportedExtension($oids) { return $this->checkAttr($oids, 'supportedExtension'); } /** * Alias function of supportedExtension() for perl-ldap interface * * @see supportedExtension() * @return boolean */ public function supported_extension() { $args = func_get_args(); return call_user_func_array(array( &$this, 'supportedExtension'), $args); } /** * Determines if the version is supported * * @param array $versions Versions to check * * @access public * @return boolean */ public function supportedVersion($versions) { return $this->checkAttr($versions, 'supportedLDAPVersion'); } /** * Alias function of supportedVersion() for perl-ldap interface * * @see supportedVersion() * @return boolean */ public function supported_version() { $args = func_get_args(); return call_user_func_array(array(&$this, 'supportedVersion'), $args); } /** * Determines if the control is supported * * @param array $oids Control oids to check * * @access public * @return boolean */ public function supportedControl($oids) { return $this->checkAttr($oids, 'supportedControl'); } /** * Alias function of supportedControl() for perl-ldap interface * * @see supportedControl() * @return boolean */ public function supported_control() { $args = func_get_args(); return call_user_func_array(array(&$this, 'supportedControl' ), $args); } /** * Determines if the sasl mechanism is supported * * @param array $mechlist SASL mechanisms to check * * @access public * @return boolean */ public function supportedSASLMechanism($mechlist) { return $this->checkAttr($mechlist, 'supportedSASLMechanisms'); } /** * Alias function of supportedSASLMechanism() for perl-ldap interface * * @see supportedSASLMechanism() * @return boolean */ public function supported_sasl_mechanism() { $args = func_get_args(); return call_user_func_array(array(&$this, 'supportedSASLMechanism'), $args); } /** * Checks for existance of value in attribute * * @param array $values values to check * @param string $attr attribute name * * @access protected * @return boolean */ protected function checkAttr($values, $attr) { if (!is_array($values)) $values = array($values); foreach ($values as $value) { if (!@in_array($value, $this->get_value($attr, 'all'))) { return false; } } return true; } } ?>