mirror of
https://github.com/farmOS/farmOS.git
synced 2024-02-23 11:37:38 +01:00
Issue #3229503: Rolling back log migration deletes quantities
This commit is contained in:
parent
7c2f2466de
commit
44a14b5422
1 changed files with 37 additions and 0 deletions
|
@ -6,8 +6,10 @@ use Drupal\Component\Datetime\TimeInterface;
|
|||
use Drupal\Core\Database\Connection;
|
||||
use Drupal\Core\Entity\EntityTypeManagerInterface;
|
||||
use Drupal\Core\State\StateInterface;
|
||||
use Drupal\log\Entity\Log;
|
||||
use Drupal\migrate\Event\MigrateEvents;
|
||||
use Drupal\migrate\Event\MigrateImportEvent;
|
||||
use Drupal\migrate\Event\MigrateRowDeleteEvent;
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
|
||||
/**
|
||||
|
@ -78,6 +80,7 @@ class FarmMigrationSubscriber implements EventSubscriberInterface {
|
|||
public static function getSubscribedEvents() {
|
||||
$events[MigrateEvents::PRE_IMPORT][] = ['onMigratePreImport'];
|
||||
$events[MigrateEvents::POST_IMPORT][] = ['onMigratePostImport'];
|
||||
$events[MigrateEvents::PRE_ROW_DELETE][] = ['onMigratePreRowDelete'];
|
||||
return $events;
|
||||
}
|
||||
|
||||
|
@ -104,6 +107,16 @@ class FarmMigrationSubscriber implements EventSubscriberInterface {
|
|||
$this->addRevisionLogMessage($event);
|
||||
}
|
||||
|
||||
/**
|
||||
* Run row pre-deletion logic.
|
||||
*
|
||||
* @param \Drupal\migrate\Event\MigrateRowDeleteEvent $event
|
||||
* The row delete event object.
|
||||
*/
|
||||
public function onMigratePreRowDelete(MigrateRowDeleteEvent $event) {
|
||||
$this->deleteLogQuantityReferences($event);
|
||||
}
|
||||
|
||||
/**
|
||||
* Grant default text format permission to anonymous role.
|
||||
*
|
||||
|
@ -241,4 +254,28 @@ class FarmMigrationSubscriber implements EventSubscriberInterface {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete references to quantities from logs.
|
||||
*
|
||||
* @param \Drupal\migrate\Event\MigrateRowDeleteEvent $event
|
||||
* The row delete event object.
|
||||
*/
|
||||
public function deleteLogQuantityReferences(MigrateRowDeleteEvent $event) {
|
||||
|
||||
// If the migration is in the farm_migrate_log migration group, delete all
|
||||
// references to quantity entities from the log that is being deleted.
|
||||
// This prevents the quantity entity itself from being deleted by
|
||||
// LogEventSubscriber in the farm_log_quantity module.
|
||||
// @see \Drupal\farm_log_quantity\EventSubscriber\LogEventSubscriber
|
||||
$migration = $event->getMigration();
|
||||
if (isset($migration->migration_group) && $migration->migration_group == 'farm_migrate_log') {
|
||||
$id_values = $event->getDestinationIdValues();
|
||||
if (!empty($id_values['id'])) {
|
||||
$log = Log::load($id_values['id']);
|
||||
$log->quantity = [];
|
||||
$log->save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue