153 lines
3.4 KiB
PHP
153 lines
3.4 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|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;
|
||
|
}
|
||
|
}
|