ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
class.ilTestSkillEvaluationGUI.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 require_once 'Modules/Test/classes/toolbars/class.ilTestSkillEvaluationToolbarGUI.php';
5 require_once 'Modules/Test/classes/class.ilTestPersonalSkillsGUI.php';
6 require_once 'Modules/Test/classes/class.ilObjAssessmentFolder.php';
7 
18 {
20 
21  const CMD_SHOW = 'show';
25  private $ctrl;
26 
30  private $tabs;
31 
35  private $tpl;
36 
40  private $lng;
41 
45  private $db;
46 
50  protected $testOBJ;
51 
55  private $testSession;
56 
61 
65  private $questionList;
66 
67  protected $noSkillProfileOptionEnabled = false;
69  protected $availableSkills = array();
70 
74  protected $testPassesSelector = null;
75 
77  {
78  $this->ctrl = $ctrl;
79  $this->tabs = $tabs;
80  $this->tpl = $tpl;
81  $this->lng = $lng;
82  $this->db = $db;
83  $this->testOBJ = $testOBJ;
84  }
85 
89  public function getQuestionList()
90  {
91  return $this->questionList;
92  }
93 
97  public function setQuestionList($questionList)
98  {
99  $this->questionList = $questionList;
100  }
101 
106  {
108  }
109 
114  {
115  $this->objectiveOrientedContainer = $objectiveOrientedContainer;
116  }
117 
118  public function executeCommand()
119  {
120  $cmd = $this->ctrl->getCmd(self::CMD_SHOW) . 'Cmd';
121 
122  $this->manageTabs($cmd);
123 
124  $this->$cmd();
125  }
126 
127  private function isAccessDenied()
128  {
129  return false;
130  }
131 
132  private function manageTabs($cmd)
133  {
134  $this->tabs->clearTargets();
135 
136  $this->tabs->setBackTarget(
137  $this->lng->txt('tst_results_back_introduction'),
138  $this->ctrl->getLinkTargetByClass('ilObjTestGUI', 'infoScreen')
139  );
140 
141  if( $this->getObjectiveOrientedContainer()->isObjectiveOrientedPresentationRequired() )
142  {
143  require_once 'Services/Link/classes/class.ilLink.php';
144  $courseLink = ilLink::_getLink($this->getObjectiveOrientedContainer()->getRefId());
145  $this->tabs->setBack2Target($this->lng->txt('back_to_objective_container'), $courseLink);
146  }
147  }
148 
149  protected function init($skillProfileEnabled)
150  {
151  require_once 'Modules/Test/classes/class.ilTestPassesSelector.php';
152  $this->testPassesSelector = new ilTestPassesSelector($this->db, $this->testOBJ);
153  $this->testPassesSelector->setActiveId($this->testSession->getActiveId());
154  $this->testPassesSelector->setLastFinishedPass($this->testSession->getLastFinishedPass());
155 
156  $assSettings = new ilSetting('assessment');
157  require_once 'Modules/Test/classes/class.ilTestSkillEvaluation.php';
158  $skillEvaluation = new ilTestSkillEvaluation(
159  $this->db, $this->testOBJ->getTestId(), $this->testOBJ->getRefId()
160  );
161 
162  $skillEvaluation->setUserId($this->getTestSession()->getUserId());
163  $skillEvaluation->setActiveId($this->getTestSession()->getActiveId());
164 
165  $skillEvaluation->setNumRequiredBookingsForSkillTriggering( $assSettings->get(
166  'ass_skl_trig_num_answ_barrier', ilObjAssessmentFolder::DEFAULT_SKL_TRIG_NUM_ANSWERS_BARRIER
167  ));
168 
169  $skillEvaluation->init($this->getQuestionList());
170 
171  $availableSkillProfiles = $skillEvaluation->getAssignedSkillMatchingSkillProfiles();
173  $skillEvaluation->noProfileMatchingAssignedSkillExists($availableSkillProfiles)
174  );
176 
177  // should be reportedPasses - yes - indeed, skill level status will not respect - avoid confuse here
178  $evaluationPasses = $this->testPassesSelector->getExistingPasses();
179 
181 
182  foreach($evaluationPasses as $evalPass)
183  {
184  $testResults = $this->testOBJ->getTestResult($this->getTestSession()->getActiveId(), $evalPass, true);
185 
186  $skillEvaluation->setPass($evalPass);
187  $skillEvaluation->evaluate($testResults);
188 
189  if($skillProfileEnabled && self::INVOLVE_SKILLS_BELOW_NUM_ANSWERS_BARRIER_FOR_GAP_ANALASYS)
190  {
191  $skills = $skillEvaluation->getSkillsInvolvedByAssignment();
192  }
193  else
194  {
195  $skills = $skillEvaluation->getSkillsMatchingNumAnswersBarrier();
196  }
197 
198  $availableSkills = array_merge($availableSkills, $skills);
199  }
200 
201  $this->setAvailableSkills(array_values($availableSkills));
202  }
203 
204  private function showCmd()
205  {
206  //ilUtil::sendInfo($this->lng->txt('tst_skl_res_interpretation_hint_msg'));
207 
209 
210  $this->init($selectedSkillProfile);
211 
212  $evaluationToolbarGUI = $this->buildEvaluationToolbarGUI($selectedSkillProfile);
213 
214  $personalSkillsGUI = $this->buildPersonalSkillsGUI( $this->getTestSession()->getUserId(),
215  $evaluationToolbarGUI->getSelectedEvaluationMode(), $this->getAvailableSkills()
216  );
217 
218  $this->tpl->setContent(
219  $this->ctrl->getHTML($evaluationToolbarGUI) . $this->ctrl->getHTML($personalSkillsGUI)
220  );
221  }
222 
223  private function buildEvaluationToolbarGUI($selectedSkillProfileId)
224  {
225  if(!$this->isNoSkillProfileOptionEnabled() && !$selectedSkillProfileId)
226  {
227  $selectedSkillProfileId = key($this->getAvailableSkillProfiles());
228  }
229 
230  $gui = new ilTestSkillEvaluationToolbarGUI($this->ctrl, $this->lng, $this, self::CMD_SHOW);
231 
232  $gui->setAvailableSkillProfiles($this->getAvailableSkillProfiles());
233  $gui->setNoSkillProfileOptionEnabled($this->isNoSkillProfileOptionEnabled());
234  $gui->setSelectedEvaluationMode($selectedSkillProfileId);
235 
236  $gui->setTestResultButtonEnabled($this->isTestResultButtonRequired());
237 
238  $gui->build();
239 
240  return $gui;
241  }
242 
243  private function isTestResultButtonRequired()
244  {
245  if( !$this->testOBJ->canShowTestResults($this->testSession) )
246  {
247  return false;
248  }
249 
250  if( !count($this->testPassesSelector->getReportablePasses()) )
251  {
252  return false;
253  }
254 
255  return true;
256  }
257 
258  private function buildPersonalSkillsGUI($usrId, $selectedSkillProfileId, $availableSkills)
259  {
260  $gui = new ilTestPersonalSkillsGUI($this->lng, $this->testOBJ->getId());
261 
263  $gui->setSelectedSkillProfile($selectedSkillProfileId);
264 
265  $gui->setReachedSkillLevels($reachedSkillLevels);
266  $gui->setUsrId($usrId);
267 
268  return $gui;
269  }
270 
274  public function setTestSession($testSession)
275  {
276  $this->testSession = $testSession;
277  }
278 
282  public function getTestSession()
283  {
284  return $this->testSession;
285  }
286 
291  {
293  }
294 
299  {
300  $this->noSkillProfileOptionEnabled = $noSkillProfileOptionEnabled;
301  }
302 
306  public function getAvailableSkillProfiles()
307  {
309  }
310 
315  {
316  $this->availableSkillProfiles = $availableSkillProfiles;
317  }
318 
322  public function getAvailableSkills()
323  {
324  return $this->availableSkills;
325  }
326 
331  {
332  $this->availableSkills = $availableSkills;
333  }
334 }
ILIAS Setting Class.
This class provides processing control methods.
Tabs GUI.
__construct(ilCtrl $ctrl, ilTabsGUI $tabs, ilTemplate $tpl, ilLanguage $lng, ilDBInterface $db, ilObjTest $testOBJ)
$cmd
Definition: sahs_server.php:35
buildEvaluationToolbarGUI($selectedSkillProfileId)
setObjectiveOrientedContainer($objectiveOrientedContainer)
Interface ilDBInterface.
special template class to simplify handling of ITX/PEAR
Create styles array
The data for the language used.
buildPersonalSkillsGUI($usrId, $selectedSkillProfileId, $availableSkills)
setAvailableSkillProfiles($availableSkillProfiles)
setNoSkillProfileOptionEnabled($noSkillProfileOptionEnabled)
language handling
$_POST["username"]