4de3276123d85eb0ce8eccdf6ec2a5319da78b00
[GitHub/Stricted/Domain-Control-Panel.git] / lib / api / smarty / sysplugins / smarty_internal_parsetree_dq.php
1 <?php
2
3 /**
4 * Double quoted string inside a tag.
5 *
6 * @package Smarty
7 * @subpackage Compiler
8 * @ignore
9 */
10 /**
11 * Double quoted string inside a tag.
12 *
13 * @package Smarty
14 * @subpackage Compiler
15 * @ignore
16 */
17 class Smarty_Internal_ParseTree_Dq extends Smarty_Internal_ParseTree
18 {
19 /**
20 * Create parse tree buffer for double quoted string subtrees
21 *
22 * @param object $parser parser object
23 * @param Smarty_Internal_ParseTree $subtree parsetree buffer
24 */
25 public function __construct($parser, Smarty_Internal_ParseTree $subtree)
26 {
27 $this->parser = $parser;
28 $this->subtrees[] = $subtree;
29 if ($subtree instanceof Smarty_Internal_ParseTree_Tag) {
30 $this->parser->block_nesting_level = count($this->parser->compiler->_tag_stack);
31 }
32 }
33
34 /**
35 * Append buffer to subtree
36 *
37 * @param Smarty_Internal_ParseTree $subtree parsetree buffer
38 */
39 public function append_subtree(Smarty_Internal_ParseTree $subtree)
40 {
41 $last_subtree = count($this->subtrees) - 1;
42 if ($last_subtree >= 0 && $this->subtrees[$last_subtree] instanceof Smarty_Internal_ParseTree_Tag && $this->subtrees[$last_subtree]->saved_block_nesting < $this->parser->block_nesting_level) {
43 if ($subtree instanceof Smarty_Internal_ParseTree_Code) {
44 $this->subtrees[$last_subtree]->data .= '<?php echo ' . $subtree->data . ';?>';
45 } elseif ($subtree instanceof Smarty_Internal_ParseTree_DqContent) {
46 $this->subtrees[$last_subtree]->data .= '<?php echo "' . $subtree->data . '";?>';
47 } else {
48 $this->subtrees[$last_subtree]->data .= $subtree->data;
49 }
50 } else {
51 $this->subtrees[] = $subtree;
52 }
53 if ($subtree instanceof Smarty_Internal_ParseTree_Tag) {
54 $this->parser->block_nesting_level = count($this->parser->compiler->_tag_stack);
55 }
56 }
57
58 /**
59 * Merge subtree buffer content together
60 *
61 * @return string compiled template code
62 */
63 public function to_smarty_php()
64 {
65 $code = '';
66 foreach ($this->subtrees as $subtree) {
67 if ($code !== "") {
68 $code .= ".";
69 }
70 if ($subtree instanceof Smarty_Internal_ParseTree_Tag) {
71 $more_php = $subtree->assign_to_var();
72 } else {
73 $more_php = $subtree->to_smarty_php();
74 }
75
76 $code .= $more_php;
77
78 if (!$subtree instanceof Smarty_Internal_ParseTree_DqContent) {
79 $this->parser->compiler->has_variable_string = true;
80 }
81 }
82
83 return $code;
84 }
85 }