4 include_once(
"./Services/Export/classes/class.ilXmlImporter.php");
29 include_once
"./Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php";
33 if($new_id = $a_mapping->getMapping(
'Services/Container',
'objs',$a_id))
36 $newObj->setOnline(
true);
40 else if ($new_id = $a_mapping->getMapping(
'Modules/TestQuestionPool',
'qpl',
"new_id"))
47 $GLOBALS[
'ilLog']->write(__METHOD__.
': non container and no tax mapping, perhaps old qpl export' );
55 if(!@file_exists($xml_file))
57 $GLOBALS[
'ilLog']->write(__METHOD__.
': Cannot find xml definition: '. $xml_file);
60 if(!@file_exists($qti_file))
62 $GLOBALS[
'ilLog']->write(__METHOD__.
': Cannot find qti definition: '. $qti_file);
66 $newObj->fromXML($xml_file);
69 if( isset(
$_POST[
"qpl_new"]) && strlen(
$_POST[
"qpl_new"]) )
71 $newObj->setTitle(
$_POST[
"qpl_new"]);
81 $GLOBALS[
'ilLog']->write(__METHOD__.
': xml file: '. $xml_file .
", qti file:" . $qti_file);
83 if( isset(
$_SESSION[
"qpl_import_idents"]) )
94 include_once
"./Services/QTI/classes/class.ilQTIParser.php";
96 $result = $qtiParser->startParsing();
99 if (strlen($xml_file))
101 include_once (
"./Modules/LearningModule/classes/class.ilContObjParser.php");
103 $contParser->setQuestionMapping($qtiParser->getImportMapping());
104 $contParser->startParsing();
106 foreach ($qtiParser->getImportMapping() as $k => $v)
108 $oldQuestionId = substr($k, strpos($k,
'qst_')+strlen(
'qst_'));
109 $newQuestionId = $v[
'pool'];
111 $a_mapping->addMapping(
112 "Services/Taxonomy",
"tax_item",
"qpl:quest:$oldQuestionId", $newQuestionId
115 $a_mapping->addMapping(
116 "Services/Taxonomy",
"tax_item_obj_id",
"qpl:quest:$oldQuestionId", $newObj->getId()
119 $a_mapping->addMapping(
120 "Modules/TestQuestionPool",
"quest", $oldQuestionId, $newQuestionId
125 $a_mapping->addMapping(
"Modules/TestQuestionPool",
"qpl", $a_id, $newObj->getId());
128 $this->poolOBJ = $newObj;
141 include_once(
"./Services/Taxonomy/classes/class.ilObjTaxonomy.php");
142 $maps = $a_mapping->getMappingsOfEntity(
"Modules/TestQuestionPool",
"qpl");
143 foreach ($maps as $old => $new)
145 if ($old !=
"new_id" && (
int) $old > 0)
148 $new_tax_ids = $a_mapping->getMapping(
"Services/Taxonomy",
"tax_usage_of_obj", $old);
149 if($new_tax_ids !==
false)
151 $tax_ids = explode(
":", $new_tax_ids);
152 foreach($tax_ids as $tid)
158 $taxMappings = $a_mapping->getMappingsOfEntity(
'Services/Taxonomy',
'tax');
159 foreach($taxMappings as $oldTaxId => $newTaxId)
161 if( $oldTaxId == $this->poolOBJ->getNavTaxonomyId() )
163 $this->poolOBJ->setNavTaxonomyId($newTaxId);
164 $this->poolOBJ->saveToDb();
178 $GLOBALS[
'ilLog']->write(__METHOD__.
': '.$this->getImportDirectory());
183 $qti = $this->
getImportDirectory().
'/'.preg_replace(
'/qpl/',
'qti', $basename).
'.xml';
185 return array($xml,$qti);
191 $dir = dirname($dir);
198 $name = basename($dir);
Importer class for question pools.
getImportDirectory()
Get import directory.
_setImportDirectory($a_import_dir=null)
set import directory
importXmlRepresentation($a_entity, $a_id, $a_xml, $a_mapping)
Import XML.
parseXmlFileNames()
Create qti and xml file name.
getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
finalProcessing($a_mapping)
Final processing.
static saveUsage($a_tax_id, $a_obj_id)
Save Usage.
getImportDirectoryContainer()
$GLOBALS['PHPCAS_CLIENT']
This global variable is used by the interface class phpCAS.