4 include_once
"./Modules/TestQuestionPool/classes/import/qti12/class.assQuestionImport.php";
30 public function fromXML(&$item, $questionpool_id, &$tst_id, &$tst_object, &$question_counter, &$import_mapping)
36 $presentation = $item->getPresentation();
37 $duration = $item->getDuration();
43 $feedbacksgeneric =
array();
44 $created = sprintf(
"%04d%02d%02d%02d%02d%02d", $now[
'year'], $now[
'mon'], $now[
'mday'], $now[
'hours'], $now[
'minutes'], $now[
'seconds']);
45 foreach ($presentation->order as $entry) {
46 switch ($entry[
"type"]) {
48 $response = $presentation->response[$entry[
"index"]];
50 switch (strtolower(get_class($rendertype))) {
51 case "ilqtirenderfib":
52 $maxchars = $rendertype->getMaxchars();
59 foreach ($item->resprocessing as $resprocessing) {
60 foreach ($resprocessing->respcondition as $respcondition) {
61 $conditionvar = $respcondition->getConditionvar();
62 foreach ($conditionvar->order as $order) {
63 switch ($order[
"field"]) {
65 $upperlimit = $conditionvar->varlte[$order[
"index"]]->getContent();
68 $lowerlimit = $conditionvar->vargte[$order[
"index"]]->getContent();
72 foreach ($respcondition->setvar as $setvar) {
73 $points = $setvar->getContent();
75 if (count($respcondition->displayfeedback)) {
76 foreach ($respcondition->displayfeedback as $feedbackpointer) {
77 if (strlen($feedbackpointer->getLinkrefid())) {
78 foreach ($item->itemfeedback as $ifb) {
79 if (strcmp($ifb->getIdent(),
"response_allcorrect") == 0) {
81 if (count($ifb->material)) {
82 foreach ($ifb->material as $material) {
83 $feedbacksgeneric[1] = $material;
86 if ((count($ifb->flow_mat) > 0)) {
87 foreach ($ifb->flow_mat as $fmat) {
88 if (count($fmat->material)) {
89 foreach ($fmat->material as $material) {
90 $feedbacksgeneric[1] = $material;
95 } elseif (strcmp($ifb->getIdent(),
"response_onenotcorrect") == 0) {
97 if (count($ifb->material)) {
98 foreach ($ifb->material as $material) {
99 $feedbacksgeneric[0] = $material;
102 if ((count($ifb->flow_mat) > 0)) {
103 foreach ($ifb->flow_mat as $fmat) {
104 if (count($fmat->material)) {
105 foreach ($fmat->material as $material) {
106 $feedbacksgeneric[0] = $material;
120 $this->
object->setTitle($item->getTitle());
121 $this->
object->setNrOfTries($item->getMaxattempts());
122 $this->
object->setComment($item->getComment());
123 $this->
object->setAuthor($item->getAuthor());
124 $this->
object->setOwner($ilUser->getId());
125 $this->
object->setQuestion($this->
object->QTIMaterialToString($item->getQuestiontext()));
126 $this->
object->setObjId($questionpool_id);
127 $this->
object->setEstimatedWorkingTime($duration[
"h"], $duration[
"m"], $duration[
"s"]);
128 $this->
object->setMaxChars($maxchars);
129 $this->
object->setPoints($points);
130 $this->
object->setLowerLimit($lowerlimit);
131 $this->
object->setUpperLimit($upperlimit);
133 $this->
object->setAdditionalContentEditingMode(
136 $this->
object->saveToDb();
137 if (count($item->suggested_solutions)) {
138 foreach ($item->suggested_solutions as $suggested_solution) {
139 $this->
object->setSuggestedSolution($suggested_solution[
"solution"]->getContent(), $suggested_solution[
"gap_index"],
true);
141 $this->
object->saveToDb();
143 foreach ($feedbacksgeneric as $correctness => $material) {
144 $m = $this->
object->QTIMaterialToString($material);
145 $feedbacksgeneric[$correctness] =
$m;
148 $questiontext = $this->
object->getQuestion();
149 if (is_array(
$_SESSION[
"import_mob_xhtml"])) {
150 include_once
"./Services/MediaObjects/classes/class.ilObjMediaObject.php";
151 include_once
"./Services/RTE/classes/class.ilRTE.php";
152 foreach (
$_SESSION[
"import_mob_xhtml"] as $mob) {
159 $GLOBALS[
'ilLog']->write(__METHOD__ .
': import mob from dir: ' . $importfile);
163 $questiontext = str_replace(
"src=\"" . $mob[
"mob"] .
"\"",
"src=\"" .
"il_" . IL_INST_ID .
"_mob_" . $media_object->getId() .
"\"", $questiontext);
164 foreach ($feedbacksgeneric as $correctness => $material) {
165 $feedbacksgeneric[$correctness] = str_replace(
"src=\"" . $mob[
"mob"] .
"\"",
"src=\"" .
"il_" . IL_INST_ID .
"_mob_" . $media_object->getId() .
"\"", $material);
170 foreach ($feedbacksgeneric as $correctness => $material) {
171 $this->
object->feedbackOBJ->importGenericFeedback(
177 $this->
object->saveToDb();
179 $q_1_id = $this->
object->getId();
180 $question_id = $this->
object->duplicate(
true, null, null, null, $tst_id);
181 $tst_object->questions[$question_counter++] = $question_id;
182 $import_mapping[$item->getIdent()] =
array(
"pool" => $q_1_id,
"test" => $question_id);
184 $import_mapping[$item->getIdent()] =
array(
"pool" => $this->
object->getId(),
"test" => 0);
Class for numeric question imports.
addGeneralMetadata(ilQTIItem $item)
$GLOBALS['loaded']
Global hash that tracks already loaded includes.
fetchAdditionalContentEditingModeInformation($qtiItem)
fetches the "additional content editing mode" information from qti item and falls back to ADDITIONAL_...
getQplImportArchivDirectory()
returns the full path to extracted qpl import archiv (qpl import dir + qpl archiv subdir) ...
static _replaceMediaObjectImageSrc($a_text, $a_direction=0, $nic=IL_INST_ID)
Replaces image source from mob image urls with the mob id or replaces mob id with the correct image s...
Create styles array
The data for the language used.
Create new PHPExcel object
obj_idprivate
fromXML(&$item, $questionpool_id, &$tst_id, &$tst_object, &$question_counter, &$import_mapping)
Creates a question from a QTI file.
getTstImportArchivDirectory()
returns the full path to extracted tst import archiv (tst import dir + tst archiv subdir) ...
Class for question imports.