123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- <?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;
- /**
- * required plugins
- *
- * @var array
- */
- public $required_plugins = array();
- /**
- * Included subtemplates
- *
- * @var array
- */
- 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;
- }
- }
|