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
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 $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();
468 return false;
469 }
470}
if(!isset( $_REQUEST[ 'ReturnTo'])) if(!isset($_REQUEST['AuthId'])) $options
Definition: as_login.php:20
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
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
$valid
$code
Definition: example_050.php:99
global $ilCtrl
Definition: ilias.php:18
$ret
Definition: parser.php:6
$type
if(isset($_POST['submit'])) $form
foreach($_POST as $key=> $value) $res