Version 1
[yaffs-website] / web / core / modules / filter / src / Plugin / migrate / process / FilterSettings.php
diff --git a/web/core/modules/filter/src/Plugin/migrate/process/FilterSettings.php b/web/core/modules/filter/src/Plugin/migrate/process/FilterSettings.php
new file mode 100644 (file)
index 0000000..eb0da32
--- /dev/null
@@ -0,0 +1,52 @@
+<?php
+
+namespace Drupal\filter\Plugin\migrate\process;
+
+use Drupal\migrate\ProcessPluginBase;
+use Drupal\migrate\MigrateExecutableInterface;
+use Drupal\migrate\Row;
+
+/**
+ * Adds the default allowed attributes to filter_html's allowed_html setting.
+ *
+ * E.g. map '<a>' to '<a href hreflang dir>'.
+ *
+ * @MigrateProcessPlugin(
+ *   id = "filter_settings",
+ *   handle_multiples = TRUE
+ * )
+ */
+class FilterSettings extends ProcessPluginBase {
+
+  /**
+   * Default attributes for migrating filter_html's 'allowed_html' setting.
+   *
+   * @var string[]
+   */
+  protected $allowedHtmlDefaultAttributes = [
+    '<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>',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
+    // Only the filter_html filter's settings have a changed format.
+    if ($row->getDestinationProperty('id') === 'filter_html') {
+      if (!empty($value['allowed_html'])) {
+        $value['allowed_html'] = str_replace(array_keys($this->allowedHtmlDefaultAttributes), array_values($this->allowedHtmlDefaultAttributes), $value['allowed_html']);
+      }
+    }
+    return $value;
+  }
+
+}