Version 1
[yaffs-website] / web / core / modules / migrate / src / Plugin / migrate / process / DefaultValue.php
diff --git a/web/core/modules/migrate/src/Plugin/migrate/process/DefaultValue.php b/web/core/modules/migrate/src/Plugin/migrate/process/DefaultValue.php
new file mode 100644 (file)
index 0000000..a5e6388
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+
+namespace Drupal\migrate\Plugin\migrate\process;
+
+use Drupal\migrate\ProcessPluginBase;
+use Drupal\migrate\MigrateExecutableInterface;
+use Drupal\migrate\Row;
+
+/**
+ * Returns a given default value if the input is empty.
+ *
+ * The default_value process plugin provides the ability to set a fixed default
+ * value. The plugin returns a default value if the input value is considered
+ * empty (NULL, FALSE, 0, '0', an empty string, or an empty array). The strict
+ * configuration key can be used to set the default only when the incoming
+ * value is NULL.
+ *
+ * Available configuration keys:
+ * - default_value: The fixed default value to apply.
+ * - strict: (optional) Use strict value checking. Defaults to false.
+ *   - FALSE: Apply default when input value is empty().
+ *   - TRUE: Apply default when input value is NULL.
+ *
+ * Example:
+ *
+ * @code
+ * process:
+ *   uid:
+ *     -
+ *       plugin: migration_lookup
+ *       migration: users
+ *       source: author
+ *     -
+ *       plugin: default_value
+ *       default_value: 44
+ * @endcode
+ *
+ * This will look up the source value of author in the users migration and if
+ * not found, set the destination property uid to 44.
+ *
+ * @see \Drupal\migrate\Plugin\MigrateProcessInterface
+ *
+ * @MigrateProcessPlugin(
+ *   id = "default_value"
+ * )
+ */
+class DefaultValue extends ProcessPluginBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
+    if (!empty($this->configuration['strict'])) {
+      return isset($value) ? $value : $this->configuration['default_value'];
+    }
+    return $value ?: $this->configuration['default_value'];
+  }
+
+}