aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRon Lucke <lucke@elan-ev.de>2023-08-25 12:53:27 +0000
committerRon Lucke <lucke@elan-ev.de>2023-08-25 12:53:27 +0000
commit037e7c8a7c41ea167c83a5066e1a4ff0b03f4dd5 (patch)
tree2b53dd60ffb7bf356b0c44e1f8d4380fb83be127
parente00a7ed5c223071a82a93a793102e045c63075eb (diff)
fix #2699
Closes #2699 Merge request studip/studip!2074
-rw-r--r--lib/models/Courseware/BlockTypes/Text.php15
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/models/Courseware/BlockTypes/Text.php b/lib/models/Courseware/BlockTypes/Text.php
index 0a89219..441da89 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);