Subversion Repositories ALCASAR

Rev

Details | Last modification | View Log

Rev Author Line No. Line
2809 rexy 1
<?php
2
/**
3
 * Smarty plugin
4
 *
5
 * @package    Smarty
6
 * @subpackage PluginsShared
7
 */
8
/**
9
 * evaluate compiler parameter
10
 *
11
 * @param array   $params  parameter array as given to the compiler function
12
 * @param integer $index   array index of the parameter to convert
13
 * @param mixed   $default value to be returned if the parameter is not present
14
 *
15
 * @return mixed evaluated value of parameter or $default
16
 * @throws SmartyException if parameter is not a literal (but an expression, variable, …)
17
 * @author Rodney Rehm
18
 */
19
function smarty_literal_compiler_param($params, $index, $default = null)
20
{
21
    // not set, go default
22
    if (!isset($params[ $index ])) {
23
        return $default;
24
    }
25
    // test if param is a literal
26
    if (!preg_match('/^([\'"]?)[a-zA-Z0-9-]+(\\1)$/', $params[ $index ])) {
27
        throw new SmartyException(
28
            '$param[' . $index .
29
            '] is not a literal and is thus not evaluatable at compile time'
30
        );
31
    }
32
    $t = null;
33
    eval("\$t = " . $params[ $index ] . ";");
34
    return $t;
35
}