mirror of
https://github.com/moodle/moodle.git
synced 2025-06-02 06:05:31 +02:00
MDL-35147 lesson: fix regression from MDL-25492.
I really wish someone would fix lesson to use the question bank.
This commit is contained in:
parent
e51861e0ea
commit
bba5e71628
@ -580,6 +580,93 @@ class qformat_default {
|
||||
return html_to_text(format_text($question->questiontext,
|
||||
$question->questiontextformat, $formatoptions), 0, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Since the lesson module tries to re-use the question bank import classes in
|
||||
* a crazy way, this is necessary to stop things breaking.
|
||||
*/
|
||||
protected function add_blank_combined_feedback($question) {
|
||||
return $question;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Since the lesson module tries to re-use the question bank import classes in
|
||||
* a crazy way, this is necessary to stop things breaking. This should be exactly
|
||||
* the same as the class defined in question/format.php.
|
||||
*/
|
||||
class qformat_based_on_xml extends qformat_default {
|
||||
/**
|
||||
* A lot of imported files contain unwanted entities.
|
||||
* This method tries to clean up all known problems.
|
||||
* @param string str string to correct
|
||||
* @return string the corrected string
|
||||
*/
|
||||
public function cleaninput($str) {
|
||||
|
||||
$html_code_list = array(
|
||||
"'" => "'",
|
||||
"’" => "'",
|
||||
"“" => "\"",
|
||||
"”" => "\"",
|
||||
"–" => "-",
|
||||
"—" => "-",
|
||||
);
|
||||
$str = strtr($str, $html_code_list);
|
||||
// Use textlib entities_to_utf8 function to convert only numerical entities.
|
||||
$str = textlib::entities_to_utf8($str, false);
|
||||
return $str;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the array moodle is expecting
|
||||
* for an HTML text. No processing is done on $text.
|
||||
* qformat classes that want to process $text
|
||||
* for instance to import external images files
|
||||
* and recode urls in $text must overwrite this method.
|
||||
* @param array $text some HTML text string
|
||||
* @return array with keys text, format and files.
|
||||
*/
|
||||
public function text_field($text) {
|
||||
return array(
|
||||
'text' => trim($text),
|
||||
'format' => FORMAT_HTML,
|
||||
'files' => array(),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the value of a node, given a path to the node
|
||||
* if it doesn't exist return the default value.
|
||||
* @param array xml data to read
|
||||
* @param array path path to node expressed as array
|
||||
* @param mixed default
|
||||
* @param bool istext process as text
|
||||
* @param string error if set value must exist, return false and issue message if not
|
||||
* @return mixed value
|
||||
*/
|
||||
public function getpath($xml, $path, $default, $istext=false, $error='') {
|
||||
foreach ($path as $index) {
|
||||
if (!isset($xml[$index])) {
|
||||
if (!empty($error)) {
|
||||
$this->error($error);
|
||||
return false;
|
||||
} else {
|
||||
return $default;
|
||||
}
|
||||
}
|
||||
|
||||
$xml = $xml[$index];
|
||||
}
|
||||
|
||||
if ($istext) {
|
||||
if (!is_string($xml)) {
|
||||
$this->error(get_string('invalidxml', 'qformat_xml'));
|
||||
}
|
||||
$xml = trim($xml);
|
||||
}
|
||||
|
||||
return $xml;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user