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
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{
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
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 {
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(
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
259 {
260 $this->testResults = $testResults;
261 }
262
266 public function getTestResults()
267 {
268 return $this->testResults;
269 }
270
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}
This class provides processing control methods.
Database Wrapper.
Definition: class.ilDB.php:29
language handling
getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
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, ilDB $db, $testId, $refId, $objectId)
buildPersonalSkillsGUI($usrId, $selectedSkillProfileId)
setObjectiveOrientedContainer($objectiveOrientedContainer)
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
$_POST['username']
Definition: cron.php:12
$cmd
Definition: sahs_server.php:35