ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
class.ilLPTableBaseGUI.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/Table/classes/class.ilTable2GUI.php");
5include_once './Services/Search/classes/class.ilSearchSettings.php';
6
16{
17 protected $filter; // array
18 protected $anonymized; // [bool]
19
20 public function __construct($a_parent_obj, $a_parent_cmd = "", $a_template_context = "")
21 {
22 parent::__construct($a_parent_obj, $a_parent_cmd, $a_template_context);
23
24 // country names
25 $this->lng->loadLanguageModule("meta");
26
27 include_once("./Services/Object/classes/class.ilObjectLP.php");
28
29 $this->anonymized = (bool)!ilObjUserTracking::_enabledUserRelatedData();
30 if(!$this->anonymized && $this->obj_id)
31 {
32 include_once "Services/Object/classes/class.ilObjectLP.php";
33 $olp = ilObjectLP::getInstance($this->obj_id);
34 $this->anonymized = $olp->isAnonymized();
35 }
36 }
37
38 public function executeCommand()
39 {
40 global $ilCtrl, $lng;
41
43
44 if(!$ilCtrl->getNextClass($this))
45 {
46 $to_hide = false;
47
48 switch($ilCtrl->getCmd())
49 {
50 case "applyFilter":
51 $this->resetOffset();
52 $this->writeFilterToSession();
53 break;
54
55 case "resetFilter":
56 $this->resetOffset();
57 $this->resetFilter();
58 break;
59
60 case "hideSelected":
61 $to_hide = $_POST["item_id"];
62 break;
63
64 case "hide":
65 $to_hide = array((int)$_GET["hide"]);
66 break;
67
68 case "mailselectedusers":
69 if(!sizeof($_POST["uid"]))
70 {
71 ilUtil::sendFailure($lng->txt("no_checkbox"), true);
72 }
73 else
74 {
75 $this->sendMail($_POST["uid"], $this->parent_obj, $this->parent_cmd);
76 }
77 break;
78
79 // page selector
80 default:
82 $this->storeNavParameter();
83 break;
84 }
85
86 if($to_hide)
87 {
88 $obj = $this->getFilterItemByPostVar("hide");
89 $value = array_unique(array_merge((array)$obj->getValue(), $to_hide));
90 $obj->setValue($value);
91 $obj->writeToSession();
92 }
93
94 if(isset($_REQUEST["tbltplcrt"]))
95 {
96 $ilCtrl->setParameter($this->parent_obj, "tbltplcrt", $_REQUEST["tbltplcrt"]);
97 }
98 if(isset($_REQUEST["tbltpldel"]))
99 {
100 $ilCtrl->setParameter($this->parent_obj, "tbltpldel", $_REQUEST["tbltpldel"]);
101 }
102
103 $ilCtrl->redirect($this->parent_obj, $this->parent_cmd);
104 }
105 else
106 {
107 // e.g. repository selector
108 return parent::executeCommand();
109 }
110 }
111
112 protected function sendMail(array $a_user_ids, $a_parent_obj, $a_parent_cmd)
113 {
114 // see ilObjCourseGUI::sendMailToSelectedUsersObject()
115
116 require_once 'Services/Mail/classes/class.ilMailFormCall.php';
117
118 $rcps = array();
119 foreach($a_user_ids as $usr_id)
120 {
121 $rcps[] = ilObjUser::_lookupLogin($usr_id);
122 }
123
124 $template = array();
125 $sig = null;
126
127 // repository-object-specific
128 $ref_id = (int)$_REQUEST["ref_id"];
129 if($ref_id)
130 {
132 $tmpl_id = $obj_lp->getMailTemplateId();
133
134 if($tmpl_id)
135 {
136 $template = array(
137 ilMailFormCall::CONTEXT_KEY => $tmpl_id,
138 'ref_id' => $ref_id,
139 'ts' => time()
140 );
141 }
142 else
143 {
144 include_once './Services/Link/classes/class.ilLink.php';
146 $sig = rawurlencode(base64_encode($sig));
147 }
148 }
149
152 $a_parent_obj,
153 $a_parent_cmd,
154 array(),
155 array(
156 'type' => 'new',
157 'rcp_to' => implode(',', $rcps),
158 'sig' => $sig
159 ),
160 $template
161 )
162 );
163 }
164
174 protected function searchObjects(array $filter, $permission, array $preset_obj_ids = null, $a_check_lp_activation = true)
175 {
176 global $ilObjDataCache;
177
178 include_once './Services/Search/classes/class.ilQueryParser.php';
179
180 $query_parser =& new ilQueryParser($filter["query"]);
181 $query_parser->setMinWordLength(0);
182 $query_parser->setCombination(QP_COMBINATION_AND);
183 $query_parser->parse();
184 if(!$query_parser->validate())
185 {
186 ilLoggerFactory::getLogger('trac')->notice($query_parser->getMessage());
187 // echo $query_parser->getMessage();
188 return false;
189 }
190
191 if($filter["type"] == "lres")
192 {
193 $filter["type"] = array('lm','sahs','htlm','dbk');
194 }
195 else
196 {
197 $filter["type"] = array($filter["type"]);
198 }
199
200 include_once 'Services/Search/classes/Like/class.ilLikeObjectSearch.php';
201 $object_search =& new ilLikeObjectSearch($query_parser);
202 $object_search->setFilter($filter["type"]);
203 if($preset_obj_ids)
204 {
205 $object_search->setIdFilter($preset_obj_ids);
206 }
207 $res =& $object_search->performSearch();
208
209 if($permission)
210 {
211 $res->setRequiredPermission($permission);
212 }
213
214 $res->setMaxHits(1000);
215
216 if($a_check_lp_activation)
217 {
218 $res->addObserver($this, "searchFilterListener");
219 }
220
221 if(!$this->filter["area"])
222 {
223 $res->filter(ROOT_FOLDER_ID, false);
224 }
225 else
226 {
227 $res->filter($this->filter["area"], false);
228 }
229
230 $objects = array();
231 foreach($res->getResults() as $obj_data)
232 {
233 $objects[$obj_data['obj_id']][] = $obj_data['ref_id'];
234 }
235
236 // Check if search max hits is reached
237 if($res->isLimitReached())
238 {
239 $this->lng->loadLanguageModule("search");
240 ilUtil::sendFailure(sprintf($this->lng->txt("search_limit_reached"), 1000));
241 }
242
243 return $objects ? $objects : array();
244 }
245
251 public function searchFilterListener($a_ref_id, $a_data)
252 {
253 if(is_array($this->filter["hide"]) && in_array($a_data["obj_id"], $this->filter["hide"]))
254 {
255 return false;
256 }
257 $olp = ilObjectLP::getInstance($a_data["obj_id"]);
258 if(get_class($olp) != "ilObjectLP" && // #13654 - LP could be unsupported
259 !$olp->isActive())
260 {
261 return false;
262 }
263 return true;
264 }
265
271 public function initFilter($a_split_learning_resources = false, $a_include_no_status_filter = true)
272 {
273 global $lng, $ilObjDataCache;
274
275 $this->setDisableFilterHiding(true);
276
277 // object type selection
278 include_once("./Services/Form/classes/class.ilSelectInputGUI.php");
279 $si = new ilSelectInputGUI($this->lng->txt("obj_type"), "type");
280 $si->setOptions($this->getPossibleTypes($a_split_learning_resources));
281 $this->addFilterItem($si);
282 $si->readFromSession();
283 if(!$si->getValue())
284 {
285 $si->setValue("crs");
286 }
287 $this->filter["type"] = $si->getValue();
288
289 // hidden items
290 include_once("./Services/Form/classes/class.ilMultiSelectInputGUI.php");
291 $msi = new ilMultiSelectInputGUI($lng->txt("trac_filter_hidden"), "hide");
292 $this->addFilterItem($msi);
293 $msi->readFromSession();
294 $this->filter["hide"] = $msi->getValue();
295 if($this->filter["hide"])
296 {
297 // create options from current value
298 $types = $this->getCurrentFilter(true);
299 $type = $types["type"];
300 $options = array();
301 if($type == 'lres')
302 {
303 $type = array('lm','sahs','htlm','dbk');
304 }
305 else
306 {
307 $type = array($type);
308 }
309 foreach($this->filter["hide"] as $obj_id)
310 {
311 if(in_array($ilObjDataCache->lookupType($obj_id), $type))
312 {
313 $options[$obj_id] = $ilObjDataCache->lookupTitle($obj_id);
314 }
315 }
316 $msi->setOptions($options);
317 }
318
319 // title/description
320 include_once("./Services/Form/classes/class.ilTextInputGUI.php");
321 $ti = new ilTextInputGUI($lng->txt("trac_title_description"), "query");
322 $ti->setMaxLength(64);
323 $ti->setSize(20);
324 $this->addFilterItem($ti);
325 $ti->readFromSession();
326 $this->filter["query"] = $ti->getValue();
327
328 // repository area selection
329 include_once("./Services/Form/classes/class.ilRepositorySelectorInputGUI.php");
330 $rs = new ilRepositorySelectorInputGUI($lng->txt("trac_filter_area"), "area");
331 $rs->setSelectText($lng->txt("trac_select_area"));
332 $this->addFilterItem($rs);
333 $rs->readFromSession();
334 $this->filter["area"] = $rs->getValue();
335
336 // hide "not started yet"
337 if($a_include_no_status_filter)
338 {
339 include_once("./Services/Form/classes/class.ilCheckboxInputGUI.php");
340 $cb = new ilCheckboxInputGUI($lng->txt("trac_filter_has_status"), "status");
341 $this->addFilterItem($cb);
342 $cb->readFromSession();
343 $this->filter["status"] = $cb->getChecked();
344 }
345 }
346
353 protected function buildPath($ref_ids)
354 {
355 global $tree, $ilCtrl;
356
357 include_once './Services/Link/classes/class.ilLink.php';
358
359 if(!count($ref_ids))
360 {
361 return false;
362 }
363 foreach($ref_ids as $ref_id)
364 {
365 $path = "...";
366 $counter = 0;
367 $path_full = $tree->getPathFull($ref_id);
368 foreach($path_full as $data)
369 {
370 if(++$counter < (count($path_full)-1))
371 {
372 continue;
373 }
374 $path .= " &raquo; ";
375 if($ref_id != $data['ref_id'])
376 {
377 $path .= $data['title'];
378 }
379 else
380 {
381 $path .= ('<a target="_top" href="'.
382 ilLink::_getLink($data['ref_id'],$data['type']).'">'.
383 $data['title'].'</a>');
384 }
385 }
386
388 }
389 return $result;
390 }
391
399 protected function getPossibleTypes($a_split_learning_resources = false, $a_include_digilib = false, $a_allow_undefined_lp = false)
400 {
401 global $lng, $ilPluginAdmin;
402
403 $options = array();
404
405 if($a_split_learning_resources)
406 {
407 $options['lm'] = $lng->txt('objs_lm');
408 $options['sahs'] = $lng->txt('objs_sahs');
409 $options['htlm'] = $lng->txt('objs_htlm');
410
411 if($a_include_digilib)
412 {
413 $options['dbk'] = $lng->txt('objs_dbk');
414 }
415 }
416 else
417 {
418 $options['lres'] = $lng->txt('learning_resources');
419 }
420
421 $options['crs'] = $lng->txt('objs_crs');
422 $options['grp'] = $lng->txt('objs_grp');
423 $options['exc'] = $lng->txt('objs_exc');
424 $options['file'] = $lng->txt('objs_file');
425 $options['mcst'] = $lng->txt('objs_mcst');
426 $options['svy'] = $lng->txt('objs_svy');
427 $options['tst'] = $lng->txt('objs_tst');
428 $options['prg'] = $lng->txt('objs_prg');
429
430 if($a_allow_undefined_lp)
431 {
432 $options["webr"] = $lng->txt("objs_webr");
433 $options["wiki"] = $lng->txt("objs_wiki");
434 }
435
436 // repository plugins (currently only active)
437 include_once 'Services/Repository/classes/class.ilRepositoryObjectPluginSlot.php';
438 $pl_names = $ilPluginAdmin->getActivePluginsForSlot(IL_COMP_SERVICE, "Repository", "robj");
439 foreach ($pl_names as $pl)
440 {
441 $pl_id = $ilPluginAdmin->getId(IL_COMP_SERVICE, "Repository", "robj", $pl);
443 {
444 $options[$pl_id] = ilPlugin::lookupTxt("rep_robj", $pl_id, "objs_".$pl_id);
445 }
446 }
447
448 asort($options);
449 return $options;
450 }
451
452 protected function parseValue($id, $value, $type)
453 {
454 global $lng;
455
456 // get rid of aggregation
457 $pos = strrpos($id, "_");
458 if($pos !== false)
459 {
460 $function = strtoupper(substr($id, $pos+1));
461 if(in_array($function, array("MIN", "MAX", "SUM", "AVG", "COUNT")))
462 {
463 $id = substr($id, 0, $pos);
464 }
465 }
466
467 if(trim($value) == "" && $id != "status")
468 {
469 if($id == "title" &&
470 get_class($this) != "ilTrObjectUsersPropsTableGUI" &&
471 get_class($this) != "ilTrMatrixTableGUI")
472 {
473 return "--".$lng->txt("none")."--";
474 }
475 return " ";
476 }
477
478 switch($id)
479 {
480 case "first_access":
481 case "create_date":
482 case 'status_changed':
484 break;
485
486 case "last_access":
488 break;
489
490 case "birthday":
492 break;
493
494 case "spent_seconds":
496 {
497 $value = "-";
498 }
499 else
500 {
501 include_once("./Services/Utilities/classes/class.ilFormat.php");
502 $value = ilFormat::_secondsToString($value, ($value < 3600 ? true : false)); // #14858
503 }
504 break;
505
506 case "percentage":
507 if(false /* $this->isPercentageAvailable() */)
508 {
509 $value = "-";
510 }
511 else
512 {
513 $value = $value."%";
514 }
515 break;
516
517 case "mark":
518 if(!ilObjectLP::supportsMark($type))
519 {
520 $value = "-";
521 }
522 break;
523
524 case "gender":
525 $value = $lng->txt("gender_".$value);
526 break;
527
528 case "status":
529 include_once("./Services/Tracking/classes/class.ilLearningProgressBaseGUI.php");
532 $value = ilUtil::img($path, $text);
533 break;
534
535 case "language":
536 $lng->loadLanguageModule("meta");
537 $value = $lng->txt("meta_l_".$value);
538 break;
539
540 case "sel_country":
541 $value = $lng->txt("meta_c_".$value);
542 break;
543 }
544
545 return $value;
546 }
547
548 public function getCurrentFilter($as_query = false)
549 {
550 $result = array();
551 foreach($this->filter as $id => $value)
552 {
553 $item = $this->getFilterItemByPostVar($id);
554 switch($id)
555 {
556 case "title":
557 case "country":
558 case "gender":
559 case "city":
560 case "language":
561 case "login":
562 case "firstname":
563 case "lastname":
564 case "mark":
565 case "u_comment":
566 case "institution":
567 case "department":
568 case "title":
569 case "street":
570 case "zipcode":
571 case "email":
572 case "matriculation":
573 case "sel_country":
574 case "query":
575 case "type":
576 case "area":
577 if($value)
578 {
579 $result[$id] = $value;
580 }
581 break;
582
583 case "status":
584 if($value !== false)
585 {
586 $result[$id] = $value;
587 }
588 break;
589
590 case "user_total":
591 case "read_count":
592 case "percentage":
593 case "hide":
594 case "spent_seconds":
595 if(is_array($value) && implode("", $value))
596 {
597 $result[$id] = $value;
598 }
599 break;
600
601 case "registration":
602 case "create_date":
603 case "first_access":
604 case "last_access":
605 case 'status_changed':
606 if($value)
607 {
608 if($value["from"])
609 {
610 $result[$id]["from"] = $value["from"]->get(IL_CAL_DATETIME);
611 }
612 if($value["to"])
613 {
614 $result[$id]["to"] = $value["to"]->get(IL_CAL_DATETIME);
615 }
616 }
617 break;
618
619 case "birthday":
620 if($value)
621 {
622 if($value["from"])
623 {
624 $result[$id]["from"] = $value["from"]->get(IL_CAL_DATETIME);
625 $result[$id]["from"] = substr($result[$id]["from"], 0, -8)."00:00:00";
626 }
627 if($value["to"])
628 {
629 $result[$id]["to"] = $value["to"]->get(IL_CAL_DATETIME);
630 $result[$id]["to"] = substr($result[$id]["to"], 0, -8)."23:59:59";
631 }
632 }
633 break;
634 }
635 }
636
637 return $result;
638 }
639
640 protected function isPercentageAvailable($a_obj_id)
641 {
642 // :TODO:
643 $olp = ilObjectLP::getInstance($a_obj_id);
644 $mode = $olp->getCurrentMode();
645 if(in_array($mode, array(ilLPObjSettings::LP_MODE_TLT,
647 // ilLPObjSettings::LP_MODE_OBJECTIVES,
651 {
652 return true;
653 }
654 return false;
655 }
656
657 protected function parseTitle($a_obj_id, $action, $a_user_id = false)
658 {
659 global $lng, $ilObjDataCache, $ilUser;
660
661 $user = "";
662 if($a_user_id)
663 {
664 if($a_user_id != $ilUser->getId())
665 {
666 $a_user = ilObjectFactory::getInstanceByObjId($a_user_id);
667 }
668 else
669 {
670 $a_user = $ilUser;
671 }
672 $user .= ", ".$a_user->getFullName(); // " [".$a_user->getLogin()."]";
673 }
674
675 if($a_obj_id != ROOT_FOLDER_ID)
676 {
677 $this->setTitle($lng->txt($action).": ".$ilObjDataCache->lookupTitle($a_obj_id).$user);
678
679 $olp = ilObjectLP::getInstance($a_obj_id);
680 $this->setDescription($this->lng->txt('trac_mode').": ".$olp->getModeText($olp->getCurrentMode()));
681 }
682 else
683 {
684 $this->setTitle($lng->txt($action));
685 }
686 }
687
693 protected function getExportMeta()
694 {
695 global $lng, $ilObjDataCache, $ilUser, $ilClientIniFile;
696
697 /* see spec
698 Name of installation
699 Name of the course
700 Permalink to course
701 Owner of course object
702 Date of report generation
703 Reporting period
704 Name of person who generated the report.
705 */
706
708 include_once './Services/Link/classes/class.ilLink.php';
709
710 $data = array();
711 $data[$lng->txt("trac_name_of_installation")] = $ilClientIniFile->readVariable('client', 'name');
712
713 if($this->obj_id)
714 {
715 $data[$lng->txt("trac_object_name")] = $ilObjDataCache->lookupTitle($this->obj_id);
716 if($this->ref_id)
717 {
718 $data[$lng->txt("trac_object_link")] = ilLink::_getLink($this->ref_id, ilObject::_lookupType($this->obj_id));
719 }
720 $data[$lng->txt("trac_object_owner")] = ilObjUser::_lookupFullname(ilObject::_lookupOwner($this->obj_id));
721 }
722
723 $data[$lng->txt("trac_report_date")] =
725 $data[$lng->txt("trac_report_owner")] = $ilUser->getFullName();
726
727 return $data;
728 }
729
730 protected function fillMetaExcel($worksheet, &$a_row)
731 {
732 foreach($this->getExportMeta() as $caption => $value)
733 {
734 $worksheet->write($a_row, 0, $caption);
735 $worksheet->write($a_row, 1, $value);
736 $a_row++;
737 }
738 $a_row++;
739 }
740
741 protected function fillMetaCSV($a_csv)
742 {
743 foreach($this->getExportMeta() as $caption => $value)
744 {
745 $a_csv->addColumn(strip_tags($caption));
746 $a_csv->addColumn(strip_tags($value));
747 $a_csv->addRow();
748 }
749 $a_csv->addRow();
750 }
751
752 protected function showTimingsWarning($a_ref_id, $a_user_id)
753 {
754 include_once 'Modules/Course/classes/Timings/class.ilTimingCache.php';
755 if(ilTimingCache::_showWarning($a_ref_id, $a_user_id))
756 {
757 $timings = ilTimingCache::_getTimings($a_ref_id);
758 if($timings['item']['changeable'] && $timings['user'][$a_user_id]['end'])
759 {
760 $end = $timings['user'][$a_user_id]['end'];
761 }
762 else if ($timings['item']['suggestion_end'])
763 {
764 $end = $timings['item']['suggestion_end'];
765 }
766 else
767 {
768 $end = true;
769 }
770 return $end;
771 }
772 }
773
774 protected function formatSeconds($seconds, $a_shorten_zero = false)
775 {
776 $seconds = ((int)$seconds > 0) ? $seconds : 0;
777 if($a_shorten_zero && !$seconds)
778 {
779 return "-";
780 }
781
782 $hours = floor($seconds / 3600);
783 $rest = $seconds % 3600;
784
785 $minutes = floor($rest / 60);
786 $rest = $rest % 60;
787
788 if($rest)
789 {
790 $minutes++;
791 }
792
793 return sprintf("%dh%02dm",$hours,$minutes);
794 }
795
796 protected function anonymizeValue($a_value, $a_force_number = false)
797 {
798 // currently inactive
799 return $a_value;
800
801 if(is_numeric($a_value))
802 {
803 $threshold = 3;
804 $a_value = (int)$a_value;
805 if($a_value <= $threshold)
806 {
807 if(!$a_force_number)
808 {
809 return "0-".$threshold;
810 }
811 else
812 {
813 return $threshold;
814 }
815 }
816 }
817 return $a_value;
818 }
819
820 protected function buildValueScale($a_max_value, $a_anonymize = false, $a_format_seconds = false)
821 {
822 $step = 0;
823 if($a_max_value)
824 {
825 $step = $a_max_value / 10;
826 $base = ceil(log($step, 10));
827 $fac = ceil($step / pow(10, ($base - 1)));
828 $step = pow(10, $base - 1) * $fac;
829 }
830 if ($step <= 1)
831 {
832 $step = 1;
833 }
834 $ticks = range(0, $a_max_value+$step, $step);
835
836 $value_ticks = array(0 => 0);
837 foreach($ticks as $tick)
838 {
839 $value = $tvalue = $tick;
840 if($a_anonymize)
841 {
842 $value = $this->anonymizeValue($value, true);
843 $tvalue = $this->anonymizeValue($tvalue);
844 }
845 if($a_format_seconds)
846 {
847 $tvalue = $this->formatSeconds($value);
848 }
849 $value_ticks[$value] = $tvalue;
850 }
851
852 return $value_ticks;
853 }
854
855 protected function getMonthsFilter($a_short = false)
856 {
857 global $lng;
858
859 $options = array();
860 for($loop = 0; $loop < 10; $loop++)
861 {
862 $year = date("Y")-$loop;
863 $options[$year] = $year;
864 for($loop2 = 12; $loop2 > 0; $loop2--)
865 {
866 $month = str_pad($loop2, 2, "0", STR_PAD_LEFT);
867 if($year.$month <= date("Ym"))
868 {
869 if(!$a_short)
870 {
871 $caption = $year." / ".$lng->txt("month_".$month."_long");
872 }
873 else
874 {
875 $caption = $year."/".$month;
876 }
877 $options[$year."-".$month] = $caption;
878 }
879 }
880 }
881 return $options;
882 }
883
884 protected function getMonthsYear($a_year = null, $a_short = false)
885 {
886 global $lng;
887
888 if(!$a_year)
889 {
890 $a_year = date("Y");
891 }
892
893 $all = array();
894 for($loop = 1; $loop<13; $loop++)
895 {
896 $month = str_pad($loop, 2, "0", STR_PAD_LEFT);
897 if($a_year."-".$month <= date("Y-m"))
898 {
899 if(!$a_short)
900 {
901 $caption = $lng->txt("month_".$month."_long");
902 }
903 else
904 {
905 $caption = $lng->txt("month_".$month."_short");
906 }
907 $all[$a_year."-".$month] = $caption;
908 }
909 }
910 return $all;
911 }
912
913 protected function getSelectableUserColumns($a_in_course = false, $a_in_group = false)
914 {
915 global $lng, $ilSetting;
916
917 $cols = $privacy_fields = array();
918
919 include_once("./Services/User/classes/class.ilUserProfile.php");
920 $up = new ilUserProfile();
921 $up->skipGroup("preferences");
922 $up->skipGroup("settings");
923 $up->skipGroup("interests");
924 $ufs = $up->getStandardFields();
925
926 // default fields
927 $cols["login"] = array(
928 "txt" => $lng->txt("login"),
929 "default" => true);
930
931 if(!$this->anonymized)
932 {
933 $cols["firstname"] = array(
934 "txt" => $lng->txt("firstname"),
935 "default" => true);
936 $cols["lastname"] = array(
937 "txt" => $lng->txt("lastname"),
938 "default" => true);
939 }
940
941 // show only if extended data was activated in lp settings
942 include_once 'Services/Tracking/classes/class.ilObjUserTracking.php';
943 $tracking = new ilObjUserTracking();
944 if($tracking->hasExtendedData(ilObjUserTracking::EXTENDED_DATA_LAST_ACCESS))
945 {
946 $cols["first_access"] = array(
947 "txt" => $lng->txt("trac_first_access"),
948 "default" => true);
949 $cols["last_access"] = array(
950 "txt" => $lng->txt("trac_last_access"),
951 "default" => true);
952 }
953 if($tracking->hasExtendedData(ilObjUserTracking::EXTENDED_DATA_READ_COUNT))
954 {
955 $cols["read_count"] = array(
956 "txt" => $lng->txt("trac_read_count"),
957 "default" => true);
958 }
959 if($tracking->hasExtendedData(ilObjUserTracking::EXTENDED_DATA_SPENT_SECONDS) &&
961 {
962 $cols["spent_seconds"] = array(
963 "txt" => $lng->txt("trac_spent_seconds"),
964 "default" => true);
965 }
966
967 if($this->isPercentageAvailable($this->obj_id))
968 {
969 $cols["percentage"] = array(
970 "txt" => $lng->txt("trac_percentage"),
971 "default" => true);
972 }
973
974 // do not show status if learning progress is deactivated
975 $olp = ilObjectLP::getInstance($this->obj_id);
976 if($olp->isActive())
977 {
978 $cols["status"] = array(
979 "txt" => $lng->txt("trac_status"),
980 "default" => true);
981
982 $cols['status_changed'] = array(
983 'txt' => $lng->txt('trac_status_changed'),
984 'default' => false);
985 }
986
987 if(ilObjectLP::supportsMark($this->type))
988 {
989 $cols["mark"] = array(
990 "txt" => $lng->txt("trac_mark"),
991 "default" => true);
992 }
993
994 $cols["u_comment"] = array(
995 "txt" => $lng->txt("trac_comment"),
996 "default" => false);
997
998 $cols["create_date"] = array(
999 "txt" => $lng->txt("create_date"),
1000 "default" => false);
1001 $cols["language"] = array(
1002 "txt" => $lng->txt("language"),
1003 "default" => false);
1004
1005 // add user data only if object is [part of] course
1006 if(!$this->anonymized &&
1007 ($a_in_course || $a_in_group))
1008 {
1009 // only show if export permission is granted
1010 include_once('Services/PrivacySecurity/classes/class.ilPrivacySettings.php');
1011 if(ilPrivacySettings::_getInstance()->checkExportAccess($this->ref_id))
1012 {
1013 // other user profile fields
1014 foreach ($ufs as $f => $fd)
1015 {
1016 if (!isset($cols[$f]) && $f != "username" && !$fd["lists_hide"])
1017 {
1018 if($a_in_course &&
1019 !($fd["course_export_fix_value"] || $ilSetting->get("usr_settings_course_export_".$f)))
1020 {
1021 continue;
1022 }
1023 if($a_in_group &&
1024 !($fd["group_export_fix_value"] || $ilSetting->get("usr_settings_group_export_".$f)))
1025 {
1026 continue;
1027 }
1028
1029 $cols[$f] = array(
1030 "txt" => $lng->txt($f),
1031 "default" => false);
1032
1033 $privacy_fields[] = $f;
1034 }
1035 }
1036
1037 // additional defined user data fields
1038 include_once './Services/User/classes/class.ilUserDefinedFields.php';
1039 $user_defined_fields = ilUserDefinedFields::_getInstance();
1040 if($a_in_course)
1041 {
1042 $user_defined_fields = $user_defined_fields->getCourseExportableFields();
1043 }
1044 else
1045 {
1046 $user_defined_fields = $user_defined_fields->getGroupExportableFields();
1047 }
1048 foreach($user_defined_fields as $definition)
1049 {
1050 if($definition["field_type"] != UDF_TYPE_WYSIWYG)
1051 {
1052 $f = "udf_".$definition["field_id"];
1053 $cols[$f] = array(
1054 "txt" => $definition["field_name"],
1055 "default" => false);
1056
1057 $privacy_fields[] = $f;
1058 }
1059 }
1060 }
1061 }
1062
1063 return array($cols, $privacy_fields);
1064 }
1065}
1066
1067?>
$result
$_GET["client_id"]
const IL_COMP_SERVICE
const IL_CAL_DATE
const IL_CAL_UNIX
const IL_CAL_DATETIME
const QP_COMBINATION_AND
const UDF_TYPE_WYSIWYG
This class represents a checkbox property in a property form.
static setUseRelativeDates($a_status)
set use relative dates
static formatDate(ilDateTime $date)
Format a date @access public.
@classDescription Date and time handling
Class for single dates.
_secondsToString($seconds, $force_with_seconds=false, $a_lng=null)
converts seconds to string: Long: 7 days 4 hour(s) ...
TableGUI class for learning progress.
__construct($a_parent_obj, $a_parent_cmd="", $a_template_context="")
Constructor.
formatSeconds($seconds, $a_shorten_zero=false)
parseValue($id, $value, $type)
getCurrentFilter($as_query=false)
showTimingsWarning($a_ref_id, $a_user_id)
getMonthsYear($a_year=null, $a_short=false)
getSelectableUserColumns($a_in_course=false, $a_in_group=false)
buildValueScale($a_max_value, $a_anonymize=false, $a_format_seconds=false)
initFilter($a_split_learning_resources=false, $a_include_no_status_filter=true)
Init filter.
sendMail(array $a_user_ids, $a_parent_obj, $a_parent_cmd)
parseTitle($a_obj_id, $action, $a_user_id=false)
anonymizeValue($a_value, $a_force_number=false)
fillMetaExcel($worksheet, &$a_row)
Add meta information to excel export.
getMonthsFilter($a_short=false)
getExportMeta()
Build export meta data.
buildPath($ref_ids)
Build path with deep-link.
fillMetaCSV($a_csv)
Add meta information to csv export.
getPossibleTypes($a_split_learning_resources=false, $a_include_digilib=false, $a_allow_undefined_lp=false)
Get possible subtypes.
executeCommand()
Execute command.
searchObjects(array $filter, $permission, array $preset_obj_ids=null, $a_check_lp_activation=true)
Search objects that match current filters.
searchFilterListener($a_ref_id, $a_data)
Listener for SearchResultFilter Checks wheather the object is hidden and mode is not LP_MODE_DEACTIVA...
_getImagePathForStatus($a_status)
Get image path for status.
_getStatusText($a_status, $a_lng=null)
Get status alt text.
static getLogger($a_component_id)
Get component logger.
static getRedirectTarget($gui, $cmd, array $gui_params=array(), array $mail_params=array(), array $context_params=array())
const CONTEXT_KEY
Session parameter for the context.
This class represents a multi selection list property in a property form.
static _enabledUserRelatedData()
check wether user related tracking is enabled or not
static _lookupLogin($a_user_id)
lookup login
_lookupFullname($a_user_id)
Lookup Full Name.
getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
static supportsMark($a_obj_type)
static supportsSpentSeconds($a_obj_type)
static getInstance($a_obj_id)
static _lookupObjectId($a_ref_id)
lookup object id
_lookupOwner($a_id)
lookup object owner
static _lookupType($a_id, $a_reference=false)
lookup object type
static lookupTxt($a_mod_prefix, $a_pl_id, $a_lang_var)
Lookup language text.
static _getInstance()
Get instance of ilPrivacySettings.
static isTypePluginWithLP($a_type, $a_active_status=true)
Check whether a repository type is a plugin which has active learning progress.
This class represents a repository selector in a property form.
This class represents a selection list property in a property form.
Class ilTable2GUI.
setDisableFilterHiding($a_val=true)
Set disable filter hiding.
setTitle($a_title, $a_icon=0, $a_icon_alt=0)
Set title and title icon.
determineOffsetAndOrder($a_omit_offset=false)
Determine offset and order.
resetOffset($a_in_determination=false)
Reset offset.
getFilterItemByPostVar($a_post_var)
addFilterItem($a_input_item, $a_optional=false)
Add filter item.
resetFilter()
Reset filter.
writeFilterToSession()
Write filter values to session.
setDescription($a_val)
Set description.
determineSelectedFilters()
Determine selected filters.
This class represents a text property in a property form.
& _getTimings($a_ref_id)
_showWarning($a_ref_id, $a_usr_id)
static _getInstance()
Get instance.
Class ilUserProfile.
static redirect($a_script)
http redirect to other script
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static img($a_src, $a_alt="", $a_width="", $a_height="", $a_border=0, $a_id="", $a_class="")
Build img tag.
$_POST['username']
Definition: cron.php:12
$text
$rest
Definition: goto.php:85
global $ilCtrl
Definition: ilias.php:18
global $lng
Definition: privfeed.php:40
global $ilSetting
Definition: privfeed.php:40
$ref_id
Definition: sahs_server.php:39
$path
Definition: index.php:22
if($_REQUEST['ilias_path']) define('ILIAS_HTTP_PATH' $_REQUEST['ilias_path']
Definition: index.php:7
if(!is_array($argv)) $options
global $ilUser
Definition: imgupload.php:15