00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 include_once("./classes/class.ilObjectGUI.php");
00024
00025
00036 class ilObjNewsSettingsGUI extends ilObjectGUI
00037 {
00038 private static $ERROR_MESSAGE;
00044 public function __construct($a_data, $a_id, $a_call_by_reference = true, $a_prepare_output = true)
00045 {
00046 $this->type = 'nwss';
00047 parent::ilObjectGUI($a_data, $a_id, $a_call_by_reference, $a_prepare_output);
00048
00049 $this->lng->loadLanguageModule('news');
00050 $this->lng->loadLanguageModule('feed');
00051
00052 }
00053
00060 public function executeCommand()
00061 {
00062 global $rbacsystem,$ilErr,$ilAccess;
00063
00064 $next_class = $this->ctrl->getNextClass($this);
00065 $cmd = $this->ctrl->getCmd();
00066
00067 $this->prepareOutput();
00068
00069 if(!$ilAccess->checkAccess('read','',$this->object->getRefId()))
00070 {
00071 $ilErr->raiseError($this->lng->txt('no_permission'),$ilErr->WARNING);
00072 }
00073
00074 switch($next_class)
00075 {
00076 case 'ilpermissiongui':
00077 $this->tabs_gui->setTabActive('perm_settings');
00078 include_once("./classes/class.ilPermissionGUI.php");
00079 $perm_gui =& new ilPermissionGUI($this);
00080 $ret =& $this->ctrl->forwardCommand($perm_gui);
00081 break;
00082
00083 default:
00084 if(!$cmd || $cmd == 'view')
00085 {
00086 $cmd = "editSettings";
00087 }
00088
00089 $this->$cmd();
00090 break;
00091 }
00092 return true;
00093 }
00094
00101 public function getAdminTabs()
00102 {
00103 global $rbacsystem, $ilAccess;
00104
00105 if ($rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
00106 {
00107 $this->tabs_gui->addTarget("news_edit_news_settings",
00108 $this->ctrl->getLinkTarget($this, "editSettings"),
00109 array("editSettings", "view"));
00110 }
00111
00112 if ($rbacsystem->checkAccess('edit_permission',$this->object->getRefId()))
00113 {
00114 $this->tabs_gui->addTarget("perm_settings",
00115 $this->ctrl->getLinkTargetByClass('ilpermissiongui',"perm"),
00116 array(),'ilpermissiongui');
00117 }
00118 }
00119
00123 public function editSettings()
00124 {
00125 global $ilCtrl, $lng, $ilSetting;
00126
00127 $news_set = new ilSetting("news");
00128 $feed_set = new ilSetting("feed");
00129
00130 $enable_internal_news = $ilSetting->get("block_activated_news");
00131 $enable_internal_rss = $news_set->get("enable_rss_for_internal");
00132 $news_default_visibility = ($news_set->get("default_visibility") != "")
00133 ? $news_set->get("default_visibility")
00134 : "users";
00135 $disable_repository_feeds = $feed_set->get("disable_rep_feeds");
00136 $nr_personal_desktop_feeds = $ilSetting->get("block_limit_pdfeed");
00137
00138 $allow_shorter_periods = $news_set->get("allow_shorter_periods");
00139 $allow_longer_periods = $news_set->get("allow_longer_periods");
00140
00141 include_once("./Services/News/classes/class.ilNewsItem.php");
00142 $rss_period = ilNewsItem::_lookupRSSPeriod();
00143
00144 include_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
00145 $form = new ilPropertyFormGUI();
00146 $form->setFormAction($ilCtrl->getFormAction($this));
00147 $form->setTitle($lng->txt("news_settings"));
00148
00149
00150 $cb_prop = new ilCheckboxInputGUI($lng->txt("news_enable_internal_news"),
00151 "enable_internal_news");
00152 $cb_prop->setValue("1");
00153 $cb_prop->setInfo($lng->txt("news_enable_internal_news_info"));
00154 $cb_prop->setChecked($enable_internal_news);
00155 $form->addItem($cb_prop);
00156
00157
00158 $cb_prop = new ilCheckboxInputGUI($lng->txt("news_enable_internal_rss"),
00159 "enable_internal_rss");
00160 $cb_prop->setValue("1");
00161 $cb_prop->setInfo($lng->txt("news_enable_internal_rss_info"));
00162 $cb_prop->setChecked($enable_internal_rss);
00163
00164
00165 $rssp_opts = array(
00166 2 => "2 ".$lng->txt("days"),
00167 3 => "3 ".$lng->txt("days"),
00168 5 => "5 ".$lng->txt("days"),
00169 7 => "1 ".$lng->txt("week"),
00170 14 => "2 ".$lng->txt("weeks"),
00171 30 => "1 ".$lng->txt("month"),
00172 60 => "2 ".$lng->txt("months"));
00173 $rssp_sel = new ilSelectInputGUI($lng->txt("news_rss_period"),
00174 "news_rss_period");
00175 $rssp_sel->setOptions($rssp_opts);
00176 $rssp_sel->setValue((int) $rss_period);
00177 $cb_prop->addSubItem($rssp_sel);
00178
00179 $form->addItem($cb_prop);
00180
00181
00182 $radio_group = new ilRadioGroupInputGUI($lng->txt("news_default_visibility"), "news_default_visibility");
00183 $radio_option = new ilRadioOption($lng->txt("news_visibility_users"), "users");
00184 $radio_group->addOption($radio_option);
00185 $radio_option = new ilRadioOption($lng->txt("news_visibility_public"), "public");
00186 $radio_group->addOption($radio_option);
00187 $radio_group->setInfo($lng->txt("news_news_item_visibility_info"));
00188 $radio_group->setRequired(false);
00189 $radio_group->setValue($news_default_visibility);
00190 $form->addItem($radio_group);
00191
00192
00193 $nr_opts = array(50 => 50, 100 => 100, 200 => 200);
00194 $nr_sel = new ilSelectInputGUI($lng->txt("news_nr_of_items"),
00195 "news_max_items");
00196 $nr_sel->setInfo($lng->txt("news_nr_of_items_info"));
00197 $nr_sel->setOptions($nr_opts);
00198 $nr_sel->setValue($news_set->get("max_items"));
00199 $form->addItem($nr_sel);
00200
00201
00202 $min_opts = array(0 => 0, 1 => 1, 2 => 2, 5 => 5, 10 => 10, 20 => 20, 30 => 30, 60 => 60);
00203 $min_sel = new ilSelectInputGUI($lng->txt("news_acc_cache"),
00204 "news_acc_cache_mins");
00205 $min_sel->setInfo($lng->txt("news_acc_cache_info"));
00206 $min_sel->setOptions($min_opts);
00207 $min_sel->setValue($news_set->get("acc_cache_mins"));
00208 $form->addItem($min_sel);
00209
00210
00211 $per_opts = array(
00212 2 => "2 ".$lng->txt("days"),
00213 3 => "3 ".$lng->txt("days"),
00214 5 => "5 ".$lng->txt("days"),
00215 7 => "1 ".$lng->txt("week"),
00216 14 => "2 ".$lng->txt("weeks"),
00217 30 => "1 ".$lng->txt("month"),
00218 60 => "2 ".$lng->txt("months"),
00219 120 => "4 ".$lng->txt("months"),
00220 180 => "6 ".$lng->txt("months"),
00221 366 => "1 ".$lng->txt("year"));
00222 $per_sel = new ilSelectInputGUI($lng->txt("news_pd_period"),
00223 "news_pd_period");
00224 $per_sel->setInfo($lng->txt("news_pd_period_info"));
00225 $per_sel->setOptions($per_opts);
00226 $per_sel->setValue((int) ilNewsItem::_lookupDefaultPDPeriod());
00227 $form->addItem($per_sel);
00228
00229
00230 $sp_prop = new ilCheckboxInputGUI($lng->txt("news_allow_shorter_periods"),
00231 "allow_shorter_periods");
00232 $sp_prop->setValue("1");
00233 $sp_prop->setInfo($lng->txt("news_allow_shorter_periods_info"));
00234 $sp_prop->setChecked($allow_shorter_periods);
00235 $form->addItem($sp_prop);
00236
00237
00238 $lp_prop = new ilCheckboxInputGUI($lng->txt("news_allow_longer_periods"),
00239 "allow_longer_periods");
00240 $lp_prop->setValue("1");
00241 $lp_prop->setInfo($lng->txt("news_allow_longer_periods_info"));
00242 $lp_prop->setChecked($allow_longer_periods);
00243 $form->addItem($lp_prop);
00244
00245
00246 $sh = new ilFormSectionHeaderGUI();
00247 $sh->setTitle($lng->txt("feed_settings"));
00248 $form->addItem($sh);
00249
00250
00251 $cb_prop = new ilCheckboxInputGUI($lng->txt("feed_disable_rep_feeds"),
00252 "disable_repository_feeds");
00253 $cb_prop->setValue("1");
00254 $cb_prop->setInfo($lng->txt("feed_disable_rep_feeds_info"));
00255 $cb_prop->setChecked($disable_repository_feeds);
00256 $form->addItem($cb_prop);
00257
00258
00259 $sel = new ilSelectInputGUI($lng->txt("feed_nr_pd_feeds"), "nr_pd_feeds");
00260 $sel->setInfo($lng->txt("feed_nr_pd_feeds_info"));
00261 $sel->setOptions(array(0 => "0",
00262 1 => "1",
00263 2 => "2",
00264 3 => "3",
00265 4 => "4",
00266 5 => "5"));
00267 $sel->setValue($nr_personal_desktop_feeds);
00268 $form->addItem($sel);
00269
00270
00271 $prox = new ilTextInputGUI($lng->txt("feed_proxy"), "proxy");
00272 $prox->setInfo($lng->txt("feed_proxy_info"));
00273 $prox->setValue($feed_set->get("proxy"));
00274 $form->addItem($prox);
00275
00276
00277 $proxp = new ilTextInputGUI($lng->txt("feed_proxy_port"), "proxy_port");
00278 $proxp->setInfo($lng->txt("feed_proxy_port_info"));
00279 $proxp->setSize(10);
00280 $proxp->setMaxLength(10);
00281 $proxp->setValue($feed_set->get("proxy_port"));
00282 $form->addItem($proxp);
00283
00284
00285 $form->addCommandButton("saveSettings", $lng->txt("save"));
00286 $form->addCommandButton("view", $lng->txt("cancel"));
00287
00288 $this->tpl->setContent($form->getHTML());
00289 }
00290
00294 public function saveSettings()
00295 {
00296 global $ilCtrl, $ilSetting;
00297
00298 $news_set = new ilSetting("news");
00299 $feed_set = new ilSetting("feed");
00300 $ilSetting->set("block_activated_news", $_POST["enable_internal_news"]);
00301 $ilSetting->set("block_activated_pdnews", $_POST["enable_internal_news"]);
00302 $news_set->set("enable_rss_for_internal", $_POST["enable_internal_rss"]);
00303 $news_set->set("max_items", $_POST["news_max_items"]);
00304 $news_set->set("acc_cache_mins", $_POST["news_acc_cache_mins"]);
00305 $news_set->set("pd_period", $_POST["news_pd_period"]);
00306 $news_set->set("default_visibility", $_POST["news_default_visibility"]);
00307 $news_set->set("allow_shorter_periods", $_POST["allow_shorter_periods"]);
00308 $news_set->set("allow_longer_periods", $_POST["allow_longer_periods"]);
00309 $news_set->set("rss_period", $_POST["news_rss_period"]);
00310
00311 $feed_set->set("disable_rep_feeds", $_POST["disable_repository_feeds"]);
00312 $ilSetting->set("block_limit_pdfeed", $_POST["nr_pd_feeds"]);
00313 if ($_POST["nr_pd_feeds"] > 0)
00314 {
00315 $ilSetting->set("block_activated_pdfeed", 1);
00316 }
00317 else
00318 {
00319 $ilSetting->set("block_activated_pdfeed", 0);
00320 }
00321 $feed_set->set("proxy", trim($_POST["proxy"]));
00322 $feed_set->set("proxy_port", trim($_POST["proxy_port"]));
00323
00324 ilUtil::sendInfo($this->lng->txt("settings_saved"),true);
00325
00326 $ilCtrl->redirect($this, "view");
00327 }
00328 }
00329 ?>