Вход Регистрация
Файл: app/lib/smarty/sysplugins/smarty_internal_compile_private_registered_block.php
Строк: 60
<?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);
    }
}
Онлайн: 2
Реклама