PathProcessorLanguage::initProcessors

protected PathProcessorLanguage::initProcessors($scope)

Initializes the local cache for language path processors.

Parameters

string $scope: The scope of the processors: "inbound" or "outbound".

File

core/modules/language/src/HttpKernel/PathProcessorLanguage.php, line 132

Class

PathProcessorLanguage
Processes the inbound path using path alias lookups.

Namespace

Drupal\language\HttpKernel

Code

protected function initProcessors($scope) {
  $interface = '\Drupal\Core\PathProcessor\\' . Unicode::ucfirst($scope) . 'PathProcessorInterface';
  $this->processors[$scope] = array();
  $weights = [];
  foreach ($this->languageManager->getLanguageTypes() as $type) {
    foreach ($this->negotiator->getNegotiationMethods($type) as $method_id => $method) {
      if (!isset($this->processors[$scope][$method_id])) {
        $reflector = new \ReflectionClass($method['class']);
        if ($reflector->implementsInterface($interface)) {
          $this->processors[$scope][$method_id] = $this->negotiator->getNegotiationMethodInstance($method_id);
          $weights[$method_id] = $method['weight'];
        }
      }
    }
  }

  // Sort the processors list, so that their functions are called in the
  // order specified by the weight of the methods.
  uksort($this->processors[$scope], function($method_id_a, $method_id_b) use ($weights) {
    $a_weight = $weights[$method_id_a];
    $b_weight = $weights[$method_id_b];

    if ($a_weight == $b_weight) {
      return 0;
    }

    return ($a_weight < $b_weight) ? -1 : 1;
  });
}
doc_Drupal
2016-10-29 09:33:31
Comments
Leave a Comment

Please login to continue.