From a03e83d40038114feda7de9784dd11deeadc22e1 Mon Sep 17 00:00:00 2001 From: Ron Lucke <lucke@elan-ev.de> Date: Thu, 22 Aug 2024 11:00:46 +0000 Subject: [PATCH] DOMDocument::loadHTML(): Empty string supplied as input Closes #3194 Merge request studip/studip!3303 --- lib/models/Courseware/BlockTypes/Text.php | 24 ++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/lib/models/Courseware/BlockTypes/Text.php b/lib/models/Courseware/BlockTypes/Text.php index 1da7cbe2b4d..55008ba7d00 100644 --- a/lib/models/Courseware/BlockTypes/Text.php +++ b/lib/models/Courseware/BlockTypes/Text.php @@ -45,17 +45,19 @@ class Text extends BlockType { $document = new \DOMDocument(); $old_libxml_error = libxml_use_internal_errors(true); - $document->loadHTML($payload['text']); - libxml_use_internal_errors($old_libxml_error); - $imageElements = $document->getElementsByTagName('img'); - foreach ($imageElements as $element) { - if (!$element instanceof \DOMElement || !$element->hasAttribute('src')) { - continue; - } - $src = $element->getAttribute('src'); - if (str_contains($src, 'sendfile.php') && !str_contains($src, $GLOBALS['ABSOLUTE_URI_STUDIP'])) { - $find = explode('sendfile.php', $src)[0]; - $payload['text'] = str_replace($find, $GLOBALS['ABSOLUTE_URI_STUDIP'], $payload['text']); + if (!empty($payload['text'])) { + $document->loadHTML($payload['text']); + libxml_use_internal_errors($old_libxml_error); + $imageElements = $document->getElementsByTagName('img'); + foreach ($imageElements as $element) { + if (!$element instanceof \DOMElement || !$element->hasAttribute('src')) { + continue; + } + $src = $element->getAttribute('src'); + if (str_contains($src, 'sendfile.php') && !str_contains($src, $GLOBALS['ABSOLUTE_URI_STUDIP'])) { + $find = explode('sendfile.php', $src)[0]; + $payload['text'] = str_replace($find, $GLOBALS['ABSOLUTE_URI_STUDIP'], $payload['text']); + } } } $payload['text'] = \Studip\Markup::purifyHtml(\Studip\Markup::markAsHtml($payload['text'])); -- GitLab