ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
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
5require_once "./Services/Object/classes/class.ilObject.php";
6
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 }
196 {
197 return $this->downloadable;
198 }
199
205 function getDefaultAccess() {
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");
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
369
383 function notify($a_event,$a_ref_id,$a_parent_non_rbac_id,$a_node_id,$a_params = 0)
384 {
385 global $tree;
386
387 switch ($a_event)
388 {
389 case "link":
390
391 //var_dump("<pre>",$a_params,"</pre>");
392 //echo "Module name ".$this->getRefId()." triggered by link event. Objects linked into target object ref_id: ".$a_ref_id;
393 //exit;
394 break;
395
396 case "cut":
397
398 //echo "Module name ".$this->getRefId()." triggered by cut event. Objects are removed from target object ref_id: ".$a_ref_id;
399 //exit;
400 break;
401
402 case "copy":
403
404 //var_dump("<pre>",$a_params,"</pre>");
405 //echo "Module name ".$this->getRefId()." triggered by copy event. Objects are copied into target object ref_id: ".$a_ref_id;
406 //exit;
407 break;
408
409 case "paste":
410
411 //echo "Module name ".$this->getRefId()." triggered by paste (cut) event. Objects are pasted into target object ref_id: ".$a_ref_id;
412 //exit;
413 break;
414
415 case "new":
416
417 //echo "Module name ".$this->getRefId()." triggered by paste (new) event. Objects are applied to target object ref_id: ".$a_ref_id;
418 //exit;
419 break;
420 }
421
422 // At the beginning of the recursive process it avoids second call of the notify function with the same parameter
423 if ($a_node_id==$_GET["ref_id"])
424 {
425 $parent_obj =& $this->ilias->obj_factory->getInstanceByRefId($a_node_id);
426 $parent_type = $parent_obj->getType();
427 if($parent_type == $this->getType())
428 {
429 $a_node_id = (int) $tree->getParentId($a_node_id);
430 }
431 }
432
433 parent::notify($a_event,$a_ref_id,$a_parent_non_rbac_id,$a_node_id,$a_params);
434 }
435
439 function readItems($a_oldest_first = false)
440 {
441 //
442 include_once("./Services/News/classes/class.ilNewsItem.php");
443 $it = new ilNewsItem();
444 $it->setContextObjId($this->getId());
445 $it->setContextObjType($this->getType());
446 $this->itemsarray = $it->queryNewsForContext(false, 0, "", false, $a_oldest_first);
447
448 return $this->itemsarray;
449 }
450
451 function deleteOrder()
452 {
453 global $ilDB;
454
455 if(!$this->getId())
456 {
457 return;
458 }
459
460 $sql = "DELETE FROM il_media_cast_data_ord".
461 " WHERE obj_id = ".$ilDB->quote($this->getId(), "integer");
462 $ilDB->manipulate($sql);
463 }
464
465 function readOrder()
466 {
467 global $ilDB;
468
469 if(!$this->getId())
470 {
471 return;
472 }
473
474 $all = array();
475 $sql = "SELECT item_id FROM il_media_cast_data_ord".
476 " WHERE obj_id = ".$ilDB->quote($this->getId(), "integer").
477 " ORDER BY pos";
478 $res = $ilDB->query($sql);
479 while($row = $ilDB->fetchAssoc($res))
480 {
481 $all[] = $row["item_id"];
482 }
483 return $all;
484 }
485
486 function saveOrder(array $a_items)
487 {
488 global $ilDB;
489
490 if(!$this->getId())
491 {
492 return;
493 }
494
495 $this->deleteOrder();
496
497 $pos = 0;
498 foreach($a_items as $item_id)
499 {
500 $pos++;
501
502 $sql = "INSERT INTO il_media_cast_data_ord (obj_id,item_id,pos)".
503 " VALUES (".$ilDB->quote($this->getId(), "integer").",".
504 $ilDB->quote($item_id, "integer").",".
505 $ilDB->quote($pos, "integer").")";
506 $ilDB->manipulate($sql);
507 }
508 }
509
516 public function cloneObject($a_target_id,$a_copy_id = 0)
517 {
518 global $ilDB, $ilUser, $ilias;
519
520 $new_obj = parent::cloneObject($a_target_id,$a_copy_id);
521
522 //copy online status if object is not the root copy object
523 $cp_options = ilCopyWizardOptions::_getInstance($a_copy_id);
524
525 if(!$cp_options->isRootNode($this->getRefId()))
526 {
527 $new_obj->setOnline($this->getOnline());
528 }
529
530 //$new_obj->setTitle($this->getTitle());
531 $new_obj->setPublicFiles($this->getPublicFiles());
532 $new_obj->setDownloadable($this->getDownloadable());
533 $new_obj->setDefaultAccess($this->getDefaultAccess());
534 $new_obj->setOrder($this->getOrder());
535 $new_obj->setViewMode($this->getViewMode());
536 $new_obj->update();
537
538 include_once("./Services/Block/classes/class.ilBlockSetting.php");
539 $pf = ilBlockSetting::_lookup("news", "public_feed", 0, $this->getId());
540 $keeprss = (int) ilBlockSetting::_lookup("news", "keep_rss_min", 0, $this->getId());
541 ilBlockSetting::_write("news", "public_feed", $pf, 0, $new_obj->getId());
542 ilBlockSetting::_write("news", "keep_rss_min", $keeprss, 0, $new_obj->getId());
543
544 // copy items
545 $this->copyItems($new_obj);
546
547 // copy order!?
548
549 // clone LP settings
550 include_once('./Services/Tracking/classes/class.ilLPObjSettings.php');
551 $obj_settings = new ilLPObjSettings($this->getId());
552 $obj_settings->cloneSettings($new_obj->getId());
553 unset($obj_settings);
554
555 return $new_obj;
556 }
557
564 function copyItems($a_new_obj)
565 {
566 global $ilUser;
567
568 include_once("./Services/MediaObjects/classes/class.ilObjMediaObject.php");
569 foreach($this->readItems(true) as $item)
570 {
571 // copy media object
572 $mob_id = $item["mob_id"];
573 $mob = new ilObjMediaObject($mob_id);
574 $new_mob = $mob->duplicate();
575
576 // copy news item
577 // create new media cast item
578 include_once("./Services/News/classes/class.ilNewsItem.php");
579 $mc_item = new ilNewsItem();
580 $mc_item->setMobId($new_mob->getId());
581 $mc_item->setContentType(NEWS_AUDIO);
582 $mc_item->setContextObjId($a_new_obj->getId());
583 $mc_item->setContextObjType($a_new_obj->getType());
584 $mc_item->setUserId($ilUser->getId());
585 $mc_item->setPlaytime($item["playtime"]);
586 $mc_item->setTitle($item["title"]);
587 $mc_item->setContent($item["content"]);
588 $mc_item->setVisibility($item["visibility"]);
589 $mc_item->create();
590
591 }
592 }
593
594 public function handleLPUpdate($a_user_id, $a_mob_id)
595 {
596 // using read events to persist mob status
597 require_once 'Services/Tracking/classes/class.ilChangeEvent.php';
599 $a_mob_id, $a_user_id);
600
601 // trigger LP update
602 require_once 'Services/Tracking/classes/class.ilLPStatusWrapper.php';
603 ilLPStatusWrapper::_updateStatus($this->getId(), $a_user_id);
604 }
605}
606
607?>
$_GET["client_id"]
const NEWS_AUDIO
static _write($a_type, $a_setting, $a_value, $a_user=0, $a_block_id=0)
Write setting to database.
static _lookup($a_type, $a_setting, $a_user=0, $a_block_id=0)
Lookup setting from database.
_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.
static _getInstance($a_copy_id)
Get instance of copy wizard options.
static _updateStatus($a_obj_id, $a_usr_id, $a_obj=null, $a_percentage=false, $a_force_raise=false)
Update status.
_lookupDiskUsage($a_id)
Returns the number of bytes used on the harddisk by the file object with the specified object id.
Class ilObjMediaCast.
setDownloadable($a_downloadable)
Set Downloadable.
getPublicFiles()
Get PublicFiles.
getOnline()
Get Online.
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...
saveOrder(array $a_items)
setOnline($a_online)
Set Online.
update()
update object data
read()
Read media cast.
setDefaultAccess($value)
set default access: 0 logged in users, 1 for public access
getDefaultAccess()
return default access for news items
setOrder($a_value)
Set order.
setItemsArray($a_itemsarray)
Set ItemsArray.
getItemsArray()
Get ItemsArray.
copyItems($a_new_obj)
Copy items.
getSortedItemsArray()
Get sorted items array.
getDownloadable()
Get Downloadable.
handleLPUpdate($a_user_id, $a_mob_id)
cloneObject($a_target_id, $a_copy_id=0)
Clone media cast.
setViewMode($a_val)
Set view mode.
readItems($a_oldest_first=false)
Get all items of media cast.
getViewMode()
Get view mode.
ilObjMediaCast($a_id=0, $a_call_by_reference=true)
Constructor @access public.
setPublicFiles($a_publicfiles)
Set PublicFiles.
create()
Create mew media cast.
getDiskUsage()
Gets the disk usage of the object in bytes.
Class ilObjMediaObject.
Class ilObject Basic functions for all objects.
getType()
get object type @access public
ilObject($a_id=0, $a_reference=true)
Constructor @access public.
getRefId()
get reference id @access public
getId()
get object id @access public
ILIAS Setting Class.
static sortArray($array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
redirection script todo: (a better solution should control the processing via a xml file)
global $ilDB
global $ilUser
Definition: imgupload.php:15