ILIAS  release_7 Revision v7.30-3-g800a261c036
All Data Structures Namespaces Files Functions Variables Modules Pages
Manager.php
Go to the documentation of this file.
1 <?php declare(strict_types=1);
2 
4 
16 
21 class Manager
22 {
26  protected $resource_builder;
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 }
upload(UploadResult $result, ResourceStakeholder $stakeholder, string $revision_title=null)
Definition: Manager.php:44
__construct(ResourceBuilder $b, RepositoryPreloader $l)
Manager constructor.
Definition: Manager.php:36
$result
find(string $identification)
Definition: Manager.php:93
replaceWithUpload(ResourceIdentification $identification, UploadResult $result, ResourceStakeholder $stakeholder, string $revision_title=null)
Definition: Manager.php:158
appendNewRevisionFromStream(ResourceIdentification $identification, FileStream $stream, ResourceStakeholder $stakeholder, string $revision_title=null)
Definition: Manager.php:189
rollbackRevision(ResourceIdentification $identification, int $revision_number)
Definition: Manager.php:263
getResource(ResourceIdentification $i)
Definition: Manager.php:106
updateRevision(Revision $revision)
Definition: Manager.php:256
appendNewRevision(ResourceIdentification $identification, UploadResult $result, ResourceStakeholder $stakeholder, string $revision_title=null)
Definition: Manager.php:126
clone(ResourceIdentification $identification)
Definition: Manager.php:117
getCurrentRevision(ResourceIdentification $identification)
Definition: Manager.php:251
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
Interface FileStream The base interface for all filesystem streams.
Definition: FileStream.php:17
Class StorageManager.
Definition: Manager.php:21
stream(FileStream $stream, ResourceStakeholder $stakeholder, string $revision_title=null)
Definition: Manager.php:69
$i
Definition: metadata.php:24