ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilNewsForContextBlockGUI.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
5include_once("Services/Block/classes/class.ilBlockGUI.php");
6
19{
23 const OBJECTS_WITH_NEWS_SUBTAB = ["category", "course", "group", "forum"];
24
28 protected $help;
29
33 protected $settings;
34
38 protected $tabs;
39
40 public static $block_type = "news";
41 public static $st_data;
42
43 protected $obj_definition;
44
48 public function __construct()
49 {
50 global $DIC;
51
52 $this->ctrl = $DIC->ctrl();
53 $this->lng = $DIC->language();
54 $this->user = $DIC->user();
55 $this->help = $DIC["ilHelp"];
56 $this->access = $DIC->access();
57 $this->settings = $DIC->settings();
58 $this->tabs = $DIC->tabs();
59 $this->obj_definition = $DIC["objDefinition"];
60 $this->ui = $DIC->ui();
61
62 $ilCtrl = $DIC->ctrl();
63 $lng = $DIC->language();
64 $ilUser = $DIC->user();
65 $ilHelp = $DIC["ilHelp"];
66
67 parent::__construct();
68
69 $lng->loadLanguageModule("news");
70 $ilHelp->addHelpSection("news_block");
71
72 include_once("./Services/News/classes/class.ilNewsItem.php");
73 $this->setBlockId($ilCtrl->getContextObjId());
74 $this->setLimit(5);
76 $this->setEnableNumInfo(true);
77
78 $this->dynamic = false;
79 include_once("./Services/News/classes/class.ilNewsCache.php");
80 $this->acache = new ilNewsCache();
81 $cres = unserialize($this->acache->getEntry($ilUser->getId() . ":" . $_GET["ref_id"]));
82 $this->cache_hit = false;
83
84 if ($this->acache->getLastAccessStatus() == "hit" && is_array($cres)) {
85 self::$st_data = ilNewsItem::prepareNewsDataFromCache($cres);
86 $this->cache_hit = true;
87 }
88 if ($this->getDynamic() && !$this->cache_hit) {
89 $this->dynamic = true;
90 $data = array();
91 } elseif ($this->getCurrentDetailLevel() > 0) {
92 if (!empty(self::$st_data)) {
94 } else {
95 $data = $this->getNewsData();
96 self::$st_data = $data;
97 }
98 } else {
99 $data = array();
100 }
101
102 $this->setTitle($lng->txt("news_internal_news"));
103 $this->setRowTemplate("tpl.block_row_news_for_context.html", "Services/News");
104 $this->setData($data);
105 $this->allow_moving = false;
106 $this->handleView();
107 }
108
112 public function getNewsData()
113 {
116
117 include_once("./Services/News/classes/class.ilNewsCache.php");
118 $this->acache = new ilNewsCache();
119 /* $cres = $this->acache->getEntry($ilUser->getId().":".$_GET["ref_id"]);
120 if ($this->acache->getLastAccessStatus() == "hit" && false)
121 {
122 $news_data = unserialize($cres);
123 }
124 else
125 {*/
126 $news_item = new ilNewsItem();
127 $news_item->setContextObjId($ilCtrl->getContextObjId());
128 $news_item->setContextObjType($ilCtrl->getContextObjType());
129
130 // workaround, better: reduce constructor and introduce
131 //$prevent_aggregation = $this->getProperty("prevent_aggregation");
132 $prevent_aggregation = true;
133 if ($ilCtrl->getContextObjType() != "frm") {
134 $forum_grouping = true;
135 } else {
136 $forum_grouping = false;
137 }
138
139
140 $news_data = $news_item->getNewsForRefId(
141 $_GET["ref_id"],
142 false,
143 false,
144 0,
145 $prevent_aggregation,
146 $forum_grouping
147 );
148
149 $this->acache->storeEntry(
150 $ilUser->getId() . ":" . $_GET["ref_id"],
151 serialize($news_data)
152 );
153
154 // }
155 //var_dump($news_data);
156 return $news_data;
157 }
158
162 public function getBlockType() : string
163 {
164 return self::$block_type;
165 }
166
170 protected function isRepositoryObject() : bool
171 {
172 return false;
173 }
174
178 public static function getScreenMode()
179 {
180 global $DIC;
181
182 $ilCtrl = $DIC->ctrl();
183
184 if ($ilCtrl->getCmdClass() == "ilnewsitemgui") {
185 return IL_SCREEN_FULL;
186 }
187
188 switch ($ilCtrl->getCmd()) {
189 case "showNews":
190 case "showFeedUrl":
191 return IL_SCREEN_CENTER;
192 break;
193
194 case "editSettings":
195 case "saveSettings":
196 return IL_SCREEN_FULL;
197 break;
198
199 default:
200 return IL_SCREEN_SIDE;
201 break;
202 }
203 }
204
208 public function executeCommand()
209 {
211
212 $next_class = $ilCtrl->getNextClass();
213 $cmd = $ilCtrl->getCmd("getHTML");
214
215 switch ($next_class) {
216 case "ilnewsitemgui":
217 include_once("./Services/News/classes/class.ilNewsItemGUI.php");
218 $news_item_gui = new ilNewsItemGUI();
219 $news_item_gui->setEnableEdit($this->getEnableEdit());
220 $html = $ilCtrl->forwardCommand($news_item_gui);
221 return $html;
222
223 default:
224 return $this->$cmd();
225 }
226 }
227
233 public function setEnableEdit($a_enable_edit = 0)
234 {
235 $this->enable_edit = $a_enable_edit;
236 }
237
243 public function getEnableEdit()
244 {
245 return $this->enable_edit;
246 }
247
251 public function fillDataSection()
252 {
253 if ($this->dynamic) {
254 $this->setDataSection($this->getDynamicReload());
255 } elseif ($this->getCurrentDetailLevel() > 1 && count($this->getData()) > 0) {
256 parent::fillDataSection();
257 } else {
258 $this->setDataSection($this->getOverview());
259 }
260 }
261
265 public function getHTML()
266 {
267 global $DIC;
268
272
273 $news_set = new ilSetting("news");
274 $enable_internal_rss = $news_set->get("enable_rss_for_internal");
275
276 $hide_block = ilBlockSetting::_lookup(
277 $this->getBlockType(),
278 "hide_news_block",
279 0,
280 $this->block_id
281 );
282 if ($hide_block) {
283 $this->setFooterInfo($lng->txt("news_hidden_news_block"));
284 }
285
286 if ($this->getProperty("title") != "") {
287 $this->setTitle($this->getProperty("title"));
288 }
289
290 $public_feed = ilBlockSetting::_lookup(
291 $this->getBlockType(),
292 "public_feed",
293 0,
294 $this->block_id
295 );
296 if ($public_feed) {
297 if ($enable_internal_rss) {
298 include_once("./Services/News/classes/class.ilRSSButtonGUI.php");
299 $this->addBlockCommand(
300 ILIAS_HTTP_PATH . "/feed.php?client_id=" . rawurlencode(CLIENT_ID) . "&" .
301 "ref_id=" . $_GET["ref_id"],
302 $lng->txt("news_feed_url"),
303 "",
304 "",
305 true,
306 false,
308 );
309 }
310 }
311
312 /* Subscription Concept is abandonded for now (Alex)
313 // subscribe/unsibscribe link
314 include_once("./Services/News/classes/class.ilNewsSubscription.php");
315 if (ilNewsSubscription::_hasSubscribed($_GET["ref_id"], $ilUser->getId()))
316 {
317 $this->addBlockCommand(
318 $ilCtrl->getLinkTarget($this, "unsubscribeNews"),
319 $lng->txt("news_unsubscribe"));
320 }
321 else
322 {
323 $this->addBlockCommand(
324 $ilCtrl->getLinkTarget($this, "subscribeNews"),
325 $lng->txt("news_subscribe"));
326 }
327 */
328
329 // add edit commands
330 if ($this->getEnableEdit()) {
331 $this->addBlockCommand(
332 $ilCtrl->getLinkTargetByClass("ilnewsitemgui", "editNews"),
333 $lng->txt("edit")
334 );
335
336 $ilCtrl->setParameter($this, "add_mode", "block");
337 $this->addBlockCommand(
338 $ilCtrl->getLinkTargetByClass("ilnewsitemgui", "createNewsItem"),
339 $lng->txt("add")
340 );
341 $ilCtrl->setParameter($this, "add_mode", "");
342 }
343
344 if ($this->getProperty("settings") == true) {
345 $ref_id = $_GET["ref_id"];
346 $obj_def = $DIC["objDefinition"];
347 $obj_id = ilObject::_lookupObjectId($ref_id);
348 $obj_type = ilObject::_lookupType($ref_id, true);
349 $obj_class = strtolower($obj_def->getClassName($obj_type));
350 $parent_gui = "ilobj" . $obj_class . "gui";
351
352 $ilCtrl->setParameterByClass("ilcontainernewssettingsgui", "ref_id", $ref_id);
353
354 if (in_array($obj_class, ilNewsForContextBlockGUI::OBJECTS_WITH_NEWS_SUBTAB)) {
355 $this->addBlockCommand(
356 $ilCtrl->getLinkTargetByClass(array("ilrepositorygui", $parent_gui, "ilcontainernewssettingsgui"), "show"),
357 $lng->txt("settings")
358 );
359 } else {
360 $this->addBlockCommand(
361 $ilCtrl->getLinkTarget($this, "editSettings"),
362 $lng->txt("settings")
363 );
364 }
365 }
366
367 // do not display hidden repository news blocks for users
368 // who do not have write permission
369 if (!$this->getEnableEdit() && $this->getRepositoryMode() &&
371 $this->getBlockType(),
372 "hide_news_block",
373 0,
374 $this->block_id
375 )) {
376 return "";
377 }
378
379 // do not display empty news blocks for users
380 // who do not have write permission
381 if (count($this->getData()) == 0 && !$this->getEnableEdit() &&
382 $this->getRepositoryMode() && !$this->dynamic
383 && (!$news_set->get("enable_rss_for_internal") ||
385 $this->getBlockType(),
386 "public_feed",
387 0,
388 $this->block_id
389 ))) {
390 return "";
391 }
392
393 $en = "";
394 if ($ilUser->getPref("il_feed_js") == "n") {
395 // $en = getJSEnabler();
396 }
397
398 return parent::getHTML() . $en;
399 }
400
404 public function handleView()
405 {
407
408 include_once("Services/Block/classes/class.ilBlockSetting.php");
409 $this->view = ilBlockSetting::_lookup(
410 $this->getBlockType(),
411 "view",
412 $ilUser->getId(),
413 $this->block_id
414 );
415
416 // check whether notices and messages exist
417 $got_notices = $got_messages = false;
418 foreach ($this->data as $row) {
419 if ($row["priority"] == 0) {
420 $got_notices = true;
421 }
422 if ($row["priority"] == 1) {
423 $got_messages = true;
424 }
425 }
426 $this->show_view_selection = false;
427
428 if ($got_notices && $got_messages) {
429 $this->show_view_selection = true;
430 } elseif ($got_notices) {
431 $this->view = "";
432 }
433
434 // remove notifications if hidden
435/*
436 if (($this->view == "hide_notifications") && $this->show_view_selection)
437 {
438 $rset = array();
439 foreach($this->data as $k => $row)
440 {
441 if ($row["priority"] == 1)
442 {
443 $rset[$k] = $row;
444 }
445 }
446 $this->data = $rset;
447 }
448*/
449 }
450
454 public function fillRow($news)
455 {
459
460 if ($this->getCurrentDetailLevel() > 2) {
461 $this->tpl->setCurrentBlock("long");
462 //$this->tpl->setVariable("VAL_CONTENT", $news["content"]);
463 $this->tpl->setVariable(
464 "VAL_CREATION_DATE",
465 ilDatePresentation::formatDate(new ilDateTime($news["creation_date"], IL_CAL_DATETIME))
466 );
467 $this->tpl->parseCurrentBlock();
468 }
469
470 // title image type
471 if ($news["ref_id"] > 0) {
472 if ($news["agg_ref_id"] > 0) {
473 $obj_id = ilObject::_lookupObjId($news["agg_ref_id"]);
474 $type = ilObject::_lookupType($obj_id);
475 $context_ref = $news["agg_ref_id"];
476 } else {
477 $obj_id = $news["context_obj_id"];
478 $type = $news["context_obj_type"];
479 $context_ref = $news["ref_id"];
480 }
481
482 $lang_type = in_array($type, array("sahs", "lm", "htlm"))
483 ? "lres"
484 : "obj_" . $type;
485
486 $type_txt = ($obj_definition->isPlugin($news["context_obj_type"]))
487 ? ilObjectPlugin::lookupTxtById($news["context_obj_type"], $lang_type)
488 : $lng->txt($lang_type);
489
490 $this->tpl->setCurrentBlock("news_context");
491 $this->tpl->setVariable("TYPE", $type_txt);
492 $this->tpl->setVariable(
493 "IMG_TYPE",
494 ilObject::_getIcon($obj_id, "tiny", $type)
495 );
496 $this->tpl->setVariable(
497 "TITLE",
499 );
500 if ($news["user_read"] > 0) {
501 $this->tpl->setVariable("TITLE_CLASS", 'class="light"');
502 }
503
504 $this->tpl->parseCurrentBlock();
505 $ilCtrl->setParameter($this, "news_context", $context_ref);
506 } else {
507 $ilCtrl->setParameter($this, "news_context", "");
508 }
509
510 // title
511 $this->tpl->setVariable(
512 "VAL_TITLE",
514 $news["context_obj_type"],
515 $news["title"],
516 $news["content_is_lang_var"],
517 $news["agg_ref_id"],
518 $news["aggregation"]
519 ))
520 );
521
522
523 if ($news["user_read"] > 0) {
524 $this->tpl->setVariable("A_CLASS", 'class="light"');
525 }
526
527 $ilCtrl->setParameter($this, "news_id", $news["id"]);
528 $this->tpl->setVariable(
529 "HREF_SHOW",
530 $ilCtrl->getLinkTarget($this, "showNews")
531 );
532 $ilCtrl->clearParameters($this);
533 }
534
538 public function getOverview()
539 {
543
544 return '<div class="small">' . ((int) count($this->getData())) . " " . $lng->txt("news_news_items") . "</div>";
545 }
546
550 public function showNews()
551 {
555 $ilAccess = $this->access;
556
557 // workaround for dynamic mode (if cache is disabled, showNews has no data)
558 if (empty(self::$st_data)) {
559 $this->setData($this->getNewsData());
560 }
561
562 $news_set = new ilSetting("news");
563 $enable_internal_rss = $news_set->get("enable_rss_for_internal");
564
565 include_once("./Services/News/classes/class.ilNewsItem.php");
566 $news = new ilNewsItem((int) $_GET["news_id"]);
567
568 $tpl = new ilTemplate("tpl.show_news.html", true, true, "Services/News");
569
570 // get current item in data set
571 $previous = $next = "";
572 reset($this->data);
573 $c = current($this->data);
574 $curr_cnt = 1;
575
576 while ($c["id"] > 0 &&
577 $c["id"] != $_GET["news_id"]) {
578 $previous = $c;
579 $c = next($this->data);
580 $curr_cnt++;
581 }
582
583 if (!is_array($c) && is_object($news) && $news->getId() > 0
584 && ilNewsItem::_lookupContextObjId($news->getId()) != $ilCtrl->getContextObjId()) {
585 throw new ilException("News ID does not match object context.");
586 }
587
588
589 // collect news items to show
590 $news_list = array();
591 if (is_array($c["aggregation"])) { // we have an aggregation
592 $news_list[] = array("ref_id" => $c["agg_ref_id"],
593 "agg_ref_id" => $c["agg_ref_id"],
594 "aggregation" => $c["aggregation"],
595 "user_id" => "",
596 "content_type" => "text",
597 "mob_id" => 0,
598 "visibility" => "",
599 "content" => "",
600 "content_long" => "",
601 "update_date" => $news->getUpdateDate(),
602 "creation_date" => "",
603 "content_is_lang_var" => false,
604 "loc_context" => $_GET["news_context"],
605 "context_obj_type" => $news->getContextObjType(),
606 "title" => "");
607
608 foreach ($c["aggregation"] as $c_item) {
609 ilNewsItem::_setRead($ilUser->getId(), $c_item["id"]);
610 $c_item["loc_context"] = $c_item["ref_id"];
611 $c_item["loc_stop"] = $_GET["news_context"];
612 $news_list[] = $c_item;
613 }
614 } else { // no aggregation, simple news item
615 $news_list[] = array(
616 "id" => $news->getId(),
617 "ref_id" => $_GET["news_context"],
618 "user_id" => $news->getUserId(),
619 "content_type" => $news->getContentType(),
620 "mob_id" => $news->getMobId(),
621 "visibility" => $news->getVisibility(),
622 "priority" => $news->getPriority(),
623 "content" => $news->getContent(),
624 "content_long" => $news->getContentLong(),
625 "update_date" => $news->getUpdateDate(),
626 "creation_date" => $news->getCreationDate(),
627 "context_sub_obj_type" => $news->getContextSubObjType(),
628 "context_obj_type" => $news->getContextObjType(),
629 "context_sub_obj_id" => $news->getContextSubObjId(),
630 "content_is_lang_var" => $news->getContentIsLangVar(),
631 "content_text_is_lang_var" => $news->getContentTextIsLangVar(),
632 "loc_context" => $_GET["news_context"],
633 "title" => $news->getTitle());
634 ilNewsItem::_setRead($ilUser->getId(), $_GET["news_id"]);
635 }
636
637 $row_css = "";
638 $cache_deleted = false;
639 foreach ($news_list as $item) {
640 $row_css = ($row_css != "tblrow1")
641 ? "tblrow1"
642 : "tblrow2";
643
644 if ($item["ref_id"] > 0 && !$ilAccess->checkAccess("read", "", $item["ref_id"])) {
645 $tpl->setCurrentBlock("content");
646 $tpl->setVariable("VAL_CONTENT", $lng->txt("news_sorry_not_accessible_anymore"));
647 $tpl->parseCurrentBlock();
648 $tpl->setCurrentBlock("item");
649 $tpl->setVariable("ITEM_ROW_CSS", $row_css);
650 $tpl->parseCurrentBlock();
651 if (!$cache_deleted) {
652 $this->acache->deleteEntry($ilUser->getId() . ":" . $_GET["ref_id"]);
653 $cache_deleted = true;
654 }
655 continue;
656 }
657
658 // user
659 if ($item["user_id"] > 0 && ilObject::_exists($item["user_id"])) {
660 // get login
661 if (ilObjUser::_exists($item["user_id"])) {
662 $user = new ilObjUser($item["user_id"]);
663 $displayname = $user->getLogin();
664 } else {
665 // this should actually not happen, since news entries
666 // should be deleted when the user is going to be removed
667 $displayname = "&lt;" . strtolower($lng->txt("deleted")) . "&gt;";
668 }
669
670 $tpl->setCurrentBlock("user_info");
671 $tpl->setVariable("VAL_AUTHOR", $displayname);
672 $tpl->setVariable("TXT_AUTHOR", $lng->txt("author"));
673 $tpl->parseCurrentBlock();
674 }
675
676 // media player
677 $ui_renderer = $this->ui->renderer();
678 $ui_factory = $this->ui->factory();
679 $this->ui->factory();
680 if ($item["mob_id"] > 0 && ilObject::_exists($item["mob_id"])) {
681 $media_path = $this->getMediaPath($item["mob_id"]);
682 $mime = ilObjMediaObject::getMimeType($media_path);
683 if (in_array($mime, array("image/jpeg", "image/svg+xml", "image/gif", "image/png"))) {
684 $title = basename($media_path);
685 $html = $ui_renderer->render($ui_factory->image()->responsive($media_path, $title));
686 } elseif (in_array($mime, array("audio/mpeg", "audio/ogg", "video/mp4", "video/x-flv", "video/webm"))) {
687 $mp = new ilMediaPlayerGUI();
688 $mp->setFile($media_path);
689 $mp->setDisplayHeight(200);
690 $html = $mp->getMediaPlayerHtml();
691 } else {
692 // download?
693 $html = "";
694 }
695
696
697 $tpl->setCurrentBlock("player");
698 $tpl->setVariable(
699 "PLAYER",
700 $html
701 );
702 $tpl->parseCurrentBlock();
703 }
704
705 // access
706 if ($enable_internal_rss && $item["visibility"] != "") {
707 $obj_id = ilObject::_lookupObjId($item["ref_id"]);
708 $tpl->setCurrentBlock("access");
709 $tpl->setVariable("TXT_ACCESS", $lng->txt("news_news_item_visibility"));
710 if ($item["visibility"] == NEWS_PUBLIC ||
711 ($item["priority"] == 0 &&
713 "news",
714 "public_notifications",
715 0,
716 $obj_id
717 ))) {
718 $tpl->setVariable("VAL_ACCESS", $lng->txt("news_visibility_public"));
719 } else {
720 $tpl->setVariable("VAL_ACCESS", $lng->txt("news_visibility_users"));
721 }
722 $tpl->parseCurrentBlock();
723 }
724
725 // content
726 include_once("./Services/News/classes/class.ilNewsRendererFactory.php");
727 $renderer = ilNewsRendererFactory::getRenderer($item["context_obj_type"]);
728 if (trim($item["content"]) != "") { // content
729 $it = new ilNewsItem($item["id"]);
730 $renderer->setNewsItem($it, $item["ref_id"]);
731 $tpl->setCurrentBlock("content");
732 $tpl->setVariable("VAL_CONTENT", $renderer->getDetailContent());
733 $tpl->parseCurrentBlock();
734 }
735 if ($item["update_date"] != $item["creation_date"]) { // update date
736 $tpl->setCurrentBlock("ni_update");
737 $tpl->setVariable("TXT_LAST_UPDATE", $lng->txt("last_update"));
738 $tpl->setVariable(
739 "VAL_LAST_UPDATE",
741 );
742 $tpl->parseCurrentBlock();
743 }
744
745 // creation date
746 if ($item["creation_date"] != "") {
747 $tpl->setCurrentBlock("ni_update");
748 $tpl->setVariable(
749 "VAL_CREATION_DATE",
750 ilDatePresentation::formatDate(new ilDateTime($item["creation_date"], IL_CAL_DATETIME))
751 );
752 $tpl->setVariable("TXT_CREATED", $lng->txt("created"));
753 $tpl->parseCurrentBlock();
754 }
755
756
757 // context / title
758 if ($_GET["news_context"] > 0) {
759 //$obj_id = ilObject::_lookupObjId($_GET["news_context"]);
760 $obj_id = ilObject::_lookupObjId($item["ref_id"]);
761 $obj_type = ilObject::_lookupType($obj_id);
762 $obj_title = ilObject::_lookupTitle($obj_id);
763
764 // file hack, not nice
765 if ($obj_type == "file") {
766 $ilCtrl->setParameterByClass("ilrepositorygui", "ref_id", $item["ref_id"]);
767 $url = $ilCtrl->getLinkTargetByClass("ilrepositorygui", "sendfile");
768 $ilCtrl->setParameterByClass("ilrepositorygui", "ref_id", $_GET["ref_id"]);
769
770 include_once "Services/UIComponent/Button/classes/class.ilLinkButton.php";
771 $button = ilLinkButton::getInstance();
772 $button->setUrl($url);
773 $button->setCaption("download");
774
775 $tpl->setCurrentBlock("download");
776 $tpl->setVariable("BUTTON_DOWNLOAD", $button->render());
777 $tpl->parseCurrentBlock();
778 }
779
780 // forum hack, not nice
781 $add = "";
782 if ($obj_type == "frm" && $item["context_sub_obj_type"] == "pos"
783 && $item["context_sub_obj_id"] > 0) {
784 include_once("./Modules/Forum/classes/class.ilObjForumAccess.php");
785 $pos = $item["context_sub_obj_id"];
787 if ($thread > 0) {
788 $add = "_" . $thread . "_" . $pos;
789 }
790 }
791
792 // wiki hack, not nice
793 if ($obj_type == "wiki" && $item["context_sub_obj_type"] == "wpg"
794 && $item["context_sub_obj_id"] > 0) {
795 include_once("./Modules/Wiki/classes/class.ilWikiPage.php");
796 $wptitle = ilWikiPage::lookupTitle($item["context_sub_obj_id"]);
797 if ($wptitle != "") {
798 $add = "_" . ilWikiUtil::makeUrlTitle($wptitle);
799 }
800 }
801
802 $url_target = "./goto.php?client_id=" . rawurlencode(CLIENT_ID) . "&target=" .
803 $obj_type . "_" . $item["ref_id"] . $add;
804
805 // lm page hack, not nice
806 if (in_array($obj_type, array("lm")) && $item["context_sub_obj_type"] == "pg"
807 && $item["context_sub_obj_id"] > 0) {
808 $url_target = "./goto.php?client_id=" . rawurlencode(CLIENT_ID) . "&target=" .
809 "pg_" . $item["context_sub_obj_id"] . "_" . $item["ref_id"];
810 }
811
812 // blog posting hack, not nice
813 if ($obj_type == "blog" && $item["context_sub_obj_type"] == "blp"
814 && $item["context_sub_obj_id"] > 0) {
815 $url_target = "./goto.php?client_id=" . rawurlencode(CLIENT_ID) . "&target=" .
816 "blog_" . $item["ref_id"] . "_" . $item["context_sub_obj_id"];
817 }
818
819 $context_opened = false;
820 if ($item["loc_context"] != null && $item["loc_context"] != $item["loc_stop"]) {
821 $tpl->setCurrentBlock("context");
822 $context_opened = true;
823 $cont_loc = new ilLocatorGUI();
824 $cont_loc->addContextItems($item["loc_context"], true, $item["loc_stop"]);
825 $tpl->setVariable("CONTEXT_LOCATOR", $cont_loc->getHTML());
826 }
827
828 //var_dump($item);
829 if ($item["no_context_title"] !== true) {
830 if (!$context_opened) {
831 $tpl->setCurrentBlock("context");
832 }
833 $tpl->setVariable("HREF_CONTEXT_TITLE", $url_target);
834 $tpl->setVariable("CONTEXT_TITLE", $obj_title);
835 $tpl->setVariable("IMG_CONTEXT_TITLE", ilObject::_getIcon($obj_id, "big", $obj_type));
836 }
837 if ($context_opened) {
838 $tpl->parseCurrentBlock();
839 }
840
841 $tpl->setVariable("HREF_TITLE", $url_target);
842 }
843
844 // title
845 $tpl->setVariable(
846 "VAL_TITLE",
848 $item["context_obj_type"],
849 $item["title"],
850 $item["content_is_lang_var"],
851 $item["agg_ref_id"],
852 $item["aggregation"]
853 )
854 );
855
856
857 $tpl->setCurrentBlock("item");
858 $tpl->setVariable("ITEM_ROW_CSS", $row_css);
859 $tpl->parseCurrentBlock();
860 }
861
862 include_once("./Services/PersonalDesktop/classes/class.ilPDContentBlockGUI.php");
863 $content_block = new ilPDContentBlockGUI();
864 $content_block->setContent($tpl->get());
865 if ($this->getProperty("title") != "") {
866 $content_block->setTitle($this->getProperty("title"));
867 } else {
868 $content_block->setTitle($lng->txt("news_internal_news"));
869 }
870 $this->addCloseCommand($content_block);
871
872 // previous
873 if ($previous != "") {
874 if ($previous["ref_id"] > 0) {
875 $ilCtrl->setParameter($this, "news_context", $previous["ref_id"]);
876 }
877 $ilCtrl->setParameter($this, "news_id", $previous["id"]);
878 $content_block->addFooterLink(
879 $lng->txt("previous"),
880 $ilCtrl->getLinkTarget($this, "showNews"),
881 "",
882 "",
883 true
884 );
885 $ilCtrl->setParameter($this, "news_context", "");
886 }
887
888 // next
889 if ($c = next($this->data)) {
890 if ($c["ref_id"] > 0) {
891 $ilCtrl->setParameter($this, "news_context", $c["ref_id"]);
892 }
893 $ilCtrl->setParameter($this, "news_id", $c["id"]);
894 $content_block->addFooterLink(
895 $lng->txt("next"),
896 $ilCtrl->getLinkTarget($this, "showNews"),
897 "",
898 "",
899 true
900 );
901 }
902 $ilCtrl->setParameter($this, "news_context", "");
903 $ilCtrl->setParameter($this, "news_id", "");
904 $content_block->setCurrentItemNumber($curr_cnt);
905 $content_block->setEnableNumInfo(true);
906 $content_block->setData($this->getData());
907
908 return $content_block->getHTML();
909 }
910
915 protected function getMediaPath(int $mob_id)
916 {
917 $media_path = "";
918 if ($mob_id > 0) {
919 $mob = new ilObjMediaObject($mob_id);
920 $med = $mob->getMediaItem("Standard");
921 if (strcasecmp("Reference", $med->getLocationType()) == 0) {
922 $media_path = $med->getLocation();
923 } else {
924 $media_path = ilObjMediaObject::_getURL($mob->getId()) . "/" . $med->getLocation();
925 }
926 }
927 return $media_path;
928 }
929
936 public function makeClickable($a_str)
937 {
938 // this fixes bug 8744. We assume that strings that contain < and >
939 // already contain html, we do not handle these
940 if (is_int(strpos($a_str, ">")) && is_int(strpos($a_str, "<"))) {
941 return $a_str;
942 }
943
944 return ilUtil::makeClickable($a_str);
945 }
946
947
951 public function unsubscribeNews()
952 {
955
956 include_once("./Services/News/classes/class.ilNewsSubscription.php");
958 $ilCtrl->returnToParent($this);
959 }
960
964 public function subscribeNews()
965 {
968
969 include_once("./Services/News/classes/class.ilNewsSubscription.php");
970 ilNewsSubscription::_subscribe($_GET["ref_id"], $ilUser->getId());
971 $ilCtrl->returnToParent($this);
972 }
973
977 public function fillFooter()
978 {
982
983 parent::fillFooter();
984
985 if ($this->show_view_selection) {
986 $this->showViewFooter();
987 }
988 }
989
993 public function showViewFooter()
994 {
998
999 return; // notifications always shown
1000
1001 $this->clearFooterLinks();
1002 $this->addFooterLink("[" . $lng->txt("news_first_letter_of_word_notification") . "] " .
1003 $lng->txt("news_notifications") . ": ", "", "", "", false, true);
1004 if ($this->view == "hide_notifications") {
1005 $this->addFooterLink(
1006 $lng->txt("show"),
1007 $ilCtrl->getLinkTarget(
1008 $this,
1009 "showNotifications"
1010 ),
1011 $ilCtrl->getLinkTarget(
1012 $this,
1013 "showNotifications",
1014 "",
1015 true
1016 ),
1017 "block_" . $this->getBlockType() . "_" . $this->block_id
1018 );
1019 $this->addFooterLink($lng->txt("hide"));
1020 } else {
1021 $this->addFooterLink($lng->txt("show"));
1022 $this->addFooterLink(
1023 $lng->txt("hide"),
1024 $ilCtrl->getLinkTarget(
1025 $this,
1026 "hideNotifications"
1027 ),
1028 $ilCtrl->getLinkTarget(
1029 $this,
1030 "hideNotifications",
1031 "",
1032 true
1033 ),
1034 "block_" . $this->getBlockType() . "_" . $this->block_id
1035 );
1036 }
1037
1038 $this->fillFooterLinks();
1039 }
1040
1041 public function showNotifications()
1042 {
1045
1046 include_once("Services/Block/classes/class.ilBlockSetting.php");
1047 $view = ilBlockSetting::_write(
1048 $this->getBlockType(),
1049 "view",
1050 "",
1051 $ilUser->getId(),
1052 $this->block_id
1053 );
1054
1055 // reload data
1056 $data = $this->getNewsData();
1057 $this->setData($data);
1058 $this->handleView();
1059
1060 if ($ilCtrl->isAsynch()) {
1061 echo $this->getHTML();
1062 exit;
1063 } else {
1064 $ilCtrl->returnToParent($this);
1065 }
1066 }
1067
1068 public function hideNotifications()
1069 {
1072
1073 include_once("Services/Block/classes/class.ilBlockSetting.php");
1074 $view = ilBlockSetting::_write(
1075 $this->getBlockType(),
1076 "view",
1077 "hide_notifications",
1078 $ilUser->getId(),
1079 $this->block_id
1080 );
1081
1082 // reload data
1083 $data = $this->getNewsData();
1084 $this->setData($data);
1085 $this->handleView();
1086
1087 if ($ilCtrl->isAsynch()) {
1088 echo $this->getHTML();
1089 exit;
1090 } else {
1091 $ilCtrl->returnToParent($this);
1092 }
1093 }
1094
1098 public function editSettings()
1099 {
1100 $this->initSettingsForm();
1101 return $this->settings_form->getHTML();
1102 }
1103
1107 public function initSettingsForm()
1108 {
1110 $lng = $this->lng;
1113 $ilTabs = $this->tabs;
1114
1115 $ilTabs->clearTargets();
1116
1117 $news_set = new ilSetting("news");
1118 $enable_internal_rss = $news_set->get("enable_rss_for_internal");
1119
1120 $public = ilBlockSetting::_lookup(
1121 $this->getBlockType(),
1122 "public_notifications",
1123 0,
1124 $this->block_id
1125 );
1126 $public_feed = ilBlockSetting::_lookup(
1127 $this->getBlockType(),
1128 "public_feed",
1129 0,
1130 $this->block_id
1131 );
1132 $hide_block = ilBlockSetting::_lookup(
1133 $this->getBlockType(),
1134 "hide_news_block",
1135 0,
1136 $this->block_id
1137 );
1138 $hide_news_per_date = ilBlockSetting::_lookup(
1139 $this->getBlockType(),
1140 "hide_news_per_date",
1141 0,
1142 $this->block_id
1143 );
1144 $hide_news_date = ilBlockSetting::_lookup(
1145 $this->getBlockType(),
1146 "hide_news_date",
1147 0,
1148 $this->block_id
1149 );
1150
1151 if ($hide_news_date != "") {
1152 $hide_news_date = explode(" ", $hide_news_date);
1153 }
1154
1155 include_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
1156 $this->settings_form = new ilPropertyFormGUI();
1157 $this->settings_form->setTitle($lng->txt("news_settings"));
1158
1159 // hide news block for learners
1160 if ($this->getProperty("hide_news_block_option")) {
1161 $ch = new ilCheckboxInputGUI(
1162 $lng->txt("news_hide_news_block"),
1163 "hide_news_block"
1164 );
1165 $ch->setInfo($lng->txt("news_hide_news_block_info"));
1166 $ch->setChecked($hide_block);
1167 $this->settings_form->addItem($ch);
1168
1169 $hnpd = new ilCheckboxInputGUI(
1170 $lng->txt("news_hide_news_per_date"),
1171 "hide_news_per_date"
1172 );
1173 $hnpd->setInfo($lng->txt("news_hide_news_per_date_info"));
1174 $hnpd->setChecked($hide_news_per_date);
1175
1176 $dt_prop = new ilDateTimeInputGUI(
1177 $lng->txt("news_hide_news_date"),
1178 "hide_news_date"
1179 );
1180 $dt_prop->setRequired(true);
1181 if ($hide_news_date != "") {
1182 $dt_prop->setDate(new ilDateTime($hide_news_date[0] . ' ' . $hide_news_date[1], IL_CAL_DATETIME));
1183 }
1184 #$dt_prop->setDate($hide_news_date[0]);
1185 #$dt_prop->setTime($hide_news_date[1]);
1186 $dt_prop->setShowTime(true);
1187 //$dt_prop->setInfo($lng->txt("news_hide_news_date_info"));
1188 $hnpd->addSubItem($dt_prop);
1189
1190 $this->settings_form->addItem($hnpd);
1191 }
1192
1193 // default visibility
1194 if ($this->getProperty("default_visibility_option") &&
1195 $enable_internal_rss) {
1196 $default_visibility = ilBlockSetting::_lookup(
1197 $this->getBlockType(),
1198 "default_visibility",
1199 0,
1200 $this->block_id
1201 );
1202 if ($default_visibility == "") {
1203 $default_visibility =
1205 }
1206
1207 // Default Visibility
1208 $radio_group = new ilRadioGroupInputGUI($lng->txt("news_default_visibility"), "default_visibility");
1209 $radio_option = new ilRadioOption($lng->txt("news_visibility_users"), "users");
1210 $radio_group->addOption($radio_option);
1211 $radio_option = new ilRadioOption($lng->txt("news_visibility_public"), "public");
1212 $radio_group->addOption($radio_option);
1213 $radio_group->setInfo($lng->txt("news_news_item_visibility_info"));
1214 $radio_group->setRequired(false);
1215 $radio_group->setValue($default_visibility);
1216 $this->settings_form->addItem($radio_group);
1217 }
1218
1219 // public notifications
1220 if ($this->getProperty("public_notifications_option") &&
1221 $enable_internal_rss) {
1222 $ch = new ilCheckboxInputGUI(
1223 $lng->txt("news_notifications_public"),
1224 "notifications_public"
1225 );
1226 $ch->setInfo($lng->txt("news_notifications_public_info"));
1227 $ch->setChecked($public);
1228 $this->settings_form->addItem($ch);
1229 }
1230
1231 // extra rss feed
1232 if ($enable_internal_rss) {
1233 $ch = new ilCheckboxInputGUI(
1234 $lng->txt("news_public_feed"),
1235 "notifications_public_feed"
1236 );
1237 $ch->setInfo($lng->txt("news_public_feed_info"));
1238 $ch->setChecked($public_feed);
1239 $this->settings_form->addItem($ch);
1240 }
1241
1242
1243 //$this->settings_form->addCheckboxProperty($lng->txt("news_public_feed"), "notifications_public_feed",
1244 // "1", $public_feed, $lng->txt("news_public_feed_info"));
1245 //if ($this->getProperty("public_notifications_option"))
1246 //{
1247 // $this->settings_form->addCheckboxProperty($lng->txt("news_notifications_public"), "notifications_public",
1248 // "1", $public, $lng->txt("news_notifications_public_info"));
1249 //}
1250 $this->settings_form->addCommandButton("saveSettings", $lng->txt("save"));
1251 $this->settings_form->addCommandButton("cancelSettings", $lng->txt("cancel"));
1252 $this->settings_form->setFormAction($ilCtrl->getFormaction($this));
1253 }
1254
1259 public static function addToSettingsForm(ilFormPropertyGUI $a_input)
1260 {
1261 global $DIC;
1262
1263 $lng = $DIC->language();
1264 $block_id = $DIC->ctrl()->getContextObjId();
1265
1266 $news_set = new ilSetting("news");
1267 $enable_internal_rss = $news_set->get("enable_rss_for_internal");
1268
1269 //$public_notification = ilBlockSetting::_lookup(self::$block_type, "public_notifications",0, $block_id);
1270 $public_feed = ilBlockSetting::_lookup(
1271 self::$block_type,
1272 "public_feed",
1273 0,
1274 $block_id
1275 );
1276
1277 $default_visibility = ilBlockSetting::_lookup(self::$block_type, "default_visibility", 0, $block_id);
1278 if ($default_visibility == "") {
1279 $default_visibility =
1281 }
1282 $radio_group = new ilRadioGroupInputGUI($lng->txt("news_default_visibility"), "default_visibility");
1283 $radio_option = new ilRadioOption($lng->txt("news_visibility_users"), "users");
1284 $radio_group->addOption($radio_option);
1285 $radio_option = new ilRadioOption($lng->txt("news_visibility_public"), "public");
1286 $radio_group->addOption($radio_option);
1287 $radio_group->setInfo($lng->txt("news_news_item_visibility_info"));
1288 $radio_group->setRequired(false);
1289 $radio_group->setValue($default_visibility);
1290 $a_input->addSubItem($radio_group);
1291
1292 // extra rss feed
1293 if ($enable_internal_rss) {
1294 $radio_rss = new ilCheckboxInputGUI(
1295 $lng->txt("news_public_feed"),
1296 "notifications_public_feed"
1297 );
1298 $radio_rss->setInfo($lng->txt("news_public_feed_info"));
1299 $radio_rss->setChecked($public_feed);
1300 $a_input->addSubItem($radio_rss);
1301 }
1302 }
1303
1304 public static function writeSettings($a_values)
1305 {
1306 global $DIC;
1307
1308 $block_id = $DIC->ctrl()->getContextObjId();
1309 foreach ($a_values as $key => $value) {
1310 ilBlockSetting::_write(self::$block_type, $key, $value, 0, $block_id);
1311 }
1312 }
1313
1317 public function cancelSettings()
1318 {
1320
1321 $ilCtrl->returnToParent($this);
1322 }
1323
1327 public function saveSettings()
1328 {
1331
1332 $this->initSettingsForm();
1333 if ($this->settings_form->checkInput()) {
1334 $news_set = new ilSetting("news");
1335 $enable_internal_rss = $news_set->get("enable_rss_for_internal");
1336
1337 if ($enable_internal_rss) {
1339 $this->getBlockType(),
1340 "public_notifications",
1341 $_POST["notifications_public"],
1342 0,
1343 $this->block_id
1344 );
1346 $this->getBlockType(),
1347 "public_feed",
1348 $_POST["notifications_public_feed"],
1349 0,
1350 $this->block_id
1351 );
1353 $this->getBlockType(),
1354 "default_visibility",
1355 $_POST["default_visibility"],
1356 0,
1357 $this->block_id
1358 );
1359 }
1360
1361 if ($this->getProperty("hide_news_block_option")) {
1363 $this->getBlockType(),
1364 "hide_news_block",
1365 $_POST["hide_news_block"],
1366 0,
1367 $this->block_id
1368 );
1370 $this->getBlockType(),
1371 "hide_news_per_date",
1372 $_POST["hide_news_per_date"],
1373 0,
1374 $this->block_id
1375 );
1376
1377 // hide date
1378 $hd = $this->settings_form->getItemByPostVar("hide_news_date");
1379 $hide_date = $hd->getDate();
1380 if ($_POST["hide_news_per_date"] && $hide_date != null) {
1382 $this->getBlockType(),
1383 "hide_news_date",
1384 $hide_date->get(IL_CAL_DATETIME),
1385 0,
1386 $this->block_id
1387 );
1388 } else {
1390 $this->getBlockType(),
1391 "hide_news_date",
1392 "",
1393 0,
1394 $this->block_id
1395 );
1396 }
1397 }
1398
1399 include_once("./Services/News/classes/class.ilNewsCache.php");
1400 $cache = new ilNewsCache();
1401 $cache->deleteEntry($ilUser->getId() . ":" . $_GET["ref_id"]);
1402
1403 $ilCtrl->returnToParent($this);
1404 } else {
1405 $this->settings_form->setValuesByPost();
1406 return $this->settings_form->getHtml();
1407 }
1408 }
1409
1413 public function showFeedUrl()
1414 {
1415 $lng = $this->lng;
1418
1419 include_once("./Services/News/classes/class.ilNewsItem.php");
1420
1421 $title = ilObject::_lookupTitle($this->block_id);
1422
1423 $tpl = new ilTemplate("tpl.show_feed_url.html", true, true, "Services/News");
1424 $tpl->setVariable(
1425 "TXT_TITLE",
1426 sprintf($lng->txt("news_feed_url_for"), $title)
1427 );
1428 $tpl->setVariable("TXT_INFO", $lng->txt("news_get_feed_info"));
1429 $tpl->setVariable("TXT_FEED_URL", $lng->txt("news_feed_url"));
1430 $tpl->setVariable(
1431 "VAL_FEED_URL",
1432 ILIAS_HTTP_PATH . "/feed.php?client_id=" . rawurlencode(CLIENT_ID) . "&user_id=" . $ilUser->getId() .
1433 "&obj_id=" . $this->block_id .
1434 "&hash=" . ilObjUser::_lookupFeedHash($ilUser->getId(), true)
1435 );
1436 $tpl->setVariable(
1437 "VAL_FEED_URL_TXT",
1438 ILIAS_HTTP_PATH . "/feed.php?client_id=" . rawurlencode(CLIENT_ID) . "&<br />user_id=" . $ilUser->getId() .
1439 "&obj_id=" . $this->block_id .
1440 "&hash=" . ilObjUser::_lookupFeedHash($ilUser->getId(), true)
1441 );
1442
1443 include_once("./Services/PersonalDesktop/classes/class.ilPDContentBlockGUI.php");
1444 $content_block = new ilPDContentBlockGUI();
1445 $content_block->setContent($tpl->get());
1446 $content_block->setTitle($lng->txt("news_internal_news"));
1447 $content_block->addHeaderCommand(
1448 $ilCtrl->getParentReturn($this),
1449 $lng->txt("close"),
1450 true
1451 );
1452
1453 return $content_block->getHTML();
1454 }
1455
1456 public function addCloseCommand($a_content_block)
1457 {
1458 $lng = $this->lng;
1460
1461 $a_content_block->addHeaderCommand(
1462 $ilCtrl->getParentReturn($this),
1463 $lng->txt("close"),
1464 true
1465 );
1466 }
1467
1468 public function getDynamic()
1469 {
1472
1473 if ($ilCtrl->getCmd() == "hideNotifications" ||
1474 $ilCtrl->getCmd() == "showNotifications") {
1475 return false;
1476 }
1477
1478 if ($ilCtrl->getCmdClass() != "ilcolumngui" && $ilCtrl->getCmd() != "enableJS") {
1479 $sess_feed_js = "";
1480 if (isset($_SESSION["il_feed_js"])) {
1481 $sess_feed_js = $_SESSION["il_feed_js"];
1482 }
1483
1484 if ($sess_feed_js != "n" &&
1485 ($ilUser->getPref("il_feed_js") != "n" || $sess_feed_js == "y")) {
1486 // do not get feed dynamically, if cache hit is given.
1487 // if (!$this->feed->checkCacheHit())
1488 // {
1489 return true;
1490 // }
1491 }
1492 }
1493
1494 return false;
1495 }
1496
1497 public function getDynamicReload()
1498 {
1500 $lng = $this->lng;
1501
1502 $ilCtrl->setParameterByClass(
1503 "ilcolumngui",
1504 "block_id",
1505 "block_" . $this->getBlockType() . "_" . $this->getBlockId()
1506 );
1507
1508 $rel_tpl = new ilTemplate("tpl.dynamic_reload.html", true, true, "Services/News");
1509 $rel_tpl->setVariable("TXT_LOADING", $lng->txt("news_loading_news"));
1510 $rel_tpl->setVariable("BLOCK_ID", "block_" . $this->getBlockType() . "_" . $this->getBlockId());
1511 $rel_tpl->setVariable(
1512 "TARGET",
1513 $ilCtrl->getLinkTargetByClass("ilcolumngui", "updateBlock", "", true)
1514 );
1515
1516 // no JS
1517 $rel_tpl->setVariable("TXT_NEWS_CLICK_HERE", $lng->txt("news_no_js_click_here"));
1518 $rel_tpl->setVariable(
1519 "TARGET_NO_JS",
1520 $ilCtrl->getLinkTargetByClass(strtolower(get_class($this)), "disableJS")
1521 );
1522
1523 return $rel_tpl->get();
1524 }
1525
1526 public function getJSEnabler()
1527 {
1529 $lng = $this->lng;
1530
1531 $ilCtrl->setParameterByClass(
1532 "ilcolumngui",
1533 "block_id",
1534 "block_" . $this->getBlockType() . "_" . $this->getBlockId()
1535 );
1536 //echo "hh";
1537 $rel_tpl = new ilTemplate("tpl.js_enabler.html", true, true, "Services/News");
1538 $rel_tpl->setVariable("BLOCK_ID", "block_" . $this->getBlockType() . "_" . $this->getBlockId());
1539 $rel_tpl->setVariable(
1540 "TARGET",
1541 $ilCtrl->getLinkTargetByClass(strtolower(get_class($this)), "enableJS", true, "", false)
1542 );
1543
1544 return $rel_tpl->get();
1545 }
1546
1547
1548 public function disableJS()
1549 {
1552
1553 $_SESSION["il_feed_js"] = "n";
1554 $ilUser->writePref("il_feed_js", "n");
1555 $ilCtrl->returnToParent($this);
1556 //$ilCtrl->redirectByClass("ilpersonaldesktopgui", "show");
1557 }
1558
1559 public function enableJS()
1560 {
1562 //echo "enableJS";
1563 $_SESSION["il_feed_js"] = "y";
1564 $ilUser->writePref("il_feed_js", "y");
1565 echo $this->getHTML();
1566 exit;
1567 }
1568}
user()
Definition: user.php:4
exit
Definition: backend.php:16
$_GET["client_id"]
$_POST["username"]
$_SESSION["AccountId"]
An exception for terminatinating execution or to throw for unit testing.
const IL_SCREEN_SIDE
const IL_SCREEN_CENTER
const IL_SCREEN_FULL
const IL_CAL_DATETIME
const NEWS_PUBLIC
This class represents a block method of a block.
setRowTemplate($a_rowtemplatename, $a_rowtemplatedir="")
Set Row Template Name.
setLimit($a_limit)
Set Limit.
setFooterInfo($a_footerinfo, $a_hide_and_icon=false)
Set Footer Info.
getCurrentDetailLevel()
Get Current Detail Level.
getBlockId()
Get Block Id.
setAvailableDetailLevels($a_max, $a_min=0)
Set Available Detail Levels.
addFooterLink( $a_text, $a_href="", $a_onclick="", $a_block_id="", $a_top=false, $a_omit_separator=false, $a_checked=false)
Add a footer text/link.
setData($a_data)
Set Data.
getRepositoryMode()
Get RepositoryMode.
fillFooterLinks($a_top=false, $a_numinfo="")
Fill footer links.
setDataSection($a_content)
Call this from overwritten fillDataSection(), if standard row based data is not used.
getProperty($a_property)
setTitle($a_title)
Set Title.
setBlockId($a_block_id=0)
Set Block Id.
setEnableNumInfo($a_enablenuminfo)
Set Enable Item Number Info.
addBlockCommand( $a_href, $a_text, $a_target="", $a_img="", $a_right_aligned=false, $a_checked=false, $a_html="")
Add Block Command.
clearFooterLinks()
Clear footer links.
getData()
Get Data.
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.
This class represents a checkbox property in a property form.
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false, $include_seconds=false)
Format a date @access public.
This class represents a date/time property in a property form.
@classDescription Date and time handling
Base class for ILIAS Exception handling.
This class represents a property in a property form.
static getInstance()
Factory.
locator handling class
User interface for media player.
BlockGUI class for block NewsForContext.
showViewFooter()
Show additional footer for show/hide notifications.
static getScreenMode()
Get Screen Mode for current command.
subscribeNews()
Subscribe current user from news.
unsubscribeNews()
Unsubscribe current user from news.
setEnableEdit($a_enable_edit=0)
Set EnableEdit.
handleView()
Handles show/hide notification view and removes notifications if hidden.
const OBJECTS_WITH_NEWS_SUBTAB
object type names with settings->news settings subtab
static addToSettingsForm(ilFormPropertyGUI $a_input)
Add inputs to the container news settings form to configure also the contextBlock options.
isRepositoryObject()
Returns whether block has a corresponding repository object.bool
fillRow($news)
get flat bookmark list for personal desktop
User Interface for NewsItem entities.
static _getDefaultVisibilityForRefId($a_ref_id)
Get default visibility for reference id.
static _setRead($a_user_id, $a_news_id)
Set item read.
static prepareNewsDataFromCache($a_cres)
Prepare news data from cache.
static determineNewsTitle( $a_context_obj_type, $a_title, $a_content_is_lang_var, $a_agg_ref_id=0, $a_aggregation="")
Determine title for news item entry.
static _lookupContextObjId($a_news_id)
Context Object ID.
static getRenderer($a_context_obj_type)
Get renderer.
static _subscribe($a_ref_id, $a_user_id)
Subscribe a user to an object (ref id).
static _unsubscribe($a_ref_id, $a_user_id)
Unsubscribe a user from an object (ref id).
static _getThreadForPosting($a_pos_id)
Get thread id for posting.
Class ilObjMediaObject.
static getMimeType($a_file, $a_external=null)
get mime type for file
static _getURL($a_mob_id)
get directory for files of media object (static)
static _lookupFeedHash($a_user_id, $a_create=false)
Lookup news feed hash for user.
static lookupTxtById($plugin_id, $lang_var)
static _lookupObjId($a_id)
static _lookupTitle($a_id)
lookup object title
static _lookupObjectId($a_ref_id)
lookup object id
static _exists($a_id, $a_reference=false, $a_type=null)
checks if an object exists in object_data@access public
static _lookupType($a_id, $a_reference=false)
lookup object type
BlockGUI class for (centered) Content on Personal Desktop.
This class represents a property form user interface.
static get($a_type, $a_href="")
Get icon html.
This class represents a property in a property form.
This class represents an option in a radio group.
ILIAS Setting Class.
special template class to simplify handling of ITX/PEAR
static makeClickable($a_text, $detectGotoLinks=false)
makeClickable In Texten enthaltene URLs und Mail-Adressen klickbar machen
static shortenWords($a_str, $a_len=30, $a_dots=true)
Ensure that the maximum word lenght within a text is not longer than $a_len.
static lookupTitle($a_page_id)
Checks whether a page with given title exists.
static makeUrlTitle($a_par)
Set page parameter for Url Embedding.
$key
Definition: croninfo.php:18
$html
Definition: example_001.php:87
global $ilCtrl
Definition: ilias.php:18
$row
global $ilSetting
Definition: privfeed.php:17
$type
$url
global $DIC
Definition: saml.php:7
settings()
Definition: settings.php:2
$this data['403_header']
$ilUser
Definition: imgupload.php:18