Template modifications now add/remove attributes as per the template definition

This commit is contained in:
Deon George
2009-07-05 22:13:17 +10:00
parent 54df56bb1a
commit aa2719f8fe
3 changed files with 79 additions and 16 deletions

View File

@@ -146,6 +146,10 @@ class Attribute {
return count($this->values);
}
public function getSource() {
return $this->source;
}
/**
* Autovalue is called after the attribute is initialised, and thus the values from the ldap server will be set.
*/
@@ -169,9 +173,16 @@ class Attribute {
$this->values = array();
}
public function setOldValue($val) {
$this->oldvalues = $val;
}
public function setValue($new_val) {
if ($this->values) {
if ($this->oldvalues && ($new_val != $this->values)) {
if ($this->values == $new_val)
return;
if ($this->oldvalues) {
debug_dump($this);
debug_dump_backtrace('old values are set',1);
} else
@@ -595,6 +606,7 @@ class Attribute {
case 'readonly':
case 'rows':
case 'size':
case 'values':
case 'verify': $this->$index = $value;
break;
@@ -607,7 +619,6 @@ class Attribute {
elseif (is_string($values) && (strlen($values) > 0))
$this->values = array($values);
}
/**

View File

@@ -175,9 +175,10 @@ class Template extends xmlTemplate {
return;
} else {
$attribute = $this->addAttribute('objectClass',array('values'=>$objectclasses));
$attribute = $this->addAttribute('objectClass',array('values'=>$objectclasses),'XML');
$attribute->justModified();
$attribute->setRequired();
$attribute->hide();
}
$this->rebuildTemplateAttrs();
@@ -266,9 +267,14 @@ class Template extends xmlTemplate {
if (is_null($attribute))
$attribute = $this->addAttribute($attr,array('values'=>$values));
else
if ($attribute->getValues())
$attribute->setValue(array_values($values));
else
if ($attribute->getValues()) {
# Override values to those that are defined in the XML file.
if ($attribute->getSource() != 'XML')
$attribute->setValue(array_values($values));
else
$attribute->setOldValue(array_values($values));
} else
$attribute->initValue(array_values($values));
# Work out the RDN attributes