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