ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
class.ilEvaluationAllTableGUI.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2013 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4
5include_once("./Services/Table/classes/class.ilTable2GUI.php");
6
17{
18 protected $anonymity;
19
26
27 public function __construct($a_parent_obj, $a_parent_cmd, $anonymity = false, $offeringQuestionHintsEnabled = false)
28 {
29 global $DIC;
30 $ilCtrl = $DIC['ilCtrl'];
31 $lng = $DIC['lng'];
32
33 $this->setId("tst_eval_all");
34 parent::__construct($a_parent_obj, $a_parent_cmd);
35
36 $this->lng = $lng;
37 $this->ctrl = $ilCtrl;
38 $this->setFormName('evaluation_all');
39 $this->setStyle('table', 'fullwidth');
40 $this->addColumn($lng->txt("name"), "name", "");
41 $this->addColumn($lng->txt("login"), "login", "");
42
43 $this->anonymity = $anonymity;
44 $this->offeringQuestionHintsEnabled = $offeringQuestionHintsEnabled;
45
46 if (!$this->anonymity) {
47 foreach ($this->getSelectedColumns() as $c) {
48 if (strcmp($c, 'gender') == 0) {
49 $this->addColumn($this->lng->txt("gender"), 'gender', '');
50 }
51 if (strcmp($c, 'email') == 0) {
52 $this->addColumn($this->lng->txt("email"), 'email', '');
53 }
54 if (strcmp($c, 'exam_id') == 0 && $this->parent_obj->object->isShowExamIdInTestResultsEnabled()) {
55 $this->addColumn($this->lng->txt("exam_id_label"), 'exam_id', '');
56 }
57 if (strcmp($c, 'institution') == 0) {
58 $this->addColumn($this->lng->txt("institution"), 'institution', '');
59 }
60 if (strcmp($c, 'street') == 0) {
61 $this->addColumn($this->lng->txt("street"), 'street', '');
62 }
63 if (strcmp($c, 'city') == 0) {
64 $this->addColumn($this->lng->txt("city"), 'city', '');
65 }
66 if (strcmp($c, 'zipcode') == 0) {
67 $this->addColumn($this->lng->txt("zipcode"), 'zipcode', '');
68 }
69
70 if ($this->isFieldEnabledEnoughByAdministration('country') && $c == 'country') {
71 $this->addColumn($this->lng->txt("country"), 'country', '');
72 }
73
74 if ($this->isFieldEnabledEnoughByAdministration('sel_country') && $c == 'sel_country') {
75 $this->addColumn($this->lng->txt("country"), 'sel_country', '');
76 }
77
78 if (strcmp($c, 'department') == 0) {
79 $this->addColumn($this->lng->txt("department"), 'department', '');
80 }
81 if (strcmp($c, 'matriculation') == 0) {
82 $this->addColumn($this->lng->txt("matriculation"), 'matriculation', '');
83 }
84 }
85 }
86
87 $this->addColumn($lng->txt("tst_reached_points"), "reached", "");
88
89 if ($this->offeringQuestionHintsEnabled) {
90 $this->addColumn($lng->txt("tst_question_hints_requested_hint_count_header"), "hint_count", "");
91 }
92
93 $this->addColumn($lng->txt("tst_mark"), "mark", "");
94
95 if ($this->parent_obj->object->getECTSOutput()) {
96 foreach ($this->getSelectedColumns() as $c) {
97 if (strcmp($c, 'ects_grade') == 0) {
98 $this->addColumn($this->lng->txt("ects_grade"), 'ects_grade', '');
99 }
100 }
101 }
102 $this->addColumn($lng->txt("tst_answered_questions"), "answered", "");
103 $this->addColumn($lng->txt("working_time"), "working_time", "");
104 $this->addColumn($lng->txt("detailed_evaluation"), "details", "");
105
106 $this->setFormAction($this->ctrl->getFormAction($a_parent_obj, $a_parent_cmd));
107 $this->setRowTemplate("tpl.table_evaluation_all.html", "Modules/Test");
108 $this->setDefaultOrderField("name");
109 $this->setDefaultOrderDirection("asc");
110 $this->enable('sort');
111 $this->enable('header');
112
113 $this->setFilterCommand('filterEvaluation');
114 $this->setResetCommand('resetfilterEvaluation');
115 $this->initFilter();
116
117 if ($this->isFieldEnabledEnoughByAdministration('sel_country')) {
118 $this->lng->loadLanguageModule('meta');
119 }
120 }
121
127 public function numericOrdering($a_field)
128 {
129 switch ($a_field) {
130 case 'name':
131 if ($this->anonymity) {
132 return true;
133 } else {
134 return false;
135 }
136 break;
137 case 'reached':
138 case 'hint_count':
139 case 'exam_id':
140 case 'answered':
141 return true;
142 break;
143 default:
144 return false;
145 break;
146 }
147 }
148
149 public function getSelectableColumns()
150 {
151 global $DIC;
152 $lng = $DIC['lng'];
153 if (!$this->anonymity) {
154 $cols["gender"] = array(
155 "txt" => $lng->txt("gender"),
156 "default" => false
157 );
158 $cols["email"] = array(
159 "txt" => $lng->txt("email"),
160 "default" => false
161 );
162 $cols["institution"] = array(
163 "txt" => $lng->txt("institution"),
164 "default" => false
165 );
166 $cols["street"] = array(
167 "txt" => $lng->txt("street"),
168 "default" => false
169 );
170 $cols["city"] = array(
171 "txt" => $lng->txt("city"),
172 "default" => false
173 );
174 $cols["zipcode"] = array(
175 "txt" => $lng->txt("zipcode"),
176 "default" => false
177 );
178 if ($this->isFieldEnabledEnoughByAdministration('country')) {
179 $cols["country"] = array(
180 "txt" => $lng->txt("country"),
181 "default" => false
182 );
183 }
184 if ($this->isFieldEnabledEnoughByAdministration('sel_country')) {
185 $cols["sel_country"] = array(
186 "txt" => $lng->txt("country"),
187 "default" => false
188 );
189 }
190 $cols["department"] = array(
191 "txt" => $lng->txt("department"),
192 "default" => false
193 );
194 $cols["matriculation"] = array(
195 "txt" => $lng->txt("matriculation"),
196 "default" => false
197 );
198 if ($this->parent_obj->object->isShowExamIdInTestResultsEnabled()) {
199 $cols["exam_id"] = array(
200 "txt" => $lng->txt("exam_id_label"),
201 "default" => false
202 );
203 }
204 }
205 if ($this->parent_obj->object->getECTSOutput()) {
206 $cols["ects_grade"] = array(
207 "txt" => $lng->txt("ects_grade"),
208 "default" => false
209 );
210 }
211 return $cols;
212 }
213
217 public function initFilter()
218 {
219 global $DIC;
220 $lng = $DIC['lng'];
221 $rbacreview = $DIC['rbacreview'];
222 $ilUser = $DIC['ilUser'];
223
224 // name
225 include_once("./Services/Form/classes/class.ilTextInputGUI.php");
226 $ti = new ilTextInputGUI($lng->txt("name"), "name");
227 $ti->setMaxLength(64);
228 $ti->setValidationRegexp('/^[^%]*$/is');
229 $ti->setSize(20);
230 $this->addFilterItem($ti);
231 $ti->readFromSession();
232 $this->filter["name"] = $ti->getValue();
233
234 // group
235 $ti = new ilTextInputGUI($lng->txt("grp"), "group");
236 $ti->setMaxLength(64);
237 $ti->setValidationRegexp('/^[^%]*$/is');
238 $ti->setSize(20);
239 $this->addFilterItem($ti);
240 $ti->readFromSession();
241 $this->filter["group"] = $ti->getValue();
242
243 // course
244 $ti = new ilTextInputGUI($lng->txt("course"), "course");
245 $ti->setMaxLength(64);
246 $ti->setSize(20);
247 $ti->setValidationRegexp('/^[^%]*$/is');
248 $this->addFilterItem($ti);
249 $ti->readFromSession();
250 $this->filter["course"] = $ti->getValue();
251
252 // passed tests
253 include_once("./Services/Form/classes/class.ilCheckboxInputGUI.php");
254 $si = new ilCheckboxInputGUI($this->lng->txt("passed_only"), "passed_only");
255 // $si->setOptionTitle();
256 $this->addFilterItem($si);
257 $si->readFromSession();
258 $this->filter["passedonly"] = $si->getValue();
259 }
260
265 protected function fillRow($data)
266 {
267 $this->tpl->setVariable("NAME", $data['name']);
268 $this->tpl->setVariable("LOGIN", $data['login']);
269 foreach ($this->getSelectedColumns() as $c) {
270 if (!$this->anonymity) {
271 if (strcmp($c, 'gender') == 0) {
272 $this->tpl->setCurrentBlock('gender');
273 $this->tpl->setVariable("GENDER", $this->lng->txt('gender_' . $data['gender']));
274 $this->tpl->parseCurrentBlock();
275 }
276 if (strcmp($c, 'email') == 0) {
277 $this->tpl->setCurrentBlock('email');
278 $this->tpl->setVariable("EMAIL", strlen($data['email']) ? $data['email'] : '&nbsp;');
279 $this->tpl->parseCurrentBlock();
280 }
281 if (strcmp($c, 'institution') == 0) {
282 $this->tpl->setCurrentBlock('institution');
283 $this->tpl->setVariable("INSTITUTION", strlen($data['institution']) ? $data['institution'] : '&nbsp;');
284 $this->tpl->parseCurrentBlock();
285 }
286 if (strcmp($c, 'street') == 0) {
287 $this->tpl->setCurrentBlock('street');
288 $this->tpl->setVariable("STREET", strlen($data['street']) ? $data['street'] : '&nbsp;');
289 $this->tpl->parseCurrentBlock();
290 }
291 if (strcmp($c, 'city') == 0) {
292 $this->tpl->setCurrentBlock('city');
293 $this->tpl->setVariable("CITY", strlen($data['city']) ? $data['city'] : '&nbsp;');
294 $this->tpl->parseCurrentBlock();
295 }
296 if (strcmp($c, 'zipcode') == 0) {
297 $this->tpl->setCurrentBlock('zipcode');
298 $this->tpl->setVariable("ZIPCODE", strlen($data['zipcode']) ? $data['zipcode'] : '&nbsp;');
299 $this->tpl->parseCurrentBlock();
300 }
301 if ($this->isFieldEnabledEnoughByAdministration('country') && $c == 'country') {
302 $this->tpl->setCurrentBlock('country');
303 $this->tpl->setVariable("COUNTRY", strlen($data['country']) ? $data['country'] : '&nbsp;');
304 $this->tpl->parseCurrentBlock();
305 }
306 if ($this->isFieldEnabledEnoughByAdministration('sel_country') && $c == 'sel_country') {
307 $this->tpl->setCurrentBlock('country');
308 $this->tpl->setVariable("COUNTRY", strlen($data['sel_country']) ? $this->getCountryTranslation($data['sel_country']) : '&nbsp;');
309 $this->tpl->parseCurrentBlock();
310 }
311 if (strcmp($c, 'department') == 0) {
312 $this->tpl->setCurrentBlock('department');
313 $this->tpl->setVariable("DEPARTMENT", strlen($data['department']) ? $data['department'] : '&nbsp;');
314 $this->tpl->parseCurrentBlock();
315 }
316 if (strcmp($c, 'matriculation') == 0) {
317 $this->tpl->setCurrentBlock('matriculation');
318 $this->tpl->setVariable("MATRICULATION", strlen($data['matriculation']) ? $data['matriculation'] : '&nbsp;');
319 $this->tpl->parseCurrentBlock();
320 }
321 if (strcmp($c, 'exam_id') == 0 && $this->parent_obj->object->isShowExamIdInTestResultsEnabled()) {
322 $this->tpl->setCurrentBlock('exam_id');
323 $examId = is_string($data['exam_id']) && strlen($data['exam_id']) ? $data['exam_id'] : '&nbsp;';
324 $this->tpl->setVariable('EXAM_ID', $examId);
325 $this->tpl->parseCurrentBlock();
326 }
327 }
328 if ($this->parent_obj->object->getECTSOutput()) {
329 if (strcmp($c, 'ects_grade') == 0) {
330 $this->tpl->setCurrentBlock('ects_grade');
331 $this->tpl->setVariable("ECTS_GRADE", $data['ects_grade']);
332 $this->tpl->parseCurrentBlock();
333 }
334 }
335 }
336 $reachedPercent = !$data['max'] ? 0 : $data['reached'] / $data['max'] * 100;
337 $reached = $data['reached'] . " " . strtolower($this->lng->txt("of")) . " " . $data['max'] . " (" . sprintf("%2.2f", $reachedPercent) . " %)";
338 $this->tpl->setVariable("REACHED", $reached);
339
340 if ($this->offeringQuestionHintsEnabled) {
341 $this->tpl->setVariable("HINT_COUNT", $data['hint_count']);
342 }
343
344 $data['answered'] = $data['questions_worked_through'] . " " . strtolower($this->lng->txt("of")) . " " . $data['number_of_questions'] . " (" . sprintf("%2.2f", $data['answered']) . " %" . ")";
345
346 $this->tpl->setVariable("MARK", $data['mark']);
347 $this->tpl->setVariable("ANSWERED", $data['answered']);
348 $this->tpl->setVariable("WORKING_TIME", $data['working_time']);
349 $this->tpl->setVariable("DETAILED", $data['details']);
350 }
351
352 public function getSelectedColumns()
353 {
354 $scol = parent::getSelectedColumns();
355
356 $cols = $this->getSelectableColumns();
357 if (!is_array($cols)) {
358 $cols = array();
359 }
360
361 $fields_to_unset = array_diff(array_keys($scol), array_keys($cols));
362
363 foreach ($fields_to_unset as $key) {
364 unset($scol[$key]);
365 }
366
367 return $scol;
368 }
369
370 protected function getCountryTranslation($countryCode)
371 {
372 return $this->lng->txt('meta_c_' . $countryCode);
373 }
374
375 protected function isFieldEnabledEnoughByAdministration($fieldIdentifier)
376 {
377 global $DIC;
378 $ilSetting = $DIC['ilSetting'];
379
380 if ($ilSetting->get("usr_settings_hide_" . $fieldIdentifier)) { // visible
381 return false;
382 }
383
384 if (!$ilSetting->get('usr_settings_visib_reg_' . $fieldIdentifier)) { // visib_reg
385 return false;
386 }
387
388 if (!$ilSetting->get('usr_settings_visib_lua_' . $fieldIdentifier)) { // visib_lua
389 return false;
390 }
391
392 if ($ilSetting->get("usr_settings_disable_" . $fieldIdentifier)) { // changeable
393 return false;
394 }
395
396 if (!$ilSetting->get('usr_settings_changeable_lua_' . $fieldIdentifier)) { // changeable_lua
397 return false;
398 }
399
400 return true;
401 }
402}
An exception for terminatinating execution or to throw for unit testing.
This class represents a checkbox property in a property form.
TableGUI class for evaluation of all users.
getSelectedColumns()
Get selected columns.
__construct($a_parent_obj, $a_parent_cmd, $anonymity=false, $offeringQuestionHintsEnabled=false)
numericOrdering($a_field)
Should this field be sorted numeric?
isFieldEnabledEnoughByAdministration($fieldIdentifier)
getSelectableColumns()
Get selectable columns.
fillRow($data)
Standard Version of Fill Row.
Class ilTable2GUI.
setResetCommand($a_val, $a_caption=null)
Set reset filter command.
setRowTemplate($a_template, $a_template_dir="")
Set row template.
addFilterItem($a_input_item, $a_optional=false)
Add filter item.
setDefaultOrderField($a_defaultorderfield)
Set Default order field.
addColumn( $a_text, $a_sort_field="", $a_width="", $a_is_checkbox_action_column=false, $a_class="", $a_tooltip="", $a_tooltip_with_html=false)
Add a column to the header.
setId($a_val)
Set id.
setFormName($a_formname="")
Set Form name.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
setDefaultOrderDirection($a_defaultorderdirection)
Set Default order direction.
setFilterCommand($a_val, $a_caption=null)
Set filter command.
setStyle($a_element, $a_style)
enable($a_module_name)
enables particular modules of table
This class represents a text property in a property form.
global $ilCtrl
Definition: ilias.php:18
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
global $ilSetting
Definition: privfeed.php:17
$ilUser
Definition: imgupload.php:18
$DIC
Definition: xapitoken.php:46
$cols
Definition: xhr_table.php:11