Andy Wermke
2013-04-08 58e3a504b98f68595151fa908536b1e35b043b76
Removed parse_expression() & added error logging to eval_expression().
1 files modified
30 ■■■■ changed files
program/include/rcmail_output_html.php 30 ●●●● patch | view | raw | blame | history
program/include/rcmail_output_html.php
@@ -759,14 +759,11 @@
    /**
     * Parses expression and replaces variables
     *
     * Parse & evaluate a given expression and return its result.
     * @param  string Expression statement
     * @return string Expression value
     */
    protected function parse_expression($expression)
    {
        return preg_replace(
    protected function eval_expression ($expression) {
        $expression = preg_replace(
            array(
                '/session:([a-z0-9_]+)/i',
                '/config:([a-z0-9_]+)(:([a-z0-9_]+))?/i',
@@ -785,16 +782,19 @@
                "\$browser->{'\\1'}",
                $this->template_name,
            ),
            $expression);
    }
    /**
     * Evaluate a given expression and return its result.
     * @param  string Expression statement
     */
    protected function eval_expression ($expression) {
        $expression = $this->parse_expression($expression);
            $expression
        );
        $fn = create_function('$app,$browser,$env', "return ($expression);");
        if(!$fn) {
            rcube::raise_error(array(
                'code' => 505,
                'type' => 'php',
                'file' => __FILE__,
                'line' => __LINE__,
                'message' => "Expression parse error on: ($expression)"), true, false);
        }
        return $fn($this->app, $this->browser, $this->env);
    }