diff --git a/multiversion.install b/multiversion.install index f742ab8..9ecae37 100644 --- a/multiversion.install +++ b/multiversion.install @@ -51,6 +51,9 @@ function multiversion_uninstall() { $schema = $database->schema(); $table = 'url_alias'; $field = 'workspace'; + // Drop all aliases that were created after content import from the temporary + // storage. + Database::getConnection()->delete($table)->condition($field, 0)->execute(); if ($schema->fieldExists($table, $field)) { $schema->dropField($table, $field); } diff --git a/multiversion.services.yml b/multiversion.services.yml index 1f86324..d740dde 100644 --- a/multiversion.services.yml +++ b/multiversion.services.yml @@ -147,8 +147,3 @@ services: arguments: ['@database', '@module_handler'] tags: - { name: event_subscriber } - multiversion.entity_workspace_migrate_subscriber: - class: Drupal\multiversion\EventSubscriber\EntityWorkspaceMigrateSubscriber - arguments: ['@entity_type.manager', '@workspace.manager', '@entity.query', '@service_container'] - tags: - - { name: event_subscriber } diff --git a/src/EventSubscriber/EntityWorkspaceMigrateSubscriber.php b/src/EventSubscriber/EntityWorkspaceMigrateSubscriber.php deleted file mode 100644 index 54a6bb0..0000000 --- a/src/EventSubscriber/EntityWorkspaceMigrateSubscriber.php +++ /dev/null @@ -1,139 +0,0 @@ -entityTypeManager = $entity_type_manager; - $this->workspaceManager = $workspace_manager; - $this->entityQuery = $entity_query; - $this->container = $container; - $this->defaultWorkspaceId = $this->container->getParameter('workspace.default'); - $this->activeWorkspace = $this->workspaceManager->getActiveWorkspace(); - } - - /** - * Delete all entities that do not belong to the default workspace. - */ - public function onPreMigrate(MultiversionManagerEvent $event) { - if ($event->getOp() === MultiversionManager::OP_DISABLE) { - $workspaces = $this->workspaceManager->loadMultiple(); - - // Keep everything for the default workspace. - unset($workspaces[$this->defaultWorkspaceId]); - - foreach ($workspaces as $workspace_id => $workspace) { - $this->workspaceManager->setActiveWorkspace($workspace); - - foreach ($event->getEntityTypes() as $entity_type_id => $entity_type) { - $entity_ids = $this->entityQuery->get($entity_type_id) - ->condition('workspace', $workspace_id) - ->execute(); - $controller = $this->entityTypeManager->getStorage($entity_type_id); - - foreach (array_chunk($entity_ids, self::CHUNK_SIZE) as $chunk_data) { - $entities = $controller->loadMultiple($chunk_data); - $controller->delete($entities); - } - } - } - // Set the active workspace back to the default value. - $this->workspaceManager->setActiveWorkspace($this->activeWorkspace); - } - } - - /** - * {@inheritdoc} - */ - public static function getSubscribedEvents() { - return [ - MultiversionManagerEvents::PRE_MIGRATE => ['onPreMigrate'], - ]; - } - -}