Skip to content
Snippets Groups Projects
Unverified Commit 07e2fbb7 authored by Lucas Hedding's avatar Lucas Hedding Committed by Lucas Hedding
Browse files

Issue #3212411 by heddn, stella: Calling drush mmsg before migrations have run...

Issue #3212411 by heddn, stella: Calling drush mmsg before migrations have run causes a pile of errors
parent 0a3dfcf0
Branches
Tags
No related merge requests found
...@@ -667,6 +667,10 @@ class MigrateToolsCommands extends DrushCommands { ...@@ -667,6 +667,10 @@ class MigrateToolsCommands extends DrushCommands {
/** @var \Drupal\migrate\Plugin\MigrateIdMapInterface|\Drupal\migrate_tools\IdMapFilter $map */ /** @var \Drupal\migrate\Plugin\MigrateIdMapInterface|\Drupal\migrate_tools\IdMapFilter $map */
$map = new IdMapFilter($migration->getIdMap(), $id_list); $map = new IdMapFilter($migration->getIdMap(), $id_list);
$source_id_keys = $this->getSourceIdKeys($map); $source_id_keys = $this->getSourceIdKeys($map);
if ($source_id_keys === NULL) {
$this->logger()->notice(dt('Migration has not yet run'));
return NULL;
}
$table = []; $table = [];
foreach ($map->getMessages() as $row) { foreach ($map->getMessages() as $row) {
...@@ -718,6 +722,9 @@ class MigrateToolsCommands extends DrushCommands { ...@@ -718,6 +722,9 @@ class MigrateToolsCommands extends DrushCommands {
protected function getSourceIdKeys(IdMapFilter $map) { protected function getSourceIdKeys(IdMapFilter $map) {
$map->rewind(); $map->rewind();
$columns = $map->currentSource(); $columns = $map->currentSource();
if ($columns === NULL) {
return $columns;
}
$source_id_keys = array_map(static function ($id) { $source_id_keys = array_map(static function ($id) {
return 'src_' . $id; return 'src_' . $id;
}, array_keys($columns)); }, array_keys($columns));
......
...@@ -2,12 +2,15 @@ ...@@ -2,12 +2,15 @@
namespace Drupal\migrate_tools; namespace Drupal\migrate_tools;
use Drupal\migrate\MigrateMessageInterface;
use Drupal\migrate\Plugin\MigrateIdMapInterface; use Drupal\migrate\Plugin\MigrateIdMapInterface;
use Drupal\migrate\Plugin\MigrationInterface;
use Drupal\migrate\Row;
/** /**
* Class to filter ID map by an ID list. * Class to filter ID map by an ID list.
*/ */
class IdMapFilter extends \FilterIterator { class IdMapFilter extends \FilterIterator implements MigrateIdMapInterface {
/** /**
* List of specific source IDs to import. * List of specific source IDs to import.
...@@ -34,9 +37,236 @@ class IdMapFilter extends \FilterIterator { ...@@ -34,9 +37,236 @@ class IdMapFilter extends \FilterIterator {
*/ */
public function accept() { public function accept() {
// Row is included. // Row is included.
if (empty($this->idList) || in_array(array_values($this->getInnerIterator()->currentSource()), $this->idList)) { $map = $this->getInnerIterator();
\assert($map instanceof MigrateIdMapInterface);
if (empty($this->idList) || in_array(array_values($this->currentSource()), $this->idList)) {
return TRUE; return TRUE;
} }
} }
/**
* {@inheritdoc}
*/
public function saveIdMapping(Row $row, array $destination_id_values, $status = self::STATUS_IMPORTED, $rollback_action = self::ROLLBACK_DELETE) {
$map = $this->getInnerIterator();
\assert($map instanceof MigrateIdMapInterface);
$map->saveIdMapping($row, $destination_id_values, $status, $rollback_action);
}
/**
* {@inheritdoc}
*/
public function saveMessage(array $source_id_values, $message, $level = MigrationInterface::MESSAGE_ERROR) {
$map = $this->getInnerIterator();
\assert($map instanceof MigrateIdMapInterface);
$map->saveMessage($source_id_values, $message, $level);
}
/**
* {@inheritdoc}
*/
public function getMessages(array $source_id_values = [], $level = NULL) {
$map = $this->getInnerIterator();
\assert($map instanceof MigrateIdMapInterface);
return $map->getMessages($source_id_values, $level);
}
/**
* {@inheritdoc}
*/
public function prepareUpdate() {
$map = $this->getInnerIterator();
\assert($map instanceof MigrateIdMapInterface);
$map->prepareUpdate();
}
/**
* {@inheritdoc}
*/
public function processedCount() {
$map = $this->getInnerIterator();
\assert($map instanceof MigrateIdMapInterface);
$map->processedCount();
}
/**
* {@inheritdoc}
*/
public function importedCount() {
$map = $this->getInnerIterator();
\assert($map instanceof MigrateIdMapInterface);
return $map->importedCount();
}
/**
* {@inheritdoc}
*/
public function updateCount() {
$map = $this->getInnerIterator();
\assert($map instanceof MigrateIdMapInterface);
return $map->updateCount();
}
/**
* {@inheritdoc}
*/
public function errorCount() {
$map = $this->getInnerIterator();
\assert($map instanceof MigrateIdMapInterface);
return $map->errorCount();
}
/**
* {@inheritdoc}
*/
public function messageCount() {
$map = $this->getInnerIterator();
\assert($map instanceof MigrateIdMapInterface);
return $map->messageCount();
}
/**
* {@inheritdoc}
*/
public function delete(array $source_id_values, $messages_only = FALSE) {
$map = $this->getInnerIterator();
\assert($map instanceof MigrateIdMapInterface);
$map->delete($source_id_values, $messages_only);
}
/**
* {@inheritdoc}
*/
public function deleteDestination(array $destination_id_values) {
$map = $this->getInnerIterator();
\assert($map instanceof MigrateIdMapInterface);
$map->deleteDestination($destination_id_values);
}
/**
* {@inheritdoc}
*/
public function clearMessages() {
$map = $this->getInnerIterator();
\assert($map instanceof MigrateIdMapInterface);
$map->clearMessages();
}
/**
* {@inheritdoc}
*/
public function getRowBySource(array $source_id_values) {
$map = $this->getInnerIterator();
\assert($map instanceof MigrateIdMapInterface);
return $map->getRowBySource($source_id_values);
}
/**
* {@inheritdoc}
*/
public function getRowByDestination(array $destination_id_values) {
$map = $this->getInnerIterator();
\assert($map instanceof MigrateIdMapInterface);
return $map->getRowByDestination($destination_id_values);
}
/**
* {@inheritdoc}
*/
public function getRowsNeedingUpdate($count) {
$map = $this->getInnerIterator();
\assert($map instanceof MigrateIdMapInterface);
return $map->getRowsNeedingUpdate($count);
}
/**
* {@inheritdoc}
*/
public function lookupSourceId(array $destination_id_values) {
$map = $this->getInnerIterator();
\assert($map instanceof MigrateIdMapInterface);
return $map->lookupSourceId($destination_id_values);
}
/**
* {@inheritdoc}
*/
public function lookupDestinationIds(array $source_id_values) {
$map = $this->getInnerIterator();
\assert($map instanceof MigrateIdMapInterface);
return $map->lookupDestinationIds($source_id_values);
}
/**
* {@inheritdoc}
*/
public function currentDestination() {
$map = $this->getInnerIterator();
\assert($map instanceof MigrateIdMapInterface);
return $map->currentDestination();
}
/**
* {@inheritdoc}
*/
public function currentSource() {
$map = $this->getInnerIterator();
\assert($map instanceof MigrateIdMapInterface);
return $map->currentSource();
}
/**
* {@inheritdoc}
*/
public function destroy() {
$map = $this->getInnerIterator();
\assert($map instanceof MigrateIdMapInterface);
$map->destroy();
}
/**
* {@inheritdoc}
*/
public function getQualifiedMapTableName() {
$map = $this->getInnerIterator();
\assert($map instanceof MigrateIdMapInterface);
return $map->getQualifiedMapTableName();
}
/**
* {@inheritdoc}
*/
public function setMessage(MigrateMessageInterface $message) {
$map = $this->getInnerIterator();
\assert($map instanceof MigrateIdMapInterface);
$map->setMessage($message);
}
/**
* {@inheritdoc}
*/
public function setUpdate(array $source_id_values) {
$map = $this->getInnerIterator();
\assert($map instanceof MigrateIdMapInterface);
$map->setUpdate($source_id_values);
}
/**
* {@inheritdoc}
*/
public function getPluginId() {
$map = $this->getInnerIterator();
\assert($map instanceof MigrateIdMapInterface);
return $map->getPluginId();
}
/**
* {@inheritdoc}
*/
public function getPluginDefinition() {
$map = $this->getInnerIterator();
\assert($map instanceof MigrateIdMapInterface);
return $map->getPluginDefinition();
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment