]> git.mxchange.org Git - friendica.git/blob - library/Smarty/libs/sysplugins/smarty_internal_compile_capture.php
Changes in api
[friendica.git] / library / Smarty / libs / sysplugins / smarty_internal_compile_capture.php
1 <?php
2 /**
3  * Smarty Internal Plugin Compile Capture
4  * Compiles the {capture} tag
5  *
6  * @package    Smarty
7  * @subpackage Compiler
8  * @author     Uwe Tews
9  */
10
11 /**
12  * Smarty Internal Plugin Compile Capture Class
13  *
14  * @package    Smarty
15  * @subpackage Compiler
16  */
17 class Smarty_Internal_Compile_Capture extends Smarty_Internal_CompileBase
18 {
19     /**
20      * Attribute definition: Overwrites base class.
21      *
22      * @var array
23      * @see Smarty_Internal_CompileBase
24      */
25     public $shorttag_order = array('name');
26     /**
27      * Attribute definition: Overwrites base class.
28      *
29      * @var array
30      * @see Smarty_Internal_CompileBase
31      */
32     public $optional_attributes = array('name', 'assign', 'append');
33
34     /**
35      * Compiles code for the {capture} tag
36      *
37      * @param  array  $args     array with attributes from parser
38      * @param  object $compiler compiler object
39      *
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  * Smarty Internal Plugin Compile Captureclose Class
62  *
63  * @package    Smarty
64  * @subpackage Compiler
65  */
66 class Smarty_Internal_Compile_CaptureClose extends Smarty_Internal_CompileBase
67 {
68     /**
69      * Compiles code for the {/capture} tag
70      *
71      * @param  array  $args     array with attributes from parser
72      * @param  object $compiler compiler object
73      *
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
94         return $_output;
95     }
96 }