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 * Smarty Internal Plugin Compile Capture Class
13 */
14 class Smarty_Internal_Compile_Capture extends Smarty_Internal_CompileBase {
15 /**
16 * Compiles code for the {capture} tag
17 *
18 * @param array $args array with attributes from parser
19 * @param object $compiler compiler object
20 * @return string compiled code
21 */
22 public function compile($args, $compiler)
23 {
24 $this->compiler = $compiler;
25 $this->optional_attributes = array('name', 'assign', 'append');
26 // check and get attributes
27 $_attr = $this->_get_attributes($args);
29 $buffer = isset($_attr['name']) ? $_attr['name'] : "'default'";
30 $assign = isset($_attr['assign']) ? $_attr['assign'] : null;
31 $append = isset($_attr['append']) ? $_attr['append'] : null;
33 $this->compiler->_capture_stack[] = array($buffer, $assign, $append);
35 $_output = "<?php ob_start(); ?>";
37 return $_output;
38 }
39 }
41 /**
42 * Smarty Internal Plugin Compile Captureclose Class
43 */
44 class Smarty_Internal_Compile_CaptureClose extends Smarty_Internal_CompileBase {
45 /**
46 * Compiles code for the {/capture} tag
47 *
48 * @param array $args array with attributes from parser
49 * @param object $compiler compiler object
50 * @return string compiled code
51 */
52 public function compile($args, $compiler)
53 {
54 $this->compiler = $compiler;
55 // check and get attributes
56 $_attr = $this->_get_attributes($args);
58 list($buffer, $assign, $append) = array_pop($this->compiler->_capture_stack);
60 $_output = "<?php ";
61 if (isset($assign)) {
62 $_output .= " \$_smarty_tpl->assign($assign, ob_get_contents());";
63 }
64 if (isset($append)) {
65 $_output .= " \$_smarty_tpl->append($append, ob_get_contents());";
66 }
67 $_output .= " \$_smarty_tpl->smarty->_smarty_vars['capture'][$buffer]=ob_get_clean();?>";
68 return $_output;
69 }
70 }
72 ?>