ILIAS  release_7 Revision v7.30-3-g800a261c036
All Data Structures Namespaces Files Functions Variables Modules Pages
RevisionARRepository.php
Go to the documentation of this file.
1 <?php declare(strict_types=1);
2 
4 
16 
24 {
25 
26  public function blankFromUpload(
27  InfoResolver $info_resolver,
28  StorableResource $resource,
31  $new_version_number = $info_resolver->getNextVersionNumber();
32  $revision = new UploadedFileRevision($resource->getIdentification(), $result);
33  $revision->setVersionNumber($new_version_number);
34 
35  return $revision;
36  }
37 
38  public function blankFromStream(
39  InfoResolver $info_resolver,
40  StorableResource $resource,
41  FileStream $stream,
42  bool $keep_original = false
43  ) : FileStreamRevision {
44  $new_version_number = $info_resolver->getNextVersionNumber();
45  $revision = new FileStreamRevision($resource->getIdentification(), $stream, $keep_original);
46  $revision->setVersionNumber($new_version_number);
47 
48  return $revision;
49  }
50 
51  public function blankFromClone(
52  InfoResolver $info_resolver,
53  StorableResource $resource,
54  FileRevision $revision_to_clone
55  ) : CloneRevision {
56  $new_version_number = $info_resolver->getNextVersionNumber();
57  $revision = new CloneRevision($resource->getIdentification(), $revision_to_clone);
58  $revision->setVersionNumber($new_version_number);
59 
60  return $revision;
61  }
62 
66  public function store(Revision $revision) : void
67  {
68  $ar = $this->getAR($revision);
69  $ar->setVersionNumber($revision->getVersionNumber());
70  $ar->setAvailable($revision->isAvailable());
71  $ar->setOwnerId($revision->getOwnerId());
72  $ar->setTitle($revision->getTitle());
73  $ar->update();
74  }
75 
79  public function get(StorableResource $resource) : RevisionCollection
80  {
81  $collection = new RevisionCollection($resource->getIdentification());
82 
83  foreach (ARRevision::where(['identification' => $resource->getIdentification()->serialize()])->get() as $ar_revision) {
84  $collection->add($this->getRevisionFromAR($ar_revision));
85  }
86 
87  return $collection;
88  }
89 
93  public function delete(Revision $revision) : void
94  {
95  $primary = $this->getInternalID($revision);
96  $ar = ARRevision::find($primary);
97  if ($ar instanceof ARRevision) {
98  $ar->delete();
99  }
100  }
101 
106  private function getInternalID(Revision $revision) : string
107  {
108  return $revision->getIdentification()->serialize() . '_' . (string) $revision->getVersionNumber();
109  }
110 
115  private function getAR(Revision $revision) : ARRevision
116  {
117  $primary = $this->getInternalID($revision);
118  $ar = ARRevision::find($primary);
119  if ($ar === null) {
120  $ar = new ARRevision();
121  $ar->setInternal($primary);
122  $ar->setIdentification($revision->getIdentification()->serialize());
123  $ar->setOwnerId($revision->getOwnerId());
124  $ar->setTitle($revision->getTitle());
125  $ar->setAvailable(true);
126  $ar->create();
127  }
128 
129  return $ar;
130  }
131 
132  private function getRevisionFromAR(ARRevision $AR_revision) : Revision
133  {
134  $r = new FileRevision(new ResourceIdentification($AR_revision->getIdentification()));
135  $r->setVersionNumber($AR_revision->getVersionNumber());
136  $r->setOwnerId($AR_revision->getOwnerId());
137  $r->setTitle($AR_revision->getTitle());
138  if (!$AR_revision->isAvailable()) {
139  $r->setUnavailable();
140  }
141 
142  return $r;
143  }
144 
145  public function getNamesForLocking() : array
146  {
147  return [
148  (new ARRevision())->getConnectorContainerName()
149  ];
150  }
151 
152  public function preload(array $identification_strings) : void
153  {
154  // noting to to
155  }
156 
157  public function populateFromArray(array $data) : void
158  {
159  // noting to to
160  }
161 }
blankFromClone(InfoResolver $info_resolver, StorableResource $resource, FileRevision $revision_to_clone)
$data
Definition: storeScorm.php:23
$result
static where($where, $operator=null)
blankFromUpload(InfoResolver $info_resolver, StorableResource $resource, UploadResult $result)
blankFromStream(InfoResolver $info_resolver, StorableResource $resource, FileStream $stream, bool $keep_original=false)
Interface FileStream The base interface for all filesystem streams.
Definition: FileStream.php:17