155 lines
3.6 KiB
PHP
155 lines
3.6 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();
|
|
|
|
/**
|
|
* 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;
|
|
}
|
|
}
|