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