123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- <?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;
- }
- }
|