You are here

public function ContentEntityNormalizer::denormalize in Content Synchronization 3.0.x

Same name and namespace in other branches
  1. 8.2 src/Normalizer/ContentEntityNormalizer.php \Drupal\content_sync\Normalizer\ContentEntityNormalizer::denormalize()

Overrides EntityNormalizer::denormalize

2 calls to ContentEntityNormalizer::denormalize()
FileEntityNormalizer::denormalize in src/Normalizer/FileEntityNormalizer.php
UserEntityNormalizer::denormalize in src/Normalizer/UserEntityNormalizer.php
2 methods override ContentEntityNormalizer::denormalize()
FileEntityNormalizer::denormalize in src/Normalizer/FileEntityNormalizer.php
UserEntityNormalizer::denormalize in src/Normalizer/UserEntityNormalizer.php

File

src/Normalizer/ContentEntityNormalizer.php, line 71

Class

ContentEntityNormalizer
Adds the file URI to embedded file entities.

Namespace

Drupal\content_sync\Normalizer

Code

public function denormalize($data, $class, $format = NULL, array $context = []) {
  if (is_null($data)) {
    return NULL;
  }
  $original_data = $data;

  // Get the entity type ID while letting context override the $class param.
  $entity_type_id = !empty($context['entity_type']) ? $context['entity_type'] : $this->entityTypeRepository
    ->getEntityTypeFromClass($class);
  $bundle = FALSE;

  /** @var \Drupal\Core\Entity\EntityTypeInterface $entity_type_definition */

  // Get the entity type definition.
  $entity_type_definition = $this->entityTypeManager
    ->getDefinition($entity_type_id, FALSE);
  if ($entity_type_definition
    ->hasKey('bundle')) {
    $bundle_key = $entity_type_definition
      ->getKey('bundle');

    // Get the base field definitions for this entity type.
    $base_field_definitions = $this->entityFieldManager
      ->getBaseFieldDefinitions($entity_type_id);

    // Get the ID key from the base field definition for the bundle key or
    // default to 'value'.
    $key_id = isset($base_field_definitions[$bundle_key]) ? $base_field_definitions[$bundle_key]
      ->getFieldStorageDefinition()
      ->getMainPropertyName() : 'value';

    // Normalize the bundle if it is not explicitly set.
    $bundle = isset($data[$bundle_key][0][$key_id]) ? $data[$bundle_key][0][$key_id] : (isset($data[$bundle_key]) ? $data[$bundle_key] : NULL);
  }

  // Decorate data before denormalizing it.
  $this
    ->decorateDenormalization($data, $entity_type_id, $format, $context);

  // Resolve references
  $this
    ->fixReferences($data, $entity_type_id, $bundle);

  // Remove invalid fields
  $this
    ->cleanupData($data, $entity_type_id, $bundle);

  // Data to Entity
  $entity = parent::denormalize($data, $class, $format, $context);

  // Decorate denormalized entity before retuning it.
  $this
    ->decorateDenormalizedEntity($entity, $original_data, $format, $context);
  return $entity;
}