ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilSCORMResource.php
Go to the documentation of this file.
1<?php
2/*
3 +-----------------------------------------------------------------------------+
4 | ILIAS open source |
5 +-----------------------------------------------------------------------------+
6 | Copyright (c) 1998-2001 ILIAS open source, University of Cologne |
7 | |
8 | This program is free software; you can redistribute it and/or |
9 | modify it under the terms of the GNU General Public License |
10 | as published by the Free Software Foundation; either version 2 |
11 | of the License, or (at your option) any later version. |
12 | |
13 | This program is distributed in the hope that it will be useful, |
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16 | GNU General Public License for more details. |
17 | |
18 | You should have received a copy of the GNU General Public License |
19 | along with this program; if not, write to the Free Software |
20 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
21 +-----------------------------------------------------------------------------+
22*/
23
24require_once("./Modules/ScormAicc/classes/SCORM/class.ilSCORMObject.php");
25require_once("./Modules/ScormAicc/classes/SCORM/class.ilSCORMResourceFile.php");
26require_once("./Modules/ScormAicc/classes/SCORM/class.ilSCORMResourceDependency.php");
27
37{
38 public $import_id;
40 public $scormtype;
41 public $href;
42 public $xml_base;
43 public $files;
45
46
53 public function __construct($a_id = 0)
54 {
55 $this->files = array();
56 $this->dependencies = array();
57 $this->setType("sre");
58 parent::__construct($a_id);
59 }
60
61 public function getImportId()
62 {
63 return $this->import_id;
64 }
65
66 public function setImportId($a_import_id)
67 {
68 $this->import_id = $a_import_id;
69 }
70
71 public function getResourceType()
72 {
74 }
75
76 public function setResourceType($a_type)
77 {
78 $this->resourcetype = $a_type;
79 }
80
81 public function getScormType()
82 {
83 return $this->scormtype;
84 }
85
86 public function setScormType($a_scormtype)
87 {
88 $this->scormtype = $a_scormtype;
89 }
90
91 public function getHRef()
92 {
93 return $this->href;
94 }
95
96 public function setHRef($a_href)
97 {
98 $this->href = $a_href;
99 $this->setTitle($a_href);
100 }
101
102 public function getXmlBase()
103 {
104 return $this->xml_base;
105 }
106
107 public function setXmlBase($a_xml_base)
108 {
109 $this->xml_base = $a_xml_base;
110 }
111
112 public function addFile(&$a_file_obj)
113 {
114 $this->files[] = &$a_file_obj;
115 }
116
117 public function &getFiles()
118 {
119 return $this->files;
120 }
121
122 public function addDependency(&$a_dependency)
123 {
124 $this->dependencies[] = &$a_dependency;
125 }
126
127 public function &getDependencies()
128 {
129 return $this->dependencies;
130 }
131
132 public function read()
133 {
134 global $DIC;
135 $ilDB = $DIC['ilDB'];
136
137 parent::read();
138
139 $obj_set = $ilDB->queryF(
140 'SELECT * FROM sc_resource WHERE obj_id = %s',
141 array('integer'),
142 array($this->getId())
143 );
144 $obj_rec = $ilDB->fetchAssoc($obj_set);
145 $this->setImportId($obj_rec["import_id"]);
146 $this->setResourceType($obj_rec["resourcetype"]);
147 $this->setScormType($obj_rec["scormtype"]);
148 $this->setHRef($obj_rec["href"]);
149 $this->setXmlBase($obj_rec["xml_base"]);
150
151 // read files
152 $file_set = $ilDB->queryF(
153 'SELECT href FROM sc_resource_file WHERE res_id = %s ORDER BY nr',
154 array('integer'),
155 array($this->getId())
156 );
157 while ($file_rec = $ilDB->fetchAssoc($file_set)) {
158 $res_file = new ilSCORMResourceFile();
159 $res_file->setHref($file_rec["href"]);
160 $this->addFile($res_file);
161 }
162 // read dependencies
163
164 $dep_set = $ilDB->queryF(
165 'SELECT identifierref FROM sc_resource_dependen WHERE res_id = %s ORDER BY nr',
166 array('integer'),
167 array($this->getId())
168 );
169 while ($dep_rec = $ilDB->fetchAssoc($dep_set)) {
170 $res_dep = new ilSCORMResourceDependency();
171 $res_dep->setIdentifierRef($dep_rec["identifierref"]);
172 $this->addDependency($res_dep);
173 }
174 }
175
176 public function readByIdRef($a_id_ref, $a_slm_id)
177 {
178 global $DIC;
179 $ilBench = $DIC['ilBench'];
180 $ilDB = $DIC['ilDB'];
181
182 $ilBench->start("SCORMResource", "readByIdRef_Query");
183
184 $id_set = $ilDB->queryF(
185 'SELECT ob.obj_id id FROM sc_resource res, scorm_object ob
186 WHERE ob.obj_id = res.obj_id
187 AND res.import_id = %s
188 AND ob.slm_id = %s',
189 array('text', 'integer'),
190 array($a_id_ref, $a_slm_id)
191 );
192
193 $ilBench->stop("SCORMResource", "readByIdRef_Query");
194
195 if ($id_rec = $ilDB->fetchAssoc($id_set)) {
196 $this->setId($id_rec["id"]);
197 $this->read();
198 }
199 }
200
201 public static function _lookupIdByIdRef($a_id_ref, $a_slm_id)
202 {
203 global $DIC;
204 $ilBench = $DIC['ilBench'];
205 $ilDB = $DIC['ilDB'];
206
207 $id_set = $ilDB->queryF(
208 'SELECT ob.obj_id id FROM sc_resource res, scorm_object ob
209 WHERE ob.obj_id = res.obj_id
210 AND res.import_id = %s
211 AND ob.slm_id = %s',
212 array('text', 'integer'),
213 array($a_id_ref ,$a_slm_id)
214 );
215
216 if ($id_rec = $ilDB->fetchAssoc($id_set)) {
217 return $id_rec["id"];
218 }
219 return 0;
220 }
221
222 public static function _lookupScormType($a_obj_id)
223 {
224 global $DIC;
225 $ilDB = $DIC['ilDB'];
226
227 $st_set = $ilDB->queryF(
228 'SELECT scormtype FROM sc_resource WHERE obj_id = %s',
229 array('integer'),
230 array($a_obj_id)
231 );
232 if ($st_rec = $ilDB->fetchAssoc($st_set)) {
233 return $st_rec["scormtype"];
234 }
235 return "";
236 }
237
238 public function create()
239 {
240 global $DIC;
241 $ilDB = $DIC['ilDB'];
242
243 parent::create();
244
245 $ilDB->manipulateF(
246 '
247 INSERT INTO sc_resource
248 (obj_id, import_id, resourcetype, scormtype, href, xml_base)
249 VALUES(%s, %s, %s, %s, %s, %s)',
250 array('integer','text','text','text','text','text'),
251 array( $this->getId(),
252 $this->getImportId(),
253 $this->getResourceType(),
254 $this->getScormType(),
255 $this->getHref(),
256 $this->getXmlBase()
257 )
258 );
259
260 // save files
261 for ($i = 0; $i < count($this->files); $i++) {
262 $nextId = $ilDB->nextId('sc_resource_file');
263
264 $ilDB->manipulateF(
265 '
266 INSERT INTO sc_resource_file (id,res_id, href, nr)
267 VALUES(%s, %s, %s, %s)',
268 array('integer', 'integer', 'text', 'integer'),
269 array($nextId, $this->getId(), $this->files[$i]->getHref(), ($i + 1))
270 );
271 }
272
273 // save dependencies
274 for ($i = 0; $i < count($this->dependencies); $i++) {
275 $nextId = $ilDB->nextId('sc_resource_dependen');
276
277 $ilDB->manipulateF(
278 '
279 INSERT INTO sc_resource_dependen (id, res_id, identifierref, nr)
280 VALUES(%s, %s, %s, %s)',
281 array('integer', 'integer', 'text', 'integer'),
282 array($nextId, $this->getId(), $this->files[$i]->getHref(), ($i + 1))
283 );
284 }
285 }
286
287 public function update()
288 {
289 global $DIC;
290 $ilDB = $DIC['ilDB'];
291
293
294 $ilDB->manipulateF(
295 '
296 UPDATE sc_resource
297 SET import_id = %s,
298 resourcetype = %s,
299 scormtype = %s,
300 href = %s,
301 xml_base = %s
302 WHERE obj_id = %s',
303 array('text', 'text', 'text', 'text', 'text', 'integer'),
304 array( $this->getImportId(),
305 $this->getResourceType(),
306 $this->getScormType(),
307 $this->getHRef(),
308 $this->getXmlBase(),
309 $this->getId())
310 );
311
312 // save files
313 $ilDB->manipulateF(
314 'DELETE FROM sc_resource_file WHERE res_id = %s',
315 array('integer'),
316 array($this->getId())
317 );
318
319 for ($i = 0; $i < count($this->files); $i++) {
320 $nextId = $ilDB->nextId('sc_resource_file');
321
322 $ilDB->manipulateF(
323 'INSERT INTO sc_resource_file (id, res_id, href, nr)
324 VALUES (%s, %s, %s, %s)',
325 array('integer', 'integer', 'text', 'integer'),
326 array($nextId, $this->getId(), $this->files[$i]->getHref(), ($i + 1))
327 );
328 }
329
330 // save dependencies
331 $ilDB->manipulateF(
332 'DELETE FROM sc_resource_dependen WHERE res_id = %s',
333 array('integer'),
334 array($this->getId())
335 );
336
337 for ($i = 0; $i < count($this->dependencies); $i++) {
338 $nextId = $ilDB->nextId('sc_resource_dependen');
339
340 $ilDB->manipulateF(
341 '
342 INSERT INTO sc_resource_dependen (id, res_id, identifierref, nr) VALUES
343 (%s, %s, %s, %s) ',
344 array('integer', 'integer', 'text', 'integer'),
345 array($nextId, $this->getId(), $this->dependencies[$i]->getIdentifierRef(), ($i + 1))
346 );
347 }
348 }
349
350 public function delete()
351 {
352 global $DIC;
353 $ilDB = $DIC['ilDB'];
354
355 parent::delete();
356
357 $ilDB->manipulateF(
358 'DELETE FROM sc_resource WHERE obj_id = %s',
359 array('integer'),
360 array($this->getId())
361 );
362
363 $ilDB->manipulateF(
364 'DELETE FROM sc_resource_file WHERE res_id = %s',
365 array('integer'),
366 array($this->getId())
367 );
368
369 $ilDB->manipulateF(
370 'DELETE FROM sc_resource_dependen WHERE res_id = %s',
371 array('integer'),
372 array($this->getId())
373 );
374 }
375}
An exception for terminatinating execution or to throw for unit testing.
Parent object for all SCORM objects, that are stored in table scorm_object.
SCORM Resource Dependency, DB accesses are done in ilSCORMResource.
SCORM Resource File, DB accesses are done in ilSCORMResource.
addDependency(&$a_dependency)
setImportId($a_import_id)
update()
Updates database record for SCORM object.
static _lookupIdByIdRef($a_id_ref, $a_slm_id)
static _lookupScormType($a_obj_id)
setScormType($a_scormtype)
readByIdRef($a_id_ref, $a_slm_id)
__construct($a_id=0)
Constructor.
create()
Create database record for SCORM object.
$i
Definition: disco.tpl.php:19
global $ilBench
Definition: ilias.php:18
update($pash, $contents, Config $config)
global $DIC
Definition: saml.php:7
global $ilDB
$a_type
Definition: workflow.php:92