From 030db5b6c0489158b5a4cf1ab6d2542db0519de8 Mon Sep 17 00:00:00 2001 From: thomascube <thomas@roundcube.net> Date: Thu, 18 Feb 2010 13:01:31 -0500 Subject: [PATCH] Better regex for template expressions + fix indentation --- program/include/rcube_template.php | 25 ++++++++++++++++++------- 1 files changed, 18 insertions(+), 7 deletions(-) diff --git a/program/include/rcube_template.php b/program/include/rcube_template.php index 5226f8d..5bd9136 100755 --- a/program/include/rcube_template.php +++ b/program/include/rcube_template.php @@ -73,7 +73,7 @@ $this->add_script($javascript, 'head_top'); $this->add_script($javascript_foot, 'foot'); $this->scripts_path = 'program/js/'; - $this->include_script('jquery-1.3.min.js'); + $this->include_script('jquery-1.4.min.js'); $this->include_script('common.js'); $this->include_script('app.js'); @@ -290,7 +290,9 @@ if ($templ != 'iframe') { // prevent from endless loops if ($exit != 'recur' && $this->app->plugins->is_processing('render_page')) { - raise_error(array('code' => 505, 'type' => 'php', 'message' => 'Recursion alert: ignoring output->send()'), true, false); + raise_error(array('code' => 505, 'type' => 'php', + 'file' => __FILE__, 'line' => __LINE__, + 'message' => 'Recursion alert: ignoring output->send()'), true, false); return; } $this->parse($templ, false); @@ -455,7 +457,16 @@ { $GLOBALS['__version'] = Q(RCMAIL_VERSION); $GLOBALS['__comm_path'] = Q($this->app->comm_path); - return preg_replace('/\$(__[a-z0-9_\-]+)/e', '$GLOBALS["\\1"]', $input); + return preg_replace_callback('/\$(__[a-z0-9_\-]+)/', + array($this, 'globals_callback'), $input); + } + + /** + * Callback funtion for preg_replace_callback() in parse_with_globals() + */ + private function globals_callback($matches) + { + return $GLOBALS[$matches[1]]; } /** @@ -544,7 +555,7 @@ * Parses expression and replaces variables * * @param string Expression statement - * @return string Expression statement + * @return string Expression value */ private function parse_expression($expression) { @@ -552,9 +563,9 @@ array( '/session:([a-z0-9_]+)/i', '/config:([a-z0-9_]+)(:([a-z0-9_]+))?/i', - '/env:([a-z0-9_]+)/i', - '/request:([a-z0-9_]+)/i', - '/cookie:([a-z0-9_]+)/i', + '/env:([a-z0-9_-]+)/i', + '/request:([a-z0-9_-]+)/i', + '/cookie:([a-z0-9_-]+)/i', '/browser:([a-z0-9_]+)/i' ), array( -- Gitblit v1.9.1