
| Current Path : /var/www/html/german-vocational.cn/core/modules/workspaces/src/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : /var/www/html/german-vocational.cn/core/modules/workspaces/src/WorkspaceAssociationStorage.php |
<?php
namespace Drupal\workspaces;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\Sql\SqlContentEntityStorage;
/**
* Defines the storage handler class for the Workspace association entity type.
*/
class WorkspaceAssociationStorage extends SqlContentEntityStorage implements WorkspaceAssociationStorageInterface {
/**
* {@inheritdoc}
*/
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();
}
/**
* {@inheritdoc}
*/
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;
}
/**
* {@inheritdoc}
*/
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();
}
}