annotate core/modules/migrate/src/Audit/IdAuditor.php @ 5:12f9dff5fda9 tip

Update to Drupal core 8.7.1
author Chris Cannam
date Thu, 09 May 2019 15:34:47 +0100
parents c75dbcec494b
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 }