123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- <?php
- /**
- * Smarty Internal Plugin Resource PHP
- *
- * Implements the file system as resource for PHP templates
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Uwe Tews
- * @author Rodney Rehm
- */
- class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled {
- /**
- * container for short_open_tag directive's value before executing PHP templates
- * @var string
- */
- protected $short_open_tag;
- /**
- * Create a new PHP Resource
- *
- */
- public function __construct()
- {
- $this->short_open_tag = ini_get( 'short_open_tag' );
- }
- /**
- * populate Source Object with meta data from Resource
- *
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- * @return void
- */
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null)
- {
- $source->filepath = $this->buildFilepath($source, $_template);
- if ($source->filepath !== false) {
- if (is_object($source->smarty->security_policy)) {
- $source->smarty->security_policy->isTrustedResourceDir($source->filepath);
- }
- $source->uid = sha1($source->filepath);
- if ($source->smarty->compile_check) {
- $source->timestamp = @filemtime($source->filepath);
- $source->exists = !!$source->timestamp;
- }
- }
- }
- /**
- * populate Source Object with timestamp and exists from Resource
- *
- * @param Smarty_Template_Source $source source object
- * @return void
- */
- public function populateTimestamp(Smarty_Template_Source $source)
- {
- $source->timestamp = @filemtime($source->filepath);
- $source->exists = !!$source->timestamp;
- }
- /**
- * Load template's source from file into current template object
- *
- * @param Smarty_Template_Source $source source object
- * @return string template source
- * @throws SmartyException if source cannot be loaded
- */
- public function getContent(Smarty_Template_Source $source)
- {
- if ($source->timestamp) {
- return '';
- }
- throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
- }
- /**
- * Render and output the template (without using the compiler)
- *
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- * @return void
- * @throws SmartyException if template cannot be loaded or allow_php_templates is disabled
- */
- public function renderUncompiled(Smarty_Template_Source $source, Smarty_Internal_Template $_template)
- {
- $_smarty_template = $_template;
- if (!$source->smarty->allow_php_templates) {
- throw new SmartyException("PHP templates are disabled");
- }
- if (!$source->exists) {
- if ($_template->parent instanceof Smarty_Internal_Template) {
- $parent_resource = " in '{$_template->parent->template_resource}'";
- } else {
- $parent_resource = '';
- }
- throw new SmartyException("Unable to load template {$source->type} '{$source->name}'{$parent_resource}");
- }
- // prepare variables
- extract($_template->getTemplateVars());
- // include PHP template with short open tags enabled
- ini_set( 'short_open_tag', '1' );
- include($source->filepath);
- ini_set( 'short_open_tag', $this->short_open_tag );
- }
- }
- ?>
|