You are here

public function EntityViewDisplayDependencyCollector::onCalculateDependencies in Dependency Calculation 8

Calculates the associated entity view display.

Parameters

\Drupal\depcalc\Event\CalculateEntityDependenciesEvent $event: The dependency calculation event.

File

src/EventSubscriber/DependencyCollector/EntityViewDisplayDependencyCollector.php, line 47

Class

EntityViewDisplayDependencyCollector
Subscribes to dependency collection to extract the entity view display.

Namespace

Drupal\depcalc\EventSubscriber\DependencyCollector

Code

public function onCalculateDependencies(CalculateEntityDependenciesEvent $event) {
  if ($event
    ->getEntity() instanceof ContentEntityInterface) {
    $storage = $this->entityTypeManager
      ->getStorage('entity_view_display');
    $entity = $event
      ->getEntity();
    $ids = $this->entityTypeManager
      ->getStorage('entity_view_display')
      ->getQuery('AND')
      ->condition('status', TRUE)
      ->condition('targetEntityType', $entity
      ->getEntityTypeId())
      ->condition('bundle', $entity
      ->bundle())
      ->execute();
    if ($ids) {
      $displays = $storage
        ->loadMultiple($ids);
      foreach ($displays as $display) {
        $display_wrapper = new DependentEntityWrapper($display);
        $local_dependencies = [];
        $this
          ->mergeDependencies($display_wrapper, $event
          ->getStack(), $this
          ->getCalculator()
          ->calculateDependencies($display_wrapper, $event
          ->getStack(), $local_dependencies));
        $event
          ->addDependency($display_wrapper);
      }
    }
  }
}