You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
156 lines
3.6 KiB
PHTML
156 lines
3.6 KiB
PHTML
8 years ago
|
<?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;
|
||
|
}
|
||
|
}
|