diff --git a/mod/assign/feedback/editpdf/classes/document_services.php b/mod/assign/feedback/editpdf/classes/document_services.php index fa6dbfbb598..384ccdd2bdd 100644 --- a/mod/assign/feedback/editpdf/classes/document_services.php +++ b/mod/assign/feedback/editpdf/classes/document_services.php @@ -120,22 +120,22 @@ EOD; * @return string New html with no image tags. */ protected static function strip_images($html) { + // Load HTML and suppress any parsing errors (DOMDocument->loadHTML() does not current support HTML5 tags). $dom = new DOMDocument(); - $dom->loadHTML("" . $html); - $images = $dom->getElementsByTagName('img'); - $i = 0; + libxml_use_internal_errors(true); + $dom->loadHTML('' . $html); + libxml_clear_errors(); - for ($i = ($images->length - 1); $i >= 0; $i--) { - $node = $images->item($i); + // Find all img tags. + if ($imgnodes = $dom->getElementsByTagName('img')) { + // Replace img nodes with the img alt text without overriding DOM elements. + for ($i = ($imgnodes->length - 1); $i >= 0; $i--) { + $imgnode = $imgnodes->item($i); + $alt = ($imgnode->hasAttribute('alt')) ? ' [ ' . $imgnode->getAttribute('alt') . ' ] ' : ' '; + $textnode = $dom->createTextNode($alt); - if ($node->hasAttribute('alt')) { - $replacement = ' [ ' . $node->getAttribute('alt') . ' ] '; - } else { - $replacement = ' '; + $imgnode->parentNode->replaceChild($textnode, $imgnode); } - - $text = $dom->createTextNode($replacement); - $node->parentNode->replaceChild($text, $node); } $count = 1; return str_replace("", "", $dom->saveHTML(), $count); diff --git a/mod/assign/submission/onlinetext/locallib.php b/mod/assign/submission/onlinetext/locallib.php index b2365b31192..46cd8b5f48d 100644 --- a/mod/assign/submission/onlinetext/locallib.php +++ b/mod/assign/submission/onlinetext/locallib.php @@ -397,11 +397,10 @@ class assign_submission_onlinetext extends assign_submission_plugin { // Note that this check is the same logic as the result from the is_empty function but we do // not call it directly because we already have the submission record. - if ($onlinetextsubmission && !empty($onlinetextsubmission->onlinetext)) { - $finaltext = $this->assignment->download_rewrite_pluginfile_urls($onlinetextsubmission->onlinetext, $user, $this); - $formattedtext = format_text($finaltext, - $onlinetextsubmission->onlineformat, - array('context'=>$this->assignment->get_context())); + if ($onlinetextsubmission) { + // Do not pass the text through format_text. The result may not be displayed in Moodle and + // may be passed to external services such as document conversion or portfolios. + $formattedtext = $this->assignment->download_rewrite_pluginfile_urls($onlinetextsubmission->onlinetext, $user, $this); $head = ''; $submissioncontent = '' . $head . ''. $formattedtext . '';