public function ContentEntityNormalizer::normalize in Replication 8        
                          
                  
                        Same name and namespace in other branches
- 8.2 src/Normalizer/ContentEntityNormalizer.php \Drupal\replication\Normalizer\ContentEntityNormalizer::normalize()
 
 
6 calls to ContentEntityNormalizer::normalize()
  - AttachmentNormalizer::normalize in src/Normalizer/AttachmentNormalizer.php
 
  - Normalizes an object into a set of arrays/scalars.
 
  - CropNormalizer::normalize in src/Normalizer/CropNormalizer.php
 
  - Normalizes an object into a set of arrays/scalars.
 
  - FileEntityNormalizer::normalize in src/Normalizer/FileEntityNormalizer.php
 
  - Normalizes an object into a set of arrays/scalars.
 
  - MenuLinkContentNormalizer::normalize in src/Normalizer/MenuLinkContentNormalizer.php
 
  - Normalizes an object into a set of arrays/scalars.
 
  - ParagraphNormalizer::normalize in src/Normalizer/ParagraphNormalizer.php
 
  - Normalizes an object into a set of arrays/scalars.
 
... See full list
6 methods override ContentEntityNormalizer::normalize()
  - AttachmentNormalizer::normalize in src/Normalizer/AttachmentNormalizer.php
 
  - Normalizes an object into a set of arrays/scalars.
 
  - CropNormalizer::normalize in src/Normalizer/CropNormalizer.php
 
  - Normalizes an object into a set of arrays/scalars.
 
  - FileEntityNormalizer::normalize in src/Normalizer/FileEntityNormalizer.php
 
  - Normalizes an object into a set of arrays/scalars.
 
  - MenuLinkContentNormalizer::normalize in src/Normalizer/MenuLinkContentNormalizer.php
 
  - Normalizes an object into a set of arrays/scalars.
 
  - ParagraphNormalizer::normalize in src/Normalizer/ParagraphNormalizer.php
 
  - Normalizes an object into a set of arrays/scalars.
 
... See full list
 
File
 
   - src/Normalizer/ContentEntityNormalizer.php, line 95
 
  
  Class
  
  - ContentEntityNormalizer 
 
  
  Namespace
  Drupal\replication\Normalizer
Code
public function normalize($entity, $format = NULL, array $context = []) {
  $workspace = isset($entity->workspace->entity) ? $entity->workspace->entity : null;
  $rev_tree_index = $this->indexFactory
    ->get('multiversion.entity_index.rev.tree', $workspace);
  $entity_type_id = $context['entity_type'] = $entity
    ->getEntityTypeId();
  $entity_type = $this->entityManager
    ->getDefinition($entity_type_id);
  $id_key = $entity_type
    ->getKey('id');
  $revision_key = $entity_type
    ->getKey('revision');
  $uuid_key = $entity_type
    ->getKey('uuid');
  $entity_uuid = $entity
    ->uuid();
  $entity_default_language = $entity
    ->language();
  $entity_languages = $entity
    ->getTranslationLanguages();
  
  $data = [
    '@context' => [
      '_id' => '@id',
      '@language' => $entity_default_language
        ->getId(),
    ],
    '@type' => $entity_type_id,
    '_id' => $entity_uuid,
  ];
  
  if (!empty($entity->_rev->value)) {
    $data['_rev'] = $entity->_rev->value;
  }
  
  $field_definitions = $entity
    ->getFieldDefinitions();
  foreach ($entity_languages as $entity_language) {
    $translation = $entity
      ->getTranslation($entity_language
      ->getId());
    
    $data[$entity_language
      ->getId()] = [
      '@context' => [
        '@language' => $entity_language
          ->getId(),
      ],
    ];
    foreach ($translation as $name => $field) {
      
      $field_type = $field_definitions[$name]
        ->getType();
      $items = $this->serializer
        ->normalize($field, $format, $context);
      if ($field_type == 'password') {
        continue;
      }
      $data[$entity_language
        ->getId()][$name] = $items;
    }
    
    if (isset($translation->_deleted->value) && $translation->_deleted->value == TRUE) {
      $data[$entity_language
        ->getId()]['_deleted'] = TRUE;
      $data['_deleted'] = TRUE;
    }
    elseif (isset($data[$entity_language
      ->getId()]['_deleted'])) {
      unset($data[$entity_language
        ->getId()]['_deleted']);
    }
  }
  
  if (!empty($entity->_rev->revisions)) {
    $data['_revisions']['ids'] = $entity->_rev->revisions;
    $data['_revisions']['start'] = count($data['_revisions']['ids']);
  }
  if (!empty($context['query']['conflicts'])) {
    $conflicts = $rev_tree_index
      ->getConflicts($entity_uuid);
    foreach ($conflicts as $rev => $status) {
      $data['_conflicts'][] = $rev;
    }
  }
  
  unset($data['workspace'], $data[$id_key], $data[$revision_key], $data[$uuid_key]);
  foreach ($entity_languages as $entity_language) {
    $langcode = $entity_language
      ->getId();
    unset($data[$langcode]['workspace'], $data[$langcode][$id_key], $data[$langcode][$revision_key], $data[$langcode][$uuid_key]);
  }
  $event = new ReplicationContentDataAlterEvent($entity, $data, $format, $context);
  $this->dispatcher
    ->dispatch(ReplicationDataEvents::ALTER_CONTENT_DATA, $event);
  return $event
    ->getData();
}