ILIAS  release_7 Revision v7.30-3-g800a261c036
ilQTIParser Class Reference
+ Inheritance diagram for ilQTIParser:
+ Collaboration diagram for ilQTIParser:

Public Member Functions

 isIgnoreItemsEnabled ()
 
 setIgnoreItemsEnabled ($ignoreItemsEnabled)
 
 __construct ($a_xml_file, $a_mode=IL_MO_PARSE_QTI, $a_qpl_id=0, $a_import_idents="")
 Constructor. More...
 
 getQuestionSetType ()
 
 setQuestionSetType ($questionSetType)
 
 setTestObject (&$a_tst_object)
 
 setParserMode ($a_mode=IL_MO_PARSE_QTI)
 
 setHandlers ($a_xml_parser)
 set event handler should be overwritten by inherited class @access private More...
 
 startParsing ()
 stores xml data in array More...
 
 getParent ($a_xml_parser)
 
 handlerBeginTag ($a_xml_parser, $a_name, $a_attribs)
 handler for begin of element More...
 
 handlerParseBeginTag ($a_xml_parser, $a_name, $a_attribs)
 handler for begin of element parser More...
 
 handlerEndTag ($a_xml_parser, $a_name)
 handler for end of element More...
 
 handlerParseEndTag ($a_xml_parser, $a_name)
 handler for end of element parser More...
 
 handlerCharacterData ($a_xml_parser, $a_data)
 handler for character data More...
 
 handlerParseCharacterData ($a_xml_parser, $a_data)
 handler for character data More...
 
 handlerVerifyBeginTag ($a_xml_parser, $a_name, $a_attribs)
 handler for begin of element verification More...
 
 handlerVerifyEndTag ($a_xml_parser, $a_name)
 handler for end of element verification More...
 
 handlerVerifyCharacterData ($a_xml_parser, $a_data)
 handler for character data verification More...
 
getFoundItems ()
 
 getImportMapping ()
 get array of new created questions for import id More...
 
 getQuestionIdMapping ()
 
 setXMLContent ($a_xml_content)
 
 openXMLFile ()
 open xml file More...
 
 getNumImportedItems ()
 
- Public Member Functions inherited from ilSaxParser
 __construct ($a_xml_file='', $throwException=false)
 Constructor setup ILIAS global object @access public. More...
 
 setXMLContent ($a_xml_content)
 
 getXMLContent ()
 
 getInputType ()
 
 startParsing ()
 stores xml data in array More...
 
 createParser ()
 create parser More...
 
 setOptions ($a_xml_parser)
 set parser options More...
 
 setHandlers ($a_xml_parser)
 set event handler should be overwritten by inherited class @access private More...
 
 openXMLFile ()
 open xml file More...
 
 parse ($a_xml_parser, $a_fp=null)
 parse xml file More...
 
 freeParser ($a_xml_parser)
 free xml parser handle More...
 
 setThrowException ($throwException)
 set error handling More...
 
- Public Member Functions inherited from PEAR
 __construct ($error_class=null)
 Constructor. More...
 
 _PEAR ()
 Destructor (the emulated type of...). More...
 
 registerShutdownFunc ($func, $args=array())
 Use this function to register a shutdown method for static classes. More...
 
 isError ($data, $code=null)
 Tell whether a value is a PEAR error. More...
 
 expectError ($code=' *')
 This method is used to tell which errors you expect to get. More...
 
 popExpect ()
 This method pops one element off the expected error codes stack. More...
 
 _checkDelExpect ($error_code)
 This method checks unsets an error code if available. More...
 
 delExpect ($error_code)
 This method deletes all occurences of the specified element from the expected error codes stack. More...
 
raiseError ($message=null, $code=null, $mode=null, $options=null, $userinfo=null, $error_class=null, $skipmsg=false)
 This method is a wrapper that returns an instance of the configured error class with this object's default error handling applied. More...
 
throwError ($message=null, $code=null, $userinfo=null)
 Simpler form of raiseError with fewer options. More...
 
 staticPushErrorHandling ($mode, $options=null)
 
 staticPopErrorHandling ()
 
 pushErrorHandling ($mode, $options=null)
 Push a new error handler on top of the error handler options stack. More...
 
 popErrorHandling ()
 Pop the last error handler used. More...
 
 loadExtension ($ext)
 OS independant PHP extension load. More...
 

Data Fields

 $lng
 
 $hasRootElement
 
 $path
 
 $items
 
 $item
 
 $depth
 
 $qti_element
 
 $in_presentation
 
 $in_response
 
 $render_type
 
 $response_label
 
 $material
 
 $matimage
 
 $response
 
 $resprocessing
 
 $outcomes
 
 $decvar
 
 $respcondition
 
 $setvar
 
 $displayfeedback
 
 $itemfeedback
 
 $flow_mat
 
 $flow
 
 $presentation
 
 $mattext
 
 $sametag
 
 $characterbuffer
 
 $conditionvar
 
 $parser_mode
 
 $import_idents
 
 $qpl_id
 
 $tst_id
 
 $tst_object
 
 $do_nothing
 
 $gap_index
 
 $assessments
 
 $assessment
 
 $assessmentcontrol
 
 $objectives
 
 $in_assessment = false
 
 $section
 
 $import_mapping
 
 $question_counter = 1
 
 $in_itemmetadata
 
 $in_objectives = false
 
 $founditems = array()
 
 $verifyroot = false
 
 $verifyqticomment = 0
 
 $verifymetadatafield = 0
 
 $verifyfieldlabel = 0
 
 $verifyfieldlabeltext = ""
 
 $verifyfieldentry = 0
 
 $verifyfieldentrytext = ""
 
 $solutionhints = []
 
- Data Fields inherited from ilSaxParser
 $input_type = null
 
 $xml_content = ''
 
 $ilias
 
 $lng
 
 $xml_file
 
 $throwException = false
 
- Data Fields inherited from PEAR
 $_debug = false
 
 $_default_error_mode = null
 
 $_default_error_options = null
 
 $_default_error_handler = ''
 
 $_error_class = 'PEAR_Error'
 
 $_expected_errors = array()
 

Protected Member Functions

 fetchNumericVersionFromVersionDateString ($versionDateString)
 
 fetchSourceNicFromItemIdent ($itemIdent)
 
 cleanInvalidXmlChars ($xmlContent)
 
 isMatImageAvailable ()
 
 virusDetected ($buffer)
 
- Protected Member Functions inherited from ilSaxParser
 handleError ($message, $code)
 use given error handler to handle error message or internal ilias error message handle More...
 

Protected Attributes

 $solutionhint = null
 
 $numImportedItems = 0
 
 $prensentation_material
 
 $in_prensentation_material = false
 
 $ignoreItemsEnabled = false
 
 $questionSetType = null
 

Additional Inherited Members

- Static Public Member Functions inherited from PEAR
static & getStaticProperty ($class, $var)
 If you have a class that's mostly/entirely static, and you need static properties, you can use this method to simulate them. More...
 
static setErrorHandling ($mode=null, $options=null)
 Sets how errors generated by this object should be handled. More...
 

Detailed Description

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

Constructor & Destructor Documentation

◆ __construct()

ilQTIParser::__construct (   $a_xml_file,
  $a_mode = IL_MO_PARSE_QTI,
  $a_qpl_id = 0,
  $a_import_idents = "" 
)

Constructor.

Parameters
string$a_xml_filexml file
integer$a_modeParser mode IL_MO_PARSE_QTI | IL_MO_VERIFY_QTI @access public

Definition at line 149 of file class.ilQTIParser.php.

150 {
151 global $lng;
152
153 $this->setParserMode($a_mode);
154
155 parent::__construct($a_xml_file);
156
157 $this->qpl_id = $a_qpl_id;
158 $this->import_idents = array();
159 if (is_array($a_import_idents)) {
160 $this->import_idents = &$a_import_idents;
161 }
162
163 $this->lng = &$lng;
164 $this->hasRootElement = false;
165 $this->import_mapping = array();
166 $this->assessments = array();
167 $this->assessment = null;
168 $this->section = null;
169 $this->path = array();
170 $this->items = array();
171 $this->item = null;
172 $this->depth = array();
173 $this->do_nothing = false;
174 $this->qti_element = "";
175 $this->in_presentation = false;
176 $this->in_objectives = false;
177 $this->in_reponse = false;
178 $this->render_type = null;
179 $this->render_hotspot = null;
180 $this->response_label = null;
181 $this->material = null;
182 $this->response = null;
183 $this->assessmentcontrol = null;
184 $this->objectives = null;
185 $this->matimage = null;
186 $this->resprocessing = null;
187 $this->outcomes = null;
188 $this->decvar = null;
189 $this->respcondition = null;
190 $this->setvar = null;
191 $this->displayfeedback = null;
192 $this->itemfeedback = null;
193 $this->flow_mat = array();
194 $this->question_counter = 1;
195 $this->flow = 0;
196 $this->gap_index = 0;
197 $this->presentation = null;
198 $this->mattext = null;
199 $this->matapplet = null;
200 $this->sametag = false;
201 $this->in_assessment = false;
202 $this->characterbuffer = "";
203 $this->metadata = array("label" => "", "entry" => "");
204 }
setParserMode($a_mode=IL_MO_PARSE_QTI)
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
QTI assessment class.

References $lng, ILIAS\GlobalScreen\Provider\__construct(), and setParserMode().

+ Here is the call graph for this function:

Member Function Documentation

◆ cleanInvalidXmlChars()

ilQTIParser::cleanInvalidXmlChars (   $xmlContent)
protected

Definition at line 1724 of file class.ilQTIParser.php.

1725 {
1726 // http://www.w3.org/TR/xml/#charsets
1727
1728 // DOES ACTUALLY KILL CONTENT, SHOULD CLEAN NON ESCAPED ILLEGAL CHARS, DON'T KNOW
1729 //$reg = '/[^\x09\x0A\x0D\x20-\uD7FF\uE000-\uFFFD\u10000-\u10FFFF]/';
1730 //$xmlContent = preg_replace($reg, '', $xmlContent);
1731
1732 // remove illegal chars escaped to html entities
1733 $needles = array();
1734 for ($i = 0x00, $max = 0x08; $i <= $max; $i += 0x01) {
1735 $needles[] = "&#{$i};";
1736 }
1737 for ($i = 0x0b, $max = 0x0c; $i <= $max; $i += 0x01) {
1738 $needles[] = "&#{$i};";
1739 }
1740 for ($i = 0x0e, $max = 0x1f; $i <= $max; $i += 0x01) {
1741 $needles[] = "&#{$i};";
1742 }
1743 for ($i = 0xd800, $max = 0xdfff; $i <= $max; $i += 0x0001) {
1744 $needles[] = "&#{$i};";
1745 }
1746 for ($i = 0xfffe, $max = 0xffff; $i <= $max; $i += 0x0001) {
1747 $needles[] = "&#{$i};";
1748 }
1749 $reg = '/(' . implode('|', $needles) . ')/';
1750 $xmlContent = preg_replace($reg, '', $xmlContent);
1751
1752 return $xmlContent;
1753 }
$i
Definition: metadata.php:24

References $i.

Referenced by openXMLFile(), and setXMLContent().

+ Here is the caller graph for this function:

◆ fetchNumericVersionFromVersionDateString()

ilQTIParser::fetchNumericVersionFromVersionDateString (   $versionDateString)
protected

Definition at line 1702 of file class.ilQTIParser.php.

1703 {
1704 $matches = null;
1705
1706 if (preg_match('/^(\d+\.\d+\.\d+) .*$/', $versionDateString, $matches)) {
1707 return $matches[1];
1708 }
1709
1710 return null;
1711 }

Referenced by handlerParseEndTag().

+ Here is the caller graph for this function:

◆ fetchSourceNicFromItemIdent()

ilQTIParser::fetchSourceNicFromItemIdent (   $itemIdent)
protected

Definition at line 1713 of file class.ilQTIParser.php.

1714 {
1715 $matches = null;
1716
1717 if (preg_match('/^il_(\d+?)_qst_\d+$/', $itemIdent, $matches)) {
1718 return $matches[1];
1719 }
1720
1721 return null;
1722 }

Referenced by handlerParseBeginTag().

+ Here is the caller graph for this function:

◆ getFoundItems()

& ilQTIParser::getFoundItems ( )

Definition at line 1651 of file class.ilQTIParser.php.

1652 {
1653 return $this->founditems;
1654 }

References $founditems.

◆ getImportMapping()

ilQTIParser::getImportMapping ( )

get array of new created questions for import id

Definition at line 1660 of file class.ilQTIParser.php.

1661 {
1662 if (!is_array($this->import_mapping)) {
1663 return array();
1664 } else {
1665 return $this->import_mapping;
1666 }
1667 }

References $import_mapping.

Referenced by getQuestionIdMapping().

+ Here is the caller graph for this function:

◆ getNumImportedItems()

ilQTIParser::getNumImportedItems ( )
Returns
int

Definition at line 1758 of file class.ilQTIParser.php.

1759 {
1761 }

References $numImportedItems.

◆ getParent()

ilQTIParser::getParent (   $a_xml_parser)

Definition at line 263 of file class.ilQTIParser.php.

264 {
265 if ($this->depth[$a_xml_parser] > 0) {
266 return $this->path[$this->depth[$a_xml_parser] - 1];
267 } else {
268 return "";
269 }
270 }

Referenced by handlerParseCharacterData(), and handlerParseEndTag().

+ Here is the caller graph for this function:

◆ getQuestionIdMapping()

ilQTIParser::getQuestionIdMapping ( )
Returns
array

Definition at line 1672 of file class.ilQTIParser.php.

1673 {
1674 $questionIdMapping = array();
1675
1676 foreach ((array) $this->getImportMapping() as $k => $v) {
1677 $oldQuestionId = substr($k, strpos($k, 'qst_') + strlen('qst_'));
1678 $newQuestionId = $v['test']; // yes, this is the new question id ^^
1679
1680 $questionIdMapping[$oldQuestionId] = $newQuestionId;
1681 }
1682
1683 return $questionIdMapping;
1684 }
getImportMapping()
get array of new created questions for import id

References getImportMapping().

+ Here is the call graph for this function:

◆ getQuestionSetType()

ilQTIParser::getQuestionSetType ( )
Returns
null

Definition at line 209 of file class.ilQTIParser.php.

210 {
212 }

References $questionSetType.

◆ handlerBeginTag()

ilQTIParser::handlerBeginTag (   $a_xml_parser,
  $a_name,
  $a_attribs 
)

handler for begin of element

Definition at line 275 of file class.ilQTIParser.php.

276 {
277 switch ($this->parser_mode) {
278 case IL_MO_PARSE_QTI:
279 $this->handlerParseBeginTag($a_xml_parser, $a_name, $a_attribs);
280 break;
281 case IL_MO_VERIFY_QTI:
282 $this->handlerVerifyBeginTag($a_xml_parser, $a_name, $a_attribs);
283 break;
284 }
285 }
const IL_MO_VERIFY_QTI
const IL_MO_PARSE_QTI
handlerVerifyBeginTag($a_xml_parser, $a_name, $a_attribs)
handler for begin of element verification
handlerParseBeginTag($a_xml_parser, $a_name, $a_attribs)
handler for begin of element parser

References handlerParseBeginTag(), handlerVerifyBeginTag(), IL_MO_PARSE_QTI, and IL_MO_VERIFY_QTI.

+ Here is the call graph for this function:

◆ handlerCharacterData()

ilQTIParser::handlerCharacterData (   $a_xml_parser,
  $a_data 
)

handler for character data

Definition at line 1335 of file class.ilQTIParser.php.

1336 {
1337 switch ($this->parser_mode) {
1338 case IL_MO_PARSE_QTI:
1339 $this->handlerParseCharacterData($a_xml_parser, $a_data);
1340 break;
1341 case IL_MO_VERIFY_QTI:
1342 $this->handlerVerifyCharacterData($a_xml_parser, $a_data);
1343 break;
1344 }
1345 }
handlerParseCharacterData($a_xml_parser, $a_data)
handler for character data
handlerVerifyCharacterData($a_xml_parser, $a_data)
handler for character data verification

References handlerParseCharacterData(), handlerVerifyCharacterData(), IL_MO_PARSE_QTI, and IL_MO_VERIFY_QTI.

+ Here is the call graph for this function:

◆ handlerEndTag()

ilQTIParser::handlerEndTag (   $a_xml_parser,
  $a_name 
)

handler for end of element

Definition at line 988 of file class.ilQTIParser.php.

989 {
990 switch ($this->parser_mode) {
991 case IL_MO_PARSE_QTI:
992 $this->handlerParseEndTag($a_xml_parser, $a_name);
993 break;
994 case IL_MO_VERIFY_QTI:
995 $this->handlerVerifyEndTag($a_xml_parser, $a_name);
996 break;
997 }
998 }
handlerVerifyEndTag($a_xml_parser, $a_name)
handler for end of element verification
handlerParseEndTag($a_xml_parser, $a_name)
handler for end of element parser

References handlerParseEndTag(), handlerVerifyEndTag(), IL_MO_PARSE_QTI, and IL_MO_VERIFY_QTI.

+ Here is the call graph for this function:

◆ handlerParseBeginTag()

ilQTIParser::handlerParseBeginTag (   $a_xml_parser,
  $a_name,
  $a_attribs 
)

handler for begin of element parser

Definition at line 290 of file class.ilQTIParser.php.

291 {
292 if ($this->do_nothing) {
293 return;
294 }
295 $this->sametag = false;
296 $this->characterbuffer = "";
297 $this->depth[$a_xml_parser]++;
298 $this->path[$this->depth[$a_xml_parser]] = strtolower($a_name);
299 $this->qti_element = $a_name;
300
301 switch (strtolower($a_name)) {
302 case "assessment":
303 include_once("./Services/QTI/classes/class.ilQTIAssessment.php");
304 $this->assessment = &$this->assessments[array_push($this->assessments, new ilQTIAssessment()) - 1];
305 $this->in_assessment = true;
306 if (is_array($a_attribs)) {
307 foreach ($a_attribs as $attribute => $value) {
308 switch (strtolower($attribute)) {
309 case "title":
310 $this->assessment->setTitle($value);
311 break;
312 case "ident":
313 $this->assessment->setIdent($value);
314 break;
315 }
316 }
317 }
318 break;
319 case "assessmentcontrol":
320 include_once("./Services/QTI/classes/class.ilQTIAssessmentcontrol.php");
321 $this->assessmentcontrol = new ilQTIAssessmentcontrol();
322 if (is_array($a_attribs)) {
323 foreach ($a_attribs as $attribute => $value) {
324 switch (strtolower($attribute)) {
325 case "solutionswitch":
326 $this->assessmentcontrol->setSolutionswitch($value);
327 break;
328 case "hintswitch":
329 $this->assessmentcontrol->setHintswitch($value);
330 break;
331 case "feedbackswitch":
332 $this->assessmentcontrol->setFeedbackswitch($value);
333 break;
334 }
335 }
336 }
337 break;
338 case "objectives":
339 include_once("./Services/QTI/classes/class.ilQTIObjectives.php");
340 $this->objectives = new ilQTIObjectives();
341 $this->in_objectives = true;
342 break;
343 case 'presentation_material':
344 require_once 'Services/QTI/classes/class.ilQTIPresentationMaterial.php';
345 $this->prensentation_material = new ilQTIPresentationMaterial();
346 $this->in_prensentation_material = true;
347 break;
348 case "section":
349 include_once("./Services/QTI/classes/class.ilQTISection.php");
350 $this->section = new ilQTISection();
351 break;
352 case "itemmetadata":
353 $this->in_itemmetadata = true;
354 break;
355 case "qtimetadatafield":
356 $this->metadata = array("label" => "", "entry" => "");
357 break;
358 case "flow":
359 include_once("./Services/QTI/classes/class.ilQTIFlow.php");
360 $this->flow++;
361 break;
362 case "flow_mat":
363 include_once("./Services/QTI/classes/class.ilQTIFlowMat.php");
364 array_push($this->flow_mat, new ilQTIFlowMat());
365 break;
366 case "itemfeedback":
367 include_once("./Services/QTI/classes/class.ilQTIItemfeedback.php");
368 $this->itemfeedback = new ilQTIItemfeedback();
369 if (is_array($a_attribs)) {
370 foreach ($a_attribs as $attribute => $value) {
371 switch (strtolower($attribute)) {
372 case "ident":
373 $this->itemfeedback->setIdent($value);
374 break;
375 case "view":
376 $this->itemfeedback->setView($value);
377 break;
378 }
379 }
380 }
381 break;
382 case "displayfeedback":
383 include_once("./Services/QTI/classes/class.ilQTIDisplayfeedback.php");
384 $this->displayfeedback = new ilQTIDisplayfeedback();
385 if (is_array($a_attribs)) {
386 foreach ($a_attribs as $attribute => $value) {
387 switch (strtolower($attribute)) {
388 case "feedbacktype":
389 $this->displayfeedback->setFeedbacktype($value);
390 break;
391 case "linkrefid":
392 $this->displayfeedback->setLinkrefid($value);
393 break;
394 }
395 }
396 }
397 break;
398 case "setvar":
399 include_once("./Services/QTI/classes/class.ilQTISetvar.php");
400 $this->setvar = new ilQTISetvar();
401 if (is_array($a_attribs)) {
402 foreach ($a_attribs as $attribute => $value) {
403 switch (strtolower($attribute)) {
404 case "action":
405 $this->setvar->setAction($value);
406 break;
407 case "varname":
408 $this->setvar->setVarname($value);
409 break;
410 }
411 }
412 }
413 break;
414 case "conditionvar":
415 include_once("./Services/QTI/classes/class.ilQTIConditionvar.php");
416 $this->conditionvar = new ilQTIConditionvar();
417 break;
418 case "not":
419 if ($this->conditionvar != null) {
420 $this->conditionvar->addNot();
421 }
422 break;
423 case "and":
424 if ($this->conditionvar != null) {
425 $this->conditionvar->addAnd();
426 }
427 break;
428 case "or":
429 if ($this->conditionvar != null) {
430 $this->conditionvar->addOr();
431 }
432 break;
433 case "varequal":
434 include_once("./Services/QTI/classes/class.ilQTIResponseVar.php");
435 $this->responsevar = new ilQTIResponseVar(RESPONSEVAR_EQUAL);
436 if (is_array($a_attribs)) {
437 foreach ($a_attribs as $attribute => $value) {
438 switch (strtolower($attribute)) {
439 case "case":
440 $this->responsevar->setCase($value);
441 break;
442 case "respident":
443 $this->responsevar->setRespident($value);
444 break;
445 case "index":
446 $this->responsevar->setIndex($value);
447 break;
448 }
449 }
450 }
451 break;
452 case "varlt":
453 include_once("./Services/QTI/classes/class.ilQTIResponseVar.php");
454 $this->responsevar = new ilQTIResponseVar(RESPONSEVAR_LT);
455 if (is_array($a_attribs)) {
456 foreach ($a_attribs as $attribute => $value) {
457 switch (strtolower($attribute)) {
458 case "respident":
459 $this->responsevar->setRespident($value);
460 break;
461 case "index":
462 $this->responsevar->setIndex($value);
463 break;
464 }
465 }
466 }
467 break;
468 case "varlte":
469 include_once("./Services/QTI/classes/class.ilQTIResponseVar.php");
470 $this->responsevar = new ilQTIResponseVar(RESPONSEVAR_LTE);
471 if (is_array($a_attribs)) {
472 foreach ($a_attribs as $attribute => $value) {
473 switch (strtolower($attribute)) {
474 case "respident":
475 $this->responsevar->setRespident($value);
476 break;
477 case "index":
478 $this->responsevar->setIndex($value);
479 break;
480 }
481 }
482 }
483 break;
484 case "vargt":
485 include_once("./Services/QTI/classes/class.ilQTIResponseVar.php");
486 $this->responsevar = new ilQTIResponseVar(RESPONSEVAR_GT);
487 if (is_array($a_attribs)) {
488 foreach ($a_attribs as $attribute => $value) {
489 switch (strtolower($attribute)) {
490 case "respident":
491 $this->responsevar->setRespident($value);
492 break;
493 case "index":
494 $this->responsevar->setIndex($value);
495 break;
496 }
497 }
498 }
499 break;
500 case "vargte":
501 include_once("./Services/QTI/classes/class.ilQTIResponseVar.php");
502 $this->responsevar = new ilQTIResponseVar(RESPONSEVAR_GTE);
503 if (is_array($a_attribs)) {
504 foreach ($a_attribs as $attribute => $value) {
505 switch (strtolower($attribute)) {
506 case "respident":
507 $this->responsevar->setRespident($value);
508 break;
509 case "index":
510 $this->responsevar->setIndex($value);
511 break;
512 }
513 }
514 }
515 break;
516 case "varsubset":
517 include_once("./Services/QTI/classes/class.ilQTIResponseVar.php");
518 $this->responsevar = new ilQTIResponseVar(RESPONSEVAR_SUBSET);
519 if (is_array($a_attribs)) {
520 foreach ($a_attribs as $attribute => $value) {
521 switch (strtolower($attribute)) {
522 case "respident":
523 $this->responsevar->setRespident($value);
524 break;
525 case "setmatch":
526 $this->responsevar->setSetmatch($value);
527 break;
528 case "index":
529 $this->responsevar->setIndex($value);
530 break;
531 }
532 }
533 }
534 break;
535 case "varinside":
536 include_once("./Services/QTI/classes/class.ilQTIResponseVar.php");
537 $this->responsevar = new ilQTIResponseVar(RESPONSEVAR_INSIDE);
538 if (is_array($a_attribs)) {
539 foreach ($a_attribs as $attribute => $value) {
540 switch (strtolower($attribute)) {
541 case "respident":
542 $this->responsevar->setRespident($value);
543 break;
544 case "areatype":
545 $this->responsevar->setAreatype($value);
546 break;
547 case "index":
548 $this->responsevar->setIndex($value);
549 break;
550 }
551 }
552 }
553 break;
554 case "varsubstring":
555 include_once("./Services/QTI/classes/class.ilQTIResponseVar.php");
556 $this->responsevar = new ilQTIResponseVar(RESPONSEVAR_SUBSTRING);
557 if (is_array($a_attribs)) {
558 foreach ($a_attribs as $attribute => $value) {
559 switch (strtolower($attribute)) {
560 case "case":
561 $this->responsevar->setCase($value);
562 break;
563 case "respident":
564 $this->responsevar->setRespident($value);
565 break;
566 case "index":
567 $this->responsevar->setIndex($value);
568 break;
569 }
570 }
571 }
572 break;
573 case "respcondition":
574 include_once("./Services/QTI/classes/class.ilQTIRespcondition.php");
575 $this->respcondition = new ilQTIRespcondition();
576 if (is_array($a_attribs)) {
577 foreach ($a_attribs as $attribute => $value) {
578 switch (strtolower($attribute)) {
579 case "continue":
580 $this->respcondition->setContinue($value);
581 break;
582 case "title":
583 $this->respcondition->setTitle($value);
584 break;
585 }
586 }
587 }
588 break;
589 case "outcomes":
590 include_once("./Services/QTI/classes/class.ilQTIOutcomes.php");
591 $this->outcomes = new ilQTIOutcomes();
592 break;
593 case "decvar":
594 include_once("./Services/QTI/classes/class.ilQTIDecvar.php");
595 $this->decvar = new ilQTIDecvar();
596 if (is_array($a_attribs)) {
597 foreach ($a_attribs as $attribute => $value) {
598 switch (strtolower($attribute)) {
599 case "varname":
600 $this->decvar->setVarname($value);
601 break;
602 case "vartype":
603 $this->decvar->setVartype($value);
604 break;
605 case "defaultval":
606 $this->decvar->setDefaultval($value);
607 break;
608 case "minvalue":
609 $this->decvar->setMinvalue($value);
610 break;
611 case "maxvalue":
612 $this->decvar->setMaxvalue($value);
613 break;
614 case "members":
615 $this->decvar->setMembers($value);
616 break;
617 case "cutvalue":
618 $this->decvar->setCutvalue($value);
619 break;
620 }
621 }
622 }
623 break;
624 case "matimage":
625 include_once("./Services/QTI/classes/class.ilQTIMatimage.php");
626 $this->matimage = new ilQTIMatimage();
627 if (is_array($a_attribs)) {
628 foreach ($a_attribs as $attribute => $value) {
629 switch (strtolower($attribute)) {
630 case "imagtype":
631 $this->matimage->setImagetype($value);
632 break;
633 case "label":
634 $this->matimage->setLabel($value);
635 break;
636 case "height":
637 $this->matimage->setHeight($value);
638 break;
639 case "width":
640 $this->matimage->setWidth($value);
641 break;
642 case "uri":
643 $this->matimage->setUri($value);
644 break;
645 case "embedded":
646 $this->matimage->setEmbedded($value);
647 break;
648 case "x0":
649 $this->matimage->setX0($value);
650 break;
651 case "y0":
652 $this->matimage->setY0($value);
653 break;
654 case "entityref":
655 $this->matimage->setEntityref($value);
656 break;
657 }
658 }
659 }
660 if (!$this->matimage->getEmbedded() && strlen($this->matimage->getUri())) {
661 $this->matimage->setContent(@file_get_contents(dirname($this->xml_file) . '/' . $this->matimage->getUri()));
662 }
663 break;
664 case "material":
665 include_once("./Services/QTI/classes/class.ilQTIMaterial.php");
666 $this->material = new ilQTIMaterial();
667 $this->material->setFlow($this->flow);
668 if (is_array($a_attribs)) {
669 foreach ($a_attribs as $attribute => $value) {
670 switch (strtolower($attribute)) {
671 case "label":
672 $this->material->setLabel($value);
673 break;
674 }
675 }
676 }
677 break;
678 case "mattext":
679 include_once("./Services/QTI/classes/class.ilQTIMattext.php");
680 $this->mattext = new ilQTIMattext();
681 if (is_array($a_attribs)) {
682 foreach ($a_attribs as $attribute => $value) {
683 switch (strtolower($attribute)) {
684 case "texttype":
685 $this->mattext->setTexttype($value);
686 break;
687 case "label":
688 $this->mattext->setLabel($value);
689 break;
690 case "charset":
691 $this->mattext->setCharset($value);
692 break;
693 case "uri":
694 $this->mattext->setUri($value);
695 break;
696 case "xml:space":
697 $this->mattext->setXmlspace($value);
698 break;
699 case "xml:lang":
700 $this->mattext->setXmllang($value);
701 break;
702 case "entityref":
703 $this->mattext->setEntityref($value);
704 break;
705 case "height":
706 $this->mattext->setHeight($value);
707 break;
708 case "width":
709 $this->mattext->setWidth($value);
710 break;
711 case "x0":
712 $this->mattext->setX0($value);
713 break;
714 case "y0":
715 $this->mattext->setY0($value);
716 break;
717 }
718 }
719 }
720 break;
721 case "matapplet":
722 include_once("./Services/QTI/classes/class.ilQTIMatapplet.php");
723 $this->matapplet = new ilQTIMatapplet();
724 if (is_array($a_attribs)) {
725 foreach ($a_attribs as $attribute => $value) {
726 switch (strtolower($attribute)) {
727 case "label":
728 $this->matapplet->setLabel($value);
729 break;
730 case "uri":
731 $this->matapplet->setUri($value);
732 break;
733 case "y0":
734 $this->matapplet->setY0($value);
735 break;
736 case "height":
737 $this->matapplet->setHeight($value);
738 break;
739 case "width":
740 $this->matapplet->setWidth($value);
741 break;
742 case "x0":
743 $this->matapplet->setX0($value);
744 break;
745 case "embedded":
746 $this->matapplet->setEmbedded($value);
747 break;
748 case "entityref":
749 $this->matapplet->setEntityref($value);
750 break;
751 }
752 }
753 }
754 break;
755 case "questestinterop":
756 $this->hasRootElement = true;
757 break;
758 case "qticomment":
759 break;
760 case "objectbank":
761 // not implemented yet
762 break;
763 case "section":
764 if ($this->assessment != null) {
765 $this->assessment->addSection($this->section);
766 }
767 $this->section = null;
768 break;
769 case "presentation":
770 $this->in_presentation = true;
771 include_once("./Services/QTI/classes/class.ilQTIPresentation.php");
772 $this->presentation = new ilQTIPresentation();
773 break;
774 case "response_label":
775 if ($this->render_type != null) {
776 include_once("./Services/QTI/classes/class.ilQTIResponseLabel.php");
777 $this->response_label = new ilQTIResponseLabel();
778 foreach ($a_attribs as $attribute => $value) {
779 switch (strtolower($attribute)) {
780 case "rshuffle":
781 $this->response_label->setRshuffle($value);
782 break;
783 case "rarea":
784 $this->response_label->setRarea($value);
785 break;
786 case "rrange":
787 $this->response_label->setRrange($value);
788 break;
789 case "labelrefid":
790 $this->response_label->setLabelrefid($value);
791 break;
792 case "ident":
793 $this->response_label->setIdent($value);
794 break;
795 case "match_group":
796 $this->response_label->setMatchGroup($value);
797 break;
798 case "match_max":
799 $this->response_label->setMatchMax($value);
800 break;
801 }
802 }
803 }
804 break;
805 case "render_choice":
806 if ($this->in_response) {
807 include_once("./Services/QTI/classes/class.ilQTIRenderChoice.php");
808 $this->render_type = new ilQTIRenderChoice();
809 foreach ($a_attribs as $attribute => $value) {
810 switch (strtolower($attribute)) {
811 case "shuffle":
812 $this->render_type->setShuffle($value);
813 break;
814 case 'minnumber':
815 $this->render_type->setMinnumber($value);
816 break;
817 case 'maxnumber':
818 $this->render_type->setMaxnumber($value);
819 break;
820 }
821 }
822 }
823 break;
824 case "render_hotspot":
825 if ($this->in_response) {
826 include_once("./Services/QTI/classes/class.ilQTIRenderHotspot.php");
827 $this->render_type = new ilQTIRenderHotspot();
828 foreach ($a_attribs as $attribute => $value) {
829 switch (strtolower($attribute)) {
830 case "showdraw":
831 $this->render_type->setShuffle($value);
832 break;
833 case "minnumber":
834 $this->render_type->setMinnumber($value);
835 break;
836 case "maxnumber":
837 $this->render_type->setMaxnumber($value);
838 break;
839 }
840 }
841 }
842 break;
843 case "render_fib":
844 if ($this->in_response) {
845 include_once("./Services/QTI/classes/class.ilQTIRenderFib.php");
846 $this->render_type = new ilQTIRenderFib();
847 foreach ($a_attribs as $attribute => $value) {
848 switch (strtolower($attribute)) {
849 case "encoding":
850 $this->render_type->setEncoding($value);
851 break;
852 case "fibtype":
853 $this->render_type->setFibtype($value);
854 break;
855 case "rows":
856 $this->render_type->setRows($value);
857 break;
858 case "maxchars":
859 $this->render_type->setMaxchars($value);
860 break;
861 case "prompt":
862 $this->render_type->setPrompt($value);
863 break;
864 case "columns":
865 $this->render_type->setColumns($value);
866 break;
867 case "charset":
868 $this->render_type->setCharset($value);
869 break;
870 case "maxnumber":
871 $this->render_type->setMaxnumber($value);
872 break;
873 case "minnumber":
874 $this->render_type->setMinnumber($value);
875 break;
876 }
877 }
878 }
879 break;
880 case "response_lid":
881 // Ordering Terms and Definitions or
882 // Ordering Terms and Pictures or
883 // Multiple choice single response or
884 // Multiple choice multiple response
885 case "response_xy":
886 // Imagemap question
887 case "response_str":
888 // Close question
889 case "response_num":
890 case "response_grp":
891 // Matching terms and definitions
892 // Matching terms and images
893 include_once "./Services/QTI/classes/class.ilQTIResponse.php";
894 switch (strtolower($a_name)) {
895 case "response_lid":
896 $response_type = RT_RESPONSE_LID;
897 break;
898 case "response_xy":
899 $response_type = RT_RESPONSE_XY;
900 break;
901 case "response_str":
902 $response_type = RT_RESPONSE_STR;
903 break;
904 case "response_num":
905 $response_type = RT_RESPONSE_NUM;
906 break;
907 case "response_grp":
908 $response_type = RT_RESPONSE_GRP;
909 break;
910 }
911 $this->in_response = true;
912 $this->response = new ilQTIResponse($response_type);
913 $this->response->setFlow($this->flow);
914 if (is_array($a_attribs)) {
915 foreach ($a_attribs as $attribute => $value) {
916 switch (strtolower($attribute)) {
917 case "ident":
918 $this->response->setIdent($value);
919 break;
920 case "rtiming":
921 $this->response->setRTiming($value);
922 break;
923 case "rcardinality":
924 $this->response->setRCardinality($value);
925 break;
926 case "numtype":
927 $this->response->setNumtype($value);
928 break;
929 }
930 }
931 }
932 break;
933 case "item":
934 include_once("./Services/QTI/classes/class.ilQTIItem.php");
935 $this->gap_index = 0;
936 $this->item = &$this->items[array_push($this->items, new ilQTIItem()) - 1];
937 if (is_array($a_attribs)) {
938 foreach ($a_attribs as $attribute => $value) {
939 switch (strtolower($attribute)) {
940 case "ident":
941 $this->item->setIdent($value);
942 $this->item->setIliasSourceNic(
943 $this->fetchSourceNicFromItemIdent($value)
944 );
945 if ($this->isIgnoreItemsEnabled()) {
946 $this->do_nothing = true;
947 } elseif (count($this->import_idents) > 0) {
948 if (!in_array($value, $this->import_idents)) {
949 $this->do_nothing = true;
950 }
951 }
952 break;
953 case "title":
954 $this->item->setTitle($value);
955 break;
956 case "maxattempts":
957 $this->item->setMaxattempts($value);
958 break;
959 }
960 }
961 }
962 break;
963 case "resprocessing":
964 include_once("./Services/QTI/classes/class.ilQTIResprocessing.php");
965 $this->resprocessing = new ilQTIResprocessing();
966 if (is_array($a_attribs)) {
967 foreach ($a_attribs as $attribute => $value) {
968 switch (strtolower($attribute)) {
969 case "scoremodel":
970 $this->resprocessing->setScoremodel($value);
971 break;
972 }
973 }
974 }
975 break;
976
978 $this->solutionhint = array_map('intval', $a_attribs);
979 $this->solutionhint['txt'] = '';
980 break;
981
982 }
983 }
const RESPONSEVAR_GTE
const RESPONSEVAR_LT
const RESPONSEVAR_EQUAL
const RESPONSEVAR_LTE
const RESPONSEVAR_INSIDE
const RESPONSEVAR_SUBSTRING
const RESPONSEVAR_SUBSET
const RESPONSEVAR_GT
const RT_RESPONSE_LID
const RT_RESPONSE_XY
const RT_RESPONSE_STR
const RT_RESPONSE_NUM
const RT_RESPONSE_GRP
fetchSourceNicFromItemIdent($itemIdent)
Class ilQTIPresentationMaterial.

References fetchSourceNicFromItemIdent(), isIgnoreItemsEnabled(), assQuestionExport\ITEM_SOLUTIONHINT, RESPONSEVAR_EQUAL, RESPONSEVAR_GT, RESPONSEVAR_GTE, RESPONSEVAR_INSIDE, RESPONSEVAR_LT, RESPONSEVAR_LTE, RESPONSEVAR_SUBSET, RESPONSEVAR_SUBSTRING, RT_RESPONSE_GRP, RT_RESPONSE_LID, RT_RESPONSE_NUM, RT_RESPONSE_STR, and RT_RESPONSE_XY.

Referenced by handlerBeginTag().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ handlerParseCharacterData()

ilQTIParser::handlerParseCharacterData (   $a_xml_parser,
  $a_data 
)

handler for character data

Definition at line 1350 of file class.ilQTIParser.php.

1351 {
1352 if ($this->do_nothing) {
1353 return;
1354 }
1355 $this->characterbuffer .= $a_data;
1356 $a_data = $this->characterbuffer;
1357 switch ($this->qti_element) {
1358 case "fieldlabel":
1359 $this->metadata["label"] = $a_data;
1360 break;
1361 case "fieldentry":
1362 $this->metadata["entry"] = $a_data;
1363 break;
1364 case "response_label":
1365 if ($this->response_label != null) {
1366 $this->response_label->setContent($a_data);
1367 }
1368 break;
1369 case "setvar":
1370 if ($this->setvar != null) {
1371 $this->setvar->setContent($a_data);
1372 }
1373 break;
1374 case "displayfeedback":
1375 if ($this->displayfeedback != null) {
1376 $this->displayfeedback->setContent($a_data);
1377 }
1378 break;
1379 case "varequal":
1380 case "varlt":
1381 case "varlte":
1382 case "vargt":
1383 case "vargte":
1384 case "varsubset":
1385 case "varinside":
1386 case "varsubstring":
1387 if ($this->responsevar != null) {
1388 $this->responsevar->setContent($a_data);
1389 }
1390 break;
1391 case "decvar":
1392 if (strlen($a_data)) {
1393 if ($this->decvar != null) {
1394 $this->decvar->setContent($a_data);
1395 }
1396 }
1397 break;
1398 case "mattext":
1399 if ($this->mattext != null) {
1400 $this->mattext->setContent($a_data);
1401 }
1402 break;
1403 case "matapplet":
1404 if ($this->matapplet != null) {
1405 $this->matapplet->setContent($a_data);
1406 }
1407 break;
1408 case "matimage":
1409 if ($this->matimage != null) {
1410 $this->matimage->setContent($a_data);
1411 }
1412 break;
1413 case "duration":
1414 switch ($this->getParent($a_xml_parser)) {
1415 case "assessment":
1416 // to be done
1417 break;
1418 case "section":
1419 // to be done
1420 break;
1421 case "item":
1422 $this->item->setDuration($a_data);
1423 break;
1424 }
1425 break;
1426 case "qticomment":
1427 switch ($this->getParent($a_xml_parser)) {
1428 case "item":
1429 $this->item->setComment($a_data);
1430 break;
1431 case "assessment":
1432 $this->assessment->setComment($a_data);
1433 break;
1434 default:
1435 break;
1436 }
1437 break;
1438 }
1439 $this->sametag = true;
1440 }
getParent($a_xml_parser)

References $characterbuffer, and getParent().

Referenced by handlerCharacterData().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ handlerParseEndTag()

ilQTIParser::handlerParseEndTag (   $a_xml_parser,
  $a_name 
)

handler for end of element parser

Definition at line 1003 of file class.ilQTIParser.php.

1004 {
1005 if (($this->do_nothing) && (strcmp(strtolower($a_name), "item") != 0)) {
1006 return;
1007 }
1008 switch (strtolower($a_name)) {
1009 case "assessment":
1010 if (is_object($this->tst_object)) {
1011 $this->tst_object->fromXML($this->assessment);
1012 }
1013 $this->in_assessment = false;
1014 break;
1015 case "assessmentcontrol":
1016 $this->assessment->addAssessmentcontrol($this->assessmentcontrol);
1017 $this->assessmentcontrol = null;
1018 break;
1019 case "objectives":
1020 if (strcmp(strtolower($this->getParent($a_xml_parser)), "assessment") == 0) {
1021 $this->assessment->addObjectives($this->objectives);
1022 }
1023 $this->in_objectives = false;
1024 break;
1025 case 'presentation_material':
1026 $this->assessment->setPresentationMaterial($this->prensentation_material);
1027 $this->in_prensentation_material = false;
1028 break;
1029 case "itemmetadata":
1030 $this->in_itemmetadata = false;
1031 break;
1032 case "qtimetadatafield":
1033 // handle only specific ILIAS metadata
1034 switch ($this->metadata["label"]) {
1035 case "ILIAS_VERSION":
1036 if ($this->item != null) {
1037 $this->item->setIliasSourceVersion(
1038 $this->fetchNumericVersionFromVersionDateString($this->metadata["entry"])
1039 );
1040 }
1041 break;
1042 case "QUESTIONTYPE":
1043 if ($this->item != null) {
1044 $this->item->setQuestiontype($this->metadata["entry"]);
1045 }
1046 break;
1047 case "AUTHOR":
1048 if ($this->item != null) {
1049 $this->item->setAuthor($this->metadata["entry"]);
1050 }
1051 // no break
1052 default:
1053 if ($this->item != null) {
1054 $this->item->addMetadata($this->metadata);
1055 }
1056 break;
1057 }
1058 if ($this->in_assessment) {
1059 $this->assessment->addQtiMetadata($this->metadata);
1060 }
1061 $this->metadata = array("label" => "", "entry" => "");
1062 break;
1063 case "flow":
1064 $this->flow--;
1065 break;
1066 case "flow_mat":
1067 if (count($this->flow_mat)) {
1068 $flow_mat = array_pop($this->flow_mat);
1069 if (count($this->flow_mat)) {
1070 $this->flow_mat[count($this->flow_mat) - 1]->addFlow_mat($flow_mat);
1071 } elseif ($this->in_prensentation_material) {
1072 $this->prensentation_material->addFlowMat($flow_mat);
1073 } elseif ($this->itemfeedback != null) {
1074 $this->itemfeedback->addFlow_mat($flow_mat);
1075 } elseif ($this->response_label != null) {
1076 $this->response_label->addFlow_mat($flow_mat);
1077 }
1078 }
1079 break;
1080 case "itemfeedback":
1081 if ($this->item != null) {
1082 if ($this->itemfeedback != null) {
1083 $this->item->addItemfeedback($this->itemfeedback);
1084 }
1085 }
1086 $this->itemfeedback = null;
1087 break;
1088 case "displayfeedback":
1089 if ($this->respcondition != null) {
1090 if ($this->displayfeedback != null) {
1091 $this->respcondition->addDisplayfeedback($this->displayfeedback);
1092 }
1093 }
1094 $this->displayfeedback = null;
1095 break;
1096 case "setvar":
1097 if ($this->respcondition != null) {
1098 if ($this->setvar != null) {
1099 $this->respcondition->addSetvar($this->setvar);
1100 }
1101 }
1102 $this->setvar = null;
1103 break;
1104 case "conditionvar":
1105 if ($this->respcondition != null) {
1106 $this->respcondition->setConditionvar($this->conditionvar);
1107 }
1108 $this->conditionvar = null;
1109 break;
1110 case "varequal":
1111 case "varlt":
1112 case "varlte":
1113 case "vargt":
1114 case "vargte":
1115 case "varsubset":
1116 case "varinside":
1117 case "varsubstring":
1118 if ($this->conditionvar != null) {
1119 if ($this->responsevar != null) {
1120 $this->conditionvar->addResponseVar($this->responsevar);
1121 }
1122 }
1123 $this->responsevar = null;
1124 break;
1125 case "respcondition":
1126 if ($this->resprocessing != null) {
1127 $this->resprocessing->addRespcondition($this->respcondition);
1128 }
1129 $this->respcondition = null;
1130 break;
1131 case "outcomes":
1132 if ($this->resprocessing != null) {
1133 $this->resprocessing->setOutcomes($this->outcomes);
1134 }
1135 $this->outcomes = null;
1136 break;
1137 case "decvar":
1138 if ($this->outcomes != null) {
1139 $this->outcomes->addDecvar($this->decvar);
1140 }
1141 $this->decvar = null;
1142 break;
1143 case "presentation":
1144 $this->in_presentation = false;
1145 if ($this->presentation != null) {
1146 if ($this->item != null) {
1147 $this->item->setPresentation($this->presentation);
1148 }
1149 }
1150 $this->presentation = null;
1151 break;
1152 case "response_label":
1153 if ($this->render_type != null) {
1154 $this->render_type->addResponseLabel($this->response_label);
1155 $this->response_label = null;
1156 }
1157 break;
1158 case "render_choice":
1159 case "render_hotspot":
1160 case "render_fib":
1161 if ($this->in_response) {
1162 if ($this->response != null) {
1163 if ($this->render_type != null) {
1164 $this->response->setRenderType($this->render_type);
1165 $this->render_type = null;
1166 }
1167 }
1168 }
1169 break;
1170 case "response_lid":
1171 case "response_xy":
1172 case "response_str":
1173 case "response_num":
1174 case "response_grp":
1175 $this->gap_index++;
1176 if ($this->presentation != null) {
1177 if ($this->response != null) {
1178 $this->presentation->addResponse($this->response);
1179 if ($this->item != null) {
1180 $this->item->addPresentationitem($this->response);
1181 }
1182 }
1183 }
1184 $this->response = null;
1185 $this->in_response = false;
1186 break;
1187 case "item":
1188 if ($this->do_nothing) {
1189 $this->do_nothing = false;
1190 return;
1191 }
1192 if (strlen($this->item->getQuestionType())) {
1193 // this is an ILIAS QTI question
1194 } else {
1195 // this is a QTI question which wasn't generated by ILIAS
1196 }
1197 global $ilDB;
1198 global $ilUser;
1199 // save the item directly to save memory
1200 // the database id's of the created items are exported. if the import fails
1201 // ILIAS can delete the already imported items
1202
1203 // problems: the object id of the parent questionpool is not yet known. must be set later
1204 // the complete flag must be calculated?
1205 $qt = $this->item->determineQuestionType();
1206 $presentation = $this->item->getPresentation();
1207
1209 return;
1210 }
1211
1212 include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php";
1214 $question = new $qt();
1215 $fbt = str_replace('ass', 'ilAss', $qt) . 'Feedback';
1216 $question->feedbackOBJ = new $fbt(
1217 $question,
1218 $GLOBALS['ilCtrl'],
1219 $GLOBALS['ilDB'],
1220 $GLOBALS['lng']
1221 );
1222 $question->fromXML(
1223 $this->item,
1224 $this->qpl_id,
1225 $this->tst_id,
1226 $this->tst_object,
1227 $this->question_counter,
1228 $this->import_mapping,
1229 $this->solutionhints
1230 );
1231
1232 $this->solutionhints = [];
1233
1234 $this->numImportedItems++;
1235
1236 break;
1237 case "material":
1238 if ($this->material) {
1239 $mat = $this->material->getMaterial(0);
1240 if ((strcmp($mat["type"], "mattext") == 0) && (strcmp($mat["material"]->getLabel(), "suggested_solution") == 0)) {
1241 $this->item->addSuggestedSolution($mat["material"], $this->gap_index);
1242 }
1243 if ($this->in_objectives) {
1244 $this->objectives->addMaterial($this->material);
1245 } elseif (($this->render_type != null) && (strcmp(strtolower($this->getParent($a_xml_parser)), "render_hotspot") == 0)) {
1246 $this->render_type->addMaterial($this->material);
1247 } elseif (count($this->flow_mat) && (strcmp(strtolower($this->getParent($a_xml_parser)), "flow_mat") == 0)) {
1248 $this->flow_mat[count($this->flow_mat) - 1]->addMaterial($this->material);
1249 } elseif ($this->itemfeedback != null) {
1250 $this->itemfeedback->addMaterial($this->material);
1251 } elseif ($this->response_label != null) {
1252 $this->response_label->addMaterial($this->material);
1253 } elseif ($this->response != null) {
1254 if ($this->response->hasRendering()) {
1255 $this->response->setMaterial2($this->material);
1256 } else {
1257 $this->response->setMaterial1($this->material);
1258 }
1259 } elseif (($this->in_presentation) && (!$this->in_response)) {
1260 if (!is_object($this->item->getQuestiontext())) {
1261 $this->item->setQuestiontext($this->material);
1262 }
1263 $this->presentation->addMaterial($this->material);
1264 } elseif ($this->presentation != null) {
1265 $this->presentation->addMaterial($this->material);
1266 if ($this->item != null) {
1267 $this->item->addPresentationitem($this->material);
1268 }
1269 }
1270 }
1271 $this->material = null;
1272 break;
1273 case "matimage":
1274
1275 if (!$this->isMatImageAvailable()) {
1276 break;
1277 }
1278
1279 if ($this->virusDetected($this->matimage->getRawContent())) {
1280 break;
1281 }
1282
1283 require_once 'Services/QTI/classes/class.ilQtiMatImageSecurity.php';
1284 try {
1285 $matImageSecurity = new ilQtiMatImageSecurity($this->matimage);
1286 $matImageSecurity->sanitizeLabel();
1287 } catch (Exception $e) {
1288 break;
1289 }
1290 if (!$matImageSecurity->validate()) {
1291 break;
1292 }
1293
1294 $this->material->addMatimage($this->matimage);
1295 $this->matimage = null;
1296 break;
1297
1298 // add support for matbreak element
1299 case "matbreak":
1300 $this->mattext = new ilQTIMattext();
1301 $this->mattext->setContent('<br />');
1302 $this->material->addMattext($this->mattext);
1303 $this->mattext = null;
1304 break;
1305 case "resprocessing":
1306 if ($this->item != null) {
1307 $this->item->addResprocessing($this->resprocessing);
1308 }
1309 $this->resprocessing = null;
1310 break;
1311 case "mattext":
1312 if ($this->material != null) {
1313 $this->material->addMattext($this->mattext);
1314 }
1315 $this->mattext = null;
1316 break;
1317 case "matapplet":
1318 if ($this->material != null) {
1319 $this->material->addMatapplet($this->matapplet);
1320 }
1321 $this->matapplet = null;
1322 break;
1323
1325 $this->solutionhint['txt'] = $this->characterbuffer;
1326 $this->solutionhints[] = $this->solutionhint;
1327 break;
1328 }
1329 $this->depth[$a_xml_parser]--;
1330 }
if(!defined('PATH_SEPARATOR')) $GLOBALS['_PEAR_default_error_mode']
Definition: PEAR.php:64
static _includeClass($question_type, $gui=0)
Include the php class file for a given question type.
static isImportable($questionTypeTag)
fetchNumericVersionFromVersionDateString($versionDateString)
virusDetected($buffer)
$ilUser
Definition: imgupload.php:18
global $ilDB

References $characterbuffer, Vendor\Package\$e, $flow_mat, $GLOBALS, $ilDB, $ilUser, $presentation, $solutionhint, assQuestion\_includeClass(), fetchNumericVersionFromVersionDateString(), getParent(), ilAssQuestionTypeList\isImportable(), isMatImageAvailable(), assQuestionExport\ITEM_SOLUTIONHINT, and virusDetected().

Referenced by handlerEndTag().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ handlerVerifyBeginTag()

ilQTIParser::handlerVerifyBeginTag (   $a_xml_parser,
  $a_name,
  $a_attribs 
)

handler for begin of element verification

Definition at line 1445 of file class.ilQTIParser.php.

1446 {
1447 $this->qti_element = $a_name;
1448
1449 switch (strtolower($a_name)) {
1450 case "assessment":
1451 include_once("./Services/QTI/classes/class.ilQTIAssessment.php");
1452 $this->assessment = &$this->assessments[array_push($this->assessments, new ilQTIAssessment()) - 1];
1453 $this->in_assessment = true;
1454 if (is_array($a_attribs)) {
1455 foreach ($a_attribs as $attribute => $value) {
1456 switch (strtolower($attribute)) {
1457 case "title":
1458 $this->assessment->setTitle($value);
1459 break;
1460 case "ident":
1461 $this->assessment->setIdent($value);
1462 break;
1463 }
1464 }
1465 }
1466 break;
1467 case "questestinterop":
1468 $this->verifyroot = true;
1469 break;
1470 case "qtimetadatafield":
1471 $this->metadata = array("label" => "", "entry" => "");
1472 $this->verifymetadatafield = 1;
1473 break;
1474 case "fieldlabel":
1475 $this->verifyfieldlabeltext = "";
1476 if ($this->verifymetadatafield == 1) {
1477 $this->verifyfieldlabel = 1;
1478 }
1479 break;
1480 case "fieldentry":
1481 $this->verifyfieldentrytext = "";
1482 if ($this->verifymetadatafield == 1) {
1483 $this->verifyfieldentry = 1;
1484 }
1485 break;
1486 case "item":
1487 $title = "";
1488 if (is_array($a_attribs)) {
1489 foreach ($a_attribs as $attribute => $value) {
1490 switch (strtolower($attribute)) {
1491 case "title":
1492 $title = $value;
1493 break;
1494 }
1495 }
1496 }
1497 array_push($this->founditems, array("title" => "$title", "type" => "", "ident" => $a_attribs["ident"]));
1498 break;
1499 case "response_lid":
1500 if (strlen($this->founditems[count($this->founditems) - 1]["type"]) == 0) {
1501 // test for non ILIAS generated question types
1502 if (is_array($a_attribs)) {
1503 foreach ($a_attribs as $attribute => $value) {
1504 switch (strtolower($attribute)) {
1505 case "rcardinality":
1506 include_once "./Services/QTI/classes/class.ilQTIItem.php";
1507 switch (strtolower($value)) {
1508 case "single":
1509 $this->founditems[count($this->founditems) - 1]["type"] = QT_MULTIPLE_CHOICE_SR;
1510 break;
1511 case "multiple":
1512 $this->founditems[count($this->founditems) - 1]["type"] = QT_MULTIPLE_CHOICE_MR;
1513 break;
1514 case "ordered":
1515 $this->founditems[count($this->founditems) - 1]["type"] = QT_ORDERING;
1516 break;
1517 }
1518 break;
1519 }
1520 }
1521 }
1522 }
1523 break;
1524 case "response_str":
1525 if (strlen($this->founditems[count($this->founditems) - 1]["type"]) == 0) {
1526 // test for non ILIAS generated question types
1527 if (is_array($a_attribs)) {
1528 foreach ($a_attribs as $attribute => $value) {
1529 switch (strtolower($attribute)) {
1530 case "rcardinality":
1531 include_once "./Services/QTI/classes/class.ilQTIItem.php";
1532 switch (strtolower($value)) {
1533 case "single":
1534 $this->founditems[count($this->founditems) - 1]["type"] = QT_CLOZE;
1535 break;
1536 case "ordered":
1537 $this->founditems[count($this->founditems) - 1]["type"] = QT_TEXT;
1538 break;
1539 }
1540 break;
1541 }
1542 }
1543 }
1544 }
1545 break;
1546 case "response_xy":
1547 if (strlen($this->founditems[count($this->founditems) - 1]["type"]) == 0) {
1548 $this->founditems[count($this->founditems) - 1]["type"] = QT_IMAGEMAP;
1549 }
1550 break;
1551 case "response_num":
1552 if (strlen($this->founditems[count($this->founditems) - 1]["type"]) == 0) {
1553 $this->founditems[count($this->founditems) - 1]["type"] = QT_NUMERIC;
1554 }
1555 break;
1556 case "response_grp":
1557 if (strlen($this->founditems[count($this->founditems) - 1]["type"]) == 0) {
1558 $this->founditems[count($this->founditems) - 1]["type"] = QT_MATCHING;
1559 }
1560 break;
1561 case "qticomment":
1562 // check for "old" ILIAS qti format (not well formed)
1563 $this->verifyqticomment = 1;
1564 break;
1565 case "presentation":
1566 if (is_array($a_attribs)) {
1567 foreach ($a_attribs as $attribute => $value) {
1568 switch (strtolower($attribute)) {
1569 case "label":
1570 $this->founditems[count($this->founditems) - 1]["title"] = $value;
1571 break;
1572 }
1573 }
1574 }
1575 break;
1576 }
1577 }
const QT_CLOZE
const QT_IMAGEMAP
const QT_MULTIPLE_CHOICE_MR
const QT_MATCHING
const QT_ORDERING
const QT_NUMERIC
const QT_MULTIPLE_CHOICE_SR
const QT_TEXT

References QT_CLOZE, QT_IMAGEMAP, QT_MATCHING, QT_MULTIPLE_CHOICE_MR, QT_MULTIPLE_CHOICE_SR, QT_NUMERIC, QT_ORDERING, and QT_TEXT.

Referenced by handlerBeginTag().

+ Here is the caller graph for this function:

◆ handlerVerifyCharacterData()

ilQTIParser::handlerVerifyCharacterData (   $a_xml_parser,
  $a_data 
)

handler for character data verification

Definition at line 1627 of file class.ilQTIParser.php.

1628 {
1629 if ($this->verifyqticomment == 1) {
1630 if (preg_match("/Questiontype\=(.*)/", $a_data, $matches)) {
1631 if (count($this->founditems)) {
1632 $this->founditems[count($this->founditems) - 1]["type"] = $matches[1];
1633 }
1634 }
1635 } elseif ($this->verifyfieldlabel == 1) {
1636 $this->verifyfieldlabeltext = $a_data;
1637 } elseif ($this->verifyfieldentry == 1) {
1638 $this->verifyfieldentrytext = $a_data;
1639 }
1640
1641 switch ($this->qti_element) {
1642 case "fieldlabel":
1643 $this->metadata["label"] = $a_data;
1644 break;
1645 case "fieldentry":
1646 $this->metadata["entry"] = $a_data;
1647 break;
1648 }
1649 }

Referenced by handlerCharacterData().

+ Here is the caller graph for this function:

◆ handlerVerifyEndTag()

ilQTIParser::handlerVerifyEndTag (   $a_xml_parser,
  $a_name 
)

handler for end of element verification

Definition at line 1582 of file class.ilQTIParser.php.

1583 {
1584 switch (strtolower($a_name)) {
1585 case "assessment":
1586 foreach ($this->assessment->qtimetadata as $metaField) {
1587 if ($metaField['label'] == 'question_set_type') {
1588 $this->setQuestionSetType($metaField['entry']);
1589 break;
1590 } elseif ($metaField['label'] == 'random_test') {
1591 if ($metaField['entry'] == 1) {
1593 } else {
1595 }
1596 break;
1597 }
1598 }
1599 $this->in_assessment = false;
1600 break;
1601 case "qticomment":
1602 // check for "old" ILIAS qti format (not well formed)
1603 $this->verifyqticomment = 0;
1604 break;
1605 case "qtimetadatafield":
1606 $this->verifymetadatafield = 0;
1607 if (strcmp($this->verifyfieldlabeltext, "QUESTIONTYPE") == 0) {
1608 $this->founditems[count($this->founditems) - 1]["type"] = $this->verifyfieldentrytext;
1609 }
1610 if ($this->in_assessment) {
1611 $this->assessment->addQtiMetadata($this->metadata);
1612 }
1613 $this->metadata = array("label" => "", "entry" => "");
1614 break;
1615 case "fieldlabel":
1616 $this->verifyfieldlabel = 0;
1617 break;
1618 case "fieldentry":
1619 $this->verifyfieldentry = 0;
1620 break;
1621 }
1622 }
const QUESTION_SET_TYPE_RANDOM
type setting value for random question set
const QUESTION_SET_TYPE_FIXED
type setting value for fixed question set
setQuestionSetType($questionSetType)

References $verifyfieldentrytext, ilObjTest\QUESTION_SET_TYPE_FIXED, ilObjTest\QUESTION_SET_TYPE_RANDOM, and setQuestionSetType().

Referenced by handlerEndTag().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isIgnoreItemsEnabled()

ilQTIParser::isIgnoreItemsEnabled ( )
Returns
boolean

Definition at line 126 of file class.ilQTIParser.php.

127 {
129 }

References $ignoreItemsEnabled.

Referenced by handlerParseBeginTag().

+ Here is the caller graph for this function:

◆ isMatImageAvailable()

ilQTIParser::isMatImageAvailable ( )
protected

Definition at line 1763 of file class.ilQTIParser.php.

1764 {
1765 if (!$this->material) {
1766 return false;
1767 }
1768
1769 if (!$this->matimage) {
1770 return false;
1771 }
1772
1773 return true;
1774 }

Referenced by handlerParseEndTag().

+ Here is the caller graph for this function:

◆ openXMLFile()

ilQTIParser::openXMLFile ( )

open xml file

@access private

Exceptions
ilSaxParserExceptionor ILIAS Error

Reimplemented from ilSaxParser.

Definition at line 1693 of file class.ilQTIParser.php.

1694 {
1695 $xmlContent = file_get_contents($this->xml_file);
1696 $xmlContent = $this->cleanInvalidXmlChars($xmlContent);
1697 file_put_contents($this->xml_file, $xmlContent);
1698
1699 return parent::openXMLFile();
1700 }
cleanInvalidXmlChars($xmlContent)

References cleanInvalidXmlChars().

+ Here is the call graph for this function:

◆ setHandlers()

ilQTIParser::setHandlers (   $a_xml_parser)

set event handler should be overwritten by inherited class @access private

Reimplemented from ilSaxParser.

Definition at line 249 of file class.ilQTIParser.php.

250 {
251 xml_set_object($a_xml_parser, $this);
252 xml_set_element_handler($a_xml_parser, 'handlerBeginTag', 'handlerEndTag');
253 xml_set_character_data_handler($a_xml_parser, 'handlerCharacterData');
254 }

◆ setIgnoreItemsEnabled()

ilQTIParser::setIgnoreItemsEnabled (   $ignoreItemsEnabled)
Parameters
boolean$ignoreItemsEnabled

Definition at line 134 of file class.ilQTIParser.php.

135 {
136 $this->ignoreItemsEnabled = $ignoreItemsEnabled;
137 }

References $ignoreItemsEnabled.

◆ setParserMode()

ilQTIParser::setParserMode (   $a_mode = IL_MO_PARSE_QTI)

Definition at line 230 of file class.ilQTIParser.php.

231 {
232 $this->parser_mode = $a_mode;
233 $this->founditems = array();
234 $this->verifyroot = false;
235 $this->verifyqticomment = 0;
236 $this->verifymetadatafield = 0;
237 $this->verifyfieldlabel = 0;
238 $this->verifyfieldentry = 0;
239 $this->verifyfieldlabeltext = "";
240 $this->verifyfieldentrytext = "";
241 $this->question_counter = 1;
242 }

Referenced by __construct().

+ Here is the caller graph for this function:

◆ setQuestionSetType()

ilQTIParser::setQuestionSetType (   $questionSetType)
Parameters
null$questionSetType

Definition at line 217 of file class.ilQTIParser.php.

218 {
219 $this->questionSetType = $questionSetType;
220 }

References $questionSetType.

Referenced by handlerVerifyEndTag().

+ Here is the caller graph for this function:

◆ setTestObject()

ilQTIParser::setTestObject ( $a_tst_object)

Definition at line 222 of file class.ilQTIParser.php.

223 {
224 $this->tst_object = &$a_tst_object;
225 if (is_object($a_tst_object)) {
226 $this->tst_id = $this->tst_object->getId();
227 }
228 }

◆ setXMLContent()

ilQTIParser::setXMLContent (   $a_xml_content)

Reimplemented from ilSaxParser.

Definition at line 1686 of file class.ilQTIParser.php.

1687 {
1688 $a_xml_content = $this->cleanInvalidXmlChars($a_xml_content);
1689
1690 return parent::setXMLContent($a_xml_content);
1691 }

References cleanInvalidXmlChars().

+ Here is the call graph for this function:

◆ startParsing()

ilQTIParser::startParsing ( )

stores xml data in array

@access private

Exceptions
ilSaxParserExceptionor ILIAS Error

Reimplemented from ilSaxParser.

Definition at line 256 of file class.ilQTIParser.php.

257 {
258 $this->question_counter = 1;
259 parent::startParsing();
260 return false;
261 }

◆ virusDetected()

ilQTIParser::virusDetected (   $buffer)
protected

Definition at line 1776 of file class.ilQTIParser.php.

1777 {
1778 require_once 'Services/VirusScanner/classes/class.ilVirusScannerFactory.php';
1780
1781 if ($vs === null) {
1782 return false; // no virus scan, no virus detected
1783 }
1784
1785 return (bool) $vs->scanBuffer($buffer);
1786 }

References ilVirusScannerFactory\_getInstance().

Referenced by handlerParseEndTag().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Field Documentation

◆ $assessment

ilQTIParser::$assessment

Definition at line 82 of file class.ilQTIParser.php.

◆ $assessmentcontrol

ilQTIParser::$assessmentcontrol

Definition at line 83 of file class.ilQTIParser.php.

◆ $assessments

ilQTIParser::$assessments

Definition at line 81 of file class.ilQTIParser.php.

◆ $characterbuffer

ilQTIParser::$characterbuffer

Definition at line 72 of file class.ilQTIParser.php.

Referenced by handlerParseCharacterData(), and handlerParseEndTag().

◆ $conditionvar

ilQTIParser::$conditionvar

Definition at line 73 of file class.ilQTIParser.php.

◆ $decvar

ilQTIParser::$decvar

Definition at line 62 of file class.ilQTIParser.php.

◆ $depth

ilQTIParser::$depth

Definition at line 46 of file class.ilQTIParser.php.

◆ $displayfeedback

ilQTIParser::$displayfeedback

Definition at line 65 of file class.ilQTIParser.php.

◆ $do_nothing

ilQTIParser::$do_nothing

Definition at line 79 of file class.ilQTIParser.php.

◆ $flow

ilQTIParser::$flow

Definition at line 68 of file class.ilQTIParser.php.

◆ $flow_mat

ilQTIParser::$flow_mat

Definition at line 67 of file class.ilQTIParser.php.

Referenced by handlerParseEndTag().

◆ $founditems

ilQTIParser::$founditems = array()

Definition at line 92 of file class.ilQTIParser.php.

Referenced by getFoundItems().

◆ $gap_index

ilQTIParser::$gap_index

Definition at line 80 of file class.ilQTIParser.php.

◆ $hasRootElement

ilQTIParser::$hasRootElement

Definition at line 42 of file class.ilQTIParser.php.

◆ $ignoreItemsEnabled

ilQTIParser::$ignoreItemsEnabled = false
protected

Definition at line 121 of file class.ilQTIParser.php.

Referenced by isIgnoreItemsEnabled(), and setIgnoreItemsEnabled().

◆ $import_idents

ilQTIParser::$import_idents

Definition at line 75 of file class.ilQTIParser.php.

◆ $import_mapping

ilQTIParser::$import_mapping

Definition at line 87 of file class.ilQTIParser.php.

Referenced by getImportMapping().

◆ $in_assessment

ilQTIParser::$in_assessment = false

Definition at line 85 of file class.ilQTIParser.php.

◆ $in_itemmetadata

ilQTIParser::$in_itemmetadata

Definition at line 89 of file class.ilQTIParser.php.

◆ $in_objectives

ilQTIParser::$in_objectives = false

Definition at line 90 of file class.ilQTIParser.php.

◆ $in_prensentation_material

ilQTIParser::$in_prensentation_material = false
protected

Definition at line 116 of file class.ilQTIParser.php.

◆ $in_presentation

ilQTIParser::$in_presentation

Definition at line 48 of file class.ilQTIParser.php.

◆ $in_response

ilQTIParser::$in_response

Definition at line 49 of file class.ilQTIParser.php.

◆ $item

ilQTIParser::$item

Definition at line 45 of file class.ilQTIParser.php.

◆ $itemfeedback

ilQTIParser::$itemfeedback

Definition at line 66 of file class.ilQTIParser.php.

◆ $items

ilQTIParser::$items

Definition at line 44 of file class.ilQTIParser.php.

◆ $lng

ilQTIParser::$lng

Definition at line 41 of file class.ilQTIParser.php.

Referenced by __construct().

◆ $material

ilQTIParser::$material

Definition at line 52 of file class.ilQTIParser.php.

◆ $matimage

ilQTIParser::$matimage

Definition at line 57 of file class.ilQTIParser.php.

◆ $mattext

ilQTIParser::$mattext

Definition at line 70 of file class.ilQTIParser.php.

◆ $numImportedItems

ilQTIParser::$numImportedItems = 0
protected

Definition at line 107 of file class.ilQTIParser.php.

Referenced by getNumImportedItems().

◆ $objectives

ilQTIParser::$objectives

Definition at line 84 of file class.ilQTIParser.php.

◆ $outcomes

ilQTIParser::$outcomes

Definition at line 61 of file class.ilQTIParser.php.

◆ $parser_mode

ilQTIParser::$parser_mode

Definition at line 74 of file class.ilQTIParser.php.

◆ $path

ilQTIParser::$path

Definition at line 43 of file class.ilQTIParser.php.

◆ $prensentation_material

ilQTIParser::$prensentation_material
protected

Definition at line 112 of file class.ilQTIParser.php.

◆ $presentation

ilQTIParser::$presentation

Definition at line 69 of file class.ilQTIParser.php.

Referenced by handlerParseEndTag().

◆ $qpl_id

ilQTIParser::$qpl_id

Definition at line 76 of file class.ilQTIParser.php.

◆ $qti_element

ilQTIParser::$qti_element

Definition at line 47 of file class.ilQTIParser.php.

◆ $question_counter

ilQTIParser::$question_counter = 1

Definition at line 88 of file class.ilQTIParser.php.

◆ $questionSetType

ilQTIParser::$questionSetType = null
protected

Definition at line 139 of file class.ilQTIParser.php.

Referenced by getQuestionSetType(), and setQuestionSetType().

◆ $render_type

ilQTIParser::$render_type

Definition at line 50 of file class.ilQTIParser.php.

◆ $respcondition

ilQTIParser::$respcondition

Definition at line 63 of file class.ilQTIParser.php.

◆ $response

ilQTIParser::$response

Definition at line 59 of file class.ilQTIParser.php.

◆ $response_label

ilQTIParser::$response_label

Definition at line 51 of file class.ilQTIParser.php.

◆ $resprocessing

ilQTIParser::$resprocessing

Definition at line 60 of file class.ilQTIParser.php.

◆ $sametag

ilQTIParser::$sametag

Definition at line 71 of file class.ilQTIParser.php.

◆ $section

ilQTIParser::$section

Definition at line 86 of file class.ilQTIParser.php.

◆ $setvar

ilQTIParser::$setvar

Definition at line 64 of file class.ilQTIParser.php.

◆ $solutionhint

ilQTIParser::$solutionhint = null
protected

Definition at line 101 of file class.ilQTIParser.php.

Referenced by handlerParseEndTag().

◆ $solutionhints

ilQTIParser::$solutionhints = []

Definition at line 102 of file class.ilQTIParser.php.

◆ $tst_id

ilQTIParser::$tst_id

Definition at line 77 of file class.ilQTIParser.php.

◆ $tst_object

ilQTIParser::$tst_object

Definition at line 78 of file class.ilQTIParser.php.

◆ $verifyfieldentry

ilQTIParser::$verifyfieldentry = 0

Definition at line 98 of file class.ilQTIParser.php.

◆ $verifyfieldentrytext

ilQTIParser::$verifyfieldentrytext = ""

Definition at line 99 of file class.ilQTIParser.php.

Referenced by handlerVerifyEndTag().

◆ $verifyfieldlabel

ilQTIParser::$verifyfieldlabel = 0

Definition at line 96 of file class.ilQTIParser.php.

◆ $verifyfieldlabeltext

ilQTIParser::$verifyfieldlabeltext = ""

Definition at line 97 of file class.ilQTIParser.php.

◆ $verifymetadatafield

ilQTIParser::$verifymetadatafield = 0

Definition at line 95 of file class.ilQTIParser.php.

◆ $verifyqticomment

ilQTIParser::$verifyqticomment = 0

Definition at line 94 of file class.ilQTIParser.php.

◆ $verifyroot

ilQTIParser::$verifyroot = false

Definition at line 93 of file class.ilQTIParser.php.


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