mirror of
https://github.com/smarty-php/smarty.git
synced 2025-10-16 22:15:21 +02:00
105 lines
4.2 KiB
PHP
105 lines
4.2 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Smarty Extension Append
|
|
*
|
|
* getStreamVariable() method
|
|
*
|
|
* @package Smarty
|
|
* @subpackage PluginsInternal
|
|
* @author Uwe Tews
|
|
*/
|
|
class Smarty_Internal_Extension_Append
|
|
{
|
|
/**
|
|
* appends values to template variables
|
|
*
|
|
* @param array|string $tpl_var the template variable name(s)
|
|
* @param mixed $value the value to append
|
|
* @param boolean $merge flag if array elements shall be merged
|
|
* @param boolean $nocache if true any output of this variable will be not cached
|
|
*
|
|
* @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for chaining
|
|
*/
|
|
public static function append($obj, $tpl_var, $value, $merge, $nocache)
|
|
{
|
|
if (is_array($tpl_var)) {
|
|
// $tpl_var is an array, ignore $value
|
|
foreach ($tpl_var as $_key => $_val) {
|
|
if ($_key != '') {
|
|
if (!isset($obj->tpl_vars[$_key])) {
|
|
$tpl_var_inst = Smarty_Internal_Extension_GetVars::getVariable($obj, $_key, null, true, false);
|
|
if ($tpl_var_inst instanceof Smarty_Undefined_Variable) {
|
|
$obj->tpl_vars[$_key] = new Smarty_Variable(null, $nocache);
|
|
} else {
|
|
$obj->tpl_vars[$_key] = clone $tpl_var_inst;
|
|
}
|
|
}
|
|
if (!(is_array($obj->tpl_vars[$_key]->value) || $obj->tpl_vars[$_key]->value instanceof ArrayAccess)) {
|
|
settype($obj->tpl_vars[$_key]->value, 'array');
|
|
}
|
|
if ($merge && is_array($_val)) {
|
|
foreach ($_val as $_mkey => $_mval) {
|
|
$obj->tpl_vars[$_key]->value[$_mkey] = $_mval;
|
|
}
|
|
} else {
|
|
$obj->tpl_vars[$_key]->value[] = $_val;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if ($tpl_var != '' && isset($value)) {
|
|
if (!isset($obj->tpl_vars[$tpl_var])) {
|
|
$tpl_var_inst = Smarty_Internal_Extension_GetVars::getVariable($obj, $tpl_var, null, true, false);
|
|
if ($tpl_var_inst instanceof Smarty_Undefined_Variable) {
|
|
$obj->tpl_vars[$tpl_var] = new Smarty_Variable(null, $nocache);
|
|
} else {
|
|
$obj->tpl_vars[$tpl_var] = clone $tpl_var_inst;
|
|
}
|
|
}
|
|
if (!(is_array($obj->tpl_vars[$tpl_var]->value) || $obj->tpl_vars[$tpl_var]->value instanceof ArrayAccess)) {
|
|
settype($obj->tpl_vars[$tpl_var]->value, 'array');
|
|
}
|
|
if ($merge && is_array($value)) {
|
|
foreach ($value as $_mkey => $_mval) {
|
|
$obj->tpl_vars[$tpl_var]->value[$_mkey] = $_mval;
|
|
}
|
|
} else {
|
|
$obj->tpl_vars[$tpl_var]->value[] = $value;
|
|
}
|
|
}
|
|
}
|
|
|
|
return $obj;
|
|
}
|
|
|
|
/**
|
|
* appends values to template variables by reference
|
|
*
|
|
* @param string $tpl_var the template variable name
|
|
* @param mixed &$value the referenced value to append
|
|
* @param boolean $merge flag if array elements shall be merged
|
|
*
|
|
* @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for chaining
|
|
*/
|
|
public static function appendByRef($obj, $tpl_var, &$value, $merge)
|
|
{
|
|
if ($tpl_var != '' && isset($value)) {
|
|
if (!isset($obj->tpl_vars[$tpl_var])) {
|
|
$obj->tpl_vars[$tpl_var] = new Smarty_Variable();
|
|
}
|
|
if (!is_array($obj->tpl_vars[$tpl_var]->value)) {
|
|
settype($obj->tpl_vars[$tpl_var]->value, 'array');
|
|
}
|
|
if ($merge && is_array($value)) {
|
|
foreach ($value as $_key => $_val) {
|
|
$obj->tpl_vars[$tpl_var]->value[$_key] = &$value[$_key];
|
|
}
|
|
} else {
|
|
$obj->tpl_vars[$tpl_var]->value[] = &$value;
|
|
}
|
|
}
|
|
|
|
return $obj;
|
|
}
|
|
} |