ILIAS  release_8 Revision v8.24
class.ilTestSkillEvaluationGUI.php
Go to the documentation of this file.
1<?php
2
32{
34
35 public const CMD_SHOW = 'show';
39 private $ctrl;
40
44 private $tpl;
45
49 private $lng;
50
54 private $db;
55
59 protected $testOBJ;
60
64 private $testSession;
65
70
75
77 protected $availableSkillProfiles = array();
78 protected $availableSkills = array();
79
83 protected $testPassesSelector = null;
84
86 {
87 $this->ctrl = $ctrl;
88 $this->tpl = $tpl;
89 $this->lng = $lng;
90 $this->db = $db;
91 $this->testOBJ = $testOBJ;
92 }
93
98 {
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(): bool
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 protected function init($skillProfileEnabled)
158 {
159 require_once 'Modules/Test/classes/class.ilTestPassesSelector.php';
160 $this->testPassesSelector = new ilTestPassesSelector($this->db, $this->testOBJ);
161 $this->testPassesSelector->setActiveId($this->testSession->getActiveId());
162 $this->testPassesSelector->setLastFinishedPass($this->testSession->getLastFinishedPass());
163
164 $assSettings = new ilSetting('assessment');
165 require_once 'Modules/Test/classes/class.ilTestSkillEvaluation.php';
166 $skillEvaluation = new ilTestSkillEvaluation(
167 $this->db,
168 $this->testOBJ->getTestId(),
169 $this->testOBJ->getRefId()
170 );
171
172 $skillEvaluation->setUserId($this->getTestSession()->getUserId());
173 $skillEvaluation->setActiveId($this->getTestSession()->getActiveId());
174
175 $skillEvaluation->setNumRequiredBookingsForSkillTriggering($assSettings->get(
176 'ass_skl_trig_num_answ_barrier',
178 ));
179
180 $skillEvaluation->init($this->getQuestionList());
181
182 $availableSkillProfiles = $skillEvaluation->getAssignedSkillMatchingSkillProfiles();
184 $skillEvaluation->noProfileMatchingAssignedSkillExists($availableSkillProfiles)
185 );
187
188 // should be reportedPasses - yes - indeed, skill level status will not respect - avoid confuse here
189 $evaluationPasses = $this->testPassesSelector->getExistingPasses();
190
191 $availableSkills = array();
192
193 foreach ($evaluationPasses as $evalPass) {
194 $testResults = $this->testOBJ->getTestResult($this->getTestSession()->getActiveId(), $evalPass, true);
195
196 $skillEvaluation->setPass($evalPass);
197 $skillEvaluation->evaluate($testResults);
198
199 if ($skillProfileEnabled && self::INVOLVE_SKILLS_BELOW_NUM_ANSWERS_BARRIER_FOR_GAP_ANALASYS) {
200 $skills = $skillEvaluation->getSkillsInvolvedByAssignment();
201 } else {
202 $skills = $skillEvaluation->getSkillsMatchingNumAnswersBarrier();
203 }
204
205 $availableSkills = array_merge($availableSkills, $skills);
206 }
207
208 $this->setAvailableSkills(array_values($availableSkills));
209 }
210
211 private function showCmd()
212 {
213 //ilUtil::sendInfo($this->lng->txt('tst_skl_res_interpretation_hint_msg'));
214
215 $selectedSkillProfile = ilTestSkillEvaluationToolbarGUI::fetchSkillProfileParam($_POST);
216
217 $this->init($selectedSkillProfile);
218
219 $evaluationToolbarGUI = $this->buildEvaluationToolbarGUI($selectedSkillProfile);
220
221 $personalSkillsGUI = $this->buildPersonalSkillsGUI(
222 $this->getTestSession()->getUserId(),
223 $evaluationToolbarGUI->getSelectedEvaluationMode(),
224 $this->getAvailableSkills()
225 );
226
227 $this->tpl->setContent(
228 $this->ctrl->getHTML($evaluationToolbarGUI) . $this->ctrl->getHTML($personalSkillsGUI)
229 );
230 }
231
232 private function buildEvaluationToolbarGUI($selectedSkillProfileId): ilTestSkillEvaluationToolbarGUI
233 {
234 if (!$this->isNoSkillProfileOptionEnabled() && !$selectedSkillProfileId) {
235 $selectedSkillProfileId = key($this->getAvailableSkillProfiles());
236 }
237
238 $gui = new ilTestSkillEvaluationToolbarGUI($this->ctrl, $this->lng, $this, self::CMD_SHOW);
239
240 $gui->setAvailableSkillProfiles($this->getAvailableSkillProfiles());
241 $gui->setNoSkillProfileOptionEnabled($this->isNoSkillProfileOptionEnabled());
242 $gui->setSelectedEvaluationMode($selectedSkillProfileId);
243
244 $gui->build();
245
246 return $gui;
247 }
248
249 private function buildPersonalSkillsGUI($usrId, $selectedSkillProfileId, $availableSkills): ilTestPersonalSkillsGUI
250 {
251 $gui = new ilTestPersonalSkillsGUI($this->lng, $this->testOBJ->getId());
252
253 $gui->setAvailableSkills($availableSkills);
254 $gui->setSelectedSkillProfile($selectedSkillProfileId);
255
256 //$gui->setReachedSkillLevels($reachedSkillLevels);
257 $gui->setUsrId($usrId);
258
259 return $gui;
260 }
261
266 {
267 $this->testSession = $testSession;
268 }
269
273 public function getTestSession(): ilTestSession
274 {
275 return $this->testSession;
276 }
277
281 public function isNoSkillProfileOptionEnabled(): bool
282 {
284 }
285
290 {
291 $this->noSkillProfileOptionEnabled = $noSkillProfileOptionEnabled;
292 }
293
297 public function getAvailableSkillProfiles(): array
298 {
300 }
301
306 {
307 $this->availableSkillProfiles = $availableSkillProfiles;
308 }
309
313 public function getAvailableSkills(): array
314 {
316 }
317
322 {
323 $this->availableSkills = $availableSkills;
324 }
325}
Class ilCtrl provides processing control methods.
language handling
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
buildEvaluationToolbarGUI($selectedSkillProfileId)
__construct(ilCtrl $ctrl, ilTabsGUI $tabs, ilGlobalTemplateInterface $tpl, ilLanguage $lng, ilDBInterface $db, ilObjTest $testOBJ)
setAvailableSkillProfiles($availableSkillProfiles)
setObjectiveOrientedContainer($objectiveOrientedContainer)
buildPersonalSkillsGUI($usrId, $selectedSkillProfileId, $availableSkills)
setNoSkillProfileOptionEnabled($noSkillProfileOptionEnabled)
Interface ilDBInterface.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...