entity_meta_relation-8.x-1.0-beta8/modules/emr_node/emr_node.post_update.php

modules/emr_node/emr_node.post_update.php
<?php

/**
 * @file
 * Entity Meta Relation Node post update file.
 */

declare(strict_types=1);

/**
 * Fix misconfigured handler_settings.
 */
function emr_node_post_update_00001(): void {
  $entity_type_manager = \Drupal::entityTypeManager();
  $bundles = \Drupal::service('entity_type.bundle.info')->getAllBundleInfo();
  foreach (['emr_meta_revision', 'emr_node_revision'] as $field_name) {
    /** @var \Drupal\Core\Field\FieldConfigInterface $field_config */
    $field_config = $entity_type_manager->getStorage('field_config')->load('entity_meta_relation.node_meta_relation.' . $field_name);
    if (!$field_config) {
      continue;
    }
    $handler_settings = !empty($field_config->getSetting('handler_settings')) ? $field_config->getSetting('handler_settings') : [];
    if (!empty($handler_settings['target_bundles'])) {
      foreach ($handler_settings['target_bundles'] as $key => $entity_bundle) {
        $entity_type = $field_config->getFieldStorageDefinition()->getSetting('target_type');
        if (empty($bundles[$entity_type][$entity_bundle])) {
          unset($handler_settings['target_bundles'][$key]);
        }
      }
      if ($handler_settings['target_bundles'] === []) {
        unset($handler_settings['target_bundles']);
      }
      $handler_settings['auto_create_bundle'] = '';
      $field_config->setSetting('handler_settings', $handler_settings);
      $field_config->save();
    }
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc