function WorkspaceAssociation::loadAssociatedRevisions
Loads associated revision IDs and populates their static caches.
Parameters
string $workspace_id: The workspace ID to load associations for.
2 calls to WorkspaceAssociation::loadAssociatedRevisions()
- WorkspaceAssociation::getAssociatedInitialRevisions in core/
modules/ workspaces/ src/ WorkspaceAssociation.php - Retrieves all content revisions that were created in a given workspace.
- WorkspaceAssociation::getAssociatedRevisions in core/
modules/ workspaces/ src/ WorkspaceAssociation.php - Retrieves all content revisions tracked by a given workspace.
File
-
core/
modules/ workspaces/ src/ WorkspaceAssociation.php, line 245
Class
- WorkspaceAssociation
- Provides a class for CRUD operations on workspace associations.
Namespace
Drupal\workspacesCode
protected function loadAssociatedRevisions(string $workspace_id) : void {
// Only load if the associated revisions cache has not been populated for
// this workspace. We don't need to check the associated initial revisions
// cache because they're always populated together.
if (!isset($this->associatedRevisions[$workspace_id])) {
// Initialize both caches for this workspace.
$this->associatedRevisions[$workspace_id] = [];
$this->associatedInitialRevisions[$workspace_id] = [];
// Get workspace candidates for regular (non-initial) revisions.
$workspace_tree = $this->workspaceRepository
->loadTree();
if (isset($workspace_tree[$workspace_id])) {
$workspace_candidates = array_merge([
$workspace_id,
], $workspace_tree[$workspace_id]['ancestors']);
}
else {
$workspace_candidates = [
$workspace_id,
];
}
// Query all the associated revisions.
$query = $this->database
->select(static::REVISION_TABLE);
$query->fields(static::REVISION_TABLE, [
'workspace',
'target_entity_type_id',
'target_entity_id',
'target_entity_id_string',
'target_entity_revision_id',
'initial_revision',
]);
$query->orderBy('target_entity_type_id')
->orderBy('target_entity_revision_id')
->condition('workspace', $workspace_candidates, 'IN');
foreach ($query->execute() as $record) {
$target_id = $record->{static::getIdField($record->target_entity_type_id)};
// Always add to associatedRevisions for all workspace candidates.
$this->associatedRevisions[$workspace_id][$record->target_entity_type_id][$record->target_entity_revision_id] = $target_id;
// Only add to associatedInitialRevisions if it's an initial revision
// for the specific workspace.
if ($record->workspace === $workspace_id && $record->initial_revision) {
$this->associatedInitialRevisions[$workspace_id][$record->target_entity_type_id][$record->target_entity_revision_id] = $target_id;
}
}
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.