/** * Returns all referenced entities of an entity. * * This method is also recursive to support usecases like a node -> media * -> file. * * @param \Drupal\Core\Entity\ContentEntityInterface $entity * The entity. * @param int $depth * Guard against infinite recursion. * * @return \Drupal\Core\Entity\EntityInterface[] */ protected function getEntityReferencesRecursive(ContentEntityInterface $entity, $depth = 0) { $entity_dependencies = $entity->referencedEntities(); foreach ($entity_dependencies as $id => $dependent_entity) { // Config entities should not be exported but rather provided by default // config. if ($dependent_entity instanceof ConfigEntityInterface) { unset($entity_dependencies[$id]); } else { $entity_dependencies = array_merge($entity_dependencies, $this->getEntityReferencesRecursive($dependent_entity, $depth + 1)); } } // Build in some support against infinite recursion. if ($depth > 5) { return $entity_dependencies; } return array_unique($entity_dependencies, SORT_REGULAR); }