ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilObjUserTrackingGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 include_once "./Services/Object/classes/class.ilObjectGUI.php";
5 
20 {
21  public $tpl = null;
22  public $lng = null;
23  public $ctrl = null;
24 
25  public function __construct($a_data, $a_id, $a_call_by_reference)
26  {
27  global $tpl,$lng,$ilCtrl;
28 
29  $this->type = "trac";
30  parent::__construct($a_data, $a_id, $a_call_by_reference, false);
31 
32  $this->tpl = $tpl;
33  $this->lng = $lng;
34  $this->lng->loadLanguageModule('trac');
35 
36  $this->ctrl = $ilCtrl;
37  }
38 
39  public function executeCommand()
40  {
41  $next_class = $this->ctrl->getNextClass();
42  $this->ctrl->setReturn($this, "show");
43  $this->prepareOutput();
44 
45  switch ($next_class) {
46  case 'ilpermissiongui':
47  include_once("Services/AccessControl/classes/class.ilPermissionGUI.php");
48  $perm_gui = new ilPermissionGUI($this);
49  $ret =&$this->ctrl->forwardCommand($perm_gui);
50  break;
51 
52  case 'illearningprogressgui':
53  $this->tabs_gui->setTabActive('learning_progress');
54  include_once("./Services/Tracking/classes/class.ilLearningProgressGUI.php");
56  $ret =&$this->ctrl->forwardCommand($lp_gui);
57  break;
58 
59  case 'illpobjectstatisticsgui':
60  $this->tabs_gui->setTabActive('statistics');
61  include_once("./Services/Tracking/classes/object_statistics/class.ilLPObjectStatisticsGUI.php");
63  $ret =&$this->ctrl->forwardCommand($os_gui);
64  break;
65 
66  case 'ilsessionstatisticsgui':
67  $this->tabs_gui->setTabActive('session_statistics');
68  include_once("./Services/Authentication/classes/class.ilSessionStatisticsGUI.php");
69  $sess_gui = new ilSessionStatisticsGUI();
70  $ret =&$this->ctrl->forwardCommand($sess_gui);
71  break;
72 
73  default:
74  $cmd = $this->ctrl->getCmd();
75  if ($cmd == "view" || $cmd == "") {
76  $cmd = "settings";
77  }
78  $cmd .= "Object";
79  $this->$cmd();
80  break;
81  }
82 
83  return true;
84  }
85 
86  public function getAdminTabs()
87  {
88  $this->getTabs();
89  }
90 
91  public function getTabs()
92  {
93  $this->ctrl->setParameter($this, "ref_id", $this->ref_id);
94 
95  $this->tabs_gui->addTarget(
96  "settings",
97  $this->ctrl->getLinkTarget($this, "settings"),
98  "settings",
99  get_class($this)
100  );
101 
102  if ($this->checkPermissionBool("read")) {
104  $this->tabs_gui->addTarget(
105  "statistics",
106  $this->ctrl->getLinkTargetByClass(
107  "illpobjectstatisticsgui",
108  "access"
109  ),
110  "",
111  "illpobjectstatisticsgui"
112  );
113  }
114 
116  $this->tabs_gui->addTarget(
117  "learning_progress",
118  $this->ctrl->getLinkTargetByClass(
119  "illearningprogressgui",
120  "show"
121  ),
122  "",
123  "illearningprogressgui"
124  );
125  }
126 
127  // session statistics
129  $this->tabs_gui->addTarget(
130  "session_statistics",
131  $this->ctrl->getLinkTargetByClass(
132  "ilsessionstatisticsgui",
133  ""
134  ),
135  "",
136  "ilsessionstatisticsgui"
137  );
138  }
139  }
140 
141  if ($this->checkPermissionBool("edit_permission")) {
142  $this->tabs_gui->addTarget(
143  "perm_settings",
144  $this->ctrl->getLinkTargetByClass(array(get_class($this),'ilpermissiongui'), "perm"),
145  array("perm","info","owner"),
146  'ilpermissiongui'
147  );
148  }
149  }
150 
151 
155  public function settingsObject($a_form = null)
156  {
157  $this->checkPermission('read');
158 
159  $this->tabs_gui->addSubTab(
160  'lp_settings',
161  $this->lng->txt('settings'),
162  $this->ctrl->getLinkTarget($this, 'settings')
163  );
164 
166  $this->tabs_gui->addSubTab(
167  'lpdef',
168  $this->lng->txt('trac_defaults'),
169  $this->ctrl->getLinkTarget($this, 'editLPDefaults')
170  );
171  }
172 
173  $this->tabs_gui->setTabActive('settings');
174  $this->tabs_gui->setSubTabActive('lp_settings');
175 
176  if (!$a_form) {
177  $a_form = $this->initSettingsForm();
178  }
179 
180  $this->tpl->setContent($a_form->getHTML());
181  }
182 
183  protected function initSettingsForm()
184  {
185  include_once 'Services/Form/classes/class.ilPropertyFormGUI.php';
186  $form = new ilPropertyFormGUI();
187  $form->setFormAction($this->ctrl->getFormAction($this));
188  $form->setTitle($this->lng->txt('tracking_settings'));
189 
190  $activate = new ilCheckboxGroupInputGUI($this->lng->txt('activate_tracking'));
191  $form->addItem($activate);
192 
193  // learning progress
194  $lp = new ilCheckboxInputGUI($this->lng->txt('trac_learning_progress'), 'learning_progress_tracking');
195  if ($this->object->enabledLearningProgress()) {
196  $lp->setChecked(true);
197  }
198  $activate->addSubItem($lp);
199 
200 
201  // lp settings
202 
203  /*
204  $desktop = new ilCheckboxInputGUI($this->lng->txt('trac_lp_on_personal_desktop'), 'lp_desktop');
205  $desktop->setInfo($this->lng->txt('trac_lp_on_personal_desktop_info'));
206  $desktop->setChecked($this->object->hasLearningProgressDesktop());
207  $lp->addSubItem($desktop);
208  */
209 
210  $learner = new ilCheckboxInputGUI($this->lng->txt('trac_lp_learner_access'), 'lp_learner');
211  $learner->setInfo($this->lng->txt('trac_lp_learner_access_info'));
212  $learner->setChecked($this->object->hasLearningProgressLearner());
213  $lp->addSubItem($learner);
214 
215 
216  // extended data
217 
218  $extdata = new ilCheckboxGroupInputGUI($this->lng->txt('trac_learning_progress_settings_info'), 'lp_extdata');
219  $extdata->addOption(new ilCheckboxOption($this->lng->txt('trac_first_and_last_access'), 'lp_access'));
220  $extdata->addOption(new ilCheckboxOption($this->lng->txt('trac_read_count'), 'lp_count'));
221  $extdata->addOption(new ilCheckboxOption($this->lng->txt('trac_spent_seconds'), 'lp_spent'));
222  $lp->addSubItem($extdata);
223 
224  $ext_value = array();
225  if ($this->object->hasExtendedData(ilObjUserTracking::EXTENDED_DATA_LAST_ACCESS)) {
226  $ext_value[] = 'lp_access';
227  }
228  if ($this->object->hasExtendedData(ilObjUserTracking::EXTENDED_DATA_READ_COUNT)) {
229  $ext_value[] = 'lp_count';
230  }
231  if ($this->object->hasExtendedData(ilObjUserTracking::EXTENDED_DATA_SPENT_SECONDS)) {
232  $ext_value[] = 'lp_spent';
233  }
234  $extdata->setValue($ext_value);
235 
236  $listgui = new ilCheckboxInputGUI($this->lng->txt('trac_lp_list_gui'), 'lp_list');
237  $listgui->setInfo($this->lng->txt('trac_lp_list_gui_info'));
238  $listgui->setChecked($this->object->hasLearningProgressListGUI());
239  $lp->addSubItem($listgui);
240 
241  /* => REPOSITORY
242  // change event
243  $event = new ilCheckboxInputGUI($this->lng->txt('trac_repository_changes'), 'change_event_tracking');
244  if($this->object->enabledChangeEventTracking())
245  {
246  $event->setChecked(true);
247  }
248  $activate->addSubItem($event);
249  */
250 
251  // object statistics
252  $objstat = new ilCheckboxInputGUI($this->lng->txt('trac_object_statistics'), 'object_statistics');
253  if ($this->object->enabledObjectStatistics()) {
254  $objstat->setChecked(true);
255  }
256  $activate->addSubItem($objstat);
257 
258  // session statistics
259  $sessstat = new ilCheckboxInputGUI($this->lng->txt('session_statistics'), 'session_statistics');
260  if ($this->object->enabledSessionStatistics()) {
261  $sessstat->setChecked(true);
262  }
263  $activate->addSubItem($sessstat);
264 
265  // Anonymized
266  $user = new ilCheckboxInputGUI($this->lng->txt('trac_anonymized'), 'user_related');
267  $user->setInfo($this->lng->txt('trac_anonymized_info'));
268  $user->setChecked(!$this->object->enabledUserRelatedData());
269  $form->addItem($user);
270 
271  // Max time gap
272  $valid = new ilNumberInputGUI($this->lng->txt('trac_valid_request'), 'valid_request');
273  $valid->setMaxLength(4);
274  $valid->setSize(4);
275  $valid->setSuffix($this->lng->txt('seconds'));
276  $valid->setInfo($this->lng->txt('info_valid_request'));
277  $valid->setValue($this->object->getValidTimeSpan());
278  $valid->setMinValue(1);
279  $valid->setMaxValue(9999);
280  $valid->setRequired(true);
281  $form->addItem($valid);
282 
283  include_once "Services/Administration/classes/class.ilAdministrationSettingsFormHandler.php";
286  $form,
287  $this
288  );
289 
290  // #12259
291  if ($this->checkPermissionBool("write")) {
292  $form->addCommandButton('saveSettings', $this->lng->txt('save'));
293  } else {
294  $lp->setDisabled(true);
295  $learner->setDisabled(true);
296  $extdata->setDisabled(true);
297  $listgui->setDisabled(true);
298  $objstat->setDisabled(true);
299  $user->setDisabled(true);
300  $valid->setDisabled(true);
301  }
302 
303  return $form;
304  }
305 
309  public function saveSettingsObject()
310  {
311  $this->checkPermission('write');
312 
313  $form = $this->initSettingsForm();
314  if ($form->checkInput()) {
315  $lp_active = $form->getInput('learning_progress_tracking');
316 
317  $this->object->enableLearningProgress($lp_active);
318 
319  if ($lp_active) {
320  $ext_data = (array) $form->getInput("lp_extdata");
321  $code = 0;
322  if (in_array('lp_access', $ext_data)) {
324  }
325  if (in_array('lp_count', $ext_data)) {
327  }
328  if (in_array('lp_spent', $ext_data)) {
330  }
331  $this->object->setExtendedData($code);
332  }
333 
334  $this->object->enableChangeEventTracking($form->getInput('change_event_tracking'));
335  $this->object->enableObjectStatistics($form->getInput('object_statistics'));
336  $this->object->enableUserRelatedData(!$form->getInput('user_related'));
337  $this->object->setValidTimeSpan($form->getInput('valid_request'));
338  // $this->object->setLearningProgressDesktop($form->getInput('lp_desktop'));
339  $this->object->setLearningProgressLearner($form->getInput('lp_learner'));
340  $this->object->enableSessionStatistics($form->getInput('session_statistics'));
341  $this->object->setLearningProgressListGUI($form->getInput('lp_list'));
342  $this->object->updateSettings();
343 
344  ilUtil::sendSuccess($this->lng->txt("msg_obj_modified"), true);
345  $this->ctrl->redirect($this, "settings");
346  }
347 
348  $form->setValuesByPost();
349  $this->settingsObject($form);
350  return false;
351  }
352 
353 
354  //
355  // LP DEFAULTS
356  //
357 
358  protected function editLPDefaultsObject($a_form = null)
359  {
360  $this->checkPermission('read');
361 
362  $this->tabs_gui->addSubTab(
363  'lp_settings',
364  $this->lng->txt('settings'),
365  $this->ctrl->getLinkTarget($this, 'settings')
366  );
367 
368  $this->tabs_gui->addSubTab(
369  'lpdef',
370  $this->lng->txt('trac_defaults'),
371  $this->ctrl->getLinkTarget($this, 'editLPDefaults')
372  );
373 
374  $this->tabs_gui->setTabActive('settings');
375  $this->tabs_gui->setSubTabActive('lpdef');
376 
377  if (!$a_form) {
378  $a_form = $this->initLPDefaultsForm();
379  }
380 
381  $this->tpl->setContent($a_form->getHTML());
382  }
383 
384  protected function initLPDefaultsForm()
385  {
386  global $objDefinition;
387 
388  include_once 'Services/Form/classes/class.ilPropertyFormGUI.php';
389  $form = new ilPropertyFormGUI();
390  $form->setFormAction($this->ctrl->getFormAction($this));
391  $form->setTitle($this->lng->txt('trac_defaults'));
392  $form->setDescription($this->lng->txt('trac_defaults_info'));
393 
394  include_once "Services/Object/classes/class.ilObjectLP.php";
395  include_once "Services/Tracking/classes/class.ilLPObjSettings.php";
396 
397  $types = array();
398  foreach ($objDefinition->getAllRepositoryTypes() as $type) {
400  $types[$type] = array(
401  "type" => $type,
402  "caption" => $this->lng->txt("obj_" . $type)
403  );
404  }
405  }
406  $types = ilUtil::sortArray($types, "caption", "asc");
407  foreach ($types as $item) {
408  $class = ilObjectLP::getTypeClass($item["type"]);
409  $modes = $class::getDefaultModes(ilObjUserTracking::_enabledLearningProgress());
410  if (sizeof($modes) > 1) {
411  $def_type = new ilSelectInputGUI($item["caption"], "def_" . $item["type"]);
412  $form->addItem($def_type);
413 
414  $def_type->setRequired(true);
415  $def_type->setValue(ilObjectLP::getTypeDefault($item["type"]));
416 
417  $options = array();
418  foreach ($modes as $mode) {
419  $caption = ($mode == ilLPObjSettings::LP_MODE_DEACTIVATED)
420  ? $this->lng->txt("trac_defaults_inactive")
422  $options[$mode] = $caption;
423  }
424  $def_type->setOptions($options);
425  }
426  }
427 
428  if ($this->checkPermissionBool("write")) {
429  $form->addCommandButton('saveLPDefaults', $this->lng->txt('save'));
430  } else {
431  foreach ($types as $item) {
432  $form->getItemByPostVar("def_" . $item["type"])->setDisabled(true);
433  }
434  }
435 
436  return $form;
437  }
438 
439  protected function saveLPDefaultsObject()
440  {
441  global $objDefinition;
442 
443  $this->checkPermission('write');
444 
445  $form = $this->initLPDefaultsForm();
446  if ($form->checkInput()) {
447  include_once "Services/Object/classes/class.ilObjectLP.php";
448  include_once "Services/Tracking/classes/class.ilLPObjSettings.php";
449 
450  $res = array();
451  foreach ($objDefinition->getAllRepositoryTypes() as $type) {
453  $mode = $form->getInput("def_" . $type);
454  $res[$type] = $mode
455  ? $mode
457  }
458  }
459 
461 
462  ilUtil::sendSuccess($this->lng->txt("msg_obj_modified"), true);
463  $this->ctrl->redirect($this, "editLPDefaults");
464  }
465 
466  $form->setValuesByPost();
467  $this->editLPDefaultsObject($form);
468  return false;
469  }
470 }
Class ilSessionStatisticsGUI.
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
static sortArray( $array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
This class represents an option in a checkbox group.
static getTypeClass($a_type)
This class represents a selection list property in a property form.
static _enabledObjectStatistics()
check wether object statistics is enabled or not
This class represents a property form user interface.
$type
$code
Definition: example_050.php:99
settingsObject($a_form=null)
display tracking settings form
static isSupportedObjectType($a_type)
$valid
This class represents a checkbox property in a property form.
static addFieldsToForm($a_form_id, ilPropertyFormGUI $a_form, ilObjectGUI $a_parent_gui)
global $ilCtrl
Definition: ilias.php:18
setInfo($a_info)
Set Information Text.
setChecked($a_checked)
Set Checked.
__construct($a_data, $a_id, $a_call_by_reference)
static getTypeDefault($a_type)
Get current type default.
prepareOutput($a_show_subobjects=true)
prepare output
static _enabledLearningProgress()
check wether learing progress is enabled or not
foreach($_POST as $key=> $value) $res
if(isset($_POST['submit'])) $form
This class represents a number property in a property form.
Class ilObjectGUI Basic methods of all Output classes.
static saveTypeDefaults(array $a_data)
This class represents a property in a property form.
Create styles array
The data for the language used.
Create new PHPExcel object
obj_idprivate
static _enabledSessionStatistics()
check wether session statistics is enabled or not
$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.
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission.
Class ilObjUserTrackingGUI.
saveSettingsObject()
save user tracking settings
if(!isset($_REQUEST['ReturnTo'])) if(!isset($_REQUEST['AuthId'])) $options
Definition: as_login.php:20
static _mode2Text($a_mode)