19 declare(strict_types=1);
    48         Repository\CollectionRepository $collection_repository,
    49         private Subject $events,
    50         ?CollectionIdentificationGenerator $id_generator = null,
    55         $this->id_generator = $id_generator ?? 
new UniqueIDCollectionIdentificationGenerator();
    58     public function has(ResourceCollectionIdentification $identification): bool
    60         return $this->collection_repository->has($identification);
    68         yield 
from $this->collection_repository->getResourceIdStrings($identification);
    81     private function validate(ResourceCollectionIdentification $identification): void
    83         if (!$this->id_generator->validateScheme($identification->serialize())) {
    84             throw new \InvalidArgumentException(
'Invalid identification scheme');
    90         return $this->collection_repository->blank(
    91             $this->id_generator->getUniqueResourceCollectionIdentification(),
    96     public function get(ResourceCollectionIdentification $identification, ?
int $owner = null): 
ResourceCollection    99         $existing = $this->collection_repository->existing($identification);
   100         if ($existing->hasSpecificOwner()
   101             && $existing->getOwner() !== $owner
   115         $event_data_container = 
new DataContainer();
   116         if ($this->lock_handler !== null) {
   117             $result = $this->lock_handler->lockTables(
   118                 $this->collection_repository->getNamesForLocking(),
   119                 function () use ($collection, $event_data_container): 
void {
   120                     $this->collection_repository->update($collection, $event_data_container);
   123             $result->runAndUnlock();
   125             $this->collection_repository->update($collection, $event_data_container);
   129         foreach ($event_data_container->get() as $event_data) {
   130             $this->events->notify(Event::COLLECTION_RESOURCE_ADDED, $event_data);
   136     public function delete(ResourceCollectionIdentification $identification): 
bool   138         $this->collection_repository->delete($identification);
   144         $this->collection_repository->removeResourceFromAllCollections($identification);
 
ILIAS ResourceStorage Lock LockHandler $lock_handler
 
validate(ResourceCollectionIdentification $identification)
 
Interface Observer  Contains several chained tasks and infos about them. 
 
notififyResourceDeletion(ResourceIdentification $identification)
 
Interface CollectionRepository. 
 
Class ResourceCollection. 
 
store(ResourceCollection $collection)
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
Class ResourceIdentification. 
 
Repository CollectionRepository $collection_repository
 
__construct(Repository\CollectionRepository $collection_repository, private Subject $events, ?CollectionIdentificationGenerator $id_generator=null, ?\ILIAS\ResourceStorage\Lock\LockHandler $lock_handler=null)
 
getResourceIdStrings(ResourceCollectionIdentification $identification)
 
CollectionIdentificationGenerator $id_generator
 
has(ResourceCollectionIdentification $identification)
 
getResourceIds(ResourceCollectionIdentification $identification)
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...