Index: core/kernel/session/session_storage.php =================================================================== --- core/kernel/session/session_storage.php +++ core/kernel/session/session_storage.php @@ -37,6 +37,13 @@ var $PersistentVars = Array (); + /** + * Default persistent vars + * + * @var array + */ + protected $defaultPersistentVars = array(); + var $OriginalData = Array (); var $TimestampField; @@ -347,6 +354,16 @@ else { $this->PersistentVars = Array (); } + + $default_user_id = (int)$this->Application->ConfigValue('DefaultSettingsUserId'); + + if ( !$default_user_id ) { + $default_user_id = USER_ROOT; + } + + if ( $user_id != $default_user_id ) { + $this->defaultPersistentVars = $this->PersistentVars; + } } /** @@ -412,23 +429,16 @@ return $this->PersistentVars[$var_name]; } elseif ( $default == ALLOW_DEFAULT_SETTINGS ) { - $default_user_id = $this->Application->ConfigValue('DefaultSettingsUserId'); + if ( isset($this->defaultPersistentVars[$var_name]) ) { + $value = $this->defaultPersistentVars[$var_name]; + $this->StorePersistentVar($var_name, $value); - if ( !$default_user_id ) { - $default_user_id = USER_ROOT; + return $value; } - $sql = 'SELECT VariableValue, VariableName - FROM ' . TABLE_PREFIX . 'UserPersistentSessionData - WHERE VariableName = ' . $this->Conn->qstr($var_name) . ' AND PortalUserId = ' . $default_user_id; - $value = $this->Conn->GetOne($sql); - $this->PersistentVars[$var_name] = $value; - - if ( $value !== false ) { - $this->StorePersistentVar($var_name, $value); //storing it, so next time we don't load default user setting - } + $this->PersistentVars[$var_name] = false; - return $value; + return false; } return $default; @@ -525,4 +535,4 @@ throw new BadMethodCallException('Unsupported'); } -} \ No newline at end of file +}