class NodeTranslationMigrateSubscriber in Drupal 9
Same name and namespace in other branches
- 8 core/modules/node/src/EventSubscriber/NodeTranslationMigrateSubscriber.php \Drupal\node\EventSubscriber\NodeTranslationMigrateSubscriber
Creates a key value collection for migrated node translation redirections.
If we are migrating node translations from Drupal 6 or 7, these nodes will be combined with their source node. Since there still might be references to the URLs of these now consolidated nodes, this service saves the mapping between the old nids to the new ones to be able to redirect them to the right node in the right language.
The mapping is stored in the "node_translation_redirect" key/value collection and the redirection is made by the NodeTranslationExceptionSubscriber class.
Hierarchy
- class \Drupal\node\EventSubscriber\NodeTranslationMigrateSubscriber implements \Symfony\Component\EventDispatcher\EventSubscriberInterface
Expanded class hierarchy of NodeTranslationMigrateSubscriber
See also
\Drupal\node\NodeServiceProvider
\Drupal\node\EventSubscriber\NodeTranslationExceptionSubscriber
1 file declares its use of NodeTranslationMigrateSubscriber
- NodeServiceProvider.php in core/
modules/ node/ src/ NodeServiceProvider.php
File
- core/
modules/ node/ src/ EventSubscriber/ NodeTranslationMigrateSubscriber.php, line 28
Namespace
Drupal\node\EventSubscriberView source
class NodeTranslationMigrateSubscriber implements EventSubscriberInterface {
/**
* The key value factory.
*
* @var \Drupal\Core\KeyValueStore\KeyValueFactoryInterface
*/
protected $keyValue;
/**
* The state service.
*
* @var \Drupal\Core\State\StateInterface
*/
protected $state;
/**
* Constructs the NodeTranslationMigrateSubscriber.
*
* @param \Drupal\Core\KeyValueStore\KeyValueFactoryInterface $key_value
* The key value factory.
* @param \Drupal\Core\State\StateInterface $state
* The state service.
*/
public function __construct(KeyValueFactoryInterface $key_value, StateInterface $state) {
$this->keyValue = $key_value;
$this->state = $state;
}
/**
* Helper method to check if we are migrating translated nodes.
*
* @param \Drupal\migrate\Event\EventBase $event
* The migrate event.
*
* @return bool
* True if we are migrating translated nodes, false otherwise.
*/
protected function isNodeTranslationsMigration(EventBase $event) {
$migration = $event
->getMigration();
$source_configuration = $migration
->getSourceConfiguration();
$destination_configuration = $migration
->getDestinationConfiguration();
return !empty($source_configuration['translations']) && $destination_configuration['plugin'] === 'entity:node';
}
/**
* Maps the old nid to the new one in the key value collection.
*
* @param \Drupal\migrate\Event\MigratePostRowSaveEvent $event
* The migrate post row save event.
*/
public function onPostRowSave(MigratePostRowSaveEvent $event) {
if ($this
->isNodeTranslationsMigration($event)) {
$row = $event
->getRow();
$source = $row
->getSource();
$destination = $row
->getDestination();
$collection = $this->keyValue
->get('node_translation_redirect');
$collection
->set($source['nid'], [
$destination['nid'],
$destination['langcode'],
]);
}
}
/**
* Set the node_translation_redirect state to enable the redirections.
*
* @param \Drupal\migrate\Event\MigrateImportEvent $event
* The migrate import event.
*/
public function onPostImport(MigrateImportEvent $event) {
if ($this
->isNodeTranslationsMigration($event)) {
$this->state
->set('node_translation_redirect', TRUE);
}
}
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents() {
$events = [];
$events[MigrateEvents::POST_ROW_SAVE] = [
'onPostRowSave',
];
$events[MigrateEvents::POST_IMPORT] = [
'onPostImport',
];
return $events;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
NodeTranslationMigrateSubscriber:: |
protected | property | The key value factory. | |
NodeTranslationMigrateSubscriber:: |
protected | property | The state service. | |
NodeTranslationMigrateSubscriber:: |
public static | function | ||
NodeTranslationMigrateSubscriber:: |
protected | function | Helper method to check if we are migrating translated nodes. | |
NodeTranslationMigrateSubscriber:: |
public | function | Set the node_translation_redirect state to enable the redirections. | |
NodeTranslationMigrateSubscriber:: |
public | function | Maps the old nid to the new one in the key value collection. | |
NodeTranslationMigrateSubscriber:: |
public | function | Constructs the NodeTranslationMigrateSubscriber. |