p006/api/soft/smarty/4.2.1/sysplugins/smarty_template_resource_ba...

153 lines
3.4 KiB
PHP
Raw Normal View History

2022-11-29 22:06:03 +05:00
<?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;
}
}