19 declare(strict_types=1);
45 public function __construct(
private CollectionRepository $collection_repository,
private Subject $events,
private CollectionIdentificationGenerator $id_generator =
new UniqueIDCollectionIdentificationGenerator(),
private ?LockHandler $lock_handler =
null)
49 public function has(ResourceCollectionIdentification $identification): bool
51 return $this->collection_repository->has($identification);
59 yield
from $this->collection_repository->getResourceIdStrings($identification);
72 private function validate(ResourceCollectionIdentification $identification): void
74 if (!$this->id_generator->validateScheme($identification->serialize())) {
75 throw new \InvalidArgumentException(
'Invalid identification scheme');
81 return $this->collection_repository->blank(
82 $this->id_generator->getUniqueResourceCollectionIdentification(),
90 $existing = $this->collection_repository->existing($identification);
91 if ($existing->hasSpecificOwner()
92 && $existing->getOwner() !== $owner
106 $event_data_container =
new DataContainer();
107 if ($this->lock_handler !==
null) {
108 $result = $this->lock_handler->lockTables(
109 $this->collection_repository->getNamesForLocking(),
110 function () use ($collection, $event_data_container):
void {
111 $this->collection_repository->update($collection, $event_data_container);
114 $result->runAndUnlock();
116 $this->collection_repository->update($collection, $event_data_container);
120 foreach ($event_data_container->get() as $event_data) {
121 $this->events->notify(Event::COLLECTION_RESOURCE_ADDED, $event_data);
127 public function delete(ResourceCollectionIdentification $identification):
bool 129 $this->collection_repository->delete($identification);
135 $this->collection_repository->removeResourceFromAllCollections($identification);
__construct(private CollectionRepository $collection_repository, private Subject $events, private CollectionIdentificationGenerator $id_generator=new UniqueIDCollectionIdentificationGenerator(), private ?LockHandler $lock_handler=null)
validate(ResourceCollectionIdentification $identification)
notififyResourceDeletion(ResourceIdentification $identification)
Class ResourceCollection.
store(ResourceCollection $collection)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
Class ResourceIdentification.
getResourceIdStrings(ResourceCollectionIdentification $identification)
has(ResourceCollectionIdentification $identification)
getResourceIds(ResourceCollectionIdentification $identification)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...