diff options
| author | Ron Lucke <lucke@elan-ev.de> | 2023-08-25 12:53:27 +0000 |
|---|---|---|
| committer | Ron Lucke <lucke@elan-ev.de> | 2023-08-25 12:53:27 +0000 |
| commit | 037e7c8a7c41ea167c83a5066e1a4ff0b03f4dd5 (patch) | |
| tree | 2b53dd60ffb7bf356b0c44e1f8d4380fb83be127 | |
| parent | e00a7ed5c223071a82a93a793102e045c63075eb (diff) | |
fix #2699
Closes #2699
Merge request studip/studip!2074
| -rw-r--r-- | lib/models/Courseware/BlockTypes/Text.php | 15 |
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); |
