diff -r 000000000000 -r 3906ca745819 packages/ssoinabox-webui/root/usr/local/share/ssoinabox/htdocs/includes/smarty/sysplugins/smarty_internal_smartytemplatecompiler.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/packages/ssoinabox-webui/root/usr/local/share/ssoinabox/htdocs/includes/smarty/sysplugins/smarty_internal_smartytemplatecompiler.php Tue Jan 08 23:13:29 2013 -0500 @@ -0,0 +1,127 @@ +smarty = $smarty; + parent::__construct(); + // get required plugins + $this->lexer_class = $lexer_class; + $this->parser_class = $parser_class; + } + + /** + * Methode to compile a Smarty template + * + * @param mixed $_content template source + * @return bool true if compiling succeeded, false if it failed + */ + protected function doCompile($_content) + { + /* here is where the compiling takes place. Smarty + tags in the templates are replaces with PHP code, + then written to compiled files. */ + // init the lexer/parser to compile the template + $this->lex = new $this->lexer_class($_content, $this); + $this->parser = new $this->parser_class($this->lex, $this); + if ($this->smarty->_parserdebug) + $this->parser->PrintTrace(); + // get tokens from lexer and parse them + while ($this->lex->yylex() && !$this->abort_and_recompile) { + if ($this->smarty->_parserdebug) { + echo "
Line {$this->lex->line} Parsing  {$this->parser->yyTokenName[$this->lex->token]} Token " .
+                    htmlentities($this->lex->value) . "
"; + } + $this->parser->doParse($this->lex->token, $this->lex->value); + } + + if ($this->abort_and_recompile) { + // exit here on abort + return false; + } + // finish parsing process + $this->parser->doParse(0, 0); + // check for unclosed tags + if (count($this->_tag_stack) > 0) { + // get stacked info + list($openTag, $_data) = array_pop($this->_tag_stack); + $this->trigger_template_error("unclosed {" . $openTag . "} tag"); + } + // return compiled code + // return str_replace(array("? >\nparser->retvalue); + return $this->parser->retvalue; + } + +} + +?> \ No newline at end of file