function RssResponseRelativeUrlFilter::transformRootRelativeUrlsToAbsolute

Same name and namespace in other branches
  1. 8.9.x core/lib/Drupal/Core/EventSubscriber/RssResponseRelativeUrlFilter.php \Drupal\Core\EventSubscriber\RssResponseRelativeUrlFilter::transformRootRelativeUrlsToAbsolute()
  2. 10 core/lib/Drupal/Core/EventSubscriber/RssResponseRelativeUrlFilter.php \Drupal\Core\EventSubscriber\RssResponseRelativeUrlFilter::transformRootRelativeUrlsToAbsolute()
  3. 11.x core/lib/Drupal/Core/EventSubscriber/RssResponseRelativeUrlFilter.php \Drupal\Core\EventSubscriber\RssResponseRelativeUrlFilter::transformRootRelativeUrlsToAbsolute()

Converts all root-relative URLs to absolute URLs in RSS markup.

Does not change any existing protocol-relative or absolute URLs.

Parameters

string $rss_markup: The RSS markup to update.

\Symfony\Component\HttpFoundation\Request $request: The current request.

Return value

string The updated RSS markup.

1 call to RssResponseRelativeUrlFilter::transformRootRelativeUrlsToAbsolute()
RssResponseRelativeUrlFilter::onResponse in core/lib/Drupal/Core/EventSubscriber/RssResponseRelativeUrlFilter.php
Converts relative URLs to absolute URLs.

File

core/lib/Drupal/Core/EventSubscriber/RssResponseRelativeUrlFilter.php, line 45

Class

RssResponseRelativeUrlFilter
Subscribes to filter RSS responses, to make relative URIs absolute.

Namespace

Drupal\Core\EventSubscriber

Code

protected function transformRootRelativeUrlsToAbsolute($rss_markup, Request $request) {
  $rss_dom = new \DOMDocument();
  // Load the RSS, if there are parsing errors, abort and return the unchanged
  // markup.
  $previous_value = libxml_use_internal_errors(TRUE);
  $rss_dom->loadXML($rss_markup);
  $errors = libxml_get_errors();
  libxml_use_internal_errors($previous_value);
  if ($errors) {
    return $rss_markup;
  }
  // Invoke Html::transformRootRelativeUrlsToAbsolute() on all HTML content
  // embedded in this RSS feed.
  foreach ($rss_dom->getElementsByTagName('description') as $node) {
    $html_markup = $node->nodeValue;
    if (!empty($html_markup)) {
      $node->nodeValue = Html::transformRootRelativeUrlsToAbsolute($html_markup, $request->getSchemeAndHttpHost());
    }
  }
  return $rss_dom->saveXML();
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.