diff options
Diffstat (limited to '')
-rw-r--r-- | include/smarty/libs/sysplugins/smarty_internal_resource_php.php | 102 |
1 files changed, 48 insertions, 54 deletions
diff --git a/include/smarty/libs/sysplugins/smarty_internal_resource_php.php b/include/smarty/libs/sysplugins/smarty_internal_resource_php.php index 7cd8baeec..62680625c 100644 --- a/include/smarty/libs/sysplugins/smarty_internal_resource_php.php +++ b/include/smarty/libs/sysplugins/smarty_internal_resource_php.php @@ -2,76 +2,56 @@ /** * Smarty Internal Plugin Resource PHP - * * Implements the file system as resource for PHP templates * - * @package Smarty + * @package Smarty * @subpackage TemplateResources - * @author Uwe Tews - * @author Rodney Rehm + * @author Uwe Tews + * @author Rodney Rehm */ -class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled { +class Smarty_Internal_Resource_Php extends Smarty_Internal_Resource_File +{ /** - * container for short_open_tag directive's value before executing PHP templates - * @var string + * Flag that it's an uncompiled resource + * + * @var bool */ - protected $short_open_tag; - + public $uncompiled = true; /** - * Create a new PHP Resource + * container for short_open_tag directive's value before executing PHP templates * + * @var string */ - public function __construct() - { - $this->short_open_tag = ini_get( 'short_open_tag' ); - } + protected $short_open_tag; /** - * populate Source Object with meta data from Resource + * Resource does implement populateCompiledFilepath() method * - * @param Smarty_Template_Source $source source object - * @param Smarty_Internal_Template $_template template object - * @return void + * @var bool */ - public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null) - { - $source->filepath = $this->buildFilepath($source, $_template); + public $hasCompiledHandler = true; - 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 + * Create a new PHP Resource + */ - public function populateTimestamp(Smarty_Template_Source $source) + public function __construct() { - $source->timestamp = @filemtime($source->filepath); - $source->exists = !!$source->timestamp; + $this->short_open_tag = ini_get('short_open_tag'); } /** * 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 + * @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) { + if ($source->exists) { return ''; } throw new SmartyException("Unable to read template {$source->type} '{$source->name}'"); @@ -80,20 +60,19 @@ class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled { /** * Render and output the template (without using the compiler) * - * @param Smarty_Template_Source $source source object - * @param Smarty_Internal_Template $_template template object + * @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 + * @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) { + if (isset($_template->parent) && $_template->parent->_objType == 2) { $parent_resource = " in '{$_template->parent->template_resource}'"; } else { $parent_resource = ''; @@ -105,10 +84,25 @@ class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled { extract($_template->getTemplateVars()); // include PHP template with short open tags enabled - ini_set( 'short_open_tag', '1' ); + ini_set('short_open_tag', '1'); + /** @var Smarty_Internal_Template $_smarty_template + * used in included file + */ + $_smarty_template = $_template; include($source->filepath); - ini_set( 'short_open_tag', $this->short_open_tag ); + ini_set('short_open_tag', $this->short_open_tag); } -} -?>
\ No newline at end of file + /** + * populate compiled object with compiled filepath + * + * @param Smarty_Template_Compiled $compiled compiled object + * @param Smarty_Internal_Template $_template template object (is ignored) + */ + public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template) + { + $compiled->filepath = false; + $compiled->timestamp = false; + $compiled->exists = false; + } +} |