File: DefaultEditingEntry.php

package info (click to toggle)
phpldapadmin 1.1.0.5-6%2Blenny2
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 5,008 kB
  • ctags: 3,949
  • sloc: php: 17,735; xml: 1,532; sh: 388; makefile: 46
file content (91 lines) | stat: -rw-r--r-- 2,599 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/DefaultEditingEntry.php,v 1.2.2.2 2007/12/29 08:25:24 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);

			$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);

			$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];
	}
}

?>