156 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			156 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
| <?php
 | |
| 
 | |
| /**
 | |
|  * Smarty Template Resource Base Object
 | |
|  *
 | |
|  * @package    Smarty
 | |
|  * @subpackage TemplateResources
 | |
|  * @author     Rodney Rehm
 | |
|  */
 | |
| abstract class Smarty_Template_Resource_Base
 | |
| {
 | |
|     /**
 | |
|      * Compiled Filepath
 | |
|      *
 | |
|      * @var string
 | |
|      */
 | |
|     public $filepath = null;
 | |
| 
 | |
|     /**
 | |
|      * Compiled Timestamp
 | |
|      *
 | |
|      * @var integer
 | |
|      */
 | |
|     public $timestamp = null;
 | |
| 
 | |
|     /**
 | |
|      * Compiled Existence
 | |
|      *
 | |
|      * @var boolean
 | |
|      */
 | |
|     public $exists = false;
 | |
| 
 | |
|     /**
 | |
|      * Template Compile Id (Smarty_Internal_Template::$compile_id)
 | |
|      *
 | |
|      * @var string
 | |
|      */
 | |
|     public $compile_id = null;
 | |
| 
 | |
|     /**
 | |
|      * Compiled Content Loaded
 | |
|      *
 | |
|      * @var boolean
 | |
|      */
 | |
|     public $processed = false;
 | |
| 
 | |
|     /**
 | |
|      * unique function name for compiled template code
 | |
|      *
 | |
|      * @var string
 | |
|      */
 | |
|     public $unifunc = '';
 | |
| 
 | |
|     /**
 | |
|      * flag if template does contain nocache code sections
 | |
|      *
 | |
|      * @var bool
 | |
|      */
 | |
|     public $has_nocache_code = false;
 | |
| 
 | |
|     /**
 | |
|      * resource file dependency
 | |
|      *
 | |
|      * @var array
 | |
|      */
 | |
|     public $file_dependency = array();
 | |
| 
 | |
|     /**
 | |
|      * Content buffer
 | |
|      *
 | |
|      * @var string
 | |
|      */
 | |
|     public $content = null;
 | |
| 
 | |
|     /**
 | |
|      * required plugins
 | |
|      *
 | |
|      * @var array
 | |
|      */
 | |
|     public $required_plugins = array();
 | |
| 
 | |
|     /**
 | |
|      * Included subtemplates
 | |
|      *
 | |
|      * @var array
 | |
|      */
 | |
|     public $includes = array();
 | |
| 
 | |
|     /**
 | |
|      * Process resource
 | |
|      *
 | |
|      * @param Smarty_Internal_Template $_template template object
 | |
|      */
 | |
|     abstract public function process(Smarty_Internal_Template $_template);
 | |
| 
 | |
|      /**
 | |
|      * get rendered template content by calling compiled or cached template code
 | |
|      *
 | |
|      * @param string $unifunc function with template code
 | |
|      *
 | |
|      * @return string
 | |
|      * @throws \Exception
 | |
|      */
 | |
|     public function getRenderedTemplateCode(Smarty_Internal_Template $_template, $unifunc = null)
 | |
|     {
 | |
|         $unifunc = isset($unifunc) ? $unifunc : $this->unifunc;
 | |
|         $level = ob_get_level();
 | |
|         try {
 | |
|             if (empty($unifunc) || !is_callable($unifunc)) {
 | |
|                 throw new SmartyException("Invalid compiled template for '{$_template->template_resource}'");
 | |
|             }
 | |
|             if (isset($_template->smarty->security_policy)) {
 | |
|                 $_template->smarty->security_policy->startTemplate($_template);
 | |
|             }
 | |
|             //
 | |
|             // render compiled or saved template code
 | |
|             //
 | |
|             if (!isset($_template->_cache['capture_stack'])) {
 | |
|                 $_template->_cache['capture_stack'] = array();
 | |
|             }
 | |
|             $_saved_capture_level = count($_template->_cache['capture_stack']);
 | |
|             $unifunc($_template);
 | |
|             // any unclosed {capture} tags ?
 | |
|             if ($_saved_capture_level != count($_template->_cache['capture_stack'])) {
 | |
|                 $_template->capture_error();
 | |
|             }
 | |
|             if (isset($_template->smarty->security_policy)) {
 | |
|                 $_template->smarty->security_policy->exitTemplate();
 | |
|             }
 | |
|             return null;
 | |
|         }
 | |
|         catch (Exception $e) {
 | |
|             while (ob_get_level() > $level) {
 | |
|                 ob_end_clean();
 | |
|             }
 | |
|              if (isset($_template->smarty->security_policy)) {
 | |
|                 $_template->smarty->security_policy->exitTemplate();
 | |
|             }
 | |
|             throw $e;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get compiled time stamp
 | |
|      *
 | |
|      * @return int
 | |
|      */
 | |
|     public function getTimeStamp()
 | |
|     {
 | |
|         if ($this->exists && !isset($this->timestamp)) {
 | |
|             $this->timestamp = @filemtime($this->filepath);
 | |
|         }
 | |
|         return $this->timestamp;
 | |
|     }
 | |
| }
 |