ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
class.ilTestSkillEvaluationGUI.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
24
38{
40
41 public const SKILL_PROFILE_PARAM = 'skill_profile';
42 public const CMD_SHOW = 'show';
43
47
48 protected bool $no_skill_profile_option_enabled = false;
49 protected array $available_skill_profiles = [];
50 protected array $available_skills = [];
52
53 public function __construct(
54 private readonly ilObjTest $test_obj,
55 private readonly ilCtrlInterface $ctrl,
56 private readonly ilGlobalTemplateInterface $tpl,
57 private readonly ilLanguage $lng,
58 private readonly ilDBInterface $db,
59 private readonly TestLogger $logger,
60 private readonly SkillService $skills_service,
61 private readonly RequestDataCollector $testrequest
62 ) {
63 }
64
66 {
68 }
69
71 {
72 $this->question_list = $question_list;
73 }
74
76 {
78 }
79
82 ): void {
83 $this->objective_oriented_container = $objective_oriented_container;
84 }
85
86 public function executeCommand(): void
87 {
88 $cmd = $this->ctrl->getCmd(self::CMD_SHOW) . 'Cmd';
89 $this->$cmd();
90 }
91
92 protected function init(bool $skill_profile_enabled): void
93 {
94 $this->test_passes_selector = new ilTestPassesSelector($this->db, $this->test_obj);
95 $this->test_passes_selector->setActiveId($this->test_session->getActiveId());
96 $this->test_passes_selector->setLastFinishedPass($this->test_session->getLastFinishedPass());
97
98 $skill_evaluation = new ilTestSkillEvaluation(
99 $this->db,
100 $this->logger,
101 $this->test_obj->getTestId(),
102 $this->test_obj->getRefId(),
103 $this->skills_service->profile(),
104 $this->skills_service->personal()
105 );
106
107 $skill_evaluation->setUserId($this->getTestSession()->getUserId());
108 $skill_evaluation->setActiveId($this->getTestSession()->getActiveId());
109
110 $skill_evaluation->setNumRequiredBookingsForSkillTriggering(
111 $this->test_obj->getGlobalSettings()->getSkillTriggeringNumberOfAnswers()
112 );
113
114 $skill_evaluation->init($this->getQuestionList());
115
116 $available_skill_profiles = $skill_evaluation->getAssignedSkillMatchingSkillProfiles();
117 $this->setNoSkillProfileOptionEnabled(
118 $skill_evaluation->noProfileMatchingAssignedSkillExists($available_skill_profiles)
119 );
120 $this->setAvailableSkillProfiles($available_skill_profiles);
121
122 // should be reportedPasses - yes - indeed, skill level status will not respect - avoid confuse here
123 $evaluation_passes = $this->test_passes_selector->getExistingPasses();
124
125 $available_skills = [];
126
127 foreach ($evaluation_passes as $eval_pass) {
128 $test_results = $this->test_obj->getTestResult($this->getTestSession()->getActiveId(), $eval_pass, true);
129
130 $skill_evaluation->setPass($eval_pass);
131 $skill_evaluation->evaluate($test_results);
132
133 if ($skill_profile_enabled && self::INVOLVE_SKILLS_BELOW_NUM_ANSWERS_BARRIER_FOR_GAP_ANALASYS) {
134 $skills = $skill_evaluation->getSkillsInvolvedByAssignment();
135 } else {
136 $skills = $skill_evaluation->getSkillsMatchingNumAnswersBarrier();
137 }
138
139 $available_skills = array_merge($available_skills, $skills);
140 }
141
142 $this->setAvailableSkills(array_values($available_skills));
143 }
144
145 private function showCmd(): void
146 {
147 $skill_profile_selected = $this->testrequest->isset(self::SKILL_PROFILE_PARAM);
148 $selected_skill_profile = $this->testrequest->int(self::SKILL_PROFILE_PARAM);
149
150 $this->init($skill_profile_selected);
151
152 $personal_skills_gui = new ilPersonalSkillsGUI();
153 $personal_skills_gui->setGapAnalysisActualStatusModePerObject(
154 $this->test_obj->getId(),
155 $this->lng->txt('tst_test_result')
156 );
157 $personal_skills_gui->setTriggerObjectsFilter([$this->test_obj->getId()]);
158 $personal_skills_gui->setHistoryView(true);
159 $personal_skills_gui->setProfileId($selected_skill_profile);
160
161 $this->tpl->setContent(
162 $this->buildEvaluationToolbarGUI($selected_skill_profile)->getHTML()
163 . $personal_skills_gui->getGapAnalysisHTML(
164 $this->getTestSession()->getUserId(),
165 $this->available_skills
166 )
167 );
168 }
169
171 int $selected_skill_profile_id
173 if (!$this->no_skill_profile_option_enabled && $selected_skill_profile_id === null) {
174 $selected_skill_profile_id = key($this->available_skill_profiles) ?? 0;
175 }
176
177 $gui = new ilTestSkillEvaluationToolbarGUI($this->ctrl, $this->lng);
178 $gui->setAvailableSkillProfiles($this->available_skill_profiles);
179 $gui->setNoSkillProfileOptionEnabled($this->no_skill_profile_option_enabled);
180 $gui->setSelectedEvaluationMode($selected_skill_profile_id);
181 $gui->build();
182 return $gui;
183 }
184
185 public function setTestSession(ilTestSession $test_session): void
186 {
187 $this->test_session = $test_session;
188 }
189
190 public function getTestSession(): ilTestSession
191 {
192 return $this->test_session;
193 }
194
195 public function setNoSkillProfileOptionEnabled(bool $no_skill_profile_option_enabled): void
196 {
197 $this->no_skill_profile_option_enabled = $no_skill_profile_option_enabled;
198 }
199
200 public function setAvailableSkillProfiles(array $available_skill_profiles): void
201 {
202 $this->available_skill_profiles = $available_skill_profiles;
203 }
204
205 public function setAvailableSkills(array $available_skills): void
206 {
207 $this->available_skills = $available_skills;
208 }
209}
language handling
Personal skills GUI class.
Test session handler.
setAvailableSkillProfiles(array $available_skill_profiles)
__construct(private readonly ilObjTest $test_obj, private readonly ilCtrlInterface $ctrl, private readonly ilGlobalTemplateInterface $tpl, private readonly ilLanguage $lng, private readonly ilDBInterface $db, private readonly TestLogger $logger, private readonly SkillService $skills_service, private readonly RequestDataCollector $testrequest)
ilTestObjectiveOrientedContainer $objective_oriented_container
buildEvaluationToolbarGUI(int $selected_skill_profile_id)
setNoSkillProfileOptionEnabled(bool $no_skill_profile_option_enabled)
setTestSession(ilTestSession $test_session)
init(bool $skill_profile_enabled)
setAvailableSkills(array $available_skills)
setObjectiveOrientedContainer(ilTestObjectiveOrientedContainer $objective_oriented_container)
setQuestionList(ilAssQuestionList $question_list)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Interface ilDBInterface.
global $lng
Definition: privfeed.php:31
if(!file_exists('../ilias.ini.php'))