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