/** * Provide export functionality for xml format * @param question object the question object * @param format object the format object so that helper methods can be used * @param extra mixed any additional format specific data that may be passed by the format (see format code for info) * @return string the data to append to the output buffer or false if error */ public function export_to_xml($question, qformat_xml $format, $extra = null) { $expout = ''; $fs = get_file_storage(); $contextid = $question->contextid; $expout .= " <shuffleanswers>" . $format->get_single($question->options->shuffleanswers) . "</shuffleanswers>\n"; $textformat = $format->get_format($question->options->correctfeedbackformat); $files = $fs->get_area_files($contextid, 'question', 'correctfeedback', $question->id); $expout .= " <correctfeedback format=\"{$textformat}\">\n" . ' ' . $format->writetext($question->options->correctfeedback); $expout .= $format->write_files($files); $expout .= " </correctfeedback>\n"; $textformat = $format->get_format($question->options->incorrectfeedbackformat); $files = $fs->get_area_files($contextid, 'question', 'incorrectfeedback', $question->id); $expout .= " <incorrectfeedback format=\"{$textformat}\">\n" . ' ' . $format->writetext($question->options->incorrectfeedback); $expout .= $format->write_files($files); $expout .= " </incorrectfeedback>\n"; if (!empty($question->options->shownumcorrect)) { $expout .= " <shownumcorrect/>\n"; } $expout .= " <answernumbering>{$question->options->answernumbering}</answernumbering>\n"; $expout .= $format->write_answers($question->options->answers); return $expout; }
function wrsqz_export_to_xml($questionType, $dbType, &$question, &$format, &$extra) { $objProblem = get_record('question_' . $dbType, 'question', $question->id); $expout = ''; $qfxml = new qformat_xml(); if ($questionType == 'essay') { foreach ($question->options->answers as $answer) { $expout .= '<answer fraction="' . (100 * $answer->fraction) . '"><feedback>' . $qfxml->writetext($answer->feedback) . '</feedback></answer>'; } } else if ($questionType == 'match') { foreach ($question->options->subquestions as $subquestion) { $expout .= '<subquestion>' . $qfxml->writetext($subquestion->questiontext) . '<answer>' . $qfxml->writetext($subquestion->answertext) . '</answer></subquestion>'; } } else if ($questionType == 'multichoice') { $expout .= '<single>' . $qfxml->get_single($question->options->single) . '</single>'; $expout .= '<shuffleanswers>' . $qfxml->get_single($question->options->shuffleanswers) . '</shuffleanswers>'; $expout .= '<correctfeedback>' . $qfxml->writetext($question->options->correctfeedback, 3) . '</correctfeedback>'; $expout .= '<partiallycorrectfeedback>' . $qfxml->writetext($question->options->partiallycorrectfeedback, 3) . '</partiallycorrectfeedback>'; $expout .= '<incorrectfeedback>' . $qfxml->writetext($question->options->incorrectfeedback, 3) . '</incorrectfeedback>'; $expout .= '<answernumbering>' . $question->options->answernumbering . '</answernumbering>'; foreach ($question->options->answers as $answer) { $expout .= '<answer fraction="' . ($answer->fraction * 100) . '">' . $qfxml->writetext( $answer->answer,4,false ) . '<feedback>' . $qfxml->writetext($answer->feedback, 5, false) . '</feedback></answer>'; } } else if ($questionType == 'shortanswer') { $expout .= '<usecase>' . $question->options->usecase . '</usecase>'; foreach ($question->options->answers as $answer) { $expout .= '<answer fraction="' . (100 * $answer->fraction) . '">' . $qfxml->writetext($answer->answer, 3, false) . '<feedback>' . $qfxml->writetext($answer->feedback, 4, false) . '</feedback></answer>'; } } else if ($questionType == 'truefalse') { foreach ($question->options->answers as $answer) { if ($answer->id == $question->options->trueanswer) { $answertext = 'true'; } else { $answertext = 'false'; } $expout .= '<answer fraction="' . round($answer->fraction * 100) . '"><text>' . $answertext . '</text><feedback>' . $qfxml->writetext($answer->feedback) . '</feedback></answer>'; } }else if ($questionType == 'multianswer'){ $questiontext = $question->questiontext; $a_count=1; foreach($question->options->questions as $child) { $pattern = addslashes("{#".$a_count."}"); $replace = $child->questiontext; $questiontext= str_replace($pattern, $replace, $questiontext); $a_count++; } $expout .= '<wirisquestiontext>'.$qfxml->writetext($questiontext).'</wirisquestiontext>'; } $programParsed = wrsqz_mathmlEncode($objProblem->program); $expout .= '<wirisquestion>' . $programParsed . '</wirisquestion>'; if ($questionType == 'multichoice') { $expout .= '<wirisoverrideanswer>' . $question->options->wiris->override . '</wirisoverrideanswer>'; }else if ($questionType == 'truefalse') { if (empty($question->options->wiris->override)) { $expout .= '<wirisoverrideanswer></wirisoverrideanswer>'; } else { $values = explode(';', $question->options->wiris->override); $expout .= '<wirisoverrideanswer>' . $values[0] . '</wirisoverrideanswer>'; } }else if ($questionType == 'shortanswer') { $expout .= '<wiriseditor>' . htmlentities($question->options->wiris->eqoption, ENT_QUOTES, 'UTF-8') . '</wiriseditor>'; }else if ($questionType == 'multianswer') { //$expout .= '<wiriseditor>' . htmlentities($question->options->wiris->eqoption, ENT_QUOTES, 'UTF-8') . '</wiriseditor>'; } $options = $question->options->wiris->options; $expout .= '<wirisoptions>'; foreach($options as $key=>$value){ if($key == 'hiddenInitialCASValue') $value = wrsqz_mathmlEncode($value); $expout .= '<'.$key.'>'.print_r($value, true).'</'.$key.'>'; } $expout .= '</wirisoptions>'; return $expout; }