From ab5d8d4e07bb3c8230d0285ef8902ef1979fce51 Mon Sep 17 00:00:00 2001 From: emkael Date: Thu, 18 Oct 2018 02:39:34 +0200 Subject: Updating Smarty --- .../smarty_internal_parsetree_template.php | 129 +++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 lib/smarty/sysplugins/smarty_internal_parsetree_template.php (limited to 'lib/smarty/sysplugins/smarty_internal_parsetree_template.php') diff --git a/lib/smarty/sysplugins/smarty_internal_parsetree_template.php b/lib/smarty/sysplugins/smarty_internal_parsetree_template.php new file mode 100644 index 0000000..8e716bd --- /dev/null +++ b/lib/smarty/sysplugins/smarty_internal_parsetree_template.php @@ -0,0 +1,129 @@ +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; + } +} -- cgit v1.2.3