ILIAS  release_8 Revision v8.24
class.ilParticipantsPerAssignmentTableGUI.php
Go to the documentation of this file.
1<?php
2
26{
27 protected array $teams = array();
28
32 public function __construct(
33 object $a_parent_obj,
34 string $a_parent_cmd,
35 ilObjExercise $a_exc,
36 int $a_item_id
37 ) {
38 parent::__construct($a_parent_obj, $a_parent_cmd, $a_exc, $a_item_id);
40
41 $this->ass_types = ilExAssignmentTypes::getInstance();
42 $this->ass_type = $this->ass_types->getById(ilExAssignment::lookupType($a_item_id));
43
44 $this->setFormAction($ctrl->getFormAction($a_parent_obj, "saveStatusAll"));
45 }
46
50 protected function initMode(int $a_item_id): void
51 {
53
54 $this->mode = self::MODE_BY_ASSIGNMENT;
55
56 // global id for all exercises
57 $this->setId("exc_mem");
58
59 $this->ass = new ilExAssignment($a_item_id);
60
61 $this->setTitle($lng->txt("exc_assignment") . ": " . $this->ass->getTitle());
62 $this->setSelectAllCheckbox("sel_part_ids");
63 }
64
65 protected function parseData(): array
66 {
67 $this->addCommandButton("saveStatusAll", $this->lng->txt("exc_save_all"));
68
69 $tmp_data = $this->ass->getMemberListData();
70
71 // filter user access
72 $usr_ids = array_keys($tmp_data);
73 $filtered_usr_ids = $GLOBALS['DIC']->access()->filterUserIdsByRbacOrPositionOfCurrentUser(
74 'edit_submissions_grades',
75 'edit_submissions_grades',
76 $this->exc->getRefId(),
77 $usr_ids
78 );
79 $data = [];
80 foreach ($filtered_usr_ids as $usr_id) {
81 $data[$usr_id] = $tmp_data[$usr_id];
82 }
83
84
85 $idl = $this->ass->getIndividualDeadlines();
86 $calc_deadline = $this->ass->getCalculatedDeadlines();
87
88 // team upload? (1 row == 1 team)
89 if ($this->ass->hasTeam()) {
91 $team_map = ilExAssignmentTeam::getAssignmentTeamMap($this->ass->getId());
92
93 $tmp = array();
94
95 foreach ($data as $item) {
96 // filter
97 if ($this->filter["status"] &&
98 $item["status"] != $this->filter["status"]) {
99 continue;
100 }
101
102 $team_id = $team_map[$item["usr_id"]] ?? "";
103
104 if (!$team_id) {
105 // #11957
106 $team_id = "nty" . $item["usr_id"];
107 }
108
109 if (!isset($tmp[$team_id])) {
110 $tmp[$team_id] = $item;
111
112 if (is_numeric($team_id)) {
113 $tmp[$team_id]["submission_obj"] = new ilExSubmission($this->ass, $item["usr_id"], $teams[$team_id]);
114 } else {
115 // ilExSubmission should not try to auto-load
116 $tmp[$team_id]["submission_obj"] = new ilExSubmission($this->ass, $item["usr_id"], new ilExAssignmentTeam());
117 }
118 }
119
120 $tmp[$team_id]["team"][$item["usr_id"]] = $item["name"];
121
122 if (is_numeric($team_id)) {
123 $idl_team_id = "t" . $team_id;
124 if (array_key_exists($idl_team_id, $idl)) {
125 $tmp[$team_id]["idl"] = $idl[$idl_team_id];
126 }
127
128 if (isset($calc_deadline["team"][$team_id])) {
129 $tmp[$team_id]["calc_deadline"] = $calc_deadline["team"][$team_id]["calculated_deadline"];
130 }
131 } elseif (isset($calc_deadline["user"][$item["usr_id"]])) {
132 $tmp["nty" . $item["usr_id"]]["calc_deadline"] = $calc_deadline["user"][$item["usr_id"]]["calculated_deadline"];
133 }
134 }
135
136 // filter (team-wide)
137 if ($this->filter["name"]) {
138 foreach ($tmp as $idx => $item) {
139 if (!stristr(implode("", $item["team"]), $this->filter["name"])) {
140 unset($tmp[$idx]);
141 }
142 }
143 }
144 if ($this->filter["subm"]) {
145 foreach ($tmp as $idx => $item) {
146 $submission = $item["submission_obj"];
147 if ($this->filter["subm"] == "y" &&
148 !$submission->getLastSubmission()) {
149 unset($tmp[$idx]);
150 } elseif ($this->filter["subm"] == "n" &&
151 $submission->getLastSubmission()) {
152 unset($tmp[$idx]);
153 }
154 }
155 }
156
157 $data = $tmp;
158 unset($tmp);
159 } else {
160 foreach ($data as $idx => $item) {
161 // filter
162 if ($this->filter["status"] &&
163 $item["status"] != $this->filter["status"]) {
164 unset($data[$idx]);
165 continue;
166 }
167 if ($this->filter["name"] &&
168 !stristr($item["name"], $this->filter["name"]) &&
169 !stristr($item["login"], $this->filter["name"])) {
170 unset($data[$idx]);
171 continue;
172 }
173
174 $data[$idx]["submission_obj"] = new ilExSubmission($this->ass, $item["usr_id"]);
175
176 // filter
177 if ($this->filter["subm"]) {
178 $submission = $data[$idx]["submission_obj"];
179 if ($this->filter["subm"] == "y" &&
180 !$submission->getLastSubmission()) {
181 unset($data[$idx]);
182 continue;
183 } elseif ($this->filter["subm"] == "n" &&
184 $submission->getLastSubmission()) {
185 unset($data[$idx]);
186 continue;
187 }
188 }
189
190 if (array_key_exists($item["usr_id"], $idl)) {
191 $data[$idx]["idl"] = $idl[$item["usr_id"]];
192 }
193
194 if (isset($calc_deadline["user"][$item["usr_id"]])) {
195 $data[$idx]["calc_deadline"] = $calc_deadline["user"][$item["usr_id"]]["calculated_deadline"];
196 }
197 }
198 }
199
200 return $data;
201 }
202
203 protected function getModeColumns(): array
204 {
205 $cols = array();
206
207 if (!$this->ass->hasTeam()) {
208 $selected = $this->getSelectedColumns();
209
210 if (in_array("image", $selected)) {
211 $cols["image"] = array($this->lng->txt("image"));
212 }
213
214 $cols["name"] = array($this->lng->txt("name"), "name");
215
216 if (in_array("login", $selected)) {
217 $cols["login"] = array($this->lng->txt("login"), "login");
218 }
219 } else {
220 $cols["name"] = array($this->lng->txt("exc_team"));
221 }
222
223 return $cols;
224 }
225
226 protected function parseModeColumns(): array
227 {
228 $cols = array();
229
230 if (!$this->ass->hasTeam()) {
231 $cols["image"] = array($this->lng->txt("image"));
232 $cols["name"] = array($this->lng->txt("name"), "name");
233 $cols["login"] = array($this->lng->txt("login"), "login");
234 } else {
235 $cols["name"] = array($this->lng->txt("exc_tbl_team"));
236 }
237
238 if ($this->ass->hasActiveIDl()) {
239 $cols["idl"] = array($this->lng->txt("exc_tbl_individual_deadline"), "idl");
240 }
241
242 if ($this->ass->getDeadlineMode() == ilExAssignment::DEADLINE_RELATIVE && $this->ass->getRelativeDeadline()) {
243 $cols["calc_deadline"] = array($this->lng->txt("exc_tbl_calculated_deadline"), "calc_deadline");
244 }
245
246 return $cols;
247 }
248
254 protected function fillRow(array $a_set): void
255 {
256 $ilCtrl = $this->ctrl;
257
258 $member_id = $a_set["usr_id"];
259
260 $ilCtrl->setParameter($this->parent_obj, "ass_id", $this->ass->getId());
261 $ilCtrl->setParameter($this->parent_obj, "member_id", $member_id);
262
263 // multi-select id
264 $this->tpl->setVariable("NAME_ID", "sel_part_ids");
265 $this->tpl->setVariable("LISTED_NAME_ID", "listed_part_ids");
266 $this->tpl->setVariable("VAL_ID", $member_id);
267
268 $this->parseRow($member_id, $this->ass, $a_set);
269
270 $ilCtrl->setParameter($this->parent_obj, "ass_id", $this->ass->getId()); // #17140
271 $ilCtrl->setParameter($this->parent_obj, "member_id", "");
272 }
273}
if(!defined('PATH_SEPARATOR')) $GLOBALS['_PEAR_default_error_mode']
Definition: PEAR.php:64
setParameter(object $a_gui_obj, string $a_parameter, $a_value)
@inheritDoc
getFormAction(object $a_gui_obj, string $a_fallback_cmd=null, string $a_anchor=null, bool $is_async=false, bool $has_xml_style=false)
@inheritDoc
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getAssignmentTeamMap(int $a_ass_id)
static getInstancesFromMap(int $a_assignment_id)
Exercise assignment.
static lookupType(int $a_id)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
txt(string $a_topic, string $a_default_lang_fallback_mod="")
gets the text for a given topic if the topic is not in the list, the topic itself with "-" will be re...
Class ilObjExercise.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
__construct(object $a_parent_obj, string $a_parent_cmd, ilObjExercise $a_exc, int $a_item_id)
setTitle(string $a_title, string $a_icon="", string $a_icon_alt="")
addCommandButton(string $a_cmd, string $a_text, string $a_onclick='', string $a_id="", string $a_class="")
setFormAction(string $a_form_action, bool $a_multipart=false)
setSelectAllCheckbox(string $a_select_all_checkbox, bool $a_select_all_on_top=false)
setId(string $a_val)
ilLanguage $lng
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
$cols
Definition: xhr_table.php:11