You are here

public function LanguageNegotiation::transform in Drupal 10

Same name and namespace in other branches
  1. 8 core/modules/language/src/Plugin/migrate/process/LanguageNegotiation.php \Drupal\language\Plugin\migrate\process\LanguageNegotiation::transform()
  2. 9 core/modules/language/src/Plugin/migrate/process/LanguageNegotiation.php \Drupal\language\Plugin\migrate\process\LanguageNegotiation::transform()

File

core/modules/language/src/Plugin/migrate/process/LanguageNegotiation.php, line 23

Class

LanguageNegotiation
Processes the arrays for the language types' negotiation methods and weights.

Namespace

Drupal\language\Plugin\migrate\process

Code

public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
  $new_value = [
    'enabled' => [],
    'method_weights' => [],
  ];
  if (!is_array($value)) {
    throw new MigrateException('The input should be an array');
  }

  // If no weights are provided, use the keys by flipping the array.
  if (empty($value[1])) {
    $new_value['enabled'] = array_flip(array_map([
      $this,
      'mapNewMethods',
    ], array_keys($value[0])));
    unset($new_value['method_weights']);
  }
  else {
    foreach ($value[1] as $method => $weight) {
      $new_method = $this
        ->mapNewMethods($method);
      $new_value['method_weights'][$new_method] = $weight;
      if (in_array($method, array_keys($value[0]))) {
        $new_value['enabled'][$new_method] = $weight;
      }
    }
  }
  return $new_value;
}