WorkspaceAssociationStorage.php in Workspace 8.2
File
src/WorkspaceAssociationStorage.php
View source
<?php
namespace Drupal\workspace;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\Sql\SqlContentEntityStorage;
class WorkspaceAssociationStorage extends SqlContentEntityStorage implements WorkspaceAssociationStorageInterface {
public function postPush(WorkspaceInterface $workspace) {
$this->database
->delete($this->entityType
->getBaseTable())
->condition('workspace', $workspace
->id())
->execute();
$this->database
->delete($this->entityType
->getRevisionTable())
->condition('workspace', $workspace
->id())
->execute();
}
public function getTrackedEntities($workspace_id, $all_revisions = FALSE) {
$table = $all_revisions ? $this
->getRevisionTable() : $this
->getBaseTable();
$query = $this->database
->select($table, 'base_table');
$query
->fields('base_table', [
'target_entity_type_id',
'target_entity_id',
'target_entity_revision_id',
])
->orderBy('target_entity_revision_id', 'ASC')
->condition('workspace', $workspace_id);
$tracked_revisions = [];
foreach ($query
->execute() as $record) {
$tracked_revisions[$record->target_entity_type_id][$record->target_entity_revision_id] = $record->target_entity_id;
}
return $tracked_revisions;
}
public function getEntityTrackingWorkspaceIds(EntityInterface $entity) {
$query = $this->database
->select($this
->getBaseTable(), 'base_table');
$query
->fields('base_table', [
'workspace',
])
->condition('target_entity_type_id', $entity
->getEntityTypeId())
->condition('target_entity_id', $entity
->id());
return $query
->execute()
->fetchCol();
}
}