ILIAS  release_7 Revision v7.30-3-g800a261c036
Manager.php
Go to the documentation of this file.
1<?php declare(strict_types=1);
2
4
16
22{
30 protected $preloader;
31
36 public function __construct(
39 ) {
40 $this->resource_builder = $b;
41 $this->preloader = $l;
42 }
43
44 public function upload(
46 ResourceStakeholder $stakeholder,
47 string $revision_title = null
49 if ($result->isOK()) {
50 $info_resolver = new UploadInfoResolver(
51 $result,
52 1,
53 $stakeholder->getOwnerOfNewResources(),
54 $revision_title ?? $result->getName()
55 );
56
57 $resource = $this->resource_builder->new(
58 $result,
59 $info_resolver
60 );
61 $resource->addStakeholder($stakeholder);
62 $this->resource_builder->store($resource);
63
64 return $resource->getIdentification();
65 }
66 throw new \LogicException("Can't handle UploadResult: " . $result->getStatus()->getMessage());
67 }
68
69 public function stream(
70 FileStream $stream,
71 ResourceStakeholder $stakeholder,
72 string $revision_title = null
74
75 $info_resolver = new StreamInfoResolver(
76 $stream,
77 1,
78 $stakeholder->getOwnerOfNewResources(),
79 $revision_title ?? $stream->getMetadata()['uri']
80 );
81
82 $resource = $this->resource_builder->newFromStream(
83 $stream,
84 $info_resolver,
85 true
86 );
87 $resource->addStakeholder($stakeholder);
88 $this->resource_builder->store($resource);
89
90 return $resource->getIdentification();
91 }
92
93 public function find(string $identification) : ?ResourceIdentification
94 {
95 $resource_identification = new ResourceIdentification($identification);
96
97 if ($this->resource_builder->has($resource_identification)) {
98 return $resource_identification;
99 }
100
101 return null;
102 }
103
104 // Resources
105
107 {
108 $this->preloader->preload([$i->serialize()]);
109 return $this->resource_builder->get($i);
110 }
111
112 public function remove(ResourceIdentification $identification, ResourceStakeholder $stakeholder) : void
113 {
114 $this->resource_builder->remove($this->resource_builder->get($identification), $stakeholder);
115 }
116
117 public function clone(ResourceIdentification $identification) : ResourceIdentification
118 {
119 $resource = $this->resource_builder->clone($this->resource_builder->get($identification));
120
121 return $resource->getIdentification();
122 }
123
124 // Revision
125
126 public function appendNewRevision(
127 ResourceIdentification $identification,
129 ResourceStakeholder $stakeholder,
130 string $revision_title = null
131 ) : Revision {
132 if ($result->isOK()) {
133 if (!$this->resource_builder->has($identification)) {
134 throw new \LogicException("Resource not found, can't append new version in: " . $identification->serialize());
135 }
136 $resource = $this->resource_builder->get($identification);
137 $info_resolver = new UploadInfoResolver(
138 $result,
139 $resource->getMaxRevision() + 1,
140 $stakeholder->getOwnerOfNewResources(),
141 $revision_title ?? $result->getName()
142 );
143
144 $this->resource_builder->append(
145 $resource,
146 $result,
147 $info_resolver
148 );
149 $resource->addStakeholder($stakeholder);
150
151 $this->resource_builder->store($resource);
152
153 return $resource->getCurrentRevision();
154 }
155 throw new \LogicException("Can't handle UploadResult: " . $result->getStatus()->getMessage());
156 }
157
158 public function replaceWithUpload(
159 ResourceIdentification $identification,
161 ResourceStakeholder $stakeholder,
162 string $revision_title = null
163 ) : Revision {
164 if ($result->isOK()) {
165 if (!$this->resource_builder->has($identification)) {
166 throw new \LogicException("Resource not found, can't append new version in: " . $identification->serialize());
167 }
168 $resource = $this->resource_builder->get($identification);
169 $info_resolver = new UploadInfoResolver(
170 $result,
171 $resource->getMaxRevision() + 1,
172 $stakeholder->getOwnerOfNewResources(),
173 $revision_title ?? $result->getName()
174 );
175 $this->resource_builder->replaceWithUpload(
176 $resource,
177 $result,
178 $info_resolver
179 );
180 $resource->addStakeholder($stakeholder);
181
182 $this->resource_builder->store($resource);
183
184 return $resource->getCurrentRevision();
185 }
186 throw new \LogicException("Can't handle UploadResult: " . $result->getStatus()->getMessage());
187 }
188
190 ResourceIdentification $identification,
191 FileStream $stream,
192 ResourceStakeholder $stakeholder,
193 string $revision_title = null
194 ) : Revision {
195 if (!$this->resource_builder->has($identification)) {
196 throw new \LogicException("Resource not found, can't append new version in: " . $identification->serialize());
197 }
198
199 $resource = $this->resource_builder->get($identification);
200 $info_resolver = new StreamInfoResolver(
201 $stream,
202 $resource->getMaxRevision() + 1,
203 $stakeholder->getOwnerOfNewResources(),
204 $revision_title ?? $stream->getMetadata()['uri']
205 );
206
207 $this->resource_builder->appendFromStream(
208 $resource,
209 $stream,
210 $info_resolver,
211 true
212 );
213 $resource->addStakeholder($stakeholder);
214
215 $this->resource_builder->store($resource);
216
217 return $resource->getCurrentRevision();
218 }
219
220 public function replaceWithStream(
221 ResourceIdentification $identification,
222 FileStream $stream,
223 ResourceStakeholder $stakeholder,
224 string $revision_title = null
225 ) : Revision {
226 if (!$this->resource_builder->has($identification)) {
227 throw new \LogicException("Resource not found, can't append new version in: " . $identification->serialize());
228 }
229
230 $resource = $this->resource_builder->get($identification);
231 $info_resolver = new StreamInfoResolver(
232 $stream,
233 $resource->getMaxRevision() + 1,
234 $stakeholder->getOwnerOfNewResources(),
235 $revision_title ?? $stream->getMetadata()['uri']
236 );
237
238 $this->resource_builder->replaceWithStream(
239 $resource,
240 $stream,
241 $info_resolver,
242 true
243 );
244 $resource->addStakeholder($stakeholder);
245
246 $this->resource_builder->store($resource);
247
248 return $resource->getCurrentRevision();
249 }
250
251 public function getCurrentRevision(ResourceIdentification $identification) : Revision
252 {
253 return $this->resource_builder->get($identification)->getCurrentRevision();
254 }
255
256 public function updateRevision(Revision $revision) : bool
257 {
258 $this->resource_builder->storeRevision($revision);
259
260 return true;
261 }
262
263 public function rollbackRevision(ResourceIdentification $identification, int $revision_number) : bool
264 {
265 $resource = $this->resource_builder->get($identification);
266 $this->resource_builder->appendFromRevision($resource, $revision_number);
267 $this->resource_builder->store($resource);
268
269 return true;
270 }
271
272 public function removeRevision(ResourceIdentification $identification, int $revision_number) : bool
273 {
274 $resource = $this->resource_builder->get($identification);
275 $this->resource_builder->removeRevision($resource, $revision_number);
276 $this->resource_builder->store($resource);
277
278 return true;
279 }
280}
$result
An exception for terminatinating execution or to throw for unit testing.
clone(ResourceIdentification $identification)
Definition: Manager.php:117
rollbackRevision(ResourceIdentification $identification, int $revision_number)
Definition: Manager.php:263
find(string $identification)
Definition: Manager.php:93
getCurrentRevision(ResourceIdentification $identification)
Definition: Manager.php:251
appendNewRevision(ResourceIdentification $identification, UploadResult $result, ResourceStakeholder $stakeholder, string $revision_title=null)
Definition: Manager.php:126
__construct(ResourceBuilder $b, RepositoryPreloader $l)
Manager constructor.
Definition: Manager.php:36
replaceWithStream(ResourceIdentification $identification, FileStream $stream, ResourceStakeholder $stakeholder, string $revision_title=null)
Definition: Manager.php:220
removeRevision(ResourceIdentification $identification, int $revision_number)
Definition: Manager.php:272
getResource(ResourceIdentification $i)
Definition: Manager.php:106
stream(FileStream $stream, ResourceStakeholder $stakeholder, string $revision_title=null)
Definition: Manager.php:69
appendNewRevisionFromStream(ResourceIdentification $identification, FileStream $stream, ResourceStakeholder $stakeholder, string $revision_title=null)
Definition: Manager.php:189
upload(UploadResult $result, ResourceStakeholder $stakeholder, string $revision_title=null)
Definition: Manager.php:44
updateRevision(Revision $revision)
Definition: Manager.php:256
replaceWithUpload(ResourceIdentification $identification, UploadResult $result, ResourceStakeholder $stakeholder, string $revision_title=null)
Definition: Manager.php:158
if(!file_exists(getcwd() . '/ilias.ini.php'))
registration confirmation script for ilias
Definition: confirmReg.php:12
Interface FileStream The base interface for all filesystem streams.
Definition: FileStream.php:18
$i
Definition: metadata.php:24
has(string $class_name)