ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
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 $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 
119  public function getImportMappingComponent()
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(
237  $this->getImportMappingComponent(),
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 
274  $this->getImportInstallationId(),
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 }
buildImportableAssignment(ilAssQuestionSkillAssignmentImport $assignment, $foundSkillId)
global $DIC
Definition: saml.php:7
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.