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