56 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
| <?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];
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 |