private function Exporter::getEntityReferencesRecursive in Default Content Deploy 8
Returns all referenced entities of an entity.
This method is also recursive to support use-cases like a node -> media -> file.
Parameters
\Drupal\Core\Entity\ContentEntityInterface $entity: The entity.
int $depth: Guard against infinite recursion.
\Drupal\Core\Entity\ContentEntityInterface[] $indexed_dependencies: Previously discovered dependencies.
Return value
\Drupal\Core\Entity\ContentEntityInterface[] Keyed array of entities indexed by entity type and ID.
1 call to Exporter::getEntityReferencesRecursive()
- Exporter::getSerializedContentWithReferences in src/
Exporter.php - Exports a single entity and all its referenced entity.
File
- src/
Exporter.php, line 585
Class
- Exporter
- A service for handling export of default content.
Namespace
Drupal\default_content_deployCode
private function getEntityReferencesRecursive(ContentEntityInterface $entity, $depth = 0, array &$indexed_dependencies = []) {
$entity_dependencies = $entity
->referencedEntities();
foreach ($entity_dependencies as $dependent_entity) {
// Config entities should not be exported but rather provided by default
// config.
if (!$dependent_entity instanceof ContentEntityInterface) {
continue;
}
// Using UUID to keep dependencies unique to prevent recursion.
$key = $dependent_entity
->uuid();
if (isset($indexed_dependencies[$key])) {
// Do not add already indexed dependencies.
continue;
}
$indexed_dependencies[$key] = $dependent_entity;
// Build in some support against infinite recursion.
if ($depth < 6) {
$indexed_dependencies += $this
->getEntityReferencesRecursive($dependent_entity, $depth + 1, $indexed_dependencies);
}
}
return $indexed_dependencies;
}