subtrees)) { $this->subtrees = array_merge($this->subtrees, $subtree->subtrees); } else { if ($subtree->data !== '') { $this->subtrees[] = $subtree; } } } /** * Append array to subtree * * @param \Smarty_Internal_Templateparser $parser * @param \Smarty_Internal_ParseTree[] $array */ public function append_array(Smarty_Internal_Templateparser $parser, $array = array()) { if (!empty($array)) { $this->subtrees = array_merge($this->subtrees, (array) $array); } } /** * Prepend array to subtree * * @param \Smarty_Internal_Templateparser $parser * @param \Smarty_Internal_ParseTree[] $array */ public function prepend_array(Smarty_Internal_Templateparser $parser, $array = array()) { if (!empty($array)) { $this->subtrees = array_merge((array) $array, $this->subtrees); } } /** * Sanitize and merge subtree buffers together * * @param \Smarty_Internal_Templateparser $parser * * @return string template code content */ public function to_smarty_php(Smarty_Internal_Templateparser $parser) { $code = ''; for ($key = 0, $cnt = count($this->subtrees); $key < $cnt; $key ++) { if ($this->subtrees[ $key ] instanceof Smarty_Internal_ParseTree_Text) { $subtree = $this->subtrees[ $key ]->to_smarty_php($parser); while ($key + 1 < $cnt && ($this->subtrees[ $key + 1 ] instanceof Smarty_Internal_ParseTree_Text || $this->subtrees[ $key + 1 ]->data == '')) { $key ++; if ($this->subtrees[ $key ]->data == '') { continue; } $subtree .= $this->subtrees[ $key ]->to_smarty_php($parser); } if ($subtree == '') { continue; } $code .= preg_replace('/((<%)|(%>)|(<\?php)|(<\?)|(\?>)|(<\/?script))/', "\n", $subtree); continue; } if ($this->subtrees[ $key ] instanceof Smarty_Internal_ParseTree_Tag) { $subtree = $this->subtrees[ $key ]->to_smarty_php($parser); while ($key + 1 < $cnt && ($this->subtrees[ $key + 1 ] instanceof Smarty_Internal_ParseTree_Tag || $this->subtrees[ $key + 1 ]->data == '')) { $key ++; if ($this->subtrees[ $key ]->data == '') { continue; } $subtree = $parser->compiler->appendCode($subtree, $this->subtrees[ $key ]->to_smarty_php($parser)); } if ($subtree == '') { continue; } $code .= $subtree; continue; } $code .= $this->subtrees[ $key ]->to_smarty_php($parser); } return $code; } }