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
4require_once 'Modules/Test/classes/toolbars/class.ilTestSkillEvaluationToolbarGUI.php';
5require_once 'Modules/Test/classes/class.ilTestPersonalSkillsGUI.php';
6require_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
66
68 protected $availableSkillProfiles = array();
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 {
92 }
93
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(
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
180 $availableSkills = array();
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
262 $gui->setAvailableSkills($availableSkills);
263 $gui->setSelectedSkillProfile($selectedSkillProfileId);
264
265 $gui->setReachedSkillLevels($reachedSkillLevels);
266 $gui->setUsrId($usrId);
267
268 return $gui;
269 }
270
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
307 {
309 }
310
315 {
316 $this->availableSkillProfiles = $availableSkillProfiles;
317 }
318
322 public function getAvailableSkills()
323 {
325 }
326
331 {
332 $this->availableSkills = $availableSkills;
333 }
334}
$_POST["username"]
An exception for terminatinating execution or to throw for unit testing.
This class provides processing control methods.
language handling
ILIAS Setting Class.
Tabs GUI.
special template class to simplify handling of ITX/PEAR
buildEvaluationToolbarGUI($selectedSkillProfileId)
__construct(ilCtrl $ctrl, ilTabsGUI $tabs, ilTemplate $tpl, ilLanguage $lng, ilDBInterface $db, ilObjTest $testOBJ)
setAvailableSkillProfiles($availableSkillProfiles)
setObjectiveOrientedContainer($objectiveOrientedContainer)
buildPersonalSkillsGUI($usrId, $selectedSkillProfileId, $availableSkills)
setNoSkillProfileOptionEnabled($noSkillProfileOptionEnabled)
Interface ilDBInterface.
$cmd
Definition: sahs_server.php:35