From: tjhunt Date: Fri, 9 May 2008 13:13:43 +0000 (+0000) Subject: MDL-14762 - find and update links to files in answer->feedback when moving questions... X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=a588d813cbf6d9b034b4ddd942242f7344869a74;p=moodle.git MDL-14762 - find and update links to files in answer->feedback when moving questions between contexts. --- diff --git a/question/type/questiontype.php b/question/type/questiontype.php index 1a8ba309c2..19ef60a89b 100644 --- a/question/type/questiontype.php +++ b/question/type/questiontype.php @@ -1421,6 +1421,8 @@ class default_questiontype { */ function find_file_links($question, $courseid){ $urls = array(); + + /// Question image if ($question->image != ''){ if (substr(strtolower($question->image), 0, 7) == 'http://') { $matches = array(); @@ -1441,17 +1443,24 @@ class default_questiontype { } } + + /// Questiontext and general feedback. $urls += question_find_file_links_from_html($question->questiontext, $courseid); $urls += question_find_file_links_from_html($question->generalfeedback, $courseid); - if ($this->has_html_answers() && isset($question->options->answers)){ + + /// Answers, if this question uses them. + if (isset($question->options->answers)){ foreach ($question->options->answers as $answerkey => $answer){ - $thisurls= question_find_file_links_from_html($answer->answer, $courseid); - if ($thisurls){ - $urls += $thisurls; + /// URLs in the answers themselves, if appropriate. + if ($this->has_html_answers()) { + $urls += question_find_file_links_from_html($answer->answer, $courseid); } + /// URLs in the answer feedback. + $urls += question_find_file_links_from_html($answer->feedback, $courseid); } } - //set all the values of the array to the question object + + /// Set all the values of the array to the question object if ($urls){ $urls = array_combine(array_keys($urls), array_fill(0, count($urls), array($question->id))); } @@ -1475,6 +1484,8 @@ class default_questiontype { function replace_file_links($question, $fromcourseid, $tocourseid, $url, $destination){ global $CFG; $updateqrec = false; + + /// Question image if (!empty($question->image)){ //support for older questions where we have a complete url in image field if (substr(strtolower($question->image), 0, 7) == 'http://') { @@ -1487,19 +1498,31 @@ class default_questiontype { $updateqrec = true; } } + + /// Questiontext and general feedback. $question->questiontext = question_replace_file_links_in_html($question->questiontext, $fromcourseid, $tocourseid, $url, $destination, $updateqrec); $question->generalfeedback = question_replace_file_links_in_html($question->generalfeedback, $fromcourseid, $tocourseid, $url, $destination, $updateqrec); + + /// If anything has changed, update it in the database. if ($updateqrec){ if (!update_record('question', addslashes_recursive($question))){ error ('Couldn\'t update question '.$question->name); } } - if ($this->has_html_answers() && isset($question->options->answers)){ + + /// Answers, if this question uses them. + if (isset($question->options->answers)){ //answers that do not need updating have been unset foreach ($question->options->answers as $answer){ $answerchanged = false; - $answer->answer = question_replace_file_links_in_html($answer->answer, $fromcourseid, $tocourseid, $url, $destination, $answerchanged); + /// URLs in the answers themselves, if appropriate. + if ($this->has_html_answers()) { + $answer->answer = question_replace_file_links_in_html($answer->answer, $fromcourseid, $tocourseid, $url, $destination, $answerchanged); + } + /// URLs in the answer feedback. + $answer->feedback = question_replace_file_links_in_html($answer->feedback, $fromcourseid, $tocourseid, $url, $destination, $answerchanged); + /// If anything has changed, update it in the database. if ($answerchanged){ if (!update_record('question_answers', addslashes_recursive($answer))){ error ('Couldn\'t update question ('.$question->name.') answer '.$answer->id);