From 037e7c8a7c41ea167c83a5066e1a4ff0b03f4dd5 Mon Sep 17 00:00:00 2001
From: Ron Lucke <lucke@elan-ev.de>
Date: Fri, 25 Aug 2023 12:53:27 +0000
Subject: [PATCH] fix #2699

Closes #2699

Merge request studip/studip!2074
---
 lib/models/Courseware/BlockTypes/Text.php | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/lib/models/Courseware/BlockTypes/Text.php b/lib/models/Courseware/BlockTypes/Text.php
index 0a892193235..441da891a32 100644
--- a/lib/models/Courseware/BlockTypes/Text.php
+++ b/lib/models/Courseware/BlockTypes/Text.php
@@ -46,6 +46,21 @@ class Text extends BlockType
 
     public function setPayload($payload): void
     {
+        $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']);
+            }
+        }
         $payload['text'] = \Studip\Markup::purifyHtml(\Studip\Markup::markAsHtml($payload['text']));
 
         parent::setPayload($payload);
-- 
GitLab