2009-12-31 16:38:12 +00:00
<? php
/**
2010-05-25 19:33:55 +00:00
* Smarty Internal Plugin Function Call Handler
2011-03-16 23:57:04 +00:00
*
2010-05-25 19:33:55 +00:00
* @package Smarty
* @subpackage PluginsInternal
2011-03-16 23:57:04 +00:00
* @author Uwe Tews
2010-05-25 19:33:55 +00:00
*/
2010-08-17 15:39:51 +00:00
2009-12-31 16:38:12 +00:00
/**
2010-05-25 19:33:55 +00:00
* This class does call function defined with the {function} tag
2011-09-16 14:19:56 +00:00
*
* @package Smarty
* @subpackage PluginsInternal
2010-05-25 19:33:55 +00:00
*/
2011-09-16 14:19:56 +00:00
class Smarty_Internal_Function_Call_Handler {
/**
* This function handles calls to template functions defined by {function}
* It does create a PHP function at the first call
*
* @param string $_name template function name
* @param Smarty_Internal_Template $_template template object
2011-11-14 14:53:16 +00:00
* @param array $_params Smarty variables passed as call parameter
2011-09-16 14:19:56 +00:00
* @param string $_hash nocache hash value
* @param bool $_nocache nocache flag
*/
public static function call ( $_name , Smarty_Internal_Template $_template , $_params , $_hash , $_nocache )
2009-12-31 16:38:12 +00:00
{
2010-05-25 19:33:55 +00:00
if ( $_nocache ) {
$_function = "smarty_template_function_ { $_name } _nocache" ;
2009-12-31 16:38:12 +00:00
} else {
2010-05-25 19:33:55 +00:00
$_function = "smarty_template_function_ { $_hash } _ { $_name } " ;
2011-03-16 23:57:04 +00:00
}
2010-05-25 19:33:55 +00:00
if ( ! is_callable ( $_function )) {
$_code = "function { $_function } ( \$ _smarty_tpl, \$ params) {
2010-08-17 15:39:51 +00:00
\$ saved_tpl_vars = \$ _smarty_tpl->tpl_vars;
2011-09-16 14:19:56 +00:00
foreach ( \$ _smarty_tpl->smarty->template_functions[' { $_name } ']['parameter'] as \$ key => \$ value) { \$ _smarty_tpl->tpl_vars[ \$ key] = new Smarty_variable( \$ value);};
2010-08-17 15:39:51 +00:00
foreach ( \$ params as \$ key => \$ value) { \$ _smarty_tpl->tpl_vars[ \$ key] = new Smarty_variable( \$ value);}?>" ;
2010-05-25 19:33:55 +00:00
if ( $_nocache ) {
$_code .= preg_replace ( array ( "!<\?php echo \\ '/\*%%SmartyNocache: { $_template -> smarty -> template_functions [ $_name ][ 'nocache_hash' ] } %%\*/|/\*/%%SmartyNocache: { $_template -> smarty -> template_functions [ $_name ][ 'nocache_hash' ] } %%\*/ \\ ';\?>!" ,
"! \\ \'!" ), array ( '' , "'" ), $_template -> smarty -> template_functions [ $_name ][ 'compiled' ]);
2011-09-16 14:19:56 +00:00
$_template -> smarty -> template_functions [ $_name ][ 'called_nocache' ] = true ;
2010-05-25 19:33:55 +00:00
} else {
$_code .= preg_replace ( "/ { $_template -> smarty -> template_functions [ $_name ][ 'nocache_hash' ] } /" , $_template -> properties [ 'nocache_hash' ], $_template -> smarty -> template_functions [ $_name ][ 'compiled' ]);
2011-03-16 23:57:04 +00:00
}
2010-05-25 19:33:55 +00:00
$_code .= "<?php \$ _smarty_tpl->tpl_vars = \$ saved_tpl_vars;}" ;
eval ( $_code );
2011-03-16 23:57:04 +00:00
}
2010-05-25 19:33:55 +00:00
$_function ( $_template , $_params );
2011-03-16 23:57:04 +00:00
}
2011-09-16 14:19:56 +00:00
2011-03-16 23:57:04 +00:00
}
2009-12-31 16:38:12 +00:00
2011-11-14 14:53:16 +00:00
?>