public function WorkspaceManager::purgeDeletedWorkspacesBatch in Drupal 10
Same name and namespace in other branches
- 8 core/modules/workspaces/src/WorkspaceManager.php \Drupal\workspaces\WorkspaceManager::purgeDeletedWorkspacesBatch()
- 9 core/modules/workspaces/src/WorkspaceManager.php \Drupal\workspaces\WorkspaceManager::purgeDeletedWorkspacesBatch()
File
- core/modules/workspaces/src/WorkspaceManager.php, line 306
Class
- WorkspaceManager
- Provides the workspace manager.
Namespace
Drupal\workspaces
Code
public function purgeDeletedWorkspacesBatch() {
$deleted_workspace_ids = $this->state
->get('workspace.deleted', []);
if (empty($deleted_workspace_ids)) {
return;
}
$batch_size = Settings::get('entity_update_batch_size', 50);
$workspace_id = reset($deleted_workspace_ids);
$tracked_entities = $this->workspaceAssociation
->getTrackedEntities($workspace_id);
$count = 1;
foreach ($tracked_entities as $entity_type_id => $entities) {
$associated_entity_storage = $this->entityTypeManager
->getStorage($entity_type_id);
$associated_revisions = $this->workspaceAssociation
->getAssociatedRevisions($workspace_id, $entity_type_id);
foreach (array_keys($associated_revisions) as $revision_id) {
if ($count > $batch_size) {
continue 2;
}
$associated_entity_storage
->deleteRevision($revision_id);
$count++;
}
$this->workspaceAssociation
->deleteAssociations($workspace_id, $entity_type_id, $entities);
}
if (!$this->workspaceAssociation
->getTrackedEntities($workspace_id)) {
unset($deleted_workspace_ids[$workspace_id]);
$this->state
->set('workspace.deleted', $deleted_workspace_ids);
}
}