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