$NetBSD: patch-lib_Attribute.php,v 1.1 2022/04/16 03:11:28 khorben Exp $ --- lib/Attribute.php.orig 2022-04-15 22:51:57.000000000 +0000 +++ lib/Attribute.php @@ -1,917 +0,0 @@ -getServer($server_id); - - $sattr = $server->getSchemaAttribute($name); - if ($sattr) { - $this->name = $sattr->getName(false); - $this->setLDAPdetails($sattr); - - } else - $this->name = $name; - - $this->source = $source; - - # XML attributes are shown by default - switch ($source) { - case 'XML': $this->show(); - $this->setXML($values); - - break; - - default: - if (! isset($values['values'])) - debug_dump_backtrace('no index "values"',1); - - $this->initValue($values['values']); - } - - # Should this attribute be hidden - if ($server->isAttrHidden($this->name)) - $this->forcehide = true; - - # Should this attribute value be read only - if ($server->isAttrReadOnly($this->name)) - $this->readonly = true; - - # Should this attribute value be unique - if ($server->isAttrUnique($this->name)) - $this->unique = true; - } - - /** - * Return the name of the attribute. - * - * @param boolean $lower - Return the attribute in normal or lower case (default lower) - * @param boolean $real - Return the real attribute name (with ;binary, or just the name) - * @return string Attribute name - */ - public function getName($lower=true,$real=false) { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs,$this->name); - - if ($real) - return $lower ? strtolower($this->name) : $this->name; - else - return $lower ? strtolower($this->real_attr_name()) : $this->real_attr_name(); - } - - public function getValues() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->values); - - return $this->values; - } - - public function getOldValues() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->oldvalues); - - return $this->oldvalues; - } - - public function getValueCount() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs,$this->values); - - return count($this->values); - } - - public function getSource() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->source); - - return $this->source; - } - - /** - * Autovalue is called after the attribute is initialised, and thus the values from the ldap server will be set. - */ - public function autoValue($new_val) { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs); - - if ($this->values) - return; - - $this->values = $new_val; - } - - public function initValue($new_val) { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs); - - if ($this->values || $this->oldvalues) { - debug_dump(array('new_val'=>$new_val,'this'=>$this)); - debug_dump_backtrace('new and/or old values are set',1); - } - - $this->values = $new_val; - } - - public function clearValue() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs); - - $this->values = array(); - } - - public function setOldValue($val) { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs); - - $this->oldvalues = $val; - } - - public function setValue($new_val) { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs); - - if ($this->values) { - if ($this->values == $new_val) - return; - - if ($this->oldvalues) { - debug_dump($this); - debug_dump_backtrace('old values are set',1); - } else - $this->oldvalues = $this->values; - } - - if ($new_val == $this->values) - return; - - $this->values = $new_val; - $this->justModified(); - } - - public function addValue($new_val,$i=-1) { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs); - - 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 delValue($i=-1) { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs); - - if ($i < 0) - $this->setValue(array()); - - if (! $this->hasBeenModified()) - $this->oldvalues = $this->values; - - if (isset($this->values[$i])) { - unset($this->values[$i]); - $this->values = array_values($this->values); - $this->justModified(); - } - } - - public function getValue($i) { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs); - - if (isset($this->values[$i])) - return $this->values[$i]; - else - return null; - } - - public function getOldValue($i) { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs); - - if (isset($this->oldvalues[$i])) - return $this->oldvalues[$i]; - else - return null; - } - - public function getMinValueCount() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->min_value_count); - - return $this->min_value_count; - } - - public function setMinValueCount($min) { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs); - - $this->min_value_count = $min; - } - - public function getMaxValueCount() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->max_value_count); - - return $this->max_value_count; - } - - public function setMaxValueCount($max) { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs); - - $this->max_value_count = $max; - } - - public function haveMoreValues() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs); - - if ($this->getMaxValueCount() < 0 || ($this->getValueCount() < $this->getMaxValueCount())) - return true; - else - return false; - } - - public function justModified() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs); - - $this->modified = true; - } - - public function hasBeenModified() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->modified); - - return $this->modified; - } - - public function isForceDelete() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->forcedelete); - - return $this->forcedelete; - } - - public function setForceDelete() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs); - - $this->forcedelete = true; - $this->oldvalues = $this->values; - $this->values = array(); - $this->justModified(); - } - - public function isInternal() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->internal); - - return $this->internal; - } - - public function setInternal() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs); - - $this->internal = true; - } - - public function isRequired() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs); - - if ($this->getMinValueCount() > 0) - return true; - elseif ($this->ldaptype == 'must') - return true; - elseif ($this->isRDN()) - return true; - else - return false; - } - - public function isMay() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs); - - if (($this->ldaptype == 'may') && ! $this->isRequired()) - return true; - else - return false; - } - - public function setType($type) { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs); - - $this->type = strtolower($type); - } - - public function getType() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->type); - - return $this->type; - } - - public function setLDAPtype($type) { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs); - - $this->ldaptype = strtolower($type); - } - - public function getLDAPtype() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->ldaptype); - - return $this->ldaptype; - } - - public function setProperties($properties) { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs); - - foreach ($properties as $index => $value) { - if ($index == 'maxvalnb') { - $this->setMaxValueCount($value); - continue; - - } elseif ($index == 'minvalnb') { - $this->setMinValueCount($value); - continue; - - } elseif ($index == 'maxlength') { - $this->setMinValueCount($value); - continue; - - } elseif ($index == 'hidden') { - $this->visible = $value; - continue; - - } elseif (in_array($index,array('cols','rows'))) { - # @todo To be implemented - continue; - } - - if (isset($this->$index)) - $this->$index = $value; - else { - debug_dump($this); - debug_dump_backtrace(sprintf('Unknown property (%s) with value (%s) for (%s)',$index,$value,$this->getName()),1); - } - } - } - - public function setRequired() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs); - - if ($this->getMinValueCount() <= 0) - $this->setMinValueCount(1); - } - - public function setOptional() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs); - - $this->setMinValueCount(0); - } - - public function isReadOnly() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->readonly); - - return $this->readonly; - } - - public function setReadOnly() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs); - - $this->readonly = true; - } - - public function isMultiple() { - return false; - } - - public function isVisible() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs); - - return $this->visible && (! $this->forcehide); - } - - public function hide() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs); - - $this->visible = false; - } - - public function show() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs); - - $this->visible = true; - } - - public function haveFriendlyName() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs); - - return $_SESSION[APPCONFIG]->haveFriendlyName($this); - } - - public function getFriendlyName() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->display); - - if ($this->display) - return $this->display; - else - return $_SESSION[APPCONFIG]->getFriendlyName($this); - } - - public function setDescription($description) { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs); - - $this->description = $description; - } - - public function getDescription() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->description); - - return $this->description; - } - - public function setIcon($icon) { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs); - - $this->icon = $icon; - } - - public function getIcon() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->icon); - - return $this->icon ? sprintf('%s/%s',IMGDIR,$this->icon) : ''; - } - - public function getHint() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->hint); - - return $this->hint; - } - - public function setHint($hint) { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs); - - $this->hint = $hint; - } - - public function getMaxLength() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->maxlength); - - return $this->maxlength; - } - - public function setMaxLength($maxlength) { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs); - - $this->maxlength = $maxlength; - } - - public function getSize() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->size); - - return $this->size; - } - - public function setSize($size) { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs); - - $this->size = $size; - } - - public function getSpacer() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->spacer); - - return $this->spacer; - } - - public function getPage() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->page); - - return $this->page; - } - public function setPage($page) { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs); - - $this->page = $page; - } - - public function getOnChange() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->onchange); - - return $this->onchange; - } - - public function getHelper() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->helper); - - return $this->helper; - } - - public function getHelperValue() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->helpervalue); - - return $this->helpervalue; - } - - public function getVerify() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->verify); - - return $this->verify; - } - - public function setRDN($rdn) { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs); - - $this->rdn = $rdn; - } - - /** - * Return if this attribute is an RDN attribute - * - * @return boolean - */ - public function isRDN() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs,$this->rdn); - - return $this->rdn; - } - - /** - * Capture all the LDAP details we are interested in - * - * @param sattr Schema Attribute - */ - private function setLDAPdetails($sattr) { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs); - - # By default, set this as a MAY attribute, later processing should make it a MUST attribute if it is. - if (! $this->ldaptype) - $this->ldaptype = 'may'; - - # Store our Aliases - foreach ($sattr->getAliases() as $alias) - array_push($this->aliases,strtolower($alias)); - - if ($sattr->getIsSingleValue()) - $this->setMaxValueCount(1); - } - - /** - * Return a list of aliases for this Attribute (as defined by the schema) - * This list will be lowercase. - */ - public function getAliases() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->aliases); - - return $this->aliases; - } - - public function getAutoValue() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->autovalue); - - return $this->autovalue; - } - - public function getPostValue() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->postvalue); - - return $this->postvalue; - } - - public function setPostValue($postvalue) { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs); - - $this->postvalue = $postvalue; - } - - public function setXML($values) { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs); - - # Mostly all the time, this should be an array - if (is_array($values)) - foreach ($values as $index => $value) - switch ($index) { - # Helpers should be accompanied with a attribute. - case 'helper': - if (! isset($values['post']) && ! $_SESSION[APPCONFIG]->getValue('appearance','hide_template_warning')) - system_message(array( - 'title'=>sprintf('%s [%s]',_('Missing [post] setting in XML file'),$index), - 'body'=>_('[helper] needs an accompanying [post] action.'), - 'type'=>'warn')); - - if (isset($value['value']) && ! is_array($value['value']) && preg_match('/^=php\.(\w+)\((.*)\)$/',$value['value'],$matches)) { - $this->helpervalue['function'] = $matches[1]; - $this->helpervalue['args'] = $matches[2]; - - unset ($value['value']); - } - - foreach ($value as $i => $detail) { - if (! in_array($i,array('default','display','id','value'))) { - if (! $_SESSION[APPCONFIG]->getValue('appearance','hide_template_warning')) - system_message(array( - 'title'=>sprintf('%s [%s]',_('Unknown XML setting'),$i), - 'body'=>sprintf('%s [%s]',_('Unknown XML type setting for helper will be ignored.'),$detail), - 'type'=>'warn')); - - unset($value[$i]); - } - } - - $this->$index = $value; - - break; - - case 'hidden': $value ? $this->visible = false : $this->visible = true; - break; - - case 'spacer': $value ? $this->$index = true : $this->$index = false; - break; - - # Essentially, we ignore type, it is used to select an Attribute type in the Factory. But we'll generated a warning if there is an unknown type. - case 'type': - if (! in_array($value,array('password','multiselect','select','textarea')) && ! $_SESSION[APPCONFIG]->getValue('appearance','hide_template_warning')) - system_message(array( - 'title'=>sprintf('%s [%s]',_('Unknown XML setting'),$index), - 'body'=>sprintf('%s [%s]',_('Unknown XML type setting will be ignored.'),$value), - 'type'=>'warn')); - - break; - - case 'post': - if (preg_match('/^=php\.(\w+)\((.*)\)$/',$value,$matches)) { - $this->postvalue['function'] = $matches[1]; - $this->postvalue['args'] = $matches[2]; - - } else - if (! $_SESSION[APPCONFIG]->getValue('appearance','hide_template_warning')) - system_message(array( - 'title'=>sprintf('%s [%s]',_('Unknown XML setting'),$index), - 'body'=>sprintf('%s [%s]',_('Unknown XML type setting will be ignored.'),$value), - 'type'=>'warn')); - - case 'value': - if (is_array($value)) - foreach ($value as $x => $y) { - if (! $this->haveMoreValues()) { - system_message(array( - 'title'=>_('Automatically removed attribute values from template'), - 'body'=>sprintf('%s [%s]',_('Template defines more values than can be accepted by attribute.'),$this->getName(true)), - 'type'=>'warn')); - - $this->clearValue(); - - break; - - } else - $this->addValue($x,$y); - } - - else - # Check to see if the value is auto generated. - if (preg_match('/^=php\.(\w+)\((.*)\)$/',$value,$matches)) { - $this->autovalue['function'] = $matches[1]; - $this->autovalue['args'] = $matches[2]; - - # We'll add a hint too - if (! $this->hint) - $this->hint = _('Automatically determined'); - - } else - $this->addValue($value); - - break; - - # Queries - case 'ordersort': - - # Creation/Editing Templates - case 'cols': - case 'default': - case 'display': - case 'hint': - case 'icon': - case 'maxlength': - case 'onchange': - case 'order': - case 'page': - case 'readonly': - case 'rows': - case 'size': - case 'values': - case 'verify': $this->$index = $value; - break; - - case 'max': - if ($this->getMaxValueCount() == -1) - $this->setMaxValueCount($value); - - default: - if (! $_SESSION[APPCONFIG]->getValue('appearance','hide_template_warning')) - system_message(array( - 'title'=>sprintf('%s [%s]',_('Unknown XML setting'),$index), - 'body'=>sprintf('%s [%s]',_('Unknown attribute setting will be ignored.'),serialize($value)), - 'type'=>'warn')); - } - - elseif (is_string($values) && (strlen($values) > 0)) - $this->values = array($values); - } - - /** - * Display the values removed in an attribute. - */ - public function getRemovedValues() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs); - - return array_diff($this->getOldValues(),$this->getValues()); - } - - /** - * Display the values removed in an attribute. - */ - public function getAddedValues() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs); - - return array_diff($this->getValues(),$this->getOldValues()); - } - - /** - * Prunes off anything after the ";" in an attr name. This is useful for - * attributes that may have ";binary" appended to their names. With - * real_attr_name(), you can more easily fetch these attributes' schema - * with their "real" attribute name. - * - * @param string $attr_name The name of the attribute to examine. - * @return string - */ - private function real_attr_name() { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->name); - - return preg_replace('/;.*$/U','',$this->name); - } - - /** - * Does this attribute need supporting JS - */ - public function needJS($type=null) { - if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS')) - debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs); - - if (is_null($type)) { - foreach (array('focus','blur','validate') as $type) - if ($this->needJS($type)) - return true; - - return false; - - } elseif ($type == 'focus') { - # We dont have any focus javascript routines. - return false; - - } elseif ($type == 'blur') { - if ($this->onchange || $this->isRequired()) - return true; - else - return false; - - } elseif ($type == 'validate') { - if ($this->isRequired()) - return true; - else - return false; - - } else - debug_dump_backtrace(sprintf('Unknown JS request %s',$type),1); - } -} -?>