Returns a QTI xml representation of the question Returns a QTI xml representation of the question and sets the internal domxml variable with the DOM XML representation of the QTI xml representation. 
   42         $ilias = $DIC[
'ilias'];
    46         $a_xml_writer->xmlHeader();
    47         $a_xml_writer->xmlStartTag(
"questestinterop");
    49             "ident" => 
"il_" . 
IL_INST_ID . 
"_qst_" . $this->
object->getId(),
    50             "title" => $this->
object->getTitle(),
    51             "maxattempts" => $this->
object->getNrOfTries()
    53         $a_xml_writer->xmlStartTag(
"item", $attrs);
    55         $a_xml_writer->xmlElement(
"qticomment", null, $this->
object->getComment());
    56         $a_xml_writer->xmlStartTag(
"itemmetadata");
    57         $a_xml_writer->xmlStartTag(
"qtimetadata");
    58         $a_xml_writer->xmlStartTag(
"qtimetadatafield");
    59         $a_xml_writer->xmlElement(
"fieldlabel", null, 
"ILIAS_VERSION");
    60         $a_xml_writer->xmlElement(
"fieldentry", null, $ilias->getSetting(
"ilias_version"));
    61         $a_xml_writer->xmlEndTag(
"qtimetadatafield");
    62         $a_xml_writer->xmlStartTag(
"qtimetadatafield");
    63         $a_xml_writer->xmlElement(
"fieldlabel", null, 
"QUESTIONTYPE");
    64         $a_xml_writer->xmlElement(
"fieldentry", null, $this->
object->getQuestionType());
    65         $a_xml_writer->xmlEndTag(
"qtimetadatafield");
    66         $a_xml_writer->xmlStartTag(
"qtimetadatafield");
    67         $a_xml_writer->xmlElement(
"fieldlabel", null, 
"AUTHOR");
    68         $a_xml_writer->xmlElement(
"fieldentry", null, $this->
object->getAuthor());
    69         $a_xml_writer->xmlEndTag(
"qtimetadatafield");
    75         $a_xml_writer->xmlStartTag(
"qtimetadatafield");
    76         $a_xml_writer->xmlElement(
"fieldlabel", null, 
"thumb_geometry");
    77         $a_xml_writer->xmlElement(
"fieldentry", null, $this->
object->getThumbSize());
    78         $a_xml_writer->xmlEndTag(
"qtimetadatafield");
    79         $a_xml_writer->xmlStartTag(
"qtimetadatafield");
    80         $a_xml_writer->xmlElement(
"fieldlabel", null, 
"element_height");
    81         $a_xml_writer->xmlElement(
"fieldentry", null, $this->
object->getElementHeight());
    82         $a_xml_writer->xmlEndTag(
"qtimetadatafield");
    83         $a_xml_writer->xmlStartTag(
"qtimetadatafield");
    84         $a_xml_writer->xmlElement(
"fieldlabel", null, 
"points");
    85         $a_xml_writer->xmlElement(
"fieldentry", null, $this->
object->getPoints());
    86         $a_xml_writer->xmlEndTag(
"qtimetadatafield");
    87         $a_xml_writer->xmlEndTag(
"qtimetadata");
    88         $a_xml_writer->xmlEndTag(
"itemmetadata");
    92             "label" => $this->
object->getTitle()
    94         $a_xml_writer->xmlStartTag(
"presentation", $attrs);
    96         $a_xml_writer->xmlStartTag(
"flow");
   103             $ordering_type = 
'OQP';
   105             $ordering_type = 
'OQNP';
   107             $ordering_type = 
'OQNT';
   109             $ordering_type = 
'OQT';
   113             "ident" => $ordering_type,
   114             "rcardinality" => 
"Ordered"   117         $attrs[
"output"] = 
"javascript";
   118         $a_xml_writer->xmlStartTag(
"response_lid", $attrs);
   122         if ($this->
object->getShuffle()) {
   131         $a_xml_writer->xmlStartTag(
"render_choice", $attrs);
   134         foreach ($this->
object->getOrderingElementList() as $element) {
   136                 'ident' => $element->getExportIdent()
   138             $a_xml_writer->xmlStartTag(
"response_label", $attrs);
   141                 $imagetype = 
"image/jpeg";
   143                 $a_xml_writer->xmlStartTag(
"material");
   144                 if ($force_image_references) {
   146                         "imagtype" => $imagetype,
   147                         "label" => $element->getContent(),
   148                         "uri" => $this->
object->getImagePathWeb() . $element->getContent()
   150                     $a_xml_writer->xmlElement(
"matimage", $attrs);
   152                     $imagepath = $this->
object->getImagePath() . $element->getContent();
   153                     if (file_exists($imagepath) && is_file($imagepath)) {
   154                         $fh = @fopen($imagepath, 
"rb");
   156                             $imagefile = fread($fh, filesize($imagepath));
   158                             $base64 = base64_encode($imagefile);
   160                             if (preg_match(
"/.*\.(png|gif)$/", $element->getContent(), $matches)) {
   161                                 $imagetype = 
"image/" . $matches[1];
   164                                 "imagtype" => $imagetype,
   165                                 "label" => $element->getContent(),
   166                                 "embedded" => 
"base64"   168                             $a_xml_writer->xmlElement(
"matimage", $attrs, $base64, 
false, 
false);
   172                 $a_xml_writer->xmlEndTag(
"material");
   175                 $a_xml_writer->xmlStartTag(
"material");
   176                 $this->
addQTIMaterial($a_xml_writer, $element->getContent(), 
true, 
false);
   177                 $a_xml_writer->xmlEndTag(
"material");
   178                 $a_xml_writer->xmlStartTag(
"material");
   179                 $attrs = [
"label" => 
"answerdepth"];
   180                 $a_xml_writer->xmlElement(
"mattext", $attrs, $element->getIndentation());
   181                 $a_xml_writer->xmlEndTag(
"material");
   183             $a_xml_writer->xmlEndTag(
"response_label");
   185         $a_xml_writer->xmlEndTag(
"render_choice");
   186         $a_xml_writer->xmlEndTag(
"response_lid");
   187         $a_xml_writer->xmlEndTag(
"flow");
   188         $a_xml_writer->xmlEndTag(
"presentation");
   191         $a_xml_writer->xmlStartTag(
"resprocessing");
   192         $a_xml_writer->xmlStartTag(
"outcomes");
   193         $a_xml_writer->xmlStartTag(
"decvar");
   194         $a_xml_writer->xmlEndTag(
"decvar");
   195         $a_xml_writer->xmlEndTag(
"outcomes");
   197         foreach ($this->
object->getOrderingElementList() as $element) {
   201             $a_xml_writer->xmlStartTag(
"respcondition", $attrs);
   203             $a_xml_writer->xmlStartTag(
"conditionvar");
   207                 $ordering_type = 
'OQP';
   209                 $ordering_type = 
'OQNP';
   211                 $ordering_type = 
'OQNT';
   213                 $ordering_type = 
'OQT';
   216             $attrs = [
"respident" => $ordering_type];
   218             $attrs[
"index"] = $element->getPosition();
   219             $a_xml_writer->xmlElement(
"varequal", $attrs, $element->getPosition());
   220             $a_xml_writer->xmlEndTag(
"conditionvar");
   225             $points = $this->
object->getPoints() / $this->
object->getOrderingElementList()->countElements();
   226             $a_xml_writer->xmlElement(
"setvar", $attrs, $points);
   229                 "feedbacktype" => 
"Response",
   230                 "linkrefid" => 
"link_" . $element->getPosition()
   232             $a_xml_writer->xmlElement(
"displayfeedback", $attrs);
   233             $a_xml_writer->xmlEndTag(
"respcondition");
   236         $feedback_allcorrect = $this->
object->feedbackOBJ->getGenericFeedbackExportPresentation(
   240         if (strlen($feedback_allcorrect)) {
   244             $a_xml_writer->xmlStartTag(
"respcondition", $attrs);
   246             $a_xml_writer->xmlStartTag(
"conditionvar");
   248             foreach ($this->
object->getOrderingElementList() as $element) {
   252                     $ordering_type = 
'OQP';
   254                     $ordering_type = 
'OQNP';
   256                     $ordering_type = 
'OQNT';
   258                     $ordering_type = 
'OQT';
   261                 $attrs = [
"respident" => $ordering_type];
   263                 $attrs[
"index"] = $element->getPosition();
   264                 $a_xml_writer->xmlElement(
"varequal", $attrs, $element->getPosition());
   267             $a_xml_writer->xmlEndTag(
"conditionvar");
   270                 "feedbacktype" => 
"Response",
   271                 "linkrefid" => 
"response_allcorrect"   273             $a_xml_writer->xmlElement(
"displayfeedback", $attrs);
   274             $a_xml_writer->xmlEndTag(
"respcondition");
   277         $feedback_onenotcorrect = $this->
object->feedbackOBJ->getGenericFeedbackExportPresentation(
   281         if (strlen($feedback_onenotcorrect)) {
   285             $a_xml_writer->xmlStartTag(
"respcondition", $attrs);
   287             $a_xml_writer->xmlStartTag(
"conditionvar");
   288             $a_xml_writer->xmlStartTag(
"not");
   290             foreach ($this->
object->getOrderingElementList() as $element) {
   293                     $ordering_type = 
'OQP';
   295                     $ordering_type = 
'OQNP';
   297                     $ordering_type = 
'OQNT';
   299                     $ordering_type = 
'OQT';
   302                 $attrs = [
"respident" => $ordering_type];
   304                 $attrs[
"index"] = $element->getPosition();
   305                 $a_xml_writer->xmlElement(
"varequal", $attrs, $element->getPosition());
   308             $a_xml_writer->xmlEndTag(
"not");
   309             $a_xml_writer->xmlEndTag(
"conditionvar");
   312                 "feedbacktype" => 
"Response",
   313                 "linkrefid" => 
"response_onenotcorrect"   315             $a_xml_writer->xmlElement(
"displayfeedback", $attrs);
   316             $a_xml_writer->xmlEndTag(
"respcondition");
   319         $a_xml_writer->xmlEndTag(
"resprocessing");
   322         foreach ($this->
object->getOrderingElementList() as $element) {
   324                 "ident" => 
"link_" . $element->getPosition(),
   327             $a_xml_writer->xmlStartTag(
"itemfeedback", $attrs);
   329             $a_xml_writer->xmlStartTag(
"flow_mat");
   330             $a_xml_writer->xmlStartTag(
"material");
   331             $a_xml_writer->xmlElement(
"mattext", null, $this->
object->feedbackOBJ->getSpecificAnswerFeedbackExportPresentation(
   332                 $this->object->getId(),
   334                 $element->getPosition()
   336             $a_xml_writer->xmlEndTag(
"material");
   337             $a_xml_writer->xmlEndTag(
"flow_mat");
   338             $a_xml_writer->xmlEndTag(
"itemfeedback");
   341         if (strlen($feedback_allcorrect)) {
   343                 "ident" => 
"response_allcorrect",
   346             $a_xml_writer->xmlStartTag(
"itemfeedback", $attrs);
   348             $a_xml_writer->xmlStartTag(
"flow_mat");
   350             $a_xml_writer->xmlEndTag(
"flow_mat");
   351             $a_xml_writer->xmlEndTag(
"itemfeedback");
   353         if (strlen($feedback_onenotcorrect)) {
   355                 "ident" => 
"response_onenotcorrect",
   358             $a_xml_writer->xmlStartTag(
"itemfeedback", $attrs);
   360             $a_xml_writer->xmlStartTag(
"flow_mat");
   362             $a_xml_writer->xmlEndTag(
"flow_mat");
   363             $a_xml_writer->xmlEndTag(
"itemfeedback");
   368         $a_xml_writer->xmlEndTag(
"item");
   369         $a_xml_writer->xmlEndTag(
"questestinterop");
   371         $xml = $a_xml_writer->xmlDumpMem(
false);
   372         if (!$a_include_header) {
   373             $pos = strpos($xml, 
"?>");
   374             $xml = substr($xml, $pos + 2);
 
addQTIMaterial(ilXmlWriter $a_xml_writer, string $a_material, bool $close_material_tag=true, bool $add_mobs=true)
 
addGeneralMetadata(ilXmlWriter $xmlwriter)
 
addAdditionalContentEditingModeInformation(ilXmlWriter $a_xml_writer)
adds a qti meta data field for ilias specific information of "additional content editing mode" (xml w...
 
addSuggestedSolution(ilXmlWriter $writer)
 
addSolutionHints(ilXmlWriter $writer)