1: <?php
2: 3: 4: 5: 6: 7: 8: 9:
10:
11: 12: 13: 14: 15: 16:
17: class Smarty_Internal_Compile_Capture extends Smarty_Internal_CompileBase
18: {
19: 20: 21: 22: 23: 24:
25: public $shorttag_order = array('name');
26: 27: 28: 29: 30: 31:
32: public $optional_attributes = array('name', 'assign', 'append');
33:
34: 35: 36: 37: 38: 39: 40: 41:
42: public function compile($args, $compiler)
43: {
44:
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:
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: 63: 64: 65:
66: class Smarty_Internal_Compile_CaptureClose extends Smarty_Internal_CompileBase
67: {
68: 69: 70: 71: 72: 73: 74: 75:
76: public function compile($args, $compiler)
77: {
78:
79: $_attr = $this->getAttributes($compiler, $args);
80:
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:
94: return $_output;
95: }
96: }
97: