entry.php.svn-base
来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 525 行 · 第 1/2 页
SVN-BASE
525 行
<?php/* vim: set expandtab tabstop=4 shiftwidth=4: */// +--------------------------------------------------------------------------+// | Net_LDAP |// +--------------------------------------------------------------------------+// | Copyright (c) 1997-2003 The PHP Group |// +--------------------------------------------------------------------------+// | This library is free software; you can redistribute it and/or |// | modify it under the terms of the GNU Lesser General Public |// | License as published by the Free Software Foundation; either |// | version 2.1 of the License, or (at your option) any later version. |// | |// | This library is distributed in the hope that it will be useful, |// | but WITHOUT ANY WARRANTY; without even the implied warranty of |// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |// | Lesser General Public License for more details. |// | |// | You should have received a copy of the GNU Lesser General Public |// | License along with this library; if not, write to the Free Software |// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |// +--------------------------------------------------------------------------+// | Authors: Tarjej Huse |// +--------------------------------------------------------------------------+//// $Id$/** * This class represents an LDAP entry * * @package Net_LDAP * @author Tarjei Huse * @version $Revision$ */class Net_LDAP_Entry extends PEAR{ /**#@+ * Array of the attributes * * @access private * @var array */ var $_attrs = array(); /** * Array of attributes to be deleted upon update() */ var $_delAttrs = array(); /** * Array of attributes to be modified upon update() */ var $_modAttrs = array(); /** * Array of attributes to be added upon update() */ var $_addAttrs = array(); /**#@-*/ /** * The distinguished name of the entry * * @access private * @var string */ var $_dn = ''; /** * LDAP resource link * * @access private * @var resource */ var $_link = null; /** * Value of old DN if DN has changed * * @access private * @var string */ var $_olddn = ''; /**#@+ * Array of errors for debugging class * * @access private */ var $_error = array(); /** * updatechecks */ var $updateCheck = array('newdn' => false, 'modify' => false, 'newEntry' => true ); // since the entry is not changed before the update(); /** * Net_LDAP_Schema object TO BE REMOVED */ var $_schema; /**#@-*/ /** Constructor * * @param - link - ldap_resource_link, dn = string entry dn, attributes - array entry attributes array. * @return - none **/ function Net_LDAP_Entry($link = null, $dn = null, $attributes = null) { if (!is_null($link)) { $this->_link = $link; } if (!is_null($dn)) { $this->_set_dn($dn); } if (is_array($attributes) && count($attributes) > 0) { $this->_set_attributes($attributes); } else { $this->updateCheck['newEntry'] = true; } } /** * Set the reasourcelink to the ldapserver. * * @access private * @param resource LDAP link */ function _set_link(&$link) { $this->_link = $link; } /** * set the entrys DN * * @access private * @param string */ function _set_dn($dn) { $this->_dn = $dn; } /** * sets the internal array of the entrys attributes. * * @access private * @param array */ function _set_attributes($attributes= array()) { $this->_attrs = $attributes; // this is the sign that the entry exists in the first place: $this->updateCheck['newEntry'] = false; } /** * removes [count] entries from the array. * * remove all the count elements in the array: * Used before ldap_modify, ldap_add * * @access private * @return array Cleaned array of attributes */ function _clean_entry() { $attributes = array(); for ($i=0; $i < $this->_attrs['count'] ; $i++) { $attr = $this->_attrs[$i]; if ($this->_attrs[$attr]['count'] == 1) { $attributes[$this->_attrs[$i]] = $this->_attrs[$attr][0]; } else { $attributes[$attr] = $this->_attrs[$attr]; unset ($attributes[ $attr ]['count']); } } return $attributes; } /** * returns an assosiative array of all the attributes in the array * * attributes - returns an assosiative array of all the attributes in the array * of the form array ('attributename'=>'singelvalue' , 'attribute'=>array('multiple','values')) * * @param none * @return array Array of attributes and values. */ function attributes() { return $this->_clean_entry(); } /** * Add one or more attribute to the entry * * The values given will be added to the values which already exist for the given attributes. * usage: * $entry->add ( array('sn'=>'huse',objectclass=>array(top,posixAccount))) * * @param array Array of attributes * @return mixed Net_Ldap_Error if error, else true. */ function add($attr = array()) { if (!isset($this->_attrs['count'])) { $this->_attrs['count'] = 0; } if (!is_array($attr)) { return $this->raiseError("Net_LDAP::add : the parameter supplied is not an array, $attr", 1000); } /* if you passed an empty array, that is your problem! */ if (count ($attr)==0) { return true; } foreach ($attr as $k => $v ) { // empty entrys should not be added to the entry. if ($v == '') { continue; } if ($this->exists($k)) { if (!is_array($this->_attrs[$k])) { return $this->raiseError("Possible malformed array as parameter to Net_LDAP::add()."); } array_push($this->_attrs[$k],$v); $this->_attrs[$k]['count']++; } else { $this->_attrs[$k][0] = $v; $this->_attrs[$k]['count'] = 1; $this->_attrs[$this->_attrs['count']] = $k; $this->_attrs['count']++; } // Fix for bug #952 if (empty($this->_addAttrs[$k])) { $this->_addAttrs[$k] = array(); } if (false == is_array($v)) { $v = array($v); } foreach ($v as $value) { array_push($this->_addAttrs[$k], $value); } } return true; } /** * Set or get the DN for the object * * If a new dn is supplied, this will move the object when running $obj->update(); * * @param string DN */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?