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 / FieldOptionTranslation.php
diff --git a/web/core/modules/field/src/Plugin/migrate/process/d6/FieldOptionTranslation.php b/web/core/modules/field/src/Plugin/migrate/process/d6/FieldOptionTranslation.php
new file mode 100644 (file)
index 0000000..05bb2ad
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+
+namespace Drupal\field\Plugin\migrate\process\d6;
+
+use Drupal\migrate\MigrateExecutableInterface;
+use Drupal\migrate\ProcessPluginBase;
+use Drupal\migrate\Row;
+
+/**
+ * Determines the allowed values translation for select lists.
+ *
+ * @MigrateProcessPlugin(
+ *   id = "d6_field_option_translation",
+ *   handle_multiples = TRUE
+ * )
+ */
+class FieldOptionTranslation extends ProcessPluginBase {
+
+  /**
+   * {@inheritdoc}
+   *
+   * Get the field default/mapped settings.
+   */
+  public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
+    list($field_type, $global_settings) = $value;
+
+    $allowed_values = '';
+    $i = 0;
+    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 'list_string':
+        case 'list_integer':
+        case 'list_float':
+          // Remove the prefix used in the i18n_strings table for field options
+          // to get the option value.
+          $option = preg_replace('/^option_/', '', $row->getSourceProperty('property'));
+          $i = 0;
+          foreach ($list as $allowed_value) {
+            // Get the key for this allowed value which may be a key|label pair
+            // or or just key.
+            $value = explode("|", $allowed_value);
+            if (isset($value[0]) && ($value[0] == $option)) {
+              $allowed_values = ['label' => $row->getSourceProperty('translation')];
+              break;
+            }
+            $i++;
+          }
+          break;
+
+        default:
+      }
+    }
+    return ["settings.allowed_values.$i", $allowed_values];
+  }
+
+}