mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-10-31 04:11:37 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			161 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			161 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?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();
 | |
| 
 | |
|     /**
 | |
|      * Flag if this is a cache resource
 | |
|      *
 | |
|      * @var bool
 | |
|      */
 | |
|     public $isCache = false;
 | |
| 
 | |
|     /**
 | |
|      * 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 \Smarty_Internal_Template $_template
 | |
|      * @param string                    $unifunc function with template code
 | |
|      *
 | |
|      * @return string
 | |
|      * @throws \Exception
 | |
|      */
 | |
|     public function getRenderedTemplateCode(Smarty_Internal_Template $_template, $unifunc = null)
 | |
|     {
 | |
|         $smarty = &$_template->smarty;
 | |
|         $_template->isRenderingCache = $this->isCache;
 | |
|         $level = ob_get_level();
 | |
|         try {
 | |
|             if (!isset($unifunc)) {
 | |
|                 $unifunc = $this->unifunc;
 | |
|             }
 | |
|             if (empty($unifunc) || !function_exists($unifunc)) {
 | |
|                 throw new SmartyException("Invalid compiled template for '{$_template->template_resource}'");
 | |
|             }
 | |
|             if ($_template->startRenderCallbacks) {
 | |
|                 foreach ($_template->startRenderCallbacks as $callback) {
 | |
|                     call_user_func($callback, $_template);
 | |
|                 }
 | |
|             }
 | |
|             $unifunc($_template);
 | |
|             foreach ($_template->endRenderCallbacks as $callback) {
 | |
|                 call_user_func($callback, $_template);
 | |
|             }
 | |
|             $_template->isRenderingCache = false;
 | |
|             return null;
 | |
|         }
 | |
|         catch (Exception $e) {
 | |
|             $_template->isRenderingCache = false;
 | |
|             while (ob_get_level() > $level) {
 | |
|                 ob_end_clean();
 | |
|             }
 | |
|             if (isset($smarty->security_policy)) {
 | |
|                 $smarty->security_policy->endTemplate();
 | |
|             }
 | |
|             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;
 | |
|     }
 | |
| }
 |