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