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;
|
|
}
|
|
}
|
|
|
|
?>
|