Entity.php in Zircon Profile 8
File
core/modules/migrate/src/Plugin/migrate/destination/Entity.php
View source
<?php
namespace Drupal\migrate\Plugin\migrate\destination;
use Drupal\Component\Plugin\DependentPluginInterface;
use Drupal\Core\Entity\DependencyTrait;
use Drupal\Core\Entity\EntityStorageInterface;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\migrate\Entity\MigrationInterface;
use Drupal\migrate\Row;
use Symfony\Component\DependencyInjection\ContainerInterface;
abstract class Entity extends DestinationBase implements ContainerFactoryPluginInterface, DependentPluginInterface {
use DependencyTrait;
protected $storage;
protected $bundles;
public function __construct(array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration, EntityStorageInterface $storage, array $bundles) {
parent::__construct($configuration, $plugin_id, $plugin_definition, $migration);
$this->storage = $storage;
$this->bundles = $bundles;
$this->supportsRollback = TRUE;
}
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration = NULL) {
$entity_type_id = static::getEntityTypeId($plugin_id);
return new static($configuration, $plugin_id, $plugin_definition, $migration, $container
->get('entity.manager')
->getStorage($entity_type_id), array_keys($container
->get('entity.manager')
->getBundleInfo($entity_type_id)));
}
protected static function getEntityTypeId($plugin_id) {
return substr($plugin_id, 7);
}
public function fields(MigrationInterface $migration = NULL) {
}
protected function getEntity(Row $row, array $old_destination_id_values) {
$entity_id = $old_destination_id_values ? reset($old_destination_id_values) : $this
->getEntityId($row);
if (!empty($entity_id) && ($entity = $this->storage
->load($entity_id))) {
$this
->updateEntity($entity, $row);
}
else {
if ($row
->isStub()) {
$this
->processStubRow($row);
}
$entity = $this->storage
->create($row
->getDestination());
$entity
->enforceIsNew();
}
return $entity;
}
protected function getEntityId(Row $row) {
return $row
->getDestinationProperty($this
->getKey('id'));
}
protected function getKey($key) {
return $this->storage
->getEntityType()
->getKey($key);
}
public function rollback(array $destination_identifier) {
$entity = $this->storage
->load(reset($destination_identifier));
if ($entity) {
$entity
->delete();
}
}
public function calculateDependencies() {
$this
->addDependency('module', $this->storage
->getEntityType()
->getProvider());
return $this->dependencies;
}
}
Classes
Name |
Description |
Entity |
Plugin annotation
@MigrateDestination(
id = "entity",
deriver = "Drupal\migrate\Plugin\Derivative\MigrateEntity"
) |