ILIAS  release_4-3 Revision
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilObjMediaCast.php
Go to the documentation of this file.
1 <?php
2 
3 /* Copyright (c) 1998-2011 ILIAS open source, Extended GPL, see docs/LICENSE */
4 
5 require_once "./Services/Object/classes/class.ilObject.php";
6 
14 class ilObjMediaCast extends ilObject
15 {
16  public static $purposes = array ("Standard", "VideoAlternative", "VideoPortable", "AudioPortable");
17  protected $online = false;
18  protected $publicfiles = false;
19  protected $downloadable = true;
20  protected $order;
21  protected $view_mode = "";
22 
23  const ORDER_TITLE = 1;
26  const ORDER_MANUAL = 4;
27 
28  const VIEW_LIST = "";
29  const VIEW_GALLERY = "gallery";
30 
36  protected $defaultAccess = 0;
37 
44  function ilObjMediaCast($a_id = 0,$a_call_by_reference = true)
45  {
46  $this->type = "mcst";
47  $this->ilObject($a_id,$a_call_by_reference);
48  $mcst_set = new ilSetting("mcst");
49  $this->setDefaultAccess($mcst_set->get("defaultaccess") == "users" ? 0 : 1);
50  $this->setOrder(self::ORDER_CREATION_DATE_DESC);
51  }
52 
58  function setOnline($a_online)
59  {
60  $this->online = $a_online;
61  }
62 
68  function getOnline()
69  {
70  return $this->online;
71  }
72 
78  function setPublicFiles($a_publicfiles)
79  {
80  $this->publicfiles = $a_publicfiles;
81  }
82 
88  function getPublicFiles()
89  {
90  return $this->publicfiles;
91  }
92 
98  function setViewMode($a_val)
99  {
100  $this->view_mode = $a_val;
101  }
102 
108  function getViewMode()
109  {
110  return $this->view_mode;
111  }
117  function setItemsArray($a_itemsarray)
118  {
119  $this->itemsarray = $a_itemsarray;
120  }
121 
127  function getItemsArray()
128  {
129  return $this->itemsarray;
130  }
131 
139  {
140  $med_items = $this->getItemsArray();
141 
142  // sort by order setting
143  switch($this->getOrder())
144  {
146  $med_items = ilUtil::sortArray($med_items, "title", "asc", false, true);
147  break;
148 
150  $med_items = ilUtil::sortArray($med_items, "creation_date", "asc", false, true);
151  break;
152 
154  $med_items = ilUtil::sortArray($med_items, "creation_date", "desc", false, true);
155  break;
156 
158  $order = array_flip($this->readOrder());
159  $pos = sizeof($order);
160  foreach(array_keys($med_items) as $idx)
161  {
162  if(array_key_exists($idx, $order))
163  {
164  $med_items[$idx]["order"] = ($order[$idx]+1)*10;
165  }
166  // item has no order yet
167  else
168  {
169  $med_items[$idx]["order"] = (++$pos)*10;
170  }
171  }
172 
173  $med_items = ilUtil::sortArray($med_items, "order", "asc", true, true);
174  break;
175  }
176 
177  return $med_items;
178  }
179 
180 
186  function setDownloadable($a_downloadable)
187  {
188  $this->downloadable = $a_downloadable;
189  }
195  function getDownloadable()
196  {
197  return $this->downloadable;
198  }
199 
205  function getDefaultAccess() {
206  return $this->defaultAccess;
207  }
208 
214  function setDefaultAccess($value) {
215  $this->defaultAccess = (int) $value == 0 ? 0 : 1;
216  }
217 
223  function setOrder($a_value)
224  {
225  $this->order = $a_value;
226  }
232  function getOrder()
233  {
234  return $this->order;
235  }
236 
243  function getDiskUsage()
244  {
245  require_once("./Modules/MediaCast/classes/class.ilObjMediaCastAccess.php");
246  return ilObjMediaCastAccess::_lookupDiskUsage($this->id);
247  }
248 
252  function create()
253  {
254  global $ilDB;
255 
256  parent::create();
257 
258  $query = "INSERT INTO il_media_cast_data (".
259  " id".
260  ", is_online".
261  ", public_files".
262  ", downloadable".
263  ", def_access".
264  ", sortmode".
265  ", viewmode".
266  " ) VALUES (".
267  $ilDB->quote($this->getId(), "integer")
268  .",".$ilDB->quote((int) $this->getOnline(), "integer")
269  .",".$ilDB->quote((int) $this->getPublicFiles(), "integer")
270  .",".$ilDB->quote((int) $this->getDownloadable(), "integer")
271  .",".$ilDB->quote((int) $this->getDefaultAccess(), "integer")
272  .",".$ilDB->quote((int) $this->getOrder(), "integer")
273  .",".$ilDB->quote((int) $this->getViewMode(), "text")
274  .")";
275  $ilDB->manipulate($query);
276 
277  }
278 
285  function update()
286  {
287  global $ilDB;
288 
289  if (!parent::update())
290  {
291  return false;
292  }
293 
294  // update media cast data
295  $query = "UPDATE il_media_cast_data SET ".
296  " is_online = ".$ilDB->quote((int) $this->getOnline(), "integer").
297  ", public_files = ".$ilDB->quote((int) $this->getPublicFiles(), "integer").
298  ", downloadable = ".$ilDB->quote((int) $this->getDownloadable(), "integer").
299  ", def_access = ".$ilDB->quote((int) $this->getDefaultAccess(), "integer").
300  ", sortmode = ".$ilDB->quote((int) $this->getOrder(), "integer").
301  ", viewmode = ".$ilDB->quote($this->getViewMode(), "text").
302  " WHERE id = ".$ilDB->quote((int) $this->getId(), "integer");
303 
304  $ilDB->manipulate($query);
305 
306  return true;
307  }
308 
312  function read()
313  {
314  global $ilDB;
315 
316  parent::read();
317  $this->readItems();
318 
319  $query = "SELECT * FROM il_media_cast_data WHERE id = ".
320  $ilDB->quote($this->getId(), "integer");
321  $set = $ilDB->query($query);
322  $rec = $ilDB->fetchAssoc($set);
323 
324  $this->setOnline($rec["is_online"]);
325  $this->setPublicFiles($rec["public_files"]);
326  $this->setDownloadable($rec["downloadable"]);
327  $this->setDefaultAccess($rec["def_access"]);
328  $this->setOrder($rec["sortmode"]);
329  $this->setViewMode($rec["viewmode"]);
330 
331  }
332 
333 
340  function delete()
341  {
342  global $ilDB;
343 
344  // always call parent delete function first!!
345  if (!parent::delete())
346  {
347  return false;
348  }
349 
350  // delete all items
351  $med_items = $this->getItemsArray();
352  foreach ($med_items as $item)
353  {
354  include_once("./Services/News/classes/class.ilNewsItem.php");
355  $news_item = new ilNewsItem($item["id"]);
356  $news_item->delete();
357  }
358 
359  $this->deleteOrder();
360 
361  // delete record of table il_media_cast_data
362  $query = "DELETE FROM il_media_cast_data".
363  " WHERE id = ".$ilDB->quote($this->getId(), "integer");
364  $ilDB->manipulate($query);
365 
366  return true;
367  }
368 
378  function initDefaultRoles()
379  {
380  global $rbacadmin;
381 
382  // create a local role folder
383  //$rfoldObj = $this->createRoleFolder("Local roles","Role Folder of forum obj_no.".$this->getId());
384 
385  // create moderator role and assign role to rolefolder...
386  //$roleObj = $rfoldObj->createRole("Moderator","Moderator of forum obj_no.".$this->getId());
387  //$roles[] = $roleObj->getId();
388 
389  //unset($rfoldObj);
390  //unset($roleObj);
391 
392  return $roles ? $roles : array();
393  }
394 
408  function notify($a_event,$a_ref_id,$a_parent_non_rbac_id,$a_node_id,$a_params = 0)
409  {
410  global $tree;
411 
412  switch ($a_event)
413  {
414  case "link":
415 
416  //var_dump("<pre>",$a_params,"</pre>");
417  //echo "Module name ".$this->getRefId()." triggered by link event. Objects linked into target object ref_id: ".$a_ref_id;
418  //exit;
419  break;
420 
421  case "cut":
422 
423  //echo "Module name ".$this->getRefId()." triggered by cut event. Objects are removed from target object ref_id: ".$a_ref_id;
424  //exit;
425  break;
426 
427  case "copy":
428 
429  //var_dump("<pre>",$a_params,"</pre>");
430  //echo "Module name ".$this->getRefId()." triggered by copy event. Objects are copied into target object ref_id: ".$a_ref_id;
431  //exit;
432  break;
433 
434  case "paste":
435 
436  //echo "Module name ".$this->getRefId()." triggered by paste (cut) event. Objects are pasted into target object ref_id: ".$a_ref_id;
437  //exit;
438  break;
439 
440  case "new":
441 
442  //echo "Module name ".$this->getRefId()." triggered by paste (new) event. Objects are applied to target object ref_id: ".$a_ref_id;
443  //exit;
444  break;
445  }
446 
447  // At the beginning of the recursive process it avoids second call of the notify function with the same parameter
448  if ($a_node_id==$_GET["ref_id"])
449  {
450  $parent_obj =& $this->ilias->obj_factory->getInstanceByRefId($a_node_id);
451  $parent_type = $parent_obj->getType();
452  if($parent_type == $this->getType())
453  {
454  $a_node_id = (int) $tree->getParentId($a_node_id);
455  }
456  }
457 
458  parent::notify($a_event,$a_ref_id,$a_parent_non_rbac_id,$a_node_id,$a_params);
459  }
460 
464  function readItems($a_oldest_first = false)
465  {
466  //
467  include_once("./Services/News/classes/class.ilNewsItem.php");
468  $it = new ilNewsItem();
469  $it->setContextObjId($this->getId());
470  $it->setContextObjType($this->getType());
471  $this->itemsarray = $it->queryNewsForContext(false, 0, "", false, $a_oldest_first);
472 
473  return $this->itemsarray;
474  }
475 
476  function deleteOrder()
477  {
478  global $ilDB;
479 
480  if(!$this->getId())
481  {
482  return;
483  }
484 
485  $sql = "DELETE FROM il_media_cast_data_ord".
486  " WHERE obj_id = ".$ilDB->quote($this->getId(), "integer");
487  $ilDB->manipulate($sql);
488  }
489 
490  function readOrder()
491  {
492  global $ilDB;
493 
494  if(!$this->getId())
495  {
496  return;
497  }
498 
499  $all = array();
500  $sql = "SELECT item_id FROM il_media_cast_data_ord".
501  " WHERE obj_id = ".$ilDB->quote($this->getId(), "integer").
502  " ORDER BY pos";
503  $res = $ilDB->query($sql);
504  while($row = $ilDB->fetchAssoc($res))
505  {
506  $all[] = $row["item_id"];
507  }
508  return $all;
509  }
510 
511  function saveOrder(array $a_items)
512  {
513  global $ilDB;
514 
515  if(!$this->getId())
516  {
517  return;
518  }
519 
520  $this->deleteOrder();
521 
522  $pos = 0;
523  foreach($a_items as $item_id)
524  {
525  $pos++;
526 
527  $sql = "INSERT INTO il_media_cast_data_ord (obj_id,item_id,pos)".
528  " VALUES (".$ilDB->quote($this->getId(), "integer").",".
529  $ilDB->quote($item_id, "integer").",".
530  $ilDB->quote($pos, "integer").")";
531  $ilDB->manipulate($sql);
532  }
533  }
534 
541  public function cloneObject($a_target_id,$a_copy_id = 0)
542  {
543  global $ilDB, $ilUser, $ilias;
544 
545  $new_obj = parent::cloneObject($a_target_id,$a_copy_id);
546 
547  $new_obj->setTitle($this->getTitle());
548  $new_obj->setPublicFiles($this->getPublicFiles());
549  $new_obj->setDownloadable($this->getDownloadable());
550  $new_obj->setDefaultAccess($this->getDefaultAccess());
551  $new_obj->setOrder($this->getOrder());
552  $new_obj->update();
553 
554  // copy items
555  $this->copyItems($new_obj);
556 
557  // copy order!?
558 
559  return $new_obj;
560  }
561 
568  function copyItems($a_new_obj)
569  {
570  global $ilUser;
571 
572  include_once("./Services/MediaObjects/classes/class.ilObjMediaObject.php");
573  foreach($this->readItems(true) as $item)
574  {
575  // copy media object
576  $mob_id = $item["mob_id"];
577  $mob = new ilObjMediaObject($mob_id);
578  $new_mob = $mob->duplicate();
579 
580  // copy news item
581  // create new media cast item
582  include_once("./Services/News/classes/class.ilNewsItem.php");
583  $mc_item = new ilNewsItem();
584  $mc_item->setMobId($new_mob->getId());
585  $mc_item->setContentType(NEWS_AUDIO);
586  $mc_item->setContextObjId($a_new_obj->getId());
587  $mc_item->setContextObjType($a_new_obj->getType());
588  $mc_item->setUserId($ilUser->getId());
589  $mc_item->setPlaytime($item["playtime"]);
590  $mc_item->setTitle($item["title"]);
591  $mc_item->setContent($item["content"]);
592  $mc_item->setVisibility($item["visibility"]);
593  $mc_item->create();
594 
595  }
596  }
597 
598 }
599 ?>