first commit
This commit is contained in:
155
lib/smarty/libs/sysplugins/smarty_template_resource_base.php
Executable file
155
lib/smarty/libs/sysplugins/smarty_template_resource_base.php
Executable file
@ -0,0 +1,155 @@
|
||||
<?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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user