ILIAS  release_4-4 Revision
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilObjFileBasedLM.php
Go to the documentation of this file.
1 <?php
2 
3 /* Copyright (c) 1998-2010 ILIAS open source, Extended GPL, see docs/LICENSE */
4 
8 require_once "./Services/Object/classes/class.ilObject.php";
9 //require_once "Services/MetaData/classes/class.ilMDLanguageItem.php";
10 
21 {
22  var $tree;
23 
30  function ilObjFileBasedLM($a_id = 0,$a_call_by_reference = true)
31  {
32  // this also calls read() method! (if $a_id is set)
33  $this->type = "htlm";
34  $this->ilObject($a_id,$a_call_by_reference);
35  }
36 
37 
44  function update()
45  {
46  global $ilDB;
47 
48  $this->updateMetaData();
49  parent::update();
50 
51  $ilDB->manipulate("UPDATE file_based_lm SET ".
52  " is_online = ".$ilDB->quote(ilUtil::tf2yn($this->getOnline()), "text").",".
53  " startfile = ".$ilDB->quote($this->getStartFile(), "text")." ".
54  " WHERE id = ".$ilDB->quote($this->getId(), "integer"));
55 
56  return true;
57  }
58 
62  function read()
63  {
64  global $ilDB;
65 
66  parent::read();
67 
68  $q = "SELECT * FROM file_based_lm WHERE id = ".$ilDB->quote($this->getId(), "integer");
69  $lm_set = $ilDB->query($q);
70  $lm_rec = $ilDB->fetchAssoc($lm_set);
71  $this->setOnline(ilUtil::yn2tf($lm_rec["is_online"]));
72  $this->setStartFile((string) $lm_rec["startfile"]);
73 
74  }
75 
79  function initBibItemObject()
80  {
81  include_once("./Modules/LearningModule/classes/class.ilBibItem.php");
82 
83  $this->bib_obj =& new ilBibItem($this);
84  $this->bib_obj->read();
85 
86  return true;
87  }
88 
89 
93  function create()
94  {
95  global $ilDB;
96 
97  parent::create();
98  $this->createDataDirectory();
99 
100  $ilDB->manipulate("INSERT INTO file_based_lm (id, is_online, startfile) VALUES ".
101  " (".$ilDB->quote($this->getID(), "integer").",".
102  $ilDB->quote("n", "text").",".
103  $ilDB->quote($this->getStartfile(), "text").")");
104 
105  $this->createMetaData();
106  }
107 
108  function getDataDirectory($mode = "filesystem")
109  {
110  $lm_data_dir = ilUtil::getWebspaceDir($mode)."/lm_data";
111  $lm_dir = $lm_data_dir."/lm_".$this->getId();
112 
113  return $lm_dir;
114  }
115 
117  {
119  }
120 
121  function getStartFile()
122  {
123  return $this->start_file;
124  }
125 
126  function setStartFile($a_file)
127  {
128  $this->start_file = $a_file;
129  }
130 
131  function setOnline($a_online)
132  {
133  $this->online = $a_online;
134  }
135 
136  function getOnline()
137  {
138  return $this->online;
139  }
140 
144  function _lookupOnline($a_id)
145  {
146  global $ilDB;
147 
148  $q = "SELECT * FROM file_based_lm WHERE id = ".$ilDB->quote($a_id, "integer");
149  $lm_set = $ilDB->query($q);
150  $lm_rec = $ilDB->fetchAssoc($lm_set);
151 
152  return ilUtil::yn2tf($lm_rec["is_online"]);
153  }
154 
161  function getDiskUsage()
162  {
163  require_once("./Modules/HTMLLearningModule/classes/class.ilObjFileBasedLMAccess.php");
165  }
166 
167 
168 
179  function delete()
180  {
181  global $ilDB;
182 
183  // always call parent delete function first!!
184  if (!parent::delete())
185  {
186  return false;
187  }
188 
189  // delete meta data of content object
190 /*
191  $nested = new ilNestedSetXML();
192  $nested->init($this->getId(), $this->getType());
193  $nested->deleteAllDBData();
194 */
195 
196  // Delete meta data
197  $this->deleteMetaData();
198 
199  // delete bibliographical items of object
200  include_once("./Services/Xml/classes/class.ilNestedSetXML.php");
201  $nested = new ilNestedSetXML();
202  $nested->init($this->getId(), "bib");
203  $nested->deleteAllDBData();
204 
205  // delete file_based_lm record
206  $ilDB->manipulate("DELETE FROM file_based_lm WHERE id = ".
207  $ilDB->quote($this->getID(), "integer"));
208 
209  // delete data directory
211 
212  return true;
213  }
214 
224  function initDefaultRoles()
225  {
226  global $rbacadmin;
227 
228  // create a local role folder
229  //$rfoldObj = $this->createRoleFolder("Local roles","Role Folder of forum obj_no.".$this->getId());
230 
231  // create moderator role and assign role to rolefolder...
232  //$roleObj = $rfoldObj->createRole("Moderator","Moderator of forum obj_no.".$this->getId());
233  //$roles[] = $roleObj->getId();
234 
235  //unset($rfoldObj);
236  //unset($roleObj);
237 
238  return $roles ? $roles : array();
239  }
240 
254  function notify($a_event,$a_ref_id,$a_parent_non_rbac_id,$a_node_id,$a_params = 0)
255  {
256  global $tree;
257 
258  switch ($a_event)
259  {
260  case "link":
261 
262  //var_dump("<pre>",$a_params,"</pre>");
263  //echo "Module name ".$this->getRefId()." triggered by link event. Objects linked into target object ref_id: ".$a_ref_id;
264  //exit;
265  break;
266 
267  case "cut":
268 
269  //echo "Module name ".$this->getRefId()." triggered by cut event. Objects are removed from target object ref_id: ".$a_ref_id;
270  //exit;
271  break;
272 
273  case "copy":
274 
275  //var_dump("<pre>",$a_params,"</pre>");
276  //echo "Module name ".$this->getRefId()." triggered by copy event. Objects are copied into target object ref_id: ".$a_ref_id;
277  //exit;
278  break;
279 
280  case "paste":
281 
282  //echo "Module name ".$this->getRefId()." triggered by paste (cut) event. Objects are pasted into target object ref_id: ".$a_ref_id;
283  //exit;
284  break;
285 
286  case "new":
287 
288  //echo "Module name ".$this->getRefId()." triggered by paste (new) event. Objects are applied to target object ref_id: ".$a_ref_id;
289  //exit;
290  break;
291  }
292 
293  // At the beginning of the recursive process it avoids second call of the notify function with the same parameter
294  if ($a_node_id==$_GET["ref_id"])
295  {
296  $parent_obj =& $this->ilias->obj_factory->getInstanceByRefId($a_node_id);
297  $parent_type = $parent_obj->getType();
298  if($parent_type == $this->getType())
299  {
300  $a_node_id = (int) $tree->getParentId($a_node_id);
301  }
302  }
303 
304  parent::notify($a_event,$a_ref_id,$a_parent_non_rbac_id,$a_node_id,$a_params);
305  }
306 
316  function populateByDirectoy($a_dir, $a_filename = "")
317  {
318  preg_match("/.*htlm_([0-9]*)\.zip/", $a_filename, $match);
319  if (is_dir($a_dir."/htlm_".$match[1]))
320  {
321  $a_dir = $a_dir."/htlm_".$match[1];
322  }
323  ilUtil::rCopy($a_dir, $this->getDataDirectory());
325  }
326 
333  public function cloneObject($a_target_id,$a_copy_id = 0)
334  {
335  global $ilDB, $ilUser, $ilias;
336 
337  $new_obj = parent::cloneObject($a_target_id,$a_copy_id);
338  $this->cloneMetaData($new_obj);
339 
340  $new_obj->setTitle($this->getTitle());
341  $new_obj->setDescription($this->getDescription());
342 
343  // copy content
344  $new_obj->populateByDirectoy($this->getDataDirectory());
345 
346  $new_obj->setStartFile($this->getStartFile());
347  $new_obj->update();
348 
349  return $new_obj;
350  }
351 
352 }
353 ?>
getDataDirectory($mode="filesystem")
static tf2yn($a_tf)
convert true/false to "y"/"n"
Class NestedSetXML functions for storing XML-Data into nested-set-database-strcture.
static rCopy($a_sdir, $a_tdir, $preserveTimeAttributes=false)
Copies content of a directory $a_sdir recursively to a directory $a_tdir.
_lookupDiskUsage($a_id)
Returns the number of bytes used on the harddisk by the learning module with the specified object id...
$_GET["client_id"]
Class ilBibItem.
updateMetaData()
update meta data entry
update()
update object data
Class ilObject Basic functions for all objects.
File Based Learning Module (HTML) object.
createMetaData()
create meta data entry
ilObject($a_id=0, $a_reference=true)
Constructor public.
notify($a_event, $a_ref_id, $a_parent_non_rbac_id, $a_node_id, $a_params=0)
notifys an object about an event occured Based on the event happend, each object may decide how it re...
getId()
get object id public
getTitle()
get object title public
getDescription()
get object description
redirection script todo: (a better solution should control the processing via a xml file) ...
cloneMetaData($target_obj)
Copy meta data.
cloneObject($a_target_id, $a_copy_id=0)
Clone HTML learning module.
getDiskUsage()
Gets the disk usage of the object in bytes.
initBibItemObject()
init bib object (contains all bib item data)
getType()
get object type public
create()
create file based lm
static makeDir($a_dir)
creates a new directory and inherits all filesystem permissions of the parent directory You may pass ...
global $ilUser
Definition: imgupload.php:15
$lm_set
static renameExecutables($a_dir)
Rename uploaded executables for security reasons.
initDefaultRoles()
init default roles settings
deleteMetaData()
delete meta data entry
_lookupOnline($a_id)
check wether content object is online
static yn2tf($a_yn)
convert "y"/"n" to true/false
static delDir($a_dir, $a_clean_only=false)
removes a dir and all its content (subdirs and files) recursively
static getWebspaceDir($mode="filesystem")
get webspace directory
ilObjFileBasedLM($a_id=0, $a_call_by_reference=true)
Constructor public.
populateByDirectoy($a_dir, $a_filename="")
Populate by directory.