36 $ilias = $DIC[
'ilias'];
40 $a_xml_writer->xmlHeader();
41 $a_xml_writer->xmlStartTag(
"questestinterop");
44 "title" => $this->
object->getTitle(),
45 "maxattempts" => $this->
object->getNrOfTries()
47 $a_xml_writer->xmlStartTag(
"item", $attrs);
49 $a_xml_writer->xmlElement(
"qticomment", null, $this->
object->getComment());
50 $a_xml_writer->xmlStartTag(
"itemmetadata");
51 $a_xml_writer->xmlStartTag(
"qtimetadata");
52 $a_xml_writer->xmlStartTag(
"qtimetadatafield");
53 $a_xml_writer->xmlElement(
"fieldlabel", null,
"ILIAS_VERSION");
54 $a_xml_writer->xmlElement(
"fieldentry", null, $ilias->getSetting(
"ilias_version"));
55 $a_xml_writer->xmlEndTag(
"qtimetadatafield");
56 $a_xml_writer->xmlStartTag(
"qtimetadatafield");
57 $a_xml_writer->xmlElement(
"fieldlabel", null,
"QUESTIONTYPE");
58 $a_xml_writer->xmlElement(
"fieldentry", null, QuestionIdentifiers::KPRIM_CHOICE_QUESTION_IDENTIFIER);
59 $a_xml_writer->xmlEndTag(
"qtimetadatafield");
60 $a_xml_writer->xmlStartTag(
"qtimetadatafield");
61 $a_xml_writer->xmlElement(
"fieldlabel", null,
"AUTHOR");
62 $a_xml_writer->xmlElement(
"fieldentry", null, $this->
object->getAuthor());
63 $a_xml_writer->xmlEndTag(
"qtimetadatafield");
69 $a_xml_writer->xmlStartTag(
"qtimetadatafield");
70 $a_xml_writer->xmlElement(
"fieldlabel", null,
"answer_type");
71 $a_xml_writer->xmlElement(
"fieldentry", null, $this->
object->getAnswerType());
72 $a_xml_writer->xmlEndTag(
"qtimetadatafield");
74 $a_xml_writer->xmlStartTag(
"qtimetadatafield");
75 $a_xml_writer->xmlElement(
"fieldlabel", null,
"thumb_size");
76 $a_xml_writer->xmlElement(
"fieldentry", null, $this->
object->getThumbSize());
77 $a_xml_writer->xmlEndTag(
"qtimetadatafield");
79 $a_xml_writer->xmlStartTag(
"qtimetadatafield");
80 $a_xml_writer->xmlElement(
"fieldlabel", null,
"option_label_setting");
81 $a_xml_writer->xmlElement(
"fieldentry", null, $this->
object->getOptionLabel());
82 $a_xml_writer->xmlEndTag(
"qtimetadatafield");
83 $a_xml_writer->xmlStartTag(
"qtimetadatafield");
84 $a_xml_writer->xmlElement(
"fieldlabel", null,
"custom_true_option_label");
85 $a_xml_writer->xmlElement(
"fieldentry", null, $this->
object->getCustomTrueOptionLabel());
86 $a_xml_writer->xmlEndTag(
"qtimetadatafield");
87 $a_xml_writer->xmlStartTag(
"qtimetadatafield");
88 $a_xml_writer->xmlElement(
"fieldlabel", null,
"custom_false_option_label");
89 $a_xml_writer->xmlElement(
"fieldentry", null, $this->
object->getCustomFalseOptionLabel());
90 $a_xml_writer->xmlEndTag(
"qtimetadatafield");
92 $a_xml_writer->xmlStartTag(
"qtimetadatafield");
93 $a_xml_writer->xmlElement(
"fieldlabel", null,
"feedback_setting");
94 $a_xml_writer->xmlElement(
"fieldentry", null, $this->
object->getSpecificFeedbackSetting());
95 $a_xml_writer->xmlEndTag(
"qtimetadatafield");
97 $a_xml_writer->xmlEndTag(
"qtimetadata");
98 $a_xml_writer->xmlEndTag(
"itemmetadata");
102 "label" => $this->
object->getTitle()
104 $a_xml_writer->xmlStartTag(
"presentation", $attrs);
106 $a_xml_writer->xmlStartTag(
"flow");
112 "rcardinality" =>
"Multiple" 114 $a_xml_writer->xmlStartTag(
"response_lid", $attrs);
115 $solution = $this->
object->getSuggestedSolution(0);
117 if ($solution !== null) {
122 if ($this->
object->isShuffleAnswersEnabled()) {
131 $a_xml_writer->xmlStartTag(
"render_choice", $attrs);
134 $answers = $this->
object->getAnswers();
135 $akeys = array_keys($answers);
136 foreach ($akeys as $index) {
137 $answer = $this->
object->getAnswer($index);
139 $a_xml_writer->xmlStartTag(
'response_label', array(
'ident' => $answer->getPosition()));
141 $image_file = $answer->getImageFile() ??
'';
142 if ($image_file !==
'') {
143 $this->
addQTIMaterial($a_xml_writer, $answer->getAnswertext(),
false,
false);
144 $imagetype =
"image/jpeg";
145 if (preg_match(
"/.*\.(png|gif)$/", $image_file, $matches)) {
146 $imagetype =
"image/" . $matches[1];
148 if ($force_image_references) {
150 "imagtype" => $imagetype,
151 "label" => $image_file,
152 "uri" => $answer->getImageWebPath()
154 $a_xml_writer->xmlElement(
"matimage", $attrs);
156 $imagepath = $answer->getImageFsPath();
157 $fh = @fopen($imagepath,
"rb");
159 $imagefile = fread($fh, filesize($imagepath));
161 $base64 = base64_encode($imagefile);
163 "imagtype" => $imagetype,
164 "label" => $image_file,
165 "embedded" =>
"base64" 167 $a_xml_writer->xmlElement(
"matimage", $attrs, $base64,
false,
false);
170 $a_xml_writer->xmlEndTag(
"material");
174 $a_xml_writer->xmlEndTag(
"response_label");
176 $a_xml_writer->xmlEndTag(
"render_choice");
177 $a_xml_writer->xmlEndTag(
"response_lid");
178 $a_xml_writer->xmlEndTag(
"flow");
179 $a_xml_writer->xmlEndTag(
"presentation");
183 $a_xml_writer->xmlStartTag(
'resprocessing');
185 $a_xml_writer->xmlStartTag(
'outcomes');
186 $a_xml_writer->xmlElement(
'decvar', array(
187 'varname' =>
'SCORE',
'vartype' =>
'Decimal',
'defaultval' =>
'0',
190 $a_xml_writer->xmlEndTag(
'outcomes');
193 foreach ($answers as $answer) {
194 $a_xml_writer->xmlStartTag(
'respcondition', array(
'continue' =>
'Yes'));
196 $a_xml_writer->xmlStartTag(
'conditionvar');
197 $a_xml_writer->xmlElement(
'varequal', array(
'respident' => $answer->getPosition()), $answer->getCorrectness());
198 $a_xml_writer->xmlEndTag(
'conditionvar');
200 $a_xml_writer->xmlElement(
'displayfeedback', array(
201 'feedbacktype' =>
'Response',
'linkrefid' =>
"response_{$answer->getPosition()}" 204 $a_xml_writer->xmlEndTag(
'respcondition');
207 $feedback_allcorrect = $this->
object->feedbackOBJ->getGenericFeedbackExportPresentation(
212 $a_xml_writer->xmlStartTag(
'respcondition', array(
'continue' =>
'Yes'));
214 $a_xml_writer->xmlStartTag(
'conditionvar');
215 $a_xml_writer->xmlStartTag(
'and');
216 foreach ($answers as $answer) {
217 $a_xml_writer->xmlElement(
'varequal', array(
'respident' => $answer->getPosition()), $answer->getCorrectness());
219 $a_xml_writer->xmlEndTag(
'and');
220 $a_xml_writer->xmlEndTag(
'conditionvar');
222 $a_xml_writer->xmlElement(
'setvar', array(
'action' =>
'Add'), $this->
object->getPoints());
224 if (strlen($feedback_allcorrect)) {
225 $a_xml_writer->xmlElement(
'displayfeedback', array(
'feedbacktype' =>
'Response',
'linkrefid' =>
'response_allcorrect'));
228 $a_xml_writer->xmlEndTag(
'respcondition');
230 $feedback_onenotcorrect = $this->
object->feedbackOBJ->getGenericFeedbackExportPresentation(
235 $a_xml_writer->xmlStartTag(
'respcondition', array(
'continue' =>
'Yes'));
237 $a_xml_writer->xmlStartTag(
'conditionvar');
238 $a_xml_writer->xmlStartTag(
'or');
239 foreach ($answers as $answer) {
240 $a_xml_writer->xmlStartTag(
'not');
241 $a_xml_writer->xmlElement(
'varequal', array(
'respident' => $answer->getPosition()), $answer->getCorrectness());
242 $a_xml_writer->xmlEndTag(
'not');
244 $a_xml_writer->xmlEndTag(
'or');
245 $a_xml_writer->xmlEndTag(
'conditionvar');
247 $a_xml_writer->xmlElement(
'setvar', array(
'action' =>
'Add'), 0);
249 if (strlen($feedback_onenotcorrect)) {
250 $a_xml_writer->xmlElement(
'displayfeedback', array(
'feedbacktype' =>
'Response',
'linkrefid' =>
'response_onenotcorrect'));
253 $a_xml_writer->xmlEndTag(
'respcondition');
255 $a_xml_writer->xmlEndTag(
'resprocessing');
257 foreach ($answers as $answer) {
258 $a_xml_writer->xmlStartTag(
'itemfeedback', array(
'ident' =>
"response_{$answer->getPosition()}",
'view' =>
'All'));
259 $a_xml_writer->xmlStartTag(
'flow_mat');
261 $this->
addQTIMaterial($a_xml_writer, $this->
object->feedbackOBJ->getSpecificAnswerFeedbackExportPresentation(
262 $this->object->getId(),
264 $answer->getPosition()
267 $a_xml_writer->xmlEndTag(
'flow_mat');
268 $a_xml_writer->xmlEndTag(
'itemfeedback');
270 if (strlen($feedback_allcorrect)) {
271 $a_xml_writer->xmlStartTag(
'itemfeedback', array(
'ident' =>
'response_allcorrect',
'view' =>
'All'));
272 $a_xml_writer->xmlStartTag(
'flow_mat');
276 $a_xml_writer->xmlEndTag(
'flow_mat');
277 $a_xml_writer->xmlEndTag(
'itemfeedback');
279 if (strlen($feedback_onenotcorrect)) {
280 $a_xml_writer->xmlStartTag(
'itemfeedback', array(
'ident' =>
'response_onenotcorrect',
'view' =>
'All'));
281 $a_xml_writer->xmlStartTag(
'flow_mat');
285 $a_xml_writer->xmlEndTag(
'flow_mat');
286 $a_xml_writer->xmlEndTag(
'itemfeedback');
291 $a_xml_writer->xmlEndTag(
"item");
292 $a_xml_writer->xmlEndTag(
"questestinterop");
294 $a_xml_writer = $a_xml_writer->xmlDumpMem(
false);
295 if (!$a_include_header) {
296 $pos = strpos($a_xml_writer,
"?>");
297 $a_xml_writer = substr($a_xml_writer, $pos + 2);
299 return $a_xml_writer;
addSuggestedSolutionLink(ilXmlWriter $writer, assQuestionSuggestedSolution $suggested_solution)
addQTIMaterial(ilXmlWriter $a_xml_writer, string $a_material, bool $close_material_tag=true, bool $add_mobs=true)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
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...
addSolutionHints(ilXmlWriter $writer)