You are here

class EntityRevision in Workbench Moderation to Content Moderation 8.2

Fixes bugs in the core EntityRevision destination plugin:

1) getEntity() drops the return value of updateEntity(). 2) save() and getIds() do not respect translations. 3) getEntity() decides whether the entity is the default revision.

This plugin can be iced once these issues are fixed in core.

Hierarchy

Expanded class hierarchy of EntityRevision

1 file declares its use of EntityRevision
wbm2cm.module in ./wbm2cm.module

File

src/Plugin/migrate/destination/EntityRevision.php, line 18

Namespace

Drupal\wbm2cm\Plugin\migrate\destination
View source
class EntityRevision extends BaseEntityRevision {

  /**
   * {@inheritdoc}
   */
  protected function getEntity(Row $row, array $old_destination_id_values) {
    $revision_id = $old_destination_id_values ? reset($old_destination_id_values) : $row
      ->getDestinationProperty($this
      ->getKey('revision'));
    if (!empty($revision_id) && ($entity = $this->storage
      ->loadRevision($revision_id))) {
      $entity
        ->setNewRevision(FALSE);
    }
    else {
      $entity_id = $row
        ->getDestinationProperty($this
        ->getKey('id'));
      $entity = $this->storage
        ->load($entity_id);

      // If we fail to load the original entity something is wrong and we need
      // to return immediately.
      if (!$entity) {
        return FALSE;
      }
      $entity
        ->enforceIsNew(FALSE);
      $entity
        ->setNewRevision(TRUE);
    }
    return $this
      ->updateEntity($entity, $row) ?: $entity;
  }

  /**
   * {@inheritdoc}
   */
  public function getIds() {
    $ids = parent::getIds();

    // A revision could contain multiple translations, so this allows revisions
    // to be identified by language, not just by revision ID.
    if ($this
      ->isTranslationDestination()) {
      if ($key = $this
        ->getKey('langcode')) {
        $ids[$key] = $this
          ->getDefinitionFromEntity($key);
      }
      else {
        throw new MigrateException('This entity type does not support translation.');
      }
    }
    return $ids;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
DependencyTrait::$dependencies protected property The object's dependencies.
DependencyTrait::addDependencies protected function Adds multiple dependencies.
DependencyTrait::addDependency protected function Adds a dependency.
DeprecatedServicePropertyTrait::__get public function Allows to access deprecated/removed properties.
DestinationBase::$migration protected property The migration.
DestinationBase::$rollbackAction protected property The rollback action to be saved for the last imported item.
DestinationBase::$supportsRollback protected property Indicates whether the destination can be rolled back.
DestinationBase::checkRequirements public function Checks if requirements for this plugin are OK. Overrides RequirementsInterface::checkRequirements
DestinationBase::getDestinationModule public function Gets the destination module handling the destination data. Overrides MigrateDestinationInterface::getDestinationModule 1
DestinationBase::rollbackAction public function The rollback action for the last imported item. Overrides MigrateDestinationInterface::rollbackAction
DestinationBase::setRollbackAction protected function For a destination item being updated, set the appropriate rollback action.
DestinationBase::supportsRollback public function Whether the destination can be rolled back or not. Overrides MigrateDestinationInterface::supportsRollback
Entity::$bundles protected property The list of the bundles of this entity type.
Entity::$storage protected property The entity storage.
Entity::calculateDependencies public function Calculates dependencies for the configured plugin. Overrides DependentPluginInterface::calculateDependencies
Entity::fields public function Returns an array of destination fields. Overrides MigrateDestinationInterface::fields
Entity::getBundle public function Gets the bundle for the row taking into account the default.
Entity::getEntityId protected function Gets the entity ID of the row. 2
Entity::getKey protected function Returns a specific entity key.
EntityContentBase::$deprecatedProperties protected property
EntityContentBase::$entityFieldManager protected property Entity field manager.
EntityContentBase::$fieldTypeManager protected property Field type plugin manager.
EntityContentBase::create public static function Creates an instance of the plugin. Overrides Entity::create 2
EntityContentBase::import public function Overrides MigrateDestinationInterface::import 3
EntityContentBase::isEntityValidationRequired public function Returns a state of whether an entity needs to be validated before saving. Overrides MigrateValidatableEntityInterface::isEntityValidationRequired
EntityContentBase::isTranslationDestination public function
EntityContentBase::processStubRow protected function Populates as much of the stub row as possible. 3
EntityContentBase::rollback public function Delete the specified destination object from the target Drupal. Overrides Entity::rollback 1
EntityContentBase::updateEntity protected function Updates an entity with the new values from row. 3
EntityContentBase::validateEntity public function Validates the entity. Overrides MigrateValidatableEntityInterface::validateEntity
EntityFieldDefinitionTrait::getDefinitionFromEntity protected function Gets the field definition from a specific entity base field.
EntityFieldDefinitionTrait::getEntityTypeId protected static function Finds the entity type from configuration or plugin ID. 5
EntityRevision::getEntity protected function Gets the entity. Overrides EntityRevision::getEntity
EntityRevision::getHighestId public function Returns the highest ID tracked by the implementing plugin. Overrides EntityContentBase::getHighestId
EntityRevision::getIds public function Gets the destination IDs. Overrides EntityRevision::getIds
EntityRevision::save protected function Saves the entity. Overrides EntityContentBase::save 1
EntityRevision::__construct public function Constructs a content entity. Overrides EntityContentBase::__construct
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.