You are here

class State in Acquia Connector 3.x

The destination plugin for importing data into the state.

See https://www.drupal.org/project/migrate_plus/issues/3060556 Patch copied into the connector to allow for 'core only' migration to work.

Available configuration keys:

  • (string) state_prefix: an optional prefix for the keys in a state.

@example


id: custom_state_migration
label: 'State import'
source:
  plugin: embedded_data
  data_rows:
    -
      a: 1
      b: [1, 2]
      c:
        - d: 3
  ids:
    a:
      type: integer
process:
  my_state1: a
  my_state2: b
  my_state3: c/d
destination:
  plugin: state
  state_prefix: my_key
assert(\Drupal::state()
  ->get('my_key.my_state1') === 1);
assert(\Drupal::state()
  ->get('my_key.my_state2') === [
  1,
  2,
]);

Without setting "state_prefix" to "my_key" or simply omitting this option, keys in the state will not have the "my_key." prefix.

Plugin annotation


@MigrateDestination(
  id = "state",
)

Hierarchy

Expanded class hierarchy of State

File

src/Plugin/migrate/destination/State.php, line 59

Namespace

Drupal\acquia_connector\Plugin\migrate\destination
View source
class State extends DestinationBase implements ContainerFactoryPluginInterface, ConfigurableInterface {

  /**
   * The state service.
   *
   * @var \Drupal\Core\State\StateInterface
   */
  protected $state;

  /**
   * {@inheritdoc}
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration, StateInterface $state) {
    parent::__construct($configuration, $plugin_id, $plugin_definition, $migration);
    $this
      ->setConfiguration($configuration);
    $this->state = $state;
    $this->supportsRollback = TRUE;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration = NULL) {
    return new static($configuration, $plugin_id, $plugin_definition, $migration, $container
      ->get('state'));
  }

  /**
   * {@inheritdoc}
   */
  public function getIds() {
    return [
      'state_names' => [
        'type' => 'string',
      ],
    ];
  }

  /**
   * {@inheritdoc}
   */
  public function fields(MigrationInterface $migration = NULL) {

    // State API doesn't use fields.
    return [];
  }

  /**
   * {@inheritdoc}
   */
  public function import(Row $row, array $old_destination_id_values = []) {
    $ids = [];
    foreach ($row
      ->getDestination() as $key => $value) {
      $key = $this->configuration['state_prefix'] . $key;
      $this->state
        ->set($key, $value);
      $ids[] = $key;
    }

    // Contrary to configuration entities, states can not be nested,
    // so every state must be stored separately from others.
    // To be able to migrate several states in one migrate source row,
    // combine their names and send as one ID.
    return [
      implode(',', $ids),
    ];
  }

  /**
   * {@inheritdoc}
   */
  public function rollback(array $destination_identifier) {

    // Destination identifier is a comma-concatenated string of state names.
    // This identifier is the comma separated return value from ::import().
    foreach (explode(',', $destination_identifier['state_names']) as $key) {
      $this->state
        ->delete($key);
    }
  }

  /**
   * {@inheritdoc}
   */
  public function defaultConfiguration() {
    return [
      'state_prefix' => '',
    ];
  }

  /**
   * {@inheritdoc}
   */
  public function getConfiguration() {
    return $this->configuration;
  }

  /**
   * {@inheritdoc}
   */
  public function setConfiguration(array $configuration) {
    $this->configuration = NestedArray::mergeDeepArray([
      $this
        ->defaultConfiguration(),
      $configuration,
    ], TRUE);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DependencySerializationTrait::$_entityStorages protected property
DependencySerializationTrait::$_serviceIds protected property
DependencySerializationTrait::__sleep public function 2
DependencySerializationTrait::__wakeup public function 2
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
MessengerTrait::$messenger protected property The messenger. 27
MessengerTrait::messenger public function Gets the messenger. 27
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 2
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.
State::$state protected property The state service.
State::create public static function Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface::create
State::defaultConfiguration public function Gets default configuration for this plugin. Overrides ConfigurableInterface::defaultConfiguration
State::fields public function Returns an array of destination fields. Overrides MigrateDestinationInterface::fields
State::getConfiguration public function Gets this plugin's configuration. Overrides ConfigurableInterface::getConfiguration
State::getIds public function Gets the destination IDs. Overrides MigrateDestinationInterface::getIds
State::import public function Import the row. Overrides MigrateDestinationInterface::import
State::rollback public function Delete the specified destination object from the target Drupal. Overrides DestinationBase::rollback
State::setConfiguration public function Sets the configuration for this plugin instance. Overrides ConfigurableInterface::setConfiguration
State::__construct public function Constructs an entity destination plugin. Overrides DestinationBase::__construct
StringTranslationTrait::$stringTranslation protected property The string translation service. 4
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.