ILIAS  release_8 Revision v8.19
All Data Structures Namespaces Files Functions Variables Modules Pages
ILIAS\ResourceStorage\Collection\CollectionBuilder Class Reference

Class CollectionBuilder. More...

+ Collaboration diagram for ILIAS\ResourceStorage\Collection\CollectionBuilder:

Public Member Functions

 __construct (Repository\CollectionRepository $collection_repository, ?CollectionIdentificationGenerator $id_generator=null, ?\ILIAS\ResourceStorage\Lock\LockHandler $lock_handler=null)
 
 has (ResourceCollectionIdentification $identification)
 
 getResourceIdStrings (ResourceCollectionIdentification $identification)
 
 getResourceIds (ResourceCollectionIdentification $identification)
 
 new (?int $owner=null)
 
 get (ResourceCollectionIdentification $identification, ?int $owner=null)
 
 store (ResourceCollection $collection)
 
 delete (ResourceCollectionIdentification $identification)
 
 notififyResourceDeletion (ResourceIdentification $identification)
 

Private Member Functions

 validate (ResourceCollectionIdentification $identification)
 

Private Attributes

Repository CollectionRepository $collection_repository
 
CollectionIdentificationGenerator $id_generator = null
 
ILIAS ResourceStorage Lock LockHandler $lock_handler = null
 

Detailed Description

Constructor & Destructor Documentation

◆ __construct()

ILIAS\ResourceStorage\Collection\CollectionBuilder::__construct ( Repository\CollectionRepository  $collection_repository,
?CollectionIdentificationGenerator  $id_generator = null,
?\ILIAS\ResourceStorage\Lock\LockHandler  $lock_handler = null 
)

Definition at line 44 of file CollectionBuilder.php.

References ILIAS\ResourceStorage\Collection\CollectionBuilder\$collection_repository, and ILIAS\ResourceStorage\Collection\CollectionBuilder\$lock_handler.

48  {
49  $this->collection_repository = $collection_repository;
50  $this->lock_handler = $lock_handler;
51  $this->id_generator = $id_generator ?? new UniqueIDCollectionIdentificationGenerator();
52  }
Repository CollectionRepository $collection_repository
CollectionIdentificationGenerator $id_generator
ILIAS ResourceStorage Lock LockHandler $lock_handler

Member Function Documentation

◆ delete()

ILIAS\ResourceStorage\Collection\CollectionBuilder::delete ( ResourceCollectionIdentification  $identification)

Definition at line 121 of file CollectionBuilder.php.

121  : bool
122  {
123  $this->collection_repository->delete($identification);
124  return true;
125  }

◆ get()

ILIAS\ResourceStorage\Collection\CollectionBuilder::get ( ResourceCollectionIdentification  $identification,
?int  $owner = null 
)

Definition at line 92 of file CollectionBuilder.php.

References ILIAS\ResourceStorage\Collection\CollectionBuilder\validate().

92  : ResourceCollection
93  {
94  $this->validate($identification);
95  $existing = $this->collection_repository->existing($identification);
96  if ($existing->hasSpecificOwner()
97  && $existing->getOwner() !== $owner
98  ) {
99  throw new \InvalidArgumentException('Invalid owner of collection');
100  }
101  return $existing;
102  }
validate(ResourceCollectionIdentification $identification)
+ Here is the call graph for this function:

◆ getResourceIds()

ILIAS\ResourceStorage\Collection\CollectionBuilder::getResourceIds ( ResourceCollectionIdentification  $identification)
Returns
|ResourceIdentification[]

Definition at line 70 of file CollectionBuilder.php.

References ILIAS\ResourceStorage\Collection\CollectionBuilder\getResourceIdStrings().

70  : \Generator
71  {
72  foreach ($this->getResourceIdStrings($identification) as $string) {
73  yield new ResourceIdentification($string);
74  }
75  }
getResourceIdStrings(ResourceCollectionIdentification $identification)
+ Here is the call graph for this function:

◆ getResourceIdStrings()

ILIAS\ResourceStorage\Collection\CollectionBuilder::getResourceIdStrings ( ResourceCollectionIdentification  $identification)
Returns
|string[]

Definition at line 62 of file CollectionBuilder.php.

Referenced by ILIAS\ResourceStorage\Collection\CollectionBuilder\getResourceIds().

62  : \Generator
63  {
64  yield from $this->collection_repository->getResourceIdStrings($identification);
65  }
+ Here is the caller graph for this function:

◆ has()

ILIAS\ResourceStorage\Collection\CollectionBuilder::has ( ResourceCollectionIdentification  $identification)

Definition at line 54 of file CollectionBuilder.php.

54  : bool
55  {
56  return $this->collection_repository->has($identification);
57  }

◆ new()

ILIAS\ResourceStorage\Collection\CollectionBuilder::new ( ?int  $owner = null)

Definition at line 84 of file CollectionBuilder.php.

References ILIAS\ResourceStorage\Collection\ResourceCollection\NO_SPECIFIC_OWNER.

84  : ResourceCollection
85  {
86  return $this->collection_repository->blank(
87  $this->id_generator->getUniqueResourceCollectionIdentification(),
89  );
90  }

◆ notififyResourceDeletion()

ILIAS\ResourceStorage\Collection\CollectionBuilder::notififyResourceDeletion ( ResourceIdentification  $identification)

Definition at line 127 of file CollectionBuilder.php.

127  : void
128  {
129  $this->collection_repository->removeResourceFromAllCollections($identification);
130  }

◆ store()

ILIAS\ResourceStorage\Collection\CollectionBuilder::store ( ResourceCollection  $collection)

Definition at line 104 of file CollectionBuilder.php.

104  : bool
105  {
106  if ($this->lock_handler !== null) {
107  $result = $this->lock_handler->lockTables(
108  $this->collection_repository->getNamesForLocking(),
109  function () use ($collection): void {
110  $this->collection_repository->update($collection);
111  }
112  );
113  $result->runAndUnlock();
114  } else {
115  $this->collection_repository->update($collection);
116  }
117 
118  return true;
119  }

◆ validate()

ILIAS\ResourceStorage\Collection\CollectionBuilder::validate ( ResourceCollectionIdentification  $identification)
private

Definition at line 77 of file CollectionBuilder.php.

References ILIAS\ResourceStorage\Identification\AbstractIdentification\serialize().

Referenced by ILIAS\ResourceStorage\Collection\CollectionBuilder\get().

77  : void
78  {
79  if (!$this->id_generator->validateScheme($identification->serialize())) {
80  throw new \InvalidArgumentException('Invalid identification scheme');
81  }
82  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Field Documentation

◆ $collection_repository

Repository CollectionRepository ILIAS\ResourceStorage\Collection\CollectionBuilder::$collection_repository
private

◆ $id_generator

CollectionIdentificationGenerator ILIAS\ResourceStorage\Collection\CollectionBuilder::$id_generator = null
private

Definition at line 40 of file CollectionBuilder.php.

◆ $lock_handler

ILIAS ResourceStorage Lock LockHandler ILIAS\ResourceStorage\Collection\CollectionBuilder::$lock_handler = null
private

The documentation for this class was generated from the following file: