ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
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 __construct($a_id = 0,$a_call_by_reference = true)
45  {
46  $this->type = "mcst";
47  parent::__construct($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 
372  function readItems($a_oldest_first = false)
373  {
374  //
375  include_once("./Services/News/classes/class.ilNewsItem.php");
376  $it = new ilNewsItem();
377  $it->setContextObjId($this->getId());
378  $it->setContextObjType($this->getType());
379  $this->itemsarray = $it->queryNewsForContext(false, 0, "", false, $a_oldest_first);
380 
381  return $this->itemsarray;
382  }
383 
384  function deleteOrder()
385  {
386  global $ilDB;
387 
388  if(!$this->getId())
389  {
390  return;
391  }
392 
393  $sql = "DELETE FROM il_media_cast_data_ord".
394  " WHERE obj_id = ".$ilDB->quote($this->getId(), "integer");
395  $ilDB->manipulate($sql);
396  }
397 
398  function readOrder()
399  {
400  global $ilDB;
401 
402  if(!$this->getId())
403  {
404  return;
405  }
406 
407  $all = array();
408  $sql = "SELECT item_id FROM il_media_cast_data_ord".
409  " WHERE obj_id = ".$ilDB->quote($this->getId(), "integer").
410  " ORDER BY pos";
411  $res = $ilDB->query($sql);
412  while($row = $ilDB->fetchAssoc($res))
413  {
414  $all[] = $row["item_id"];
415  }
416  return $all;
417  }
418 
419  function saveOrder(array $a_items)
420  {
421  global $ilDB;
422 
423  if(!$this->getId())
424  {
425  return;
426  }
427 
428  $this->deleteOrder();
429 
430  $pos = 0;
431  foreach($a_items as $item_id)
432  {
433  $pos++;
434 
435  $sql = "INSERT INTO il_media_cast_data_ord (obj_id,item_id,pos)".
436  " VALUES (".$ilDB->quote($this->getId(), "integer").",".
437  $ilDB->quote($item_id, "integer").",".
438  $ilDB->quote($pos, "integer").")";
439  $ilDB->manipulate($sql);
440  }
441  }
442 
449  public function cloneObject($a_target_id,$a_copy_id = 0, $a_omit_tree = false)
450  {
451  global $ilDB, $ilUser, $ilias;
452 
453  $new_obj = parent::cloneObject($a_target_id,$a_copy_id, $a_omit_tree);
454 
455  //copy online status if object is not the root copy object
456  $cp_options = ilCopyWizardOptions::_getInstance($a_copy_id);
457 
458  if(!$cp_options->isRootNode($this->getRefId()))
459  {
460  $new_obj->setOnline($this->getOnline());
461  }
462 
463  //$new_obj->setTitle($this->getTitle());
464  $new_obj->setPublicFiles($this->getPublicFiles());
465  $new_obj->setDownloadable($this->getDownloadable());
466  $new_obj->setDefaultAccess($this->getDefaultAccess());
467  $new_obj->setOrder($this->getOrder());
468  $new_obj->setViewMode($this->getViewMode());
469  $new_obj->update();
470 
471  include_once("./Services/Block/classes/class.ilBlockSetting.php");
472  $pf = ilBlockSetting::_lookup("news", "public_feed", 0, $this->getId());
473  $keeprss = (int) ilBlockSetting::_lookup("news", "keep_rss_min", 0, $this->getId());
474  ilBlockSetting::_write("news", "public_feed", $pf, 0, $new_obj->getId());
475  ilBlockSetting::_write("news", "keep_rss_min", $keeprss, 0, $new_obj->getId());
476 
477  // copy items
478  $this->copyItems($new_obj);
479 
480  // copy order!?
481 
482  // clone LP settings
483  include_once('./Services/Tracking/classes/class.ilLPObjSettings.php');
484  $obj_settings = new ilLPObjSettings($this->getId());
485  $obj_settings->cloneSettings($new_obj->getId());
486  unset($obj_settings);
487 
488  return $new_obj;
489  }
490 
497  function copyItems($a_new_obj)
498  {
499  global $ilUser;
500 
501  include_once("./Services/MediaObjects/classes/class.ilObjMediaObject.php");
502  foreach($this->readItems(true) as $item)
503  {
504  // copy media object
505  $mob_id = $item["mob_id"];
506  $mob = new ilObjMediaObject($mob_id);
507  $new_mob = $mob->duplicate();
508 
509  // copy news item
510  // create new media cast item
511  include_once("./Services/News/classes/class.ilNewsItem.php");
512  $mc_item = new ilNewsItem();
513  $mc_item->setMobId($new_mob->getId());
514  $mc_item->setContentType(NEWS_AUDIO);
515  $mc_item->setContextObjId($a_new_obj->getId());
516  $mc_item->setContextObjType($a_new_obj->getType());
517  $mc_item->setUserId($ilUser->getId());
518  $mc_item->setPlaytime($item["playtime"]);
519  $mc_item->setTitle($item["title"]);
520  $mc_item->setContent($item["content"]);
521  $mc_item->setVisibility($item["visibility"]);
522  $mc_item->create();
523 
524  }
525  }
526 
527  public function handleLPUpdate($a_user_id, $a_mob_id)
528  {
529  // using read events to persist mob status
530  require_once 'Services/Tracking/classes/class.ilChangeEvent.php';
532  $a_mob_id, $a_user_id);
533 
534  // trigger LP update
535  require_once 'Services/Tracking/classes/class.ilLPStatusWrapper.php';
536  ilLPStatusWrapper::_updateStatus($this->getId(), $a_user_id);
537  }
538 }
539 
540 ?>
ILIAS Setting Class.
saveOrder(array $a_items)
getDefaultAccess()
return default access for news items
static _write($a_type, $a_setting, $a_value, $a_user=0, $a_block_id=0)
Write setting to database.
Class ilObject Basic functions for all objects.
static _updateStatus($a_obj_id, $a_usr_id, $a_obj=null, $a_percentage=false, $a_force_raise=false)
Update status.
getOnline()
Get Online.
handleLPUpdate($a_user_id, $a_mob_id)
static sortArray($array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
cloneObject($a_target_id, $a_copy_id=0, $a_omit_tree=false)
Clone media cast.
setOrder($a_value)
Set order.
read()
Read media cast.
static _getInstance($a_copy_id)
Get instance of copy wizard options.
Class ilObjMediaCast.
getId()
get object id public
getViewMode()
Get view mode.
setDownloadable($a_downloadable)
Set Downloadable.
static _lookup($a_type, $a_setting, $a_user=0, $a_block_id=0)
Lookup setting from database.
$ilUser
Definition: imgupload.php:18
create()
Create mew media cast.
static _recordReadEvent($a_type, $a_ref_id, $obj_id, $usr_id, $isCatchupWriteEvents=true, $a_ext_rc=false, $a_ext_time=false)
Records a read event and catches up with write events.
Class ilObjMediaObject.
getType()
get object type public
static _lookupDiskUsage($a_id)
Returns the number of bytes used on the harddisk by the file object with the specified object id...
setItemsArray($a_itemsarray)
Set ItemsArray.
setOnline($a_online)
Set Online.
getDownloadable()
Get Downloadable.
Create styles array
The data for the language used.
getItemsArray()
Get ItemsArray.
update()
update object data
setViewMode($a_val)
Set view mode.
__construct($a_id=0, $a_call_by_reference=true)
Constructor public.
getPublicFiles()
Get PublicFiles.
setDefaultAccess($value)
set default access: 0 logged in users, 1 for public access
global $ilDB
getRefId()
get reference id public
readItems($a_oldest_first=false)
Get all items of media cast.
const NEWS_AUDIO
copyItems($a_new_obj)
Copy items.
getSortedItemsArray()
Get sorted items array.
setPublicFiles($a_publicfiles)
Set PublicFiles.
getDiskUsage()
Gets the disk usage of the object in bytes.