packages/ssoinabox-webui/root/usr/local/share/ssoinabox/htdocs/includes/smarty/sysplugins/smarty_internal_smartytemplatecompiler.php
changeset 0 3906ca745819
equal deleted inserted replaced
-1:000000000000 0:3906ca745819
       
     1 <?php
       
     2 /**
       
     3  * Smarty Internal Plugin Smarty Template Compiler Base
       
     4  *
       
     5  * This file contains the basic classes and methodes for compiling Smarty templates with lexer/parser
       
     6  *
       
     7  * @package Smarty
       
     8  * @subpackage Compiler
       
     9  * @author Uwe Tews
       
    10  */
       
    11 
       
    12 /**
       
    13  * @ignore
       
    14  */
       
    15 include ("smarty_internal_parsetree.php");
       
    16 
       
    17 /**
       
    18  * Class SmartyTemplateCompiler
       
    19  *
       
    20  * @package Smarty
       
    21  * @subpackage Compiler
       
    22  */
       
    23 class Smarty_Internal_SmartyTemplateCompiler extends Smarty_Internal_TemplateCompilerBase {
       
    24 
       
    25     /**
       
    26      * Lexer class name
       
    27      *
       
    28      * @var string
       
    29      */
       
    30     public $lexer_class;
       
    31 
       
    32     /**
       
    33      * Parser class name
       
    34      *
       
    35      * @var string
       
    36      */
       
    37     public $parser_class;
       
    38 
       
    39     /**
       
    40      * Lexer object
       
    41      *
       
    42      * @var object
       
    43      */
       
    44     public $lex;
       
    45 
       
    46     /**
       
    47      * Parser object
       
    48      *
       
    49      * @var object
       
    50      */
       
    51     public $parser;
       
    52 
       
    53     /**
       
    54      * Smarty object
       
    55      *
       
    56      * @var object
       
    57      */
       
    58     public $smarty;
       
    59 
       
    60     /**
       
    61      * array of vars which can be compiled in local scope
       
    62      *
       
    63      * @var array
       
    64      */
       
    65     public $local_var = array();
       
    66 
       
    67     /**
       
    68      * Initialize compiler
       
    69      *
       
    70      * @param string $lexer_class  class name
       
    71      * @param string $parser_class class name
       
    72      * @param Smarty $smarty       global instance
       
    73      */
       
    74     public function __construct($lexer_class, $parser_class, $smarty)
       
    75     {
       
    76         $this->smarty = $smarty;
       
    77         parent::__construct();
       
    78         // get required plugins
       
    79         $this->lexer_class = $lexer_class;
       
    80         $this->parser_class = $parser_class;
       
    81     }
       
    82 
       
    83     /**
       
    84      * Methode to compile a Smarty template
       
    85      *
       
    86      * @param  mixed $_content template source
       
    87      * @return bool true if compiling succeeded, false if it failed
       
    88      */
       
    89     protected function doCompile($_content)
       
    90     {
       
    91         /* here is where the compiling takes place. Smarty
       
    92           tags in the templates are replaces with PHP code,
       
    93           then written to compiled files. */
       
    94         // init the lexer/parser to compile the template
       
    95         $this->lex = new $this->lexer_class($_content, $this);
       
    96         $this->parser = new $this->parser_class($this->lex, $this);
       
    97         if ($this->smarty->_parserdebug)
       
    98             $this->parser->PrintTrace();
       
    99         // get tokens from lexer and parse them
       
   100         while ($this->lex->yylex() && !$this->abort_and_recompile) {
       
   101             if ($this->smarty->_parserdebug) {
       
   102                 echo "<pre>Line {$this->lex->line} Parsing  {$this->parser->yyTokenName[$this->lex->token]} Token " .
       
   103                     htmlentities($this->lex->value) . "</pre>";
       
   104             }
       
   105             $this->parser->doParse($this->lex->token, $this->lex->value);
       
   106         }
       
   107 
       
   108         if ($this->abort_and_recompile) {
       
   109             // exit here on abort
       
   110             return false;
       
   111         }
       
   112         // finish parsing process
       
   113         $this->parser->doParse(0, 0);
       
   114         // check for unclosed tags
       
   115         if (count($this->_tag_stack) > 0) {
       
   116             // get stacked info
       
   117             list($openTag, $_data) = array_pop($this->_tag_stack);
       
   118             $this->trigger_template_error("unclosed {" . $openTag . "} tag");
       
   119         }
       
   120         // return compiled code
       
   121         // return str_replace(array("? >\n<?php","? ><?php"), array('',''), $this->parser->retvalue);
       
   122         return $this->parser->retvalue;
       
   123     }
       
   124 
       
   125 }
       
   126 
       
   127 ?>