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: | } |
36: |