本文整理汇总了PHP中ilXmlWriter::xmlEndTag方法的典型用法代码示例。如果您正苦于以下问题:PHP ilXmlWriter::xmlEndTag方法的具体用法?PHP ilXmlWriter::xmlEndTag怎么用?PHP ilXmlWriter::xmlEndTag使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ilXmlWriter
的用法示例。
在下文中一共展示了ilXmlWriter::xmlEndTag方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: simpleExport
public function simpleExport($orgu_ref_id)
{
$nodes = $this->getStructure($orgu_ref_id);
$writer = new ilXmlWriter();
$writer->xmlStartTag("OrgUnits");
foreach ($nodes as $orgu_ref_id) {
$orgu = new ilObjOrgUnit($orgu_ref_id);
if ($orgu->getRefId() == ilObjOrgUnit::getRootOrgRefId()) {
continue;
}
$attributes = $this->getAttributesForOrgu($orgu);
$writer->xmlStartTag("OrgUnit", $attributes);
$writer->xmlElement("external_id", null, $this->buildExternalId($orgu_ref_id));
$writer->xmlElement("title", null, $orgu->getTitle());
$writer->xmlElement("description", null, $orgu->getDescription());
$writer->xmlEndTag("OrgUnit");
}
$writer->xmlEndTag("OrgUnits");
return $writer;
}
示例2: toXML
/**
* 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
*
* @return string The QTI xml representation of the question
* @access public
*/
function toXML($a_include_header = true, $a_include_binary = true, $a_shuffle = false, $test_output = false, $force_image_references = false)
{
global $ilias;
include_once "./Services/Xml/classes/class.ilXmlWriter.php";
$a_xml_writer = new ilXmlWriter();
// set xml header
$a_xml_writer->xmlHeader();
$a_xml_writer->xmlStartTag("questestinterop");
$attrs = array("ident" => "il_" . IL_INST_ID . "_qst_" . $this->object->getId(), "title" => $this->object->getTitle(), "maxattempts" => $this->object->getNrOfTries());
$a_xml_writer->xmlStartTag("item", $attrs);
// add question description
$a_xml_writer->xmlElement("qticomment", NULL, $this->object->getComment());
// add estimated working time
$workingtime = $this->object->getEstimatedWorkingTime();
$duration = sprintf("P0Y0M0DT%dH%dM%dS", $workingtime["h"], $workingtime["m"], $workingtime["s"]);
$a_xml_writer->xmlElement("duration", NULL, $duration);
// add ILIAS specific metadata
$a_xml_writer->xmlStartTag("itemmetadata");
$a_xml_writer->xmlStartTag("qtimetadata");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "ILIAS_VERSION");
$a_xml_writer->xmlElement("fieldentry", NULL, $ilias->getSetting("ilias_version"));
$a_xml_writer->xmlEndTag("qtimetadatafield");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "QUESTIONTYPE");
$a_xml_writer->xmlElement("fieldentry", NULL, $this->object->getQuestionType());
$a_xml_writer->xmlEndTag("qtimetadatafield");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "AUTHOR");
$a_xml_writer->xmlElement("fieldentry", NULL, $this->object->getAuthor());
$a_xml_writer->xmlEndTag("qtimetadatafield");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "points");
$a_xml_writer->xmlElement("fieldentry", NULL, $this->object->getPoints());
$a_xml_writer->xmlEndTag("qtimetadatafield");
// save the accounts definition
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "accounts_content");
$a_xml_writer->xmlElement("fieldentry", NULL, base64_encode($this->object->getAccountsXML()));
$a_xml_writer->xmlEndTag("qtimetadatafield");
// save the question parts
$parts = array();
foreach ($this->object->getParts() as $part_obj) {
$part = array("part_id" => $part_obj->getPartId(), "position" => $part_obj->getPosition(), "text" => $part_obj->getText(), "max_points" => $part_obj->getMaxPoints(), "max_lines" => $part_obj->getMaxLines(), "booking_def" => base64_encode($part_obj->getBookingXML()));
$parts[] = $part;
}
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "booking_parts");
$a_xml_writer->xmlElement("fieldentry", NULL, serialize($parts));
$a_xml_writer->xmlEndTag("qtimetadatafield");
// additional content editing information
$this->addAdditionalContentEditingModeInformation($a_xml_writer);
$this->addGeneralMetadata($a_xml_writer);
$a_xml_writer->xmlEndTag("qtimetadata");
$a_xml_writer->xmlEndTag("itemmetadata");
// PART I: qti presentation
$attrs = array("label" => $this->object->getTitle());
$a_xml_writer->xmlStartTag("presentation", $attrs);
// add flow to presentation
$a_xml_writer->xmlStartTag("flow");
// add material with question text to presentation
$this->object->addQTIMaterial($a_xml_writer, $this->object->getQuestion());
// add material with text of question parts to presentation
foreach ($this->object->getParts() as $part_obj) {
$this->object->addQTIMaterial($a_xml_writer, $part_obj->getText());
}
$a_xml_writer->xmlEndTag("flow");
$a_xml_writer->xmlEndTag("presentation");
// PART III: qti itemfeedback
$feedback_allcorrect = $this->object->feedbackOBJ->getGenericFeedbackExportPresentation($this->object->getId(), true);
$feedback_onenotcorrect = $this->object->feedbackOBJ->getGenericFeedbackExportPresentation($this->object->getId(), false);
$attrs = array("ident" => "Correct", "view" => "All");
$a_xml_writer->xmlStartTag("itemfeedback", $attrs);
// qti flow_mat
$a_xml_writer->xmlStartTag("flow_mat");
$a_xml_writer->xmlStartTag("material");
$a_xml_writer->xmlElement("mattext");
$a_xml_writer->xmlEndTag("material");
$a_xml_writer->xmlEndTag("flow_mat");
$a_xml_writer->xmlEndTag("itemfeedback");
if (strlen($feedback_allcorrect)) {
$attrs = array("ident" => "response_allcorrect", "view" => "All");
$a_xml_writer->xmlStartTag("itemfeedback", $attrs);
// qti flow_mat
$a_xml_writer->xmlStartTag("flow_mat");
$this->object->addQTIMaterial($a_xml_writer, $feedback_allcorrect);
$a_xml_writer->xmlEndTag("flow_mat");
$a_xml_writer->xmlEndTag("itemfeedback");
}
if (strlen($feedback_onenotcorrect)) {
$attrs = array("ident" => "response_onenotcorrect", "view" => "All");
//.........这里部分代码省略.........
示例3: toXML
/**
* export questions to xml
*/
function toXML($questions)
{
if (!is_array($questions)) {
$questions =& $this->getQuestions();
}
if (count($questions) == 0) {
$questions =& $this->getQuestions();
}
$xml = "";
include_once "./Services/Xml/classes/class.ilXmlWriter.php";
$a_xml_writer = new ilXmlWriter();
// set xml header
$a_xml_writer->xmlHeader();
$attrs = array("xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance", "xsi:noNamespaceSchemaLocation" => "http://www.ilias.de/download/xsd/ilias_survey_4_2.xsd");
$a_xml_writer->xmlStartTag("surveyobject", $attrs);
$attrs = array("id" => "qpl_" . $this->getId(), "label" => $this->getTitle(), "online" => $this->getOnline());
$a_xml_writer->xmlStartTag("surveyquestions", $attrs);
$a_xml_writer->xmlElement("dummy", NULL, "dummy");
// add ILIAS specific metadata
$a_xml_writer->xmlStartTag("metadata");
$a_xml_writer->xmlStartTag("metadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "SCORM");
include_once "./Services/MetaData/classes/class.ilMD.php";
$md = new ilMD($this->getId(), 0, $this->getType());
$writer = new ilXmlWriter();
$md->toXml($writer);
$metadata = $writer->xmlDumpMem();
$a_xml_writer->xmlElement("fieldentry", NULL, $metadata);
$a_xml_writer->xmlEndTag("metadatafield");
$a_xml_writer->xmlEndTag("metadata");
$a_xml_writer->xmlEndTag("surveyquestions");
$a_xml_writer->xmlEndTag("surveyobject");
$xml = $a_xml_writer->xmlDumpMem(FALSE);
$questionxml = "";
foreach ($questions as $key => $value) {
$questiontype = $this->getQuestiontype($value);
include_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
SurveyQuestion::_includeClass($questiontype);
$question = new $questiontype();
$question->loadFromDb($value);
$questionxml .= $question->toXML(false);
}
$xml = str_replace("<dummy>dummy</dummy>", $questionxml, $xml);
return $xml;
}
示例4: toXML
/**
* 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
*
* @return string The QTI xml representation of the question
* @access public
*/
function toXML($a_include_header = true, $a_include_binary = true, $a_shuffle = false, $test_output = false, $force_image_references = false)
{
global $ilias;
include_once "./Services/Xml/classes/class.ilXmlWriter.php";
$a_xml_writer = new ilXmlWriter();
// set xml header
$a_xml_writer->xmlHeader();
$a_xml_writer->xmlStartTag("questestinterop");
$attrs = array("ident" => "il_" . IL_INST_ID . "_qst_" . $this->object->getId(), "title" => $this->object->getTitle(), "maxattempts" => $this->object->getNrOfTries());
$a_xml_writer->xmlStartTag("item", $attrs);
// add question description
$a_xml_writer->xmlElement("qticomment", NULL, $this->object->getComment());
// add estimated working time
$workingtime = $this->object->getEstimatedWorkingTime();
$duration = sprintf("P0Y0M0DT%dH%dM%dS", $workingtime["h"], $workingtime["m"], $workingtime["s"]);
$a_xml_writer->xmlElement("duration", NULL, $duration);
// add ILIAS specific metadata
$a_xml_writer->xmlStartTag("itemmetadata");
$a_xml_writer->xmlStartTag("qtimetadata");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "ILIAS_VERSION");
$a_xml_writer->xmlElement("fieldentry", NULL, $ilias->getSetting("ilias_version"));
$a_xml_writer->xmlEndTag("qtimetadatafield");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "QUESTIONTYPE");
$a_xml_writer->xmlElement("fieldentry", NULL, IMAGEMAP_QUESTION_IDENTIFIER);
$a_xml_writer->xmlEndTag("qtimetadatafield");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "AUTHOR");
$a_xml_writer->xmlElement("fieldentry", NULL, $this->object->getAuthor());
$a_xml_writer->xmlEndTag("qtimetadatafield");
$a_xml_writer->xmlEndTag("qtimetadata");
$a_xml_writer->xmlEndTag("itemmetadata");
// PART I: qti presentation
$attrs = array("label" => $this->object->getTitle());
$a_xml_writer->xmlStartTag("presentation", $attrs);
// add flow to presentation
$a_xml_writer->xmlStartTag("flow");
// add material with question text to presentation
$this->object->addQTIMaterial($a_xml_writer, $this->object->getQuestion());
// add answers to presentation
$attrs = array("ident" => "IM", "rcardinality" => "Single");
$a_xml_writer->xmlStartTag("response_xy", $attrs);
$solution = $this->object->getSuggestedSolution(0);
if (count($solution)) {
if (preg_match("/il_(\\d*?)_(\\w+)_(\\d+)/", $solution["internal_link"], $matches)) {
$a_xml_writer->xmlStartTag("material");
$intlink = "il_" . IL_INST_ID . "_" . $matches[2] . "_" . $matches[3];
if (strcmp($matches[1], "") != 0) {
$intlink = $solution["internal_link"];
}
$attrs = array("label" => "suggested_solution");
$a_xml_writer->xmlElement("mattext", $attrs, $intlink);
$a_xml_writer->xmlEndTag("material");
}
}
$a_xml_writer->xmlStartTag("render_hotspot");
$a_xml_writer->xmlStartTag("material");
$imagetype = "image/jpeg";
if (preg_match("/.*\\.(png|gif)\$/", $this->object->getImageFilename(), $matches)) {
$imagetype = "image/" . $matches[1];
}
$attrs = array("imagtype" => $imagetype, "label" => $this->object->getImageFilename());
if ($a_include_binary) {
if ($force_image_references) {
$attrs["uri"] = $this->object->getImagePathWeb() . $this->object->getImageFilename();
$a_xml_writer->xmlElement("matimage", $attrs);
} else {
$attrs["embedded"] = "base64";
$imagepath = $this->object->getImagePath() . $this->object->getImageFilename();
$fh = fopen($imagepath, "rb");
if ($fh == false) {
global $ilErr;
$ilErr->raiseError($this->object->lng->txt("error_open_image_file"), $ilErr->MESSAGE);
return;
}
$imagefile = fread($fh, filesize($imagepath));
fclose($fh);
$base64 = base64_encode($imagefile);
$a_xml_writer->xmlElement("matimage", $attrs, $base64, FALSE, FALSE);
}
} else {
$a_xml_writer->xmlElement("matimage", $attrs);
}
$a_xml_writer->xmlEndTag("material");
// add answers
foreach ($this->object->getAnswers() as $index => $answer) {
$rared = "";
switch ($answer->getArea()) {
case "rect":
$rarea = "Rectangle";
//.........这里部分代码省略.........
示例5: addQtiMetaDataField
/**
* 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)
*
* @final
* @access protected
* @param ilXmlWriter $a_xml_writer
* @param string $fieldLabel
* @param string $fieldValue
*/
protected final function addQtiMetaDataField(ilXmlWriter $a_xml_writer, $fieldLabel, $fieldValue)
{
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, $fieldLabel);
$a_xml_writer->xmlElement("fieldentry", NULL, $fieldValue);
$a_xml_writer->xmlEndTag("qtimetadatafield");
}
示例6: toXML
/**
* Returns a QTI xml representation of the question and sets the internal
* domxml variable with the DOM XML representation of the QTI xml representation
*
* @return string The QTI xml representation of the question
* @access public
*/
function toXML($a_include_header = true, $a_include_binary = true, $a_shuffle = false, $test_output = false, $force_image_references = false)
{
global $ilias;
include_once "./Services/Xml/classes/class.ilXmlWriter.php";
$a_xml_writer = new ilXmlWriter();
// set xml header
$a_xml_writer->xmlHeader();
$a_xml_writer->xmlStartTag("questestinterop");
$attrs = array("ident" => "il_" . IL_INST_ID . "_qst_" . $this->object->getId(), "title" => $this->object->getTitle(), "maxattempts" => $this->object->getNrOfTries());
$a_xml_writer->xmlStartTag("item", $attrs);
// add question description
$a_xml_writer->xmlElement("qticomment", NULL, $this->object->getComment());
// add estimated working time
$workingtime = $this->object->getEstimatedWorkingTime();
$duration = sprintf("P0Y0M0DT%dH%dM%dS", $workingtime["h"], $workingtime["m"], $workingtime["s"]);
$a_xml_writer->xmlElement("duration", NULL, $duration);
// add ILIAS specific metadata
$a_xml_writer->xmlStartTag("itemmetadata");
$a_xml_writer->xmlStartTag("qtimetadata");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "ILIAS_VERSION");
$a_xml_writer->xmlElement("fieldentry", NULL, $ilias->getSetting("ilias_version"));
$a_xml_writer->xmlEndTag("qtimetadatafield");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "QUESTIONTYPE");
$a_xml_writer->xmlElement("fieldentry", NULL, $this->object->getQuestionType());
$a_xml_writer->xmlEndTag("qtimetadatafield");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "AUTHOR");
$a_xml_writer->xmlElement("fieldentry", NULL, $this->object->getAuthor());
$a_xml_writer->xmlEndTag("qtimetadatafield");
// additional content editing information
$this->addAdditionalContentEditingModeInformation($a_xml_writer);
$this->addGeneralMetadata($a_xml_writer);
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "points_wrong");
$a_xml_writer->xmlElement("fieldentry", NULL, $this->object->getPointsWrong());
$a_xml_writer->xmlEndTag("qtimetadatafield");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "errortext");
$a_xml_writer->xmlElement("fieldentry", NULL, $this->object->getErrorText());
$a_xml_writer->xmlEndTag("qtimetadatafield");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "textsize");
$a_xml_writer->xmlElement("fieldentry", NULL, $this->object->getTextSize());
$a_xml_writer->xmlEndTag("qtimetadatafield");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "errordata");
$serialized = array();
foreach ($this->object->getErrorData() as $data) {
array_push($serialized, array($data->text_correct, $data->text_wrong, $data->points));
}
$a_xml_writer->xmlElement("fieldentry", NULL, serialize($serialized));
$a_xml_writer->xmlEndTag("qtimetadatafield");
$a_xml_writer->xmlEndTag("qtimetadata");
$a_xml_writer->xmlEndTag("itemmetadata");
// PART I: qti presentation
$attrs = array("label" => $this->object->getTitle());
$a_xml_writer->xmlStartTag("presentation", $attrs);
// add flow to presentation
$a_xml_writer->xmlStartTag("flow");
// add material with question text to presentation
$this->object->addQTIMaterial($a_xml_writer, $this->object->getQuestion());
// add answers to presentation
$a_xml_writer->xmlEndTag("flow");
$a_xml_writer->xmlEndTag("presentation");
$a_xml_writer->xmlEndTag("item");
$a_xml_writer->xmlEndTag("questestinterop");
$xml = $a_xml_writer->xmlDumpMem(FALSE);
if (!$a_include_header) {
$pos = strpos($xml, "?>");
$xml = substr($xml, $pos + 2);
}
return $xml;
}
示例7: toXML
/**
* 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
*
* @return string The QTI xml representation of the question
* @access public
*/
function toXML($a_include_header = true, $a_include_binary = true, $a_shuffle = false, $test_output = false, $force_image_references = false)
{
global $ilias;
include_once "./Services/Math/classes/class.EvalMath.php";
$eval = new EvalMath();
$eval->suppress_errors = TRUE;
include_once "./Services/Xml/classes/class.ilXmlWriter.php";
$a_xml_writer = new ilXmlWriter();
// set xml header
$a_xml_writer->xmlHeader();
$a_xml_writer->xmlStartTag("questestinterop");
$attrs = array("ident" => "il_" . IL_INST_ID . "_qst_" . $this->object->getId(), "title" => $this->object->getTitle(), "maxattempts" => $this->object->getNrOfTries());
$a_xml_writer->xmlStartTag("item", $attrs);
// add question description
$a_xml_writer->xmlElement("qticomment", NULL, $this->object->getComment());
// add estimated working time
$workingtime = $this->object->getEstimatedWorkingTime();
$duration = sprintf("P0Y0M0DT%dH%dM%dS", $workingtime["h"], $workingtime["m"], $workingtime["s"]);
$a_xml_writer->xmlElement("duration", NULL, $duration);
// add ILIAS specific metadata
$a_xml_writer->xmlStartTag("itemmetadata");
$a_xml_writer->xmlStartTag("qtimetadata");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "ILIAS_VERSION");
$a_xml_writer->xmlElement("fieldentry", NULL, $ilias->getSetting("ilias_version"));
$a_xml_writer->xmlEndTag("qtimetadatafield");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "QUESTIONTYPE");
$a_xml_writer->xmlElement("fieldentry", NULL, CLOZE_TEST_IDENTIFIER);
$a_xml_writer->xmlEndTag("qtimetadatafield");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "AUTHOR");
$a_xml_writer->xmlElement("fieldentry", NULL, $this->object->getAuthor());
$a_xml_writer->xmlEndTag("qtimetadatafield");
// additional content editing information
$this->addAdditionalContentEditingModeInformation($a_xml_writer);
$this->addGeneralMetadata($a_xml_writer);
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "textgaprating");
$a_xml_writer->xmlElement("fieldentry", NULL, $this->object->getTextgapRating());
$a_xml_writer->xmlEndTag("qtimetadatafield");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "fixedTextLength");
$a_xml_writer->xmlElement("fieldentry", NULL, $this->object->getFixedTextLength());
$a_xml_writer->xmlEndTag("qtimetadatafield");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "identicalScoring");
$a_xml_writer->xmlElement("fieldentry", NULL, $this->object->getIdenticalScoring());
$a_xml_writer->xmlEndTag("qtimetadatafield");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "combinations");
$a_xml_writer->xmlElement("fieldentry", NULL, base64_encode(json_encode($this->object->getGapCombinations())));
$a_xml_writer->xmlEndTag("qtimetadatafield");
$a_xml_writer->xmlEndTag("qtimetadata");
$a_xml_writer->xmlEndTag("itemmetadata");
// PART I: qti presentation
$attrs = array("label" => $this->object->getTitle());
$a_xml_writer->xmlStartTag("presentation", $attrs);
// add flow to presentation
$a_xml_writer->xmlStartTag("flow");
$questionText = $this->object->getQuestion() ? $this->object->getQuestion() : ' ';
$this->object->addQTIMaterial($a_xml_writer, $questionText);
$text_parts = preg_split("/\\[gap.*?\\[\\/gap\\]/", $this->object->getClozeText());
// add material with question text to presentation
for ($i = 0; $i <= $this->object->getGapCount(); $i++) {
$this->object->addQTIMaterial($a_xml_writer, $text_parts[$i]);
if ($i < $this->object->getGapCount()) {
// add gap
$gap = $this->object->getGap($i);
switch ($gap->getType()) {
case CLOZE_SELECT:
// comboboxes
$attrs = array("ident" => "gap_{$i}", "rcardinality" => "Single");
$a_xml_writer->xmlStartTag("response_str", $attrs);
$solution = $this->object->getSuggestedSolution($i);
if (count($solution)) {
if (preg_match("/il_(\\d*?)_(\\w+)_(\\d+)/", $solution["internal_link"], $matches)) {
$attrs = array("label" => "suggested_solution");
$a_xml_writer->xmlStartTag("material", $attrs);
$intlink = "il_" . IL_INST_ID . "_" . $matches[2] . "_" . $matches[3];
if (strcmp($matches[1], "") != 0) {
$intlink = $solution["internal_link"];
}
$a_xml_writer->xmlElement("mattext", NULL, $intlink);
$a_xml_writer->xmlEndTag("material");
}
}
$attrs = array("shuffle" => $gap->getShuffle() ? "Yes" : "No");
$a_xml_writer->xmlStartTag("render_choice", $attrs);
// add answers
foreach ($gap->getItems() as $answeritem) {
//.........这里部分代码省略.........
示例8: _appendXMLByObjId
/**
* Get xml of object values
*
* @param ilXmlWriter $a_xml_writer
* @param int $a_obj_id
*/
public static function _appendXMLByObjId(ilXmlWriter $a_xml_writer, $a_obj_id)
{
$a_xml_writer->xmlStartTag('AdvancedMetaData');
self::preloadByObjIds(array($a_obj_id));
$values_records = self::preloadedRead(ilObject::_lookupType($a_obj_id), $a_obj_id);
foreach ($values_records as $values_record) {
$defs = $values_record->getDefinitions();
foreach ($values_record->getADTGroup()->getElements() as $element_id => $element) {
$def = $defs[$element_id];
$value = null;
if (!$element->isNull()) {
$value = $def->getValueForXML($element);
}
$a_xml_writer->xmlElement('Value', array('id' => $def->getImportId()), $value);
}
}
$a_xml_writer->xmlEndTag('AdvancedMetaData');
}
示例9: toXML
/**
* 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
*
* @return string The QTI xml representation of the question
* @access public
*/
function toXML($a_include_header = true, $a_include_binary = true, $a_shuffle = false, $test_output = false, $force_image_references = false)
{
global $ilias;
include_once 'Services/Xml/classes/class.ilXmlWriter.php';
$a_xml_writer = new ilXmlWriter();
// set xml header
$a_xml_writer->xmlHeader();
$a_xml_writer->xmlStartTag("questestinterop");
$attrs = array("ident" => "il_" . IL_INST_ID . "_qst_" . $this->object->getId(), "title" => $this->object->getTitle());
$a_xml_writer->xmlStartTag("item", $attrs);
// add question description
$a_xml_writer->xmlElement("qticomment", NULL, $this->object->getComment());
// add estimated working time
$workingtime = $this->object->getEstimatedWorkingTime();
$duration = sprintf("P0Y0M0DT%dH%dM%dS", $workingtime["h"], $workingtime["m"], $workingtime["s"]);
$a_xml_writer->xmlElement("duration", NULL, $duration);
// add ILIAS specific metadata
$a_xml_writer->xmlStartTag("itemmetadata");
$a_xml_writer->xmlStartTag("qtimetadata");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "ILIAS_VERSION");
$a_xml_writer->xmlElement("fieldentry", NULL, $ilias->getSetting("ilias_version"));
$a_xml_writer->xmlEndTag("qtimetadatafield");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "QUESTIONTYPE");
$a_xml_writer->xmlElement("fieldentry", NULL, $this->object->getQuestionType());
$a_xml_writer->xmlEndTag("qtimetadatafield");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "AUTHOR");
$a_xml_writer->xmlElement("fieldentry", NULL, $this->object->getAuthor());
$a_xml_writer->xmlEndTag("qtimetadatafield");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "points");
$a_xml_writer->xmlElement("fieldentry", NULL, $this->object->getPoints());
$a_xml_writer->xmlEndTag("qtimetadatafield");
foreach ($this->object->getVariables() as $variable) {
$var = array("precision" => $variable->getPrecision(), "intprecision" => $variable->getIntprecision(), "rangemin" => $variable->getRangeMin(), "rangemax" => $variable->getRangeMax(), "unit" => is_object($variable->getUnit()) ? $variable->getUnit()->getUnit() : "", "unitvalue" => is_object($variable->getUnit()) ? $variable->getUnit()->getId() : "");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, $variable->getVariable());
$a_xml_writer->xmlElement("fieldentry", NULL, serialize($var));
$a_xml_writer->xmlEndTag("qtimetadatafield");
}
foreach ($this->object->getResults() as $result) {
$resultunits = $this->object->getResultUnits($result);
$ru = array();
foreach ($resultunits as $unit) {
array_push($ru, array("unit" => $unit->getUnit(), "unitvalue" => $unit->getId()));
}
$res = array("precision" => $result->getPrecision(), "tolerance" => $result->getTolerance(), "rangemin" => $result->getRangeMin(), "rangemax" => $result->getRangeMax(), "points" => $result->getPoints(), "formula" => $result->getFormula(), "rating" => $result->getRatingSimple() ? "" : array("sign" => $result->getRatingSign(), "value" => $result->getRatingValue(), "unit" => $result->getRatingUnit()), "unit" => is_object($result->getUnit()) ? $result->getUnit()->getUnit() : "", "unitvalue" => is_object($result->getUnit()) ? $result->getUnit()->getId() : "", "resultunits" => $ru);
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, $result->getResult());
$a_xml_writer->xmlElement("fieldentry", NULL, serialize($res));
$a_xml_writer->xmlEndTag("qtimetadatafield");
}
// additional content editing information
$this->addAdditionalContentEditingModeInformation($a_xml_writer);
$this->addGeneralMetadata($a_xml_writer);
$a_xml_writer->xmlEndTag("qtimetadata");
$a_xml_writer->xmlEndTag("itemmetadata");
// PART I: qti presentation
$attrs = array("label" => $this->object->getTitle());
$a_xml_writer->xmlStartTag("presentation", $attrs);
// add flow to presentation
$a_xml_writer->xmlStartTag("flow");
// add material with question text to presentation
$this->object->addQTIMaterial($a_xml_writer, $this->object->getQuestion());
// add answers to presentation
$a_xml_writer->xmlEndTag("flow");
$a_xml_writer->xmlEndTag("presentation");
$a_xml_writer->xmlEndTag("item");
$a_xml_writer->xmlEndTag("questestinterop");
$xml = $a_xml_writer->xmlDumpMem(FALSE);
if (!$a_include_header) {
$pos = strpos($xml, "?>");
$xml = substr($xml, $pos + 2);
}
return $xml;
}
示例10: toXML
public function toXML($a_include_header = true, $a_include_binary = true, $a_shuffle = false, $test_output = false, $force_image_references = false)
{
global $ilias;
include_once "./Services/Xml/classes/class.ilXmlWriter.php";
$xml = new ilXmlWriter();
// set xml header
$xml->xmlHeader();
$xml->xmlStartTag("questestinterop");
$attrs = array("ident" => "il_" . IL_INST_ID . "_qst_" . $this->object->getId(), "title" => $this->object->getTitle(), "maxattempts" => $this->object->getNrOfTries());
$xml->xmlStartTag("item", $attrs);
// add question description
$xml->xmlElement("qticomment", NULL, $this->object->getComment());
// add estimated working time
$workingtime = $this->object->getEstimatedWorkingTime();
$duration = sprintf("P0Y0M0DT%dH%dM%dS", $workingtime["h"], $workingtime["m"], $workingtime["s"]);
$xml->xmlElement("duration", NULL, $duration);
// add ILIAS specific metadata
$xml->xmlStartTag("itemmetadata");
$xml->xmlStartTag("qtimetadata");
$xml->xmlStartTag("qtimetadatafield");
$xml->xmlElement("fieldlabel", NULL, "ILIAS_VERSION");
$xml->xmlElement("fieldentry", NULL, $ilias->getSetting("ilias_version"));
$xml->xmlEndTag("qtimetadatafield");
$xml->xmlStartTag("qtimetadatafield");
$xml->xmlElement("fieldlabel", NULL, "QUESTIONTYPE");
$xml->xmlElement("fieldentry", NULL, KPRIM_CHOICE_QUESTION_IDENTIFIER);
$xml->xmlEndTag("qtimetadatafield");
$xml->xmlStartTag("qtimetadatafield");
$xml->xmlElement("fieldlabel", NULL, "AUTHOR");
$xml->xmlElement("fieldentry", NULL, $this->object->getAuthor());
$xml->xmlEndTag("qtimetadatafield");
// additional content editing information
$this->addAdditionalContentEditingModeInformation($xml);
$this->addGeneralMetadata($xml);
$xml->xmlStartTag("qtimetadatafield");
$xml->xmlElement("fieldlabel", NULL, "answer_type");
$xml->xmlElement("fieldentry", NULL, $this->object->getAnswerType());
$xml->xmlEndTag("qtimetadatafield");
$xml->xmlStartTag("qtimetadatafield");
$xml->xmlElement("fieldlabel", NULL, "thumb_size");
$xml->xmlElement("fieldentry", NULL, $this->object->getThumbSize());
$xml->xmlEndTag("qtimetadatafield");
$xml->xmlStartTag("qtimetadatafield");
$xml->xmlElement("fieldlabel", NULL, "option_label_setting");
$xml->xmlElement("fieldentry", NULL, $this->object->getOptionLabel());
$xml->xmlEndTag("qtimetadatafield");
$xml->xmlStartTag("qtimetadatafield");
$xml->xmlElement("fieldlabel", NULL, "custom_true_option_label");
$xml->xmlElement("fieldentry", NULL, $this->object->getCustomTrueOptionLabel());
$xml->xmlEndTag("qtimetadatafield");
$xml->xmlStartTag("qtimetadatafield");
$xml->xmlElement("fieldlabel", NULL, "custom_false_option_label");
$xml->xmlElement("fieldentry", NULL, $this->object->getCustomFalseOptionLabel());
$xml->xmlEndTag("qtimetadatafield");
$xml->xmlStartTag("qtimetadatafield");
$xml->xmlElement("fieldlabel", NULL, "feedback_setting");
$xml->xmlElement("fieldentry", NULL, $this->object->getSpecificFeedbackSetting());
$xml->xmlEndTag("qtimetadatafield");
$xml->xmlEndTag("qtimetadata");
$xml->xmlEndTag("itemmetadata");
// PART I: qti presentation
$attrs = array("label" => $this->object->getTitle());
$xml->xmlStartTag("presentation", $attrs);
// add flow to presentation
$xml->xmlStartTag("flow");
// add material with question text to presentation
$this->object->addQTIMaterial($xml, $this->object->getQuestion());
// add answers to presentation
$attrs = array("ident" => "MCMR", "rcardinality" => "Multiple");
$xml->xmlStartTag("response_lid", $attrs);
$solution = $this->object->getSuggestedSolution(0);
if (count($solution)) {
if (preg_match("/il_(\\d*?)_(\\w+)_(\\d+)/", $solution["internal_link"], $matches)) {
$xml->xmlStartTag("material");
$intlink = "il_" . IL_INST_ID . "_" . $matches[2] . "_" . $matches[3];
if (strcmp($matches[1], "") != 0) {
$intlink = $solution["internal_link"];
}
$attrs = array("label" => "suggested_solution");
$xml->xmlElement("mattext", $attrs, $intlink);
$xml->xmlEndTag("material");
}
}
// shuffle output
$attrs = array();
if ($this->object->isShuffleAnswersEnabled()) {
$attrs = array("shuffle" => "Yes");
} else {
$attrs = array("shuffle" => "No");
}
$xml->xmlStartTag("render_choice", $attrs);
// add answers
$answers =& $this->object->getAnswers();
$akeys = array_keys($answers);
foreach ($akeys as $index) {
$answer = $this->object->getAnswer($index);
$xml->xmlStartTag('response_label', array('ident' => $answer->getPosition()));
if (strlen($answer->getImageFile())) {
$this->object->addQTIMaterial($xml, $answer->getAnswertext(), FALSE, FALSE);
$imagetype = "image/jpeg";
//.........这里部分代码省略.........
示例11: processExporter
/**
* Process exporter
*
* @param
* @return
*/
function processExporter($a_comp, $a_class, $a_entity, $a_target_release, $a_id)
{
$success = true;
if (!is_array($a_id)) {
if ($a_id == "") {
return;
}
$a_id = array($a_id);
}
// get exporter object
$export_class_file = "./" . $a_comp . "/classes/class." . $a_class . ".php";
//echo "1-".$export_class_file."-"; exit;
if (!is_file($export_class_file)) {
echo "1-not found:" . $export_class_file . "-";
exit;
return false;
}
include_once $export_class_file;
$exp = new $a_class();
if (!isset($this->cnt[$a_comp])) {
$this->cnt[$a_comp] = 1;
} else {
$this->cnt[$a_comp]++;
}
$set_dir_relative = $a_comp . "/set_" . $this->cnt[$a_comp];
$set_dir_absolute = $this->export_run_dir . "/" . $set_dir_relative;
ilUtil::makeDirParents($set_dir_absolute);
$exp->init();
$sv = $exp->determineSchemaVersion($a_entity, $a_target_release);
// process head dependencies
$sequence = $exp->getXmlExportHeadDependencies($a_entity, $a_target_release, $a_id);
foreach ($sequence as $s) {
$comp = explode("/", $s["component"]);
$exp_class = "il" . $comp[1] . "Exporter";
$s = $this->processExporter($s["component"], $exp_class, $s["entity"], $a_target_release, $s["ids"]);
if (!$s) {
$success = false;
}
}
// write export.xml file
$export_writer = new ilXmlWriter();
$export_writer->xmlHeader();
$attribs = array("InstallationId" => IL_INST_ID, "InstallationUrl" => ILIAS_HTTP_PATH, "Entity" => $a_entity, "SchemaVersion" => $sv["schema_version"], "TargetRelease" => $a_target_release, "xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance", "xmlns:exp" => "http://www.ilias.de/Services/Export/exp/4_1", "xsi:schemaLocation" => "http://www.ilias.de/Services/Export/exp/4_1 " . ILIAS_HTTP_PATH . "/xml/ilias_export_4_1.xsd");
if ($sv["namespace"] != "" && $sv["xsd_file"] != "") {
$attribs["xsi:schemaLocation"] .= " " . $sv["namespace"] . " " . ILIAS_HTTP_PATH . "/xml/" . $sv["xsd_file"];
$attribs["xmlns"] = $sv["namespace"];
}
if ($sv["uses_dataset"]) {
$attribs["xsi:schemaLocation"] .= " " . "http://www.ilias.de/Services/DataSet/ds/4_3 " . ILIAS_HTTP_PATH . "/xml/ilias_ds_4_3.xsd";
$attribs["xmlns:ds"] = "http://www.ilias.de/Services/DataSet/ds/4_3";
}
$export_writer->xmlStartTag('exp:Export', $attribs);
$dir_cnt = 1;
foreach ($a_id as $id) {
$exp->setExportDirectories($set_dir_relative . "/expDir_" . $dir_cnt, $set_dir_absolute . "/expDir_" . $dir_cnt);
$export_writer->xmlStartTag('exp:ExportItem', array("Id" => $id));
//$xml = $exp->getXmlRepresentation($a_entity, $a_target_release, $id);
$xml = $exp->getXmlRepresentation($a_entity, $sv["schema_version"], $id);
$export_writer->appendXml($xml);
$export_writer->xmlEndTag('exp:ExportItem');
$dir_cnt++;
}
$export_writer->xmlEndTag('exp:Export');
$export_writer->xmlDumpFile($set_dir_absolute . "/export.xml", false);
$this->manifest_writer->xmlElement("ExportFile", array("Component" => $a_comp, "Path" => $set_dir_relative . "/export.xml"));
// process tail dependencies
$sequence = $exp->getXmlExportTailDependencies($a_entity, $a_target_release, $a_id);
foreach ($sequence as $s) {
$comp = explode("/", $s["component"]);
$exp_class = "il" . $comp[1] . "Exporter";
$s = $this->processExporter($s["component"], $exp_class, $s["entity"], $a_target_release, $s["ids"]);
if (!$s) {
$success = false;
}
}
return $success;
}
示例12: toXML
/**
* 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
*
* @return string The QTI xml representation of the question
* @access public
*/
function toXML($a_include_header = true, $a_include_binary = true, $a_shuffle = false, $test_output = false, $force_image_references = false)
{
global $ilias;
include_once "./Services/Xml/classes/class.ilXmlWriter.php";
$a_xml_writer = new ilXmlWriter();
// set xml header
$a_xml_writer->xmlHeader();
$a_xml_writer->xmlStartTag("questestinterop");
$attrs = array("ident" => "il_" . IL_INST_ID . "_qst_" . $this->object->getId(), "title" => $this->object->getTitle(), "maxattempts" => $this->object->getNrOfTries());
$a_xml_writer->xmlStartTag("item", $attrs);
// add question description
$a_xml_writer->xmlElement("qticomment", NULL, $this->object->getComment());
// add estimated working time
$workingtime = $this->object->getEstimatedWorkingTime();
$duration = sprintf("P0Y0M0DT%dH%dM%dS", $workingtime["h"], $workingtime["m"], $workingtime["s"]);
$a_xml_writer->xmlElement("duration", NULL, $duration);
// add ILIAS specific metadata
$a_xml_writer->xmlStartTag("itemmetadata");
$a_xml_writer->xmlStartTag("qtimetadata");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "ILIAS_VERSION");
$a_xml_writer->xmlElement("fieldentry", NULL, $ilias->getSetting("ilias_version"));
$a_xml_writer->xmlEndTag("qtimetadatafield");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "QUESTIONTYPE");
$a_xml_writer->xmlElement("fieldentry", NULL, NUMERIC_QUESTION_IDENTIFIER);
$a_xml_writer->xmlEndTag("qtimetadatafield");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "AUTHOR");
$a_xml_writer->xmlElement("fieldentry", NULL, $this->object->getAuthor());
$a_xml_writer->xmlEndTag("qtimetadatafield");
// additional content editing information
$this->addAdditionalContentEditingModeInformation($a_xml_writer);
$this->addGeneralMetadata($a_xml_writer);
$a_xml_writer->xmlEndTag("qtimetadata");
$a_xml_writer->xmlEndTag("itemmetadata");
// PART I: qti presentation
$attrs = array("label" => $this->object->getTitle());
$a_xml_writer->xmlStartTag("presentation", $attrs);
// add flow to presentation
$a_xml_writer->xmlStartTag("flow");
// add material with question text to presentation
$this->object->addQTIMaterial($a_xml_writer, $this->object->getQuestion());
// add answers to presentation
$attrs = array("ident" => "NUM", "rcardinality" => "Single", "numtype" => "Decimal");
$a_xml_writer->xmlStartTag("response_num", $attrs);
$solution = $this->object->getSuggestedSolution(0);
if (count($solution)) {
if (preg_match("/il_(\\d*?)_(\\w+)_(\\d+)/", $solution["internal_link"], $matches)) {
$a_xml_writer->xmlStartTag("material");
$intlink = "il_" . IL_INST_ID . "_" . $matches[2] . "_" . $matches[3];
if (strcmp($matches[1], "") != 0) {
$intlink = $solution["internal_link"];
}
$attrs = array("label" => "suggested_solution");
$a_xml_writer->xmlElement("mattext", $attrs, $intlink);
$a_xml_writer->xmlEndTag("material");
}
}
// shuffle output
$attrs = array("fibtype" => "Decimal", "maxchars" => $this->object->getMaxChars());
$a_xml_writer->xmlStartTag("render_fib", $attrs);
$a_xml_writer->xmlEndTag("render_fib");
$a_xml_writer->xmlEndTag("response_num");
$a_xml_writer->xmlEndTag("flow");
$a_xml_writer->xmlEndTag("presentation");
// PART II: qti resprocessing
$a_xml_writer->xmlStartTag("resprocessing");
$a_xml_writer->xmlStartTag("outcomes");
$a_xml_writer->xmlStartTag("decvar");
$a_xml_writer->xmlEndTag("decvar");
$a_xml_writer->xmlEndTag("outcomes");
// add response conditions
$a_xml_writer->xmlStartTag("respcondition");
// qti conditionvar
$a_xml_writer->xmlStartTag("conditionvar");
$attrs = array("respident" => "NUM");
$a_xml_writer->xmlElement("vargte", $attrs, $this->object->getLowerLimit());
$a_xml_writer->xmlElement("varlte", $attrs, $this->object->getUpperLimit());
$a_xml_writer->xmlEndTag("conditionvar");
// qti setvar
$attrs = array("action" => "Add");
$a_xml_writer->xmlElement("setvar", $attrs, $this->object->getPoints());
// qti displayfeedback
$attrs = array("feedbacktype" => "Response", "linkrefid" => "Correct");
$a_xml_writer->xmlElement("displayfeedback", $attrs);
$a_xml_writer->xmlEndTag("respcondition");
$feedback_allcorrect = $this->object->feedbackOBJ->getGenericFeedbackExportPresentation($this->object->getId(), true);
if (strlen($feedback_allcorrect)) {
$attrs = array("continue" => "Yes");
$a_xml_writer->xmlStartTag("respcondition", $attrs);
//.........这里部分代码省略.........
示例13: getXmlRepresentation
/**
* Get xml representation
*
* @param string entity
* @param string schema version
* @param string id
* @return string xml string
*/
public function getXmlRepresentation($a_entity, $a_schema_version, $a_id)
{
$parts = explode(":", $a_id);
if (sizeof($parts) != 2) {
return;
}
$obj_id = $parts[0];
$rec_id = $parts[1];
// any data for current record and object?
include_once 'Services/AdvancedMetaData/classes/class.ilAdvancedMDValues.php';
$raw = ilAdvancedMDValues::findByObjectId($obj_id);
if (!$raw) {
return;
}
// gather sub-item data from value entries
$sub_items = array();
foreach ($raw as $item) {
$sub_items[$item["sub_type"]][] = $item["sub_id"];
}
// gather all relevant data
$items = array();
foreach ($sub_items as $sub_type => $sub_ids) {
foreach (array_unique($sub_ids) as $sub_id) {
$values_record = new ilAdvancedMDValues($rec_id, $obj_id, $sub_type, $sub_id);
$defs = $values_record->getDefinitions();
$values_record->read();
foreach ($values_record->getADTGroup()->getElements() as $element_id => $element) {
if (!$element->isNull()) {
$def = $defs[$element_id];
$items[$rec_id][] = array('id' => $def->getImportId(), 'sub_type' => $sub_type, 'sub_id' => $sub_id, 'value' => $def->getValueForXML($element));
}
}
}
}
// we only want non-empty fields
if (sizeof($items)) {
$xml = new ilXmlWriter();
foreach ($items as $record_id => $record_items) {
// no need to state record id here
$xml->xmlStartTag('AdvancedMetaData');
foreach ($record_items as $item) {
$xml->xmlElement('Value', array('id' => $item['id'], 'sub_type' => $item['sub_type'], 'sub_id' => $item['sub_id']), $item['value']);
}
$xml->xmlEndTag('AdvancedMetaData');
}
return $xml->xmlDumpMem(false);
}
}
示例14: toXml
/**
* Write xml of template action
* @param ilXmlWriter $writer
*/
public function toXml(ilXmlWriter $writer)
{
$writer->xmlStartTag('localRoleAction');
$il_id = 'il_' . IL_INST_ID . '_' . ilObject::_lookupType($this->getRoleTemplateId()) . '_' . $this->getRoleTemplateId();
$writer->xmlStartTag('roleTemplate', array('id' => $il_id));
include_once './Services/AccessControl/classes/class.ilRoleXmlExport.php';
$exp = new ilRoleXmlExport();
$exp->setMode(ilRoleXmlExport::MODE_DTPL);
$exp->addRole($this->getRoleTemplateId(), ROLE_FOLDER_ID);
$exp->write();
$writer->appendXML($exp->xmlDumpMem(FALSE));
$writer->xmlEndTag('roleTemplate');
$writer->xmlEndTag('localRoleAction');
}
示例15: toXML
/**
* 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
*
* @return string The QTI xml representation of the question
* @access public
*/
function toXML($a_include_header = true, $a_include_binary = true, $a_shuffle = false, $test_output = false, $force_image_references = false)
{
global $ilias;
include_once "./Services/Xml/classes/class.ilXmlWriter.php";
$a_xml_writer = new ilXmlWriter();
// set xml header
$a_xml_writer->xmlHeader();
$a_xml_writer->xmlStartTag("questestinterop");
$attrs = array("ident" => "il_" . IL_INST_ID . "_qst_" . $this->object->getId(), "title" => $this->object->getTitle(), "maxattempts" => $this->object->getNrOfTries());
$a_xml_writer->xmlStartTag("item", $attrs);
// add question description
$a_xml_writer->xmlElement("qticomment", NULL, $this->object->getComment());
// add estimated working time
$workingtime = $this->object->getEstimatedWorkingTime();
$duration = sprintf("P0Y0M0DT%dH%dM%dS", $workingtime["h"], $workingtime["m"], $workingtime["s"]);
$a_xml_writer->xmlElement("duration", NULL, $duration);
// add ILIAS specific metadata
$a_xml_writer->xmlStartTag("itemmetadata");
$a_xml_writer->xmlStartTag("qtimetadata");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "ILIAS_VERSION");
$a_xml_writer->xmlElement("fieldentry", NULL, $ilias->getSetting("ilias_version"));
$a_xml_writer->xmlEndTag("qtimetadatafield");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "QUESTIONTYPE");
$a_xml_writer->xmlElement("fieldentry", NULL, SINGLE_CHOICE_QUESTION_IDENTIFIER);
$a_xml_writer->xmlEndTag("qtimetadatafield");
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "AUTHOR");
$a_xml_writer->xmlElement("fieldentry", NULL, $this->object->getAuthor());
$a_xml_writer->xmlEndTag("qtimetadatafield");
// additional content editing information
$this->addAdditionalContentEditingModeInformation($a_xml_writer);
$this->addGeneralMetadata($a_xml_writer);
$a_xml_writer->xmlStartTag("qtimetadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "thumb_size");
$a_xml_writer->xmlElement("fieldentry", NULL, $this->object->getThumbSize());
$a_xml_writer->xmlEndTag("qtimetadatafield");
$a_xml_writer->xmlEndTag("qtimetadata");
$a_xml_writer->xmlEndTag("itemmetadata");
// PART I: qti presentation
$attrs = array("label" => $this->object->getTitle());
$a_xml_writer->xmlStartTag("presentation", $attrs);
// add flow to presentation
$a_xml_writer->xmlStartTag("flow");
// add material with question text to presentation
$this->object->addQTIMaterial($a_xml_writer, $this->object->getQuestion());
// add answers to presentation
$attrs = array();
$attrs = array("ident" => "MCSR", "rcardinality" => "Single");
$a_xml_writer->xmlStartTag("response_lid", $attrs);
$solution = $this->object->getSuggestedSolution(0);
if (count($solution)) {
if (preg_match("/il_(\\d*?)_(\\w+)_(\\d+)/", $solution["internal_link"], $matches)) {
$a_xml_writer->xmlStartTag("material");
$intlink = "il_" . IL_INST_ID . "_" . $matches[2] . "_" . $matches[3];
if (strcmp($matches[1], "") != 0) {
$intlink = $solution["internal_link"];
}
$attrs = array("label" => "suggested_solution");
$a_xml_writer->xmlElement("mattext", $attrs, $intlink);
$a_xml_writer->xmlEndTag("material");
}
}
// shuffle output
$attrs = array();
if ($this->object->getShuffle()) {
$attrs = array("shuffle" => "Yes");
} else {
$attrs = array("shuffle" => "No");
}
$a_xml_writer->xmlStartTag("render_choice", $attrs);
$answers =& $this->object->getAnswers();
$akeys = array_keys($answers);
if ($this->object->getShuffle() && $a_shuffle) {
$akeys = $this->object->pcArrayShuffle($akeys);
}
// add answers
foreach ($akeys as $index) {
$answer = $answers[$index];
$attrs = array("ident" => $index);
$a_xml_writer->xmlStartTag("response_label", $attrs);
if (strlen($answer->getImage())) {
$this->object->addQTIMaterial($a_xml_writer, $answer->getAnswertext(), FALSE, FALSE);
$imagetype = "image/jpeg";
if (preg_match("/.*\\.(png|gif)\$/", $answer->getImage(), $matches)) {
$imagetype = "image/" . $matches[1];
}
if ($force_image_references) {
$attrs = array("imagtype" => $imagetype, "label" => $answer->getImage(), "uri" => $this->object->getImagePathWeb() . $answer->getImage());
$a_xml_writer->xmlElement("matimage", $attrs);
//.........这里部分代码省略.........