class PathSetTranslated

Same name and namespace in other branches
  1. 9 core/modules/path/src/Plugin/migrate/process/PathSetTranslated.php \Drupal\path\Plugin\migrate\process\PathSetTranslated
  2. 8.9.x core/modules/path/src/Plugin/migrate/process/PathSetTranslated.php \Drupal\path\Plugin\migrate\process\PathSetTranslated
  3. 10 core/modules/path/src/Plugin/migrate/process/PathSetTranslated.php \Drupal\path\Plugin\migrate\process\PathSetTranslated

A process plugin to update the path of a translated node.

Available configuration keys:

  • source: An array of two values, the first being the original path, and the second being an array of the format [nid, langcode] if a translated node exists (likely from a migration lookup). Paths not of the format '/node/<nid>' will pass through unchanged, as will any inputs with invalid or missing translated nodes.

This plugin will return the correct path for the translated node if the above conditions are met, and will return the original path otherwise.

Example: node_translation: - plugin: explode source: source delimiter: / - # If the source path has no slashes return a dummy default value. plugin: extract default: 'INVALID_NID' index:

  • 1

- plugin: migration_lookup migration: d7_node_translation _path: plugin: concat source:

  • constants/slash
  • source

path: plugin: path_set_translated source:

  • '@_path'
  • '@node_translation'

In the example above, if the node_translation lookup succeeds and the original path is of the format '/node/<original node nid>', then the new path will be set to '/node/<translated node nid>'

Hierarchy

Expanded class hierarchy of PathSetTranslated

1 file declares its use of PathSetTranslated
PathSetTranslatedTest.php in core/modules/path/tests/src/Unit/migrate/process/PathSetTranslatedTest.php

File

core/modules/path/src/Plugin/migrate/process/PathSetTranslated.php, line 54

Namespace

Drupal\path\Plugin\migrate\process
View source
class PathSetTranslated extends ProcessPluginBase {
    
    /**
     * {@inheritdoc}
     */
    public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
        if (!is_array($value)) {
            throw new MigrateException("The input value should be an array.");
        }
        $path = $value[0] ?? '';
        $nid = is_array($value[1]) && isset($value[1][0]) ? $value[1][0] : FALSE;
        if (preg_match('/^\\/node\\/\\d+$/', $path) && $nid) {
            return '/node/' . $nid;
        }
        return $path;
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title Overrides
PathSetTranslated::transform public function Performs the associated process. Overrides ProcessPluginBase::transform
PluginInspectionInterface::getPluginDefinition public function Gets the definition of the plugin implementation. 6
PluginInspectionInterface::getPluginId public function Gets the plugin_id of the plugin instance. 2
ProcessPluginBase::$stopPipeline protected property Determines if processing of the pipeline is stopped.
ProcessPluginBase::isPipelineStopped public function Determines if the pipeline should stop processing. Overrides MigrateProcessInterface::isPipelineStopped
ProcessPluginBase::multiple public function Indicates whether the returned value requires multiple handling. Overrides MigrateProcessInterface::multiple 3
ProcessPluginBase::reset public function Resets the internal data of a plugin. Overrides MigrateProcessInterface::reset
ProcessPluginBase::stopPipeline protected function Stops pipeline processing after this plugin finishes.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.