Mercurial > hg > cmmr2012-drupal-site
annotate core/modules/migrate/src/Audit/IdAuditor.php @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children |
rev | line source |
---|---|
Chris@0 | 1 <?php |
Chris@0 | 2 |
Chris@0 | 3 namespace Drupal\migrate\Audit; |
Chris@0 | 4 |
Chris@0 | 5 use Drupal\Core\StringTranslation\StringTranslationTrait; |
Chris@0 | 6 use Drupal\migrate\Plugin\MigrationInterface; |
Chris@0 | 7 |
Chris@0 | 8 /** |
Chris@0 | 9 * Audits migrations that create content entities in the destination system. |
Chris@0 | 10 */ |
Chris@0 | 11 class IdAuditor implements AuditorInterface { |
Chris@0 | 12 |
Chris@0 | 13 use StringTranslationTrait; |
Chris@0 | 14 |
Chris@0 | 15 /** |
Chris@0 | 16 * {@inheritdoc} |
Chris@0 | 17 */ |
Chris@0 | 18 public function audit(MigrationInterface $migration) { |
Chris@0 | 19 // If the migration does not opt into auditing, it passes. |
Chris@0 | 20 if (!$migration->isAuditable()) { |
Chris@0 | 21 return AuditResult::pass($migration); |
Chris@0 | 22 } |
Chris@0 | 23 |
Chris@0 | 24 $interface = HighestIdInterface::class; |
Chris@0 | 25 |
Chris@0 | 26 $destination = $migration->getDestinationPlugin(); |
Chris@0 | 27 if (!$destination instanceof HighestIdInterface) { |
Chris@0 | 28 throw new AuditException($migration, "Destination does not implement $interface"); |
Chris@0 | 29 } |
Chris@0 | 30 |
Chris@0 | 31 $id_map = $migration->getIdMap(); |
Chris@0 | 32 if (!$id_map instanceof HighestIdInterface) { |
Chris@0 | 33 throw new AuditException($migration, "ID map does not implement $interface"); |
Chris@0 | 34 } |
Chris@0 | 35 |
Chris@0 | 36 if ($destination->getHighestId() > $id_map->getHighestId()) { |
Chris@0 | 37 return AuditResult::fail($migration, [ |
Chris@0 | 38 $this->t('The destination system contains data which was not created by a migration.'), |
Chris@0 | 39 ]); |
Chris@0 | 40 } |
Chris@0 | 41 return AuditResult::pass($migration); |
Chris@0 | 42 } |
Chris@0 | 43 |
Chris@0 | 44 /** |
Chris@0 | 45 * {@inheritdoc} |
Chris@0 | 46 */ |
Chris@0 | 47 public function auditMultiple(array $migrations) { |
Chris@0 | 48 $conflicts = []; |
Chris@0 | 49 |
Chris@0 | 50 foreach ($migrations as $migration) { |
Chris@0 | 51 $migration_id = $migration->getPluginId(); |
Chris@0 | 52 $conflicts[$migration_id] = $this->audit($migration); |
Chris@0 | 53 } |
Chris@0 | 54 ksort($conflicts); |
Chris@0 | 55 return $conflicts; |
Chris@0 | 56 } |
Chris@0 | 57 |
Chris@0 | 58 } |