ILIAS  trunk Revision v12.0_alpha-1221-g4e438232683
ILIAS\ResourceStorage\Collection\Collections Class Reference

Class Collections. More...

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

Public Member Functions

 __construct (private ResourceBuilder $resource_builder, private CollectionBuilder $collection_builder, private 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)
 
 findIdentificationByNameIn (ResourceCollection $collection, string $name)
 
 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 = []
 

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 ( private ResourceBuilder  $resource_builder,
private CollectionBuilder  $collection_builder,
private RepositoryPreloader  $preloader,
private Subject  $events 
)

Consumers constructor.

Definition at line 45 of file Collections.php.

46 {
47 }

Member Function Documentation

◆ clone()

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

Definition at line 137 of file Collections.php.

138 {
139 $target_collection_id = $this->id();
140 $target_collection = $this->get($target_collection_id);
141 $source_collection = $this->get($source_collection_id);
142
143 foreach ($source_collection->getResourceIdentifications() as $identification) {
144 $resource = $this->resource_builder->get($identification);
145 $cloned_resource = $this->resource_builder->clone($resource);
146 $target_collection->add($cloned_resource->getIdentification());
147 }
148 $this->store($target_collection);
149
150 return $target_collection_id;
151 }
store(ResourceCollection $collection)
id(?string $collection_identification=null, ?int $owner=null)
Definition: Collections.php:53

References ILIAS\GlobalScreen\Provider\id().

+ Here is the call graph for this function:

◆ exists()

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

Definition at line 71 of file Collections.php.

71 : bool
72 {
73 return $this->collection_builder->has(new ResourceCollectionIdentification($collection_identification));
74 }

◆ findIdentificationByNameIn()

ILIAS\ResourceStorage\Collection\Collections::findIdentificationByNameIn ( ResourceCollection  $collection,
string  $name 
)

Definition at line 119 of file Collections.php.

119 : ?ResourceIdentification
120 {
121 foreach ($collection->getResourceIdentifications() as $identification) {
122 $resource = $this->resource_builder->get($identification);
123 if ($resource->getCurrentRevisionIncludingDraft()->getTitle() === $name) {
124 return $identification;
125 }
126 }
127 return null;
128 }

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

+ Here is the call graph for this function:

◆ get()

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

Definition at line 86 of file Collections.php.

90 $rcid = $identification->serialize();
91
92 $collection = $this->cache[$rcid] ?? $this->collection_builder->get(
93 $identification,
94 $owner
95 );
96
97 $preload = [];
98
99 $rids = isset($this->cache[$rcid])
100 ? $this->cache[$rcid]->getResourceIdentifications()
101 : $this->rid_cache[$rcid]
102 ?? iterator_to_array($this->collection_builder->getResourceIds($identification));
103
104 $this->rid_cache[$rcid] = []; // reset cache for identification, rebuild it now
105 $collection->clear();
106
107 foreach ($rids as $resource_identification) {
108 if ($this->resource_builder->has($resource_identification)) {
109 $collection->add($resource_identification);
110 $preload[] = $resource_identification;
111 }
112 $this->rid_cache[$rcid][] = $resource_identification;
113 }
114 $this->preloader->preload($preload);
115
116 return $this->cache[$rcid] = $collection;
117 }

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

+ 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 53 of file Collections.php.

57 if ($collection_identification === null
58 || $collection_identification === ''
59 || !$this->collection_builder->has(new ResourceCollectionIdentification($collection_identification))
60 ) {
61 $collection = $this->collection_builder->new($owner);
62 $identification = $collection->getIdentification();
63 $this->cache[$identification->serialize()] = $collection;
64
65 return $identification;
66 }
67
68 return new ResourceCollectionIdentification($collection_identification);
69 }

◆ idOrNull()

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

Definition at line 76 of file Collections.php.

80 if ($this->exists($collection_identification)) {
81 return $this->id($collection_identification, $owner);
82 }
83 return null;
84 }
exists(string $collection_identification)
Definition: Collections.php:71

References ILIAS\GlobalScreen\Provider\id().

+ 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 173 of file Collections.php.

173 : array
174 {
175 $return = [];
176 foreach ($collection->getResourceIdentifications() as $position => $identification) {
177 if ($position >= $from && $position < $from + $amout) {
178 $return[] = $identification;
179 }
180 }
181 return $return;
182 }

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

+ Here is the call graph for this function:

◆ rangeAsGenerator()

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

Definition at line 187 of file Collections.php.

187 : \Generator
188 {
189 foreach ($collection->getResourceIdentifications() as $position => $identification) {
190 if ($position >= $from && $position <= $to) {
191 yield $identification;
192 }
193 }
194 }

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

+ 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 153 of file Collections.php.

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

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

+ Here is the call graph for this function:

◆ sort()

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

Definition at line 196 of file Collections.php.

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

◆ store()

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

Definition at line 130 of file Collections.php.

130 : bool
131 {
132 $this->cache[$collection->getIdentification()->serialize()] = $collection;
133
134 return $this->collection_builder->store($collection);
135 }

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

+ Here is the call graph for this function:

Field Documentation

◆ $cache

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

Definition at line 39 of file Collections.php.

◆ $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: