Subversion Repositories ALCASAR

Rev

Details | Last modification | View Log

Rev Author Line No. Line
2809 rexy 1
<?php
2
/**
3
 * Smarty Internal Plugin Compile Shared Inheritance
4
 * Shared methods for {extends} and {block} tags
5
 *
6
 * @package    Smarty
7
 * @subpackage Compiler
8
 * @author     Uwe Tews
9
 */
10
 
11
/**
12
 * Smarty Internal Plugin Compile Shared Inheritance Class
13
 *
14
 * @package    Smarty
15
 * @subpackage Compiler
16
 */
17
class Smarty_Internal_Compile_Shared_Inheritance extends Smarty_Internal_CompileBase
18
{
19
    /**
20
     * Compile inheritance initialization code as prefix
21
     *
22
     * @param \Smarty_Internal_TemplateCompilerBase $compiler
23
     * @param bool|false                            $initChildSequence if true force child template
24
     */
25
    public static function postCompile(Smarty_Internal_TemplateCompilerBase $compiler, $initChildSequence = false)
26
    {
27
        $compiler->prefixCompiledCode .= "<?php \$_smarty_tpl->_loadInheritance();\n\$_smarty_tpl->inheritance->init(\$_smarty_tpl, " .
28
                                         var_export($initChildSequence, true) . ");\n?>\n";
29
    }
30
 
31
    /**
32
     * Register post compile callback to compile inheritance initialization code
33
     *
34
     * @param \Smarty_Internal_TemplateCompilerBase $compiler
35
     * @param bool|false                            $initChildSequence if true force child template
36
     */
37
    public function registerInit(Smarty_Internal_TemplateCompilerBase $compiler, $initChildSequence = false)
38
    {
39
        if ($initChildSequence || !isset($compiler->_cache[ 'inheritanceInit' ])) {
40
            $compiler->registerPostCompileCallback(
41
                array('Smarty_Internal_Compile_Shared_Inheritance', 'postCompile'),
42
                array($initChildSequence),
43
                'inheritanceInit',
44
                $initChildSequence
45
            );
46
            $compiler->_cache[ 'inheritanceInit' ] = true;
47
        }
48
    }
49
}