src/Plugin/migrate/process/EntityGenerateNoLookup.php
<?php
namespace Drupal\stanford_migrate\Plugin\migrate\process;
use Drupal\migrate\MigrateExecutableInterface;
use Drupal\migrate\Row;
use Drupal\migrate_plus\Plugin\migrate\process\EntityGenerate;
/**
* This plugin generates entities within the process plugin.
*
* @MigrateProcessPlugin(
* id = "entity_generate_no_lookup"
* )
*
* @see EntityLookup
*
* All the configuration from the lookup plugin applies here. In its most
* simple form, this plugin needs no configuration. If there are fields on the
* generated entity that are required or need some default value, that can be
* provided via a default_values configuration option.
*
* Example usage with default_values configuration:
* @code
* destination:
* plugin: 'entity:node'
* process:
* type:
* plugin: default_value
* default_value: page
* field_tags:
* plugin: entity_generate_no_lookup
* source: tags
* default_values:
* description: Default description
* field_long_description: Default long description
* @endcode
*/
class EntityGenerateNoLookup extends EntityGenerate {
/**
* {@inheritdoc}
*/
public function transform($value, MigrateExecutableInterface $migrateExecutable, Row $row, $destinationProperty) {
$this->row = $row;
$this->migrateExecutable = $migrateExecutable;
// If the source data is an empty array, return the same.
if (gettype($value) === 'array' && count($value) === 0) {
return [];
}
// In case of subfields ('field_reference/target_id'), extract the field
// name only.
$parts = explode('/', $destinationProperty);
$destinationProperty = reset($parts);
$this->determineLookupProperties($destinationProperty);
$this->destinationProperty = isset($this->configuration['destination_field']) ? $this->configuration['destination_field'] : NULL;
return $this->generateEntity($value);
}
}