forked from GNUsocial/gnu-social
		
	
		
			
				
	
	
		
			241 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			241 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?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;
 | |
|     }
 | |
| }
 | |
| 
 | |
| ?>
 |