ILIAS  release_7 Revision v7.30-3-g800a261c036
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
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}
$result
An exception for terminatinating execution or to throw for unit testing.
blankFromClone(InfoResolver $info_resolver, StorableResource $resource, FileRevision $revision_to_clone)
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:18
$data
Definition: storeScorm.php:23