Subversion-Projekte lars-tiefland.php_share

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
<?php
2
/* vim: set expandtab tabstop=4 shiftwidth=4: */
3
/**
4
* File containing the Net_LDAP2_RootDSE interface class.
5
*
6
* PHP version 5
7
*
8
* @category  Net
9
* @package   Net_LDAP2
10
* @author    Jan Wagner <wagner@netsols.de>
11
* @copyright 2009 Jan Wagner
12
* @license   http://www.gnu.org/licenses/lgpl-3.0.txt LGPLv3
13
* @version   SVN: $Id: RootDSE.php 286718 2009-08-03 07:30:49Z beni $
14
* @link      http://pear.php.net/package/Net_LDAP2/
15
*/
16
 
17
/**
18
* Includes
19
*/
20
require_once 'PEAR.php';
21
 
22
/**
23
* Getting the rootDSE entry of a LDAP server
24
*
25
* @category Net
26
* @package  Net_LDAP2
27
* @author   Jan Wagner <wagner@netsols.de>
28
* @license  http://www.gnu.org/copyleft/lesser.html LGPL
29
* @link     http://pear.php.net/package/Net_LDAP22/
30
*/
31
class Net_LDAP2_RootDSE extends PEAR
32
{
33
    /**
34
    * @access protected
35
    * @var object Net_LDAP2_Entry
36
    **/
37
    protected $_entry;
38
 
39
    /**
40
    * Class constructor
41
    *
42
    * @param Net_LDAP2_Entry &$entry Net_LDAP2_Entry object of the RootDSE
43
    */
44
    protected function __construct(&$entry)
45
    {
46
        $this->_entry = $entry;
47
    }
48
 
49
    /**
50
    * Fetches a RootDSE object from an LDAP connection
51
    *
52
    * @param Net_LDAP2 $ldap  Directory from which the RootDSE should be fetched
53
    * @param array     $attrs Array of attributes to search for
54
    *
55
    * @access static
56
    * @return Net_LDAP2_RootDSE|Net_LDAP2_Error
57
    */
58
    public static function fetch($ldap, $attrs = null)
59
    {
60
        if (!$ldap instanceof Net_LDAP2) {
61
            return PEAR::raiseError("Unable to fetch Schema: Parameter \$ldap must be a Net_LDAP2 object!");
62
        }
63
 
64
        if (is_array($attrs) && count($attrs) > 0 ) {
65
            $attributes = $attrs;
66
        } else {
67
            $attributes = array('vendorName',
68
                                'vendorVersion',
69
                                'namingContexts',
70
                                'altServer',
71
                                'supportedExtension',
72
                                'supportedControl',
73
                                'supportedSASLMechanisms',
74
                                'supportedLDAPVersion',
75
                                'subschemaSubentry' );
76
        }
77
        $result = $ldap->search('', '(objectClass=*)', array('attributes' => $attributes, 'scope' => 'base'));
78
        if (self::isError($result)) {
79
            return $result;
80
        }
81
        $entry = $result->shiftEntry();
82
        if (false === $entry) {
83
            return PEAR::raiseError('Could not fetch RootDSE entry');
84
        }
85
        $ret = new Net_LDAP2_RootDSE($entry);
86
        return $ret;
87
    }
88
 
89
    /**
90
    * Gets the requested attribute value
91
    *
92
    * Same usuage as {@link Net_LDAP2_Entry::getValue()}
93
    *
94
    * @param string $attr    Attribute name
95
    * @param array  $options Array of options
96
    *
97
    * @access public
98
    * @return mixed Net_LDAP2_Error object or attribute values
99
    * @see Net_LDAP2_Entry::get_value()
100
    */
101
    public function getValue($attr = '', $options = '')
102
    {
103
        return $this->_entry->get_value($attr, $options);
104
    }
105
 
106
    /**
107
    * Alias function of getValue() for perl-ldap interface
108
    *
109
    * @see getValue()
110
    * @return mixed
111
    */
112
    public function get_value()
113
    {
114
        $args = func_get_args();
115
        return call_user_func_array(array( &$this, 'getValue' ), $args);
116
    }
117
 
118
    /**
119
    * Determines if the extension is supported
120
    *
121
    * @param array $oids Array of oids to check
122
    *
123
    * @access public
124
    * @return boolean
125
    */
126
    public function supportedExtension($oids)
127
    {
128
        return $this->checkAttr($oids, 'supportedExtension');
129
    }
130
 
131
    /**
132
    * Alias function of supportedExtension() for perl-ldap interface
133
    *
134
    * @see supportedExtension()
135
    * @return boolean
136
    */
137
    public function supported_extension()
138
    {
139
        $args = func_get_args();
140
        return call_user_func_array(array( &$this, 'supportedExtension'), $args);
141
    }
142
 
143
    /**
144
    * Determines if the version is supported
145
    *
146
    * @param array $versions Versions to check
147
    *
148
    * @access public
149
    * @return boolean
150
    */
151
    public function supportedVersion($versions)
152
    {
153
        return $this->checkAttr($versions, 'supportedLDAPVersion');
154
    }
155
 
156
    /**
157
    * Alias function of supportedVersion() for perl-ldap interface
158
    *
159
    * @see supportedVersion()
160
    * @return boolean
161
    */
162
    public function supported_version()
163
    {
164
        $args = func_get_args();
165
        return call_user_func_array(array(&$this, 'supportedVersion'), $args);
166
    }
167
 
168
    /**
169
    * Determines if the control is supported
170
    *
171
    * @param array $oids Control oids to check
172
    *
173
    * @access public
174
    * @return boolean
175
    */
176
    public function supportedControl($oids)
177
    {
178
        return $this->checkAttr($oids, 'supportedControl');
179
    }
180
 
181
    /**
182
    * Alias function of supportedControl() for perl-ldap interface
183
    *
184
    * @see supportedControl()
185
    * @return boolean
186
    */
187
    public function supported_control()
188
    {
189
        $args = func_get_args();
190
        return call_user_func_array(array(&$this, 'supportedControl' ), $args);
191
    }
192
 
193
    /**
194
    * Determines if the sasl mechanism is supported
195
    *
196
    * @param array $mechlist SASL mechanisms to check
197
    *
198
    * @access public
199
    * @return boolean
200
    */
201
    public function supportedSASLMechanism($mechlist)
202
    {
203
        return $this->checkAttr($mechlist, 'supportedSASLMechanisms');
204
    }
205
 
206
    /**
207
    * Alias function of supportedSASLMechanism() for perl-ldap interface
208
    *
209
    * @see supportedSASLMechanism()
210
    * @return boolean
211
    */
212
    public function supported_sasl_mechanism()
213
    {
214
        $args = func_get_args();
215
        return call_user_func_array(array(&$this, 'supportedSASLMechanism'), $args);
216
    }
217
 
218
    /**
219
    * Checks for existance of value in attribute
220
    *
221
    * @param array  $values values to check
222
    * @param string $attr   attribute name
223
    *
224
    * @access protected
225
    * @return boolean
226
    */
227
    protected function checkAttr($values, $attr)
228
    {
229
        if (!is_array($values)) $values = array($values);
230
 
231
        foreach ($values as $value) {
232
            if (!@in_array($value, $this->get_value($attr, 'all'))) {
233
                return false;
234
            }
235
        }
236
        return true;
237
    }
238
}
239
 
240
?>