diff --git a/user-account-interface-2017207-10.patch b/user-account-interface-2017207-10.patch index dd4b0bb..c9f9fd3 100644 --- a/user-account-interface-2017207-10.patch +++ b/user-account-interface-2017207-10.patch @@ -159,6 +159,98 @@ index c32816c..50c27b0 100644 $variables['time'] = isset($variables['topic']->created) ? format_interval(REQUEST_TIME - $variables['topic']->created) : ''; } +diff --git a/core/modules/language/language.module b/core/modules/language/language.module +index 6b45fa1..ac504ba 100644 +--- a/core/modules/language/language.module ++++ b/core/modules/language/language.module +@@ -450,8 +450,9 @@ function language_get_default_langcode($entity_type, $bundle) { + + case 'authors_default': + global $user; +- if (!empty($user->preferred_langcode)) { +- $default_value = $user->preferred_langcode; ++ $language_code = $user->getPreferredLangcode(); ++ if (!empty($language_code)) { ++ $default_value = $language_code; + } + else { + $default_value = $language_interface->langcode; +diff --git a/core/modules/language/language.negotiation.inc b/core/modules/language/language.negotiation.inc +index 82bf713..aabd36c 100644 +--- a/core/modules/language/language.negotiation.inc ++++ b/core/modules/language/language.negotiation.inc +@@ -196,8 +196,12 @@ function language_from_user($languages) { + // User preference (only for authenticated users). + global $user; + +- if ($user->uid && !empty($user->preferred_langcode) && isset($languages[$user->preferred_langcode])) { +- return $user->preferred_langcode; ++ if ($user->id()) { ++ $langcode = $user->getPreferredLangcode(); ++ $default_langcode = language_default()->langcode; ++ if (!empty($langcode) && $langcode != $default_langcode && isset($languages[$langcode])) { ++ return $langcode; ++ } + } + + // No language preference from the user. +@@ -221,9 +225,13 @@ function language_from_user_admin(array $languages, Request $request = NULL) { + // User preference (only for authenticated users). + global $user; + +- $request_path = $request ? urldecode(trim($request->getPathInfo(), '/')) : _current_path(); +- if ($user->uid && !empty($user->preferred_admin_langcode) && isset($languages[$user->preferred_admin_langcode]) && path_is_admin($request_path)) { +- return $user->preferred_admin_langcode; ++ if ($user->id()) { ++ $request_path = $request ? urldecode(trim($request->getPathInfo(), '/')) : _current_path(); ++ $langcode = $user->getPreferredLangcode('admin'); ++ $default_langcode = language_default()->langcode; ++ if (!empty($langcode) && $langcode != $default_langcode && isset($languages[$langcode]) && path_is_admin($request_path)) { ++ return $langcode; ++ } + } + + // No language preference from the user or not on an admin path. +@@ -246,7 +254,7 @@ function language_from_session($languages) { + // an authenticated user. + if (isset($_GET[$param]) && isset($languages[$langcode = $_GET[$param]])) { + global $user; +- if ($user->uid) { ++ if ($user->id()) { + $_SESSION[$param] = $langcode; + } + return $langcode; +@@ -484,7 +492,7 @@ function language_url_rewrite_session(&$path, &$options) { + // request processing. + if (!isset($query_rewrite)) { + global $user; +- if (!$user->uid) { ++ if (!$user->id()) { + $languages = language_list(); + $query_param = check_plain(config('language.negotiation')->get('session.parameter')); + $query_value = isset($_GET[$query_param]) ? check_plain($_GET[$query_param]) : NULL; +diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguageUILanguageNegotiationTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguageUILanguageNegotiationTest.php +index c9c05e8..b9b7c48 100644 +--- a/core/modules/language/lib/Drupal/language/Tests/LanguageUILanguageNegotiationTest.php ++++ b/core/modules/language/lib/Drupal/language/Tests/LanguageUILanguageNegotiationTest.php +@@ -279,7 +279,7 @@ function testUILanguageNegotiation() { + 'expect' => $language_string, + 'expected_method_id' => LANGUAGE_NEGOTIATION_USER, + 'http_header' => array(), +- 'message' => 'USER > DEFAULT: defined prefereed user language setting, the UI language is based on user setting', ++ 'message' => 'USER > DEFAULT: defined preferred user language setting, the UI language is based on user setting', + ); + $this->runTest($test); + +@@ -321,7 +321,7 @@ function testUILanguageNegotiation() { + 'expect' => $language_string, + 'expected_method_id' => LANGUAGE_NEGOTIATION_USER_ADMIN, + 'http_header' => array(), +- 'message' => 'USER ADMIN > DEFAULT: defined prefereed user admin language setting, the UI language is based on user setting', ++ 'message' => 'USER ADMIN > DEFAULT: defined preferred user admin language setting, the UI language is based on user setting', + ); + $this->runTest($test); + diff --git a/core/modules/node/node.pages.inc b/core/modules/node/node.pages.inc index 8255df5..01cc188 100644 --- a/core/modules/node/node.pages.inc