
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.
120 lines
3.9 KiB
PHP
120 lines
3.9 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Smarty Method GetTemplateVars
|
|
*
|
|
* Smarty::getTemplateVars() method
|
|
*
|
|
* @package Smarty
|
|
* @subpackage PluginsInternal
|
|
* @author Uwe Tews
|
|
*/
|
|
class Smarty_Internal_Method_GetTemplateVars
|
|
{
|
|
/**
|
|
* Valid for all objects
|
|
*
|
|
* @var int
|
|
*/
|
|
public $objMap = 7;
|
|
|
|
/**
|
|
* Returns a single or all template variables
|
|
*
|
|
* @api Smarty::getTemplateVars()
|
|
* @link https://www.smarty.net/docs/en/api.get.template.vars.tpl
|
|
*
|
|
* @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
|
|
* @param string $varName variable name or null
|
|
* @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $_ptr optional pointer to data object
|
|
* @param bool $searchParents include parent templates?
|
|
*
|
|
* @return mixed variable value or or array of variables
|
|
*/
|
|
public function getTemplateVars(
|
|
Smarty_Internal_Data $data,
|
|
$varName = null,
|
|
Smarty_Internal_Data $_ptr = null,
|
|
$searchParents = true
|
|
) {
|
|
if (isset($varName)) {
|
|
$_var = $this->_getVariable($data, $varName, $_ptr, $searchParents, false);
|
|
if (is_object($_var)) {
|
|
return $_var->value;
|
|
} else {
|
|
return null;
|
|
}
|
|
} else {
|
|
$_result = array();
|
|
if ($_ptr === null) {
|
|
$_ptr = $data;
|
|
}
|
|
while ($_ptr !== null) {
|
|
foreach ($_ptr->tpl_vars as $key => $var) {
|
|
if (!array_key_exists($key, $_result)) {
|
|
$_result[ $key ] = $var->value;
|
|
}
|
|
}
|
|
// not found, try at parent
|
|
if ($searchParents && isset($_ptr->parent)) {
|
|
$_ptr = $_ptr->parent;
|
|
} else {
|
|
$_ptr = null;
|
|
}
|
|
}
|
|
if ($searchParents && isset(Smarty::$global_tpl_vars)) {
|
|
foreach (Smarty::$global_tpl_vars as $key => $var) {
|
|
if (!array_key_exists($key, $_result)) {
|
|
$_result[ $key ] = $var->value;
|
|
}
|
|
}
|
|
}
|
|
return $_result;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* gets the object of a Smarty variable
|
|
*
|
|
* @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
|
|
* @param string $varName the name of the Smarty variable
|
|
* @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $_ptr optional pointer to data object
|
|
* @param bool $searchParents search also in parent data
|
|
* @param bool $errorEnable
|
|
*
|
|
* @return \Smarty_Variable
|
|
*/
|
|
public function _getVariable(
|
|
Smarty_Internal_Data $data,
|
|
$varName,
|
|
Smarty_Internal_Data $_ptr = null,
|
|
$searchParents = true,
|
|
$errorEnable = true
|
|
) {
|
|
if ($_ptr === null) {
|
|
$_ptr = $data;
|
|
}
|
|
while ($_ptr !== null) {
|
|
if (isset($_ptr->tpl_vars[ $varName ])) {
|
|
// found it, return it
|
|
return $_ptr->tpl_vars[ $varName ];
|
|
}
|
|
// not found, try at parent
|
|
if ($searchParents && isset($_ptr->parent)) {
|
|
$_ptr = $_ptr->parent;
|
|
} else {
|
|
$_ptr = null;
|
|
}
|
|
}
|
|
if (isset(Smarty::$global_tpl_vars[ $varName ])) {
|
|
// found it, return it
|
|
return Smarty::$global_tpl_vars[ $varName ];
|
|
}
|
|
if ($errorEnable && $data->_getSmartyObj()->error_unassigned) {
|
|
// force a notice
|
|
$x = $$varName;
|
|
}
|
|
return new Smarty_Undefined_Variable;
|
|
}
|
|
}
|