function system_update_8009 in Drupal 8
Add allowed attributes to existing html filters.
File
- core/
modules/ system/ system.install, line 2005 - Install, update and uninstall functions for the system module.
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();
}
}
}