4 include_once(
"./Services/Export/classes/class.ilXmlImporter.php");
29 include_once
"./Modules/Test/classes/class.ilObjTest.php";
32 if ($new_id = $a_mapping->getMapping(
'Services/Container',
'objs', $a_id)) {
37 $questionParentObjId = $newObj->getId();
38 $newObj->setOfflineStatus(
false);
39 $questionParentObjId = $newObj->getId();
42 $new_id = $a_mapping->getMapping(
'Modules/Test',
'tst',
'new_id');
45 if (isset(
$_SESSION[
'tst_import_qst_parent'])) {
46 $questionParentObjId =
$_SESSION[
'tst_import_qst_parent'];
48 $questionParentObjId = $newObj->getId();
52 $newObj->loadFromDb();
57 if (!@file_exists($xml_file)) {
58 $DIC[
'ilLog']->write(__METHOD__ .
': Cannot find xml definition: ' . $xml_file);
61 if (!@file_exists($qti_file)) {
62 $DIC[
'ilLog']->write(__METHOD__ .
': Cannot find xml definition: ' . $qti_file);
71 $newObj->mark_schema->flush();
74 if (isset(
$_SESSION[
'tst_import_idents'])) {
81 include_once
"./Services/QTI/classes/class.ilQTIParser.php";
83 $qtiParser->setTestObject($newObj);
84 $result = $qtiParser->startParsing();
87 include_once(
"./Modules/LearningModule/classes/class.ilContObjParser.php");
89 $contParser->setQuestionMapping($qtiParser->getImportMapping());
90 $contParser->startParsing();
92 foreach ($qtiParser->getQuestionIdMapping() as $oldQuestionId => $newQuestionId) {
93 $a_mapping->addMapping(
96 "tst:quest:$oldQuestionId",
100 $a_mapping->addMapping(
103 "tst:quest:$oldQuestionId",
107 $a_mapping->addMapping(
115 if ($newObj->isRandomTest()) {
116 $newObj->questions = array();
121 if (@file_exists(
$_SESSION[
"tst_import_results_file"])) {
122 include_once(
"./Modules/Test/classes/class.ilTestResultsImportParser.php");
124 $results->setQuestionIdMapping($a_mapping->getMappingsOfEntity(
'Modules/Test',
'quest'));
125 $results->setSrcPoolDefIdMapping($a_mapping->getMappingsOfEntity(
'Modules/Test',
'rnd_src_pool_def'));
136 $a_mapping->addMapping(
"Modules/Test",
"tst", $a_id, $newObj->getId());
149 $maps = $a_mapping->getMappingsOfEntity(
"Modules/Test",
"tst");
151 foreach ($maps as $old => $new) {
152 if ($old ==
"new_id" || (
int) $old <= 0) {
156 if (isset(self::$finallyProcessedTestsRegistry[$new])) {
162 if ($testOBJ->isRandomTest()) {
166 self::$finallyProcessedTestsRegistry[$new] =
true;
172 require_once
'Services/Taxonomy/classes/class.ilObjTaxonomy.php';
182 if ($new_tax_ids !==
false) {
183 $tax_ids = explode(
":", $new_tax_ids);
185 foreach ($tax_ids as $tid) {
192 $ilDB = $DIC[
'ilDB'];
194 require_once
'Modules/Test/classes/class.ilTestRandomQuestionSetSourcePoolDefinitionFactory.php';
200 require_once
'Modules/Test/classes/class.ilTestRandomQuestionSetSourcePoolDefinitionList.php';
207 $srcPoolDefList->loadDefinitions();
209 foreach ($srcPoolDefList as $definition) {
211 if (!is_array($definition->getMappedTaxonomyFilter()) || 0 === count($definition->getMappedTaxonomyFilter())) {
215 $definition->setMappedTaxonomyFilter(
218 $definition->getMappedTaxonomyFilter()
221 $definition->saveToDb();
232 $newMappedFilter = array();
234 foreach ($mappedFilter as $taxId => $taxNodes) {
245 $newMappedFilter[$newTaxId] = array();
247 foreach ($taxNodes as $taxNodeId) {
254 if (!$newTaxNodeId) {
258 $newMappedFilter[$newTaxId][] = $newTaxNodeId;
262 return $newMappedFilter;
277 $qti = $this->
getImportDirectory() .
'/' . preg_replace(
'/test|tst/',
'qti', $basename) .
'.xml';
279 return array(
$xml,$qti);
285 $dir = dirname($dir);
292 $name = basename($dir);
298 require_once
'Modules/Test/classes/class.ilObjTestXMLParser.php';
301 $parser->setImportMapping($a_mapping);
313 require_once
'Modules/TestQuestionPool/classes/questions/class.ilAssQuestionSkillAssignmentXmlParser.php';
317 require_once
'Modules/TestQuestionPool/classes/questions/class.ilAssQuestionSkillAssignmentImporter.php';
319 $importer->setTargetParentObjId($testOBJ->
getId());
320 $importer->setImportInstallationId($this->
getInstallId());
321 $importer->setImportMappingRegistry($mapping);
322 $importer->setImportMappingComponent(
'Modules/Test');
323 $importer->setImportAssignmentList(
$parser->getAssignmentList());
327 if ($importer->getFailedImportAssignmentList()->assignmentsExist()) {
328 require_once
'Modules/TestQuestionPool/classes/questions/class.ilAssQuestionSkillAssignmentImportFails.php';
335 return $importer->getSuccessImportAssignmentList();
346 require_once
'Modules/Test/classes/class.ilTestSkillLevelThresholdXmlParser.php';
350 require_once
'Modules/Test/classes/class.ilTestSkillLevelThresholdImporter.php';
352 $importer->setTargetTestId($testOBJ->
getTestId());
353 $importer->setImportInstallationId($this->
getInstallId());
354 $importer->setImportMappingRegistry($mapping);
355 $importer->setImportedQuestionSkillAssignmentList($assignmentList);
356 $importer->setImportThresholdList(
$parser->getSkillLevelThresholdImportList());
359 if ($importer->getFailedThresholdImportSkillList()->skillsExist()) {
360 require_once
'Modules/Test/classes/class.ilTestSkillLevelThresholdImportFails.php';
getMapping($a_comp, $a_entity, $a_old_id)
Get a mapping.
setOnline($a_online=true)
registerFailedImports(ilAssQuestionAssignedSkillList $skillList)
getImportDirectory()
Get import directory.
getTestId()
Gets the database id of the additional test data.
getNewMappedTaxonomyFilter(ilImportMapping $mapping, array $mappedFilter)
getImportDirectoryContainer()
parseXmlFileNames()
Create qti and xml file name.
importQuestionSkillAssignments(ilImportMapping $mapping, ilObjTest $testOBJ, $xmlFile)
Importer class for files.
getId()
get object id public
finalRandomTestTaxonomyProcessing(ilImportMapping $mapping, $oldTstObjId, $newTstObjId, ilObjTest $testOBJ)
importXmlRepresentation($a_entity, $a_id, $a_xml, $a_mapping)
Import XML.
importRandomQuestionSetConfig(ilObjTest $testOBJ, $xmlFile, $a_mapping)
static getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
importSkillLevelThresholds(ilImportMapping $mapping, ilAssQuestionSkillAssignmentList $assignmentList, ilObjTest $testOBJ, $xmlFile)
finalProcessing($a_mapping)
Final processing.
Test results import parser.
static saveUsage($a_tax_id, $a_obj_id)
Save Usage.
setOfflineStatus($a_status)
Set offline status.
getInstallId()
Get installation id.
static $finallyProcessedTestsRegistry
registerFailedImports(ilAssQuestionSkillAssignmentImportList $assignmentList)
static _setImportDirectory($a_import_dir=null)
set import directory