Code

Readded smarty
[gosa.git] / gosa-core / include / smarty / sysplugins / smarty_internal_compile_capture.php
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  */
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 {
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');
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);
47         $buffer = isset($_attr['name']) ? $_attr['name'] : "'default'";
48         $assign = isset($_attr['assign']) ? $_attr['assign'] : 'null';
49         $append = isset($_attr['append']) ? $_attr['append'] : 'null';
51         $compiler->_capture_stack[] = 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[] = array($buffer, $assign, $append); ob_start(); ?>";
56         return $_output;
57     }
59 }
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 {
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         }
85         list($buffer, $assign, $append, $compiler->nocache) = array_pop($compiler->_capture_stack);
87         $_output = "<?php list(\$_capture_buffer, \$_capture_assign, \$_capture_append) = array_pop(\$_smarty_tpl->_capture_stack);\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     }
96 }
98 ?>