You are here

public function ConfigSubscriber::onBaseFieldDelete in Field Encryption 3.0.x

React to a base field being deleted.

Parameters

\Drupal\Core\Field\FieldStorageDefinitionEvent $event: The field storage event.

File

src/EventSubscriber/ConfigSubscriber.php, line 193

Class

ConfigSubscriber
Updates existing data when field encryption settings are updated.

Namespace

Drupal\field_encrypt\EventSubscriber

Code

public function onBaseFieldDelete(FieldStorageDefinitionEvent $event) {

  // @todo as this makes a configuration change should we disable during
  //   configuration import?
  $field = $event
    ->getFieldStorageDefinition();
  if ($event
    ->getFieldStorageDefinition()
    ->isBaseField()) {

    /** @var \Drupal\field_encrypt\Entity\FieldEncryptEntityType $field_encrypt_settings */
    $field_encrypt_settings = $this->entityTypeManager
      ->getStorage('field_encrypt_entity_type')
      ->load($field
      ->getTargetEntityTypeId());
    if ($field_encrypt_settings && $field_encrypt_settings
      ->hasBaseField($field
      ->getName())) {
      $field_encrypt_settings
        ->removeBaseField($field
        ->getName());
      empty($field_encrypt_settings
        ->getBaseFields()) ? $field_encrypt_settings
        ->delete() : $field_encrypt_settings
        ->save();
    }
  }
}