From 91f8745d84723baa496fe3f76425c8f9aafb61b8 Mon Sep 17 00:00:00 2001 From: alban Date: Fri, 28 Mar 2014 17:42:47 +0100 Subject: [PATCH] [fix] m_variables multidimensinal values parsing and better documentation --- bureau/class/m_variables.php | 53 ++++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 17 deletions(-) diff --git a/bureau/class/m_variables.php b/bureau/class/m_variables.php index 8aecf835..06c3dcaf 100644 --- a/bureau/class/m_variables.php +++ b/bureau/class/m_variables.php @@ -39,6 +39,11 @@ class m_variables { var $replace_array = array(); var $cache_conf = array(); + const TYPE_STRING = "string"; + const TYPE_BOOLEAN = "boolean"; + const TYPE_INTEGER = "integer"; + const TYPE_IP = "ip"; + /** * * @global string $L_FQDN @@ -170,10 +175,17 @@ class m_variables { // Replace needed vars foreach ($variables as $vv => $hh) { - if (!isset($hh['value']) || empty($hh['value'])) { - continue; - } - $variables[$vv]['value'] = strtr($hh['value'], $this->replace_array ); + if (!isset($hh['value']) || empty($hh['value'])) { + continue; + } + if( is_array($hh['value'])){ + foreach($hh["value"] as $key => $val){ + $variables[$vv]['value'][$key] = strtr($hh['value'][$key], $this->replace_array ); + } + } + else{ + $variables[$vv]['value'] = strtr($hh['value'], $this->replace_array ); + } } if ($var && isset($variables[$var])) { @@ -199,23 +211,30 @@ class m_variables { /** * Return a persistent variable. * - * @param string $name - * The name of the variable to return. - * @param mixed $default - * The default value to use if this variable has never been set. - * @param string $createit_comment - * If variable doesn't exist, create it with the default value - * and createit_comment value as comment - * @return mixed - * The value of the variable. + * @param string $name The name of the variable to return. + * @param mixed $default The default value to use if this variable has never been set. + * @param string $createit_comment If variable doesn't exist, create it with the default value + * and createit_comment value as comment + * @param array $type An array defining the variable definition + * ex: array("ns1"=>array('desc'=>'ns name','type'=>'string'),"ip"=>array("desc"=>"here an ip", "type"=>"ip") + * ex: array('desc'=>'ns name','type'=>'string') + * Types can be either + * self::TYPE_BOOLEAN + * self::TYPE_INTEGER + * self::TYPE_IP + * self::TYPE_STRING + * + * @return mixed The value of the variable. */ - function variable_get($name, $default = null, $createit_comment = null, $type=null) { + function variable_get($name, $default = null, $createit_comment = null, $type = null) { $this->variable_init_maybe(); - if (isset($this->cache_conf[$name])) { - return $this->cache_conf[$name]['value']; - } elseif (!is_null($createit_comment)) { + // Attempts to retrieve $name + if (array_key_exists("$name", $this->cache_conf) && !is_null($this->cache_conf["$name"])) { + return $this->cache_conf["$name"]["value"]; + } + if (!is_null($createit_comment)) { $this->variable_update_or_create($name, $default, 'DEFAULT', 'null', 'null', $createit_comment, $type); }