ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
assLongMenuExport Class Reference
+ Inheritance diagram for assLongMenuExport:
+ Collaboration diagram for assLongMenuExport:

Public Member Functions

 toXML ($a_include_header=true, $a_include_binary=true, $a_shuffle=false, $test_output=false, $force_image_references=false)
 Returns a QTI xml representation of the question. More...
 
- Public Member Functions inherited from assQuestionExport
 __construct ($a_object)
 assQuestionExport constructor More...
 
 exportFeedbackOnly ($a_xml_writer)
 
 toXML ($a_include_header=true, $a_include_binary=true, $a_shuffle=false, $test_output=false, $force_image_references=false)
 Returns a QTI xml representation of the question. More...
 

Data Fields

 $object
 
- Data Fields inherited from assQuestionExport
 $object
 

Additional Inherited Members

- Protected Member Functions inherited from assQuestionExport
 addAnswerSpecificFeedback (ilXmlWriter $a_xml_writer, $answers)
 
 addGenericFeedback (ilXmlWriter $a_xml_writer)
 
 addQtiMetaDataField (ilXmlWriter $a_xml_writer, $fieldLabel, $fieldValue)
 adds a qti meta data field with given name and value to the passed xml writer (xml writer must be in context of opened "qtimetadata" tag) More...
 
 addAdditionalContentEditingModeInformation (ilXmlWriter $a_xml_writer)
 adds a qti meta data field for ilias specific information of "additional content editing mode" (xml writer must be in context of opened "qtimetadata" tag) More...
 
 addGeneralMetadata (ilXmlWriter $xmlwriter)
 

Detailed Description

Definition at line 3 of file class.assLongMenuExport.php.

Member Function Documentation

◆ toXML()

assLongMenuExport::toXML (   $a_include_header = true,
  $a_include_binary = true,
  $a_shuffle = false,
  $test_output = false,
  $force_image_references = false 
)

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

Returns
string The QTI xml representation of the question @access public

Reimplemented from assQuestionExport.

Definition at line 10 of file class.assLongMenuExport.php.

11 {
12 global $ilias;
13
14 $correct_answers = $this->object->getCorrectAnswers();
15 $answers = $this->object->getAnswers();
16
17 include_once("./Services/Xml/classes/class.ilXmlWriter.php");
18 $xml = new ilXmlWriter;
19 // set xml header
20 $xml->xmlHeader();
21 $xml->xmlStartTag("questestinterop");
22 // add question description
23 $attrs = array(
24 "ident" => "il_" . IL_INST_ID . "_qst_" . $this->object->getId(),
25 "title" => $this->object->getTitle(),
26 "maxattempts" => $this->object->getNrOfTries()
27 );
28 $xml->xmlStartTag("item", $attrs);
29 $xml->xmlElement("qticomment", null, $this->object->getComment());
30 // add estimated working time
31 $workingtime = $this->object->getEstimatedWorkingTime();
32 $duration = sprintf("P0Y0M0DT%dH%dM%dS", $workingtime["h"], $workingtime["m"], $workingtime["s"]);
33 $xml->xmlElement("duration", null, $duration);
34 // add ILIAS specific metadata
35 $xml->xmlStartTag("itemmetadata");
36 $xml->xmlStartTag("qtimetadata");
37 $xml->xmlStartTag("qtimetadatafield");
38 $xml->xmlElement("fieldlabel", null, "ILIAS_VERSION");
39 $xml->xmlElement("fieldentry", null, $ilias->getSetting("ilias_version"));
40 $xml->xmlEndTag("qtimetadatafield");
41 $xml->xmlStartTag("qtimetadatafield");
42 $xml->xmlElement("fieldlabel", null, "QUESTIONTYPE");
43 $xml->xmlElement("fieldentry", null, LONG_MENU_QUESTION_IDENTIFIER);
44 $xml->xmlEndTag("qtimetadatafield");
45 $xml->xmlStartTag("qtimetadatafield");
46 $xml->xmlElement("fieldlabel", null, "AUTHOR");
47 $xml->xmlElement("fieldentry", null, $this->object->getAuthor());
48 $xml->xmlEndTag("qtimetadatafield");
49
50 $xml->xmlStartTag("qtimetadatafield");
51 $xml->xmlElement("fieldlabel", null, "minAutoCompleteLength");
52 $xml->xmlElement("fieldentry", null, $this->object->getMinAutoComplete());
53 $xml->xmlEndTag("qtimetadatafield");
54
55 $xml->xmlStartTag("qtimetadatafield");
56 $xml->xmlElement("fieldlabel", null, "gapTypes");
57 $gap_types = array();
58 if (is_array($correct_answers)) {
59 foreach ($correct_answers as $key => $value) {
60 $gap_types[] = $value[2];
61 }
62 }
63 $xml->xmlElement("fieldentry", null, json_encode($gap_types));
64 $xml->xmlEndTag("qtimetadatafield");
65
66 // additional content editing information
69
70 $xml->xmlStartTag("qtimetadatafield");
71 $xml->xmlElement("fieldlabel", null, "feedback_setting");
72 $xml->xmlElement("fieldentry", null, $this->object->getSpecificFeedbackSetting());
73 $xml->xmlEndTag("qtimetadatafield");
74
75 $xml->xmlEndTag("qtimetadata");
76 $xml->xmlEndTag("itemmetadata");
77 $xml->xmlStartTag("presentation");
78 // add flow to presentation
79 $xml->xmlStartTag("flow");
80
81
82 $this->object->addQTIMaterial($xml, $this->object->getQuestion());
83 $this->object->addQTIMaterial($xml, $this->object->getLongMenuTextValue());
84
85 foreach ($answers as $key => $values) {
86 $real_id = $key +1;
87 $attrs = array(
88 "ident" => "LongMenu_" . $real_id,
89 "rcardinality" => "Single"
90 );
91 $xml->xmlStartTag("response_str", $attrs);
92 foreach ($values as $index => $value) {
93 $xml->xmlStartTag("response_label", array('ident' => $index));
94 $xml->xmlStartTag("material");
95 $xml->xmlElement("fieldentry", null, $value);
96 $xml->xmlEndTag("material");
97 $xml->xmlEndTag("response_label");
98 }
99 $xml->xmlEndTag("response_str");
100 }
101 $xml->xmlEndTag("flow");
102 $xml->xmlEndTag("presentation");
103
104 $xml->xmlStartTag("resprocessing");
105 $xml->xmlStartTag("outcomes");
106 $xml->xmlElement("decvar");
107 $xml->xmlEndTag("outcomes");
108 foreach ($answers as $key => $values) {
109 $real_id = $key + 1;
110 foreach ($values as $index => $value) {
111 $xml->xmlStartTag("respcondition", array('continue' => 'Yes'));
112 $xml->xmlStartTag("conditionvar");
113 $xml->xmlElement("varequal", array('respident' => "LongMenu_" . $real_id), $value);
114 $xml->xmlEndTag("conditionvar");
115
116 if (in_array($value, $correct_answers[$key][0])) {
117 $xml->xmlElement("setvar", array('action' => "Add"), $correct_answers[$key][1]);
118 } else {
119 $xml->xmlElement("setvar", array('action' => "Add"), 0);
120 }
121 $xml->xmlElement("displayfeedback", array('feedbacktype' => "Response", 'linkrefid' => $key . '_Response_' . $index));
122 $xml->xmlEndTag("respcondition");
123 }
124 }
125 $feedback_allcorrect = $this->object->feedbackOBJ->getGenericFeedbackExportPresentation(
126 $this->object->getId(),
127 true
128 );
129 if (strlen($feedback_allcorrect) > 0) {
130 $xml->xmlStartTag("respcondition", array('continue' => 'Yes'));
131 $xml->xmlStartTag("conditionvar");
132 foreach ($correct_answers as $key => $values) {
133 $real_id = $key + 1;
134 if ($key > 0) {
135 $xml->xmlStartTag("and");
136 }
137
138 foreach ($values[0] as $index => $value) {
139 if ($index > 0) {
140 $xml->xmlStartTag("or");
141 }
142 $xml->xmlElement("varequal", array('respident' => "LongMenu_" . $real_id), $value);
143 if ($index > 0) {
144 $xml->xmlEndTag("or");
145 }
146 }
147 if ($key > 0) {
148 $xml->xmlEndTag("and");
149 }
150 }
151 $xml->xmlEndTag("conditionvar");
152 $xml->xmlElement("displayfeedback", array('feedbacktype' => "Response", 'linkrefid' => 'response_allcorrect'));
153 $xml->xmlEndTag("respcondition");
154 }
155
156 $feedback_onenotcorrect = $this->object->feedbackOBJ->getGenericFeedbackExportPresentation(
157 $this->object->getId(),
158 false
159 );
160 if (strlen($feedback_onenotcorrect)) {
161 $xml->xmlStartTag("respcondition", array('continue' => 'Yes'));
162 $xml->xmlStartTag("conditionvar");
163 $xml->xmlStartTag("not");
164 foreach ($correct_answers as $key => $values) {
165 $real_id = $key + 1;
166 if ($key > 0) {
167 $xml->xmlStartTag("and");
168 }
169
170 foreach ($values[0] as $index => $value) {
171 if ($index > 0) {
172 $xml->xmlStartTag("or");
173 }
174 $xml->xmlElement("varequal", array('respident' => "LongMenu_" . $real_id), $value);
175 if ($index > 0) {
176 $xml->xmlEndTag("or");
177 }
178 }
179 if ($key > 0) {
180 $xml->xmlEndTag("and");
181 }
182 }
183 $xml->xmlEndTag("not");
184 $xml->xmlEndTag("conditionvar");
185 $xml->xmlElement("displayfeedback", array('feedbacktype' => "Response", 'linkrefid' => 'response_onenotcorrect'));
186 $xml->xmlEndTag("respcondition");
187 }
188
189 $xml->xmlEndTag("resprocessing");
190
191
192
193
194 for ($i = 0; $i < sizeof($correct_answers); $i++) {
195 $attrs = array(
196 "ident" => $i,
197 "view" => "All"
198 );
199 $xml->xmlStartTag("itemfeedback", $attrs);
200 // qti flow_mat
201 $xml->xmlStartTag("flow_mat");
202 $fb = $this->object->feedbackOBJ->getSpecificAnswerFeedbackExportPresentation(
203 $this->object->getId(),
204 $i
205 );
206 $this->object->addQTIMaterial($xml, $fb);
207 $xml->xmlEndTag("flow_mat");
208 $xml->xmlEndTag("itemfeedback");
209 }
210
211 if (strlen($feedback_allcorrect) > 0) {
212 $xml->xmlStartTag("itemfeedback", array('ident' => 'response_allcorrect','view' => 'All'));
213 $xml->xmlStartTag("flow_mat");
214 $xml->xmlStartTag("material");
215 $xml->xmlElement("mattext", array('texttype' => 'text/xhtml'), $feedback_allcorrect);
216 $xml->xmlEndTag("material");
217 $xml->xmlEndTag("flow_mat");
218 $xml->xmlEndTag("itemfeedback");
219 }
220 if (strlen($feedback_onenotcorrect) > 0) {
221 $xml->xmlStartTag("itemfeedback", array('ident' => 'response_onenotcorrect', 'view' => 'All'));
222 $xml->xmlStartTag("flow_mat");
223 $xml->xmlStartTag("material");
224 $xml->xmlElement("mattext", array('texttype' => 'text/xhtml'), $feedback_onenotcorrect);
225 $xml->xmlEndTag("material");
226 $xml->xmlEndTag("flow_mat");
227 $xml->xmlEndTag("itemfeedback");
228 }
229
230 $xml->xmlEndTag("item");
231 $xml->xmlEndTag("questestinterop");
232
233 $xml = $xml->xmlDumpMem(false);
234 if (!$a_include_header) {
235 $pos = strpos($xml, "?>");
236 $xml = substr($xml, $pos + 2);
237 }
238 return $xml;
239 }
sprintf('%.4f', $callTime)
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...
XML writer class.
$key
Definition: croninfo.php:18
$i
Definition: disco.tpl.php:19
const LONG_MENU_QUESTION_IDENTIFIER
$index
Definition: metadata.php:60
$xml
Definition: metadata.php:240

References $i, $index, $key, $xml, assQuestionExport\addAdditionalContentEditingModeInformation(), assQuestionExport\addGeneralMetadata(), LONG_MENU_QUESTION_IDENTIFIER, and sprintf.

+ Here is the call graph for this function:

Field Documentation

◆ $object

assLongMenuExport::$object

Definition at line 8 of file class.assLongMenuExport.php.


The documentation for this class was generated from the following file: