Index: branches/5.0.x/core/units/users/users_event_handler.php =================================================================== diff -u -N -r12960 -r12970 --- branches/5.0.x/core/units/users/users_event_handler.php (.../users_event_handler.php) (revision 12960) +++ branches/5.0.x/core/units/users/users_event_handler.php (.../users_event_handler.php) (revision 12970) @@ -1,6 +1,6 @@ Application->HandleEvent($dummy, 'session-log:OnStartSession'); $this->processLoginRedirect($event, $password); + $this->_processInterfaceLanguage($event); return true; } else { @@ -325,6 +326,7 @@ if (!$remember_login_cookie) { $this->processLoginRedirect($event, $password); + $this->_processInterfaceLanguage($event); } } else { @@ -343,6 +345,47 @@ } /** + * Sets correct interface language after sucessful login, based on user settings + * + * @param kEvent $event + */ + function _processInterfaceLanguage(&$event) + { + if (($event->status != erSUCCESS) || !$this->Application->isAdmin) { + return ; + } + + $is_root = $this->Application->RecallVar('user_id') == -1; + + $object =& $this->Application->recallObject('u.current'); + /* @var $object kDBItem */ + + $user_language_id = $is_root ? $this->Application->RecallPersistentVar('AdminLanguage') : $object->GetDBField('AdminLanguage'); + + $sql = 'SELECT LanguageId, IF(LanguageId = ' . (int)$user_language_id . ', 2, AdminInterfaceLang) AS SortKey + FROM ' . TABLE_PREFIX . 'Language + WHERE Enabled = 1 + HAVING SortKey <> 0 + ORDER BY SortKey DESC'; + $language_info = $this->Conn->GetRow($sql); + $language_id = $language_info && $language_info['LanguageId'] ? $language_info['LanguageId'] : $user_language_id; + + if ($user_language_id != $language_id) { + // first admin login OR language was delelted or disabled + if ($is_root) { + $this->Application->StorePersistentVar('AdminLanguage', $language_id); + } + else { + $object->SetDBField('AdminLanguage', $language_id); + $object->Update(); + } + } + + $event->SetRedirectParam('m_lang', $language_id); // data + $this->Application->Session->SetField('Language', $language_id); // interface + } + + /** * [HOOK] Auto-Logins Front-End user when "Remember Login" cookie is found * * @param kEvent $event