36 $ilias = $DIC[
'ilias'];
38 include_once(
"./Services/Xml/classes/class.ilXmlWriter.php");
42 $xml->xmlStartTag(
"questestinterop");
45 "title" => $this->
object->getTitle(),
46 "maxattempts" => $this->
object->getNrOfTries()
48 $xml->xmlStartTag(
"item", $attrs);
50 $xml->xmlElement(
"qticomment", null, $this->
object->getComment());
51 $xml->xmlStartTag(
"itemmetadata");
52 $xml->xmlStartTag(
"qtimetadata");
53 $xml->xmlStartTag(
"qtimetadatafield");
54 $xml->xmlElement(
"fieldlabel", null,
"ILIAS_VERSION");
55 $xml->xmlElement(
"fieldentry", null, $ilias->getSetting(
"ilias_version"));
56 $xml->xmlEndTag(
"qtimetadatafield");
57 $xml->xmlStartTag(
"qtimetadatafield");
58 $xml->xmlElement(
"fieldlabel", null,
"QUESTIONTYPE");
60 $xml->xmlEndTag(
"qtimetadatafield");
61 $xml->xmlStartTag(
"qtimetadatafield");
62 $xml->xmlElement(
"fieldlabel", null,
"AUTHOR");
63 $xml->xmlElement(
"fieldentry", null, $this->
object->getAuthor());
64 $xml->xmlEndTag(
"qtimetadatafield");
70 $xml->xmlStartTag(
"qtimetadatafield");
71 $xml->xmlElement(
"fieldlabel", null,
"answer_type");
72 $xml->xmlElement(
"fieldentry", null, $this->
object->getAnswerType());
73 $xml->xmlEndTag(
"qtimetadatafield");
75 $xml->xmlStartTag(
"qtimetadatafield");
76 $xml->xmlElement(
"fieldlabel", null,
"thumb_size");
77 $xml->xmlElement(
"fieldentry", null, $this->
object->getThumbSize());
78 $xml->xmlEndTag(
"qtimetadatafield");
80 $xml->xmlStartTag(
"qtimetadatafield");
81 $xml->xmlElement(
"fieldlabel", null,
"option_label_setting");
82 $xml->xmlElement(
"fieldentry", null, $this->
object->getOptionLabel());
83 $xml->xmlEndTag(
"qtimetadatafield");
84 $xml->xmlStartTag(
"qtimetadatafield");
85 $xml->xmlElement(
"fieldlabel", null,
"custom_true_option_label");
86 $xml->xmlElement(
"fieldentry", null, $this->
object->getCustomTrueOptionLabel());
87 $xml->xmlEndTag(
"qtimetadatafield");
88 $xml->xmlStartTag(
"qtimetadatafield");
89 $xml->xmlElement(
"fieldlabel", null,
"custom_false_option_label");
90 $xml->xmlElement(
"fieldentry", null, $this->
object->getCustomFalseOptionLabel());
91 $xml->xmlEndTag(
"qtimetadatafield");
93 $xml->xmlStartTag(
"qtimetadatafield");
94 $xml->xmlElement(
"fieldlabel", null,
"feedback_setting");
95 $xml->xmlElement(
"fieldentry", null, $this->
object->getSpecificFeedbackSetting());
96 $xml->xmlEndTag(
"qtimetadatafield");
98 $xml->xmlEndTag(
"qtimetadata");
99 $xml->xmlEndTag(
"itemmetadata");
103 "label" => $this->
object->getTitle()
105 $xml->xmlStartTag(
"presentation", $attrs);
107 $xml->xmlStartTag(
"flow");
109 $this->
object->addQTIMaterial(
$xml, $this->
object->getQuestion());
113 "rcardinality" =>
"Multiple" 115 $xml->xmlStartTag(
"response_lid", $attrs);
116 $solution = $this->
object->getSuggestedSolution(0);
117 if (count($solution)) {
118 if (preg_match(
"/il_(\d*?)_(\w+)_(\d+)/", $solution[
"internal_link"], $matches)) {
119 $xml->xmlStartTag(
"material");
120 $intlink =
"il_" .
IL_INST_ID .
"_" . $matches[2] .
"_" . $matches[3];
121 if (strcmp($matches[1],
"") != 0) {
122 $intlink = $solution[
"internal_link"];
125 "label" =>
"suggested_solution" 127 $xml->xmlElement(
"mattext", $attrs, $intlink);
128 $xml->xmlEndTag(
"material");
133 if ($this->
object->isShuffleAnswersEnabled()) {
142 $xml->xmlStartTag(
"render_choice", $attrs);
145 $answers = $this->
object->getAnswers();
146 $akeys = array_keys($answers);
147 foreach ($akeys as
$index) {
148 $answer = $this->
object->getAnswer($index);
150 $xml->xmlStartTag(
'response_label', array(
'ident' => $answer->getPosition()));
152 if (strlen($answer->getImageFile())) {
153 $this->
object->addQTIMaterial(
$xml, $answer->getAnswertext(),
false,
false);
154 $imagetype =
"image/jpeg";
155 if (preg_match(
"/.*\.(png|gif)$/", $answer->getImageFile(), $matches)) {
156 $imagetype =
"image/" . $matches[1];
158 if ($force_image_references) {
160 "imagtype" => $imagetype,
161 "label" => $answer->getImageFile(),
162 "uri" => $answer->getImageWebPath()
164 $xml->xmlElement(
"matimage", $attrs);
166 $imagepath = $answer->getImageFsPath();
167 $fh = @fopen($imagepath,
"rb");
169 $imagefile = fread($fh, filesize($imagepath));
171 $base64 = base64_encode($imagefile);
173 "imagtype" => $imagetype,
174 "label" => $answer->getImageFile(),
175 "embedded" =>
"base64" 177 $xml->xmlElement(
"matimage", $attrs, $base64,
false,
false);
180 $xml->xmlEndTag(
"material");
182 $this->
object->addQTIMaterial(
$xml, $answer->getAnswertext());
184 $xml->xmlEndTag(
"response_label");
186 $xml->xmlEndTag(
"render_choice");
187 $xml->xmlEndTag(
"response_lid");
188 $xml->xmlEndTag(
"flow");
189 $xml->xmlEndTag(
"presentation");
193 $xml->xmlStartTag(
'resprocessing');
195 $xml->xmlStartTag(
'outcomes');
196 $xml->xmlElement(
'decvar', array(
197 'varname' =>
'SCORE',
'vartype' =>
'Decimal',
'defaultval' =>
'0',
200 $xml->xmlEndTag(
'outcomes');
203 foreach ($answers as $answer) {
204 $xml->xmlStartTag(
'respcondition', array(
'continue' =>
'Yes'));
206 $xml->xmlStartTag(
'conditionvar');
207 $xml->xmlElement(
'varequal', array(
'respident' => $answer->getPosition()), $answer->getCorrectness());
208 $xml->xmlEndTag(
'conditionvar');
210 $xml->xmlElement(
'displayfeedback', array(
211 'feedbacktype' =>
'Response',
'linkrefid' =>
"response_{$answer->getPosition()}" 214 $xml->xmlEndTag(
'respcondition');
217 $feedback_allcorrect = $this->
object->feedbackOBJ->getGenericFeedbackExportPresentation(
222 $xml->xmlStartTag(
'respcondition', array(
'continue' =>
'Yes'));
224 $xml->xmlStartTag(
'conditionvar');
225 $xml->xmlStartTag(
'and');
226 foreach ($answers as $answer) {
227 $xml->xmlElement(
'varequal', array(
'respident' => $answer->getPosition()), $answer->getCorrectness());
229 $xml->xmlEndTag(
'and');
230 $xml->xmlEndTag(
'conditionvar');
232 $xml->xmlElement(
'setvar', array(
'action' =>
'Add'), $this->
object->getPoints());
234 if (strlen($feedback_allcorrect)) {
235 $xml->xmlElement(
'displayfeedback', array(
'feedbacktype' =>
'Response',
'linkrefid' =>
'response_allcorrect'));
238 $xml->xmlEndTag(
'respcondition');
240 $feedback_onenotcorrect = $this->
object->feedbackOBJ->getGenericFeedbackExportPresentation(
245 $xml->xmlStartTag(
'respcondition', array(
'continue' =>
'Yes'));
247 $xml->xmlStartTag(
'conditionvar');
248 $xml->xmlStartTag(
'or');
249 foreach ($answers as $answer) {
250 $xml->xmlStartTag(
'not');
251 $xml->xmlElement(
'varequal', array(
'respident' => $answer->getPosition()), $answer->getCorrectness());
252 $xml->xmlEndTag(
'not');
254 $xml->xmlEndTag(
'or');
255 $xml->xmlEndTag(
'conditionvar');
257 $xml->xmlElement(
'setvar', array(
'action' =>
'Add'), 0);
259 if (strlen($feedback_onenotcorrect)) {
260 $xml->xmlElement(
'displayfeedback', array(
'feedbacktype' =>
'Response',
'linkrefid' =>
'response_onenotcorrect'));
263 $xml->xmlEndTag(
'respcondition');
265 $xml->xmlEndTag(
'resprocessing');
267 foreach ($answers as $answer) {
268 $xml->xmlStartTag(
'itemfeedback', array(
'ident' =>
"response_{$answer->getPosition()}",
'view' =>
'All'));
269 $xml->xmlStartTag(
'flow_mat');
271 $this->
object->addQTIMaterial(
$xml, $this->
object->feedbackOBJ->getSpecificAnswerFeedbackExportPresentation(
272 $this->object->getId(),
274 $answer->getPosition()
277 $xml->xmlEndTag(
'flow_mat');
278 $xml->xmlEndTag(
'itemfeedback');
280 if (strlen($feedback_allcorrect)) {
281 $xml->xmlStartTag(
'itemfeedback', array(
'ident' =>
'response_allcorrect',
'view' =>
'All'));
282 $xml->xmlStartTag(
'flow_mat');
284 $this->
object->addQTIMaterial(
$xml, $feedback_allcorrect);
286 $xml->xmlEndTag(
'flow_mat');
287 $xml->xmlEndTag(
'itemfeedback');
289 if (strlen($feedback_onenotcorrect)) {
290 $xml->xmlStartTag(
'itemfeedback', array(
'ident' =>
'response_onenotcorrect',
'view' =>
'All'));
291 $xml->xmlStartTag(
'flow_mat');
293 $this->
object->addQTIMaterial(
$xml, $feedback_onenotcorrect);
295 $xml->xmlEndTag(
'flow_mat');
296 $xml->xmlEndTag(
'itemfeedback');
301 $xml->xmlEndTag(
"item");
302 $xml->xmlEndTag(
"questestinterop");
305 if (!$a_include_header) {
306 $pos = strpos(
$xml,
"?>");
const KPRIM_CHOICE_QUESTION_IDENTIFIER
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)