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: