mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-10-31 20:31:41 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			77 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /*
 | |
|  * This file is part of Smarty.
 | |
|  *
 | |
|  * (c) 2015 Uwe Tews
 | |
|  *
 | |
|  * For the full copyright and license information, please view the LICENSE
 | |
|  * file that was distributed with this source code.
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * Smarty Internal Plugin Compile Child Class
 | |
|  *
 | |
|  * @author Uwe Tews <uwe.tews@googlemail.com>
 | |
|  */
 | |
| class Smarty_Internal_Compile_Child extends Smarty_Internal_CompileBase
 | |
| {
 | |
|     /**
 | |
|      * Attribute definition: Overwrites base class.
 | |
|      *
 | |
|      * @var array
 | |
|      * @see Smarty_Internal_CompileBase
 | |
|      */
 | |
|     public $optional_attributes = array('assign');
 | |
| 
 | |
|     /**
 | |
|      * Tag name
 | |
|      *
 | |
|      * @var string
 | |
|      */
 | |
|     public $tag = 'child';
 | |
| 
 | |
|     /**
 | |
|      * Block type
 | |
|      *
 | |
|      * @var string
 | |
|      */
 | |
|     public $blockType = 'Child';
 | |
| 
 | |
|     /**
 | |
|      * Compiles code for the {child} tag
 | |
|      *
 | |
|      * @param  array                                 $args      array with attributes from parser
 | |
|      * @param  \Smarty_Internal_TemplateCompilerBase $compiler  compiler object
 | |
|      * @param  array                                 $parameter array with compilation parameter
 | |
|      *
 | |
|      * @return string compiled code
 | |
|      * @throws \SmartyCompilerException
 | |
|      */
 | |
|     public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
 | |
|     {
 | |
|         // check and get attributes
 | |
|         $_attr = $this->getAttributes($compiler, $args);
 | |
|         $tag = isset($parameter[0]) ? "'{$parameter[0]}'" : "'{{$this->tag}}'";
 | |
|         if (!isset($compiler->_cache[ 'blockNesting' ])) {
 | |
|             $compiler->trigger_template_error("{$tag} used outside {block} tags ",
 | |
|                                               $compiler->parser->lex->taglineno);
 | |
|         }
 | |
|         $compiler->has_code = true;
 | |
|         $compiler->suppressNocacheProcessing = true;
 | |
|         if ($this->blockType === 'Child') {
 | |
|             $compiler->_cache[ 'blockParams' ][ $compiler->_cache[ 'blockNesting' ] ][ 'callsChild' ] = 'true';
 | |
|         }
 | |
|         $_assign = isset($_attr[ 'assign' ]) ? $_attr[ 'assign' ] : null;
 | |
|         $output = "<?php \n";
 | |
|         if (isset($_assign)) {
 | |
|             $output .= "ob_start();\n";
 | |
|         }
 | |
|         $output .= '$_smarty_tpl->inheritance->call' . $this->blockType . '($_smarty_tpl, $this' .
 | |
|                    ($this->blockType === 'Child' ? '' : ", {$tag}"). ");\n";
 | |
|         if (isset($_assign)) {
 | |
|             $output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean());\n";
 | |
|         }
 | |
|         $output .="?>\n";
 | |
|         return $output;
 | |
|     }
 | |
| } |