ILIAS  release_8 Revision v8.19
All Data Structures Namespaces Files Functions Variables Modules Pages
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(
249  $this->getImportMappingComponent(),
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 
286  $this->getImportInstallationId(),
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 }
buildImportableAssignment(ilAssQuestionSkillAssignmentImport $assignment, $foundSkillId)
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)
static getCommonSkillIdForImportId(int $a_source_inst_id, int $a_skill_import_id, int $a_tref_import_id=0)
global $DIC
Definition: feed.php:28
buildImportableSolutionComparisonExpression(ilAssQuestionSolutionComparisonExpressionImport $solCompExp)
__construct()
ilAssQuestionSkillAssignmentImporter constructor.