3 namespace Drupal\workspaces;
5 use Drupal\Core\Entity\EntityInterface;
6 use Drupal\Core\Entity\Sql\SqlContentEntityStorage;
9 * Defines the storage handler class for the Workspace association entity type.
11 class WorkspaceAssociationStorage extends SqlContentEntityStorage implements WorkspaceAssociationStorageInterface {
16 public function postPush(WorkspaceInterface $workspace) {
18 ->delete($this->entityType->getBaseTable())
19 ->condition('workspace', $workspace->id())
22 ->delete($this->entityType->getRevisionTable())
23 ->condition('workspace', $workspace->id())
30 public function getTrackedEntities($workspace_id, $all_revisions = FALSE) {
31 $table = $all_revisions ? $this->getRevisionTable() : $this->getBaseTable();
32 $query = $this->database->select($table, 'base_table');
34 ->fields('base_table', ['target_entity_type_id', 'target_entity_id', 'target_entity_revision_id'])
35 ->orderBy('target_entity_revision_id', 'ASC')
36 ->condition('workspace', $workspace_id);
38 $tracked_revisions = [];
39 foreach ($query->execute() as $record) {
40 $tracked_revisions[$record->target_entity_type_id][$record->target_entity_revision_id] = $record->target_entity_id;
43 return $tracked_revisions;
49 public function getEntityTrackingWorkspaceIds(EntityInterface $entity) {
50 $query = $this->database->select($this->getBaseTable(), 'base_table');
52 ->fields('base_table', ['workspace'])
53 ->condition('target_entity_type_id', $entity->getEntityTypeId())
54 ->condition('target_entity_id', $entity->id());
56 return $query->execute()->fetchCol();