phpldapadmin/lib/DefaultEditingEntry.php
2009-06-30 21:52:55 +10:00

102 lines
3.2 KiB
PHP

<?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/DefaultEditingEntry.php,v 1.2.2.3 2008/03/01 02:13:03 wurley Exp $
/**
* @package phpLDAPadmin
* @author The phpLDAPadmin development team
* @author Xavier Bruyet
*
* Represent a tree node
*/
class DefaultEditingEntry extends Entry {
public function __construct($dn) {
parent::__construct($dn);
}
public function getAttributes() {
global $ldapserver;
static $attrs = array();
$dn = $this->getDn();
if (DEBUG_ENABLED)
debug_log('Entered with () for dn (%s)',1,__FILE__,__LINE__,__METHOD__,$dn);
if (! isset($attrs[$dn])) {
$attrs[$dn] = array();
$attributefactoryclass = $_SESSION[APPCONFIG]->GetValue('appearance','attribute_factory');
eval('$attribute_factory = new '.$attributefactoryclass.'();');
$int_attrs_vals = $ldapserver->getDNSysAttrs($this->getDn());
if (!$int_attrs_vals) $int_attrs_vals = array();
elseif (!is_array($int_attrs_vals)) $int_attrs_vals = array($int_attrs_vals);
$custom_int_attrs_vals = $ldapserver->getCustomDNSysAttrs($this->getDn());
if (! $custom_int_attrs_vals) $attrs_vals = array();
elseif (! is_array($custom_int_attrs_vals)) $custom_int_attrs_vals = array($custom_int_attrs_vals);
$attrs_vals = $ldapserver->getDNAttrs($this->getDn(),false,$_SESSION[APPCONFIG]->GetValue('deref','view'));
if (! $attrs_vals) $attrs_vals = array();
elseif (! is_array($attrs_vals)) $attrs_vals = array($attrs_vals);
$custom_attrs_vals = $ldapserver->getCustomDNAttrs($this->getDn(),false,$_SESSION[APPCONFIG]->GetValue('deref','view'));
if (! $custom_attrs_vals) $attrs_vals = array();
elseif (! is_array($custom_attrs_vals)) $custom_attrs_vals = array($custom_attrs_vals);
$int_attrs_vals = array_merge($int_attrs_vals,$custom_int_attrs_vals);
$attrs_vals = array_merge($attrs_vals,$custom_attrs_vals);
$attrs_vals = array_merge($attrs_vals, $int_attrs_vals);
uksort($attrs_vals,'sortAttrs'); # Sort these entries
$objectclasses = null;
foreach ($attrs_vals as $attr => $vals) {
$attribute = $attribute_factory->newAttribute($attr,$vals);
$attribute->setEntry($this);
if (isset($int_attrs_vals[$attr])) {
$attribute->setInternal();
$attribute->setReadOnly();
}
if ($attr == 'objectClass') $objectclasses = $attribute->getValues();
if ($this->isReadOnly() || $ldapserver->isAttrReadOnly($attr)) {
$attribute->setReadOnly();
}
if ($ldapserver->isAttrHidden($attr)/* || ! strcasecmp($attr,'dn')*/) {
$attribute->hide();
}
$attrs[$dn][] = $attribute;
}
if ($objectclasses) {
$schema_oclasses = $ldapserver->SchemaObjectClasses();
foreach ($objectclasses as $oclass) {
$schema_oclass = $ldapserver->getSchemaObjectClass($oclass);
assert($schema_oclass);
$mustattrs = $schema_oclass->getMustAttrs($schema_oclasses);
if (!$mustattrs) $mustattrs = array();
if (!is_array($mustattrs)) $mustattrs = array($mustattrs);
foreach ($mustattrs as $mustattr) {
foreach ($attrs[$dn] as $attr) {
if ($attr->getName() == $mustattr->getName()) {
$attr->setRequired();
break;
}
}
}
}
}
}
return $attrs[$dn];
}
}
?>