/**
  * Init Filter
  */
 function initFilter()
 {
     global $lng, $ilUser;
     // period
     $per = $_SESSION["news_pd_news_per"] != "" ? $_SESSION["news_pd_news_per"] : ilNewsItem::_lookupUserPDPeriod($ilUser->getId());
     $news_set = new ilSetting("news");
     $allow_shorter_periods = $news_set->get("allow_shorter_periods");
     $allow_longer_periods = $news_set->get("allow_longer_periods");
     $default_per = ilNewsItem::_lookupDefaultPDPeriod();
     $options = array(2 => sprintf($lng->txt("news_period_x_days"), 2), 3 => sprintf($lng->txt("news_period_x_days"), 3), 5 => sprintf($lng->txt("news_period_x_days"), 5), 7 => $lng->txt("news_period_1_week"), 14 => sprintf($lng->txt("news_period_x_weeks"), 2), 30 => $lng->txt("news_period_1_month"), 60 => sprintf($lng->txt("news_period_x_months"), 2), 120 => sprintf($lng->txt("news_period_x_months"), 4), 180 => sprintf($lng->txt("news_period_x_months"), 6), 366 => $lng->txt("news_period_1_year"));
     $unset = array();
     foreach ($options as $k => $opt) {
         if (!$allow_shorter_periods && $k < $default_per) {
             $unset[$k] = $k;
         }
         if (!$allow_longer_periods && $k > $default_per) {
             $unset[$k] = $k;
         }
     }
     foreach ($unset as $k) {
         unset($options[$k]);
     }
     include_once "./Services/Form/classes/class.ilSelectInputGUI.php";
     $si = new ilSelectInputGUI($this->lng->txt("news_time_period"), "news_per");
     $si->setOptions($options);
     $si->setValue($per);
     $this->addFilterItem($si);
     // related to...
     $si = new ilSelectInputGUI($this->lng->txt("context"), "news_ref_id");
     $si->setOptions($this->contexts);
     $si->setValue($this->selected_context);
     $this->addFilterItem($si);
 }
 function view()
 {
     global $ilUser, $lng, $tpl, $ilCtrl;
     $ref_ids = array();
     $obj_ids = array();
     $pd_items = $ilUser->getDesktopItems();
     foreach ($pd_items as $item) {
         $ref_ids[] = $item["ref_id"];
         $obj_ids[] = $item["obj_id"];
     }
     $sel_ref_id = $_GET["news_ref_id"] > 0 ? $_GET["news_ref_id"] : $ilUser->getPref("news_sel_ref_id");
     include_once "./Services/News/classes/class.ilNewsItem.php";
     $per = $_SESSION["news_pd_news_per"] != "" ? $_SESSION["news_pd_news_per"] : ilNewsItem::_lookupUserPDPeriod($ilUser->getId());
     $news_obj_ids = ilNewsItem::filterObjIdsPerNews($obj_ids, $per);
     // related objects (contexts) of news
     $contexts[0] = $lng->txt("news_all_items");
     $conts = array();
     $sel_has_news = false;
     foreach ($ref_ids as $ref_id) {
         $obj_id = ilObject::_lookupObjId($ref_id);
         $title = ilObject::_lookupTitle($obj_id);
         $conts[$ref_id] = $title;
         if ($sel_ref_id == $ref_id) {
             $sel_has_news = true;
         }
     }
     $cnt = array();
     $nitem = new ilNewsItem();
     $news_items = $nitem->_getNewsItemsOfUser($ilUser->getId(), false, true, $per, $cnt);
     // reset selected news ref id, if no news are given for id
     if (!$sel_has_news) {
         $sel_ref_id = "";
     }
     asort($conts);
     foreach ($conts as $ref_id => $title) {
         $contexts[$ref_id] = $title . " (" . (int) $cnt[$ref_id] . ")";
     }
     if ($sel_ref_id > 0) {
         $obj_id = ilObject::_lookupObjId($sel_ref_id);
         $obj_type = ilObject::_lookupType($obj_id);
         $nitem->setContextObjId($obj_id);
         $nitem->setContextObjType($obj_type);
         $news_items = $nitem->getNewsForRefId($sel_ref_id, false, false, $per, true);
     }
     include_once "./Services/News/classes/class.ilPDNewsTableGUI.php";
     $pd_news_table = new ilPDNewsTableGUI($this, "view", $contexts, $sel_ref_id);
     $pd_news_table->setData($news_items);
     $pd_news_table->setNoEntriesText($lng->txt("news_no_news_items"));
     $tpl->setContent($pd_news_table->getHTML());
 }
 /**
  * Show settings screen.
  */
 function editSettings(ilPropertyFormGUI $a_private_form = null)
 {
     global $ilUser, $lng, $ilCtrl, $ilSetting;
     $news_set = new ilSetting("news");
     $enable_internal_rss = $news_set->get("enable_rss_for_internal");
     $allow_shorter_periods = $news_set->get("allow_shorter_periods");
     $allow_longer_periods = $news_set->get("allow_longer_periods");
     $enable_private_feed = $news_set->get("enable_private_feed");
     if (!$a_private_form && ($allow_shorter_periods || $allow_longer_periods)) {
         include_once "./Services/Form/classes/class.ilPropertyFormGUI.php";
         $form = new ilPropertyFormGUI();
         $form->setFormAction($ilCtrl->getFormaction($this));
         $form->setTitle($lng->txt("news_settings"));
         include_once "./Services/News/classes/class.ilNewsItem.php";
         $default_per = ilNewsItem::_lookupDefaultPDPeriod();
         $per = ilNewsItem::_lookupUserPDPeriod($ilUser->getId());
         $form->setTableWidth("100%");
         $per_opts = array(2 => "2 " . $lng->txt("days"), 3 => "3 " . $lng->txt("days"), 5 => "5 " . $lng->txt("days"), 7 => "1 " . $lng->txt("week"), 14 => "2 " . $lng->txt("weeks"), 30 => "1 " . $lng->txt("month"), 60 => "2 " . $lng->txt("months"), 120 => "4 " . $lng->txt("months"), 180 => "6 " . $lng->txt("months"), 366 => "1 " . $lng->txt("year"));
         $unset = array();
         foreach ($per_opts as $k => $opt) {
             if (!$allow_shorter_periods && $k < $default_per) {
                 $unset[$k] = $k;
             }
             if (!$allow_longer_periods && $k > $default_per) {
                 $unset[$k] = $k;
             }
         }
         foreach ($unset as $k) {
             unset($per_opts[$k]);
         }
         $per_sel = new ilSelectInputGUI($lng->txt("news_pd_period"), "news_pd_period");
         //$per_sel->setInfo($lng->txt("news_pd_period_info"));
         $per_sel->setOptions($per_opts);
         $per_sel->setValue((int) $per);
         $form->addItem($per_sel);
         //$form->addCheckboxProperty($lng->txt("news_public_feed"), "notifications_public_feed",
         //	"1", $public_feed, $lng->txt("news_public_feed_info"));
         //if ($this->getProperty("public_notifications_option"))
         //{
         //	$form->addCheckboxProperty($lng->txt("news_notifications_public"), "notifications_public",
         //		"1", $public, $lng->txt("news_notifications_public_info"));
         //}
         $form->addCommandButton("saveSettings", $lng->txt("save"));
         $form->addCommandButton("cancelSettings", $lng->txt("cancel"));
         $returnForm = $form->getHTML();
     }
     if ($enable_private_feed) {
         if (!$a_private_form) {
             $a_private_form = $this->initPrivateSettingsForm();
         }
         $returnForm .= $returnForm == "" ? $a_private_form->getHTML() : "<br>" . $a_private_form->getHTML();
     }
     return $returnForm;
 }
 /**
  * Show settings screen.
  */
 function editSettings()
 {
     global $ilUser, $lng, $ilCtrl, $ilSetting;
     $news_set = new ilSetting("news");
     $enable_internal_rss = $news_set->get("enable_rss_for_internal");
     $allow_shorter_periods = $news_set->get("allow_shorter_periods");
     $allow_longer_periods = $news_set->get("allow_longer_periods");
     $enable_private_feed = $news_set->get("enable_private_feed");
     include_once "./Services/Form/classes/class.ilPropertyFormGUI.php";
     if ($allow_shorter_periods || $allow_longer_periods) {
         $form = new ilPropertyFormGUI();
         include_once "./Services/News/classes/class.ilNewsItem.php";
         $default_per = ilNewsItem::_lookupDefaultPDPeriod();
         $per = ilNewsItem::_lookupUserPDPeriod($ilUser->getId());
         $form->setTitle($lng->txt("news_settings"));
         $form->setTitleIcon(ilUtil::getImagePath("icon_news.png"));
         $form->setTableWidth("100%");
         $per_opts = array(2 => "2 " . $lng->txt("days"), 3 => "3 " . $lng->txt("days"), 5 => "5 " . $lng->txt("days"), 7 => "1 " . $lng->txt("week"), 14 => "2 " . $lng->txt("weeks"), 30 => "1 " . $lng->txt("month"), 60 => "2 " . $lng->txt("months"), 120 => "4 " . $lng->txt("months"), 180 => "6 " . $lng->txt("months"), 366 => "1 " . $lng->txt("year"));
         $unset = array();
         foreach ($per_opts as $k => $opt) {
             if (!$allow_shorter_periods && $k < $default_per) {
                 $unset[$k] = $k;
             }
             if (!$allow_longer_periods && $k > $default_per) {
                 $unset[$k] = $k;
             }
         }
         foreach ($unset as $k) {
             unset($per_opts[$k]);
         }
         $per_sel = new ilSelectInputGUI($lng->txt("news_pd_period"), "news_pd_period");
         //$per_sel->setInfo($lng->txt("news_pd_period_info"));
         $per_sel->setOptions($per_opts);
         $per_sel->setValue((int) $per);
         $form->addItem($per_sel);
         //$form->addCheckboxProperty($lng->txt("news_public_feed"), "notifications_public_feed",
         //	"1", $public_feed, $lng->txt("news_public_feed_info"));
         //if ($this->getProperty("public_notifications_option"))
         //{
         //	$form->addCheckboxProperty($lng->txt("news_notifications_public"), "notifications_public",
         //		"1", $public, $lng->txt("news_notifications_public_info"));
         //}
         $form->addCommandButton("saveSettings", $lng->txt("save"));
         $form->addCommandButton("cancelSettings", $lng->txt("cancel"));
         $form->setFormAction($ilCtrl->getFormaction($this));
         $returnForm = $form->getHTML();
     }
     if ($enable_private_feed) {
         $feed_form = new ilPropertyFormGUI();
         $feed_form->setTitle($lng->txt("priv_feed_settings"));
         $feed_form->setTitleIcon(ilUtil::getImagePath("privrss.png"));
         $feed_form->setTableWidth("100%");
         $enable_private_feed = new ilCheckboxInputGUI($lng->txt("news_enable_private_feed"), "enable_private_feed");
         $retype_pass = new ilTextInputGUI($lng->txt("retype_password"), "retype_password");
         $desired_pass = new ilTextInputGUI($lng->txt("desired_password"), "desired_password");
         // user has already valid password
         if (ilObjUser::_getFeedPass($_SESSION[AccountId]) != false) {
             $enable_private_feed->setChecked(true);
             $desired_pass->setValue("******");
         }
         $desired_pass->setInputType("password");
         $retype_pass->setInputType("password");
         $feed_form->addItem($enable_private_feed);
         $feed_form->addItem($desired_pass);
         $feed_form->addItem($retype_pass);
         $feed_form->addCommandButton("changeFeedSettings", $lng->txt("save"));
         $feed_form->addCommandButton("cancelSettings", $lng->txt("cancel"));
         $feed_form->setFormAction($ilCtrl->getFormaction($this));
         $returnForm .= $returnForm == "" ? $feed_form->getHTML() : "<br>" . $feed_form->getHTML();
     }
     return $returnForm;
 }