You are here

function gutenberg_update_8201 in Gutenberg 8.2

Enable the new Gutenberg filter, uninstalling the old ones.

File

./gutenberg.install, line 51
Install, update and uninstall functions for the gutenberg module.

Code

function gutenberg_update_8201(&$sandbox) {
  $config_factory = \Drupal::configFactory();

  // Iterate on all text formats config entities.
  foreach ($config_factory
    ->listAll('filter.format.') as $name) {
    $filter = $config_factory
      ->getEditable($name);
    $deprecated_filters = [
      'filter_block',
      'filter_comment_delimiter',
      'filter_field_mapping',
      'filter_mapping_fields',
      'filter_media_entity_block',
      'filter_oembed',
      'filter_reusable_block',
    ];
    $changed = FALSE;
    $filters = $filter
      ->get('filters');
    $processor_settings = [];

    // Disable deprecated filters in favour of the processor services.
    foreach ($deprecated_filters as $deprecated_filter) {
      if (isset($filters[$deprecated_filter])) {
        if ($deprecated_filter === 'filter_oembed') {
          $processor_settings['oembed'] = [
            'providers' => $filters[$deprecated_filter]['settings']['oembed_providers'],
            'maxwidth' => (int) $filters[$deprecated_filter]['settings']['oembed_maxwidth'],
          ];
        }
        unset($filters[$deprecated_filter]);
        $changed = TRUE;
      }
    }
    if ($changed) {

      // Add the gutenberg filter.
      $filters['gutenberg'] = [
        'id' => 'gutenberg',
        'provider' => 'gutenberg',
        'status' => TRUE,
        'weight' => 1,
        'settings' => [
          'processor_settings' => $processor_settings,
        ],
      ];
      $filter
        ->set('filters', $filters);
      $filter
        ->save(TRUE);
    }
  }
  return t('Migrated existing Gutenberg text filter settings.');
}