ILIAS  release_8 Revision v8.19
All Data Structures Namespaces Files Functions Variables Modules Pages
ILIAS\ResourceStorage\Resource\ResourceBuilder Class Reference

Class ResourceBuilder. More...

+ Collaboration diagram for ILIAS\ResourceStorage\Resource\ResourceBuilder:

Public Member Functions

 __construct (StorageHandlerFactory $storage_handler_factory, Repositories $repositories, LockHandler $lock_handler, StreamAccess $stream_access, FileNamePolicy $file_name_policy=null)
 ResourceBuilder constructor. More...
 
 new (UploadResult $result, InfoResolver $info_resolver)
 
 newFromStream (FileStream $stream, InfoResolver $info_resolver, bool $keep_original=false)
 
 newBlank ()
 
 append (StorableResource $resource, UploadResult $result, InfoResolver $info_resolver)
 
 replaceWithUpload (StorableResource $resource, UploadResult $result, InfoResolver $info_resolver)
 
 appendFromStream (StorableResource $resource, FileStream $stream, InfoResolver $info_resolver, bool $keep_original=false)
 
 replaceWithStream (StorableResource $resource, FileStream $stream, InfoResolver $info_resolver, bool $keep_original=false)
 
 appendFromRevision (StorableResource $resource, int $revision_number)
 
 has (ResourceIdentification $identification)
 check if a resource exists More...
 
 store (StorableResource $resource)
 after you have modified a resource, you can store it here More...
 
 clone (StorableResource $resource)
 Clone anexisting resource with all it's revisions, stakeholders and information More...
 
 storeRevision (Revision $revision)
 Store one Revision More...
 
 get (ResourceIdentification $identification)
 
 extractStream (Revision $revision)
 
 remove (StorableResource $resource, ResourceStakeholder $stakeholder=null)
 Reve a complete revision. More...
 
 removeRevision (StorableResource $resource, int $revision_number)
 

Protected Attributes

array $resource_cache = []
 
ILIAS ResourceStorage Policy FileNamePolicy $file_name_policy
 
ILIAS ResourceStorage StorageHandler StorageHandler $primary_storage_handler
 

Private Member Functions

 deleteRevision (StorableResource $resource, Revision $revision)
 
 populateNakedResourceWithRevisionsAndStakeholders (StorableResource $resource)
 
 populateRevisionInfo (Revision $revision, InfoResolver $info_resolver)
 

Private Attributes

ILIAS ResourceStorage Information Repository InformationRepository $information_repository
 
ILIAS ResourceStorage Resource Repository ResourceRepository $resource_repository
 
ILIAS ResourceStorage Revision Repository RevisionRepository $revision_repository
 
ILIAS ResourceStorage Stakeholder Repository StakeholderRepository $stakeholder_repository
 
StorageHandlerFactory $storage_handler_factory
 
LockHandler $lock_handler
 
StreamAccess $stream_access
 

Detailed Description

Class ResourceBuilder.

Author
Fabian Schmid fs@st.nosp@m.uder.nosp@m.-raim.nosp@m.ann..nosp@m.ch

Definition at line 48 of file ResourceBuilder.php.

Constructor & Destructor Documentation

◆ __construct()

ILIAS\ResourceStorage\Resource\ResourceBuilder::__construct ( StorageHandlerFactory  $storage_handler_factory,
Repositories  $repositories,
LockHandler  $lock_handler,
StreamAccess  $stream_access,
FileNamePolicy  $file_name_policy = null 
)

ResourceBuilder constructor.

Parameters
FileNamePolicy | null$file_name_policy

Definition at line 83 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Resource\ResourceBuilder\$lock_handler, ILIAS\ResourceStorage\Resource\ResourceBuilder\$storage_handler_factory, ILIAS\ResourceStorage\Resource\ResourceBuilder\$stream_access, ILIAS\ResourceStorage\Repositories\getInformationRepository(), ILIAS\ResourceStorage\StorageHandler\StorageHandlerFactory\getPrimary(), ILIAS\ResourceStorage\Repositories\getResourceRepository(), ILIAS\ResourceStorage\Repositories\getRevisionRepository(), and ILIAS\ResourceStorage\Repositories\getStakeholderRepository().

89  {
90  $this->storage_handler_factory = $storage_handler_factory;
91  $this->lock_handler = $lock_handler;
92  $this->stream_access = $stream_access;
93  $this->primary_storage_handler = $storage_handler_factory->getPrimary();
94  $this->revision_repository = $repositories->getRevisionRepository();
95  $this->resource_repository = $repositories->getResourceRepository();
96  $this->information_repository = $repositories->getInformationRepository();
97  $this->stakeholder_repository = $repositories->getStakeholderRepository();
98  $this->file_name_policy = $file_name_policy ?? new NoneFileNamePolicy();
99  }
ILIAS ResourceStorage Policy FileNamePolicy $file_name_policy
+ Here is the call graph for this function:

Member Function Documentation

◆ append()

ILIAS\ResourceStorage\Resource\ResourceBuilder::append ( StorableResource  $resource,
UploadResult  $result,
InfoResolver  $info_resolver 
)

Definition at line 145 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Resource\StorableResource\addRevision(), ILIAS\ResourceStorage\Resource\StorableResource\getStorageID(), ILIAS\ResourceStorage\Resource\ResourceBuilder\populateRevisionInfo(), and ILIAS\ResourceStorage\Resource\StorableResource\setStorageID().

Referenced by ILIAS\ResourceStorage\Resource\ResourceBuilder\new().

149  : StorableResource {
150  $revision = $this->revision_repository->blankFromUpload($info_resolver, $resource, $result);
151  $revision = $this->populateRevisionInfo($revision, $info_resolver);
152 
153  $resource->addRevision($revision);
154  $resource->setStorageID(
155  $resource->getStorageID() === '' ? $this->primary_storage_handler->getID() : $resource->getStorageID()
156  );
157 
158  return $resource;
159  }
populateRevisionInfo(Revision $revision, InfoResolver $info_resolver)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ appendFromRevision()

ILIAS\ResourceStorage\Resource\ResourceBuilder::appendFromRevision ( StorableResource  $resource,
int  $revision_number 
)

Definition at line 222 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Resource\StorableResource\addRevision(), ILIAS\ResourceStorage\Resource\StorableResource\getMaxRevision(), ILIAS\ResourceStorage\Resource\StorableResource\getSpecificRevision(), ILIAS\ResourceStorage\Resource\StorableResource\getStorageID(), ILIAS\ResourceStorage\Resource\ResourceBuilder\populateRevisionInfo(), and ILIAS\ResourceStorage\Resource\StorableResource\setStorageID().

225  : StorableResource {
226  $existing_revision = $resource->getSpecificRevision($revision_number);
227  if ($existing_revision instanceof FileRevision) {
228  $info_resolver = new ClonedRevisionInfoResolver(
229  $resource->getMaxRevision() + 1,
230  $existing_revision
231  );
232 
233  $cloned_revision = $this->revision_repository->blankFromClone(
234  $info_resolver,
235  $resource,
236  $existing_revision
237  );
238 
239  $this->populateRevisionInfo($cloned_revision, $info_resolver);
240 
241  $resource->addRevision($cloned_revision);
242  $resource->setStorageID(
243  $resource->getStorageID() === '' ? $this->primary_storage_handler->getID() : $resource->getStorageID()
244  );
245  return $resource;
246  }
247  return $resource;
248  }
populateRevisionInfo(Revision $revision, InfoResolver $info_resolver)
+ Here is the call graph for this function:

◆ appendFromStream()

ILIAS\ResourceStorage\Resource\ResourceBuilder::appendFromStream ( StorableResource  $resource,
FileStream  $stream,
InfoResolver  $info_resolver,
bool  $keep_original = false 
)

Definition at line 184 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Resource\StorableResource\addRevision(), ILIAS\ResourceStorage\Resource\StorableResource\getStorageID(), ILIAS\ResourceStorage\Resource\ResourceBuilder\populateRevisionInfo(), and ILIAS\ResourceStorage\Resource\StorableResource\setStorageID().

Referenced by ILIAS\ResourceStorage\Resource\ResourceBuilder\newFromStream().

189  : StorableResource {
190  $revision = $this->revision_repository->blankFromStream($info_resolver, $resource, $stream, $keep_original);
191  $revision = $this->populateRevisionInfo($revision, $info_resolver);
192 
193  $resource->addRevision($revision);
194  $resource->setStorageID(
195  $resource->getStorageID() === '' ? $this->primary_storage_handler->getID() : $resource->getStorageID()
196  );
197 
198  return $resource;
199  }
populateRevisionInfo(Revision $revision, InfoResolver $info_resolver)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ clone()

ILIAS\ResourceStorage\Resource\ResourceBuilder::clone ( StorableResource  $resource)

Clone anexisting resource with all it's revisions, stakeholders and information

Definition at line 296 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Resource\StorableResource\getAllRevisions(), ILIAS\ResourceStorage\Resource\StorableResource\getStakeholders(), ILIAS\ResourceStorage\Resource\ResourceBuilder\newBlank(), ILIAS\ResourceStorage\Resource\ResourceBuilder\populateRevisionInfo(), and ILIAS\ResourceStorage\Resource\ResourceBuilder\store().

296  : StorableResource
297  {
298  $new_resource = $this->newBlank();
299  foreach ($resource->getStakeholders() as $stakeholder) {
300  $stakeholder = clone $stakeholder;
301  $new_resource->addStakeholder($stakeholder);
302  }
303 
304  foreach ($resource->getAllRevisions() as $existing_revision) {
305  if (!$existing_revision instanceof FileRevision) {
306  continue;
307  }
308  $info_resolver = new ClonedRevisionInfoResolver(
309  $existing_revision->getVersionNumber(),
310  $existing_revision
311  );
312 
313 
314  $existing_revision = $this->stream_access->populateRevision($existing_revision);
315 
316  $cloned_revision = new FileStreamRevision(
317  $new_resource->getIdentification(),
318  $existing_revision->maybeGetToken()->resolveStream(),
319  true
320  );
321 
322  $this->populateRevisionInfo($cloned_revision, $info_resolver);
323  $cloned_revision->setVersionNumber($existing_revision->getVersionNumber());
324 
325  $new_resource->addRevision($cloned_revision);
326  }
327  $this->store($new_resource);
328  return $new_resource;
329  }
populateRevisionInfo(Revision $revision, InfoResolver $info_resolver)
clone(StorableResource $resource)
Clone anexisting resource with all it's revisions, stakeholders and information
store(StorableResource $resource)
after you have modified a resource, you can store it here
+ Here is the call graph for this function:

◆ deleteRevision()

ILIAS\ResourceStorage\Resource\ResourceBuilder::deleteRevision ( StorableResource  $resource,
Revision  $revision 
)
private

Definition at line 432 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Revision\Revision\getInformation(), ILIAS\ResourceStorage\Resource\ResourceBuilder\populateNakedResourceWithRevisionsAndStakeholders(), and ILIAS\ResourceStorage\Resource\StorableResource\removeRevision().

Referenced by ILIAS\ResourceStorage\Resource\ResourceBuilder\remove(), ILIAS\ResourceStorage\Resource\ResourceBuilder\removeRevision(), ILIAS\ResourceStorage\Resource\ResourceBuilder\replaceWithStream(), and ILIAS\ResourceStorage\Resource\ResourceBuilder\replaceWithUpload().

432  : void
433  {
434  try {
435  $this->storage_handler_factory->getHandlerForResource($resource)->deleteRevision($revision);
436  } catch (\Throwable $exception) {
437  }
438 
439  $this->information_repository->delete($revision->getInformation(), $revision);
440  $this->revision_repository->delete($revision);
441  $resource->removeRevision($revision);
442  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ extractStream()

ILIAS\ResourceStorage\Resource\ResourceBuilder::extractStream ( Revision  $revision)

Definition at line 370 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Revision\Revision\getIdentification(), ILIAS\ResourceStorage\Revision\Revision\getStorageID(), and ILIAS\Filesystem\Stream\Streams\ofResource().

370  : FileStream
371  {
372  switch (true) {
373  case $revision instanceof UploadedFileRevision:
374  return Streams::ofResource(fopen($revision->getUpload()->getPath(), 'rb'));
375  case $revision instanceof CloneRevision:
376  return $revision->getRevisionToClone()->getStream();
377  case $revision instanceof FileRevision:
378  if ($revision->getStorageID() !== '') {
379  return $this->storage_handler_factory->getHandlerForRevision(
380  $revision
381  )->getStream($revision);
382  } else {
383  return $this->storage_handler_factory->getHandlerForResource(
384  $this->get($revision->getIdentification())
385  )->getStream($revision);
386  }
387  // no break
388  default:
389  throw new \LogicException('This revision type is not supported');
390  }
391  }
static ofResource($resource)
Wraps an already created resource with the stream abstraction.
Definition: Streams.php:65
+ Here is the call graph for this function:

◆ get()

ILIAS\ResourceStorage\Resource\ResourceBuilder::get ( ResourceIdentification  $identification)
Exceptions
ResourceNotFoundExceptionGet a Resource out of a Identification

Definition at line 356 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Resource\ResourceBuilder\populateNakedResourceWithRevisionsAndStakeholders().

356  : StorableResource
357  {
358  if (isset($this->resource_cache[$identification->serialize()])) {
359  return $this->resource_cache[$identification->serialize()];
360  }
361  $resource = $this->resource_repository->get($identification);
362 
363  $this->resource_cache[$identification->serialize()] = $this->populateNakedResourceWithRevisionsAndStakeholders(
364  $resource
365  );
366 
367  return $this->resource_cache[$identification->serialize()];
368  }
populateNakedResourceWithRevisionsAndStakeholders(StorableResource $resource)
+ Here is the call graph for this function:

◆ has()

ILIAS\ResourceStorage\Resource\ResourceBuilder::has ( ResourceIdentification  $identification)

check if a resource exists

Definition at line 253 of file ResourceBuilder.php.

253  : bool
254  {
255  return $this->resource_repository->has($identification);
256  }

◆ new()

ILIAS\ResourceStorage\Resource\ResourceBuilder::new ( UploadResult  $result,
InfoResolver  $info_resolver 
)

Definition at line 107 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Resource\ResourceBuilder\append().

110  : StorableResource {
111  $resource = $this->resource_repository->blank(
112  $this->primary_storage_handler->getIdentificationGenerator()->getUniqueResourceIdentification()
113  );
114 
115  return $this->append($resource, $result, $info_resolver);
116  }
append(StorableResource $resource, UploadResult $result, InfoResolver $info_resolver)
+ Here is the call graph for this function:

◆ newBlank()

ILIAS\ResourceStorage\Resource\ResourceBuilder::newBlank ( )

Definition at line 131 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Resource\StorableResource\setStorageID().

Referenced by ILIAS\ResourceStorage\Resource\ResourceBuilder\clone().

131  : StorableResource
132  {
133  $resource = $this->resource_repository->blank(
134  $this->primary_storage_handler->getIdentificationGenerator()->getUniqueResourceIdentification()
135  );
136  $resource->setStorageID($this->primary_storage_handler->getID());
137 
138  return $resource;
139  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ newFromStream()

ILIAS\ResourceStorage\Resource\ResourceBuilder::newFromStream ( FileStream  $stream,
InfoResolver  $info_resolver,
bool  $keep_original = false 
)

Definition at line 118 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Resource\ResourceBuilder\appendFromStream().

122  : StorableResource {
123  $resource = $this->resource_repository->blank(
124  $this->primary_storage_handler->getIdentificationGenerator()->getUniqueResourceIdentification()
125  );
126 
127  return $this->appendFromStream($resource, $stream, $info_resolver, $keep_original);
128  }
appendFromStream(StorableResource $resource, FileStream $stream, InfoResolver $info_resolver, bool $keep_original=false)
+ Here is the call graph for this function:

◆ populateNakedResourceWithRevisionsAndStakeholders()

ILIAS\ResourceStorage\Resource\ResourceBuilder::populateNakedResourceWithRevisionsAndStakeholders ( StorableResource  $resource)
private

Definition at line 457 of file ResourceBuilder.php.

References $i, ILIAS\ResourceStorage\Resource\StorableResource\addStakeholder(), ILIAS\ResourceStorage\Resource\StorableResource\getIdentification(), ILIAS\ResourceStorage\Resource\StorableResource\getStorageID(), and ILIAS\ResourceStorage\Resource\StorableResource\setRevisions().

Referenced by ILIAS\ResourceStorage\Resource\ResourceBuilder\deleteRevision(), and ILIAS\ResourceStorage\Resource\ResourceBuilder\get().

457  : StorableResource
458  {
459  $revisions = $this->revision_repository->get($resource);
460  $resource->setRevisions($revisions);
461 
462  foreach ($revisions->getAll() as $i => $revision) {
463  $information = $this->information_repository->get($revision);
464  $revision->setInformation($information);
465  $revision->setStorageID($resource->getStorageID());
466  // $revisions->replaceSingleRevision($this->stream_access->populateRevision($revision)); // currently we do not need populating the stream every time, we will do that in consumers only
467  }
468 
469  foreach ($this->stakeholder_repository->getStakeholders($resource->getIdentification()) as $s) {
470  $resource->addStakeholder($s);
471  }
472 
473  return $resource;
474  }
$i
Definition: metadata.php:41
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ populateRevisionInfo()

ILIAS\ResourceStorage\Resource\ResourceBuilder::populateRevisionInfo ( Revision  $revision,
InfoResolver  $info_resolver 
)
private

Definition at line 476 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Resource\InfoResolver\InfoResolver\getCreationDate(), ILIAS\ResourceStorage\Resource\InfoResolver\InfoResolver\getFileName(), ILIAS\ResourceStorage\Revision\Revision\getInformation(), ILIAS\ResourceStorage\Resource\InfoResolver\InfoResolver\getMimeType(), ILIAS\ResourceStorage\Resource\InfoResolver\InfoResolver\getOwnerId(), ILIAS\ResourceStorage\Resource\InfoResolver\InfoResolver\getRevisionTitle(), ILIAS\ResourceStorage\Resource\InfoResolver\InfoResolver\getSize(), ILIAS\ResourceStorage\Resource\InfoResolver\InfoResolver\getSuffix(), ILIAS\ResourceStorage\Revision\Revision\setInformation(), and ILIAS\ResourceStorage\Revision\Revision\setTitle().

Referenced by ILIAS\ResourceStorage\Resource\ResourceBuilder\append(), ILIAS\ResourceStorage\Resource\ResourceBuilder\appendFromRevision(), ILIAS\ResourceStorage\Resource\ResourceBuilder\appendFromStream(), ILIAS\ResourceStorage\Resource\ResourceBuilder\clone(), ILIAS\ResourceStorage\Resource\ResourceBuilder\replaceWithStream(), and ILIAS\ResourceStorage\Resource\ResourceBuilder\replaceWithUpload().

476  : Revision
477  {
478  $info = $revision->getInformation();
479 
480  $info->setTitle($this->secure($info_resolver->getFileName()));
481  $info->setMimeType($info_resolver->getMimeType());
482  $info->setSuffix($this->secure($info_resolver->getSuffix()));
483  $info->setSize($info_resolver->getSize());
484  $info->setCreationDate($info_resolver->getCreationDate());
485 
486  $revision->setInformation($info);
487  $revision->setTitle($this->secure($info_resolver->getRevisionTitle()));
488  $revision->setOwnerId($info_resolver->getOwnerId());
489 
490  return $revision;
491  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ remove()

ILIAS\ResourceStorage\Resource\ResourceBuilder::remove ( StorableResource  $resource,
ResourceStakeholder  $stakeholder = null 
)

Reve a complete revision.

if there are other Stakeholder, only your stakeholder gets removed

Parameters
ResourceStakeholder | null$stakeholder
Returns
bool whether ResourceStakeholders handled this successful

Definition at line 398 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Resource\ResourceBuilder\deleteRevision(), ILIAS\ResourceStorage\Resource\StorableResource\getAllRevisions(), ILIAS\ResourceStorage\Resource\StorableResource\getIdentification(), ILIAS\ResourceStorage\Resource\StorableResource\getStakeholders(), and ILIAS\ResourceStorage\Resource\StorableResource\removeStakeholder().

398  : bool
399  {
400  $sucessful = true;
401  if ($stakeholder instanceof ResourceStakeholder) {
402  $this->stakeholder_repository->deregister($resource->getIdentification(), $stakeholder);
403  $sucessful = $stakeholder->resourceHasBeenDeleted($resource->getIdentification());
404  $resource->removeStakeholder($stakeholder);
405  if ($resource->getStakeholders() !== []) {
406  return $sucessful;
407  }
408  }
409  foreach ($resource->getStakeholders() as $s) {
410  $sucessful = $s->resourceHasBeenDeleted($resource->getIdentification()) && $sucessful;
411  }
412 
413  foreach ($resource->getAllRevisions() as $revision) {
414  $this->deleteRevision($resource, $revision);
415  }
416 
417  $this->storage_handler_factory->getHandlerForResource($resource)->deleteResource($resource);
418  $this->resource_repository->delete($resource);
419 
420  return $sucessful;
421  }
deleteRevision(StorableResource $resource, Revision $revision)
+ Here is the call graph for this function:

◆ removeRevision()

ILIAS\ResourceStorage\Resource\ResourceBuilder::removeRevision ( StorableResource  $resource,
int  $revision_number 
)

Definition at line 423 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Resource\ResourceBuilder\deleteRevision(), ILIAS\ResourceStorage\Resource\StorableResource\getSpecificRevision(), and ILIAS\ResourceStorage\Resource\ResourceBuilder\store().

423  : void
424  {
425  $reveision_to_delete = $resource->getSpecificRevision($revision_number);
426  if ($reveision_to_delete !== null) {
427  $this->deleteRevision($resource, $reveision_to_delete);
428  }
429  $this->store($resource);
430  }
deleteRevision(StorableResource $resource, Revision $revision)
store(StorableResource $resource)
after you have modified a resource, you can store it here
+ Here is the call graph for this function:

◆ replaceWithStream()

ILIAS\ResourceStorage\Resource\ResourceBuilder::replaceWithStream ( StorableResource  $resource,
FileStream  $stream,
InfoResolver  $info_resolver,
bool  $keep_original = false 
)

Definition at line 201 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Resource\StorableResource\addRevision(), ILIAS\ResourceStorage\Resource\ResourceBuilder\deleteRevision(), ILIAS\ResourceStorage\Resource\StorableResource\getAllRevisions(), ILIAS\ResourceStorage\Resource\StorableResource\getStorageID(), ILIAS\ResourceStorage\Resource\ResourceBuilder\populateRevisionInfo(), and ILIAS\ResourceStorage\Resource\StorableResource\setStorageID().

206  : StorableResource {
207  $revision = $this->revision_repository->blankFromStream($info_resolver, $resource, $stream, $keep_original);
208  $revision = $this->populateRevisionInfo($revision, $info_resolver);
209 
210  foreach ($resource->getAllRevisions() as $existing_revision) {
211  $this->deleteRevision($resource, $existing_revision);
212  }
213 
214  $resource->addRevision($revision);
215  $resource->setStorageID(
216  $resource->getStorageID() === '' ? $this->primary_storage_handler->getID() : $resource->getStorageID()
217  );
218 
219  return $resource;
220  }
populateRevisionInfo(Revision $revision, InfoResolver $info_resolver)
deleteRevision(StorableResource $resource, Revision $revision)
+ Here is the call graph for this function:

◆ replaceWithUpload()

ILIAS\ResourceStorage\Resource\ResourceBuilder::replaceWithUpload ( StorableResource  $resource,
UploadResult  $result,
InfoResolver  $info_resolver 
)

Definition at line 164 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Resource\StorableResource\addRevision(), ILIAS\ResourceStorage\Resource\ResourceBuilder\deleteRevision(), ILIAS\ResourceStorage\Resource\StorableResource\getAllRevisions(), ILIAS\ResourceStorage\Resource\StorableResource\getStorageID(), ILIAS\ResourceStorage\Resource\ResourceBuilder\populateRevisionInfo(), and ILIAS\ResourceStorage\Resource\StorableResource\setStorageID().

168  : StorableResource {
169  $revision = $this->revision_repository->blankFromUpload($info_resolver, $resource, $result);
170  $revision = $this->populateRevisionInfo($revision, $info_resolver);
171 
172  foreach ($resource->getAllRevisions() as $existing_revision) {
173  $this->deleteRevision($resource, $existing_revision);
174  }
175 
176  $resource->addRevision($revision);
177  $resource->setStorageID(
178  $resource->getStorageID() === '' ? $this->primary_storage_handler->getID() : $resource->getStorageID()
179  );
180 
181  return $resource;
182  }
populateRevisionInfo(Revision $revision, InfoResolver $info_resolver)
deleteRevision(StorableResource $resource, Revision $revision)
+ Here is the call graph for this function:

◆ store()

ILIAS\ResourceStorage\Resource\ResourceBuilder::store ( StorableResource  $resource)

after you have modified a resource, you can store it here

Exceptions

Definition at line 263 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Resource\StorableResource\getAllRevisions(), ILIAS\ResourceStorage\Resource\StorableResource\getIdentification(), ILIAS\ResourceStorage\Resource\StorableResource\getStakeholders(), and ILIAS\ResourceStorage\Resource\ResourceBuilder\storeRevision().

Referenced by ILIAS\ResourceStorage\Resource\ResourceBuilder\clone(), and ILIAS\ResourceStorage\Resource\ResourceBuilder\removeRevision().

263  : void
264  {
265  foreach ($resource->getAllRevisions() as $revision) {
266  $this->file_name_policy->check($revision->getInformation()->getSuffix());
267  }
268 
269  $r = $this->lock_handler->lockTables(
270  array_merge(
271  $this->resource_repository->getNamesForLocking(),
272  $this->revision_repository->getNamesForLocking(),
273  $this->information_repository->getNamesForLocking(),
274  $this->stakeholder_repository->getNamesForLocking()
275  ),
276  function () use ($resource): void {
277  $this->resource_repository->store($resource);
278 
279  foreach ($resource->getAllRevisions() as $revision) {
280  $this->storeRevision($revision);
281  }
282 
283  foreach ($resource->getStakeholders() as $stakeholder) {
284  $this->stakeholder_repository->register($resource->getIdentification(), $stakeholder);
285  }
286  }
287  );
288 
289  $r->runAndUnlock();
290  }
storeRevision(Revision $revision)
Store one Revision
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ storeRevision()

ILIAS\ResourceStorage\Resource\ResourceBuilder::storeRevision ( Revision  $revision)

Store one Revision

Exceptions

Definition at line 335 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Revision\Revision\getInformation().

Referenced by ILIAS\ResourceStorage\Resource\ResourceBuilder\store().

335  : void
336  {
337  if ($revision instanceof UploadedFileRevision) {
338  // check policies
339  $this->file_name_policy->check($revision->getInformation()->getSuffix());
340  $this->primary_storage_handler->storeUpload($revision);
341  }
342  if ($revision instanceof FileStreamRevision) {
343  $this->primary_storage_handler->storeStream($revision);
344  }
345  if ($revision instanceof CloneRevision) {
346  $this->primary_storage_handler->cloneRevision($revision);
347  }
348  $this->revision_repository->store($revision);
349  $this->information_repository->store($revision->getInformation(), $revision);
350  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Field Documentation

◆ $file_name_policy

ILIAS ResourceStorage Policy FileNamePolicy ILIAS\ResourceStorage\Resource\ResourceBuilder::$file_name_policy
protected

Definition at line 73 of file ResourceBuilder.php.

◆ $information_repository

ILIAS ResourceStorage Information Repository InformationRepository ILIAS\ResourceStorage\Resource\ResourceBuilder::$information_repository
private

Definition at line 55 of file ResourceBuilder.php.

◆ $lock_handler

LockHandler ILIAS\ResourceStorage\Resource\ResourceBuilder::$lock_handler
private

◆ $primary_storage_handler

ILIAS ResourceStorage StorageHandler StorageHandler ILIAS\ResourceStorage\Resource\ResourceBuilder::$primary_storage_handler
protected

Definition at line 74 of file ResourceBuilder.php.

◆ $resource_cache

array ILIAS\ResourceStorage\Resource\ResourceBuilder::$resource_cache = []
protected

Definition at line 72 of file ResourceBuilder.php.

◆ $resource_repository

ILIAS ResourceStorage Resource Repository ResourceRepository ILIAS\ResourceStorage\Resource\ResourceBuilder::$resource_repository
private

Definition at line 59 of file ResourceBuilder.php.

◆ $revision_repository

ILIAS ResourceStorage Revision Repository RevisionRepository ILIAS\ResourceStorage\Resource\ResourceBuilder::$revision_repository
private

Definition at line 63 of file ResourceBuilder.php.

◆ $stakeholder_repository

ILIAS ResourceStorage Stakeholder Repository StakeholderRepository ILIAS\ResourceStorage\Resource\ResourceBuilder::$stakeholder_repository
private

Definition at line 67 of file ResourceBuilder.php.

◆ $storage_handler_factory

StorageHandlerFactory ILIAS\ResourceStorage\Resource\ResourceBuilder::$storage_handler_factory
private

◆ $stream_access

StreamAccess ILIAS\ResourceStorage\Resource\ResourceBuilder::$stream_access
private

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