You are here

class SmartSql in Smart SQL ID Map 1.1.x

Same name and namespace in other branches
  1. 1.0.x src/Plugin/migrate/id_map/SmartSql.php \Drupal\smart_sql_idmap\Plugin\migrate\id_map\SmartSql

A smart, sql based ID map.

@todo Provide an upgrade path when https://drupal.org/i/2845340 gets fixed.

Plugin annotation

@PluginID("smart_sql");

Hierarchy

Expanded class hierarchy of SmartSql

2 files declare their use of SmartSql
SmartSqlMigrateExecutableTest.php in tests/src/Kernel/SmartSqlMigrateExecutableTest.php
TestSmartSqlIdMap.php in tests/src/Unit/TestSmartSqlIdMap.php

File

src/Plugin/migrate/id_map/SmartSql.php, line 17

Namespace

Drupal\smart_sql_idmap\Plugin\migrate\id_map
View source
class SmartSql extends Sql {

  /**
   * {@inheritdoc}
   *
   * @see https://drupal.org/i/2845340
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration, EventDispatcherInterface $event_dispatcher) {
    parent::__construct($configuration, $plugin_id, $plugin_definition, $migration, $event_dispatcher);

    // Default generated table names, limited to 63 characters.
    $machine_name = str_replace(PluginBase::DERIVATIVE_SEPARATOR, '__', $this->migration
      ->id());
    $prefix_length = strlen($this->database
      ->tablePrefix());
    $map_table_name = 'm_map_' . mb_strtolower($machine_name);
    $this->mapTableName = mb_substr($map_table_name, 0, 63 - $prefix_length) === $map_table_name ? $map_table_name : mb_substr($map_table_name, 0, 45 - $prefix_length) . '_' . substr(md5($machine_name), 0, 17);
    $message_table_name = 'm_message_' . mb_strtolower($machine_name);
    $this->messageTableName = mb_substr($message_table_name, 0, 63 - $prefix_length) === $message_table_name ? $message_table_name : mb_substr($message_table_name, 0, 45 - $prefix_length) . '_' . substr(md5($machine_name), 0, 17);
  }

  /**
   * {@inheritdoc}
   *
   * @see https://drupal.org/i/3227549
   * @see https://drupal.org/i/3227660
   */
  public function getRowByDestination(array $destination_id_values) {
    $missing_destination_keys = array_diff(array_keys($this
      ->destinationIdFields()), array_keys($destination_id_values));

    // Fix for https://drupal.org/i/3227549.
    $result = $missing_destination_keys ? NULL : parent::getRowByDestination($destination_id_values);

    // Fix for https://drupal.org/i/3227549 and workaround for
    // https://drupal.org/i/3227660.
    return $result ? $result : [
      'rollback_action' => 99999,
    ];
  }

}

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
MessengerTrait::$messenger protected property The messenger. 27
MessengerTrait::messenger public function Gets the messenger. 27
MessengerTrait::setMessenger public function Sets the messenger.
MigrateIdMapInterface::ROLLBACK_DELETE constant Indicates that the data for the row is to be deleted.
MigrateIdMapInterface::ROLLBACK_PRESERVE constant Indicates that the data for the row is to be preserved.
MigrateIdMapInterface::STATUS_FAILED constant Indicates that the import of the row failed.
MigrateIdMapInterface::STATUS_IGNORED constant Indicates that the import of the row was ignored.
MigrateIdMapInterface::STATUS_IMPORTED constant Indicates that the import of the row was successful.
MigrateIdMapInterface::STATUS_NEEDS_UPDATE constant Indicates that the row needs to be updated.
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.
SmartSql::getRowByDestination public function Overrides Sql::getRowByDestination
SmartSql::__construct public function Overrides Sql::__construct 1
Sql::$currentKey protected property The current key.
Sql::$currentRow protected property The current row.
Sql::$database protected property The database connection for the map/message tables on the destination.
Sql::$destinationIdFields protected property The destination ID fields.
Sql::$destinationIds protected property The destination identifiers.
Sql::$eventDispatcher protected property An event dispatcher instance to use for map events.
Sql::$initialized protected property Whether the plugin is already initialized.
Sql::$mapTableName protected property The migration map table name.
Sql::$message protected property The migrate message service. 1
Sql::$messageTableName protected property The message table name.
Sql::$migration protected property The migration being done.
Sql::$query protected property The select query.
Sql::$result protected property The result.
Sql::$sourceIdFields protected property The source ID fields.
Sql::$sourceIds protected property The source identifiers.
Sql::clearMessages public function Clears all messages from the map. Overrides MigrateIdMapInterface::clearMessages
Sql::countHelper protected function Counts records in a table.
Sql::create public static function Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface::create
Sql::current public function Implementation of \Iterator::current().
Sql::currentDestination public function Looks up the destination identifier currently being iterated. Overrides MigrateIdMapInterface::currentDestination
Sql::currentSource public function Looks up the source identifier(s) currently being iterated. Overrides MigrateIdMapInterface::currentSource
Sql::delete public function Deletes the map and message entries for a given source record. Overrides MigrateIdMapInterface::delete
Sql::deleteDestination public function Deletes the map and message table entries for a given destination row. Overrides MigrateIdMapInterface::deleteDestination
Sql::destinationIdFields protected function The destination ID fields.
Sql::destroy public function Removes any persistent storage used by this map. Overrides MigrateIdMapInterface::destroy
Sql::ensureTables protected function Create the map and message tables if they don't already exist. 1
Sql::errorCount public function Returns the number of items that failed to import. Overrides MigrateIdMapInterface::errorCount
Sql::getDatabase public function Gets the database connection. 1
Sql::getFieldSchema protected function Creates schema from an ID definition. 1
Sql::getHighestId public function Returns the highest ID tracked by the implementing plugin. Overrides HighestIdInterface::getHighestId
Sql::getMessages public function Retrieves a traversable object of messages related to source records. Overrides MigrateIdMapInterface::getMessages
Sql::getMigrationPluginManager protected function Returns the migration plugin manager.
Sql::getQualifiedMapTableName public function Get the fully qualified map table name. Overrides MigrateIdMapInterface::getQualifiedMapTableName
Sql::getRowBySource public function Retrieves a row from the map table based on source identifier values. Overrides MigrateIdMapInterface::getRowBySource
Sql::getRowsNeedingUpdate public function Retrieves an array of map rows marked as needing update. Overrides MigrateIdMapInterface::getRowsNeedingUpdate
Sql::getSourceIdsHash public function Retrieves the hash of the source identifier values.
Sql::importedCount public function Returns the number of imported items in the map. Overrides MigrateIdMapInterface::importedCount
Sql::init protected function Initialize the plugin.
Sql::key public function Implementation of \Iterator::key().
Sql::lookupDestinationIds public function Looks up the destination identifiers corresponding to a source key. Overrides MigrateIdMapInterface::lookupDestinationIds
Sql::lookupSourceId public function Looks up the source identifier. Overrides MigrateIdMapInterface::lookupSourceId
Sql::mapTableName public function The name of the database map table.
Sql::messageCount public function Returns the number of messages saved. Overrides MigrateIdMapInterface::messageCount
Sql::messageTableName public function The name of the database message table.
Sql::next public function Implementation of \Iterator::next().
Sql::prepareUpdate public function Prepares to run a full update. Overrides MigrateIdMapInterface::prepareUpdate
Sql::processedCount public function Returns the number of processed items in the map. Overrides MigrateIdMapInterface::processedCount
Sql::rewind public function Implementation of \Iterator::rewind().
Sql::saveIdMapping public function Saves a mapping from the source identifiers to the destination identifiers. Overrides MigrateIdMapInterface::saveIdMapping
Sql::saveMessage public function Saves a message related to a source record in the migration message table. Overrides MigrateIdMapInterface::saveMessage
Sql::setMessage public function Sets the migrate message service. Overrides MigrateIdMapInterface::setMessage
Sql::setUpdate public function Sets a specified record to be updated, if it exists. Overrides MigrateIdMapInterface::setUpdate
Sql::sourceIdFields protected function The source ID fields.
Sql::SOURCE_IDS_HASH constant Column name of hashed source id values.
Sql::updateCount public function Returns a count of items which are marked as needing update. Overrides MigrateIdMapInterface::updateCount
Sql::valid public function Implementation of \Iterator::valid().
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.