73 lines
2.9 KiB
PHP
73 lines
2.9 KiB
PHP
<?php
|
|
/**
|
|
* Smarty Internal Plugin Compile Registered Block
|
|
* Compiles code for the execution of a registered block function
|
|
*
|
|
* @package Smarty
|
|
* @subpackage Compiler
|
|
* @author Uwe Tews
|
|
*/
|
|
|
|
/**
|
|
* Smarty Internal Plugin Compile Registered Block Class
|
|
*
|
|
* @package Smarty
|
|
* @subpackage Compiler
|
|
*/
|
|
class Smarty_Internal_Compile_Private_Registered_Block extends Smarty_Internal_Compile_Private_Block_Plugin
|
|
{
|
|
/**
|
|
* Setup callback, parameter array and nocache mode
|
|
*
|
|
* @param \Smarty_Internal_TemplateCompilerBase $compiler
|
|
* @param array $_attr attributes
|
|
* @param string $tag
|
|
* @param null $function
|
|
*
|
|
* @return array
|
|
*/
|
|
public function setup(Smarty_Internal_TemplateCompilerBase $compiler, $_attr, $tag, $function)
|
|
{
|
|
if (isset($compiler->smarty->registered_plugins[ Smarty::PLUGIN_BLOCK ][ $tag ])) {
|
|
$tag_info = $compiler->smarty->registered_plugins[ Smarty::PLUGIN_BLOCK ][ $tag ];
|
|
$callback = $tag_info[ 0 ];
|
|
if (is_array($callback)) {
|
|
if (is_object($callback[ 0 ])) {
|
|
$callable = "array(\$_block_plugin{$this->nesting}, '{$callback[1]}')";
|
|
$callback =
|
|
array("\$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0][0]", "->{$callback[1]}");
|
|
} else {
|
|
$callable = "array(\$_block_plugin{$this->nesting}, '{$callback[1]}')";
|
|
$callback =
|
|
array("\$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0][0]", "::{$callback[1]}");
|
|
}
|
|
} else {
|
|
$callable = "\$_block_plugin{$this->nesting}";
|
|
$callback = array("\$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0]", '');
|
|
}
|
|
} else {
|
|
$tag_info = $compiler->default_handler_plugins[ Smarty::PLUGIN_BLOCK ][ $tag ];
|
|
$callback = $tag_info[ 0 ];
|
|
if (is_array($callback)) {
|
|
$callable = "array('{$callback[0]}', '{$callback[1]}')";
|
|
$callback = "{$callback[1]}::{$callback[1]}";
|
|
} else {
|
|
$callable = null;
|
|
}
|
|
}
|
|
$compiler->tag_nocache = !$tag_info[ 1 ] | $compiler->tag_nocache;
|
|
$_paramsArray = array();
|
|
foreach ($_attr as $_key => $_value) {
|
|
if (is_int($_key)) {
|
|
$_paramsArray[] = "$_key=>$_value";
|
|
} elseif ($compiler->template->caching && in_array($_key, $tag_info[ 2 ])) {
|
|
$_value = str_replace('\'', "^#^", $_value);
|
|
$_paramsArray[] = "'$_key'=>^#^.var_export($_value,true).^#^";
|
|
} else {
|
|
$_paramsArray[] = "'$_key'=>$_value";
|
|
}
|
|
}
|
|
return array($callback, $_paramsArray, $callable);
|
|
}
|
|
}
|