19declare(strict_types=1);
183 private array
$metadata = [
"label" =>
"",
"entry" =>
""];
194 private readonly
string $importdir,
196 int $a_mode = self::IL_MO_PARSE_QTI,
199 private array $mappings = [],
200 bool $throw_errors =
false
204 $this->user_id =
$DIC[
'ilUser']->getId();
206 $this->parser_mode = $a_mode;
210 $this->qpl_id = $a_qpl_id;
211 $this->
lng = $DIC->language();
243 $this->tst_id = $this->tst_object->
getId();
266 $this->question_counter = 1;
267 parent::startParsing();
275 if ($this->depth[$a_xml_parser] > 0) {
276 return $this->path[$this->depth[$a_xml_parser] - 1];
286 public function handlerBeginTag($a_xml_parser,
string $a_name, array $a_attribs): void
288 switch ($this->parser_mode) {
304 if ($this->do_nothing) {
307 $this->sametag =
false;
308 $this->characterbuffer =
"";
309 $this->depth[$a_xml_parser] = ($this->depth[$a_xml_parser] ?? 0) + 1;
310 $this->path[$this->depth[$a_xml_parser]] = strtolower($a_name);
311 $this->qti_element = $a_name;
313 switch (strtolower($a_name)) {
317 case "assessmentcontrol":
322 $this->in_objectives =
true;
324 case 'presentation_material':
326 $this->in_prensentation_material =
true;
332 $this->in_itemmetadata =
true;
334 case "qtimetadatafield":
335 $this->metadata = [
"label" =>
"",
"entry" =>
""];
338 $this->attributes = $a_attribs;
349 case "displayfeedback":
359 if ($this->conditionvar !=
null) {
360 $this->conditionvar->addNot();
364 if ($this->conditionvar !=
null) {
365 $this->conditionvar->addAnd();
369 if ($this->conditionvar !=
null) {
370 $this->conditionvar->addOr();
378 foreach ($a_attribs as $attribute => $value) {
379 switch (strtolower($attribute)) {
381 $this->responsevar->setRespident($value);
384 $this->responsevar->setIndex($value);
391 foreach ($a_attribs as $attribute => $value) {
392 switch (strtolower($attribute)) {
394 $this->responsevar->setRespident($value);
397 $this->responsevar->setIndex($value);
404 foreach ($a_attribs as $attribute => $value) {
405 switch (strtolower($attribute)) {
407 $this->responsevar->setRespident($value);
410 $this->responsevar->setIndex($value);
417 foreach ($a_attribs as $attribute => $value) {
418 switch (strtolower($attribute)) {
420 $this->responsevar->setRespident($value);
423 $this->responsevar->setIndex($value);
430 foreach ($a_attribs as $attribute => $value) {
431 switch (strtolower($attribute)) {
433 $this->responsevar->setRespident($value);
436 $this->responsevar->setSetmatch($value);
439 $this->responsevar->setIndex($value);
446 foreach ($a_attribs as $attribute => $value) {
447 switch (strtolower($attribute)) {
449 $this->responsevar->setRespident($value);
452 $this->responsevar->setAreatype($value);
455 $this->responsevar->setIndex($value);
462 foreach ($a_attribs as $attribute => $value) {
463 switch (strtolower($attribute)) {
465 $this->responsevar->setCase($value);
468 $this->responsevar->setRespident($value);
471 $this->responsevar->setIndex($value);
476 case "respcondition":
478 foreach ($a_attribs as $attribute => $value) {
479 switch (strtolower($attribute)) {
481 $this->respcondition->setContinue($value);
484 $this->respcondition->setTitle($value);
507 case "questestinterop":
508 $this->hasRootElement =
true;
516 $this->in_presentation =
true;
519 case "response_label":
522 case "render_choice":
525 case "render_hotspot":
549 case "resprocessing":
560 switch ($this->parser_mode) {
576 if ($this->do_nothing && strtolower($a_name) !==
"item") {
579 switch (strtolower($a_name)) {
581 if (is_object($this->tst_object)) {
582 $this->tst_object->fromXML($this->
assessment, $this->mappings);
584 $this->in_assessment =
false;
586 case "assessmentcontrol":
587 $this->
assessment->addAssessmentcontrol($this->assessmentcontrol);
588 $this->assessmentcontrol =
null;
591 if (strtolower($this->
getParent($a_xml_parser)) ===
"assessment") {
592 $this->
assessment->addObjectives($this->objectives);
594 $this->in_objectives =
false;
596 case 'presentation_material':
597 $this->
assessment->setPresentationMaterial($this->prensentation_material);
598 $this->in_prensentation_material =
false;
601 $this->in_itemmetadata =
false;
603 case "qtimetadatafield":
605 switch ($this->metadata[
"label"]) {
606 case "ILIAS_VERSION":
607 if ($this->item !==
null) {
608 $this->item->setIliasSourceVersion(
614 if ($this->item !==
null) {
615 $this->item->setQuestiontype($this->metadata[
"entry"]);
619 if ($this->item !==
null) {
620 $this->item->setAuthor($this->metadata[
"entry"]);
624 if ($this->item !==
null) {
625 $this->item->addMetadata($this->metadata);
629 if ($this->in_assessment) {
630 $this->
assessment->addQtiMetadata($this->metadata);
632 $this->metadata = [
"label" =>
"",
"entry" =>
""];
635 $label = $this->metadata[
"label"];
636 if ($label ===
"unit_categories") {
637 $this->item?->addUnitCategory($this->metadata[
"entry"], $this->attributes);
641 if ($label ===
"units") {
642 $this->item?->addUnit($this->metadata[
"entry"], $this->attributes);
651 if (count($this->flow_mat)) {
653 if (count($this->flow_mat)) {
654 $this->flow_mat[count($this->flow_mat) - 1]->addFlowMat(
$flow_mat);
655 } elseif ($this->in_prensentation_material) {
656 $this->prensentation_material->addFlowMat(
$flow_mat);
657 } elseif ($this->itemfeedback !=
null) {
658 $this->itemfeedback->addFlowMat(
$flow_mat);
659 } elseif ($this->response_label !=
null) {
660 $this->response_label->addFlow_mat(
$flow_mat);
665 if ($this->item !=
null) {
666 if ($this->itemfeedback !=
null) {
667 $this->item->addItemfeedback($this->itemfeedback);
670 $this->itemfeedback =
null;
672 case "displayfeedback":
673 if ($this->respcondition !=
null) {
674 if ($this->displayfeedback !=
null) {
675 $this->respcondition->addDisplayfeedback($this->displayfeedback);
678 $this->displayfeedback =
null;
681 if ($this->respcondition !==
null) {
682 if ($this->setvar !=
null) {
683 $this->respcondition->addSetvar($this->setvar);
686 $this->setvar =
null;
689 if ($this->respcondition !==
null) {
690 $this->respcondition->setConditionvar($this->conditionvar);
692 $this->conditionvar =
null;
702 if ($this->conditionvar !=
null) {
703 if ($this->responsevar !=
null) {
704 $this->conditionvar->addResponseVar($this->responsevar);
707 $this->responsevar =
null;
709 case "respcondition":
710 if ($this->resprocessing !=
null) {
711 $this->resprocessing->addRespcondition($this->respcondition);
713 $this->respcondition =
null;
716 if ($this->resprocessing !=
null) {
717 $this->resprocessing->setOutcomes($this->outcomes);
719 $this->outcomes =
null;
722 if ($this->outcomes !=
null) {
723 $this->outcomes->addDecvar($this->decvar);
725 $this->decvar =
null;
728 $this->in_presentation =
false;
729 if ($this->presentation !=
null && $this->item !=
null) {
730 $this->item->setPresentation($this->presentation);
732 $this->presentation =
null;
734 case "response_label":
735 if ($this->render_type !=
null) {
736 $this->render_type->addResponseLabel($this->response_label);
737 $this->response_label =
null;
740 case "render_choice":
741 case "render_hotspot":
743 if ($this->in_response) {
744 if ($this->response !=
null) {
745 if ($this->render_type !=
null) {
746 $this->response->setRenderType($this->render_type);
747 $this->render_type =
null;
758 if ($this->presentation !=
null) {
759 if ($this->response !=
null) {
760 $this->presentation->addResponse($this->response);
761 if ($this->item !=
null) {
762 $this->item->addPresentationitem($this->response);
766 $this->response =
null;
767 $this->in_response =
false;
770 if ($this->do_nothing) {
771 $this->do_nothing =
false;
780 $qt = $this->item->determineQuestionType();
787 $question =
new $qt();
788 $fbt = str_replace(
'ass',
'ilAss', $qt) .
'Feedback';
789 $question->feedbackOBJ =
new $fbt(
795 $this->import_mapping = $question->fromXML(
802 $this->question_counter,
803 $this->import_mapping,
806 $this->numImportedItems++;
810 if ($this->material) {
811 $mat = $this->material->getMaterial(0);
812 if (!is_array($mat)) {
813 $this->material =
null;
816 if ($mat[
"type"] ===
"mattext" && $mat[
"material"]->
getLabel() ===
"suggested_solution") {
817 $this->item->addSuggestedSolution($mat[
"material"], $this->gap_index);
819 if ($this->in_objectives) {
820 $this->objectives->addMaterial($this->material);
821 } elseif ($this->render_type !=
null && strtolower($this->
getParent($a_xml_parser)) ===
"render_hotspot") {
822 $this->render_type->addMaterial($this->material);
823 } elseif (count($this->flow_mat) && strtolower($this->
getParent($a_xml_parser)) ===
"flow_mat") {
824 $this->flow_mat[count($this->flow_mat) - 1]->addMaterial($this->material);
825 } elseif ($this->itemfeedback !=
null) {
826 $this->itemfeedback->addMaterial($this->material);
827 } elseif ($this->response_label !=
null) {
828 $this->response_label->addMaterial($this->material);
829 } elseif ($this->response !=
null) {
830 if ($this->response->hasRendering()) {
831 $this->response->setMaterial2($this->material);
833 $this->response->setMaterial1($this->material);
835 } elseif (($this->in_presentation) && (!$this->in_response)) {
836 if (!is_object($this->item->getQuestiontext())) {
837 $this->item->setQuestiontext($this->material);
839 $this->presentation->addMaterial($this->material);
840 } elseif ($this->presentation !=
null) {
841 $this->presentation->addMaterial($this->material);
842 if ($this->item !=
null) {
843 $this->item->addPresentationitem($this->material);
847 $this->material =
null;
855 if ($this->
virusDetected($this->matimage->getRawContent())) {
860 $matImageSecurity->sanitizeLabel();
861 }
catch (Exception
$e) {
864 if (!$matImageSecurity->validate()) {
868 $this->material->addMatimage($this->matimage);
869 $this->matimage =
null;
875 $this->mattext->setContent(
'<br />');
876 $this->material->addMattext($this->mattext);
877 $this->mattext =
null;
879 case "resprocessing":
880 if ($this->item !=
null) {
881 $this->item->addResprocessing($this->resprocessing);
883 $this->resprocessing =
null;
886 if ($this->material !=
null) {
887 $this->material->addMattext($this->mattext);
889 $this->mattext =
null;
892 if ($this->material !=
null) {
893 $this->material->addMatapplet($this->matapplet);
895 $this->matapplet =
null;
898 $this->depth[$a_xml_parser] -= 1;
906 switch ($this->parser_mode) {
921 if ($this->do_nothing) {
924 $this->characterbuffer .= $a_data;
926 switch ($this->qti_element) {
928 $this->metadata[
"label"] = $a_data;
931 $this->metadata[
"entry"] = $a_data;
933 case "response_label":
934 if ($this->response_label !=
null) {
935 $this->response_label->setContent($a_data);
939 if ($this->setvar !=
null) {
940 $this->setvar->setContent($a_data);
943 case "displayfeedback":
944 if ($this->displayfeedback !=
null) {
945 $this->displayfeedback->setContent($a_data);
956 if ($this->responsevar !=
null) {
957 $this->responsevar->setContent($a_data);
961 if (strlen($a_data)) {
962 if ($this->decvar !=
null) {
963 $this->decvar->setContent($a_data);
968 if ($this->mattext !=
null) {
969 $this->mattext->setContent($a_data);
973 if ($this->matapplet !=
null) {
974 $this->matapplet->setContent($a_data);
978 if ($this->matimage !=
null) {
979 $this->matimage->setContent($a_data);
983 switch ($this->
getParent($a_xml_parser)) {
991 $this->item->setDuration($a_data);
996 switch ($this->
getParent($a_xml_parser)) {
998 $this->item->setComment($a_data);
1008 $this->sametag =
true;
1017 $this->qti_element = $a_name;
1019 switch (strtolower($a_name)) {
1022 $this->in_assessment =
true;
1023 foreach ($a_attribs as $attribute => $value) {
1024 switch (strtolower($attribute)) {
1034 case "questestinterop":
1035 $this->verifyroot =
true;
1037 case "qtimetadatafield":
1038 $this->metadata = [
"label" =>
"",
"entry" =>
""];
1039 $this->verifymetadatafield = 1;
1042 $this->verifyfieldlabeltext =
"";
1043 if ($this->verifymetadatafield == 1) {
1044 $this->verifyfieldlabel = 1;
1048 $this->verifyfieldentrytext =
"";
1049 if ($this->verifymetadatafield == 1) {
1050 $this->verifyfieldentry = 1;
1055 foreach ($a_attribs as $attribute => $value) {
1056 switch (strtolower($attribute)) {
1062 $this->founditems[] = [
"title" =>
"$title",
"type" =>
"",
"ident" => $a_attribs[
"ident"]];
1064 case "response_lid":
1065 if ($this->founditems[count($this->founditems) - 1][
'type'] ===
'') {
1067 foreach ($a_attribs as $attribute => $value) {
1068 switch (strtolower($attribute)) {
1069 case "rcardinality":
1070 switch (strtolower($value)) {
1087 case "response_str":
1088 if (strlen($this->founditems[count($this->founditems) - 1][
"type"]) == 0) {
1090 foreach ($a_attribs as $attribute => $value) {
1091 switch (strtolower($attribute)) {
1092 case "rcardinality":
1093 switch (strtolower($value)) {
1107 if (strlen($this->founditems[count($this->founditems) - 1][
"type"]) == 0) {
1111 case "response_num":
1112 if (strlen($this->founditems[count($this->founditems) - 1][
"type"]) == 0) {
1116 case "response_grp":
1117 if (strlen($this->founditems[count($this->founditems) - 1][
"type"]) == 0) {
1123 $this->verifyqticomment = 1;
1125 case "presentation":
1126 foreach ($a_attribs as $attribute => $value) {
1127 switch (strtolower($attribute)) {
1129 $this->founditems[count($this->founditems) - 1][
"title"] = $value;
1142 switch (strtolower($a_name)) {
1144 foreach ($this->
assessment->qtimetadata as $metaField) {
1145 if ($metaField[
'label'] ==
'question_set_type') {
1150 if ($metaField[
'label'] ==
'random_test') {
1151 if ($metaField[
'entry'] == 1) {
1159 $this->in_assessment =
false;
1163 $this->verifyqticomment = 0;
1165 case "qtimetadatafield":
1166 $this->verifymetadatafield = 0;
1167 if ($this->verifyfieldlabeltext ===
"QUESTIONTYPE") {
1170 if ($this->in_assessment) {
1171 $this->
assessment->addQtiMetadata($this->metadata);
1173 $this->metadata = [
"label" =>
"",
"entry" =>
""];
1176 $this->verifyfieldlabel = 0;
1179 $this->verifyfieldentry = 0;
1189 if ($this->verifyqticomment == 1) {
1190 if (preg_match(
"/Questiontype\=(.*)/", $a_data, $matches)) {
1191 if (count($this->founditems)) {
1192 $this->founditems[count($this->founditems) - 1][
"type"] = $matches[1];
1195 } elseif ($this->verifyfieldlabel == 1) {
1196 $this->verifyfieldlabeltext = $a_data;
1197 } elseif ($this->verifyfieldentry == 1) {
1198 $this->verifyfieldentrytext = $a_data;
1201 switch ($this->qti_element) {
1203 $this->metadata[
"label"] = $a_data;
1206 $this->metadata[
"entry"] = $a_data;
1233 $questionIdMapping = [];
1236 $oldQuestionId = substr($k, strpos($k,
'qst_') + strlen(
'qst_'));
1237 $newQuestionId = $v[
'test'];
1239 $questionIdMapping[$oldQuestionId] = $newQuestionId;
1242 return $questionIdMapping;
1249 parent::setXMLContent($a_xml_content);
1257 $xmlContent = file_get_contents($this->xml_file);
1259 file_put_contents($this->xml_file, $xmlContent);
1261 return parent::openXMLFile();
1268 if (preg_match(
'/^(\d+\.\d+\.\d+)$/', $versionDateString, $matches)) {
1279 if (preg_match(
'/^il_(\d+?)_qst_\d+$/', $itemIdent, $matches)) {
1296 for ($i = 0x00, $max = 0x08; $i <= $max; $i += 0x01) {
1297 $needles[] =
"&#{$i};";
1299 for ($i = 0x0b, $max = 0x0c; $i <= $max; $i += 0x01) {
1300 $needles[] =
"&#{$i};";
1302 for ($i = 0x0e, $max = 0x1f; $i <= $max; $i += 0x01) {
1303 $needles[] =
"&#{$i};";
1305 for ($i = 0xd800, $max = 0xdfff; $i <= $max; $i += 0x0001) {
1306 $needles[] =
"&#{$i};";
1308 for ($i = 0xfffe, $max = 0xffff; $i <= $max; $i += 0x0001) {
1309 $needles[] =
"&#{$i};";
1311 $reg =
'/(' . implode(
'|', $needles) .
')/';
1312 $xmlContent = preg_replace($reg,
'', $xmlContent);
1324 if (!$this->material) {
1328 if (!$this->matimage) {
1343 return $vs->scanBuffer($buffer);
1349 $this->in_assessment =
true;
1350 foreach ($a_attribs as $attribute => $value) {
1351 switch (strtolower($attribute)) {
1365 foreach ($a_attribs as $attribute => $value) {
1366 switch (strtolower($attribute)) {
1367 case "solutionswitch":
1368 $this->assessmentcontrol->setSolutionswitch($value);
1371 $this->assessmentcontrol->setHintswitch($value);
1373 case "feedbackswitch":
1374 $this->assessmentcontrol->setFeedbackswitch($value);
1383 foreach ($a_attribs as $attribute => $value) {
1384 switch (strtolower($attribute)) {
1386 $this->itemfeedback->setIdent($value);
1389 $this->itemfeedback->setView($value);
1398 foreach ($a_attribs as $attribute => $value) {
1399 switch (strtolower($attribute)) {
1400 case "feedbacktype":
1401 $this->displayfeedback->setFeedbacktype($value);
1404 $this->displayfeedback->setLinkrefid($value);
1413 foreach ($a_attribs as $attribute => $value) {
1414 switch (strtolower($attribute)) {
1416 $this->setvar->setAction($value);
1419 $this->setvar->setVarname($value);
1428 foreach ($a_attribs as $attribute => $value) {
1429 switch (strtolower($attribute)) {
1431 $this->responsevar->setCase($value);
1434 $this->responsevar->setRespident($value);
1437 $this->responsevar->setIndex($value);
1446 switch (strtolower($a_name)) {
1447 case "response_lid":
1453 case "response_str":
1456 case "response_num":
1459 case "response_grp":
1463 $this->in_response =
true;
1465 $this->response->setFlow($this->flow);
1466 foreach ($a_attribs as $attribute => $value) {
1467 switch (strtolower($attribute)) {
1469 $this->response->setIdent($value);
1472 $this->response->setRTiming($value);
1474 case "rcardinality":
1475 $this->response->setRCardinality($value);
1478 $this->response->setNumtype($value);
1486 $this->gap_index = 0;
1487 $this->item = $this->items[] =
new ilQTIItem();
1488 foreach ($a_attribs as $attribute => $value) {
1489 switch (strtolower($attribute)) {
1491 $this->item->setIdent($value);
1492 $this->item->setIliasSourceNic(
1496 $this->do_nothing =
true;
1497 } elseif ($this->import_idents !== []
1498 && !in_array($value, $this->import_idents)) {
1499 $this->do_nothing =
true;
1503 $this->item->setTitle($value);
1506 $this->item->setMaxattempts($value);
1515 foreach ($a_attribs as $attribute => $value) {
1516 switch (strtolower($attribute)) {
1518 $this->resprocessing->setScoremodel($value);
1526 if (!$this->in_response) {
1530 foreach ($a_attribs as $attribute => $value) {
1531 switch (strtolower($attribute)) {
1533 $this->render_type->setEncoding($value);
1536 $this->render_type->setFibtype($value);
1539 $this->render_type->setRows($value);
1542 $this->render_type->setMaxchars($value);
1545 $this->render_type->setPrompt($value);
1548 $this->render_type->setColumns($value);
1551 $this->render_type->setCharset($value);
1554 $this->render_type->setMaxnumber($value);
1557 $this->render_type->setMinnumber($value);
1565 if (!$this->in_response) {
1569 foreach ($a_attribs as $attribute => $value) {
1570 switch (strtolower($attribute)) {
1572 $this->render_type->setShowdraw($value);
1575 $this->render_type->setMinnumber($value);
1578 $this->render_type->setMaxnumber($value);
1586 if (!$this->in_response) {
1590 foreach ($a_attribs as $attribute => $value) {
1591 switch (strtolower($attribute)) {
1593 $this->render_type->setShuffle($value);
1596 $this->render_type->setMinnumber($value);
1599 $this->render_type->setMaxnumber($value);
1607 if ($this->render_type ==
null) {
1611 foreach ($a_attribs as $attribute => $value) {
1612 switch (strtolower($attribute)) {
1614 $this->response_label->setRshuffle($value);
1617 $this->response_label->setRarea($value);
1620 $this->response_label->setRrange($value);
1623 $this->response_label->setLabelrefid($value);
1626 $this->response_label->setIdent($value);
1629 $this->response_label->setMatchGroup($value);
1632 $this->response_label->setMatchMax($value);
1641 foreach ($a_attribs as $attribute => $value) {
1642 switch (strtolower($attribute)) {
1644 $this->matapplet->setLabel($value);
1647 $this->matapplet->setUri($value);
1650 $this->matapplet->setY0($value);
1653 $this->matapplet->setHeight($value);
1656 $this->matapplet->setWidth($value);
1659 $this->matapplet->setX0($value);
1662 $this->matapplet->setEmbedded($value);
1665 $this->matapplet->setEntityref($value);
1674 foreach ($a_attribs as $attribute => $value) {
1675 switch (strtolower($attribute)) {
1677 $this->mattext->setTexttype($value);
1680 $this->mattext->setLabel($value);
1683 $this->mattext->setCharset($value);
1686 $this->mattext->setUri($value);
1689 $this->mattext->setXmlspace($value);
1692 $this->mattext->setXmllang($value);
1695 $this->mattext->setEntityref($value);
1698 $this->mattext->setHeight($value);
1701 $this->mattext->setWidth($value);
1704 $this->mattext->setX0($value);
1707 $this->mattext->setY0($value);
1716 $this->material->setFlow($this->flow);
1717 foreach ($a_attribs as $attribute => $value) {
1718 switch (strtolower($attribute)) {
1720 $this->material->setLabel($value);
1729 foreach ($a_attribs as $attribute => $value) {
1730 switch (strtolower($attribute)) {
1732 $this->matimage->setImagetype($value);
1735 $this->matimage->setLabel($value);
1738 $this->matimage->setHeight($value);
1741 $this->matimage->setWidth($value);
1744 $this->matimage->setUri($value);
1747 $this->matimage->setEmbedded($value);
1750 $this->matimage->setX0($value);
1753 $this->matimage->setY0($value);
1756 $this->matimage->setEntityref($value);
1760 if (!$this->matimage->getEmbedded() && strlen($this->matimage->getUri())) {
1761 $img_string = @file_get_contents(dirname($this->xml_file) .
'/' . $this->matimage->getUri());
1763 if (is_string($img_string)) {
1764 $this->matimage->setContent($img_string);
1772 foreach ($a_attribs as $attribute => $value) {
1773 switch (strtolower($attribute)) {
1775 $this->decvar->setVarname($value);
1778 $this->decvar->setVartype($value);
1781 $this->decvar->setDefaultval($value);
1784 $this->decvar->setMinvalue($value);
1787 $this->decvar->setMaxvalue($value);
1790 $this->decvar->setMembers($value);
1793 $this->decvar->setCutvalue($value);
1804 $parser = xml_parser_create();
1805 $is_resource = is_resource($parser);
1806 xml_parser_free($parser);
1808 return $is_resource ? [] :
new SplObjectStorage();
static isImportable($questionTypeTag)
const QUESTION_SET_TYPE_RANDOM
const QUESTION_SET_TYPE_FIXED
const QT_MULTIPLE_CHOICE_MR
const QT_MULTIPLE_CHOICE_SR
resprocessingBeginTag(array $a_attribs)
setIgnoreItemsEnabled(bool $ignoreItemsEnabled)
renderChoiceBeginTag(array $a_attribs)
setHandlers($a_xml_parser)
set event handler should be overwritten by inherited class @access private
displayFeedbackBeginTag(array $a_attribs)
ilQTIConditionvar $conditionvar
fetchNumericVersionFromVersionDateString(string $versionDateString)
assessmentControlBeginTag(array $a_attribs)
itemBeginTag(array $a_attribs)
matTextBeginTag(array $a_attribs)
ilQTIRespcondition $respcondition
ilQTIPresentation $presentation
decVarBeginTag(array $a_attribs)
ilQTIObjectives $objectives
handlerParseCharacterData($a_xml_parser, string $a_data)
ilQTIDisplayfeedback $displayfeedback
handlerParseBeginTag($a_xml_parser, string $a_name, array $a_attribs)
materialBeginTag(array $a_attribs)
virusDetected(string $buffer)
ilQTIResponseLabel $response_label
cleanInvalidXmlChars(string $xmlContent)
setQuestionSetType(string $questionSetType)
ilQTIResponseVar $responsevar
ilQTIItemfeedback $itemfeedback
matAppletBeginTag(array $a_attribs)
handlerCharacterData($a_xml_parser, string $a_data)
handlerVerifyCharacterData($a_xml_parser, string $a_data)
string $verifyfieldentrytext
handlerVerifyBeginTag($a_xml_parser, string $a_name, array $a_attribs)
responseLabelBeginTag(array $a_attribs)
startParsing()
stores xml data in array
ilQTIPresentationMaterial $prensentation_material
matImageBeginTag(array $a_attribs)
itemFeedbackBeginTag(array $a_attribs)
setVarBeginTag(array $a_attribs)
string $verifyfieldlabeltext
bool $in_prensentation_material
getImportMapping()
Get array of new created questions for import id.
termsAndDefinitionsBeginTag(string $a_name, array $a_attribs)
setXMLContent(string $a_xml_content)
handlerVerifyEndTag($a_xml_parser, string $a_name)
ilQTIResprocessing $resprocessing
renderFibBeginTag(array $a_attribs)
handlerParseEndTag($a_xml_parser, string $a_name)
@noinspection NotOptimalIfConditionsInspection
ilQTIAssessment $assessment
ilQTIAssessmentcontrol $assessmentcontrol
ilQTIMatapplet $matapplet
handlerBeginTag($a_xml_parser, string $a_name, array $a_attribs)
QuestionFiles $questionfiles
varEqualBeginTag(array $a_attribs)
fetchSourceNicFromItemIdent(string $itemIdent)
assessmentBeginTag(array $a_attribs)
setTestObject(ilObjTest $tst_object)
renderHotspotBeginTag(array $a_attribs)
handlerEndTag($a_xml_parser, string $a_name)
Class ilQTIPresentationMaterial.
const RESPONSEVAR_SUBSTRING
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setThrowException(bool $throw_exception)
__construct(?string $path_to_file='', ?bool $throw_exception=false)
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc