ILIAS  release_10 Revision v10.1-43-ga1241a92c2f
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, ResourceType $type=ResourceType::SINGLE_FILE)
 
 newFromStream (FileStream $stream, InfoResolver $info_resolver, bool $keep_original=false, ResourceType $type=ResourceType::SINGLE_FILE)
 
 newBlank (ResourceType $type=ResourceType::SINGLE_FILE)
 
 append (StorableResource $resource, UploadResult $result, InfoResolver $info_resolver, RevisionStatus $status)
 
 replaceWithUpload (StorableResource $resource, UploadResult $result, InfoResolver $info_resolver)
 
 appendFromStream (StorableResource $resource, FileStream $stream, InfoResolver $info_resolver, RevisionStatus $status, 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, ?StorableResource $resource=null)
 Store one Revision More...
 
 publish (StorableResource $resource)
 
 unpublish (StorableResource $resource)
 
 extractStream (Revision $revision)
 
 remove (StorableResource $resource, ResourceStakeholder $stakeholder=null)
 Remove a complete revision. More...
 
 removeRevision (StorableResource $resource, int $revision_number)
 
 createDirectoryInsideContainer (StorableContainerResource $container, string $path_inside_container,)
 
 removePathInsideContainer (StorableContainerResource $container, string $path_inside_container,)
 
 addUploadToContainer (StorableContainerResource $container, UploadResult $result, string $parent_path_inside_container,)
 
 addStreamToContainer (StorableContainerResource $container, FileStream $stream, string $path_inside_container,)
 

Protected Attributes

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

Private Member Functions

 buildDraftReplacementRevision (StorableResource $resource, Revision $new_revision, InfoResolver $info_resolver)
 
 ensurePathInZIP (\ZipArchive $zip, string $path, bool $is_file)
 
 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
 
bool $auto_migrate = true
 

Detailed Description

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 87 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().

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

Member Function Documentation

◆ addStreamToContainer()

ILIAS\ResourceStorage\Resource\ResourceBuilder::addStreamToContainer ( StorableContainerResource  $container,
FileStream  $stream,
string  $path_inside_container 
)

Definition at line 708 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Resource\ResourceBuilder\ensurePathInZIP(), ILIAS\ResourceStorage\Resource\ResourceBuilder\extractStream(), ILIAS\ResourceStorage\Resource\AbstractStorableResource\getCurrentRevisionIncludingDraft(), and ILIAS\ResourceStorage\Resource\ResourceBuilder\storeRevision().

712  : bool {
713  $revision = $container->getCurrentRevisionIncludingDraft();
714  $revision_stream = $this->extractStream($revision);
715 
716  try {
717  $zip = new \ZipArchive();
718  $zip->open($revision_stream->getMetadata()['uri']);
719 
720  $path_inside_container = $this->ensurePathInZIP($zip, $path_inside_container, true);
721 
722  $return = $zip->addFromString(
723  $path_inside_container,
724  (string) $stream
725  );
726  $zip->close();
727 
728  // cleanup revision and flavours
729  $this->storage_handler_factory->getHandlerForRevision($revision)->clearFlavours($revision);
730  $revision->getInformation()->setSize(filesize($revision_stream->getMetadata()['uri']));
731  $this->storeRevision($revision);
732 
733  return $return;
734  } catch (\Throwable $exception) {
735  return false;
736  }
737 
738  return true;
739  }
storeRevision(Revision $revision, ?StorableResource $resource=null)
Store one Revision
$container
Definition: wac.php:13
ensurePathInZIP(\ZipArchive $zip, string $path, bool $is_file)
+ Here is the call graph for this function:

◆ addUploadToContainer()

ILIAS\ResourceStorage\Resource\ResourceBuilder::addUploadToContainer ( StorableContainerResource  $container,
UploadResult  $result,
string  $parent_path_inside_container 
)

Definition at line 672 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Resource\ResourceBuilder\ensurePathInZIP(), ILIAS\ResourceStorage\Resource\ResourceBuilder\extractStream(), ILIAS\ResourceStorage\Resource\AbstractStorableResource\getCurrentRevisionIncludingDraft(), ILIAS\FileUpload\DTO\UploadResult\getName(), ILIAS\FileUpload\DTO\UploadResult\getPath(), and ILIAS\ResourceStorage\Resource\ResourceBuilder\storeRevision().

676  : bool {
677  $revision = $container->getCurrentRevisionIncludingDraft();
678  $stream = $this->extractStream($revision);
679 
680  // create directory inside ZipArchive
681  try {
682  $zip = new \ZipArchive();
683  $zip->open($stream->getMetadata()['uri']);
684 
685  $parent_path_inside_container = $this->ensurePathInZIP($zip, $parent_path_inside_container, false);
686 
687  $path_inside_zip = rtrim($parent_path_inside_container, '/') . '/' . $result->getName();
688 
689  $return = $zip->addFile(
690  $result->getPath(),
691  $path_inside_zip
692  );
693  $zip->close();
694 
695  // cleanup revision and flavours
696  $this->storage_handler_factory->getHandlerForRevision($revision)->clearFlavours($revision);
697  $revision->getInformation()->setSize(filesize($stream->getMetadata()['uri']));
698  $this->storeRevision($revision);
699 
700  return $return;
701  } catch (\Throwable $exception) {
702  return false;
703  }
704 
705  return true;
706  }
storeRevision(Revision $revision, ?StorableResource $resource=null)
Store one Revision
$container
Definition: wac.php:13
ensurePathInZIP(\ZipArchive $zip, string $path, bool $is_file)
+ Here is the call graph for this function:

◆ append()

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

Definition at line 160 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Resource\StorableResource\addRevision(), ILIAS\ResourceStorage\Resource\ResourceBuilder\buildDraftReplacementRevision(), ILIAS\ResourceStorage\Revision\DRAFT, ILIAS\ResourceStorage\Resource\StorableResource\getCurrentRevisionIncludingDraft(), ILIAS\ResourceStorage\Resource\StorableResource\getStorageID(), ILIAS\ResourceStorage\Resource\ResourceBuilder\populateRevisionInfo(), ILIAS\ResourceStorage\Resource\StorableResource\replaceRevision(), and ILIAS\ResourceStorage\Resource\StorableResource\setStorageID().

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

165  : StorableResource {
166  if (
167  $status !== RevisionStatus::DRAFT
168  && $resource->getCurrentRevisionIncludingDraft()->getStatus() === RevisionStatus::DRAFT) {
169  throw new \LogicException(
170  'You can not replace a draft revision with a published, you must publish the current revision first'
171  );
172  }
173 
174  $new_revision = $this->revision_repository->blankFromUpload($info_resolver, $resource, $result, $status);
175 
176  if ($resource->getCurrentRevisionIncludingDraft()->getStatus() === RevisionStatus::DRAFT) {
177  $clone_revision = $this->buildDraftReplacementRevision($resource, $new_revision, $info_resolver);
178  $resource->replaceRevision($clone_revision);
179  } else {
180  $new_revision = $this->populateRevisionInfo($new_revision, $info_resolver);
181  $resource->addRevision($new_revision);
182  }
183 
184  $resource->setStorageID(
185  $resource->getStorageID() === '' ? $this->primary_storage_handler->getID() : $resource->getStorageID()
186  );
187 
188  return $resource;
189  }
populateRevisionInfo(Revision $revision, InfoResolver $info_resolver)
buildDraftReplacementRevision(StorableResource $resource, Revision $new_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 290 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Resource\StorableResource\addRevision(), ILIAS\ResourceStorage\Revision\DRAFT, ILIAS\ResourceStorage\Resource\StorableResource\getCurrentRevisionIncludingDraft(), 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().

293  : StorableResource {
294  if ($resource->getCurrentRevisionIncludingDraft()->getStatus() === RevisionStatus::DRAFT) {
295  throw new \LogicException('You can not replace a draft revision, you must publish it first');
296  }
297  $existing_revision = $resource->getSpecificRevision($revision_number);
298  if ($existing_revision instanceof FileRevision) {
299  $info_resolver = new ClonedRevisionInfoResolver(
300  $resource->getMaxRevision(false) + 1,
301  $existing_revision
302  );
303 
304  $cloned_revision = $this->revision_repository->blankFromClone(
305  $info_resolver,
306  $resource,
307  $existing_revision
308  );
309 
310  $this->populateRevisionInfo($cloned_revision, $info_resolver);
311 
312  $resource->addRevision($cloned_revision);
313  $resource->setStorageID(
314  $resource->getStorageID() === '' ? $this->primary_storage_handler->getID() : $resource->getStorageID()
315  );
316  return $resource;
317  }
318  return $resource;
319  }
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,
RevisionStatus  $status,
bool  $keep_original = false 
)

Definition at line 222 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Resource\StorableResource\addRevision(), ILIAS\ResourceStorage\Resource\ResourceBuilder\buildDraftReplacementRevision(), ILIAS\ResourceStorage\Revision\DRAFT, ILIAS\ResourceStorage\Resource\StorableResource\getCurrentRevisionIncludingDraft(), ILIAS\ResourceStorage\Resource\StorableResource\getStorageID(), ILIAS\ResourceStorage\Resource\ResourceBuilder\populateRevisionInfo(), ILIAS\ResourceStorage\Resource\StorableResource\replaceRevision(), and ILIAS\ResourceStorage\Resource\StorableResource\setStorageID().

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

228  : StorableResource {
229  if (
230  $status !== RevisionStatus::DRAFT
231  && $resource->getCurrentRevisionIncludingDraft()->getStatus() === RevisionStatus::DRAFT) {
232  throw new \LogicException(
233  'You can not replace a draft revision with a published, you must publish the current revision first'
234  );
235  }
236 
237  $new_revision = $this->revision_repository->blankFromStream(
238  $info_resolver,
239  $resource,
240  $stream,
241  $status,
242  $keep_original
243  );
244 
245  if ($resource->getCurrentRevisionIncludingDraft()->getStatus() === RevisionStatus::DRAFT) {
246  $clone_revision = $this->buildDraftReplacementRevision($resource, $new_revision, $info_resolver);
247  $resource->replaceRevision($clone_revision);
248  } else {
249  $new_revision = $this->populateRevisionInfo($new_revision, $info_resolver);
250  $resource->addRevision($new_revision);
251  }
252 
253  $resource->setStorageID(
254  $resource->getStorageID() === '' ? $this->primary_storage_handler->getID() : $resource->getStorageID()
255  );
256 
257  return $resource;
258  }
populateRevisionInfo(Revision $revision, InfoResolver $info_resolver)
buildDraftReplacementRevision(StorableResource $resource, Revision $new_revision, InfoResolver $info_resolver)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ buildDraftReplacementRevision()

ILIAS\ResourceStorage\Resource\ResourceBuilder::buildDraftReplacementRevision ( StorableResource  $resource,
Revision  $new_revision,
InfoResolver  $info_resolver 
)
private

Definition at line 321 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Revision\DRAFT, ILIAS\ResourceStorage\Resource\ResourceBuilder\extractStream(), ILIAS\ResourceStorage\Resource\StorableResource\getCurrentRevisionIncludingDraft(), ILIAS\ResourceStorage\Resource\StorableResource\getIdentification(), ILIAS\ResourceStorage\Resource\ResourceBuilder\populateRevisionInfo(), ILIAS\ResourceStorage\Revision\BaseRevision\setStatus(), and ILIAS\ResourceStorage\Revision\StreamReplacementRevision\setVersionNumber().

Referenced by ILIAS\ResourceStorage\Resource\ResourceBuilder\append(), and ILIAS\ResourceStorage\Resource\ResourceBuilder\appendFromStream().

325  : Revision {
326  $current_revision = $resource->getCurrentRevisionIncludingDraft();
327  $stream_replacement = new StreamReplacementRevision(
328  $resource->getIdentification(),
329  $this->extractStream($new_revision)
330  );
331  $stream_replacement = $this->populateRevisionInfo($stream_replacement, $info_resolver);
332  $stream_replacement->setVersionNumber($current_revision->getVersionNumber());
333  $stream_replacement->setStatus(RevisionStatus::DRAFT);
334 
335  return $stream_replacement;
336  }
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 382 of file ResourceBuilder.php.

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

382  : StorableResource
383  {
384  $new_resource = $this->newBlank($resource->getType());
385  foreach ($resource->getStakeholders() as $stakeholder) {
386  $stakeholder = clone $stakeholder;
387  $new_resource->addStakeholder($stakeholder);
388  }
389 
390  foreach ($resource->getAllRevisionsIncludingDraft() as $existing_revision) {
391  if (!$existing_revision instanceof FileRevision) {
392  continue;
393  }
394  $info_resolver = new ClonedRevisionInfoResolver(
395  $existing_revision->getVersionNumber(),
396  $existing_revision
397  );
398 
399  $existing_revision = $this->stream_access->populateRevision($existing_revision);
400 
401  $cloned_revision = new FileStreamRevision(
402  $new_resource->getIdentification(),
403  $existing_revision->maybeStreamResolver()->getStream(),
404  true
405  );
406 
407  $this->populateRevisionInfo($cloned_revision, $info_resolver);
408  $cloned_revision->setVersionNumber($existing_revision->getVersionNumber());
409 
410  $new_resource->addRevision($cloned_revision);
411  }
412  $this->store($new_resource);
413  return $new_resource;
414  }
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
newBlank(ResourceType $type=ResourceType::SINGLE_FILE)
+ Here is the call graph for this function:

◆ createDirectoryInsideContainer()

ILIAS\ResourceStorage\Resource\ResourceBuilder::createDirectoryInsideContainer ( StorableContainerResource  $container,
string  $path_inside_container 
)

Definition at line 569 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Resource\ResourceBuilder\ensurePathInZIP(), ILIAS\ResourceStorage\Resource\ResourceBuilder\extractStream(), ILIAS\ResourceStorage\Resource\AbstractStorableResource\getCurrentRevisionIncludingDraft(), and ILIAS\ResourceStorage\Resource\ResourceBuilder\storeRevision().

572  : bool {
573  $revision = $container->getCurrentRevisionIncludingDraft();
574  $stream = $this->extractStream($revision);
575 
576  // create directory inside ZipArchive
577  try {
578  $zip = new \ZipArchive();
579  $zip->open($stream->getMetadata()['uri']);
580  $path_inside_container = $this->ensurePathInZIP($zip, $path_inside_container, false);
581  $zip->close();
582 
583  // cleanup revision and flavours
584  $this->storage_handler_factory->getHandlerForRevision($revision)->clearFlavours($revision);
585  $revision->getInformation()->setSize(filesize($stream->getMetadata()['uri']));
586  $this->storeRevision($revision);
587 
588  return true;
589  } catch (\Throwable $exception) {
590  return false;
591  }
592  }
storeRevision(Revision $revision, ?StorableResource $resource=null)
Store one Revision
$container
Definition: wac.php:13
ensurePathInZIP(\ZipArchive $zip, string $path, bool $is_file)
+ Here is the call graph for this function:

◆ deleteRevision()

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

Definition at line 741 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Revision\Revision\getInformation(), 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().

741  : void
742  {
743  try {
744  $this->storage_handler_factory->getHandlerForResource($resource)->deleteRevision($revision);
745  } catch (\Throwable $exception) {
746  }
747 
748  $this->information_repository->delete($revision->getInformation(), $revision);
749  $this->revision_repository->delete($revision);
750  $resource->removeRevision($revision);
751  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ensurePathInZIP()

ILIAS\ResourceStorage\Resource\ResourceBuilder::ensurePathInZIP ( \ZipArchive  $zip,
string  $path,
bool  $is_file 
)
private

Definition at line 594 of file ResourceBuilder.php.

References $filename, $parts, and $path.

Referenced by ILIAS\ResourceStorage\Resource\ResourceBuilder\addStreamToContainer(), ILIAS\ResourceStorage\Resource\ResourceBuilder\addUploadToContainer(), and ILIAS\ResourceStorage\Resource\ResourceBuilder\createDirectoryInsideContainer().

594  : string
595  {
596  if ($path === '' || $path === '/') {
597  return $path;
598  }
599 
600  $filename = '';
601  if ($is_file) {
602  $filename = basename($path);
603  $path = dirname($path);
604  }
605 
606  // try to determine if a path inside the zip exists with or without a slash at the beginning
607  // determine root directory of the path using regex
608  $parts = explode('/', $path);
609  $root = array_shift($parts);
610  $root = $root === '' ? array_shift($parts) : $root;
611 
612  // check if the root directory exists without a slash at the beginning
613  if ($zip->locateName($root . '/') !== false) {
614  $root = $root;
615  } elseif ($zip->locateName('/' . $root . '/') !== false) {
616  // check if the root directory exists with a slash at the beginning
617  $root = '/' . $root;
618  } else {
619  // if the root directory does not exist, create it
620  $zip->addEmptyDir($root);
621  }
622 
623  $path_inside_container = $root;
624  foreach ($parts as $part) {
625  $path_inside_container .= '/' . $part;
626  if ($zip->locateName($path_inside_container . '/') === false) {
627  $zip->addEmptyDir($path_inside_container . '/');
628  }
629  }
630 
631  return rtrim($path_inside_container, '/') . '/' . $filename;
632  }
if($clientAssertionType !='urn:ietf:params:oauth:client-assertion-type:jwt-bearer'|| $grantType !='client_credentials') $parts
Definition: ltitoken.php:61
$path
Definition: ltiservices.php:30
$filename
Definition: buildRTE.php:78
+ Here is the caller graph for this function:

◆ extractStream()

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

Definition at line 505 of file ResourceBuilder.php.

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

Referenced by ILIAS\ResourceStorage\Resource\ResourceBuilder\addStreamToContainer(), ILIAS\ResourceStorage\Resource\ResourceBuilder\addUploadToContainer(), ILIAS\ResourceStorage\Resource\ResourceBuilder\buildDraftReplacementRevision(), ILIAS\ResourceStorage\Resource\ResourceBuilder\createDirectoryInsideContainer(), and ILIAS\ResourceStorage\Resource\ResourceBuilder\removePathInsideContainer().

505  : FileStream
506  {
507  switch (true) {
508  case $revision instanceof FileStreamRevision:
509  return Streams::ofReattachableResource($revision->getStream()->detach());
510  case $revision instanceof UploadedFileRevision:
511  return Streams::ofReattachableResource(fopen($revision->getUpload()->getPath(), 'rb'));
512  case $revision instanceof CloneRevision:
513  return $revision->getRevisionToClone()->getStream();
514  case $revision instanceof FileRevision:
515  if ($revision->getStorageID() !== '') {
516  return $this->storage_handler_factory->getHandlerForRevision(
517  $revision
518  )->getStream($revision);
519  }
520 
521  return $this->storage_handler_factory->getHandlerForResource(
522  $this->get($revision->getIdentification())
523  )->getStream($revision);
524  default:
525  throw new \LogicException('This revision type is not supported');
526  }
527  }
static ofReattachableResource($resource)
Definition: Streams.php:74
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ has()

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

check if a resource exists

Definition at line 341 of file ResourceBuilder.php.

341  : bool
342  {
343  return $this->resource_repository->has($identification);
344  }

◆ new()

ILIAS\ResourceStorage\Resource\ResourceBuilder::new ( UploadResult  $result,
InfoResolver  $info_resolver,
ResourceType  $type = ResourceType::SINGLE_FILE 
)

Definition at line 112 of file ResourceBuilder.php.

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

116  : StorableResource {
117  $resource = $this->resource_repository->blank(
118  $this->primary_storage_handler->getIdentificationGenerator()->getUniqueResourceIdentification(),
119  $type
120  );
121 
122  return $this->append($resource, $result, $info_resolver, RevisionStatus::PUBLISHED);
123  }
append(StorableResource $resource, UploadResult $result, InfoResolver $info_resolver, RevisionStatus $status)
+ Here is the call graph for this function:

◆ newBlank()

ILIAS\ResourceStorage\Resource\ResourceBuilder::newBlank ( ResourceType  $type = ResourceType::SINGLE_FILE)

Definition at line 145 of file ResourceBuilder.php.

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

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

145  : StorableResource
146  {
147  $resource = $this->resource_repository->blank(
148  $this->primary_storage_handler->getIdentificationGenerator()->getUniqueResourceIdentification(),
149  $type
150  );
151  $resource->setStorageID($this->primary_storage_handler->getID());
152 
153  return $resource;
154  }
+ 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,
ResourceType  $type = ResourceType::SINGLE_FILE 
)

Definition at line 125 of file ResourceBuilder.php.

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

130  : StorableResource {
131  $resource = $this->resource_repository->blank(
132  $this->primary_storage_handler->getIdentificationGenerator()->getUniqueResourceIdentification(),
133  $type
134  );
135 
136  return $this->appendFromStream(
137  $resource,
138  $stream,
139  $info_resolver,
140  RevisionStatus::PUBLISHED,
141  $keep_original
142  );
143  }
appendFromStream(StorableResource $resource, FileStream $stream, InfoResolver $info_resolver, RevisionStatus $status, bool $keep_original=false,)
+ Here is the call graph for this function:

◆ populateNakedResourceWithRevisionsAndStakeholders()

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

Definition at line 753 of file ResourceBuilder.php.

References 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\storeRevision().

753  : StorableResource
754  {
755  $revisions = $this->revision_repository->get($resource);
756  $resource->setRevisions($revisions);
757 
758  foreach ($revisions->getAll(true) as $i => $revision) {
759  $information = $this->information_repository->get($revision);
760  $revision->setInformation($information);
761  $revision->setStorageID($resource->getStorageID());
762  // $revisions->replaceSingleRevision($this->stream_access->populateRevision($revision)); // currently we do not need populating the stream every time, we will do that in consumers only
763  }
764 
765  foreach ($this->stakeholder_repository->getStakeholders($resource->getIdentification()) as $s) {
766  $resource->addStakeholder($s);
767  }
768 
769  return $resource;
770  }
+ 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 772 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\buildDraftReplacementRevision(), ILIAS\ResourceStorage\Resource\ResourceBuilder\clone(), ILIAS\ResourceStorage\Resource\ResourceBuilder\replaceWithStream(), and ILIAS\ResourceStorage\Resource\ResourceBuilder\replaceWithUpload().

772  : Revision
773  {
774  $info = $revision->getInformation();
775 
776  $info->setTitle($this->secure($info_resolver->getFileName()));
777  $info->setMimeType($info_resolver->getMimeType());
778  $info->setSuffix($this->secure($info_resolver->getSuffix()));
779  $info->setSize($info_resolver->getSize());
780  $info->setCreationDate($info_resolver->getCreationDate());
781 
782  $revision->setInformation($info);
783  $revision->setTitle($this->secure($info_resolver->getRevisionTitle()));
784  $revision->setOwnerId($info_resolver->getOwnerId());
785 
786  return $revision;
787  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ publish()

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

Definition at line 483 of file ResourceBuilder.php.

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

483  : bool
484  {
485  $revision = $resource->getCurrentRevisionIncludingDraft();
486  if ($revision->getStatus() === RevisionStatus::PUBLISHED) {
487  return false;
488  }
489  $revision->setStatus(RevisionStatus::PUBLISHED);
490  $this->store($resource);
491  return true;
492  }
store(StorableResource $resource)
after you have modified a resource, you can store it here
+ Here is the call graph for this function:

◆ remove()

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

Remove 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 534 of file ResourceBuilder.php.

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

534  : bool
535  {
536  $sucessful = true;
537  if ($stakeholder instanceof ResourceStakeholder) {
538  $this->stakeholder_repository->deregister($resource->getIdentification(), $stakeholder);
539  $sucessful = $stakeholder->resourceHasBeenDeleted($resource->getIdentification());
540  $resource->removeStakeholder($stakeholder);
541  if ($resource->getStakeholders() !== []) {
542  return $sucessful;
543  }
544  }
545  foreach ($resource->getStakeholders() as $s) {
546  $sucessful = $s->resourceHasBeenDeleted($resource->getIdentification()) && $sucessful;
547  }
548 
549  foreach ($resource->getAllRevisionsIncludingDraft() as $revision) {
550  $this->deleteRevision($resource, $revision);
551  }
552 
553  $this->storage_handler_factory->getHandlerForResource($resource)->deleteResource($resource);
554  $this->resource_repository->delete($resource);
555 
556  return $sucessful;
557  }
deleteRevision(StorableResource $resource, Revision $revision)
+ Here is the call graph for this function:

◆ removePathInsideContainer()

ILIAS\ResourceStorage\Resource\ResourceBuilder::removePathInsideContainer ( StorableContainerResource  $container,
string  $path_inside_container 
)

Definition at line 634 of file ResourceBuilder.php.

References $path, ILIAS\ResourceStorage\Resource\ResourceBuilder\extractStream(), ILIAS\ResourceStorage\Resource\AbstractStorableResource\getCurrentRevisionIncludingDraft(), and ILIAS\ResourceStorage\Resource\ResourceBuilder\storeRevision().

637  : bool {
638  $revision = $container->getCurrentRevisionIncludingDraft();
639  $stream = $this->extractStream($revision);
640 
641  // create directory inside ZipArchive
642  try {
643  $zip = new \ZipArchive();
644  $zip->open($stream->getMetadata()['uri']);
645 
646  $return = $zip->deleteName($path_inside_container);
647  // remove all files inside the directory
648  for ($i = 0; $i < $zip->numFiles; $i++) {
649  $path = $zip->getNameIndex($i);
650  if ($path === false) {
651  continue;
652  }
653  if (strpos($path, $path_inside_container) === 0) {
654  $zip->deleteIndex($i);
655  }
656  }
657 
658  $zip->close();
659 
660  // cleanup revision and flavours
661  $this->storage_handler_factory->getHandlerForRevision($revision)->clearFlavours($revision);
662  $revision->getInformation()->setSize(filesize($stream->getMetadata()['uri']));
663  $this->storeRevision($revision);
664 
665  return $return;
666  } catch (\Throwable $exception) {
667  $this->storage_handler_factory->getHandlerForRevision($revision)->clearFlavours($revision);
668  return false;
669  }
670  }
storeRevision(Revision $revision, ?StorableResource $resource=null)
Store one Revision
$path
Definition: ltiservices.php:30
$container
Definition: wac.php:13
+ Here is the call graph for this function:

◆ removeRevision()

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

Definition at line 559 of file ResourceBuilder.php.

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

559  : void
560  {
561  $reveision_to_delete = $resource->getSpecificRevision($revision_number);
562  if ($reveision_to_delete !== null) {
563  $this->deleteRevision($resource, $reveision_to_delete);
564  }
565  $this->store($resource);
566  }
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 260 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Resource\StorableResource\addRevision(), ILIAS\ResourceStorage\Resource\ResourceBuilder\deleteRevision(), ILIAS\ResourceStorage\Revision\DRAFT, ILIAS\ResourceStorage\Resource\StorableResource\getAllRevisionsIncludingDraft(), ILIAS\ResourceStorage\Resource\StorableResource\getCurrentRevisionIncludingDraft(), ILIAS\ResourceStorage\Resource\StorableResource\getStorageID(), ILIAS\ResourceStorage\Resource\ResourceBuilder\populateRevisionInfo(), and ILIAS\ResourceStorage\Resource\StorableResource\setStorageID().

265  : StorableResource {
266  if ($resource->getCurrentRevisionIncludingDraft()->getStatus() === RevisionStatus::DRAFT) {
267  throw new \LogicException('You can not replace a draft revision, you must publish it first');
268  }
269  $revision = $this->revision_repository->blankFromStream(
270  $info_resolver,
271  $resource,
272  $stream,
273  RevisionStatus::PUBLISHED,
274  $keep_original
275  );
276  $revision = $this->populateRevisionInfo($revision, $info_resolver);
277 
278  foreach ($resource->getAllRevisionsIncludingDraft() as $existing_revision) {
279  $this->deleteRevision($resource, $existing_revision);
280  }
281 
282  $resource->addRevision($revision);
283  $resource->setStorageID(
284  $resource->getStorageID() === '' ? $this->primary_storage_handler->getID() : $resource->getStorageID()
285  );
286 
287  return $resource;
288  }
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 194 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Resource\StorableResource\addRevision(), ILIAS\ResourceStorage\Resource\ResourceBuilder\deleteRevision(), ILIAS\ResourceStorage\Revision\DRAFT, ILIAS\ResourceStorage\Resource\StorableResource\getAllRevisionsIncludingDraft(), ILIAS\ResourceStorage\Resource\StorableResource\getCurrentRevisionIncludingDraft(), ILIAS\ResourceStorage\Resource\StorableResource\getStorageID(), ILIAS\ResourceStorage\Resource\ResourceBuilder\populateRevisionInfo(), and ILIAS\ResourceStorage\Resource\StorableResource\setStorageID().

198  : StorableResource {
199  if ($resource->getCurrentRevisionIncludingDraft()->getStatus() === RevisionStatus::DRAFT) {
200  throw new \LogicException('You can not replace a draft revision, you must publish it first');
201  }
202  $revision = $this->revision_repository->blankFromUpload(
203  $info_resolver,
204  $resource,
205  $result,
206  RevisionStatus::PUBLISHED
207  );
208  $revision = $this->populateRevisionInfo($revision, $info_resolver);
209 
210  foreach ($resource->getAllRevisionsIncludingDraft() 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:

◆ store()

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

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

Exceptions

Definition at line 350 of file ResourceBuilder.php.

References $r, ILIAS\ResourceStorage\Resource\StorableResource\getAllRevisionsIncludingDraft(), ILIAS\ResourceStorage\Resource\StorableResource\getIdentification(), ILIAS\ResourceStorage\Resource\StorableResource\getStakeholders(), and ILIAS\ResourceStorage\Resource\ResourceBuilder\storeRevision().

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

350  : void
351  {
352  foreach ($resource->getAllRevisionsIncludingDraft() as $revision) {
353  $this->file_name_policy->check($revision->getInformation()->getSuffix());
354  }
355 
356  $r = $this->lock_handler->lockTables(
357  array_merge(
358  $this->resource_repository->getNamesForLocking(),
359  $this->revision_repository->getNamesForLocking(),
360  $this->information_repository->getNamesForLocking(),
361  $this->stakeholder_repository->getNamesForLocking()
362  ),
363  function () use ($resource): void {
364  $this->resource_repository->store($resource);
365 
366  foreach ($resource->getAllRevisionsIncludingDraft() as $revision) {
367  $this->storeRevision($revision, $resource);
368  }
369 
370  foreach ($resource->getStakeholders() as $stakeholder) {
371  $this->stakeholder_repository->register($resource->getIdentification(), $stakeholder);
372  }
373  }
374  );
375 
376  $r->runAndUnlock();
377  }
storeRevision(Revision $revision, ?StorableResource $resource=null)
Store one Revision
$r
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ storeRevision()

ILIAS\ResourceStorage\Resource\ResourceBuilder::storeRevision ( Revision  $revision,
?StorableResource  $resource = null 
)

Store one Revision

Exceptions

Definition at line 420 of file ResourceBuilder.php.

References $DIC, InitResourceStorage\D_MIGRATOR, ILIAS\ResourceStorage\Revision\Revision\getIdentification(), ILIAS\ResourceStorage\Revision\Revision\getInformation(), ILIAS\ResourceStorage\Revision\Revision\getOwnerId(), ILIAS\ResourceStorage\Revision\Revision\getStatus(), ILIAS\ResourceStorage\Revision\Revision\getStorageID(), ILIAS\ResourceStorage\Revision\Revision\getTitle(), ILIAS\ResourceStorage\Revision\Revision\getVersionNumber(), ILIAS\ResourceStorage\Resource\ResourceBuilder\populateNakedResourceWithRevisionsAndStakeholders(), and ILIAS\ResourceStorage\Revision\FileRevision\setVersionNumber().

Referenced by ILIAS\ResourceStorage\Resource\ResourceBuilder\addStreamToContainer(), ILIAS\ResourceStorage\Resource\ResourceBuilder\addUploadToContainer(), ILIAS\ResourceStorage\Resource\ResourceBuilder\createDirectoryInsideContainer(), ILIAS\ResourceStorage\Resource\ResourceBuilder\removePathInsideContainer(), and ILIAS\ResourceStorage\Resource\ResourceBuilder\store().

420  : void
421  {
422  $storage_handler = empty($revision->getStorageID())
423  ? $this->primary_storage_handler
424  : $this->storage_handler_factory->getHandlerForRevision($revision);
425 
426  if ($revision instanceof UploadedFileRevision) {
427  // check policies
428  $this->file_name_policy->check($revision->getInformation()->getSuffix());
429  $storage_handler->storeUpload($revision);
430  }
431  if ($revision instanceof FileStreamRevision) {
432  $storage_handler->storeStream($revision);
433  }
434  if ($revision instanceof CloneRevision) {
435  $storage_handler->cloneRevision($revision);
436  }
437  if ($revision instanceof StreamReplacementRevision) {
438  $storage_handler->streamReplacement($revision);
439  }
440  $this->revision_repository->store($revision);
441  $this->information_repository->store($revision->getInformation(), $revision);
442 
443  // we replace the revision with the populated one
444  if ($resource !== null) {
445  $replace_revision = new FileRevision($revision->getIdentification());
446  $replace_revision->setVersionNumber($revision->getVersionNumber());
447  $replace_revision->setOwnerId($revision->getOwnerId());
448  $replace_revision->setTitle($revision->getTitle());
449  $replace_revision->setStatus($revision->getStatus());
450  $replace_revision->setInformation($revision->getInformation());
451  $replace_revision->setStorageID($revision->getStorageID());
452 
453  $resource->replaceRevision($replace_revision);
454  }
455  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ unpublish()

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

Definition at line 494 of file ResourceBuilder.php.

References ILIAS\ResourceStorage\Revision\DRAFT, ILIAS\ResourceStorage\Resource\StorableResource\getCurrentRevisionIncludingDraft(), and ILIAS\ResourceStorage\Resource\ResourceBuilder\store().

494  : bool
495  {
496  $revision = $resource->getCurrentRevisionIncludingDraft();
497  if ($revision->getStatus() === RevisionStatus::DRAFT) {
498  return false;
499  }
500  $revision->setStatus(RevisionStatus::DRAFT);
501  $this->store($resource);
502  return true;
503  }
store(StorableResource $resource)
after you have modified a resource, you can store it here
+ Here is the call graph for this function:

Field Documentation

◆ $auto_migrate

bool ILIAS\ResourceStorage\Resource\ResourceBuilder::$auto_migrate = true
private

Definition at line 81 of file ResourceBuilder.php.

◆ $file_name_policy

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

Definition at line 76 of file ResourceBuilder.php.

◆ $information_repository

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

Definition at line 58 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 77 of file ResourceBuilder.php.

◆ $resource_cache

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

Definition at line 75 of file ResourceBuilder.php.

◆ $resource_repository

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

Definition at line 62 of file ResourceBuilder.php.

◆ $revision_repository

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

Definition at line 66 of file ResourceBuilder.php.

◆ $stakeholder_repository

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

Definition at line 70 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: