You are here

function ui_patterns_settings_entity_field_storage_info_alter in UI Patterns Settings 8.2

Implements hook_entity_field_storage_info_alter().

File

./ui_patterns_settings.module, line 84
Contains ui_patterns_settings.module.

Code

function ui_patterns_settings_entity_field_storage_info_alter(&$fields, EntityTypeInterface $entity_type) {

  /** @var \Drupal\field\Entity\FieldStorageConfig $field */
  foreach ($fields as $field) {
    if ($field instanceof FieldStorageConfig) {
      if (($mapping = UiPatternsSettings::getConfigManager()
        ->getMapping($field
        ->id())) !== NULL) {
        [
          $pattern_id,
          $setting_id,
        ] = explode('::', $mapping);
        try {
          $pattern_definition = UiPatterns::getPatternDefinition($pattern_id);
          $settings_definition = UiPatternsSettings::getPatternDefinitionSetting($pattern_definition, $setting_id);
          if ($pattern_definition !== NULL && $settings_definition !== NULL) {
            $type = UiPatternsSettings::createSettingType($pattern_definition, $settings_definition);
            $type
              ->alterFieldStorage($field);
          }
          elseif ($pattern_definition !== NULL && $setting_id === 'variant') {
            $field
              ->setSetting('allowed_values_function', 'ui_patterns_settings_allowed_values_function');
          }
          else {
            \Drupal::messenger()
              ->addError('No pattern setting %setting found');
          }
        } catch (\Exception $e) {
          \Drupal::messenger()
            ->addError($e
            ->getMessage());
        }
      }
      else {
        $field
          ->setSetting('allowed_values_function', NULL);
      }
    }
  }
}