Security update for Core, with self-updated composer
[yaffs-website] / web / core / modules / text / src / Plugin / migrate / field / d6 / TextField.php
diff --git a/web/core/modules/text/src/Plugin/migrate/field/d6/TextField.php b/web/core/modules/text/src/Plugin/migrate/field/d6/TextField.php
new file mode 100644 (file)
index 0000000..d1da3f4
--- /dev/null
@@ -0,0 +1,131 @@
+<?php
+
+namespace Drupal\text\Plugin\migrate\field\d6;
+
+use Drupal\migrate\Plugin\MigrationInterface;
+use Drupal\migrate\Row;
+use Drupal\migrate_drupal\Plugin\migrate\field\FieldPluginBase;
+
+/**
+ * @MigrateField(
+ *   id = "d6_text",
+ *   type_map = {
+ *     "text" = "text",
+ *     "text_long" = "text_long",
+ *     "text_with_summary" = "text_with_summary"
+ *   },
+ *   core = {6}
+ * )
+ */
+class TextField extends FieldPluginBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFieldWidgetMap() {
+    return [
+      'text_textfield' => 'text_textfield',
+    ];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFieldFormatterMap() {
+    return [
+      'default' => 'text_default',
+      'trimmed' => 'text_trimmed',
+      'plain' => 'basic_string',
+    ];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function processFieldValues(MigrationInterface $migration, $field_name, $field_info) {
+    $widget_type = isset($field_info['widget_type']) ? $field_info['widget_type'] : $field_info['widget']['type'];
+
+    if ($widget_type == 'optionwidgets_onoff') {
+      $process = [
+        'value' => [
+          'plugin' => 'static_map',
+          'source' => 'value',
+          'default_value' => 0,
+        ],
+      ];
+
+      $checked_value = explode("\n", $field_info['global_settings']['allowed_values'])[1];
+      if (strpos($checked_value, '|') !== FALSE) {
+        $checked_value = substr($checked_value, 0, strpos($checked_value, '|'));
+      }
+      $process['value']['map'][$checked_value] = 1;
+    }
+    else {
+      // See \Drupal\migrate_drupal\Plugin\migrate\source\d6\User::baseFields(),
+      // signature_format for an example of the YAML that represents this
+      // process array.
+      $process = [
+        'value' => 'value',
+        'format' => [
+          [
+            'plugin' => 'static_map',
+            'bypass' => TRUE,
+            'source' => 'format',
+            'map' => [0 => NULL],
+          ],
+          [
+            'plugin' => 'skip_on_empty',
+            'method' => 'process',
+          ],
+          [
+            'plugin' => 'migration',
+            'migration' => [
+              'd6_filter_format',
+              'd7_filter_format',
+            ],
+            'source' => 'format',
+          ],
+        ],
+      ];
+    }
+
+    $process = [
+      'plugin' => 'sub_process',
+      'source' => $field_name,
+      'process' => $process,
+    ];
+    $migration->setProcessOfProperty($field_name, $process);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFieldType(Row $row) {
+    $widget_type = $row->getSourceProperty('widget_type');
+    $settings = $row->getSourceProperty('global_settings');
+
+    if ($widget_type == 'text_textfield') {
+      $field_type = $settings['text_processing'] ? 'text' : 'string';
+      if (empty($settings['max_length']) || $settings['max_length'] > 255) {
+        $field_type .= '_long';
+      }
+      return $field_type;
+    }
+
+    if ($widget_type == 'text_textarea') {
+      $field_type = $settings['text_processing'] ? 'text_long' : 'string_long';
+      return $field_type;
+    }
+
+    switch ($widget_type) {
+      case 'optionwidgets_buttons':
+      case 'optionwidgets_select':
+        return 'list_string';
+      case 'optionwidgets_onoff':
+        return 'boolean';
+      default:
+        return parent::getFieldType($row);
+    }
+  }
+
+}