ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
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 
5 include_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 }
__construct($a_parent_obj, $a_parent_cmd, $anonymity=false, $offeringQuestionHintsEnabled=false)
setDefaultOrderField($a_defaultorderfield)
Set Default order field.
fillRow($data)
Standard Version of Fill Row.
setStyle($a_element, $a_style)
global $DIC
Definition: saml.php:7
This class represents a checkbox property in a property form.
addFilterItem($a_input_item, $a_optional=false)
Add filter item.
TableGUI class for evaluation of all users.
setId($a_val)
Set id.
global $ilCtrl
Definition: ilias.php:18
setDefaultOrderDirection($a_defaultorderdirection)
Set Default order direction.
Class ilTable2GUI.
setResetCommand($a_val, $a_caption=null)
Set reset filter command.
enable($a_module_name)
enables particular modules of table
isFieldEnabledEnoughByAdministration($fieldIdentifier)
This class represents a text property in a property form.
$ilUser
Definition: imgupload.php:18
setMaxLength($a_maxlength)
Set Max Length.
numericOrdering($a_field)
Should this field be sorted numeric?
setRowTemplate($a_template, $a_template_dir="")
Set row template.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
global $ilSetting
Definition: privfeed.php:17
setFormName($a_formname="")
Set Form name.
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.
$key
Definition: croninfo.php:18
$cols
Definition: xhr_table.php:11
setFilterCommand($a_val, $a_caption=null)
Set filter command.