Chris@14: isAuditable()) { Chris@14: return AuditResult::pass($migration); Chris@14: } Chris@14: Chris@14: $interface = HighestIdInterface::class; Chris@14: Chris@14: $destination = $migration->getDestinationPlugin(); Chris@14: if (!$destination instanceof HighestIdInterface) { Chris@14: throw new AuditException($migration, "Destination does not implement $interface"); Chris@14: } Chris@14: Chris@14: $id_map = $migration->getIdMap(); Chris@14: if (!$id_map instanceof HighestIdInterface) { Chris@14: throw new AuditException($migration, "ID map does not implement $interface"); Chris@14: } Chris@14: Chris@14: if ($destination->getHighestId() > $id_map->getHighestId()) { Chris@14: return AuditResult::fail($migration, [ Chris@14: $this->t('The destination system contains data which was not created by a migration.'), Chris@14: ]); Chris@14: } Chris@14: return AuditResult::pass($migration); Chris@14: } Chris@14: Chris@14: /** Chris@14: * {@inheritdoc} Chris@14: */ Chris@14: public function auditMultiple(array $migrations) { Chris@14: $conflicts = []; Chris@14: Chris@14: foreach ($migrations as $migration) { Chris@14: $migration_id = $migration->getPluginId(); Chris@14: $conflicts[$migration_id] = $this->audit($migration); Chris@14: } Chris@14: ksort($conflicts); Chris@14: return $conflicts; Chris@14: } Chris@14: Chris@14: }