- added 'exp' object support

release-0.6
alecpl 16 years ago
parent 21cf1ec487
commit 8e1d4af2e5

@ -464,17 +464,29 @@ class rcube_template extends rcube_html_page
* @todo Get rid off eval() once I understand what this does. * @todo Get rid off eval() once I understand what this does.
* @todo Extend this to allow real conditions, not just "set" * @todo Extend this to allow real conditions, not just "set"
* @param string Condition statement * @param string Condition statement
* @return boolean True if condition is met, False is not * @return boolean True if condition is met, False if not
*/ */
private function check_condition($condition) private function check_condition($condition)
{ {
$condition = preg_replace( return eval("return (".$this->parse_expression($condition).");");
}
/**
* Parses expression and replaces variables
*
* @param string Expression statement
* @return string Expression statement
*/
private function parse_expression($expression)
{
return preg_replace(
array( array(
'/session:([a-z0-9_]+)/i', '/session:([a-z0-9_]+)/i',
'/config:([a-z0-9_]+)(:([a-z0-9_]+))?/i', '/config:([a-z0-9_]+)(:([a-z0-9_]+))?/i',
'/env:([a-z0-9_]+)/i', '/env:([a-z0-9_]+)/i',
'/request:([a-z0-9_]+)/ie', '/request:([a-z0-9_]+)/i',
'/cookie:([a-z0-9_]+)/ie' '/cookie:([a-z0-9_]+)/i'
), ),
array( array(
"\$_SESSION['\\1']", "\$_SESSION['\\1']",
@ -483,9 +495,7 @@ class rcube_template extends rcube_html_page
"get_input_value('\\1', RCUBE_INPUT_GPC)", "get_input_value('\\1', RCUBE_INPUT_GPC)",
"\$_COOKIE['\\1']" "\$_COOKIE['\\1']"
), ),
$condition); $expression);
return eval("return (".$condition.");");
} }
@ -619,6 +629,11 @@ class rcube_template extends rcube_html_page
} }
break; break;
// return code for a specified eval expression
case 'exp':
$value = $this->parse_expression($attrib['expression']);
return eval("return Q($value);");
// return variable // return variable
case 'var': case 'var':
$var = explode(':', $attrib['name']); $var = explode(':', $attrib['name']);

Loading…
Cancel
Save