Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 20 |
LanguageRequestSubscriber | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
30 | |
0.00% |
0 / 20 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 5 |
|||
onKernelRequestLanguage | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 12 |
|||
getSubscribedEvents | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\language\EventSubscriber\LanguageRequestSubscriber. | |
*/ | |
namespace Drupal\language\EventSubscriber; | |
use Drupal\Core\Session\AccountInterface; | |
use Drupal\Core\StringTranslation\Translator\TranslatorInterface; | |
use Drupal\language\ConfigurableLanguageManagerInterface; | |
use Drupal\language\LanguageNegotiatorInterface; | |
use Symfony\Component\HttpKernel\HttpKernelInterface; | |
use Symfony\Component\HttpKernel\KernelEvents; | |
use Symfony\Component\HttpKernel\Event\GetResponseEvent; | |
use Symfony\Component\EventDispatcher\EventSubscriberInterface; | |
/** | |
* Sets the $request property on the language manager. | |
*/ | |
class LanguageRequestSubscriber implements EventSubscriberInterface { | |
/** | |
* The language manager service. | |
* | |
* @var \Drupal\language\ConfigurableLanguageManagerInterface | |
*/ | |
protected $languageManager; | |
/** | |
* The language negotiator. | |
* | |
* @var \Drupal\language\LanguageNegotiatorInterface | |
*/ | |
protected $negotiator; | |
/** | |
* The translation service. | |
* | |
* @var \Drupal\Core\StringTranslation\Translator\TranslatorInterface; | |
*/ | |
protected $translation; | |
/** | |
* The current active user. | |
* | |
* @return \Drupal\Core\Session\AccountInterface | |
*/ | |
protected $currentUser; | |
/** | |
* Constructs a LanguageRequestSubscriber object. | |
* | |
* @param \Drupal\language\ConfigurableLanguageManagerInterface $language_manager | |
* The language manager service. | |
* @param \Drupal\language\LanguageNegotiatorInterface $negotiator | |
* The language negotiator. | |
* @param \Drupal\Core\StringTranslation\Translator\TranslatorInterface $translation; | |
* The translation service. | |
* @param \Drupal\Core\Session\AccountInterface $current_user | |
* The current active user. | |
*/ | |
public function __construct(ConfigurableLanguageManagerInterface $language_manager, LanguageNegotiatorInterface $negotiator, TranslatorInterface $translation, AccountInterface $current_user) { | |
$this->languageManager = $language_manager; | |
$this->negotiator = $negotiator; | |
$this->translation = $translation; | |
$this->currentUser = $current_user; | |
} | |
/** | |
* Sets the request on the language manager. | |
* | |
* @param \Symfony\Component\HttpKernel\Event\GetResponseEvent $event | |
* The Event to process. | |
*/ | |
public function onKernelRequestLanguage(GetResponseEvent $event) { | |
if ($event->getRequestType() == HttpKernelInterface::MASTER_REQUEST) { | |
$request = $event->getRequest(); | |
$this->negotiator->setCurrentUser($this->currentUser); | |
$this->negotiator->reset(); | |
if ($this->languageManager instanceof ConfigurableLanguageManagerInterface) { | |
$this->languageManager->setNegotiator($this->negotiator); | |
$this->languageManager->setConfigOverrideLanguage($this->languageManager->getCurrentLanguage()); | |
} | |
// After the language manager has initialized, set the default langcode | |
// for the string translations. | |
$langcode = $this->languageManager->getCurrentLanguage()->getId(); | |
$this->translation->setDefaultLangcode($langcode); | |
} | |
} | |
/** | |
* Registers the methods in this class that should be listeners. | |
* | |
* @return array | |
* An array of event listener definitions. | |
*/ | |
static function getSubscribedEvents() { | |
$events[KernelEvents::REQUEST][] = array('onKernelRequestLanguage', 255); | |
return $events; | |
} | |
} |