diff --git a/api/src/Session.php b/api/src/Session.php index ab13fe3fab..23df7bd6b5 100644 --- a/api/src/Session.php +++ b/api/src/Session.php @@ -959,9 +959,6 @@ class Session } else { - // set prefs, they are no longer stored in session - $GLOBALS['egw_info']['user']['preferences'] = $GLOBALS['egw']->preferences->read_repository(); - // restore apps to $GLOBALS['egw_info']['apps'] $GLOBALS['egw']->applications->read_installed_apps(); @@ -970,6 +967,9 @@ class Session { $GLOBALS['egw_info']['user']['apps'] = array_intersect_key($GLOBALS['egw_info']['apps'], array_flip($GLOBALS['egw_info']['user']['apps'])); } + + // set prefs, they are no longer stored in session + $GLOBALS['egw_info']['user']['preferences'] = $GLOBALS['egw']->preferences->read_repository(); } if ($GLOBALS['egw']->accounts->is_expired($GLOBALS['egw_info']['user'])) diff --git a/api/src/loader.php b/api/src/loader.php index 5ba2b5d4da..b98c25039e 100644 --- a/api/src/loader.php +++ b/api/src/loader.php @@ -135,7 +135,10 @@ if ($GLOBALS['egw_info']['flags']['currentapp'] != 'login') unset($_SESSION[Session::EGW_INFO_CACHE]['flags']); // dont save the flags, they change on each request // dont save preferences, as Session::verify restores them from instance cache anyway - unset($_SESSION[Session::EGW_INFO_CACHE]['user']['preferences']); + $_SESSION[Session::EGW_INFO_CACHE]['user']['preferences'] = array( + // we need user language as it is used before preferences get restored! + 'common' => array('lang' => $GLOBALS['egw_info']['user']['preferences']['common']['lang']), + ); // dont save apps, as Session::verify restores them from instance cache anyway unset($_SESSION[Session::EGW_INFO_CACHE]['apps']);