Same name and namespace in other branches
- 8.9.x core/modules/migrate/src/Plugin/migrate/destination/EntityContentBase.php \Drupal\migrate\Plugin\migrate\destination\EntityContentBase::updateEntity()
- 9 core/modules/migrate/src/Plugin/migrate/destination/EntityContentBase.php \Drupal\migrate\Plugin\migrate\destination\EntityContentBase::updateEntity()
1 call to EntityContentBase::updateEntity()
- Book::updateEntity in core/
modules/ book/ src/ Plugin/ migrate/ destination/ Book.php
1 method overrides EntityContentBase::updateEntity()
- Book::updateEntity in core/
modules/ book/ src/ Plugin/ migrate/ destination/ Book.php
File
- core/
modules/ migrate/ src/ Plugin/ migrate/ destination/ EntityContentBase.php, line 271
Class
- EntityContentBase
- Provides destination class for all content entities lacking a specific class.
Namespace
Drupal\migrate\Plugin\migrate\destinationCode
protected function updateEntity(EntityInterface $entity, Row $row) {
$empty_destinations = $row
->getEmptyDestinationProperties();
// By default, an update will be preserved.
$rollback_action = MigrateIdMapInterface::ROLLBACK_PRESERVE;
// Make sure we have the right translation.
if ($this
->isTranslationDestination()) {
$property = $this->storage
->getEntityType()
->getKey('langcode');
if ($row
->hasDestinationProperty($property)) {
$language = $row
->getDestinationProperty($property);
if (!$entity
->hasTranslation($language)) {
$entity
->addTranslation($language);
// We're adding a translation, so delete it on rollback.
$rollback_action = MigrateIdMapInterface::ROLLBACK_DELETE;
}
$entity = $entity
->getTranslation($language);
}
}
// If the migration has specified a list of properties to be overwritten,
// clone the row with an empty set of destination values, and re-add only
// the specified properties.
if (isset($this->configuration['overwrite_properties'])) {
$empty_destinations = array_intersect($empty_destinations, $this->configuration['overwrite_properties']);
$clone = $row
->cloneWithoutDestination();
foreach ($this->configuration['overwrite_properties'] as $property) {
$clone
->setDestinationProperty($property, $row
->getDestinationProperty($property));
}
$row = $clone;
}
foreach ($row
->getDestination() as $field_name => $values) {
$field = $entity->{$field_name};
if ($field instanceof TypedDataInterface) {
$field
->setValue($values);
}
}
foreach ($empty_destinations as $field_name) {
$entity->{$field_name} = NULL;
}
$this
->setRollbackAction($row
->getIdMap(), $rollback_action);
// We might have a different (translated) entity, so return it.
return $entity;
}