You are here

public function EntityHierarchy::onDependencyRemoval in Entity Reference Hierarchy 3.x

Same name and namespace in other branches
  1. 8.2 modules/entity_hierarchy_workbench_access/src/Plugin/AccessControlHierarchy/EntityHierarchy.php \Drupal\entity_hierarchy_workbench_access\Plugin\AccessControlHierarchy\EntityHierarchy::onDependencyRemoval()

File

modules/entity_hierarchy_workbench_access/src/Plugin/AccessControlHierarchy/EntityHierarchy.php, line 362

Class

EntityHierarchy
Defines a hierarchy based on an entity hierarchy field.

Namespace

Drupal\entity_hierarchy_workbench_access\Plugin\AccessControlHierarchy

Code

public function onDependencyRemoval(array $dependencies) {
  $fields = array_diff($this->configuration['boolean_fields'], array_reduce($dependencies['config'], function (array $carry, $item) {
    if (!$item instanceof FieldConfigInterface) {
      return $carry;
    }
    if ($item
      ->getTargetEntityTypeId() !== $this->pluginDefinition['entity']) {
      return $carry;
    }
    $carry[] = $item
      ->getName();
    return $carry;
  }, []));
  $entityType = $this->entityTypeManager
    ->getDefinition($this->pluginDefinition['entity']);
  $bundles = [];
  if ($bundle = $entityType
    ->getBundleEntityType()) {
    $bundleType = $this->entityTypeManager
      ->getDefinition($bundle);
    $bundles = array_diff($this->configuration['bundles'], array_reduce($dependencies['config'], function (array $carry, $item) use ($bundleType) {
      if (in_array($bundleType
        ->getClass(), class_parents($item))) {
        return $carry;
      }
      $carry[] = $item
        ->id();
      return $carry;
    }, []));
  }
  $changed = $fields != $this->configuration['boolean_fields'] || $bundles != $this->configuration['bundles'];
  $this->configuration['boolean_fields'] = $fields;
  $this->configuration['bundles'] = $bundles;
  return $changed;
}