Contribution Date
Technology
Contribution Project
Contribution Details
<?php
namespace Drupal\migrate_plus\Plugin\migrate\process;
use Drupal\migrate\MigrateExecutableInterface;
use Drupal\migrate\ProcessPluginBase;
use Drupal\migrate\Row;
/**
* This plugin checks if a value is empty and conditionally run a pipeline.
*
* @MigrateProcessPlugin(
* id = "if_empty",
* handle_multiples = TRUE
* )
*
* Required configuration keys:
* - source: the value to evaluate.
* - on_true: the plugin(s) that will process when the source is empty.
* - on_false: the plugin(s) that will process when the source is not empty.
*
* Example usage:
* @code
* process:
* field_price:
* plugin: if_empty
* source: source_price
* on_true:
* plugin: default_value
* default_value: 'Free entry'
* on_false:
* -
* plugin: default_value
* default_value: '$'
* -
* plugin: concat
* source:
* -
* - source_price
* @endcode
*/
class IfEmpty extends ProcessPluginBase {
/**
* {@inheritdoc}
*/
public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
$new_row = clone $row;
if (empty($value)) {
$migrate_executable->processRow($new_row, [$destination_property => $this->configuration['on_true']]);
}
else {
$migrate_executable->processRow($new_row, [$destination_property => $this->configuration['on_false']]);
}
$new_value = $new_row->getDestinationProperty($destination_property);
return $new_value;
}
}
Contribution Issue Link
Files count
0
Patches count
0