2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< ? php  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
									
										
										
										
											2010-02-27 23:28:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  Smarty  Internal  Plugin  Smarty  Template  Compiler  Base 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  file  contains  the  basic  classes  and  methodes  for  compiling  Smarty  templates  with  lexer / parser 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ package  Smarty 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ subpackage  Compiler 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ author  Uwe  Tews  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-17 15:39:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
									
										
										
										
											2010-02-27 23:28:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  Main  compiler  class 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								class  Smarty_Internal_TemplateCompilerBase  {  
						 
					
						
							
								
									
										
										
										
											2010-01-09 19:23:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // hash for nocache sections
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    private  $nocache_hash  =  null ;  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // suppress generation of nocache code
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-05 17:03:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  $suppressNocacheProcessing  =  false ;  
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    // compile tag objects
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  $_tag_objects  =  array ();  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // tag stack
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  $_tag_stack  =  array ();  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // current template
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-09 21:20:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  $template  =  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-11 21:34:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // optional log of tag/attributes
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  $used_tags  =  array (); 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-27 23:28:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     *  Initialize  compiler 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    public  function  __construct () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> nocache_hash  =  str_replace ( '.' ,  '-' ,  uniqid ( rand (),  true )); 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  
							 
						 
					
						
							
								
									
										
										
										
											2011-01-14 18:39:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-27 23:28:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     *  Methode  to  compile  a  Smarty  template 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param   $template  template  object  to  compile 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ return  bool  true  if  compiling  succeeded ,  false  if  it  failed 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  compileTemplate ( $template ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-07 19:33:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( empty ( $template -> properties [ 'nocache_hash' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $template -> properties [ 'nocache_hash' ]  =  $this -> nocache_hash ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $this -> nocache_hash  =  $template -> properties [ 'nocache_hash' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // flag for nochache sections
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> nocache  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> tag_nocache  =  false ;  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // save template object in compiler class
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> template  =  $template ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> smarty -> _current_file  =  $this -> template -> getTemplateFilepath ();  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // template header code
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $template_header  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! $template -> suppressHeader )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $template_header  .=  " <?php /* Smarty version  "  .  Smarty :: SMARTY_VERSION  .  " , created on  "  .  strftime ( " %Y-%m-%d %H:%M:%S " )  .  " \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $template_header  .=  "          compiled from  \" "  .  $this -> template -> getTemplateFilepath ()  .  " \"  */ ?> \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        do  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // flag for aborting current and start recompile
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $this -> abort_and_recompile  =  false ;  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // get template source
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $_content  =  $template -> getTemplateSource ();  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // run prefilter if required
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( isset ( $this -> smarty -> autoload_filters [ 'pre' ])  ||  isset ( $this -> smarty -> registered_filters [ 'pre' ]))  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-22 19:43:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                $template -> template_source  =  $_content  =  Smarty_Internal_Filter_Handler :: runFilter ( 'pre' ,  $_content ,  $template ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // on empty template just return header
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( $_content  ==  '' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                if  ( $template -> suppressFileDependency )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    $template -> compiled_template  =  '' ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    $template -> compiled_template  =  $template_header  .  $template -> createPropertyHeader (); 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // call compiler
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $_compiled_code  =  $this -> doCompile ( $_content ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 16:23:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        }  while  ( $this -> abort_and_recompile );  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // return compiled code to template object
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( $template -> suppressFileDependency )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $template -> compiled_template  =  $_compiled_code ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 16:23:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $template -> compiled_template  =  $template_header  .  $template -> createPropertyHeader ()  .  $_compiled_code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // run postfilter if required
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( isset ( $this -> smarty -> autoload_filters [ 'post' ])  ||  isset ( $this -> smarty -> registered_filters [ 'post' ]))  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 19:17:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $template -> compiled_template  =  Smarty_Internal_Filter_Handler :: runFilter ( 'post' ,  $template -> compiled_template ,  $template ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        }  
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-27 23:28:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     *  Compile  Tag 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  This  is  a  call  back  from  the  lexer / parser 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  It  executes  the  required  compile  plugin  for  the  Smarty  tag 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  string  $tag  tag  name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  array  $args  array  with  tag  attributes 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-11 21:34:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     *  @ param  array  $parameter  array  with  compilation  parameter 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-27 23:28:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     *  @ return  string  compiled  code 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-11 21:34:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  compileTag ( $tag ,  $args ,  $parameter  =  array ()) 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // $args contains the attributes parsed and compiled by the lexer/parser
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // assume that tag does compile into code, but creates no HTML output
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> has_code  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-11 21:34:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $this -> has_output  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // log tag/attributes
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( isset ( $this -> smarty -> get_used_tags )  &&  $this -> smarty -> get_used_tags )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        	$this -> used_tags []  =  array ( $tag , $args ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// check nocache option flag
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( in_array ( " 'nocache' " , $args )  ||  in_array ( array ( 'nocache' => 'true' ), $args ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        		||  in_array ( array ( 'nocache' => '"true"' ), $args )  ||  in_array ( array ( 'nocache' => " 'true' " ), $args ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        	$this -> tag_nocache  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // compile the smarty tag (required compile classes to compile the tag are autoloaded)
 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-11 21:34:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  (( $_output  =  $this -> callTagCompiler ( $tag ,  $args ,  $parameter ))  ===  false )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-11 17:01:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( isset ( $this -> smarty -> template_functions [ $tag ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // template defined by {template} tag
 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-11 21:34:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                $args [ '_attr' ][ 'name' ]  =  " ' "  .  $tag  .  " ' " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $_output  =  $this -> callTagCompiler ( 'call' ,  $args ,  $parameter ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-11 17:01:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( $_output  !==  false )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( $_output  !==  true )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // did we get compiled code
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( $this -> has_code )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // Does it create output?
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( $this -> has_output )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        $_output  .=  " \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                    }  
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    // return compiled code
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    return  $_output ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                }  
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // tag did not produce compiled code
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-11 21:34:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            // map_named attributes
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( isset ( $args [ '_attr' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                foreach  ( $args [ '_attr' ]  as  $key  =>  $attribute )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( is_array ( $attribute ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        $args  =  array_merge ( $args ,  $attribute ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            }  
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            // not an internal compiler tag
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-30 14:00:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( strlen ( $tag )  <  6  ||  substr ( $tag ,  - 5 )  !=  'close' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                // check if tag is a registered object
 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-11 21:34:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( isset ( $this -> smarty -> registered_objects [ $tag ])  &&  isset ( $parameter [ 'object_methode' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    $methode  =  $parameter [ 'object_methode' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    if  ( ! in_array ( $methode ,  $this -> smarty -> registered_objects [ $tag ][ 3 ])  && 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            ( empty ( $this -> smarty -> registered_objects [ $tag ][ 1 ])  ||  in_array ( $methode ,  $this -> smarty -> registered_objects [ $tag ][ 1 ])))  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-11 21:34:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        return  $this -> callTagCompiler ( 'private_object_function' ,  $args ,  $parameter ,  $tag ,  $methode ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    }  elseif  ( in_array ( $methode ,  $this -> smarty -> registered_objects [ $tag ][ 3 ]))  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-11 21:34:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        return  $this -> callTagCompiler ( 'private_object_block_function' ,  $args ,  $parameter ,  $tag ,  $methode ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        return  $this -> trigger_template_error  ( 'unallowed methode "'  .  $methode  .  '" in registered object "'  .  $tag  .  '"' ,  $this -> lex -> taglineno ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                    }  
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // check if tag is registered
 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-11 21:34:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                foreach  ( array ( Smarty :: PLUGIN_COMPILER ,  Smarty :: PLUGIN_FUNCTION ,  Smarty :: PLUGIN_BLOCK )  as  $type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    if  ( isset ( $this -> smarty -> registered_plugins [ $type ][ $tag ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        // if compiler function plugin call it now
 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-11 21:34:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        if  ( $type  ==  Smarty :: PLUGIN_COMPILER )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            $new_args  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            foreach  ( $args  as  $mixed )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                $new_args  =  array_merge ( $new_args ,  $mixed ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            }  
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            if  ( ! $this -> smarty -> registered_plugins [ $type ][ $tag ][ 1 ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                $this -> tag_nocache  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                            }  
							 
						 
					
						
							
								
									
										
										
										
											2010-07-01 19:57:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            $function  =  $this -> smarty -> registered_plugins [ $type ][ $tag ][ 0 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            if  ( ! is_array ( $function ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-11 21:34:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                return  $function ( $new_args ,  $this ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-01 19:57:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            }  else  if  ( is_object ( $function [ 0 ]))  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-11 21:34:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                return  $this -> smarty -> registered_plugins [ $type ][ $tag ][ 0 ][ 0 ] -> $function [ 1 ]( $new_args ,  $this ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-01 19:57:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-11 21:34:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                return  call_user_func_array ( $this -> smarty -> registered_plugins [ $type ][ $tag ][ 0 ],  array ( $new_args ,  $this )); 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-01 19:57:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            }  
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                        }  
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        // compile registered function or block function
 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-11 21:34:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        if  ( $type  ==  Smarty :: PLUGIN_FUNCTION  ||  $type  ==  Smarty :: PLUGIN_BLOCK )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            return  $this -> callTagCompiler ( 'private_registered_'  .  $type ,  $args ,  $parameter ,  $tag ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                        }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    }  
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // check plugins from plugins folder
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                foreach  ( $this -> smarty -> plugin_search_order  as  $plugin_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-13 04:10:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    if  ( $plugin_type  ==  Smarty :: PLUGIN_BLOCK  &&  $this -> smarty -> loadPlugin ( 'smarty_compiler_'  .  $tag ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                        $plugin  =  'smarty_compiler_'  .  $tag ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-09 21:20:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        if  ( is_callable ( $plugin ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-31 13:47:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        	// convert arguments format for old compiler plugins
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            $new_args  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            foreach  ( $args  as  $mixed )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                $new_args  =  array_merge ( $new_args ,  $mixed ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            return  $plugin ( $new_args ,  $this -> smarty ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-09 21:20:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        }  
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                        if  ( class_exists ( $plugin ,  false ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-27 23:28:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            $plugin_object  =  new  $plugin ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            if  ( method_exists ( $plugin_object ,  'compile' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                return  $plugin_object -> compile ( $args ,  $this ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            }  
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                        }  
							 
						 
					
						
							
								
									
										
										
										
											2010-08-13 10:39:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        throw  new  SmartyException ( " Plugin  \" { $tag } \"  not callable " ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-01 12:07:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        if  ( $function  =  $this -> getPlugin ( $tag ,  $plugin_type ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-11 21:34:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            return  $this -> callTagCompiler ( 'private_'  .  $plugin_type  .  '_plugin' ,  $args ,  $parameter ,  $tag ,  $function ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // compile closing tag of block function
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $base_tag  =  substr ( $tag ,  0 ,  - 5 );  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // check if closing tag is a registered object
 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-11 21:34:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( isset ( $this -> smarty -> registered_objects [ $base_tag ])  &&  isset ( $parameter [ 'object_methode' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    $methode  =  $parameter [ 'object_methode' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    if  ( in_array ( $methode ,  $this -> smarty -> registered_objects [ $base_tag ][ 3 ]))  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-11 21:34:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        return  $this -> callTagCompiler ( 'private_object_block_function' ,  $args ,  $parameter ,  $tag ,  $methode ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        return  $this -> trigger_template_error  ( 'unallowed closing tag methode "'  .  $methode  .  '" in registered object "'  .  $base_tag  .  '"' ,  $this -> lex -> taglineno ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // registered block tag ?
 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-11 21:34:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( isset ( $this -> smarty -> registered_plugins [ Smarty :: PLUGIN_BLOCK ][ $base_tag ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    return  $this -> callTagCompiler ( 'private_registered_block' ,  $args ,  $parameter ,  $tag ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // block plugin?
 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-11 21:34:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( $function  =  $this -> getPlugin ( $base_tag ,  Smarty :: PLUGIN_BLOCK ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    return  $this -> callTagCompiler ( 'private_block_plugin' ,  $args ,  $parameter ,  $tag ,  $function ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                }  
							 
						 
					
						
							
								
									
										
										
										
											2010-11-13 04:10:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( $this -> smarty -> loadPlugin ( 'smarty_compiler_'  .  $tag ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    $plugin  =  'smarty_compiler_'  .  $tag ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-09 21:20:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    if  ( is_callable ( $plugin ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-27 23:28:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        return  $plugin ( $args ,  $this -> smarty ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-09 21:20:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    }  
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    if  ( class_exists ( $plugin ,  false ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-27 23:28:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        $plugin_object  =  new  $plugin ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        if  ( method_exists ( $plugin_object ,  'compile' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            return  $plugin_object -> compile ( $args ,  $this ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        }  
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                    }  
							 
						 
					
						
							
								
									
										
										
										
											2010-08-13 10:39:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    throw  new  SmartyException ( " Plugin  \" { $tag } \"  not callable " ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            }  
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $this -> trigger_template_error  ( " unknown tag  \" "  .  $tag  .  " \" " ,  $this -> lex -> taglineno ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-27 23:28:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     *  lazy  loads  internal  compile  plugin  for  tag  and  calls  the  compile  methode 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  compile  objects  cached  for  reuse . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  class  name  format :   Smarty_Internal_Compile_TagName 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  plugin  filename  format :  Smarty_Internal_Tagname . php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param   $tag  string  tag  name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param   $args  array  with  tag  attributes 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param   $param1  optional  parameter 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param   $param2  optional  parameter 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param   $param3  optional  parameter 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ return  string  compiled  code 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  callTagCompiler ( $tag ,  $args ,  $param1  =  null ,  $param2  =  null ,  $param3  =  null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // re-use object if already exists
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( isset ( self :: $_tag_objects [ $tag ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // compile this tag
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-27 23:28:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            return  self :: $_tag_objects [ $tag ] -> compile ( $args ,  $this ,  $param1 ,  $param2 ,  $param3 ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // lazy load internal compiler plugin
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $class_name  =  'Smarty_Internal_Compile_'  .  $tag ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-13 04:10:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( $this -> smarty -> loadPlugin ( $class_name ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            // use plugin if found
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            self :: $_tag_objects [ $tag ]  =  new  $class_name ;  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // compile this tag
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-27 23:28:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            return  self :: $_tag_objects [ $tag ] -> compile ( $args ,  $this ,  $param1 ,  $param2 ,  $param3 ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        }  
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // no internal compile plugin for this tag
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-27 23:28:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     *  Check  for  plugins  and  return  function  name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param   $pugin_name  string  name  of  plugin  or  function 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param   $type  string  type  of  plugin 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ return  string  call  name  of  function 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  getPlugin ( $plugin_name ,  $type ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-05 17:03:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $function  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( $this -> template -> caching  &&  ( $this -> nocache  ||  $this -> tag_nocache ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( isset ( $this -> template -> required_plugins [ 'nocache' ][ $plugin_name ][ $type ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $function  =  $this -> template -> required_plugins [ 'nocache' ][ $plugin_name ][ $type ][ 'function' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            }  else  if  ( isset ( $this -> template -> required_plugins [ 'compiled' ][ $plugin_name ][ $type ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $this -> template -> required_plugins [ 'nocache' ][ $plugin_name ][ $type ]  =  $this -> template -> required_plugins [ 'compiled' ][ $plugin_name ][ $type ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $function  =  $this -> template -> required_plugins [ 'nocache' ][ $plugin_name ][ $type ][ 'function' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            }  
							 
						 
					
						
							
								
									
										
										
										
											2010-02-05 17:03:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( isset ( $this -> template -> required_plugins [ 'compiled' ][ $plugin_name ][ $type ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $function  =  $this -> template -> required_plugins [ 'compiled' ][ $plugin_name ][ $type ][ 'function' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            }  else  if  ( isset ( $this -> template -> required_plugins [ 'compiled' ][ $plugin_name ][ $type ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $this -> template -> required_plugins [ 'compiled' ][ $plugin_name ][ $type ]  =  $this -> template -> required_plugins [ 'nocache' ][ $plugin_name ][ $type ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $function  =  $this -> template -> required_plugins [ 'compiled' ][ $plugin_name ][ $type ][ 'function' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( isset ( $function ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( $type  ==  'modifier' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-07 15:10:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                $this -> template -> saved_modifier [ $plugin_name ]  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            }  
							 
						 
					
						
							
								
									
										
										
										
											2010-02-05 17:03:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            return  $function ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        }  
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // loop through plugin dirs and find the plugin
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-05 17:03:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $function  =  'smarty_'  .  $type  .  '_'  .  $plugin_name ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $found  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        foreach (( array ) $this -> smarty -> plugins_dir  as  $_plugin_dir )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $file  =  rtrim ( $_plugin_dir ,  '/\\' )  .  DS  .  $type  .  '.'  .  $plugin_name  .  '.php' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( file_exists ( $file ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-31 16:38:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                // require_once($file);
 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                $found  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( $found )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-31 16:38:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( $this -> template -> caching  &&  ( $this -> nocache  ||  $this -> tag_nocache ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-05 17:03:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                $this -> template -> required_plugins [ 'nocache' ][ $plugin_name ][ $type ][ 'file' ]  =  $file ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $this -> template -> required_plugins [ 'nocache' ][ $plugin_name ][ $type ][ 'function' ]  =  $function ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-05 17:03:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                $this -> template -> required_plugins [ 'compiled' ][ $plugin_name ][ $type ][ 'file' ]  =  $file ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $this -> template -> required_plugins [ 'compiled' ][ $plugin_name ][ $type ][ 'function' ]  =  $function ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-31 16:38:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( $type  ==  'modifier' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-07 15:19:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                $this -> template -> saved_modifier [ $plugin_name ]  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-31 16:38:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            }  
							 
						 
					
						
							
								
									
										
										
										
											2010-02-05 17:03:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            return  $function ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-01 12:07:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        }  
							 
						 
					
						
							
								
									
										
										
										
											2010-02-05 17:03:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( is_callable ( $function ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-01 12:07:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            // plugin function is defined in the script
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-05 17:03:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            return  $function ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        }  
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-27 23:28:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     *  Inject  inline  code  for  nocache  template  sections 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  This  method  gets  the  content  of  each  template  element  from  the  parser . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  If  the  content  is  compiled  code  and  it  should  be  not  cached  the  code  is  injected 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  into  the  rendered  output . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  string  $content  content  of  template  element 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  boolean  $tag_nocache  true  if  the  parser  detected  a  nocache  situation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  boolean  $is_code  true  if  content  is  compiled  code 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ return  string  content 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  processNocacheCode  ( $content ,  $is_code ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // If the template is not evaluated and we have a nocache section and or a nocache tag
 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-09 19:23:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( $is_code  &&  ! empty ( $content ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            // generate replacement code
 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-09 19:23:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  (( ! $this -> template -> resource_object -> isEvaluated  ||  $this -> template -> forceNocache )  &&  $this -> template -> caching  &&  ! $this -> suppressNocacheProcessing  && 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ( $this -> nocache  ||  $this -> tag_nocache  ||  $this -> template -> forceNocache  ==  2 ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                $this -> template -> has_nocache_code  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $_output  =  str_replace ( " ' " ,  " \ ' " ,  $content ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-17 21:05:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                $_output  =  str_replace ( " ^#^ " ,  " ' " ,  $_output ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-14 20:57:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                $_output  =  " <?php echo '/*%%SmartyNocache: { $this -> nocache_hash } %%*/ "  .  $_output  .  " /*/%%SmartyNocache: { $this -> nocache_hash } %%*/';?> " ;  
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                // make sure we include modifer plugins for nocache code
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-07 15:19:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( isset ( $this -> template -> saved_modifier ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    foreach  ( $this -> template -> saved_modifier  as  $plugin_name  =>  $dummy )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-05 17:03:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        if  ( isset ( $this -> template -> required_plugins [ 'compiled' ][ $plugin_name ][ 'modifier' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            $this -> template -> required_plugins [ 'nocache' ][ $plugin_name ][ 'modifier' ]  =  $this -> template -> required_plugins [ 'compiled' ][ $plugin_name ][ 'modifier' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                        }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    }  
							 
						 
					
						
							
								
									
										
										
										
											2010-04-12 15:06:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    $this -> template -> saved_modifier  =  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $_output  =  $content ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            }  
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $_output  =  $content ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        }  
							 
						 
					
						
							
								
									
										
										
										
											2010-01-09 19:23:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $this -> suppressNocacheProcessing  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-07 13:08:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $this -> tag_nocache  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $_output ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-27 23:28:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     *  display  compiler  error  messages  without  dying 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  If  parameter  $args  is  empty  it  is  a  parser  detected  syntax  error . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  In  this  case  the  parser  is  called  to  obtain  information  about  expected  tokens . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  If  parameter  $args  contains  a  string  this  is  used  as  error  message 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param   $args  string  individual  error  message  or  null 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  trigger_template_error ( $args  =  null ,  $line  =  null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // get template source line which has error
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! isset ( $line ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $line  =  $this -> lex -> line ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $match  =  preg_split ( " / \n / " ,  $this -> lex -> data ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-23 23:36:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $error_text  =  'Syntax Error in template "'  .  $this -> template -> getTemplateFilepath ()  .  '"  on line '  .  $line  .  ' "'  .  htmlspecialchars ( trim ( preg_replace ( '![\t\r\n]+!' , ' ' , $match [ $line - 1 ])))  .  '" ' ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 14:26:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( isset ( $args ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // individual error message
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $error_text  .=  $args ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // expected token from parser
 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-23 23:36:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $error_text  .=  ' - Unexpected "'  .  $this -> lex -> value . '"' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( count ( $this -> parser -> yy_get_expected_tokens ( $this -> parser -> yymajor ))  <=  4  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            	foreach  ( $this -> parser -> yy_get_expected_tokens ( $this -> parser -> yymajor )  as  $token )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            	    $exp_token  =  $this -> parser -> yyTokenName [ $token ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            	    if  ( isset ( $this -> lex -> smarty_token_names [ $exp_token ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            	        // token type from lexer
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            	        $expect []  =  '"'  .  $this -> lex -> smarty_token_names [ $exp_token ]  .  '"' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            	    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            	        // otherwise internal token name
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            	        $expect []  =  $this -> parser -> yyTokenName [ $token ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            	    }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            	}  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            	$error_text  .=  ', expected one of: '  .  implode ( ' , ' ,  $expect ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        	} 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        }  
							 
						 
					
						
							
								
									
										
										
										
											2010-08-13 10:39:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        throw  new  SmartyCompilerException ( $error_text ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 20:12:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    }  
							 
						 
					
						
							
								
									
										
										
										
											2010-11-11 21:34:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}   
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-02-27 23:28:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								?>