/**
  * 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 _lookupUserPDPeriod($a_user_id)
 {
     global $ilSetting;
     $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();
     include_once "./Services/Block/classes/class.ilBlockSetting.php";
     $per = ilBlockSetting::_lookup("pdnews", "news_pd_period", $a_user_id, 0);
     // news period information
     if ($per <= 0 || !$allow_shorter_periods && $per < $default_per || !$allow_longer_periods && $per > $default_per) {
         $per = $default_per;
     }
     return $per;
 }
 /**
  * Edit news settings.
  */
 public function editSettings()
 {
     global $ilCtrl, $lng, $ilSetting;
     $news_set = new ilSetting("news");
     $feed_set = new ilSetting("feed");
     $enable_internal_news = $ilSetting->get("block_activated_news");
     $enable_internal_rss = $news_set->get("enable_rss_for_internal");
     $rss_title_format = $news_set->get("rss_title_format");
     $enable_private_feed = $news_set->get("enable_private_feed");
     $news_default_visibility = $news_set->get("default_visibility") != "" ? $news_set->get("default_visibility") : "users";
     $disable_repository_feeds = $feed_set->get("disable_rep_feeds");
     $nr_personal_desktop_feeds = $ilSetting->get("block_limit_pdfeed");
     $allow_shorter_periods = $news_set->get("allow_shorter_periods");
     $allow_longer_periods = $news_set->get("allow_longer_periods");
     include_once "./Services/News/classes/class.ilNewsItem.php";
     $rss_period = ilNewsItem::_lookupRSSPeriod();
     include_once "./Services/Form/classes/class.ilPropertyFormGUI.php";
     $form = new ilPropertyFormGUI();
     $form->setFormAction($ilCtrl->getFormAction($this));
     $form->setTitle($lng->txt("news_settings"));
     // Enable internal news
     $cb_prop = new ilCheckboxInputGUI($lng->txt("news_enable_internal_news"), "enable_internal_news");
     $cb_prop->setValue("1");
     $cb_prop->setInfo($lng->txt("news_enable_internal_news_info"));
     $cb_prop->setChecked($enable_internal_news);
     $form->addItem($cb_prop);
     // Default Visibility
     $radio_group = new ilRadioGroupInputGUI($lng->txt("news_default_visibility"), "news_default_visibility");
     $radio_option = new ilRadioOption($lng->txt("news_visibility_users"), "users");
     $radio_group->addOption($radio_option);
     $radio_option = new ilRadioOption($lng->txt("news_visibility_public"), "public");
     $radio_group->addOption($radio_option);
     $radio_group->setInfo($lng->txt("news_news_item_visibility_info"));
     $radio_group->setRequired(false);
     $radio_group->setValue($news_default_visibility);
     $form->addItem($radio_group);
     // Number of news items per object
     $nr_opts = array(50 => 50, 100 => 100, 200 => 200);
     $nr_sel = new ilSelectInputGUI($lng->txt("news_nr_of_items"), "news_max_items");
     $nr_sel->setInfo($lng->txt("news_nr_of_items_info"));
     $nr_sel->setOptions($nr_opts);
     $nr_sel->setValue($news_set->get("max_items"));
     $form->addItem($nr_sel);
     // Access Cache
     $min_opts = array(0 => 0, 1 => 1, 2 => 2, 5 => 5, 10 => 10, 20 => 20, 30 => 30, 60 => 60);
     $min_sel = new ilSelectInputGUI($lng->txt("news_cache"), "news_acc_cache_mins");
     $min_sel->setInfo($lng->txt("news_cache_info"));
     $min_sel->setOptions($min_opts);
     $min_sel->setValue($news_set->get("acc_cache_mins"));
     $form->addItem($min_sel);
     // PD News Period
     $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"));
     $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) ilNewsItem::_lookupDefaultPDPeriod());
     $form->addItem($per_sel);
     // Allow user to choose lower values
     $sp_prop = new ilCheckboxInputGUI($lng->txt("news_allow_shorter_periods"), "allow_shorter_periods");
     $sp_prop->setValue("1");
     $sp_prop->setInfo($lng->txt("news_allow_shorter_periods_info"));
     $sp_prop->setChecked($allow_shorter_periods);
     $form->addItem($sp_prop);
     // Allow user to choose higher values
     $lp_prop = new ilCheckboxInputGUI($lng->txt("news_allow_longer_periods"), "allow_longer_periods");
     $lp_prop->setValue("1");
     $lp_prop->setInfo($lng->txt("news_allow_longer_periods_info"));
     $lp_prop->setChecked($allow_longer_periods);
     $form->addItem($lp_prop);
     // Enable rss for internal news
     $cb_prop = new ilCheckboxInputGUI($lng->txt("news_enable_internal_rss"), "enable_internal_rss");
     $cb_prop->setValue("1");
     $cb_prop->setInfo($lng->txt("news_enable_internal_rss_info"));
     $cb_prop->setChecked($enable_internal_rss);
     // RSS News Period
     $rssp_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"), 365 => "1 " . $lng->txt("year"));
     $rssp_sel = new ilSelectInputGUI($lng->txt("news_rss_period"), "news_rss_period");
     $rssp_sel->setOptions($rssp_opts);
     $rssp_sel->setValue((int) $rss_period);
     $cb_prop->addSubItem($rssp_sel);
     // Section Header: RSS
     $sh = new ilFormSectionHeaderGUI();
     $sh->setTitle($lng->txt("news_rss"));
     $form->addItem($sh);
     // title format for rss entries
     $options = array("" => $lng->txt("news_rss_title_format_obj_news"), "news_obj" => $lng->txt("news_rss_title_format_news_obj"));
     $si = new ilSelectInputGUI($lng->txt("news_rss_title_format"), "rss_title_format");
     $si->setOptions($options);
     $si->setValue($rss_title_format);
     $cb_prop->addSubItem($si);
     $form->addItem($cb_prop);
     // Enable private news feed
     $cb_prop = new ilCheckboxInputGUI($lng->txt("news_enable_private_feed"), "enable_private_feed");
     $cb_prop->setValue("1");
     $cb_prop->setInfo($lng->txt("news_enable_private_feed_info"));
     $cb_prop->setChecked($enable_private_feed);
     $form->addItem($cb_prop);
     // Section Header: External Web Feeds Settings
     $sh = new ilFormSectionHeaderGUI();
     $sh->setTitle($lng->txt("feed_settings"));
     $form->addItem($sh);
     // Number of External Feeds on personal desktop
     $sel = new ilSelectInputGUI($lng->txt("feed_nr_pd_feeds"), "nr_pd_feeds");
     $sel->setInfo($lng->txt("feed_nr_pd_feeds_info"));
     $sel->setOptions(array(0 => "0", 1 => "1", 2 => "2", 3 => "3", 4 => "4", 5 => "5"));
     $sel->setValue($nr_personal_desktop_feeds);
     $form->addItem($sel);
     // Disable External Web Feeds in catetegories
     $cb_prop = new ilCheckboxInputGUI($lng->txt("feed_disable_rep_feeds"), "disable_repository_feeds");
     $cb_prop->setValue("1");
     $cb_prop->setInfo($lng->txt("feed_disable_rep_feeds_info"));
     $cb_prop->setChecked($disable_repository_feeds);
     $form->addItem($cb_prop);
     // command buttons
     $form->addCommandButton("saveSettings", $lng->txt("save"));
     $form->addCommandButton("view", $lng->txt("cancel"));
     $this->tpl->setContent($form->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;
 }