ILIAS  Release_5_0_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
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 $ilCtrl, $lng;
30 
31  $this->setId("tst_eval_all");
32  parent::__construct($a_parent_obj, $a_parent_cmd);
33 
34  $this->lng = $lng;
35  $this->ctrl = $ilCtrl;
36  $this->setFormName('evaluation_all');
37  $this->setStyle('table', 'fullwidth');
38  $this->addColumn($lng->txt("name"), "name", "");
39  $this->addColumn($lng->txt("login"), "login", "");
40 
41  $this->anonymity = $anonymity;
42  $this->offeringQuestionHintsEnabled = $offeringQuestionHintsEnabled;
43 
44  if (!$this->anonymity)
45  {
46  foreach ($this->getSelectedColumns() as $c)
47  {
48  if (strcmp($c, 'gender') == 0) $this->addColumn($this->lng->txt("gender"),'gender', '');
49  if (strcmp($c, 'email') == 0) $this->addColumn($this->lng->txt("email"),'email', '');
50  if (strcmp($c, 'institution') == 0) $this->addColumn($this->lng->txt("institution"),'institution', '');
51  if (strcmp($c, 'street') == 0) $this->addColumn($this->lng->txt("street"),'street', '');
52  if (strcmp($c, 'city') == 0) $this->addColumn($this->lng->txt("city"),'city', '');
53  if (strcmp($c, 'zipcode') == 0) $this->addColumn($this->lng->txt("zipcode"),'zipcode', '');
54 
55  if( $this->isFieldEnabledEnoughByAdministration('country') && $c == 'country' )
56  {
57  $this->addColumn($this->lng->txt("country"),'country', '');
58  }
59 
60  if( $this->isFieldEnabledEnoughByAdministration('sel_country') && $c == 'sel_country' )
61  {
62  $this->addColumn($this->lng->txt("country"),'sel_country', '');
63  }
64 
65  if (strcmp($c, 'department') == 0) $this->addColumn($this->lng->txt("department"),'department', '');
66  if (strcmp($c, 'matriculation') == 0) $this->addColumn($this->lng->txt("matriculation"),'matriculation', '');
67  }
68  }
69 
70  $this->addColumn($lng->txt("tst_reached_points"), "reached", "");
71 
72  if( $this->offeringQuestionHintsEnabled )
73  {
74  $this->addColumn($lng->txt("tst_question_hints_requested_hint_count_header"), "hint_count", "");
75  }
76 
77  $this->addColumn($lng->txt("tst_mark"), "mark", "");
78 
79  if ($this->parent_obj->object->getECTSOutput())
80  {
81  foreach ($this->getSelectedColumns() as $c)
82  {
83  if (strcmp($c, 'ects_grade') == 0) $this->addColumn($this->lng->txt("ects_grade"),'ects_grade', '');
84  }
85  }
86  $this->addColumn($lng->txt("tst_answered_questions"), "answered", "");
87  $this->addColumn($lng->txt("working_time"), "working_time", "");
88  $this->addColumn($lng->txt("detailed_evaluation"), "details", "");
89 
90  $this->setFormAction($this->ctrl->getFormAction($a_parent_obj, $a_parent_cmd));
91  $this->setRowTemplate("tpl.table_evaluation_all.html", "Modules/Test");
92  $this->setDefaultOrderField("name");
93  $this->setDefaultOrderDirection("asc");
94  $this->enable('sort');
95  $this->enable('header');
96 
97  $this->setFilterCommand('filterEvaluation');
98  $this->setResetCommand('resetfilterEvaluation');
99  $this->initFilter();
100 
101  if($this->isFieldEnabledEnoughByAdministration('sel_country'))
102  {
103  $this->lng->loadLanguageModule('meta');
104  }
105  }
106 
112  function numericOrdering($a_field)
113  {
114  switch ($a_field)
115  {
116  case 'name':
117  if ($this->anonymity)
118  {
119  return true;
120  }
121  else
122  {
123  return false;
124  }
125  break;
126  case 'reached':
127  case 'hint_count':
128  case 'answered':
129  return true;
130  break;
131  default:
132  return false;
133  break;
134  }
135  }
136 
138  {
139  global $lng;
140  if (!$this->anonymity)
141  {
142  $cols["gender"] = array(
143  "txt" => $lng->txt("gender"),
144  "default" => false
145  );
146  $cols["email"] = array(
147  "txt" => $lng->txt("email"),
148  "default" => false
149  );
150  $cols["institution"] = array(
151  "txt" => $lng->txt("institution"),
152  "default" => false
153  );
154  $cols["street"] = array(
155  "txt" => $lng->txt("street"),
156  "default" => false
157  );
158  $cols["city"] = array(
159  "txt" => $lng->txt("city"),
160  "default" => false
161  );
162  $cols["zipcode"] = array(
163  "txt" => $lng->txt("zipcode"),
164  "default" => false
165  );
166  if( $this->isFieldEnabledEnoughByAdministration('country') )
167  {
168  $cols["country"] = array(
169  "txt" => $lng->txt("country"),
170  "default" => false
171  );
172  }
173  if( $this->isFieldEnabledEnoughByAdministration('sel_country') )
174  {
175  $cols["sel_country"] = array(
176  "txt" => $lng->txt("country"),
177  "default" => false
178  );
179  }
180  $cols["department"] = array(
181  "txt" => $lng->txt("department"),
182  "default" => false
183  );
184  $cols["matriculation"] = array(
185  "txt" => $lng->txt("matriculation"),
186  "default" => false
187  );
188  }
189  if ($this->parent_obj->object->getECTSOutput())
190  {
191  $cols["ects_grade"] = array(
192  "txt" => $lng->txt("ects_grade"),
193  "default" => false
194  );
195  }
196  return $cols;
197  }
198 
202  function initFilter()
203  {
204  global $lng, $rbacreview, $ilUser;
205 
206  // name
207  include_once("./Services/Form/classes/class.ilTextInputGUI.php");
208  $ti = new ilTextInputGUI($lng->txt("name"), "name");
209  $ti->setMaxLength(64);
210  $ti->setValidationRegexp('/^[^%]+$/is');
211  $ti->setSize(20);
212  $this->addFilterItem($ti);
213  $ti->readFromSession();
214  $this->filter["name"] = $ti->getValue();
215 
216  // group
217  $ti = new ilTextInputGUI($lng->txt("grp"), "group");
218  $ti->setMaxLength(64);
219  $ti->setValidationRegexp('/^[^%]+$/is');
220  $ti->setSize(20);
221  $this->addFilterItem($ti);
222  $ti->readFromSession();
223  $this->filter["group"] = $ti->getValue();
224 
225  // course
226  $ti = new ilTextInputGUI($lng->txt("course"), "course");
227  $ti->setMaxLength(64);
228  $ti->setSize(20);
229  $ti->setValidationRegexp('/^[^%]+$/is');
230  $this->addFilterItem($ti);
231  $ti->readFromSession();
232  $this->filter["course"] = $ti->getValue();
233 
234  // passed tests
235  include_once("./Services/Form/classes/class.ilCheckboxInputGUI.php");
236  $si = new ilCheckboxInputGUI($this->lng->txt("passed_only"), "passed_only");
237 // $si->setOptionTitle();
238  $this->addFilterItem($si);
239  $si->readFromSession();
240  $this->filter["passedonly"] = $si->getValue();
241  }
242 
247  protected function fillRow($data)
248  {
249  $this->tpl->setVariable("NAME", $data['name']);
250  $this->tpl->setVariable("LOGIN", $data['login']);
251  foreach ($this->getSelectedColumns() as $c)
252  {
253  if (!$this->anonymity)
254  {
255  if (strcmp($c, 'gender') == 0)
256  {
257  $this->tpl->setCurrentBlock('gender');
258  $this->tpl->setVariable("GENDER", $this->lng->txt('gender_' . $data['gender']));
259  $this->tpl->parseCurrentBlock();
260  }
261  if (strcmp($c, 'email') == 0)
262  {
263  $this->tpl->setCurrentBlock('email');
264  $this->tpl->setVariable("EMAIL", strlen($data['email']) ? $data['email'] : '&nbsp;');
265  $this->tpl->parseCurrentBlock();
266  }
267  if (strcmp($c, 'institution') == 0)
268  {
269  $this->tpl->setCurrentBlock('institution');
270  $this->tpl->setVariable("INSTITUTION", strlen($data['institution']) ? $data['institution'] : '&nbsp;');
271  $this->tpl->parseCurrentBlock();
272  }
273  if (strcmp($c, 'street') == 0)
274  {
275  $this->tpl->setCurrentBlock('street');
276  $this->tpl->setVariable("STREET", strlen($data['street']) ? $data['street'] : '&nbsp;');
277  $this->tpl->parseCurrentBlock();
278  }
279  if (strcmp($c, 'city') == 0)
280  {
281  $this->tpl->setCurrentBlock('city');
282  $this->tpl->setVariable("CITY", strlen($data['city']) ? $data['city'] : '&nbsp;');
283  $this->tpl->parseCurrentBlock();
284  }
285  if (strcmp($c, 'zipcode') == 0)
286  {
287  $this->tpl->setCurrentBlock('zipcode');
288  $this->tpl->setVariable("ZIPCODE", strlen($data['zipcode']) ? $data['zipcode'] : '&nbsp;');
289  $this->tpl->parseCurrentBlock();
290  }
291  if( $this->isFieldEnabledEnoughByAdministration('country') && $c == 'country' )
292  {
293  $this->tpl->setCurrentBlock('country');
294  $this->tpl->setVariable("COUNTRY", strlen($data['country']) ? $data['country'] : '&nbsp;');
295  $this->tpl->parseCurrentBlock();
296  }
297  if( $this->isFieldEnabledEnoughByAdministration('sel_country') && $c == 'sel_country' )
298  {
299  $this->tpl->setCurrentBlock('country');
300  $this->tpl->setVariable("COUNTRY", strlen($data['sel_country']) ? $this->getCountryTranslation($data['sel_country']) : '&nbsp;');
301  $this->tpl->parseCurrentBlock();
302  }
303  if (strcmp($c, 'department') == 0)
304  {
305  $this->tpl->setCurrentBlock('department');
306  $this->tpl->setVariable("DEPARTMENT", strlen($data['department']) ? $data['department'] : '&nbsp;');
307  $this->tpl->parseCurrentBlock();
308  }
309  if (strcmp($c, 'matriculation') == 0)
310  {
311  $this->tpl->setCurrentBlock('matriculation');
312  $this->tpl->setVariable("MATRICULATION", strlen($data['matriculation']) ? $data['matriculation'] : '&nbsp;');
313  $this->tpl->parseCurrentBlock();
314  }
315  }
316  if ($this->parent_obj->object->getECTSOutput())
317  {
318  if (strcmp($c, 'ects_grade') == 0)
319  {
320  $this->tpl->setCurrentBlock('ects_grade');
321  $this->tpl->setVariable("ECTS_GRADE", $data['ects_grade']);
322  $this->tpl->parseCurrentBlock();
323  }
324  }
325  }
326  $this->tpl->setVariable("REACHED", $data['reached'] . " " . strtolower($this->lng->txt("of")) . " " . $data['max']);
327 
328  if( $this->offeringQuestionHintsEnabled )
329  {
330  $this->tpl->setVariable("HINT_COUNT", $data['hint_count']);
331  }
332 
333  $data['answered'] = $data['questions_worked_through'] . " " . strtolower($this->lng->txt("of")) . " " . $data['number_of_questions'] . " (" . sprintf("%2.2f", $data['answered']) . " %" . ")";
334 
335  $this->tpl->setVariable("MARK", $data['mark']);
336  $this->tpl->setVariable("ANSWERED", $data['answered']);
337  $this->tpl->setVariable("WORKING_TIME", $data['working_time']);
338  $this->tpl->setVariable("DETAILED", $data['details']);
339  }
340 
342  {
343  $scol = parent::getSelectedColumns();
344 
345  $cols = $this->getSelectableColumns();
346  if (!is_array($cols)) {
347  $cols = array();
348  }
349 
350  $fields_to_unset = array_diff(array_keys($scol), array_keys($cols));
351 
352  foreach($fields_to_unset as $key) {
353  unset($scol[$key]);
354  }
355 
356  return $scol;
357  }
358 
359  protected function getCountryTranslation($countryCode)
360  {
361  return $this->lng->txt('meta_c_'.$countryCode);
362  }
363 
364  protected function isFieldEnabledEnoughByAdministration($fieldIdentifier)
365  {
366  global $ilSetting;
367 
368  if( $ilSetting->get("usr_settings_hide_".$fieldIdentifier) ) // visible
369  {
370  return false;
371  }
372 
373  if( !$ilSetting->get('usr_settings_visib_reg_'.$fieldIdentifier) ) // visib_reg
374  {
375  return false;
376  }
377 
378  if( !$ilSetting->get('usr_settings_visib_lua_'.$fieldIdentifier) ) // visib_lua
379  {
380  return false;
381  }
382 
383  if ( $ilSetting->get("usr_settings_disable_".$fieldIdentifier) ) // changeable
384  {
385  return false;
386  }
387 
388  if( !$ilSetting->get('usr_settings_changeable_lua_'.$fieldIdentifier) ) // changeable_lua
389  {
390  return false;
391  }
392 
393  return true;
394  }
395 }
396 ?>