class EntityContentBase in Zircon Profile 8.0
Same name and namespace in other branches
- 8 core/modules/migrate/src/Plugin/migrate/destination/EntityContentBase.php \Drupal\migrate\Plugin\migrate\destination\EntityContentBase
The destination class for all content entities lacking a specific class.
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, StringTranslationTrait
- class \Drupal\migrate\Plugin\migrate\destination\DestinationBase implements MigrateDestinationInterface, RequirementsInterface
- class \Drupal\migrate\Plugin\migrate\destination\Entity implements DependentPluginInterface, ContainerFactoryPluginInterface uses DependencyTrait
- class \Drupal\migrate\Plugin\migrate\destination\EntityContentBase
- class \Drupal\migrate\Plugin\migrate\destination\Entity implements DependentPluginInterface, ContainerFactoryPluginInterface uses DependencyTrait
- class \Drupal\migrate\Plugin\migrate\destination\DestinationBase implements MigrateDestinationInterface, RequirementsInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, StringTranslationTrait
Expanded class hierarchy of EntityContentBase
6 files declare their use of EntityContentBase
- Book.php in core/
modules/ book/ src/ Plugin/ migrate/ destination/ Book.php - Contains \Drupal\book\Plugin\migrate\destination\Book.
- EntityComment.php in core/
modules/ comment/ src/ Plugin/ migrate/ destination/ EntityComment.php - Contains \Drupal\comment\Plugin\migrate\destination\EntityComment.
- EntityContentBaseTest.php in core/
modules/ migrate/ tests/ src/ Unit/ Plugin/ migrate/ destination/ EntityContentBaseTest.php - Contains \Drupal\Tests\migrate\Unit\Plugin\migrate\destination\EntityContentBaseTest
- EntityFile.php in core/
modules/ file/ src/ Plugin/ migrate/ destination/ EntityFile.php - Contains \Drupal\file\Plugin\migrate\destination\EntityFile.
- EntityTaxonomyTerm.php in core/
modules/ taxonomy/ src/ Plugin/ migrate/ destination/ EntityTaxonomyTerm.php - Contains \Drupal\taxonomy\Plugin\migrate\destination\EntityTaxonomyTerm.
File
- core/
modules/ migrate/ src/ Plugin/ migrate/ destination/ EntityContentBase.php, line 28 - Contains \Drupal\migrate\Plugin\migrate\destination\EntityContentBase.
Namespace
Drupal\migrate\Plugin\migrate\destinationView source
class EntityContentBase extends Entity {
/**
* Entity manager.
*
* @var \Drupal\Core\Entity\EntityManagerInterface
*/
protected $entityManager;
/**
* Field type plugin manager.
*
* @var \Drupal\Core\Field\FieldTypePluginManagerInterface
*/
protected $fieldTypeManager;
/**
* Constructs a content entity.
*
* @param array $configuration
* A configuration array containing information about the plugin instance.
* @param string $plugin_id
* The plugin ID for the plugin instance.
* @param mixed $plugin_definition
* The plugin implementation definition.
* @param \Drupal\migrate\Entity\MigrationInterface $migration
* The migration entity.
* @param \Drupal\Core\Entity\EntityStorageInterface $storage
* The storage for this entity type.
* @param array $bundles
* The list of bundles this entity type has.
* @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
* The entity manager service.
* @param \Drupal\Core\Field\FieldTypePluginManagerInterface $field_type_manager
* The field type plugin manager service.
*/
public function __construct(array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration, EntityStorageInterface $storage, array $bundles, EntityManagerInterface $entity_manager, FieldTypePluginManagerInterface $field_type_manager) {
parent::__construct($configuration, $plugin_id, $plugin_definition, $migration, $storage, $bundles);
$this->entityManager = $entity_manager;
$this->fieldTypeManager = $field_type_manager;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration = NULL) {
$entity_type = static::getEntityTypeId($plugin_id);
return new static($configuration, $plugin_id, $plugin_definition, $migration, $container
->get('entity.manager')
->getStorage($entity_type), array_keys($container
->get('entity.manager')
->getBundleInfo($entity_type)), $container
->get('entity.manager'), $container
->get('plugin.manager.field.field_type'));
}
/**
* {@inheritdoc}
*/
public function import(Row $row, array $old_destination_id_values = array()) {
$this->rollbackAction = MigrateIdMapInterface::ROLLBACK_DELETE;
$entity = $this
->getEntity($row, $old_destination_id_values);
if (!$entity) {
throw new MigrateException('Unable to get entity');
}
return $this
->save($entity, $old_destination_id_values);
}
/**
* Save the entity.
*
* @param \Drupal\Core\Entity\ContentEntityInterface $entity
* The content entity.
* @param array $old_destination_id_values
* An array of destination id values.
*
* @return array
* An array containing the entity id.
*/
protected function save(ContentEntityInterface $entity, array $old_destination_id_values = array()) {
$entity
->save();
return array(
$entity
->id(),
);
}
/**
* {@inheritdoc}
*/
public function getIds() {
$id_key = $this
->getKey('id');
$ids[$id_key]['type'] = 'integer';
return $ids;
}
/**
* Update an entity with the new values from row.
*
* @param \Drupal\Core\Entity\EntityInterface $entity
* The entity to update.
* @param \Drupal\migrate\Row $row
* The row object to update from.
*/
protected function updateEntity(EntityInterface $entity, Row $row) {
// If the migration has specified a list of properties to be overwritten,
// clone the row with an empty set of destination values, and re-add only
// the specified properties.
if (isset($this->configuration['overwrite_properties'])) {
$clone = $row
->cloneWithoutDestination();
foreach ($this->configuration['overwrite_properties'] as $property) {
$clone
->setDestinationProperty($property, $row
->getDestinationProperty($property));
}
$row = $clone;
}
foreach ($row
->getDestination() as $field_name => $values) {
$field = $entity->{$field_name};
if ($field instanceof TypedDataInterface) {
$field
->setValue($values);
}
}
$this
->setRollbackAction($row
->getIdMap());
}
/**
* Do as much population of the stub row as we can.
*
* @param \Drupal\migrate\Row $row
* The row of data.
*/
protected function processStubRow(Row $row) {
$bundle_key = $this
->getKey('bundle');
if ($bundle_key && empty($row
->getDestinationProperty($bundle_key))) {
if (empty($this->bundles)) {
throw new MigrateException('Stubbing failed, no bundles available for entity type: ' . $this->storage
->getEntityTypeId());
}
$row
->setDestinationProperty($bundle_key, reset($this->bundles));
}
// Populate any required fields not already populated.
$fields = $this->entityManager
->getFieldDefinitions($this->storage
->getEntityTypeId(), $bundle_key);
foreach ($fields as $field_name => $field_definition) {
if ($field_definition
->isRequired() && is_null($row
->getDestinationProperty($field_name))) {
// Use the configured default value for this specific field, if any.
if ($default_value = $field_definition
->getDefaultValueLiteral()) {
$values[] = $default_value;
}
else {
// Otherwise, ask the field type to generate a sample value.
$field_type = $field_definition
->getType();
/** @var \Drupal\Core\Field\FieldItemInterface $field_type_class */
$field_type_class = $this->fieldTypeManager
->getPluginClass($field_definition
->getType());
$values = $field_type_class::generateSampleValue($field_definition);
if (is_null($values)) {
// Handle failure to generate a sample value.
throw new MigrateException('Stubbing failed, unable to generate value for field ' . $field_name);
break;
}
}
$row
->setDestinationProperty($field_name, $values);
}
}
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
DependencyTrait:: |
protected | property | The object's dependencies. | 1 |
DependencyTrait:: |
protected | function | Adds multiple dependencies. | |
DependencyTrait:: |
protected | function | Adds a dependency. | |
DestinationBase:: |
protected | property | The migration. | |
DestinationBase:: |
protected | property | The rollback action to be saved for the last imported item. | |
DestinationBase:: |
protected | property | Indicates whether the destination can be rolled back. | |
DestinationBase:: |
public | function |
Checks if requirements for this plugin are OK. Overrides RequirementsInterface:: |
|
DestinationBase:: |
public | function |
The rollback action for the last imported item. Overrides MigrateDestinationInterface:: |
|
DestinationBase:: |
protected | function | For a destination item being updated, set the appropriate rollback action. | |
DestinationBase:: |
public | function |
Whether the destination can be rolled back or not. Overrides MigrateDestinationInterface:: |
|
Entity:: |
protected | property | The list of the bundles of this entity type. | |
Entity:: |
protected | property | The entity storage. | 1 |
Entity:: |
public | function |
Calculates dependencies for the configured plugin. Overrides DependentPluginInterface:: |
|
Entity:: |
public | function |
Returns an array of destination fields. Overrides MigrateDestinationInterface:: |
|
Entity:: |
protected | function | Creates or loads an entity. | 5 |
Entity:: |
protected | function | Get the entity id of the row. | 2 |
Entity:: |
protected static | function | Finds the entity type from configuration or plugin id. | 3 |
Entity:: |
protected | function | Returns a specific entity key. | |
Entity:: |
public | function |
Delete the specified destination object from the target Drupal. Overrides DestinationBase:: |
|
EntityContentBase:: |
protected | property | Entity manager. | |
EntityContentBase:: |
protected | property | Field type plugin manager. | |
EntityContentBase:: |
public static | function |
Creates an instance of the plugin. Overrides Entity:: |
3 |
EntityContentBase:: |
public | function |
Get the destination ids. Overrides MigrateDestinationInterface:: |
1 |
EntityContentBase:: |
public | function |
Import the row. Overrides MigrateDestinationInterface:: |
3 |
EntityContentBase:: |
protected | function | Do as much population of the stub row as we can. | 3 |
EntityContentBase:: |
protected | function | Save the entity. | 2 |
EntityContentBase:: |
protected | function | Update an entity with the new values from row. | 2 |
EntityContentBase:: |
public | function |
Constructs a content entity. Overrides Entity:: |
3 |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 2 |
PluginBase:: |
protected | property | The plugin implementation definition. | |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
StringTranslationTrait:: |
protected | property | The string translation service. | |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |