ILIAS  release_8 Revision v8.24
class.ilAssQuestionSkillAssignmentImporter.php
Go to the documentation of this file.
1<?php
2
26{
27 protected $db;
28
33
38
43
52
57
62
66 public function __construct()
67 {
68 global $DIC;
69 $ilDB = $DIC['ilDB'];
70 $this->db = $ilDB;
71
72 $this->targetParentObjId = null;
73 $this->importInstallationId = null;
74 $this->importMappingRegistry = null;
75 $this->importAssignmentList = null;
76 $this->failedImportAssignmentList = new ilAssQuestionSkillAssignmentImportList();
77 $this->successImportAssignmentList = new ilAssQuestionSkillAssignmentList($this->db);
78 }
79
84 {
85 $this->targetParentObjId = $targetParentObjId;
86 }
87
91 public function getTargetParentObjId(): ?int
92 {
94 }
95
99 public function getImportInstallationId(): ?int
100 {
102 }
103
108 {
109 $this->importInstallationId = $importInstallationId;
110 }
111
116 {
118 }
119
124 {
125 $this->importMappingRegistry = $importMappingRegistry;
126 }
127
131 public function getImportMappingComponent(): string
132 {
134 }
135
140 {
141 $this->importMappingComponent = $importMappingComponent;
142 }
143
148 {
150 }
151
156 {
157 $this->importAssignmentList = $importAssignmentList;
158 }
159
164 {
166 }
167
172 {
174 }
175
180 {
181 $this->successImportAssignmentList = $successImportAssignmentList;
182 }
183
184 /*
185 $r = ilBasicSkill::getCommonSkillIdForImportId($a_source_inst_id,
186 $a_skill_import_id, $a_tref_import_id);
187
188 $results[] = array("skill_id" => $rec["obj_id"], "tref_id" => $t,
189 "creation_date" => $rec["creation_date"]);
190 */
191
192 public function import(): void
193 {
194 foreach ($this->getImportAssignmentList() as $assignment) {
195 $foundSkillId = $this->getSkillIdMapping(
196 $assignment->getImportSkillBaseId(),
197 $assignment->getImportSkillTrefId()
198 );
199
200 if (!$this->isValidSkill($foundSkillId)) {
201 $this->getFailedImportAssignmentList()->addAssignment($assignment);
202 continue;
203 }
204
205 $this->getImportMappingRegistry()->addMapping(
206 'Modules/Test',
207 'skl_base_id_reverse',
208 $foundSkillId['skill_id'],
209 $assignment->getImportSkillBaseId()
210 );
211
212 $this->getImportMappingRegistry()->addMapping(
213 'Modules/Test',
214 'skl_tref_id_reverse',
215 $foundSkillId['tref_id'],
216 $assignment->getImportSkillTrefId()
217 );
218
219 $importableAssignment = $this->buildImportableAssignment($assignment, $foundSkillId);
220
221 foreach ($assignment->getImportSolutionComparisonExpressionList() as $solCompExp) {
222 $importableSolCompExp = $this->buildImportableSolutionComparisonExpression($solCompExp);
223 $importableAssignment->getSolutionComparisonExpressionList()->add($importableSolCompExp);
224 }
225
226 $importableAssignment->saveToDb();
227 $importableAssignment->saveComparisonExpressions();
228
229 // add skill usage
230 ilSkillUsage::setUsage($this->getTargetParentObjId(), $foundSkillId['skill_id'], $foundSkillId['tref_id']);
231
232 $this->getSuccessImportAssignmentList()->addAssignment($importableAssignment);
233 }
234 }
235
237 {
238 $importableAssignment = new ilAssQuestionSkillAssignment($this->db);
239
240 $importableAssignment->setEvalMode($assignment->getEvalMode());
241 $importableAssignment->setSkillPoints($assignment->getSkillPoints());
242
243 $importableAssignment->setSkillBaseId($foundSkillId['skill_id']);
244 $importableAssignment->setSkillTrefId($foundSkillId['tref_id']);
245
246 $importableAssignment->setParentObjId($this->getTargetParentObjId());
247
248 $importableAssignment->setQuestionId($this->getImportMappingRegistry()->getMapping(
250 'quest',
251 $assignment->getImportQuestionId()
252 ));
253
254 $importableAssignment->initSolutionComparisonExpressionList();
255
256 return $importableAssignment;
257 }
258
260 {
261 $importableSolCompExp = new ilAssQuestionSolutionComparisonExpression($this->db);
262
263 $importableSolCompExp->setOrderIndex($solCompExp->getOrderIndex());
264 $importableSolCompExp->setExpression($solCompExp->getExpression());
265 $importableSolCompExp->setPoints($solCompExp->getPoints());
266
267 return $importableSolCompExp;
268 }
269
270 protected function isValidSkill($foundSkillData): bool
271 {
272 if (!is_array($foundSkillData) || !isset($foundSkillData['skill_id']) || !$foundSkillData['skill_id']) {
273 return false;
274 }
275
276 return true;
277 }
278
279 protected function getSkillIdMapping($importSkillBaseId, $importSkillTrefId)
280 {
281 if ($this->getImportInstallationId() == $this->getLocalInstallationId()) {
282 return array( 'skill_id' => $importSkillBaseId, 'tref_id' => $importSkillTrefId );
283 }
284
287 $importSkillBaseId,
288 $importSkillTrefId
289 );
290
291 return current($foundSkillData);
292 }
293
294 protected function getLocalInstallationId(): ?string
295 {
296 global $DIC; /* @var ILIAS\DI\Container $DIC */
297
298 return $DIC->settings()->get('inst_id', 0);
299 }
300}
buildImportableSolutionComparisonExpression(ilAssQuestionSolutionComparisonExpressionImport $solCompExp)
__construct()
ilAssQuestionSkillAssignmentImporter constructor.
buildImportableAssignment(ilAssQuestionSkillAssignmentImport $assignment, $foundSkillId)
static getCommonSkillIdForImportId(int $a_source_inst_id, int $a_skill_import_id, int $a_tref_import_id=0)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static setUsage(int $a_obj_id, int $a_skill_id, int $a_tref_id, bool $a_use=true)
global $DIC
Definition: feed.php:28