ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilObjLoggingSettingsGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2015 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 include_once './Services/Object/classes/class.ilObjectGUI.php';
5 
15 {
16  const SECTION_SETTINGS = 'settings';
17  const SUB_SECTION_MAIN = 'log_general_settings';
18  const SUB_SECTION_COMPONENTS = 'log_components';
19  const SUB_SECTION_ERROR = 'log_error_settings';
20 
21 
22  public $tpl;
23  public $lng;
24  public $ctrl;
25  protected $tabs_gui;
26  protected $form;
27  protected $settings;
28 
29 
30  protected $log;
31 
32 
33 
39  public function __construct($a_data, $a_id, $a_call_by_reference, $a_prepare_output = true)
40  {
41  global $DIC;
42 
43  $lng = $DIC['lng'];
44  $tpl = $DIC['tpl'];
45  $ilCtrl = $DIC['ilCtrl'];
46  $ilTabs = $DIC['ilTabs'];
47 
48  $this->type = 'logs';
49  parent::__construct($a_data, $a_id, $a_call_by_reference, $a_prepare_output);
50 
51  $this->lng = $lng;
52 
53  $this->tpl = $tpl;
54  $this->lng = $lng;
55  $this->ctrl = $ilCtrl;
56  $this->tabs_gui = $ilTabs;
57 
58  $this->initSettings();
59  $this->initErrorSettings();
60  $this->lng->loadLanguageModule('logging');
61  $this->lng->loadLanguageModule('log');
62 
63  include_once './Services/Logging/classes/public/class.ilLoggerFactory.php';
64  $this->log = ilLoggerFactory::getLogger('log');
65  }
66 
71  public function getLogger()
72  {
73  return $this->log;
74  }
75 
82  public function executeCommand()
83  {
84  $next_class = $this->ctrl->getNextClass($this);
85  $cmd = $this->ctrl->getCmd();
86  $this->prepareOutput();
87 
88  switch ($next_class) {
89  case 'ilpermissiongui':
90  $this->tabs_gui->setTabActive('perm_settings');
91  include_once("Services/AccessControl/classes/class.ilPermissionGUI.php");
92  $perm_gui = new ilPermissionGUI($this);
93  $ret = &$this->ctrl->forwardCommand($perm_gui);
94  break;
95 
96  default:
97  if ($cmd == "" || $cmd == "view") {
98  $cmd = "settings";
99  }
100  $this->$cmd();
101 
102  break;
103  }
104  return true;
105  }
106 
107 
114  public function getAdminTabs()
115  {
116  global $DIC;
117 
118  $ilAccess = $DIC['ilAccess'];
119 
120  if ($ilAccess->checkAccess("read", '', $this->object->getRefId())) {
121  $this->tabs_gui->addTarget(
122  static::SECTION_SETTINGS,
123  $this->ctrl->getLinkTargetByClass('ilobjloggingsettingsgui', "settings")
124  );
125  }
126  if ($ilAccess->checkAccess('edit_permission', '', $this->object->getRefId())) {
127  $this->tabs_gui->addTarget(
128  "perm_settings",
129  $this->ctrl->getLinkTargetByClass('ilpermissiongui', "perm")
130  );
131  }
132  }
133 
134  public function setSubTabs($a_section)
135  {
136  $this->tabs_gui->addSubTab(
137  static::SUB_SECTION_MAIN,
138  $this->lng->txt(static::SUB_SECTION_MAIN),
139  $this->ctrl->getLinkTarget($this, 'settings')
140  );
141  $this->tabs_gui->addSubTab(
142  static::SUB_SECTION_ERROR,
143  $this->lng->txt(static::SUB_SECTION_ERROR),
144  $this->ctrl->getLinkTarget($this, 'errorSettings')
145  );
146  $this->tabs_gui->addSubTab(
147  static::SUB_SECTION_COMPONENTS,
148  $this->lng->txt(static::SUB_SECTION_COMPONENTS),
149  $this->ctrl->getLinkTarget($this, 'components')
150  );
151 
152  $this->tabs_gui->activateSubTab($a_section);
153  }
154 
155  protected function initSettings()
156  {
157  include_once("Services/Logging/classes/class.ilLoggingDBSettings.php");
159  }
160 
165  public function getSettings()
166  {
167  return $this->settings;
168  }
169 
174  public function settings(ilPropertyFormGUI $form = null)
175  {
176  global $DIC;
177 
178  $ilAccess = $DIC['ilAccess'];
179  $ilErr = $DIC['ilErr'];
180 
181  if (!$ilAccess->checkAccess('read', '', $this->object->getRefId())) {
182  $ilErr->raiseError($this->lng->txt('permission_denied'), $ilErr->MESSAGE);
183  }
184 
185  $this->tabs_gui->setTabActive(static::SECTION_SETTINGS);
186  $this->setSubTabs(static::SUB_SECTION_MAIN);
187 
188  if (!$form instanceof ilPropertyFormGUI) {
189  $form = $this->initFormSettings();
190  }
191  $this->tpl->setContent($form->getHTML());
192 
193  $this->getLogger()->debug('Currrent level is ' . $this->getSettings()->getLevel());
194 
195  return true;
196  }
197 
202  public function updateSettings()
203  {
204  include_once 'Services/WebServices/RPC/classes/class.ilRPCServerSettings.php';
205 
206  global $DIC;
207 
208  $rbacsystem = $DIC['rbacsystem'];
209 
210  if (!$rbacsystem->checkAccess('write', $this->object->getRefId())) {
211  $this->ilias->raiseError($this->lng->txt("permission_denied"), $this->ilias->error_obj->MESSAGE);
212  }
213 
214 
215  $form = $this->initFormSettings();
216  if ($form->checkInput()) {
217  $this->getSettings()->setLevel($form->getInput('level'));
218  $this->getSettings()->enableCaching($form->getInput('cache'));
219  $this->getSettings()->setCacheLevel($form->getInput('cache_level'));
220  $this->getSettings()->enableMemoryUsage($form->getInput('memory'));
221  $this->getSettings()->enableBrowserLog($form->getInput('browser'));
222  $this->getSettings()->setBrowserUsers($form->getInput('browser_users'));
223 
224  $this->getLogger()->info(print_r($form->getInput('browser_users'), true));
225 
226  $this->getSettings()->update();
227 
228  ilUtil::sendSuccess($this->lng->txt('settings_saved'), true);
229  $this->ctrl->redirect($this, 'settings');
230  return true;
231  }
232 
233  ilUtil::sendFailure($this->lng->txt('err_check_input'));
234  $form->setValuesByPost();
235  $this->settings($form);
236 
237  return true;
238  }
239 
244  protected function initFormSettings()
245  {
246  global $DIC;
247 
248  $lng = $DIC['lng'];
249  $ilDB = $DIC['ilDB'];
250  $ilAccess = $DIC['ilAccess'];
251 
252  include_once './Services/Form/classes/class.ilPropertyFormGUI.php';
253  include_once './Services/Search/classes/class.ilSearchSettings.php';
254 
255  $form = new ilPropertyFormGUI();
256  $form->setTitle($this->lng->txt('logs_settings'));
257  $form->setFormAction($this->ctrl->getFormAction($this));
258 
259  if ($ilAccess->checkAccess('write', '', $this->object->getRefId())) {
260  $form->addCommandButton('updateSettings', $this->lng->txt('save'));
261  }
262 
263  $level = new ilSelectInputGUI($this->lng->txt('log_log_level'), 'level');
265  $level->setValue($this->getSettings()->getLevel());
266  $form->addItem($level);
267 
268  $cache = new ilCheckboxInputGUI($this->lng->txt('log_cache_'), 'cache');
269  $cache->setInfo($this->lng->txt('log_cache_info'));
270  $cache->setValue(1);
271  $cache->setChecked($this->getSettings()->isCacheEnabled());
272  $form->addItem($cache);
273 
274  $cache_level = new ilSelectInputGUI($this->lng->txt('log_cache_level'), 'cache_level');
275  $cache_level->setOptions(ilLogLevel::getLevelOptions());
276  $cache_level->setValue($this->getSettings()->getCacheLevel());
277  $cache->addSubItem($cache_level);
278 
279  $memory = new ilCheckboxInputGUI($this->lng->txt('log_memory'), 'memory');
280  $memory->setValue(1);
281  $memory->setChecked($this->getSettings()->isMemoryUsageEnabled());
282  $form->addItem($memory);
283 
284  // Browser handler
285  $browser = new ilCheckboxInputGUI($this->lng->txt('log_browser'), 'browser');
286  $browser->setValue(1);
287  $browser->setChecked($this->getSettings()->isBrowserLogEnabled());
288  $form->addItem($browser);
289 
290  // users
291  $users = new ilTextInputGUI($this->lng->txt('log_browser_users'), 'browser_users');
292  $users->setValue(current($this->getSettings()->getBrowserLogUsers()));
293  $users->setMulti(true);
294  $users->setMultiValues($this->getSettings()->getBrowserLogUsers());
295 
296  $this->getLogger()->debug(print_r($this->getSettings()->getBrowserLogUsers(), true));
297 
298  $browser->addSubItem($users);
299 
300 
301  return $form;
302  }
303 
304 
308  protected function components()
309  {
310  $this->tabs_gui->activateTab(static::SECTION_SETTINGS);
311  $this->setSubTabs(static::SUB_SECTION_COMPONENTS);
312 
313  include_once './Services/Logging/classes/class.ilLogComponentTableGUI.php';
314  $table = new ilLogComponentTableGUI($this, 'components');
315  $table->setEditable($this->checkPermissionBool('write'));
316  $table->init();
317  $table->parse();
318 
319  $GLOBALS['DIC']['tpl']->setContent($table->getHTML());
320  }
321 
325  protected function saveComponentLevels()
326  {
327  $this->checkPermission('write');
328 
329  foreach ($_POST['level'] as $component_id => $value) {
330  ilLoggerFactory::getLogger('log')->debug($component_id);
331  ilLoggerFactory::getLogger('log')->debug($value);
332  include_once './Services/Logging/classes/class.ilLogComponentLevel.php';
333  $level = new ilLogComponentLevel($component_id, $value);
334  $level->update();
335  }
336 
337  ilUtil::sendSuccess($this->lng->txt('settings_saved'), true);
338  $this->ctrl->redirect($this, 'components');
339  }
340 
341  protected function resetComponentLevels()
342  {
343  $this->checkPermission('write');
344 
345  foreach (ilLogComponentLevels::getInstance()->getLogComponents() as $component) {
346  $component->setLevel(null);
347  $component->update();
348  }
349  ilUtil::sendSuccess($this->lng->txt('settings_saved'), true);
350  $this->ctrl->redirect($this, 'components');
351  }
352 
353  protected function errorSettings()
354  {
355  global $DIC;
356 
357  $ilAccess = $DIC['ilAccess'];
358  $ilErr = $DIC['ilErr'];
359 
360  if (!$ilAccess->checkAccess('read', '', $this->object->getRefId())) {
361  $ilErr->raiseError($this->lng->txt('permission_denied'), $ilErr->MESSAGE);
362  }
363 
364  $this->tabs_gui->setTabActive(static::SECTION_SETTINGS);
365  $this->setSubTabs(static::SUB_SECTION_ERROR);
366 
367  if (!$form instanceof ilPropertyFormGUI) {
368  $form = $this->initFormErrorSettings();
369  }
370  $this->tpl->setContent($form->getHTML());
371 
372  $this->getLogger()->debug('Currrent level is ' . $this->getSettings()->getLevel());
373  }
374 
375  protected function updateErrorSettings()
376  {
377  global $DIC;
378 
379  $rbacsystem = $DIC['rbacsystem'];
380 
381  if (!$rbacsystem->checkAccess('write', $this->object->getRefId())) {
382  $this->ilias->raiseError($this->lng->txt("permission_denied"), $this->ilias->error_obj->MESSAGE);
383  }
384 
385  $form = $this->initFormErrorSettings();
386  if ($form->checkInput()) {
387  $this->getErrorSettings()->setMail($form->getInput('error_mail'));
388  $this->getErrorSettings()->update();
389 
390  ilUtil::sendSuccess($this->lng->txt('error_settings_saved'), true);
391  $this->ctrl->redirect($this, 'errorSettings');
392  }
393 
394  ilUtil::sendFailure($this->lng->txt('err_check_input'));
395  $form->setValuesByPost();
396  $this->errorSettings($form);
397  }
398 
399  protected function initFormErrorSettings()
400  {
401  global $DIC;
402 
403  $lng = $DIC['lng'];
404  $ilDB = $DIC['ilDB'];
405  $ilAccess = $DIC['ilAccess'];
406 
407  require_once './Services/Form/classes/class.ilPropertyFormGUI.php';
408  require_once './Services/Search/classes/class.ilSearchSettings.php';
409 
410  $form = new ilPropertyFormGUI();
411  $form->setTitle($this->lng->txt('logs_settings'));
412  $form->setFormAction($this->ctrl->getFormAction($this));
413 
414  if ($ilAccess->checkAccess('write', '', $this->object->getRefId())) {
415  $form->addCommandButton('updateErrorSettings', $this->lng->txt('save'));
416  }
417 
418  $folder = new ilNonEditableValueGUI($this->lng->txt('log_error_folder'), 'error_folder');
419  $folder->setValue($this->getErrorSettings()->folder());
420  $form->addItem($folder);
421 
422  $mail = new ilTextInputGUI($this->lng->txt('log_error_mail'), 'error_mail');
423  $mail->setValue($this->getErrorSettings()->mail());
424  $form->addItem($mail);
425 
426  return $form;
427  }
428 
429  protected function initErrorSettings()
430  {
431  require_once("Services/Logging/classes/error/class.ilLoggingErrorSettings.php");
432  $this->error_settings = ilLoggingErrorSettings::getInstance();
433  }
434 
435  protected function getErrorSettings()
436  {
437  return $this->error_settings;
438  }
439 }
$browser
This class represents a selection list property in a property form.
This class represents a property form user interface.
global $DIC
Definition: saml.php:7
static getLevelOptions()
Get log level options.
This class represents a checkbox property in a property form.
mail($to, $subject, $message, $additional_headers=null, $additional_parameters=null)
global $ilCtrl
Definition: ilias.php:18
setInfo($a_info)
Set Information Text.
prepareOutput($a_show_subobjects=true)
prepare output
Class ilObjectGUI Basic methods of all Output classes.
setValue($a_value)
Set Value.
This class represents a text property in a property form.
redirection script todo: (a better solution should control the processing via a xml file) ...
settings(ilPropertyFormGUI $form=null)
Show settings public.
individual log levels for components
setOptions($a_options)
Set Options.
static getInstance()
Get instance.
$users
Definition: authpage.php:44
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
updateSettings()
Save settings public.
This class represents a non editable value in a property form.
global $ilDB
$ret
Definition: parser.php:6
checkPermission($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission and redirect on error.
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
static getLogger($a_component_id)
Get component logger.
__construct($a_data, $a_id, $a_call_by_reference, $a_prepare_output=true)
Constructor.
if(empty($password)) $table
Definition: pwgen.php:24
setValue($a_value)
Set Value.
Component logger with individual log levels by component id.
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission.
$_POST["username"]
$GLOBALS['JPEG_Segment_Names']
Global Variable: XMP_tag_captions.