ILIAS  trunk Revision v13.0_alpha-52-g21c366bbdd4
class.ObjectsDBRepository.php
Go to the documentation of this file.
1<?php
2
20
24
30{
31 protected const NR_OF_COLORS = 9;
32 protected static $color_number = [];
33 protected static $pool_objects = [];
34 protected static array $raw_data = [];
35 protected static array $pool_loaded = [];
36
37 public function __construct(
38 protected IRSSWrapper $wrapper,
39 protected \ilDBInterface $db
40 ) {
41 }
42
43 public function loadDataOfPool(int $pool_id): void
44 {
45 $db = $this->db;
46
47 if (isset(self::$pool_loaded[$pool_id]) && self::$pool_loaded[$pool_id]) {
48 return;
49 }
50
51 $set = $db->queryF(
52 "SELECT * FROM booking_object " .
53 " WHERE pool_id = %s ORDER BY title ASC, booking_object_id ASC",
54 ["integer"],
55 [$pool_id]
56 );
57 self::$pool_objects[$pool_id] = [];
58 $cnt = 0;
59 while ($rec = $db->fetchAssoc($set)) {
60 self::$raw_data[$rec["booking_object_id"]] = $rec;
61 self::$color_number[$rec["booking_object_id"]] = ($cnt % self::NR_OF_COLORS) + 1;
62 self::$pool_objects[$pool_id][] = $rec;
63 $cnt++;
64 }
65 self::$pool_loaded[$pool_id] = true;
66 }
67
68 public function getNrOfItemsForObject(int $book_obj_id): int
69 {
70 if (!isset(self::$raw_data[$book_obj_id])) {
71 throw new \ilBookingPoolException("Data for booking object $book_obj_id not loaded.");
72 }
73 return (int) self::$raw_data[$book_obj_id]["nr_of_items"];
74 }
75
76 public function getColorNrForObject(int $book_obj_id): int
77 {
78 if (!isset(self::$raw_data[$book_obj_id])) {
79 throw new \ilBookingPoolException("Data for booking object $book_obj_id not loaded.");
80 }
81 return (int) self::$color_number[$book_obj_id];
82 }
83
84 public function getObjectDataForPool(
85 int $pool_id
86 ): array {
87 $this->loadDataOfPool($pool_id);
88 return self::$pool_objects[$pool_id] ?? [];
89 }
90
91 //
92 // Object and booking irss resrouces
93 //
94
95 protected function getObjectInfoRidForBookingObjectId(int $booking_object_id): string
96 {
97 $set = $this->db->queryF(
98 "SELECT obj_info_rid FROM booking_object " .
99 " WHERE booking_object_id = %s ",
100 ["integer"],
101 [$booking_object_id]
102 );
103 $rec = $this->db->fetchAssoc($set);
104 return ($rec["obj_info_rid"] ?? "");
105 }
106
107 public function hasObjectInfo(int $booking_object_id): bool
108 {
109 $rid = $this->getObjectInfoRidForBookingObjectId($booking_object_id);
110 return ($rid !== "");
111 }
112
113 public function deleteObjectInfo(int $booking_object_id, ResourceStakeholder $stakeholder): void
114 {
115 $rid = $this->getObjectInfoRidForBookingObjectId($booking_object_id);
116 if ($rid === '') {
117 return;
118 }
119
120 $this->wrapper->deleteResource($rid, $stakeholder);
121 $this->db->update(
122 'booking_object',
123 ['obj_info_rid' => [ilDBConstants::T_TEXT, '']],
124 ['booking_object_id' => [ilDBConstants::T_INTEGER, $booking_object_id]]
125 );
126 }
127
128 public function getObjectInfoPath(int $booking_object_id): string
129 {
130 $rid = $this->getObjectInfoRidForBookingObjectId($booking_object_id);
131 return $this->wrapper->getResourcePath($rid);
132 }
133
134 public function deliverObjectInfo(int $booking_object_id): void
135 {
136 $rid = $this->getObjectInfoRidForBookingObjectId($booking_object_id);
137 $this->wrapper->deliverFile($rid);
138 }
139
140 public function getObjectInfoFilename(int $booking_object_id): string
141 {
142 $rid = $this->getObjectInfoRidForBookingObjectId($booking_object_id);
143 if ($rid !== "") {
144 $info = $this->wrapper->getResourceInfo($rid);
145 return $info->getTitle();
146 }
147 return "";
148 }
149
150
152 int $booking_object_id,
153 array $file_input,
154 ResourceStakeholder $stakeholder
155 ): string {
156 $rcid = $this->wrapper->importFileFromLegacyUpload($file_input, $stakeholder);
157
158 $this->db->update(
159 'booking_object',
160 [
161 'obj_info_rid' => [ilDBConstants::T_TEXT, $rcid]
162 ],
163 [
164 'booking_object_id' => [ilDBConstants::T_INTEGER, $booking_object_id]
165 ]
166 );
167
168 return $rcid;
169 }
170
171 protected function getBookingInfoRidForBookingObjectId(int $booking_object_id): string
172 {
173 $set = $this->db->queryF(
174 "SELECT book_info_rid FROM booking_object " .
175 " WHERE booking_object_id = %s ",
176 ["integer"],
177 [$booking_object_id]
178 );
179 $rec = $this->db->fetchAssoc($set);
180 return ($rec["book_info_rid"] ?? "");
181 }
182
183 public function hasBookingInfo(int $booking_object_id): bool
184 {
185 $rid = $this->getBookingInfoRidForBookingObjectId($booking_object_id);
186 return ($rid !== "");
187 }
188
189 public function deleteBookingInfo(int $booking_object_id, ResourceStakeholder $stakeholder): void
190 {
191 $rid = $this->getBookingInfoRidForBookingObjectId($booking_object_id);
192 if ($rid === '') {
193 return;
194 }
195
196 $this->wrapper->deleteResource($rid, $stakeholder);
197 $this->db->update(
198 'booking_object',
199 ['book_info_rid' => [ilDBConstants::T_TEXT, '']],
200 ['booking_object_id' => [ilDBConstants::T_INTEGER, $booking_object_id]]
201 );
202 }
203
204 public function deliverBookingInfo(int $booking_object_id): void
205 {
206 $rid = $this->getBookingInfoRidForBookingObjectId($booking_object_id);
207 $this->wrapper->deliverFile($rid);
208 }
209
210 public function getBookingInfoPath(int $booking_object_id): string
211 {
212 $rid = $this->getBookingInfoRidForBookingObjectId($booking_object_id);
213 return $this->wrapper->getResourcePath($rid);
214 }
215
216 public function getBookingInfoFilename(int $booking_object_id): string
217 {
218 $rid = $this->getBookingInfoRidForBookingObjectId($booking_object_id);
219 return $rid !== ''
220 ? $this->wrapper->getResourceInfo($rid)->getTitle()
221 : '';
222 }
223
224
226 int $booking_object_id,
227 array $file_input,
228 ResourceStakeholder $stakeholder
229 ): string {
230 $rcid = $this->wrapper->importFileFromLegacyUpload($file_input, $stakeholder);
231
232 $this->db->update(
233 'booking_object',
234 [
235 'book_info_rid' => [ilDBConstants::T_TEXT, $rcid]
236 ],
237 [
238 'booking_object_id' => [ilDBConstants::T_INTEGER, $booking_object_id]
239 ]
240 );
241
242 return $rcid;
243 }
244
245 public function clone(
246 int $from_id,
247 int $to_id
248 ): void {
249 $from_rid = $this->getObjectInfoRidForBookingObjectId($from_id);
250 $to_rid = $this->wrapper->cloneResource($from_rid);
251 $this->db->update(
252 'booking_object',
253 [
254 'obj_info_rid' => [ilDBConstants::T_TEXT, $to_rid]
255 ],
256 [
257 'booking_object_id' => [ilDBConstants::T_INTEGER, $to_id]
258 ]
259 );
260
261 $from_rid = $this->getBookingInfoRidForBookingObjectId($from_id);
262 $to_rid = $this->wrapper->cloneResource($from_rid);
263 $this->db->update(
264 'booking_object',
265 [
266 'book_info_rid' => [ilDBConstants::T_TEXT, $to_rid]
267 ],
268 [
269 'booking_object_id' => [ilDBConstants::T_INTEGER, $to_id]
270 ]
271 );
272 }
273}
__construct(protected IRSSWrapper $wrapper, protected \ilDBInterface $db)
importBookingInfoFromLegacyUpload(int $booking_object_id, array $file_input, ResourceStakeholder $stakeholder)
deleteObjectInfo(int $booking_object_id, ResourceStakeholder $stakeholder)
importObjectInfoFromLegacyUpload(int $booking_object_id, array $file_input, ResourceStakeholder $stakeholder)
deleteBookingInfo(int $booking_object_id, ResourceStakeholder $stakeholder)
Class ilDBConstants.
$info
Definition: entry_point.php:21
Interface ilDBInterface.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...