annotate core/modules/migrate/src/Audit/IdAuditor.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 1fec387a4317
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 }