class EntityContentComplete
Same name in other branches
- 8.9.x core/modules/migrate/src/Plugin/migrate/destination/EntityContentComplete.php \Drupal\migrate\Plugin\migrate\destination\EntityContentComplete
- 10 core/modules/migrate/src/Plugin/migrate/destination/EntityContentComplete.php \Drupal\migrate\Plugin\migrate\destination\EntityContentComplete
- 11.x core/modules/migrate/src/Plugin/migrate/destination/EntityContentComplete.php \Drupal\migrate\Plugin\migrate\destination\EntityContentComplete
Provides a destination for migrating the entire entity revision table.
Plugin annotation
@MigrateDestination(
id = "entity_complete",
deriver = "Drupal\migrate\Plugin\Derivative\MigrateEntityComplete"
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements \Drupal\Component\Plugin\PluginInspectionInterface, \Drupal\Component\Plugin\DerivativeInspectionInterface
- class \Drupal\Core\Plugin\PluginBase extends \Drupal\Component\Plugin\PluginBase uses \Drupal\Core\StringTranslation\StringTranslationTrait, \Drupal\Core\DependencyInjection\DependencySerializationTrait, \Drupal\Core\Messenger\MessengerTrait
- class \Drupal\migrate\Plugin\migrate\destination\DestinationBase extends \Drupal\Core\Plugin\PluginBase implements \Drupal\migrate\Plugin\MigrateDestinationInterface, \Drupal\migrate\Plugin\RequirementsInterface
- class \Drupal\migrate\Plugin\migrate\destination\Entity extends \Drupal\migrate\Plugin\migrate\destination\DestinationBase implements \Drupal\Core\Plugin\ContainerFactoryPluginInterface, \Drupal\Component\Plugin\DependentPluginInterface uses \Drupal\Core\Entity\DependencyTrait, \Drupal\migrate\EntityFieldDefinitionTrait
- class \Drupal\migrate\Plugin\migrate\destination\EntityContentBase extends \Drupal\migrate\Plugin\migrate\destination\Entity implements \Drupal\migrate\Audit\HighestIdInterface, \Drupal\migrate\Plugin\MigrateValidatableEntityInterface
- class \Drupal\migrate\Plugin\migrate\destination\EntityContentComplete extends \Drupal\migrate\Plugin\migrate\destination\EntityContentBase uses \Drupal\migrate\EntityFieldDefinitionTrait
- class \Drupal\migrate\Plugin\migrate\destination\EntityContentBase extends \Drupal\migrate\Plugin\migrate\destination\Entity implements \Drupal\migrate\Audit\HighestIdInterface, \Drupal\migrate\Plugin\MigrateValidatableEntityInterface
- class \Drupal\migrate\Plugin\migrate\destination\Entity extends \Drupal\migrate\Plugin\migrate\destination\DestinationBase implements \Drupal\Core\Plugin\ContainerFactoryPluginInterface, \Drupal\Component\Plugin\DependentPluginInterface uses \Drupal\Core\Entity\DependencyTrait, \Drupal\migrate\EntityFieldDefinitionTrait
- class \Drupal\migrate\Plugin\migrate\destination\DestinationBase extends \Drupal\Core\Plugin\PluginBase implements \Drupal\migrate\Plugin\MigrateDestinationInterface, \Drupal\migrate\Plugin\RequirementsInterface
- class \Drupal\Core\Plugin\PluginBase extends \Drupal\Component\Plugin\PluginBase uses \Drupal\Core\StringTranslation\StringTranslationTrait, \Drupal\Core\DependencyInjection\DependencySerializationTrait, \Drupal\Core\Messenger\MessengerTrait
Expanded class hierarchy of EntityContentComplete
2 files declare their use of EntityContentComplete
- IdAuditor.php in core/
modules/ migrate/ src/ Audit/ IdAuditor.php - MigrateEntityComplete.php in core/
modules/ migrate/ src/ Plugin/ Derivative/ MigrateEntityComplete.php
File
-
core/
modules/ migrate/ src/ Plugin/ migrate/ destination/ EntityContentComplete.php, line 20
Namespace
Drupal\migrate\Plugin\migrate\destinationView source
class EntityContentComplete extends EntityContentBase {
use EntityFieldDefinitionTrait;
/**
* {@inheritdoc}
*/
public function getIds() {
$ids = [];
$id_key = $this->getKey('id');
$ids[$id_key] = $this->getDefinitionFromEntity($id_key);
$revision_key = $this->getKey('revision');
if ($revision_key) {
$ids[$revision_key] = $this->getDefinitionFromEntity($revision_key);
}
$langcode_key = $this->getKey('langcode');
if ($langcode_key) {
$ids[$langcode_key] = $this->getDefinitionFromEntity($langcode_key);
}
return $ids;
}
/**
* Gets the entity.
*
* @param \Drupal\migrate\Row $row
* The row object.
* @param array $old_destination_id_values
* The old destination IDs.
*
* @return \Drupal\Core\Entity\EntityInterface
* The entity.
*/
protected function getEntity(Row $row, array $old_destination_id_values) {
$revision_id = $old_destination_id_values ? $old_destination_id_values[1] : $row->getDestinationProperty($this->getKey('revision'));
// If we are re-running a migration with set revision IDs and the
// destination revision ID already exists then do not create a new revision.
if (!empty($revision_id) && ($entity = $this->storage
->loadRevision($revision_id))) {
$entity->setNewRevision(FALSE);
}
elseif (($entity_id = $row->getDestinationProperty($this->getKey('id'))) && ($entity = $this->storage
->load($entity_id))) {
// We want to create a new entity. Set enforceIsNew() FALSE is necessary
// to properly save a new entity while setting the ID. Without it, the
// system would see that the ID is already set and assume it is an update.
$entity->enforceIsNew(FALSE);
// Intentionally create a new revision. Setting new revision TRUE here may
// not be necessary, it is done for clarity.
$entity->setNewRevision(TRUE);
}
else {
// Attempt to set the bundle.
if ($bundle = $this->getBundle($row)) {
$row->setDestinationProperty($this->getKey('bundle'), $bundle);
}
// Stubs might need some required fields filled in.
if ($row->isStub()) {
$this->processStubRow($row);
}
$entity = $this->storage
->create($row->getDestination());
$entity->enforceIsNew();
}
// We need to update the entity, so that the destination row IDs are
// correct.
$entity = $this->updateEntity($entity, $row);
$entity->isDefaultRevision(TRUE);
if ($entity instanceof EntityChangedInterface && $entity instanceof ContentEntityInterface) {
// If we updated any untranslatable fields, update the timestamp for the
// other translations.
/** @var \Drupal\Core\Entity\ContentEntityInterface|\Drupal\Core\Entity\EntityChangedInterface $entity */
foreach ($entity->getTranslationLanguages() as $langcode => $language) {
// If we updated an untranslated field, then set the changed time for
// for all translations to match the current row that we are saving.
// In this context, getChangedTime() should return the value we just
// set in the updateEntity() call above.
if ($entity->getTranslation($langcode)
->hasTranslationChanges()) {
$entity->getTranslation($langcode)
->setChangedTime($entity->getChangedTime());
}
}
}
return $entity;
}
/**
* {@inheritdoc}
*/
protected function updateEntity(EntityInterface $entity, Row $row) {
$entity = parent::updateEntity($entity, $row);
// Always set the rollback action to delete. This is because the parent
// updateEntity will set the rollback action to preserve for the original
// language row, which is needed for the classic node migrations.
$this->setRollbackAction($row->getIdMap(), MigrateIdMapInterface::ROLLBACK_DELETE);
return $entity;
}
/**
* {@inheritdoc}
*/
protected function save(ContentEntityInterface $entity, array $old_destination_id_values = []) {
parent::save($entity, $old_destination_id_values);
return [
$entity->id(),
$entity->getRevisionId(),
];
}
/**
* {@inheritdoc}
*/
public function rollback(array $destination_identifier) {
// We want to delete the entity and all the translations so use
// Entity:rollback because EntityContentBase::rollback will not remove the
// default translation.
Entity::rollback($destination_identifier);
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides |
---|---|---|---|---|---|
DependencyTrait::$dependencies | protected | property | The object's dependencies. | ||
DependencyTrait::addDependencies | protected | function | Adds multiple dependencies. | ||
DependencyTrait::addDependency | protected | function | Adds a dependency. | ||
DestinationBase::$migration | protected | property | The migration. | ||
DestinationBase::$rollbackAction | protected | property | The rollback action to be saved for the last imported item. | ||
DestinationBase::$supportsRollback | protected | property | Indicates whether the destination can be rolled back. | ||
DestinationBase::checkRequirements | public | function | Checks if requirements for this plugin are OK. | Overrides RequirementsInterface::checkRequirements | |
DestinationBase::getDestinationModule | public | function | Gets the destination module handling the destination data. | Overrides MigrateDestinationInterface::getDestinationModule | 1 |
DestinationBase::rollbackAction | public | function | The rollback action for the last imported item. | Overrides MigrateDestinationInterface::rollbackAction | |
DestinationBase::setRollbackAction | protected | function | For a destination item being updated, set the appropriate rollback action. | ||
DestinationBase::supportsRollback | public | function | Whether the destination can be rolled back or not. | Overrides MigrateDestinationInterface::supportsRollback | |
Entity::$bundles | protected | property | The list of the bundles of this entity type. | ||
Entity::$entityFieldManager | protected | property | The entity field manager. | ||
Entity::$storage | protected | property | The entity storage. | ||
Entity::calculateDependencies | public | function | Calculates dependencies for the configured plugin. | Overrides DependentPluginInterface::calculateDependencies | |
Entity::fields | public | function | Returns an array of destination fields. | Overrides MigrateDestinationInterface::fields | |
Entity::getBundle | public | function | Gets the bundle for the row taking into account the default. | ||
Entity::getEntityId | protected | function | Gets the entity ID of the row. | 2 | |
Entity::getKey | protected | function | Returns a specific entity key. | ||
EntityContentBase::$accountSwitcher | protected | property | The account switcher service. | ||
EntityContentBase::$fieldTypeManager | protected | property | Field type plugin manager. | ||
EntityContentBase::create | public static | function | Creates an instance of the plugin. | Overrides Entity::create | 2 |
EntityContentBase::getHighestId | public | function | Returns the highest ID tracked by the implementing plugin. | Overrides HighestIdInterface::getHighestId | 2 |
EntityContentBase::import | public | function | Overrides MigrateDestinationInterface::import | 2 | |
EntityContentBase::isEntityValidationRequired | public | function | Returns a state of whether an entity needs to be validated before saving. | Overrides MigrateValidatableEntityInterface::isEntityValidationRequired | |
EntityContentBase::isTranslationDestination | public | function | |||
EntityContentBase::processStubRow | protected | function | Populates as much of the stub row as possible. | 3 | |
EntityContentBase::validateEntity | public | function | Validates the entity. | Overrides MigrateValidatableEntityInterface::validateEntity | |
EntityContentBase::__construct | public | function | Constructs a content entity. | Overrides Entity::__construct | 3 |
EntityContentComplete::getEntity | protected | function | Gets the entity. | Overrides Entity::getEntity | |
EntityContentComplete::getIds | public | function | Gets the destination IDs. | Overrides EntityContentBase::getIds | |
EntityContentComplete::rollback | public | function | Delete the specified destination object from the target Drupal. | Overrides EntityContentBase::rollback | |
EntityContentComplete::save | protected | function | Saves the entity. | Overrides EntityContentBase::save | |
EntityContentComplete::updateEntity | protected | function | Updates an entity with the new values from row. | Overrides EntityContentBase::updateEntity | |
EntityFieldDefinitionTrait::getDefinitionFromEntity | protected | function | Gets the field definition from a specific entity base field. | ||
EntityFieldDefinitionTrait::getEntityTypeId | protected static | function | Finds the entity type from configuration or plugin ID. | 3 | |
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 |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.