19 declare(strict_types=1);
61 ?
string $collection_identification = null,
64 if ($collection_identification === null
65 || $collection_identification ===
'' 68 $collection = $this->collection_builder->new($owner);
69 $identification = $collection->getIdentification();
70 $this->cache[$identification->serialize()] = $collection;
72 return $identification;
78 public function exists(
string $collection_identification): bool
84 ?
string $collection_identification = null,
87 if ($this->
exists($collection_identification)) {
88 return $this->
id($collection_identification, $owner);
97 $collection = $this->cache[$identification->
serialize()]
98 ?? $this->collection_builder->get(
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;
110 $this->preloader->preload($preload);
112 return $this->cache[$identification->
serialize()] = $collection;
117 return $this->collection_builder->store($collection);
122 $target_collection_id = $this->
id();
123 $target_collection = $this->
get($target_collection_id);
124 $source_collection = $this->
get($source_collection_id);
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());
131 $this->
store($target_collection);
133 return $target_collection_id;
136 public function remove(
139 bool $delete_resources_as_well = false
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);
148 return $this->collection_builder->delete($collection_id);
158 if ($position >= $from && $position < $from + $amout) {
159 $return[] = $identification;
171 if ($position >= $from && $position <= $to) {
172 yield $identification;
180 $this->resource_builder,
181 $this->collection_builder,
getResourceIdentifications()
clone(ResourceCollectionIdentification $source_collection_id)
ResourceBuilder $resource_builder
Class ResourceCollectionIdentification.
Class ResourceCollection.
sort(ResourceCollection $collection)
__construct(ResourceBuilder $resource_builder, CollectionBuilder $collection_builder, RepositoryPreloader $preloader)
Consumers constructor.
CollectionBuilder $collection_builder
rangeAsGenerator(ResourceCollection $collection, int $from, int $to)
id(?string $collection_identification=null, ?int $owner=null)
add(ResourceIdentification $identification)
rangeAsArray(ResourceCollection $collection, int $from, int $amout)
idOrNull(?string $collection_identification=null, ?int $owner=null)
store(ResourceCollection $collection)
Interface ResourceStakeholder.
RepositoryPreloader $preloader
Interface RepositoryPreloader.
exists(string $collection_identification)