- // Replace problems caused by TinyMCE removing the protocol for YouTube, Google Maps, DailyMotion and Vimeo
- if ($isPDF) {
- $callback = [$this, 'replaceContentPDF'];
- $htmlContent = $this->replaceLinkedTags(self::VIDEO_REGEX, $htmlContent, $callback, 'Video');
- } else {
- $callback = [$this, 'replaceContentHtml'];
+ // replace all src in video, audio and iframe tags
+ $xmlDoc = new \DOMXPath($dom);
+ $srcElements = $xmlDoc->query('//video | //audio | //iframe');
+ foreach ($srcElements as $element) {
+ $element = $this->fixRelativeSrc($element);
+ $dom->saveHTML($element);
+
+ if ($isPDF) {
+ $src = $element->getAttribute('src');
+ $label = $this->getContentLabel($src);
+
+ $div = $dom->createElement('div');
+ $textNode = $dom->createTextNode($label);
+
+ $anchor = $dom->createElement('a');
+ $anchor->setAttribute('href', $src);
+ $anchor->textContent = $src;
+
+ $div->appendChild($textNode);
+ $div->appendChild($anchor);
+
+ $element->parentNode->replaceChild($div, $element);
+ }