phpldapadmin/lib/Attribute.php

273 lines
5.2 KiB
PHP
Raw Normal View History

2009-06-30 10:46:00 +00:00
<?php
2009-06-30 11:46:44 +00:00
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/Attribute.php,v 1.2.2.2 2007/12/26 09:26:32 wurley Exp $
2009-06-30 10:46:00 +00:00
/**
* @package phpLDAPadmin
* @author Xavier Bruyet
*
* Represents an attribute of a entry
*/
class Attribute {
private $name;
private $values;
# min/max number of values
protected $min_value_count;
protected $max_value_count;
# The entry in which the attribute is
protected $entry;
# Is the attribute internal
protected $internal;
# Has the attribute been modified
protected $modified;
# Is the attribute visible
protected $visible;
# Is the attribute modifiable
protected $readonly;
# Display parameters
protected $friendly_name;
protected $description;
protected $icon;
protected $hint;
protected $size; # Component size
protected $maxlength; # Value max length
protected $properties;
public function __construct($name, $values) {
$this->name = $name;
if (is_string($values) && (strlen($values) > 0)) $this->values = array($values);
elseif (is_array($values)) $this->values = $values;
else $this->values = array();
$this->min_value_count = -1;
$this->max_value_count = -1;
$this->entry = null;
$this->internal = false;
$this->modified = false;
$this->visible = true;
$this->readonly = false;
$this->friendly_name = '';
$this->description = '';
$this->icon = '';
$this->hint = '';
$this->size = 0;
$this->maxlength = 0;
$this->properties = array();
}
public function getName() {
return $this->name;
}
public function getValues() {
return $this->values;
}
public function getValueCount() {
return count($this->values);
}
public function addValue($new_val, $i = -1) {
if ($i < 0) $i = $this->getValueCount();
$old_val = $this->getValue($i);
if (is_null($old_val) || ($old_val != $new_val)) $this->justModified();
$this->values[$i] = $new_val;
}
public function getValue($i) {
if (isset($this->values[$i])) return ''.$this->values[$i];
else return null;
}
public function getMinValueCount() {
return $this->min_value_count;
}
public function setMinValueCount($min) {
$this->min_value_count = $min;
}
public function getMaxValueCount() {
return $this->max_value_count;
}
public function setMaxValueCount($max) {
$this->max_value_count = $max;
}
public function getEntry() {
return $this->entry;
}
public function setEntry($entry) {
$this->entry = $entry;
global $ldapserver;
$schema_attr = null;
if ($entry) {
$schema_attr = $ldapserver->getSchemaAttribute($this->getName(), $entry->getDn());
}
if ($schema_attr && $schema_attr->getIsSingleValue()) {
$this->setMaxValueCount(1);
}
}
public function justModified() {
$this->modified = true;
}
public function hasBeenModified() {
return $this->modified;
}
public function isInternal() {
return $this->internal;
}
public function setInternal() {
$this->internal = true;
}
public function isRequired() {
if ($this->getMinValueCount() > 0) {
return true;
} elseif ($this->isRdn()) {
return true;
} else {
return false;
}
}
public function setRequired() {
if ($this->getMinValueCount() <= 0) {
$this->setMinValueCount(1);
}
}
public function setOptional() {
$this->setMinValueCount(0);
}
public function isReadOnly() {
return $this->readonly;
}
public function setReadOnly() {
$this->readonly = true;
}
public function isVisible() {
return $this->visible;
}
public function hide() {
$this->visible = false;
}
public function show() {
$this->visible = true;
}
public function setFriendlyName($name) {
if ($name != $this->name) {
$this->friendly_name = $name;
}
}
public function getFriendlyName() {
2009-06-30 11:46:44 +00:00
if ($this->friendly_name)
2009-06-30 10:46:00 +00:00
return $this->friendly_name;
2009-06-30 11:46:44 +00:00
else
return $_SESSION[APPCONFIG]->getFriendlyName(real_attr_name($this->name));
2009-06-30 10:46:00 +00:00
}
public function setDescription($description) {
$this->description = $description;
}
public function getDescription() {
return $this->description;
}
public function setIcon($icon) {
$this->icon = $icon;
}
public function getIcon() {
return $this->icon;
}
public function getHint() {
return $this->hint;
}
public function setHint($hint) {
$this->hint = $hint;
}
public function getMaxLength() {
return $this->maxlength;
}
public function setMaxLength($maxlength) {
$this->maxlength = $maxlength;
}
public function getSize() {
return $this->size;
}
public function setSize($size) {
$this->size = $size;
}
public function setProperty($name, $value) {
$this->properties[$name] = $value;
}
public function delProperty($name) {
if ($this->hasProperty($name)) unset($this->properties[$name]);
}
public function hasProperty($name) {
return isset($this->properties[$name]);
}
public function getProperty($name) {
if ($this->hasProperty($name)) return $this->properties[$name];
else return null;
}
public function isRdn() {
if ($this->entry) {
//$rdn = get_rdn($this->entry->getDn());
//$attr = $this->name;
//return preg_match("/^${attr}=/", $rdn);
return ($this->name == $this->entry->getRdnAttributeName());
} else {
return false;
}
}
/**
* Visit the attribute
*/
public function accept($visitor) {
$visitor->visit('', $this);
}
}
?>