ILIAS  release_9 Revision v9.13-25-g2c18ec4c24f
ILIAS\ResourceStorage\Collection\Collections Class Reference

Class Collections. More...

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

Public Member Functions

 __construct (ResourceBuilder $resource_builder, CollectionBuilder $collection_builder, RepositoryPreloader $preloader, private Subject $events)
 Consumers constructor. More...
 
 id (?string $collection_identification=null, ?int $owner=null)
 
 exists (string $collection_identification)
 
 idOrNull (?string $collection_identification=null, ?int $owner=null)
 
 get (ResourceCollectionIdentification $identification, ?int $owner=null)
 
 store (ResourceCollection $collection)
 
 clone (ResourceCollectionIdentification $source_collection_id)
 
 remove (ResourceCollectionIdentification $collection_id, ResourceStakeholder $stakeholder, bool $delete_resources_as_well=false)
 
 rangeAsArray (ResourceCollection $collection, int $from, int $amout)
 
 rangeAsGenerator (ResourceCollection $collection, int $from, int $to)
 
 sort (ResourceCollection $collection)
 

Private Attributes

array $cache = []
 
array $rid_cache = []
 
ResourceBuilder $resource_builder
 
CollectionBuilder $collection_builder
 
RepositoryPreloader $preloader
 

Detailed Description

Class Collections.

Author
Fabian Schmid fabia.nosp@m.n@sr.nosp@m..solu.nosp@m.tion.nosp@m.s

Definition at line 37 of file Collections.php.

Constructor & Destructor Documentation

◆ __construct()

ILIAS\ResourceStorage\Collection\Collections::__construct ( ResourceBuilder  $resource_builder,
CollectionBuilder  $collection_builder,
RepositoryPreloader  $preloader,
private Subject  $events 
)

Consumers constructor.

Definition at line 48 of file Collections.php.

References ILIAS\ResourceStorage\Collection\Collections\$collection_builder, ILIAS\ResourceStorage\Collection\Collections\$preloader, and ILIAS\ResourceStorage\Collection\Collections\$resource_builder.

53  {
54  $this->resource_builder = $resource_builder;
55  $this->collection_builder = $collection_builder;
56  $this->preloader = $preloader;
57  }

Member Function Documentation

◆ clone()

ILIAS\ResourceStorage\Collection\Collections::clone ( ResourceCollectionIdentification  $source_collection_id)

Definition at line 136 of file Collections.php.

References ILIAS\ResourceStorage\Collection\Collections\id(), and ILIAS\ResourceStorage\Collection\Collections\store().

136  : ResourceCollectionIdentification
137  {
138  $target_collection_id = $this->id();
139  $target_collection = $this->get($target_collection_id);
140  $source_collection = $this->get($source_collection_id);
141 
142  foreach ($source_collection->getResourceIdentifications() as $identification) {
143  $resource = $this->resource_builder->get($identification);
144  $cloned_resource = $this->resource_builder->clone($resource);
145  $target_collection->add($cloned_resource->getIdentification());
146  }
147  $this->store($target_collection);
148 
149  return $target_collection_id;
150  }
id(?string $collection_identification=null, ?int $owner=null)
Definition: Collections.php:63
store(ResourceCollection $collection)
+ Here is the call graph for this function:

◆ exists()

ILIAS\ResourceStorage\Collection\Collections::exists ( string  $collection_identification)

Definition at line 81 of file Collections.php.

Referenced by ILIAS\ResourceStorage\Collection\Collections\idOrNull().

81  : bool
82  {
83  return $this->collection_builder->has(new ResourceCollectionIdentification($collection_identification));
84  }
+ Here is the caller graph for this function:

◆ get()

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

Definition at line 96 of file Collections.php.

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

99  : ResourceCollection {
100  $rcid = $identification->serialize();
101 
102  $collection = $this->cache[$rcid] ?? $this->collection_builder->get(
103  $identification,
104  $owner
105  );
106 
107  $preload = [];
108 
109  $rids = isset($this->cache[$rcid])
110  ? $this->cache[$rcid]->getResourceIdentifications()
111  : $this->rid_cache[$rcid]
112  ?? iterator_to_array($this->collection_builder->getResourceIds($identification));
113 
114  $this->rid_cache[$rcid] = []; // reset cache for identification, rebuild it now
115  $collection->clear();
116 
117  foreach ($rids as $resource_identification) {
118  if ($this->resource_builder->has($resource_identification)) {
119  $collection->add($resource_identification);
120  $preload[] = $resource_identification;
121  }
122  $this->rid_cache[$rcid][] = $resource_identification;
123  }
124  $this->preloader->preload($preload);
125 
126  return $this->cache[$rcid] = $collection;
127  }
+ Here is the call graph for this function:

◆ id()

ILIAS\ResourceStorage\Collection\Collections::id ( ?string  $collection_identification = null,
?int  $owner = null 
)
Parameters
string | null$collection_identificationan existing collection identification or null for a new
int | null$ownerif this colletion is owned by a users, you must prvide it's owner ID

Definition at line 63 of file Collections.php.

Referenced by ILIAS\ResourceStorage\Collection\Collections\clone(), and ILIAS\ResourceStorage\Collection\Collections\idOrNull().

66  : ResourceCollectionIdentification {
67  if ($collection_identification === null
68  || $collection_identification === ''
69  || !$this->collection_builder->has(new ResourceCollectionIdentification($collection_identification))
70  ) {
71  $collection = $this->collection_builder->new($owner);
72  $identification = $collection->getIdentification();
73  $this->cache[$identification->serialize()] = $collection;
74 
75  return $identification;
76  }
77 
78  return new ResourceCollectionIdentification($collection_identification);
79  }
+ Here is the caller graph for this function:

◆ idOrNull()

ILIAS\ResourceStorage\Collection\Collections::idOrNull ( ?string  $collection_identification = null,
?int  $owner = null 
)

Definition at line 86 of file Collections.php.

References ILIAS\ResourceStorage\Collection\Collections\exists(), and ILIAS\ResourceStorage\Collection\Collections\id().

89  : ?ResourceCollectionIdentification {
90  if ($this->exists($collection_identification)) {
91  return $this->id($collection_identification, $owner);
92  }
93  return null;
94  }
id(?string $collection_identification=null, ?int $owner=null)
Definition: Collections.php:63
exists(string $collection_identification)
Definition: Collections.php:81
+ Here is the call graph for this function:

◆ rangeAsArray()

ILIAS\ResourceStorage\Collection\Collections::rangeAsArray ( ResourceCollection  $collection,
int  $from,
int  $amout 
)
Returns
ResourceIdentification[]

Definition at line 172 of file Collections.php.

References ILIAS\ResourceStorage\Collection\ResourceCollection\getResourceIdentifications().

172  : array
173  {
174  $return = [];
175  foreach ($collection->getResourceIdentifications() as $position => $identification) {
176  if ($position >= $from && $position < $from + $amout) {
177  $return[] = $identification;
178  }
179  }
180  return $return;
181  }
+ Here is the call graph for this function:

◆ rangeAsGenerator()

ILIAS\ResourceStorage\Collection\Collections::rangeAsGenerator ( ResourceCollection  $collection,
int  $from,
int  $to 
)
Returns
|ResourceIdentification[]

Definition at line 186 of file Collections.php.

References ILIAS\ResourceStorage\Collection\ResourceCollection\getResourceIdentifications().

186  : \Generator
187  {
188  foreach ($collection->getResourceIdentifications() as $position => $identification) {
189  if ($position >= $from && $position <= $to) {
190  yield $identification;
191  }
192  }
193  }
+ Here is the call graph for this function:

◆ remove()

ILIAS\ResourceStorage\Collection\Collections::remove ( ResourceCollectionIdentification  $collection_id,
ResourceStakeholder  $stakeholder,
bool  $delete_resources_as_well = false 
)

Definition at line 152 of file Collections.php.

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

156  : bool {
157  $collection = $this->get($collection_id);
158  if ($delete_resources_as_well) {
159  foreach ($collection->getResourceIdentifications() as $resource_identification) {
160  $resource = $this->resource_builder->get($resource_identification);
161  $this->resource_builder->remove($resource, $stakeholder);
162  }
163  }
164  unset($this->cache[$collection_id->serialize()]);
165 
166  return $this->collection_builder->delete($collection_id);
167  }
+ Here is the call graph for this function:

◆ sort()

ILIAS\ResourceStorage\Collection\Collections::sort ( ResourceCollection  $collection)

Definition at line 195 of file Collections.php.

195  : Sorter
196  {
197  return new Sorter(
198  $this->resource_builder,
199  $this->collection_builder,
200  $collection
201  );
202  }

◆ store()

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

Definition at line 129 of file Collections.php.

References ILIAS\ResourceStorage\Collection\ResourceCollection\getIdentification().

Referenced by ILIAS\ResourceStorage\Collection\Collections\clone().

129  : bool
130  {
131  $this->cache[$collection->getIdentification()->serialize()] = $collection;
132 
133  return $this->collection_builder->store($collection);
134  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Field Documentation

◆ $cache

array ILIAS\ResourceStorage\Collection\Collections::$cache = []
private

Definition at line 39 of file Collections.php.

◆ $collection_builder

CollectionBuilder ILIAS\ResourceStorage\Collection\Collections::$collection_builder
private

◆ $preloader

RepositoryPreloader ILIAS\ResourceStorage\Collection\Collections::$preloader
private

◆ $resource_builder

ResourceBuilder ILIAS\ResourceStorage\Collection\Collections::$resource_builder
private

◆ $rid_cache

array ILIAS\ResourceStorage\Collection\Collections::$rid_cache = []
private

Definition at line 40 of file Collections.php.


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