ILIAS  release_8 Revision v8.24
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)
 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 = []
 
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 36 of file Collections.php.

Constructor & Destructor Documentation

◆ __construct()

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

Member Function Documentation

◆ clone()

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

Definition at line 120 of file Collections.php.

121 {
122 $target_collection_id = $this->id();
123 $target_collection = $this->get($target_collection_id);
124 $source_collection = $this->get($source_collection_id);
125
126 foreach ($source_collection->getResourceIdentifications() as $identification) {
127 $resource = $this->resource_builder->get($identification);
128 $cloned_resource = $this->resource_builder->clone($resource);
129 $target_collection->add($cloned_resource->getIdentification());
130 }
131 $this->store($target_collection);
132
133 return $target_collection_id;
134 }
store(ResourceCollection $collection)
id(?string $collection_identification=null, ?int $owner=null)
Definition: Collections.php:60

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

78 : bool
79 {
80 return $this->collection_builder->has(new ResourceCollectionIdentification($collection_identification));
81 }

◆ get()

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

Definition at line 93 of file Collections.php.

97 $collection = $this->cache[$identification->serialize()]
98 ?? $this->collection_builder->get(
99 $identification,
100 $owner
101 );
102
103 $preload = [];
104 foreach ($this->collection_builder->getResourceIds($identification) as $resource_identification) {
105 if ($this->resource_builder->has($resource_identification)) {
106 $collection->add($resource_identification);
107 $preload[] = $resource_identification;
108 }
109 }
110 $this->preloader->preload($preload);
111
112 return $this->cache[$identification->serialize()] = $collection;
113 }
add(ResourceIdentification $identification)

References ILIAS\ResourceStorage\Collection\ResourceCollection\add(), and 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 60 of file Collections.php.

64 if ($collection_identification === null
65 || $collection_identification === ''
66 || !$this->collection_builder->has(new ResourceCollectionIdentification($collection_identification))
67 ) {
68 $collection = $this->collection_builder->new($owner);
69 $identification = $collection->getIdentification();
70 $this->cache[$identification->serialize()] = $collection;
71
72 return $identification;
73 }
74
75 return new ResourceCollectionIdentification($collection_identification);
76 }

◆ idOrNull()

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

Definition at line 83 of file Collections.php.

87 if ($this->exists($collection_identification)) {
88 return $this->id($collection_identification, $owner);
89 }
90 return null;
91 }
exists(string $collection_identification)
Definition: Collections.php:78

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

154 : array
155 {
156 $return = [];
157 foreach ($collection->getResourceIdentifications() as $position => $identification) {
158 if ($position >= $from && $position < $from + $amout) {
159 $return[] = $identification;
160 }
161 }
162 return $return;
163 }

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

168 : \Generator
169 {
170 foreach ($collection->getResourceIdentifications() as $position => $identification) {
171 if ($position >= $from && $position <= $to) {
172 yield $identification;
173 }
174 }
175 }

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

140 : bool {
141 $collection = $this->get($collection_id);
142 if ($delete_resources_as_well) {
143 foreach ($collection->getResourceIdentifications() as $resource_identification) {
144 $resource = $this->resource_builder->get($resource_identification);
145 $this->resource_builder->remove($resource, $stakeholder);
146 }
147 }
148 return $this->collection_builder->delete($collection_id);
149 }

◆ sort()

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

Definition at line 177 of file Collections.php.

177 : Sorter
178 {
179 return new Sorter(
180 $this->resource_builder,
181 $this->collection_builder,
182 $collection
183 );
184 }

◆ store()

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

Definition at line 115 of file Collections.php.

115 : bool
116 {
117 return $this->collection_builder->store($collection);
118 }

Field Documentation

◆ $cache

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

Definition at line 38 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

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