public function ContentImporter::importEntity in Content Synchronization 3.0.x
Same name and namespace in other branches
- 8.2 src/Importer/ContentImporter.php \Drupal\content_sync\Importer\ContentImporter::importEntity()
Parameters
$decoded_entity:
$entity_type_id:
array $context:
Return value
\Drupal\Core\Entity\ContentEntityInterface
Overrides ContentImporterInterface::importEntity
File
- src/
Importer/ ContentImporter.php, line 38
Class
Namespace
Drupal\content_sync\ImporterCode
public function importEntity($decoded_entity, $context = []) {
$context = $this->context + $context;
if (!empty($context['entity_type'])) {
$entity_type_id = $context['entity_type'];
}
elseif (!empty($decoded_entity['_content_sync']['entity_type'])) {
$entity_type_id = $decoded_entity['_content_sync']['entity_type'];
}
else {
return NULL;
}
// Replace a menu link to a node with an actual one.
if ($entity_type_id == 'menu_link_content' && !empty($decoded_entity["_content_sync"]["menu_entity_link"])) {
$decoded_entity = $this
->alterMenuLink($decoded_entity);
}
// Replace a Path Alias to a node with an actual one.
if ($entity_type_id == 'path_alias' && !empty($decoded_entity["_content_sync"]["path_alias"])) {
$decoded_entity = $this
->alterPathAlias($decoded_entity);
}
$entity_type = $this->entityTypeManager
->getDefinition($entity_type_id);
//Exception for parent null -- allowing the term to be displayed on the taxonomy list.
if ($entity_type_id == 'taxonomy_term') {
if (empty($decoded_entity['parent'])) {
$decoded_entity['parent']['target_id'] = 0;
}
}
//Get Translations before denormalize
if (!empty($decoded_entity['_translations'])) {
$entity_translations = $decoded_entity['_translations'];
}
$entity = $this->serializer
->denormalize($decoded_entity, $entity_type
->getClass(), $this->format, $context);
if (!empty($entity)) {
// Prevent Anonymous User from being saved.
if ($entity_type_id == 'user' && !$entity
->isNew() && (int) $entity
->id() === 0) {
return $entity;
}
$entity = $this
->syncEntity($entity);
}
// Include Translations
if ($entity) {
if (isset($entity_translations) && is_array($entity_translations)) {
$this
->updateTranslation($entity, $entity_type, $entity_translations, $context);
}
}
return $entity;
}