0
0
mirror of https://github.com/postfixadmin/postfixadmin.git synced 2024-09-20 11:38:42 +02:00
postfixadmin/smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php
David Goodwin 2bed4110a5 update Smarty to 3.1.29
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1841 a1433add-5e2c-0410-b055-b7f2511e0802
2016-05-20 20:27:29 +00:00

56 lines
1.9 KiB
PHP

<?php
/**
* Runtime Methods updateScope
*
* @package Smarty
* @subpackage PluginsInternal
* @author Uwe Tews
*
**/
class Smarty_Internal_Runtime_UpdateScope
{
/**
* Update new assigned template variable in other effected scopes
*
* @param \Smarty_Internal_Template $tpl template object
* @param string $varName variable name
* @param int $scope scope to which bubble up variable value
*/
public function updateScope(Smarty_Internal_Template $tpl, $varName, $scope = Smarty::SCOPE_LOCAL)
{
if (!$scope && !$tpl->scope) {
return;
}
foreach (array($scope, $tpl->scope) as $s) {
$s = ($bubble_up = $s >= Smarty::SCOPE_BUBBLE_UP) ? $s - Smarty::SCOPE_BUBBLE_UP : $s;
if ($bubble_up && $s) {
$ptr = $tpl->parent;
if (isset($ptr)) {
$ptr->tpl_vars[$varName] = $tpl->tpl_vars[$varName];
$ptr = $ptr->parent;
}
if ($s == Smarty::SCOPE_PARENT) {
continue;
}
while (isset($ptr) && $ptr->_objType == 2) {
$ptr->tpl_vars[$varName] = $tpl->tpl_vars[$varName];
$ptr = $ptr->parent;
}
if ($s == Smarty::SCOPE_TPL_ROOT) {
continue;
} elseif ($s == Smarty::SCOPE_SMARTY) {
$tpl->smarty->tpl_vars[$varName] = $tpl->tpl_vars[$varName];
} elseif ($s == Smarty::SCOPE_GLOBAL) {
Smarty::$global_tpl_vars[$varName] = $tpl->tpl_vars[$varName];
} elseif ($s == Smarty::SCOPE_ROOT) {
while (isset($ptr->parent)) {
$ptr = $ptr->parent;
}
$ptr->tpl_vars[$varName] = $tpl->tpl_vars[$varName];
}
}
}
}
}