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: }
50: