function ContentModeration::onDependencyRemoval

Overrides WorkflowTypeBase::onDependencyRemoval

File

core/modules/content_moderation/src/Plugin/WorkflowType/ContentModeration.php, line 249

Class

ContentModeration
Attaches workflows to content entity types and their bundles.

Namespace

Drupal\content_moderation\Plugin\WorkflowType

Code

public function onDependencyRemoval(array $dependencies) {
  $changed = parent::onDependencyRemoval($dependencies);
  // When bundle config entities are removed, ensure they are cleaned up from
  // the workflow.
  foreach ($dependencies['config'] as $removed_config) {
    if ($entity_type_id = $removed_config->getEntityType()
      ->getBundleOf()) {
      $bundle_id = $removed_config->id();
      $this->removeEntityTypeAndBundle($entity_type_id, $bundle_id);
      $changed = TRUE;
    }
  }
  // When modules that provide entity types are removed, ensure they are also
  // removed from the workflow.
  if (!empty($dependencies['module'])) {
    // Gather all entity definitions provided by the dependent modules which
    // are being removed.
    $module_entity_definitions = [];
    foreach ($this->entityTypeManager
      ->getDefinitions() as $entity_definition) {
      if (in_array($entity_definition->getProvider(), $dependencies['module'])) {
        $module_entity_definitions[] = $entity_definition;
      }
    }
    // For all entity types provided by the uninstalled modules, remove any
    // configuration for those types.
    foreach ($module_entity_definitions as $module_entity_definition) {
      foreach ($this->getBundlesForEntityType($module_entity_definition->id()) as $bundle) {
        $this->removeEntityTypeAndBundle($module_entity_definition->id(), $bundle);
        $changed = TRUE;
      }
    }
  }
  return $changed;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.