|
1 <?php |
|
2 /** |
|
3 * Smarty Internal Plugin Compile Capture |
|
4 * |
|
5 * Compiles the {capture} tag |
|
6 * |
|
7 * @package Smarty |
|
8 * @subpackage Compiler |
|
9 * @author Uwe Tews |
|
10 */ |
|
11 |
|
12 /** |
|
13 * Smarty Internal Plugin Compile Capture Class |
|
14 * |
|
15 * @package Smarty |
|
16 * @subpackage Compiler |
|
17 */ |
|
18 class Smarty_Internal_Compile_Capture extends Smarty_Internal_CompileBase { |
|
19 |
|
20 /** |
|
21 * Attribute definition: Overwrites base class. |
|
22 * |
|
23 * @var array |
|
24 * @see Smarty_Internal_CompileBase |
|
25 */ |
|
26 public $shorttag_order = array('name'); |
|
27 /** |
|
28 * Attribute definition: Overwrites base class. |
|
29 * |
|
30 * @var array |
|
31 * @see Smarty_Internal_CompileBase |
|
32 */ |
|
33 public $optional_attributes = array('name', 'assign', 'append'); |
|
34 |
|
35 /** |
|
36 * Compiles code for the {capture} tag |
|
37 * |
|
38 * @param array $args array with attributes from parser |
|
39 * @param object $compiler compiler object |
|
40 * @return string compiled code |
|
41 */ |
|
42 public function compile($args, $compiler) |
|
43 { |
|
44 // check and get attributes |
|
45 $_attr = $this->getAttributes($compiler, $args); |
|
46 |
|
47 $buffer = isset($_attr['name']) ? $_attr['name'] : "'default'"; |
|
48 $assign = isset($_attr['assign']) ? $_attr['assign'] : 'null'; |
|
49 $append = isset($_attr['append']) ? $_attr['append'] : 'null'; |
|
50 |
|
51 $compiler->_capture_stack[0][] = array($buffer, $assign, $append, $compiler->nocache); |
|
52 // maybe nocache because of nocache variables |
|
53 $compiler->nocache = $compiler->nocache | $compiler->tag_nocache; |
|
54 $_output = "<?php \$_smarty_tpl->_capture_stack[0][] = array($buffer, $assign, $append); ob_start(); ?>"; |
|
55 |
|
56 return $_output; |
|
57 } |
|
58 |
|
59 } |
|
60 |
|
61 /** |
|
62 * Smarty Internal Plugin Compile Captureclose Class |
|
63 * |
|
64 * @package Smarty |
|
65 * @subpackage Compiler |
|
66 */ |
|
67 class Smarty_Internal_Compile_CaptureClose extends Smarty_Internal_CompileBase { |
|
68 |
|
69 /** |
|
70 * Compiles code for the {/capture} tag |
|
71 * |
|
72 * @param array $args array with attributes from parser |
|
73 * @param object $compiler compiler object |
|
74 * @return string compiled code |
|
75 */ |
|
76 public function compile($args, $compiler) |
|
77 { |
|
78 // check and get attributes |
|
79 $_attr = $this->getAttributes($compiler, $args); |
|
80 // must endblock be nocache? |
|
81 if ($compiler->nocache) { |
|
82 $compiler->tag_nocache = true; |
|
83 } |
|
84 |
|
85 list($buffer, $assign, $append, $compiler->nocache) = array_pop($compiler->_capture_stack[0]); |
|
86 |
|
87 $_output = "<?php list(\$_capture_buffer, \$_capture_assign, \$_capture_append) = array_pop(\$_smarty_tpl->_capture_stack[0]);\n"; |
|
88 $_output .= "if (!empty(\$_capture_buffer)) {\n"; |
|
89 $_output .= " if (isset(\$_capture_assign)) \$_smarty_tpl->assign(\$_capture_assign, ob_get_contents());\n"; |
|
90 $_output .= " if (isset( \$_capture_append)) \$_smarty_tpl->append( \$_capture_append, ob_get_contents());\n"; |
|
91 $_output .= " Smarty::\$_smarty_vars['capture'][\$_capture_buffer]=ob_get_clean();\n"; |
|
92 $_output .= "} else \$_smarty_tpl->capture_error();?>"; |
|
93 return $_output; |
|
94 } |
|
95 |
|
96 } |
|
97 |
|
98 ?> |