Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / modules / field / src / Plugin / migrate / process / d6 / FieldInstanceOptionTranslation.php
diff --git a/web/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceOptionTranslation.php b/web/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceOptionTranslation.php
new file mode 100644 (file)
index 0000000..72e954b
--- /dev/null
@@ -0,0 +1,53 @@
+<?php
+
+namespace Drupal\field\Plugin\migrate\process\d6;
+
+use Drupal\migrate\MigrateExecutableInterface;
+use Drupal\migrate\ProcessPluginBase;
+use Drupal\migrate\Row;
+
+/**
+ * Determines the settings property and translation for boolean fields.
+ *
+ * @MigrateProcessPlugin(
+ *   id = "d6_field_instance_option_translation",
+ *   handle_multiples = TRUE
+ * )
+ */
+class FieldInstanceOptionTranslation extends ProcessPluginBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
+    list($field_type, $global_settings) = $value;
+
+    $option_key = 0;
+    $translation = '';
+    if (isset($global_settings['allowed_values'])) {
+      $list = explode("\n", $global_settings['allowed_values']);
+      $list = array_map('trim', $list);
+      $list = array_filter($list, 'strlen');
+      switch ($field_type) {
+        case 'boolean';
+          $option = preg_replace('/^option_/', '', $row->getSourceProperty('property'));
+          for ($i = 0; $i < 2; $i++) {
+            $value = $list[$i];
+            $tmp = explode("|", $value);
+            $original_option_key = isset($tmp[0]) ? $tmp[0] : NULL;
+            $option_key = ($i === 0) ? 'off_label' : 'on_label';
+            // Find property with name matching the original option.
+            if ($option == $original_option_key) {
+              $translation = $row->getSourceProperty('translation');
+              break;
+            }
+          }
+          break;
+
+        default:
+      }
+    }
+    return ['settings.' . $option_key, $translation];
+  }
+
+}