function system_update_8009

Add allowed attributes to existing html filters.

File

core/modules/system/system.install, line 2005

Code

function system_update_8009() {
  $default_mapping = [
    '<a>' => '<a href hreflang>',
    '<blockquote>' => '<blockquote cite>',
    '<ol>' => '<ol start type>',
    '<ul>' => '<ul type>',
    '<img>' => '<img src alt height width>',
    '<h2>' => '<h2 id>',
    '<h3>' => '<h3 id>',
    '<h4>' => '<h4 id>',
    '<h5>' => '<h5 id>',
    '<h6>' => '<h6 id>',
  ];
  $config_factory = \Drupal::configFactory();
  foreach ($config_factory->listAll('filter.format') as $name) {
    $allowed_html_mapping = $default_mapping;
    $config = $config_factory->getEditable($name);
    // The image alignment filter needs the data-align attribute.
    $align_enabled = $config->get('filters.filter_align.status');
    if ($align_enabled) {
      $allowed_html_mapping['<img>'] = str_replace('>', ' data-align>', $allowed_html_mapping['<img>']);
    }
    // The image caption filter needs the data-caption attribute.
    $caption_enabled = $config->get('filters.filter_caption.status');
    if ($caption_enabled) {
      $allowed_html_mapping['<img>'] = str_replace('>', ' data-caption>', $allowed_html_mapping['<img>']);
    }
    $allowed_html = $config->get('filters.filter_html.settings.allowed_html');
    if (!empty($allowed_html)) {
      $allowed_html = strtr($allowed_html, $allowed_html_mapping);
      $config->set('filters.filter_html.settings.allowed_html', $allowed_html);
      $config->save();
    }
  }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.