Index: class.Template.inc.php =================================================================== RCS file: /cvsroot/phpgwapi/phpgwapi/inc/class.Template.inc.php,v retrieving revision 1.12.4.5 diff -u -r1.12.4.5 class.Template.inc.php --- class.Template.inc.php 8 Jun 2005 11:15:16 -0000 1.12.4.5 +++ class.Template.inc.php 26 Jul 2005 13:23:21 -0000 @@ -183,12 +184,29 @@ } $str = $this->get_var($handle); - reset($this->varkeys); - while (list($k, $v) = each($this->varkeys)) - { - $str = str_replace($v, $this->varvals[$k], $str); - } - return $str; + preg_match_all("/\{([^}]+)\}/",$str,$m,PREG_PATTERN_ORDER); + $m = $m[1]; + if (is_array($m)) + { + $var_keys = array(); + foreach ($m as $k => $v) + { + if (isset($this->varkeys[$v])) + { + $var_keys[$v] = '{' . $v . '}'; + } + } + } + else + { + $var_keys = $this->varkeys; + } + reset($var_keys); + while (list($k,$v) = each($var_keys)) + { + $str = str_replace($v,$this->varvals[$k],$str); + } + return $str; } /* public: psubst(string $handle) @@ -272,12 +290,12 @@ { if (!is_array($varname)) { - return $this->varvals[$varname]; + return @$this->varvals[$varname]; } else { reset($varname); - while(list($k, $v) = each($varname)) + while(list($k,) = each($varname)) { $result[$k] = $this->varvals[$k]; }