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 
24 require_once("./Modules/ScormAicc/classes/SCORM/class.ilSCORMObject.php");
25 require_once("./Modules/ScormAicc/classes/SCORM/class.ilSCORMResourceFile.php");
26 require_once("./Modules/ScormAicc/classes/SCORM/class.ilSCORMResourceDependency.php");
27 
37 {
38  public $import_id;
39  public $resourcetype;
40  public $scormtype;
41  public $href;
42  public $xml_base;
43  public $files;
44  public $dependencies;
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  {
73  return $this->resourcetype;
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 
292  parent::update();
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 }
SCORM Resource Dependency, DB accesses are done in ilSCORMResource.
setScormType($a_scormtype)
global $DIC
Definition: saml.php:7
addDependency(&$a_dependency)
__construct($a_id=0)
Constructor.
static _lookupIdByIdRef($a_id_ref, $a_slm_id)
static _lookupScormType($a_obj_id)
readByIdRef($a_id_ref, $a_slm_id)
$a_type
Definition: workflow.php:92
Parent object for all SCORM objects, that are stored in table scorm_object.
update($pash, $contents, Config $config)
setImportId($a_import_id)
SCORM Resource File, DB accesses are done in ilSCORMResource.
global $ilBench
Definition: ilias.php:18
global $ilDB
$i
Definition: disco.tpl.php:19