You are here

public function EntitySchemaSubscriber::onEntityTypeUpdate in Drupal 10

Same name in this branch
  1. 10 core/modules/workspaces/src/EventSubscriber/EntitySchemaSubscriber.php \Drupal\workspaces\EventSubscriber\EntitySchemaSubscriber::onEntityTypeUpdate()
  2. 10 core/modules/system/tests/modules/entity_test_update/src/EventSubscriber/EntitySchemaSubscriber.php \Drupal\entity_test_update\EventSubscriber\EntitySchemaSubscriber::onEntityTypeUpdate()
Same name and namespace in other branches
  1. 8 core/modules/workspaces/src/EventSubscriber/EntitySchemaSubscriber.php \Drupal\workspaces\EventSubscriber\EntitySchemaSubscriber::onEntityTypeUpdate()
  2. 9 core/modules/workspaces/src/EventSubscriber/EntitySchemaSubscriber.php \Drupal\workspaces\EventSubscriber\EntitySchemaSubscriber::onEntityTypeUpdate()

Reacts to the update of the entity type.

Parameters

\Drupal\Core\Entity\EntityTypeInterface $entity_type: The updated entity type definition.

\Drupal\Core\Entity\EntityTypeInterface $original: The original entity type definition.

Overrides EntityTypeEventSubscriberTrait::onEntityTypeUpdate

1 call to EntitySchemaSubscriber::onEntityTypeUpdate()
EntitySchemaSubscriber::onFieldableEntityTypeUpdate in core/modules/workspaces/src/EventSubscriber/EntitySchemaSubscriber.php
Reacts to the update of a fieldable entity type.

File

core/modules/workspaces/src/EventSubscriber/EntitySchemaSubscriber.php, line 88

Class

EntitySchemaSubscriber
Defines a class for listening to entity schema changes.

Namespace

Drupal\workspaces\EventSubscriber

Code

public function onEntityTypeUpdate(EntityTypeInterface $entity_type, EntityTypeInterface $original) {

  // If the entity type is now supported by Workspaces, add the revision
  // metadata field.
  if ($this->workspaceManager
    ->isEntityTypeSupported($entity_type) && !$this->workspaceManager
    ->isEntityTypeSupported($original)) {
    $this
      ->addRevisionMetadataField($entity_type);
  }

  // If the entity type is no longer supported by Workspaces, remove the
  // revision metadata field.
  if ($this->workspaceManager
    ->isEntityTypeSupported($original) && !$this->workspaceManager
    ->isEntityTypeSupported($entity_type)) {
    $revision_metadata_keys = $original
      ->get('revision_metadata_keys');
    $field_storage_definition = $this->entityLastInstalledSchemaRepository
      ->getLastInstalledFieldStorageDefinitions($entity_type
      ->id())[$revision_metadata_keys['workspace']];
    $this->entityDefinitionUpdateManager
      ->uninstallFieldStorageDefinition($field_storage_definition);

    // We are only removing a revision metadata key so we don't need to go
    // through the entity update process.
    $entity_type
      ->setRevisionMetadataKey('workspace', NULL);
    $this->entityLastInstalledSchemaRepository
      ->setLastInstalledDefinition($entity_type);
  }
}