/**
  * 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;
}