
Comparing changes: https://github.com/smarty-php/smarty/compare/v4.3.1...v4.4.1 It is noticeable that Smarty 4.3.1 does not officially support PHP 8.3. Is only supported with 4.4.0. Remark: During tests with Smarty 4.5.1, it was noticed that the following warning occurs: Deprecated: Using the unregistered function "function_exists" in a template is deprecated and will be removed in a future version. Use Smarty::registerPlugin to explicitly register a custom modifier. As of Smarty 5.X.X, templates must be revised again. The Smarty release 5.0.2 is already officially available. However, integration into FlatPress is not entirely trivial.
117 lines
3.5 KiB
PHP
117 lines
3.5 KiB
PHP
<?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_Internal_Resource_File
|
|
{
|
|
/**
|
|
* Flag that it's an uncompiled resource
|
|
*
|
|
* @var bool
|
|
*/
|
|
public $uncompiled = true;
|
|
|
|
/**
|
|
* Resource does implement populateCompiledFilepath() method
|
|
*
|
|
* @var bool
|
|
*/
|
|
public $hasCompiledHandler = true;
|
|
|
|
/**
|
|
* 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 = function_exists('ini_get') ? ini_get('short_open_tag') : 1;
|
|
}
|
|
|
|
/**
|
|
* 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->exists) {
|
|
return '';
|
|
}
|
|
throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
|
|
}
|
|
|
|
/**
|
|
* 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 = $_template->source->filepath;
|
|
$compiled->timestamp = $_template->source->timestamp;
|
|
$compiled->exists = $_template->source->exists;
|
|
$compiled->file_dependency[ $_template->source->uid ] =
|
|
array(
|
|
$compiled->filepath,
|
|
$compiled->timestamp,
|
|
$_template->source->type,
|
|
);
|
|
}
|
|
|
|
/**
|
|
* 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)
|
|
{
|
|
if (!$source->smarty->allow_php_templates) {
|
|
throw new SmartyException('PHP templates are disabled');
|
|
}
|
|
if (!$source->exists) {
|
|
throw new SmartyException(
|
|
"Unable to load template '{$source->type}:{$source->name}'" .
|
|
($_template->_isSubTpl() ? " in '{$_template->parent->template_resource}'" : '')
|
|
);
|
|
}
|
|
// prepare variables
|
|
extract($_template->getTemplateVars());
|
|
// include PHP template with short open tags enabled
|
|
if (function_exists('ini_set')) {
|
|
ini_set('short_open_tag', '1');
|
|
}
|
|
/**
|
|
*
|
|
*
|
|
* @var Smarty_Internal_Template $_smarty_template
|
|
* used in included file
|
|
*/
|
|
$_smarty_template = $_template;
|
|
include $source->filepath;
|
|
if (function_exists('ini_set')) {
|
|
ini_set('short_open_tag', $this->short_open_tag);
|
|
}
|
|
}
|
|
}
|