ILIAS  trunk Revision v13.0_alpha-62-g3b72d83f2e5
ilTestQuestionPoolLegacyImporter Class Reference
+ Inheritance diagram for ilTestQuestionPoolLegacyImporter:
+ Collaboration diagram for ilTestQuestionPoolLegacyImporter:

Public Member Functions

 __construct ()
 
 importXmlRepresentation (string $a_entity, string $a_id, string $a_xml, ilImportMapping $a_mapping)
 
 finalProcessing (ilImportMapping $a_mapping)
 
- Public Member Functions inherited from ilXmlImporter
 __construct ()
 
 setImport (ilImport $a_val)
 
 getImport ()
 
 init ()
 
 setInstallId (string $a_val)
 
 getInstallId ()
 
 setInstallUrl (string $a_val)
 
 getInstallUrl ()
 
 setSchemaVersion (string $a_val)
 
 getSchemaVersion ()
 
 setImportDirectory (string $a_val)
 
 getImportDirectory ()
 
 setSkipEntities (array $a_val)
 
 getSkipEntities ()
 
 exportedFromSameInstallation ()
 
 importXmlRepresentation (string $a_entity, string $a_id, string $a_xml, ilImportMapping $a_mapping)
 
 finalProcessing (ilImportMapping $a_mapping)
 
 afterContainerImportProcessing (ilImportMapping $mapping)
 

Protected Member Functions

 importQuestionSkillAssignments ($xmlFile, ilImportMapping $mappingRegistry, $targetParentObjId)
 

Protected Attributes

readonly ImportSessionRepository $session
 
readonly RequestDataCollector $request_data_collector
 
- Protected Attributes inherited from ilXmlImporter
array $skip_entities = array()
 
ilImport $imp
 
string $install_id
 
string $install_url
 
string $schema_version
 
string $import_directory
 

Private Attributes

ilObjQuestionPool $pool_obj
 

Detailed Description

Definition at line 25 of file class.ilTestQuestionPoolLegacyImporter.php.

Constructor & Destructor Documentation

◆ __construct()

ilTestQuestionPoolLegacyImporter::__construct ( )

Reimplemented from ilXmlImporter.

Definition at line 31 of file class.ilTestQuestionPoolLegacyImporter.php.

32 {
34
35 $local_dic = QuestionPoolDIC::dic();
36 $this->session = $local_dic['exportimport.session'];
37 $this->request_data_collector = $local_dic['request_data_collector'];
38 }
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc

References ILIAS\GlobalScreen\Provider\__construct().

+ Here is the call graph for this function:

Member Function Documentation

◆ finalProcessing()

ilTestQuestionPoolLegacyImporter::finalProcessing ( ilImportMapping  $a_mapping)

Reimplemented from ilXmlImporter.

Definition at line 128 of file class.ilTestQuestionPoolLegacyImporter.php.

128 : void
129 {
130 $maps = $a_mapping->getMappingsOfEntity('components/ILIAS/TestQuestionPool', 'qpl');
131 foreach ($maps as $old => $new) {
132 if ($old === 'new_id' || (int) $old <= 0) {
133 continue;
134 }
135
136 $new_tax_ids = $a_mapping->getMapping('components/ILIAS/Taxonomy', 'tax_usage_of_obj', (string) $old);
137 if ($new_tax_ids === null) {
138 continue;
139 }
140
141 $tax_ids = explode(':', $new_tax_ids);
142 foreach ($tax_ids as $tid) {
143 ilObjTaxonomy::saveUsage((int) $tid, (int) $new);
144 }
145 }
146 }
getMapping(string $a_comp, string $a_entity, string $a_old_id)
getMappingsOfEntity(string $a_comp, string $a_entity)
static saveUsage(int $a_tax_id, int $a_obj_id)

References ilImportMapping\getMapping(), ilImportMapping\getMappingsOfEntity(), and ilObjTaxonomy\saveUsage().

+ Here is the call graph for this function:

◆ importQuestionSkillAssignments()

ilTestQuestionPoolLegacyImporter::importQuestionSkillAssignments (   $xmlFile,
ilImportMapping  $mappingRegistry,
  $targetParentObjId 
)
protected

Definition at line 148 of file class.ilTestQuestionPoolLegacyImporter.php.

148 : void
149 {
151 $parser->startParsing();
152
153 $importer = new ilAssQuestionSkillAssignmentImporter();
154 $importer->setTargetParentObjId($targetParentObjId);
155 $importer->setImportInstallationId($this->getInstallId());
156 $importer->setImportMappingRegistry($mappingRegistry);
157 $importer->setImportMappingComponent('components/ILIAS/TestQuestionPool');
158 $importer->setImportAssignmentList($parser->getAssignmentList());
159
160 $importer->import();
161
162 if (!$importer->getFailedImportAssignmentList()->assignmentsExist()) {
163 return;
164 }
165
166 $fails = new ilAssQuestionSkillAssignmentImportFails($targetParentObjId);
167 $fails->registerFailedImports($importer->getFailedImportAssignmentList());
168
169 $this->pool_obj->getObjectProperties()->storePropertyIsOnline(
170 $this->pool_obj->getObjectProperties()->getPropertyIsOnline()->withOffline()
171 );
172 }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
foreach(array_slice( $argv, 1) as $argument) if(!is_dir($target)) $parser

References ILIAS\Scripts\PHPStan\$parser.

◆ importXmlRepresentation()

ilTestQuestionPoolLegacyImporter::importXmlRepresentation ( string  $a_entity,
string  $a_id,
string  $a_xml,
ilImportMapping  $a_mapping 
)

Reimplemented from ilXmlImporter.

Definition at line 40 of file class.ilTestQuestionPoolLegacyImporter.php.

45 : void {
46 $this->pool_obj = new ilObjQuestionPool(0, true);
47 $this->pool_obj->setType('qpl');
48 $this->pool_obj->setTitle('dummy');
49 $this->pool_obj->setDescription('questionpool import');
50 $this->pool_obj->create(true);
51 $this->pool_obj->createReference();
52 $this->pool_obj->putInTree($this->request_data_collector->getRefId());
53 $this->pool_obj->setPermissions($this->request_data_collector->getRefId());
54
55 $a_mapping->addMapping('components/ILIAS/TestQuestionPool', 'qpl', $a_id, (string) $this->pool_obj->getId());
56
57 $session = $this->session->getSession();
58 $session = $session->withPoolObjId($this->pool_obj->getId());
59 $this->session->setSession($session);
60
61 $qpl_parser = new ilObjQuestionPoolXMLParser($this->pool_obj, $session->legacyXmlFile());
62 $qpl_parser->startParsing();
63
64 // set another question pool name (if possible)
65 $qpl_new = $this->request_data_collector->string('qpl_new');
66 if ($qpl_new !== '') {
67 $this->pool_obj->setTitle($qpl_new);
68 }
69
70 $this->pool_obj->update();
71 $this->pool_obj->saveToDb();
72
73 $qti_parser = new ilQTIParser(
74 $session->importBaseDir(),
75 $session->legacyQtiFile(),
77 $this->pool_obj->getId(),
78 $session->selectedQuestionIds()
79 );
80 $qti_parser->startParsing();
81
82 $page_parser = new ilQuestionPageParser(
83 $this->pool_obj,
84 $session->legacyXmlFile(),
85 $session->importBaseDir()
86 );
87 $page_parser->setQuestionMapping($qti_parser->getImportMapping());
88 $page_parser->startParsing();
89
90 foreach ($qti_parser->getImportMapping() as $k => $v) {
91 $old_question_id = substr($k, strpos($k, 'qst_') + strlen('qst_'));
92 $new_question_id = (string) $v['pool']; // yes, this is the new question id ^^
93
94 $a_mapping->addMapping(
95 'components/ILIAS/Taxonomy',
96 'tax_item',
97 "qpl:quest:{$old_question_id}",
98 $new_question_id
99 );
100
101 $a_mapping->addMapping(
102 'components/ILIAS/Taxonomy',
103 'tax_item_obj_id',
104 "qpl:quest:{$old_question_id}",
105 (string) $this->pool_obj->getId()
106 );
107
108 $a_mapping->addMapping(
109 'components/ILIAS/TestQuestionPool',
110 'quest',
111 $old_question_id,
112 $new_question_id
113 );
114 }
115
116 $this->importQuestionSkillAssignments($session->legacyXmlFile(), $a_mapping, $this->pool_obj->getId());
117
118 $a_mapping->addMapping(
119 'components/ILIAS/MetaData',
120 'md',
121 "{$a_id}:0:qpl",
122 "{$this->pool_obj->getId()}:0:qpl"
123 );
124
125 $this->pool_obj->saveToDb();
126 }
addMapping(string $a_comp, string $a_entity, string $a_old_id, string $a_new_id)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Legacy Content Object Parser.
importQuestionSkillAssignments($xmlFile, ilImportMapping $mappingRegistry, $targetParentObjId)

Field Documentation

◆ $pool_obj

ilObjQuestionPool ilTestQuestionPoolLegacyImporter::$pool_obj
private

Definition at line 27 of file class.ilTestQuestionPoolLegacyImporter.php.

◆ $request_data_collector

readonly RequestDataCollector ilTestQuestionPoolLegacyImporter::$request_data_collector
protected

Definition at line 29 of file class.ilTestQuestionPoolLegacyImporter.php.

◆ $session

readonly ImportSessionRepository ilTestQuestionPoolLegacyImporter::$session
protected

Definition at line 28 of file class.ilTestQuestionPoolLegacyImporter.php.


The documentation for this class was generated from the following file: