ILIAS  release_8 Revision v8.24
class.ilSessionOverviewGUI.php
Go to the documentation of this file.
1<?php
2
20declare(strict_types=1);
21
30{
31 protected ilLanguage $lng;
33 protected ilCtrl $ctrl;
36 protected ilTree $tree;
38 protected int $course_ref_id = 0;
39 protected int $course_id = 0;
41 protected ilCSVWriter $csv;
42
43 public function __construct(int $a_crs_ref_id, ilParticipants $a_members)
44 {
45 global $DIC;
46
47 $this->tpl = $DIC->ui()->mainTemplate();
48 $this->ctrl = $DIC->ctrl();
49 $this->lng = $DIC->language();
50 $this->toolbar = $DIC->toolbar();
51 $this->error = $DIC['ilErr'];
52 $this->tree = $DIC->repositoryTree();
53 $this->access = $DIC->access();
54
55 $this->lng->loadLanguageModule('event');
56 $this->lng->loadLanguageModule('crs');
57
58 $this->course_ref_id = $a_crs_ref_id;
59 $this->course_id = ilObject::_lookupObjId($this->course_ref_id);
60 $this->members_obj = $a_members;
61 }
62
63 public function executeCommand(): void
64 {
65 $next_class = $this->ctrl->getNextClass($this);
66 $cmd = $this->ctrl->getCmd();
67
68 switch ($next_class) {
69 default:
70 if (!$cmd) {
71 $cmd = "listSessions";
72 }
73 $this->$cmd();
74 break;
75 }
76 }
77
81 public function listSessions()
82 {
83 $ilToolbar = $this->toolbar;
85 $ilAccess = $this->access;
86
87 if (!$ilAccess->checkRbacOrPositionPermissionAccess('manage_members', 'manage_members', $this->course_ref_id)) {
88 $ilErr->raiseError($this->lng->txt('msg_no_perm_read'), $ilErr->MESSAGE);
89 }
90
91 $ilToolbar->addButton(
92 $this->lng->txt('event_csv_export'),
93 $this->ctrl->getLinkTarget($this, 'exportCSV')
94 );
95
96 $part = $this->members_obj->getParticipants();
97 $part = $ilAccess->filterUserIdsByRbacOrPositionOfCurrentUser(
98 'manage_members',
99 'manage_members',
100 $this->course_ref_id,
101 $part
102 );
103
104 $tbl = new ilSessionOverviewTableGUI($this, 'listSessions', $this->course_ref_id, $part);
105 $this->tpl->setContent($tbl->getHTML());
106 }
107
108 public function exportCSV(): void
109 {
111 $ilAccess = $this->access;
112
114 'manage_members',
115 'manage_members',
116 $this->course_ref_id,
117 $this->members_obj->getParticipants()
118 );
119
120 $sortedMembers = [];
121 foreach($part as $user_id) {
122 $name = ilObjUser::_lookupName($user_id);
123 $sortedMembers[] = [
124 'userid' => (int) $user_id,
125 'firstname' => (string) $name["firstname"],
126 'lastname' => (string) $name['lastname']
127 ];
128 }
129 usort($sortedMembers, function ($a, $b) {
130 return $a['lastname'] <=> $b['lastname'];
131 });
132
133 $events = [];
134 foreach ($tree->getSubtree($tree->getNodeData($this->course_ref_id), false, ['sess']) as $event_id) {
135 $tmp_event = ilObjectFactory::getInstanceByRefId($event_id, false);
136 if (!is_object($tmp_event) || !$ilAccess->checkAccess('manage_members', '', $event_id)) {
137 continue;
138 }
139 $events[] = $tmp_event;
140 }
141
142 $this->csv = new ilCSVWriter();
143 $this->csv->addColumn($this->lng->txt("lastname"));
144 $this->csv->addColumn($this->lng->txt("firstname"));
145 $this->csv->addColumn($this->lng->txt("login"));
146
147 foreach ($events as $event_obj) {
148 // TODO: do not export relative dates
149 $this->csv->addColumn($event_obj->getTitle() . ' (' . $event_obj->getFirstAppointment()->appointmentToString() . ')');
150 }
151
152 $this->csv->addRow();
153
154 foreach ($sortedMembers as $member) {
155 $this->csv->addColumn($member['lastname']);
156 $this->csv->addColumn($member['firstname']);
157 $this->csv->addColumn(ilObjUser::_lookupLogin($member['userid']));
158
159 foreach ($events as $event_obj) {
160 $event_part = new ilEventParticipants($event_obj->getId());
161
162 $this->csv->addColumn($event_part->hasParticipated($member['userid']) ?
163 $this->lng->txt('event_participated') :
164 $this->lng->txt('event_not_participated'));
165 }
166
167 $this->csv->addRow();
168 }
169 $date = new ilDate(time(), IL_CAL_UNIX);
170
172 $this->csv->getCSVString(),
173 $date->get(IL_CAL_FKT_DATE, 'Y-m-d') . "_course_events.csv",
174 "text/csv"
175 );
176 }
177}
const IL_CAL_UNIX
const IL_CAL_FKT_DATE
error(string $a_errmsg)
Class ilCtrl provides processing control methods.
Class for single dates.
Error Handling & global info handling uses PEAR error class.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
language handling
static _lookupName(int $a_user_id)
lookup user name
static _lookupLogin(int $a_user_id)
static getInstanceByRefId(int $ref_id, bool $stop_on_error=true)
get an instance of an Ilias object by reference id
static _lookupObjId(int $ref_id)
Base class for course and group participants.
ilGlobalTemplateInterface $tpl
listSessions()
list sessions of all user
__construct(int $a_crs_ref_id, ilParticipants $a_members)
Table presentation for session overview.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
getNodeData(int $a_node_id, ?int $a_tree_pk=null)
get all information of a node.
static deliverData(string $a_data, string $a_filename, string $mime="application/octet-stream")
global $DIC
Definition: feed.php:28
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
filterUserIdsByRbacOrPositionOfCurrentUser(string $rbac_perm, string $pos_perm, int $ref_id, array $user_ids)
if($format !==null) $name
Definition: metadata.php:247
$a
thx to https://mlocati.github.io/php-cs-fixer-configurator for the examples
$ilErr
Definition: raiseError.php:17