ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
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 
4 require_once 'Services/Skill/classes/class.ilBasicSkill.php';
5 require_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 $ilDB;
57  $this->db = $ilDB;
58 
59  $this->targetParentObjId = null;
60  $this->importInstallationId = null;
61  $this->importMappingRegistry = null;
62  $this->importAssignmentList = null;
63  $this->failedImportAssignmentList = new ilAssQuestionSkillAssignmentImportList();
64  $this->successImportAssignmentList = new ilAssQuestionSkillAssignmentList($this->db);
65  }
66 
71  {
72  $this->targetParentObjId = $targetParentObjId;
73  }
74 
78  public function getTargetParentObjId()
79  {
81  }
82 
86  public function getImportInstallationId()
87  {
89  }
90 
95  {
96  $this->importInstallationId = $importInstallationId;
97  }
98 
102  public function getImportMappingRegistry()
103  {
105  }
106 
111  {
112  $this->importMappingRegistry = $importMappingRegistry;
113  }
114 
118  public function getImportMappingComponent()
119  {
121  }
122 
127  {
128  $this->importMappingComponent = $importMappingComponent;
129  }
130 
134  public function getImportAssignmentList()
135  {
137  }
138 
143  {
144  $this->importAssignmentList = $importAssignmentList;
145  }
146 
151  {
153  }
154 
159  {
161  }
162 
167  {
168  $this->successImportAssignmentList = $successImportAssignmentList;
169  }
170 
171  /*
172  $r = ilBasicSkill::getCommonSkillIdForImportId($a_source_inst_id,
173  $a_skill_import_id, $a_tref_import_id);
174 
175  $results[] = array("skill_id" => $rec["obj_id"], "tref_id" => $t,
176  "creation_date" => $rec["creation_date"]);
177  */
178 
182  public function import()
183  {
184  foreach ($this->getImportAssignmentList() as $assignment) {
185  $foundSkillId = $this->getSkillIdMapping(
186  $assignment->getImportSkillBaseId(),
187  $assignment->getImportSkillTrefId()
188  );
189 
190  if (!$this->isValidSkill($foundSkillId)) {
191  $this->getFailedImportAssignmentList()->addAssignment($assignment);
192  continue;
193  }
194 
195  $this->getImportMappingRegistry()->addMapping(
196  'Modules/Test',
197  'skl_base_id_reverse',
198  $foundSkillId['skill_id'],
199  $assignment->getImportSkillBaseId()
200  );
201 
202  $this->getImportMappingRegistry()->addMapping(
203  'Modules/Test',
204  'skl_tref_id_reverse',
205  $foundSkillId['tref_id'],
206  $assignment->getImportSkillTrefId()
207  );
208 
209  $importableAssignment = $this->buildImportableAssignment($assignment, $foundSkillId);
210 
211  foreach ($assignment->getImportSolutionComparisonExpressionList() as $solCompExp) {
212  $importableSolCompExp = $this->buildImportableSolutionComparisonExpression($solCompExp);
213  $importableAssignment->getSolutionComparisonExpressionList()->add($importableSolCompExp);
214  }
215 
216  $importableAssignment->saveToDb();
217  $importableAssignment->saveComparisonExpressions();
218 
219  $this->getSuccessImportAssignmentList()->addAssignment($importableAssignment);
220  }
221  }
222 
223  protected function buildImportableAssignment(ilAssQuestionSkillAssignmentImport $assignment, $foundSkillId)
224  {
225  $importableAssignment = new ilAssQuestionSkillAssignment($this->db);
226 
227  $importableAssignment->setEvalMode($assignment->getEvalMode());
228  $importableAssignment->setSkillPoints($assignment->getSkillPoints());
229 
230  $importableAssignment->setSkillBaseId($foundSkillId['skill_id']);
231  $importableAssignment->setSkillTrefId($foundSkillId['tref_id']);
232 
233  $importableAssignment->setParentObjId($this->getTargetParentObjId());
234 
235  $importableAssignment->setQuestionId($this->getImportMappingRegistry()->getMapping(
236  $this->getImportMappingComponent(),
237  'quest',
238  $assignment->getImportQuestionId()
239  ));
240 
241  $importableAssignment->initSolutionComparisonExpressionList();
242 
243  return $importableAssignment;
244  }
245 
247  {
248  $importableSolCompExp = new ilAssQuestionSolutionComparisonExpression($this->db);
249 
250  $importableSolCompExp->setOrderIndex($solCompExp->getOrderIndex());
251  $importableSolCompExp->setExpression($solCompExp->getExpression());
252  $importableSolCompExp->setPoints($solCompExp->getPoints());
253 
254  return $importableSolCompExp;
255  }
256 
257  protected function isValidSkill($foundSkillData)
258  {
259  if (!is_array($foundSkillData) || !isset($foundSkillData['skill_id']) || !$foundSkillData['skill_id']) {
260  return false;
261  }
262 
263  return true;
264  }
265 
266  protected function getSkillIdMapping($importSkillBaseId, $importSkillTrefId)
267  {
268  if ($this->getImportInstallationId() == $this->getLocalInstallationId()) {
269  return array( 'skill_id' => $importSkillBaseId, 'tref_id' => $importSkillTrefId );
270  }
271 
273  $this->getImportInstallationId(),
274  $importSkillBaseId,
275  $importSkillTrefId
276  );
277 
278  return current($foundSkillData);
279  }
280 
281  protected function getLocalInstallationId()
282  {
283  global $DIC; /* @var ILIAS\DI\Container $DIC */
284 
285  return $DIC->settings()->get('inst_id', 0);
286  }
287 }
buildImportableAssignment(ilAssQuestionSkillAssignmentImport $assignment, $foundSkillId)
global $DIC
Definition: saml.php:7
Create styles array
The data for the language used.
global $ilDB
buildImportableSolutionComparisonExpression(ilAssQuestionSolutionComparisonExpressionImport $solCompExp)
static getCommonSkillIdForImportId($a_source_inst_id, $a_skill_import_id, $a_tref_import_id=0)
Get common skill ids for import IDs (newest first)
__construct()
ilAssQuestionSkillAssignmentImporter constructor.