You are here

public function Route::transform in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/modules/migrate/src/Plugin/migrate/process/Route.php \Drupal\migrate\Plugin\migrate\process\Route::transform()

Set the destination route information based on the source link_path.

Overrides ProcessPluginBase::transform

File

core/modules/migrate/src/Plugin/migrate/process/Route.php, line 56
Contains \Drupal\migrate\Plugin\migrate\process\Route.

Class

Route
Plugin annotation @MigrateProcessPlugin( id = "route" )

Namespace

Drupal\migrate\Plugin\migrate\process

Code

public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
  list($link_path, $options) = $value;
  $extracted = $this->pathValidator
    ->getUrlIfValidWithoutAccessCheck($link_path);
  $route = array();
  if ($extracted) {
    if ($extracted
      ->isExternal()) {
      $route['route_name'] = null;
      $route['route_parameters'] = array();
      $route['options'] = $options;
      $route['url'] = $extracted
        ->getUri();
    }
    else {
      $route['route_name'] = $extracted
        ->getRouteName();
      $route['route_parameters'] = $extracted
        ->getRouteParameters();
      $route['options'] = $extracted
        ->getOptions();
      if (isset($options['query'])) {

        // If the querystring is stored as a string (as in D6), convert it
        // into an array.
        if (is_string($options['query'])) {
          parse_str($options['query'], $old_query);
        }
        else {
          $old_query = $options['query'];
        }
        $options['query'] = $route['options']['query'] + $old_query;
        unset($route['options']['query']);
      }
      $route['options'] = $route['options'] + $options;
      $route['url'] = null;
    }
  }
  return $route;
}