annotate core/modules/user/src/Plugin/LanguageNegotiation/LanguageNegotiationUser.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children 129ea1e6d783
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\user\Plugin\LanguageNegotiation;
Chris@0 4
Chris@0 5 use Drupal\language\LanguageNegotiationMethodBase;
Chris@0 6 use Symfony\Component\HttpFoundation\Request;
Chris@0 7
Chris@0 8 /**
Chris@0 9 * Class for identifying language from the user preferences.
Chris@0 10 *
Chris@0 11 * @LanguageNegotiation(
Chris@0 12 * id = \Drupal\user\Plugin\LanguageNegotiation\LanguageNegotiationUser::METHOD_ID,
Chris@0 13 * weight = -4,
Chris@0 14 * name = @Translation("User"),
Chris@0 15 * description = @Translation("Follow the user's language preference.")
Chris@0 16 * )
Chris@0 17 */
Chris@0 18 class LanguageNegotiationUser extends LanguageNegotiationMethodBase {
Chris@0 19
Chris@0 20 /**
Chris@0 21 * The language negotiation method id.
Chris@0 22 */
Chris@0 23 const METHOD_ID = 'language-user';
Chris@0 24
Chris@0 25 /**
Chris@0 26 * {@inheritdoc}
Chris@0 27 */
Chris@0 28 public function getLangcode(Request $request = NULL) {
Chris@0 29 $langcode = NULL;
Chris@0 30
Chris@0 31 // User preference (only for authenticated users).
Chris@0 32 if ($this->languageManager && $this->currentUser->isAuthenticated()) {
Chris@0 33 $preferred_langcode = $this->currentUser->getPreferredLangcode();
Chris@0 34 $default_langcode = $this->languageManager->getDefaultLanguage()->getId();
Chris@0 35 $languages = $this->languageManager->getLanguages();
Chris@0 36 if (!empty($preferred_langcode) && $preferred_langcode != $default_langcode && isset($languages[$preferred_langcode])) {
Chris@0 37 $langcode = $preferred_langcode;
Chris@0 38 }
Chris@0 39 }
Chris@0 40
Chris@0 41 // No language preference from the user.
Chris@0 42 return $langcode;
Chris@0 43 }
Chris@0 44
Chris@0 45 }