function ContentModeration::onDependencyRemoval

Same name and namespace in other branches
  1. 9 core/modules/content_moderation/src/Plugin/WorkflowType/ContentModeration.php \Drupal\content_moderation\Plugin\WorkflowType\ContentModeration::onDependencyRemoval()
  2. 10 core/modules/content_moderation/src/Plugin/WorkflowType/ContentModeration.php \Drupal\content_moderation\Plugin\WorkflowType\ContentModeration::onDependencyRemoval()
  3. 11.x core/modules/content_moderation/src/Plugin/WorkflowType/ContentModeration.php \Drupal\content_moderation\Plugin\WorkflowType\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.