Index: branches/RC/core/kernel/processors/tag_processor.php =================================================================== diff -u -N -r10610 -r11538 --- branches/RC/core/kernel/processors/tag_processor.php (.../tag_processor.php) (revision 10610) +++ branches/RC/core/kernel/processors/tag_processor.php (.../tag_processor.php) (revision 11538) @@ -74,7 +74,7 @@ return md5($k); } - + function ProcessParsedTag($tag, $params, $prefix, $file='unknown', $line=0) { $Method = $tag; @@ -85,13 +85,13 @@ $backup_prefix = $this->Prefix; $backup_special = $this->Special; - + if ($this->Application->ConfigValue('SystemTagCache') && isset($params['cache_timeout'])) { if ($res = $this->Application->CacheGet($this->FormCacheKey($tag, $params, $prefix))) { return $res; } } - + $original_params = $params; $flag_values = $this->PreparePostProcess($params); @@ -214,16 +214,34 @@ * @return string * @access public */ - function SelectParam($params, $possible_names) + function SelectParam($params, $possible_names = null) { - if (!is_array($params)) return; - if (!is_array($possible_names)) + if (!isset($possible_names)) { + // select 1st parameter non-empty parameter value + $possible_names = explode(',', $params['possible_names']); + foreach ($possible_names as $param_name) { + $value = $this->Application->Parser->GetParam($param_name); + if ((string)$value != '') { + return $value; + } + } - $possible_names = explode(',', $possible_names); - foreach ($possible_names as $name) - { + return ''; + } + + if (!is_array($params)) { + // really happens? + return; + } + + if (!is_array($possible_names)) { + $possible_names = explode(',', $possible_names); + } + + foreach ($possible_names as $name) { if( isset($params[$name]) ) return $params[$name]; } + return false; } }