From eca44ab35ed61f6391ba1f66d216d6078e9454cc Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Fri, 7 Feb 2014 13:55:10 +0100 Subject: [PATCH] Synchronized changes and improvements between server and interface part for template library --- interface/lib/classes/tpl.inc.php | 100 +++++++++++++++--------------- server/lib/classes/tpl.inc.php | 8 ++- 2 files changed, 55 insertions(+), 53 deletions(-) diff --git a/interface/lib/classes/tpl.inc.php b/interface/lib/classes/tpl.inc.php index 4b411e2c3c..34df2a9343 100644 --- a/interface/lib/classes/tpl.inc.php +++ b/interface/lib/classes/tpl.inc.php @@ -234,12 +234,12 @@ if (!defined('vlibTemplateClassLoaded')) { if (is_array($k)) { foreach($k as $key => $value){ $key = ($this->OPTIONS['CASELESS']) ? strtolower(trim($key)) : trim($key); - if (preg_match('/^[A-Za-z]+[A-Za-z0-9_]*$/', $key) && $value !== null ) { + if (preg_match('/^[A-Za-z_]+[A-Za-z0-9_]*$/', $key) && $value !== null ) { $this->_vars[$key] = $value; } } } else { - if (preg_match('/^[A-Za-z]+[A-Za-z0-9_]*$/', $k) && $v !== null) { + if (preg_match('/^[A-Za-z_]+[A-Za-z0-9_]*$/', $k) && $v !== null) { if ($this->OPTIONS['CASELESS']) $k = strtolower($k); $this->_vars[trim($k)] = $v; } else { @@ -287,7 +287,7 @@ if (!defined('vlibTemplateClassLoaded')) { for ($i = 0; $i < $num_args; $i++) { $var = func_get_arg($i); if ($this->OPTIONS['CASELESS']) $var = strtolower($var); - if (!preg_match('/^[A-Za-z]+[A-Za-z0-9_]*$/', $var)) continue; + if (!preg_match('/^[A-Za-z_]+[A-Za-z0-9_]*$/', $var)) continue; unset($this->_vars[$var]); } return true; @@ -344,7 +344,7 @@ if (!defined('vlibTemplateClassLoaded')) { */ public function setLoop($k, $v) { - if (is_array($v) && preg_match('/^[A-Za-z]+[A-Za-z0-9_]*$/', $k)) { + if (is_array($v) && preg_match('/^[A-Za-z_]+[A-Za-z0-9_]*$/', $k)) { $k = ($this->OPTIONS['CASELESS']) ? strtolower(trim($k)) : trim($k); $this->_arrvars[$k] = array(); if ($this->OPTIONS['SET_LOOP_VAR'] && !empty($v)) $this->setvar($k, 1); @@ -864,7 +864,7 @@ if (!defined('vlibTemplateClassLoaded')) { $regex = '/(<|<\/|{|{\/|){1}'; - $regex.= '([\r\n|\n|\r])?/i'; - $data = preg_replace_callback($regex, array($this, _parseTag), $data); + $regex.= '/i'; + $data = preg_replace_callback($regex, array($this, '_parseTag'), $data); if ($this->_cache) { // add cache if need be $this->_createCache($data); @@ -1026,7 +1006,7 @@ if (!defined('vlibTemplateClassLoaded')) { * @access private * @return string used for eval'ing */ - private function _parseIf($varname, $value = null, $op = null, $namespace = null) + private function _parseIf($varname, $value = null, $op = null, $namespace = null, $format = null) { if (isset($namespace)) $namespace = substr($namespace, 0, -1); $comp_str = ''; // used for extended if statements @@ -1065,9 +1045,19 @@ if (!defined('vlibTemplateClassLoaded')) { } } if ($this->OPTIONS['GLOBAL_VARS'] && empty($namespace)) { - return '(('.$retstr.'[\''.$varname.'\'] !== null) ? '.$retstr.'[\''.$varname.'\'] : $this->_vars[\''.$varname.'\'])'.$comp_str; - } else { - return $retstr."['".$varname."']".$comp_str; + $retstr = '(('.$retstr.'[\''.$varname.'\'] !== null) ? '.$retstr.'[\''.$varname.'\'] : $this->_vars[\''.$varname.'\'])'; + if(isset($format) && isset($value) && $format == 'version') { + return 'version_compare(' . $retstr . ', \'' . $value . '\', \'' . (!empty($op) ? $op : '==') . '\')'; + } else { + return $retstr.$comp_str; + } + } + else { + if(isset($format) && isset($value) && $format == 'version') { + return 'version_compare(' . $retstr."['".$varname."']" . ', \'' . $value . '\', \'' . (!empty($op) ? $op : '==') . '\')'; + } else { + return $retstr."['".$varname."']".$comp_str; + } } } @@ -1186,26 +1176,36 @@ if (!defined('vlibTemplateClassLoaded')) { $wholetag = $args[0]; $openclose = $args[1]; $tag = strtolower($args[2]); - $newline = $args[9]; - - if ($tag == 'else') return ''.$newline; + + if ($tag == 'else') return ''; if ($tag == 'tmpl_include') return $wholetag; // ignore tmpl_include tags if (preg_match("/^<\/|{\/|