ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
class.ilAssQuestionSkillAssignmentImporter.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 'Services/Skill/classes/class.ilBasicSkill.php';
5require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionSkillAssignmentList.php';
6
14{
15 protected $db;
16
21
26
31
40
45
50
54 public function __construct()
55 {
56 global $DIC;
57 $ilDB = $DIC['ilDB'];
58 $this->db = $ilDB;
59
60 $this->targetParentObjId = null;
61 $this->importInstallationId = null;
62 $this->importMappingRegistry = null;
63 $this->importAssignmentList = null;
64 $this->failedImportAssignmentList = new ilAssQuestionSkillAssignmentImportList();
65 $this->successImportAssignmentList = new ilAssQuestionSkillAssignmentList($this->db);
66 }
67
72 {
73 $this->targetParentObjId = $targetParentObjId;
74 }
75
79 public function getTargetParentObjId()
80 {
82 }
83
87 public function getImportInstallationId()
88 {
90 }
91
96 {
97 $this->importInstallationId = $importInstallationId;
98 }
99
103 public function getImportMappingRegistry()
104 {
106 }
107
112 {
113 $this->importMappingRegistry = $importMappingRegistry;
114 }
115
120 {
122 }
123
128 {
129 $this->importMappingComponent = $importMappingComponent;
130 }
131
135 public function getImportAssignmentList()
136 {
138 }
139
144 {
145 $this->importAssignmentList = $importAssignmentList;
146 }
147
152 {
154 }
155
160 {
162 }
163
168 {
169 $this->successImportAssignmentList = $successImportAssignmentList;
170 }
171
172 /*
173 $r = ilBasicSkill::getCommonSkillIdForImportId($a_source_inst_id,
174 $a_skill_import_id, $a_tref_import_id);
175
176 $results[] = array("skill_id" => $rec["obj_id"], "tref_id" => $t,
177 "creation_date" => $rec["creation_date"]);
178 */
179
183 public function import()
184 {
185 foreach ($this->getImportAssignmentList() as $assignment) {
186 $foundSkillId = $this->getSkillIdMapping(
187 $assignment->getImportSkillBaseId(),
188 $assignment->getImportSkillTrefId()
189 );
190
191 if (!$this->isValidSkill($foundSkillId)) {
192 $this->getFailedImportAssignmentList()->addAssignment($assignment);
193 continue;
194 }
195
196 $this->getImportMappingRegistry()->addMapping(
197 'Modules/Test',
198 'skl_base_id_reverse',
199 $foundSkillId['skill_id'],
200 $assignment->getImportSkillBaseId()
201 );
202
203 $this->getImportMappingRegistry()->addMapping(
204 'Modules/Test',
205 'skl_tref_id_reverse',
206 $foundSkillId['tref_id'],
207 $assignment->getImportSkillTrefId()
208 );
209
210 $importableAssignment = $this->buildImportableAssignment($assignment, $foundSkillId);
211
212 foreach ($assignment->getImportSolutionComparisonExpressionList() as $solCompExp) {
213 $importableSolCompExp = $this->buildImportableSolutionComparisonExpression($solCompExp);
214 $importableAssignment->getSolutionComparisonExpressionList()->add($importableSolCompExp);
215 }
216
217 $importableAssignment->saveToDb();
218 $importableAssignment->saveComparisonExpressions();
219
220 $this->getSuccessImportAssignmentList()->addAssignment($importableAssignment);
221 }
222 }
223
224 protected function buildImportableAssignment(ilAssQuestionSkillAssignmentImport $assignment, $foundSkillId)
225 {
226 $importableAssignment = new ilAssQuestionSkillAssignment($this->db);
227
228 $importableAssignment->setEvalMode($assignment->getEvalMode());
229 $importableAssignment->setSkillPoints($assignment->getSkillPoints());
230
231 $importableAssignment->setSkillBaseId($foundSkillId['skill_id']);
232 $importableAssignment->setSkillTrefId($foundSkillId['tref_id']);
233
234 $importableAssignment->setParentObjId($this->getTargetParentObjId());
235
236 $importableAssignment->setQuestionId($this->getImportMappingRegistry()->getMapping(
238 'quest',
239 $assignment->getImportQuestionId()
240 ));
241
242 $importableAssignment->initSolutionComparisonExpressionList();
243
244 return $importableAssignment;
245 }
246
248 {
249 $importableSolCompExp = new ilAssQuestionSolutionComparisonExpression($this->db);
250
251 $importableSolCompExp->setOrderIndex($solCompExp->getOrderIndex());
252 $importableSolCompExp->setExpression($solCompExp->getExpression());
253 $importableSolCompExp->setPoints($solCompExp->getPoints());
254
255 return $importableSolCompExp;
256 }
257
258 protected function isValidSkill($foundSkillData)
259 {
260 if (!is_array($foundSkillData) || !isset($foundSkillData['skill_id']) || !$foundSkillData['skill_id']) {
261 return false;
262 }
263
264 return true;
265 }
266
267 protected function getSkillIdMapping($importSkillBaseId, $importSkillTrefId)
268 {
269 if ($this->getImportInstallationId() == $this->getLocalInstallationId()) {
270 return array( 'skill_id' => $importSkillBaseId, 'tref_id' => $importSkillTrefId );
271 }
272
275 $importSkillBaseId,
276 $importSkillTrefId
277 );
278
279 return current($foundSkillData);
280 }
281
282 protected function getLocalInstallationId()
283 {
284 global $DIC; /* @var ILIAS\DI\Container $DIC */
285
286 return $DIC->settings()->get('inst_id', 0);
287 }
288}
An exception for terminatinating execution or to throw for unit testing.
buildImportableSolutionComparisonExpression(ilAssQuestionSolutionComparisonExpressionImport $solCompExp)
__construct()
ilAssQuestionSkillAssignmentImporter constructor.
buildImportableAssignment(ilAssQuestionSkillAssignmentImport $assignment, $foundSkillId)
static getCommonSkillIdForImportId($a_source_inst_id, $a_skill_import_id, $a_tref_import_id=0)
Get common skill ids for import IDs (newest first)
global $ilDB
$DIC
Definition: xapitoken.php:46