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