ILIAS  release_8 Revision v8.19
All Data Structures Namespaces Files Functions Variables Modules Pages
assTextQuestionExport Class Reference

This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V. More...

+ Inheritance diagram for assTextQuestionExport:
+ Collaboration diagram for assTextQuestionExport:

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 Returns a QTI xml representation of the question and sets the internal domxml variable with the DOM XML representation of the QTI xml representation. 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 Returns a QTI xml representation of the question and sets the internal domxml variable with the DOM XML representation of the QTI xml representation. More...
 

Data Fields

 $object
 
- Data Fields inherited from assQuestionExport
 $object
 
const ITEM_SOLUTIONHINT = 'solutionhint'
 

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)
 
 addSolutionHints (ilXmlWriter $writer)
 

Detailed Description

This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V.

ILIAS is licensed with the GPL-3.0, see https://www.gnu.org/licenses/gpl-3.0.en.html You should have received a copy of said license along with the source code, too.

If this is not the case or you just want to try ILIAS, you'll find us at: https://www.ilias.de https://github.com/ILIAS-eLearning Class for essay question exports

assTextQuestionExport is a class for essay question exports

Author
Helmut Schottmüller helmu.nosp@m.t.sc.nosp@m.hottm.nosp@m.uell.nosp@m.er@ma.nosp@m.c.co.nosp@m.m
Version
$Id$

Definition at line 27 of file class.assTextQuestionExport.php.

Member Function Documentation

◆ toXML()

assTextQuestionExport::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.

Definition at line 39 of file class.assTextQuestionExport.php.

References $DIC, $xml, assQuestionExport\addAdditionalContentEditingModeInformation(), assQuestionExport\addAnswerSpecificFeedback(), assQuestionExport\addGeneralMetadata(), assQuestionExport\addQtiMetaDataField(), assQuestionExport\addSolutionHints(), IL_INST_ID, ILIAS\Repository\object(), and TEXT_QUESTION_IDENTIFIER.

39  : string
40  {
41  global $DIC;
42  $ilias = $DIC['ilias'];
43 
44  include_once("./Services/Xml/classes/class.ilXmlWriter.php");
45  $a_xml_writer = new ilXmlWriter();
46  // set xml header
47  $a_xml_writer->xmlHeader();
48  $a_xml_writer->xmlStartTag("questestinterop");
49  $attrs = array(
50  "ident" => "il_" . IL_INST_ID . "_qst_" . $this->object->getId(),
51  "title" => $this->object->getTitle(),
52  "maxattempts" => $this->object->getNrOfTries()
53  );
54  $a_xml_writer->xmlStartTag("item", $attrs);
55  // add question description
56  $a_xml_writer->xmlElement("qticomment", null, $this->object->getComment());
57  $a_xml_writer->xmlStartTag("itemmetadata");
58  $a_xml_writer->xmlStartTag("qtimetadata");
59  $a_xml_writer->xmlStartTag("qtimetadatafield");
60  $a_xml_writer->xmlElement("fieldlabel", null, "ILIAS_VERSION");
61  $a_xml_writer->xmlElement("fieldentry", null, $ilias->getSetting("ilias_version"));
62  $a_xml_writer->xmlEndTag("qtimetadatafield");
63  $a_xml_writer->xmlStartTag("qtimetadatafield");
64  $a_xml_writer->xmlElement("fieldlabel", null, "QUESTIONTYPE");
65  $a_xml_writer->xmlElement("fieldentry", null, TEXT_QUESTION_IDENTIFIER);
66  $a_xml_writer->xmlEndTag("qtimetadatafield");
67  $a_xml_writer->xmlStartTag("qtimetadatafield");
68  $a_xml_writer->xmlElement("fieldlabel", null, "AUTHOR");
69  $a_xml_writer->xmlElement("fieldentry", null, $this->object->getAuthor());
70  $a_xml_writer->xmlEndTag("qtimetadatafield");
71 
72  // additional content editing information
73  $this->addAdditionalContentEditingModeInformation($a_xml_writer);
74  $this->addGeneralMetadata($a_xml_writer);
75 
76  $this->addQtiMetaDataField($a_xml_writer, 'wordcounter', (int) $this->object->isWordCounterEnabled());
77 
78  $a_xml_writer->xmlStartTag("qtimetadatafield");
79  $a_xml_writer->xmlElement("fieldlabel", null, "textrating");
80  $a_xml_writer->xmlElement("fieldentry", null, $this->object->getTextRating());
81  $a_xml_writer->xmlEndTag("qtimetadatafield");
82 
83  /*
84  $a_xml_writer->xmlStartTag("qtimetadatafield");
85  $a_xml_writer->xmlElement("fieldlabel", NULL, "keywords");
86  $a_xml_writer->xmlElement("fieldentry", NULL, $this->object->getKeywords());
87  $a_xml_writer->xmlEndTag("qtimetadatafield");
88  */
89 
90  $a_xml_writer->xmlStartTag("qtimetadatafield");
91  $a_xml_writer->xmlElement("fieldlabel", null, "matchcondition");
92  $a_xml_writer->xmlElement("fieldentry", null, $this->object->getMatchcondition());
93  $a_xml_writer->xmlEndTag("qtimetadatafield");
94 
95  $a_xml_writer->xmlStartTag("qtimetadatafield");
96  $a_xml_writer->xmlElement("fieldlabel", null, "termscoring");
97  $scores = base64_encode(serialize($this->object->getAnswers()));
98  $a_xml_writer->xmlElement("fieldentry", null, $scores);
99  $a_xml_writer->xmlEndTag("qtimetadatafield");
100 
101  $a_xml_writer->xmlStartTag("qtimetadatafield");
102  $a_xml_writer->xmlElement("fieldlabel", null, "termrelation");
103  $a_xml_writer->xmlElement("fieldentry", null, $this->object->getKeywordRelation());
104  $a_xml_writer->xmlEndTag("qtimetadatafield");
105 
106  $a_xml_writer->xmlStartTag("qtimetadatafield");
107  $a_xml_writer->xmlElement("fieldlabel", null, "specificfeedback");
108  $a_xml_writer->xmlElement("fieldentry", null, $this->object->getKeywordRelation());
109  $a_xml_writer->xmlEndTag("qtimetadatafield");
110 
111  $a_xml_writer->xmlEndTag("qtimetadata");
112  $a_xml_writer->xmlEndTag("itemmetadata");
113 
114  // PART I: qti presentation
115  $attrs = array(
116  "label" => $this->object->getTitle()
117  );
118  $a_xml_writer->xmlStartTag("presentation", $attrs);
119  // add flow to presentation
120  $a_xml_writer->xmlStartTag("flow");
121  // add material with question text to presentation
122  $this->object->addQTIMaterial($a_xml_writer, $this->object->getQuestion());
123  // add information on response rendering
124  $attrs = array(
125  "ident" => "TEXT",
126  "rcardinality" => "Ordered"
127  );
128  $a_xml_writer->xmlStartTag("response_str", $attrs);
129  $attrs = array(
130  "fibtype" => "String",
131  "prompt" => "Box"
132  );
133  if ($this->object->getMaxNumOfChars() > 0) {
134  $attrs["maxchars"] = $this->object->getMaxNumOfChars();
135  }
136  $a_xml_writer->xmlStartTag("render_fib", $attrs);
137  $attrs = array(
138  "ident" => "A"
139  );
140  $a_xml_writer->xmlStartTag("response_label", $attrs);
141  $a_xml_writer->xmlEndTag("response_label");
142  $a_xml_writer->xmlEndTag("render_fib");
143 
144  $solution = $this->object->getSuggestedSolution(0);
145  if ($solution !== null && count($solution)) {
146  if (preg_match("/il_(\d*?)_(\w+)_(\d+)/", $solution["internal_link"], $matches)) {
147  $a_xml_writer->xmlStartTag("material");
148  $intlink = "il_" . IL_INST_ID . "_" . $matches[2] . "_" . $matches[3];
149  if (strcmp($matches[1], "") != 0) {
150  $intlink = $solution["internal_link"];
151  }
152  $attrs = array(
153  "label" => "suggested_solution"
154  );
155  $a_xml_writer->xmlElement("mattext", $attrs, $intlink);
156  $a_xml_writer->xmlEndTag("material");
157  }
158  }
159  $a_xml_writer->xmlEndTag("response_str");
160  $a_xml_writer->xmlEndTag("flow");
161  $a_xml_writer->xmlEndTag("presentation");
162 
163  // PART II: qti resprocessing
164  $attrs = array(
165  "scoremodel" => "HumanRater"
166  );
167  $a_xml_writer->xmlStartTag("resprocessing", $attrs);
168  $a_xml_writer->xmlStartTag("outcomes");
169  $attrs = array(
170  "varname" => "WritingScore",
171  "vartype" => "Integer",
172  "minvalue" => "0",
173  "maxvalue" => $this->object->getPoints()
174  );
175  $a_xml_writer->xmlStartTag("decvar", $attrs);
176  $a_xml_writer->xmlEndTag("decvar");
177  $a_xml_writer->xmlEndTag("outcomes");
178 
179  $feedback_allcorrect = $this->object->feedbackOBJ->getGenericFeedbackExportPresentation(
180  $this->object->getId(),
181  true
182  );
183  $feedback_onenotcorrect = $this->object->feedbackOBJ->getGenericFeedbackExportPresentation(
184  $this->object->getId(),
185  false
186  );
187  if (strlen($feedback_allcorrect . $feedback_onenotcorrect)) {
188  if (strlen($feedback_allcorrect)) {
189  $attrs = array(
190  "continue" => "Yes"
191  );
192  $a_xml_writer->xmlStartTag("respcondition", $attrs);
193  // qti conditionvar
194  $a_xml_writer->xmlStartTag("conditionvar");
195  $attrs = array(
196  "respident" => "points"
197  );
198  $a_xml_writer->xmlElement("varequal", $attrs, $this->object->getPoints());
199  $a_xml_writer->xmlEndTag("conditionvar");
200  // qti displayfeedback
201  $attrs = array(
202  "feedbacktype" => "Response",
203  "linkrefid" => "response_allcorrect"
204  );
205  $a_xml_writer->xmlElement("displayfeedback", $attrs);
206  $a_xml_writer->xmlEndTag("respcondition");
207  }
208 
209  if (strlen($feedback_onenotcorrect)) {
210  $attrs = array(
211  "continue" => "Yes"
212  );
213  $a_xml_writer->xmlStartTag("respcondition", $attrs);
214  // qti conditionvar
215  $a_xml_writer->xmlStartTag("conditionvar");
216  $a_xml_writer->xmlStartTag("not");
217  $attrs = array(
218  "respident" => "points"
219  );
220  $a_xml_writer->xmlElement("varequal", $attrs, $this->object->getPoints());
221  $a_xml_writer->xmlEndTag("not");
222  $a_xml_writer->xmlEndTag("conditionvar");
223  // qti displayfeedback
224  $attrs = array(
225  "feedbacktype" => "Response",
226  "linkrefid" => "response_onenotcorrect"
227  );
228  $a_xml_writer->xmlElement("displayfeedback", $attrs);
229  $a_xml_writer->xmlEndTag("respcondition");
230  }
231  }
232 
233  $a_xml_writer->xmlStartTag("respcondition");
234  $a_xml_writer->xmlStartTag("conditionvar");
235  $a_xml_writer->xmlElement("other", null, "tutor_rated");
236  $a_xml_writer->xmlEndTag("conditionvar");
237  $a_xml_writer->xmlEndTag("respcondition");
238  $a_xml_writer->xmlEndTag("resprocessing");
239 
240  $this->addAnswerSpecificFeedback($a_xml_writer, $this->object->feedbackOBJ->getAnswerOptionsByAnswerIndex());
241 
242  if (strlen($feedback_allcorrect)) {
243  $attrs = array(
244  "ident" => "response_allcorrect",
245  "view" => "All"
246  );
247  $a_xml_writer->xmlStartTag("itemfeedback", $attrs);
248  // qti flow_mat
249  $a_xml_writer->xmlStartTag("flow_mat");
250  $this->object->addQTIMaterial($a_xml_writer, $feedback_allcorrect);
251  $a_xml_writer->xmlEndTag("flow_mat");
252  $a_xml_writer->xmlEndTag("itemfeedback");
253  }
254  if (strlen($feedback_onenotcorrect)) {
255  $attrs = array(
256  "ident" => "response_onenotcorrect",
257  "view" => "All"
258  );
259  $a_xml_writer->xmlStartTag("itemfeedback", $attrs);
260  // qti flow_mat
261  $a_xml_writer->xmlStartTag("flow_mat");
262  $this->object->addQTIMaterial($a_xml_writer, $feedback_onenotcorrect);
263  $a_xml_writer->xmlEndTag("flow_mat");
264  $a_xml_writer->xmlEndTag("itemfeedback");
265  }
266 
267  $a_xml_writer = $this->addSolutionHints($a_xml_writer);
268 
269  $a_xml_writer->xmlEndTag("item");
270  $a_xml_writer->xmlEndTag("questestinterop");
271 
272  $xml = $a_xml_writer->xmlDumpMem(false);
273  if (!$a_include_header) {
274  $pos = strpos($xml, "?>");
275  $xml = substr($xml, $pos + 2);
276  }
277  return $xml;
278  }
const IL_INST_ID
Definition: constants.php:40
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
addAnswerSpecificFeedback(ilXmlWriter $a_xml_writer, $answers)
addGeneralMetadata(ilXmlWriter $xmlwriter)
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 ...
global $DIC
Definition: feed.php:28
$xml
Definition: metadata.php:351
const TEXT_QUESTION_IDENTIFIER
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)
+ Here is the call graph for this function:

Field Documentation

◆ $object

assTextQuestionExport::$object

Definition at line 32 of file class.assTextQuestionExport.php.


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