equal
deleted
inserted
replaced
|
1 <?php |
|
2 /** |
|
3 * Smarty plugin |
|
4 * |
|
5 * @package Smarty |
|
6 * @subpackage PluginsShared |
|
7 */ |
|
8 |
|
9 /** |
|
10 * evaluate compiler parameter |
|
11 * |
|
12 * @param array $params parameter array as given to the compiler function |
|
13 * @param integer $index array index of the parameter to convert |
|
14 * @param mixed $default value to be returned if the parameter is not present |
|
15 * |
|
16 * @return mixed evaluated value of parameter or $default |
|
17 * @throws SmartyException if parameter is not a literal (but an expression, variable, …) |
|
18 * @author Rodney Rehm |
|
19 */ |
|
20 function smarty_literal_compiler_param($params, $index, $default = null) { |
|
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('$param[' . $index . '] is not a literal and is thus not evaluatable at compile time'); |
|
28 } |
|
29 |
|
30 $t = null; |
|
31 eval("\$t = " . $params[$index] . ";"); |
|
32 |
|
33 return $t; |
|
34 } |