26 public function toXML($a_include_header =
true, $a_include_binary =
true, $a_shuffle =
false, $test_output =
false, $force_image_references =
false): string
29 $ilias = $DIC[
'ilias'];
31 $correct_answers = $this->
object->getCorrectAnswers();
32 $answers = $this->
object->getAnswers();
37 $xml->xmlStartTag(
"questestinterop");
40 "ident" =>
"il_" .
IL_INST_ID .
"_qst_" . $this->
object->getId(),
41 "title" => $this->
object->getTitle(),
42 "maxattempts" => $this->
object->getNrOfTries()
44 $xml->xmlStartTag(
"item", $attrs);
46 $xml->xmlElement(
"qticomment",
null, $this->
object->getComment());
47 $xml->xmlStartTag(
"itemmetadata");
48 $xml->xmlStartTag(
"qtimetadata");
49 $xml->xmlStartTag(
"qtimetadatafield");
50 $xml->xmlElement(
"fieldlabel",
null,
"ILIAS_VERSION");
51 $xml->xmlElement(
"fieldentry",
null, $ilias->getSetting(
"ilias_version"));
52 $xml->xmlEndTag(
"qtimetadatafield");
53 $xml->xmlStartTag(
"qtimetadatafield");
54 $xml->xmlElement(
"fieldlabel",
null,
"QUESTIONTYPE");
55 $xml->xmlElement(
"fieldentry",
null, $this->
object->getQuestionType());
56 $xml->xmlEndTag(
"qtimetadatafield");
57 $xml->xmlStartTag(
"qtimetadatafield");
58 $xml->xmlElement(
"fieldlabel",
null,
"AUTHOR");
59 $xml->xmlElement(
"fieldentry",
null, $this->
object->getAuthor());
60 $xml->xmlEndTag(
"qtimetadatafield");
62 $xml->xmlStartTag(
"qtimetadatafield");
63 $xml->xmlElement(
"fieldlabel",
null,
"minAutoCompleteLength");
64 $xml->xmlElement(
"fieldentry",
null, $this->
object->getMinAutoComplete());
65 $xml->xmlEndTag(
"qtimetadatafield");
66 $xml->xmlStartTag(
"qtimetadatafield");
67 $xml->xmlElement(
"fieldlabel",
null,
"identical_scoring");
68 $xml->xmlElement(
"fieldentry",
null, $this->
object->getIdenticalScoring());
69 $xml->xmlEndTag(
"qtimetadatafield");
71 $xml->xmlStartTag(
"qtimetadatafield");
72 $xml->xmlElement(
"fieldlabel",
null,
"gapTypes");
74 if (is_array($correct_answers)) {
75 foreach ($correct_answers as $key => $value) {
76 $gap_types[] = $value[2];
79 $xml->xmlElement(
"fieldentry",
null, json_encode($gap_types));
80 $xml->xmlEndTag(
"qtimetadatafield");
86 $xml->xmlStartTag(
"qtimetadatafield");
87 $xml->xmlElement(
"fieldlabel",
null,
"feedback_setting");
88 $xml->xmlElement(
"fieldentry",
null, $this->
object->getSpecificFeedbackSetting());
89 $xml->xmlEndTag(
"qtimetadatafield");
91 $xml->xmlEndTag(
"qtimetadata");
92 $xml->xmlEndTag(
"itemmetadata");
93 $xml->xmlStartTag(
"presentation");
95 $xml->xmlStartTag(
"flow");
101 foreach ($answers as $key => $values) {
104 "ident" =>
"LongMenu_" . $real_id,
105 "rcardinality" =>
"Single" 107 $xml->xmlStartTag(
"response_str", $attrs);
108 foreach ($values as $index => $value) {
109 $xml->xmlStartTag(
"response_label", [
'ident' => $index]);
110 $xml->xmlStartTag(
"material");
111 $xml->xmlElement(
"fieldentry",
null, $value);
112 $xml->xmlEndTag(
"material");
113 $xml->xmlEndTag(
"response_label");
115 $xml->xmlEndTag(
"response_str");
117 $xml->xmlEndTag(
"flow");
119 $xml->xmlEndTag(
"presentation");
121 $xml->xmlStartTag(
"resprocessing");
122 $xml->xmlStartTag(
"outcomes");
123 $xml->xmlElement(
"decvar");
124 $xml->xmlEndTag(
"outcomes");
125 foreach ($answers as $key => $values) {
127 foreach ($values as $index => $value) {
128 $xml->xmlStartTag(
"respcondition", [
'continue' =>
'Yes']);
129 $xml->xmlStartTag(
"conditionvar");
130 $xml->xmlElement(
"varequal", [
'respident' =>
"LongMenu_" . $real_id], $value);
131 $xml->xmlEndTag(
"conditionvar");
133 if (in_array($value, $correct_answers[$key][0])) {
134 $xml->xmlElement(
"setvar", [
'action' =>
"Add"], $correct_answers[$key][1]);
136 $xml->xmlElement(
"setvar", [
'action' =>
"Add"], 0);
138 $xml->xmlElement(
"displayfeedback", [
'feedbacktype' =>
"Response",
'linkrefid' => $key .
'_Response_' . $index]);
139 $xml->xmlEndTag(
"respcondition");
142 $feedback_allcorrect = $this->
object->feedbackOBJ->getGenericFeedbackExportPresentation(
146 if (strlen($feedback_allcorrect) > 0) {
147 $xml->xmlStartTag(
"respcondition", [
'continue' =>
'Yes']);
148 $xml->xmlStartTag(
"conditionvar");
149 foreach ($correct_answers as $key => $values) {
152 $xml->xmlStartTag(
"and");
155 foreach ($values[0] as $index => $value) {
157 $xml->xmlStartTag(
"or");
159 $xml->xmlElement(
"varequal", [
'respident' =>
"LongMenu_" . $real_id], $value);
161 $xml->xmlEndTag(
"or");
165 $xml->xmlEndTag(
"and");
168 $xml->xmlEndTag(
"conditionvar");
169 $xml->xmlElement(
"displayfeedback", [
'feedbacktype' =>
"Response",
'linkrefid' =>
'response_allcorrect']);
170 $xml->xmlEndTag(
"respcondition");
173 $feedback_onenotcorrect = $this->
object->feedbackOBJ->getGenericFeedbackExportPresentation(
177 if (strlen($feedback_onenotcorrect)) {
178 $xml->xmlStartTag(
"respcondition", [
'continue' =>
'Yes']);
179 $xml->xmlStartTag(
"conditionvar");
180 $xml->xmlStartTag(
"not");
181 foreach ($correct_answers as $key => $values) {
184 $xml->xmlStartTag(
"and");
187 foreach ($values[0] as $index => $value) {
189 $xml->xmlStartTag(
"or");
191 $xml->xmlElement(
"varequal", [
'respident' =>
"LongMenu_" . $real_id], $value);
193 $xml->xmlEndTag(
"or");
197 $xml->xmlEndTag(
"and");
200 $xml->xmlEndTag(
"not");
201 $xml->xmlEndTag(
"conditionvar");
202 $xml->xmlElement(
"displayfeedback", [
'feedbacktype' =>
"Response",
'linkrefid' =>
'response_onenotcorrect']);
203 $xml->xmlEndTag(
"respcondition");
206 $xml->xmlEndTag(
"resprocessing");
211 for ($i = 0; $i <
sizeof($correct_answers); $i++) {
216 $xml->xmlStartTag(
"itemfeedback", $attrs);
218 $xml->xmlStartTag(
"flow_mat");
219 $fb = $this->
object->feedbackOBJ->getSpecificAnswerFeedbackExportPresentation(
225 $xml->xmlEndTag(
"flow_mat");
226 $xml->xmlEndTag(
"itemfeedback");
229 if (strlen($feedback_allcorrect) > 0) {
230 $xml->xmlStartTag(
"itemfeedback", [
'ident' =>
'response_allcorrect',
'view' =>
'All']);
231 $xml->xmlStartTag(
"flow_mat");
232 $xml->xmlStartTag(
"material");
233 $xml->xmlElement(
"mattext", [
'texttype' =>
'text/xhtml'], $feedback_allcorrect);
234 $xml->xmlEndTag(
"material");
235 $xml->xmlEndTag(
"flow_mat");
236 $xml->xmlEndTag(
"itemfeedback");
238 if (strlen($feedback_onenotcorrect) > 0) {
239 $xml->xmlStartTag(
"itemfeedback", [
'ident' =>
'response_onenotcorrect',
'view' =>
'All']);
240 $xml->xmlStartTag(
"flow_mat");
241 $xml->xmlStartTag(
"material");
242 $xml->xmlElement(
"mattext", [
'texttype' =>
'text/xhtml'], $feedback_onenotcorrect);
243 $xml->xmlEndTag(
"material");
244 $xml->xmlEndTag(
"flow_mat");
245 $xml->xmlEndTag(
"itemfeedback");
248 $xml->xmlEndTag(
"item");
249 $xml->xmlEndTag(
"questestinterop");
251 $xml = $xml->xmlDumpMem(
false);
252 if (!$a_include_header) {
253 $pos = strpos($xml,
"?>");
254 $xml = substr($xml, $pos + 2);
addQTIMaterial(ilXmlWriter $a_xml_writer, string $a_material, bool $close_material_tag=true, bool $add_mobs=true)
Class for question exports.
addGeneralMetadata(ilXmlWriter $xmlwriter)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
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)