ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
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 {
19  const CMD_SHOW = 'show';
23  private $ctrl;
24 
28  private $tabs;
29 
33  private $tpl;
34 
38  private $lng;
39 
43  private $db;
44 
48  private $testId;
49 
54 
58  private $testSession;
59 
64 
68  private $testResults;
69 
73  private $questionList;
74 
78  private $objectId;
79 
81  {
82  $this->ctrl = $ctrl;
83  $this->tabs = $tabs;
84  $this->tpl = $tpl;
85  $this->lng = $lng;
86  $this->db = $db;
87  $this->testId = $testId;
88  $this->objectId = $objectId;
89 
90  require_once 'Modules/Test/classes/class.ilTestSkillEvaluation.php';
91  $this->skillEvaluation = new ilTestSkillEvaluation($this->db, $this->getTestId(), $refId);
92  }
93 
97  public function getQuestionList()
98  {
99  return $this->questionList;
100  }
101 
106  {
107  $this->questionList = $questionList;
108  }
109 
114  {
116  }
117 
122  {
123  $this->objectiveOrientedContainer = $objectiveOrientedContainer;
124  }
125 
126  public function executeCommand()
127  {
128  $cmd = $this->ctrl->getCmd(self::CMD_SHOW) . 'Cmd';
129 
130  $this->manageTabs($cmd);
131 
132  $this->$cmd();
133  }
134 
135  private function isAccessDenied()
136  {
137  return false;
138  }
139 
140  private function manageTabs($cmd)
141  {
142  $this->tabs->clearTargets();
143 
144  $this->tabs->setBackTarget(
145  $this->lng->txt('tst_results_back_introduction'),
146  $this->ctrl->getLinkTargetByClass('ilObjTestGUI', 'infoScreen')
147  );
148 
149  if( $this->getObjectiveOrientedContainer()->isObjectiveOrientedPresentationRequired() )
150  {
151  require_once 'Services/Link/classes/class.ilLink.php';
152  $courseLink = ilLink::_getLink($this->getObjectiveOrientedContainer()->getRefId());
153  $this->tabs->setBack2Target($this->lng->txt('back_to_objective_container'), $courseLink);
154  }
155  }
156 
157  private function showCmd()
158  {
159  ilUtil::sendInfo($this->lng->txt('tst_skl_res_interpretation_hint_msg'));
160 
162 
163  $testSession = $this->getTestSession();
164 
165  $this->skillEvaluation->setUserId($testSession->getUserId());
166  $this->skillEvaluation->setActiveId($testSession->getActiveId());
167  $this->skillEvaluation->setPass($testSession->getPass());
168 
169  $settings = new ilSetting('assessment');
170 
171  $this->skillEvaluation->setNumRequiredBookingsForSkillTriggering($settings->get(
172  'ass_skl_trig_num_answ_barrier', ilObjAssessmentFolder::DEFAULT_SKL_TRIG_NUM_ANSWERS_BARRIER
173  ));
174 
175  $testResults = $this->getTestResults();
176 
177  $this->skillEvaluation->init($this->getQuestionList());
178  $this->skillEvaluation->evaluate($testResults);
179 
180  $evaluationToolbarGUI = $this->buildEvaluationToolbarGUI($selectedSkillProfile);
181  $personalSkillsGUI = $this->buildPersonalSkillsGUI($testSession->getUserId(), $selectedSkillProfile);
182 
183  $this->tpl->setContent(
184  $this->ctrl->getHTML($evaluationToolbarGUI) . $this->ctrl->getHTML($personalSkillsGUI)
185  );
186  }
187 
188  private function buildEvaluationToolbarGUI($selectedSkillProfileId)
189  {
190  $availableSkillProfiles = $this->skillEvaluation->getAssignedSkillMatchingSkillProfiles();
191 
192  $noSkillProfileOptionEnabled = $this->skillEvaluation->noProfileMatchingAssignedSkillExists(
193  $availableSkillProfiles
194  );
195 
196  $gui = new ilTestSkillEvaluationToolbarGUI($this->ctrl, $this->lng, $this, self::CMD_SHOW);
197 
198  $gui->setAvailableSkillProfiles($availableSkillProfiles);
199  $gui->setNoSkillProfileOptionEnabled($noSkillProfileOptionEnabled);
200  $gui->setSelectedEvaluationMode($selectedSkillProfileId);
201 
202  $gui->setTestResultButtonEnabled($this->isTestResultButtonRequired());
203 
204  $gui->build();
205 
206  return $gui;
207  }
208 
209  private function isTestResultButtonRequired()
210  {
211  $testOBJ = ilObjectFactory::getInstanceByObjId($this->objectId);
212 
213  if( !$testOBJ->canShowTestResults($this->testSession) )
214  {
215  return false;
216  }
217 
218  require_once 'Modules/Test/classes/class.ilTestPassesSelector.php';
219  $testPassesSelector = new ilTestPassesSelector($this->db, $testOBJ);
220  $testPassesSelector->setActiveId($this->testSession->getActiveId());
221  $testPassesSelector->setLastFinishedPass($this->testSession->getLastFinishedPass());
222 
223  if( !count($testPassesSelector->getReportablePasses()) )
224  {
225  return false;
226  }
227 
228  return true;
229  }
230 
231  private function buildPersonalSkillsGUI($usrId, $selectedSkillProfileId)
232  {
233  $availableSkills = $this->skillEvaluation->getUniqueAssignedSkillsForPersonalSkillGUI();
234  $reachedSkillLevels = $this->skillEvaluation->getReachedSkillLevelsForPersonalSkillGUI();
235 
236  $gui = new ilTestPersonalSkillsGUI($this->lng, $this->getObjectId());
237 
238  $gui->setAvailableSkills($availableSkills);
239  $gui->setSelectedSkillProfile($selectedSkillProfileId);
240 
241  $gui->setReachedSkillLevels($reachedSkillLevels);
242  $gui->setUsrId($usrId);
243 
244  return $gui;
245  }
246 
250  public function getTestId()
251  {
252  return $this->testId;
253  }
254 
258  public function setTestResults($testResults)
259  {
260  $this->testResults = $testResults;
261  }
262 
266  public function getTestResults()
267  {
268  return $this->testResults;
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 
290  public function getObjectId()
291  {
292  return $this->objectId;
293  }
294 }
ILIAS Setting Class.
This class provides processing control methods.
$_POST['username']
Definition: cron.php:12
Tabs GUI.
$cmd
Definition: sahs_server.php:35
buildEvaluationToolbarGUI($selectedSkillProfileId)
setObjectiveOrientedContainer($objectiveOrientedContainer)
__construct(ilCtrl $ctrl, ilTabsGUI $tabs, ilTemplate $tpl, ilLanguage $lng, ilDB $db, $testId, $refId, $objectId)
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
special template class to simplify handling of ITX/PEAR
getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
buildPersonalSkillsGUI($usrId, $selectedSkillProfileId)
Database Wrapper.
Definition: class.ilDB.php:28
language handling