public function Exporter::exportContentWithReferences in Default Content for D8 8
Same name and namespace in other branches
- 2.0.x src/Exporter.php \Drupal\default_content\Exporter::exportContentWithReferences()
Exports a single entity and all its referenced entity.
Parameters
string $entity_type_id: The entity type ID.
mixed $entity_id: The entity ID to export.
Return value
string[][] The serialized entities keyed by entity type and UUID.
Overrides ExporterInterface::exportContentWithReferences
File
- src/Exporter.php, line 167 
Class
- Exporter
- A service for handling import of default content.
Namespace
Drupal\default_contentCode
public function exportContentWithReferences($entity_type_id, $entity_id) {
  $storage = $this->entityTypeManager
    ->getStorage($entity_type_id);
  $entity = $storage
    ->load($entity_id);
  if (!$entity) {
    throw new \InvalidArgumentException(sprintf('Entity "%s" with ID "%s" does not exist', $entity_type_id, $entity_id));
  }
  if (!$entity instanceof ContentEntityInterface) {
    throw new \InvalidArgumentException(sprintf('Entity "%s" with ID "%s" is not a content entity', $entity_type_id, $entity_id));
  }
  $entities = [
    $entity
      ->uuid() => $entity,
  ];
  $entities = $this
    ->getEntityReferencesRecursive($entity, 0, $entities);
  if ($this
    ->isCli()) {
    $root_user = $this->entityTypeManager
      ->getStorage('user')
      ->load(1);
    $this->accountSwitcher
      ->switchTo($root_user);
  }
  $this->linkManager
    ->setLinkDomain($this->linkDomain);
  // Serialize all entities and key them by entity TYPE and uuid.
  $serialized_entities_per_type = [];
  foreach ($entities as $entity) {
    $serialized_entities_per_type[$entity
      ->getEntityTypeId()][$entity
      ->uuid()] = $this->serializer
      ->serialize($entity, 'hal_json', [
      'json_encode_options' => JSON_PRETTY_PRINT,
    ]);
  }
  // Reset the link domain and the current user, if needed.
  $this->linkManager
    ->setLinkDomain(FALSE);
  if ($this
    ->isCli()) {
    $this->accountSwitcher
      ->switchBack();
  }
  return $serialized_entities_per_type;
}