public function export_to_xml($question, qformat_xml $format, $extra = null) { $output = parent::export_to_xml($question, $format); $output .= ' <delimitchars>' . $question->options->delimitchars . "</delimitchars>\n"; $output .= ' <answerdisplay>' . $question->options->answerdisplay . "</answerdisplay>\n"; $output .= ' <casesensitive>' . $question->options->casesensitive . "</casesensitive>\n"; $output .= ' <noduplicates>' . $question->options->casesensitive . "</noduplicates>\n"; $output .= $format->write_combined_feedback($question->options, $question->id, $question->contextid); return $output; }
function export_to_xml($question, qformat_xml $format, $extra = null) { global $COURSE; if ($extra !== null) { throw new coding_exception("coderunner:export_to_xml: Unexpected parameter"); } // Copy the question so we can modify it for export // (Just in case the original gets used elsewhere). $questiontoexport = clone $question; $qtype = $question->options->coderunnertype; $coursecontext = context_course::instance($COURSE->id); $row = self::get_prototype($qtype, $coursecontext); // Clear all inherited fields equal in value to the corresponding Prototype field // (but only if this is not a prototype question itself) if ($questiontoexport->options->prototypetype == 0) { $noninheritedfields = $this->noninherited_fields(); $extrafields = $this->extra_question_fields(); foreach ($row as $field => $value) { if (in_array($field, $extrafields) && !in_array($field, $noninheritedfields) && $question->options->{$field} === $value) { $questiontoexport->options->{$field} = null; } } } $expout = parent::export_to_xml($questiontoexport, $format, $extra); $expout .= " <testcases>\n"; foreach ($question->options->testcases as $testcase) { $useasexample = $testcase->useasexample ? 1 : 0; $hiderestiffail = $testcase->hiderestiffail ? 1 : 0; $mark = sprintf("%.7f", $testcase->mark); $expout .= " <testcase useasexample=\"{$useasexample}\" hiderestiffail=\"{$hiderestiffail}\" mark=\"{$mark}\" >\n"; foreach (array('testcode', 'stdin', 'expected', 'extra', 'display') as $field) { $exportedValue = $format->writetext($testcase->{$field}, 4); $expout .= " <{$field}>\n {$exportedValue} </{$field}>\n"; } $expout .= " </testcase>\n"; } // Add datafiles within the scope of the <testcases> element $fs = get_file_storage(); $contextid = $question->contextid; $datafiles = $fs->get_area_files($contextid, 'qtype_coderunner', 'datafile', $question->id); $expout .= $format->write_files($datafiles); $expout .= " </testcases>\n"; return $expout; }