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: