<?php 
/** 
 * Smarty plugin 
 * 
 * @package    Smarty 
 * @subpackage PluginsShared 
 */ 
 
/** 
 * evaluate compiler parameter 
 * 
 * @param array   $params  parameter array as given to the compiler function 
 * @param integer $index   array index of the parameter to convert 
 * @param mixed   $default value to be returned if the parameter is not present 
 * 
 * @return mixed evaluated value of parameter or $default 
 * @throws SmartyException if parameter is not a literal (but an expression, variable, …) 
 * @author Rodney Rehm 
 */ 
function smarty_literal_compiler_param($params, $index, $default = null) 
{ 
    // not set, go default 
    if (!isset($params[$index])) { 
        return $default; 
    } 
    // test if param is a literal 
    if (!preg_match('/^([\'"]?)[a-zA-Z0-9-]+(\\1)$/', $params[$index])) { 
        throw new SmartyException('$param[' . $index . '] is not a literal and is thus not evaluatable at compile time'); 
    } 
 
    $t = null; 
    eval("\$t = " . $params[$index] . ";"); 
 
    return $t; 
} 
 
 |