A super easy PHP Framework for web development!
				https://github.com/exacti/phacil-framework
			
			
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							152 lines
						
					
					
						
							3.4 KiB
						
					
					
				
			
		
		
	
	
							152 lines
						
					
					
						
							3.4 KiB
						
					
					
				<?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|bool
 | 
						|
     */
 | 
						|
    public $timestamp = false;
 | 
						|
 | 
						|
    /**
 | 
						|
     * 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;
 | 
						|
 | 
						|
    /**
 | 
						|
     * Included sub templates
 | 
						|
     * - index name
 | 
						|
     * - value use count
 | 
						|
     *
 | 
						|
     * @var int[]
 | 
						|
     */
 | 
						|
    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
 | 
						|
     *
 | 
						|
     * @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;
 | 
						|
        } 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 && !$this->timestamp) {
 | 
						|
            $this->timestamp = filemtime($this->filepath);
 | 
						|
        }
 | 
						|
        return $this->timestamp;
 | 
						|
    }
 | 
						|
}
 | 
						|
 |