Index: branches/RC/core/kernel/session/session.php =================================================================== diff -u -N -r10005 -r10024 --- branches/RC/core/kernel/session/session.php (.../session.php) (revision 10005) +++ branches/RC/core/kernel/session/session.php (.../session.php) (revision 10024) @@ -269,19 +269,27 @@ } } + /** + * Stores variable to persistent session + * + * @param Session $session + * @param string $var_name + * @param mixed $var_value + */ function StorePersistentVar(&$session, $var_name, $var_value) { $user_id = $session->RecallVar('user_id'); if ($user_id == -2 || $user_id === false) { // -2 (when not logged in), false (when after u:OnLogout event) + $session->StoreVar($var_name, $var_value); return ; } $this->PersistentVars[$var_name] = $var_value; $key_clause = 'PortalUserId = '.$user_id.' AND VariableName = '.$this->Conn->qstr($var_name); - $sql = 'SELECT VariableValue + $sql = 'SELECT VariableName FROM '.TABLE_PREFIX.'PersistantSessionData WHERE '.$key_clause; $record_found = $this->Conn->GetOne($sql); @@ -300,14 +308,28 @@ } } + /** + * Gets persistent variable + * + * @param Session $session + * @param string $var_name + * @param mixed $default + * @return mixed + */ function RecallPersistentVar(&$session, $var_name, $default = false) { - if (isset($this->PersistentVars[$var_name])) { + if ($session->RecallVar('user_id') == -2) { + return $session->RecallVar($var_name, $default); + } + + if (array_key_exists($var_name, $this->PersistentVars)) { return $this->PersistentVars[$var_name]; } elseif ($default == '_USE_DEFAULT_USER_DATA_') { $default_user_id = $this->Application->ConfigValue('DefaultSettingsUserId'); - if (!$default_user_id) $default_user_id = -1; + if (!$default_user_id) { + $default_user_id = -1; + } $sql = 'SELECT VariableValue, VariableName FROM '.TABLE_PREFIX.'PersistantSessionData WHERE VariableName = '.$this->Conn->qstr($var_name).' AND PortalUserId = '.$default_user_id; @@ -318,7 +340,9 @@ } return $value; } - else return $default; + else { + return $default; + } } function RemovePersistentVar(&$session, $var_name)