ILIAS  Release_5_0_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilObjNewsSettingsGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3 include_once("./Services/Object/classes/class.ilObjectGUI.php");
4 
5 
17 {
18  private static $ERROR_MESSAGE;
24  public function __construct($a_data, $a_id, $a_call_by_reference = true, $a_prepare_output = true)
25  {
26  $this->type = 'nwss';
27  parent::ilObjectGUI($a_data, $a_id, $a_call_by_reference, $a_prepare_output);
28 
29  $this->lng->loadLanguageModule('news');
30  $this->lng->loadLanguageModule('feed');
31 
32  }
33 
40  public function executeCommand()
41  {
42  global $rbacsystem,$ilErr,$ilAccess;
43 
44  $next_class = $this->ctrl->getNextClass($this);
45  $cmd = $this->ctrl->getCmd();
46 
47  $this->prepareOutput();
48 
49  if(!$ilAccess->checkAccess('read','',$this->object->getRefId()))
50  {
51  $ilErr->raiseError($this->lng->txt('no_permission'),$ilErr->WARNING);
52  }
53 
54  switch($next_class)
55  {
56  case 'ilpermissiongui':
57  $this->tabs_gui->setTabActive('perm_settings');
58  include_once("Services/AccessControl/classes/class.ilPermissionGUI.php");
59  $perm_gui =& new ilPermissionGUI($this);
60  $ret =& $this->ctrl->forwardCommand($perm_gui);
61  break;
62 
63  default:
64  if(!$cmd || $cmd == 'view')
65  {
66  $cmd = "editSettings";
67  }
68 
69  $this->$cmd();
70  break;
71  }
72  return true;
73  }
74 
81  public function getAdminTabs()
82  {
83  global $rbacsystem, $ilAccess;
84 
85  if ($rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
86  {
87  $this->tabs_gui->addTarget("news_edit_news_settings",
88  $this->ctrl->getLinkTarget($this, "editSettings"),
89  array("editSettings", "view"));
90  }
91 
92  if ($rbacsystem->checkAccess('edit_permission',$this->object->getRefId()))
93  {
94  $this->tabs_gui->addTarget("perm_settings",
95  $this->ctrl->getLinkTargetByClass('ilpermissiongui',"perm"),
96  array(),'ilpermissiongui');
97  }
98  }
99 
103  public function editSettings()
104  {
105  global $ilCtrl, $lng, $ilSetting;
106 
107  $news_set = new ilSetting("news");
108  $feed_set = new ilSetting("feed");
109 
110  $enable_internal_news = $ilSetting->get("block_activated_news");
111  $enable_internal_rss = $news_set->get("enable_rss_for_internal");
112  $rss_title_format = $news_set->get("rss_title_format");
113  $enable_private_feed = $news_set->get("enable_private_feed");
114  $news_default_visibility = ($news_set->get("default_visibility") != "")
115  ? $news_set->get("default_visibility")
116  : "users";
117  $disable_repository_feeds = $feed_set->get("disable_rep_feeds");
118  $nr_personal_desktop_feeds = $ilSetting->get("block_limit_pdfeed");
119 
120  $allow_shorter_periods = $news_set->get("allow_shorter_periods");
121  $allow_longer_periods = $news_set->get("allow_longer_periods");
122 
123  include_once("./Services/News/classes/class.ilNewsItem.php");
124  $rss_period = ilNewsItem::_lookupRSSPeriod();
125 
126  include_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
127  $form = new ilPropertyFormGUI();
128  $form->setFormAction($ilCtrl->getFormAction($this));
129  $form->setTitle($lng->txt("news_settings"));
130 
131  // Enable internal news
132  $cb_prop = new ilCheckboxInputGUI($lng->txt("news_enable_internal_news"),
133  "enable_internal_news");
134  $cb_prop->setValue("1");
135  $cb_prop->setInfo($lng->txt("news_enable_internal_news_info"));
136  $cb_prop->setChecked($enable_internal_news);
137  $form->addItem($cb_prop);
138 
139  // Default Visibility
140  $radio_group = new ilRadioGroupInputGUI($lng->txt("news_default_visibility"), "news_default_visibility");
141  $radio_option = new ilRadioOption($lng->txt("news_visibility_users"), "users");
142  $radio_group->addOption($radio_option);
143  $radio_option = new ilRadioOption($lng->txt("news_visibility_public"), "public");
144  $radio_group->addOption($radio_option);
145  $radio_group->setInfo($lng->txt("news_news_item_visibility_info"));
146  $radio_group->setRequired(false);
147  $radio_group->setValue($news_default_visibility);
148  $form->addItem($radio_group);
149 
150  // Number of news items per object
151  $nr_opts = array(50 => 50, 100 => 100, 200 => 200);
152  $nr_sel = new ilSelectInputGUI($lng->txt("news_nr_of_items"),
153  "news_max_items");
154  $nr_sel->setInfo($lng->txt("news_nr_of_items_info"));
155  $nr_sel->setOptions($nr_opts);
156  $nr_sel->setValue($news_set->get("max_items"));
157  $form->addItem($nr_sel);
158 
159  // Access Cache
160  $min_opts = array(0 => 0, 1 => 1, 2 => 2, 5 => 5, 10 => 10, 20 => 20, 30 => 30, 60 => 60);
161  $min_sel = new ilSelectInputGUI($lng->txt("news_cache"),
162  "news_acc_cache_mins");
163  $min_sel->setInfo($lng->txt("news_cache_info"));
164  $min_sel->setOptions($min_opts);
165  $min_sel->setValue($news_set->get("acc_cache_mins"));
166  $form->addItem($min_sel);
167 
168  // PD News Period
169  $per_opts = array(
170  2 => "2 ".$lng->txt("days"),
171  3 => "3 ".$lng->txt("days"),
172  5 => "5 ".$lng->txt("days"),
173  7 => "1 ".$lng->txt("week"),
174  14 => "2 ".$lng->txt("weeks"),
175  30 => "1 ".$lng->txt("month"),
176  60 => "2 ".$lng->txt("months"),
177  120 => "4 ".$lng->txt("months"),
178  180 => "6 ".$lng->txt("months"),
179  366 => "1 ".$lng->txt("year"));
180  $per_sel = new ilSelectInputGUI($lng->txt("news_pd_period"),
181  "news_pd_period");
182  $per_sel->setInfo($lng->txt("news_pd_period_info"));
183  $per_sel->setOptions($per_opts);
184  $per_sel->setValue((int) ilNewsItem::_lookupDefaultPDPeriod());
185  $form->addItem($per_sel);
186 
187  // Allow user to choose lower values
188  $sp_prop = new ilCheckboxInputGUI($lng->txt("news_allow_shorter_periods"),
189  "allow_shorter_periods");
190  $sp_prop->setValue("1");
191  $sp_prop->setInfo($lng->txt("news_allow_shorter_periods_info"));
192  $sp_prop->setChecked($allow_shorter_periods);
193  $form->addItem($sp_prop);
194 
195  // Allow user to choose higher values
196  $lp_prop = new ilCheckboxInputGUI($lng->txt("news_allow_longer_periods"),
197  "allow_longer_periods");
198  $lp_prop->setValue("1");
199  $lp_prop->setInfo($lng->txt("news_allow_longer_periods_info"));
200  $lp_prop->setChecked($allow_longer_periods);
201  $form->addItem($lp_prop);
202 
203  // Enable rss for internal news
204  $cb_prop = new ilCheckboxInputGUI($lng->txt("news_enable_internal_rss"),
205  "enable_internal_rss");
206  $cb_prop->setValue("1");
207  $cb_prop->setInfo($lng->txt("news_enable_internal_rss_info"));
208  $cb_prop->setChecked($enable_internal_rss);
209 
210  // RSS News Period
211  $rssp_opts = array(
212  2 => "2 ".$lng->txt("days"),
213  3 => "3 ".$lng->txt("days"),
214  5 => "5 ".$lng->txt("days"),
215  7 => "1 ".$lng->txt("week"),
216  14 => "2 ".$lng->txt("weeks"),
217  30 => "1 ".$lng->txt("month"),
218  60 => "2 ".$lng->txt("months"),
219  120 => "4 ".$lng->txt("months"),
220  180 => "6 ".$lng->txt("months"),
221  365 => "1 ".$lng->txt("year")
222  );
223  $rssp_sel = new ilSelectInputGUI($lng->txt("news_rss_period"),
224  "news_rss_period");
225  $rssp_sel->setOptions($rssp_opts);
226  $rssp_sel->setValue((int) $rss_period);
227  $cb_prop->addSubItem($rssp_sel);
228 
229  // Section Header: RSS
230  $sh = new ilFormSectionHeaderGUI();
231  $sh->setTitle($lng->txt("news_rss"));
232  $form->addItem($sh);
233 
234  // title format for rss entries
235  $options = array(
236  "" => $lng->txt("news_rss_title_format_obj_news"),
237  "news_obj" => $lng->txt("news_rss_title_format_news_obj"),
238  );
239  $si = new ilSelectInputGUI($lng->txt("news_rss_title_format"), "rss_title_format");
240  $si->setOptions($options);
241  $si->setValue($rss_title_format);
242  $cb_prop->addSubItem($si);
243 
244  $form->addItem($cb_prop);
245 
246  // Enable private news feed
247  $cb_prop = new ilCheckboxInputGUI($lng->txt("news_enable_private_feed"),
248  "enable_private_feed");
249  $cb_prop->setValue("1");
250  $cb_prop->setInfo($lng->txt("news_enable_private_feed_info"));
251  $cb_prop->setChecked($enable_private_feed);
252  $form->addItem($cb_prop);
253 
254 
255  // Section Header: External Web Feeds Settings
256  $sh = new ilFormSectionHeaderGUI();
257  $sh->setTitle($lng->txt("feed_settings"));
258  $form->addItem($sh);
259 
260  // Number of External Feeds on personal desktop
261  $sel = new ilSelectInputGUI($lng->txt("feed_nr_pd_feeds"), "nr_pd_feeds");
262  $sel->setInfo($lng->txt("feed_nr_pd_feeds_info"));
263  $sel->setOptions(array(0 => "0",
264  1 => "1",
265  2 => "2",
266  3 => "3",
267  4 => "4",
268  5 => "5"));
269  $sel->setValue($nr_personal_desktop_feeds);
270  $form->addItem($sel);
271 
272  // Disable External Web Feeds in catetegories
273  $cb_prop = new ilCheckboxInputGUI($lng->txt("feed_disable_rep_feeds"),
274  "disable_repository_feeds");
275  $cb_prop->setValue("1");
276  $cb_prop->setInfo($lng->txt("feed_disable_rep_feeds_info"));
277  $cb_prop->setChecked($disable_repository_feeds);
278  $form->addItem($cb_prop);
279 
280  // command buttons
281  $form->addCommandButton("saveSettings", $lng->txt("save"));
282  $form->addCommandButton("view", $lng->txt("cancel"));
283 
284  $this->tpl->setContent($form->getHTML());
285  }
286 
290  public function saveSettings()
291  {
292  global $ilCtrl, $ilSetting;
293 
294  // empty news cache
295  include_once("./Services/News/classes/class.ilNewsCache.php");
296  $this->acache = new ilNewsCache();
297  $this->acache->deleteAllEntries();
298 
299  $news_set = new ilSetting("news");
300  $feed_set = new ilSetting("feed");
301 
302 
303 
304  $ilSetting->set("block_activated_news", $_POST["enable_internal_news"]);
305  $ilSetting->set("block_activated_pdnews", $_POST["enable_internal_news"]);
306  $news_set->set("enable_rss_for_internal", $_POST["enable_internal_rss"]);
307  $news_set->set("max_items", $_POST["news_max_items"]);
308  $news_set->set("acc_cache_mins", $_POST["news_acc_cache_mins"]);
309  $news_set->set("pd_period", $_POST["news_pd_period"]);
310  $news_set->set("default_visibility", $_POST["news_default_visibility"]);
311  $news_set->set("allow_shorter_periods", $_POST["allow_shorter_periods"]);
312  $news_set->set("allow_longer_periods", $_POST["allow_longer_periods"]);
313  $news_set->set("rss_period", $_POST["news_rss_period"]);
314  $news_set->set("rss_title_format", $_POST["rss_title_format"]);
315 
316  $feed_set->set("disable_rep_feeds", $_POST["disable_repository_feeds"]);
317  $ilSetting->set("block_limit_pdfeed", $_POST["nr_pd_feeds"]);
318  if ($_POST["nr_pd_feeds"] > 0)
319  {
320  $ilSetting->set("block_activated_pdfeed", 1);
321  }
322  else
323  {
324  $ilSetting->set("block_activated_pdfeed", 0);
325  }
326 
327  if ($_POST["enable_internal_rss"]!=0)
328  {
329  $news_set->set("enable_private_feed", $_POST["enable_private_feed"]);
330  }
331  else
332  {
333  $news_set->set("enable_private_feed", 0);
334  }
335 
336  ilUtil::sendSuccess($this->lng->txt("settings_saved"),true);
337 
338  $ilCtrl->redirect($this, "view");
339  }
340 
341 
342 }
343 ?>