smarty_internal_compile_append.php (1579B)
1 <?php 2 /** 3 * Smarty Internal Plugin Compile Append 4 * Compiles the {append} tag 5 * 6 * @package Smarty 7 * @subpackage Compiler 8 * @author Uwe Tews 9 */ 10 11 /** 12 * Smarty Internal Plugin Compile Append Class 13 * 14 * @package Smarty 15 * @subpackage Compiler 16 */ 17 class Smarty_Internal_Compile_Append extends Smarty_Internal_Compile_Assign 18 { 19 /** 20 * Compiles code for the {append} tag 21 * 22 * @param array $args array with attributes from parser 23 * @param object $compiler compiler object 24 * @param array $parameter array with compilation parameter 25 * 26 * @return string compiled code 27 */ 28 public function compile($args, $compiler, $parameter) 29 { 30 // the following must be assigned at runtime because it will be overwritten in parent class 31 $this->required_attributes = array('var', 'value'); 32 $this->shorttag_order = array('var', 'value'); 33 $this->optional_attributes = array('scope', 'index'); 34 // check and get attributes 35 $_attr = $this->getAttributes($compiler, $args); 36 // map to compile assign attributes 37 if (isset($_attr['index'])) { 38 $_params['smarty_internal_index'] = '[' . $_attr['index'] . ']'; 39 unset($_attr['index']); 40 } else { 41 $_params['smarty_internal_index'] = '[]'; 42 } 43 $_new_attr = array(); 44 foreach ($_attr as $key => $value) { 45 $_new_attr[] = array($key => $value); 46 } 47 // call compile assign 48 return parent::compile($_new_attr, $compiler, $_params); 49 } 50 }