From b37e237c7a8618a043bbf56b048f5604a0f854e8 Mon Sep 17 00:00:00 2001 From: Sean Molenaar Date: Mon, 25 Mar 2019 22:53:38 +0100 Subject: Fix xkcd commics --- lib/Fetcher/FeedFetcher.php | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) (limited to 'lib') diff --git a/lib/Fetcher/FeedFetcher.php b/lib/Fetcher/FeedFetcher.php index 7b78ae67d..f433ac224 100755 --- a/lib/Fetcher/FeedFetcher.php +++ b/lib/Fetcher/FeedFetcher.php @@ -185,13 +185,9 @@ class FeedFetcher implements IFeedFetcher $pubDT = $lastmodified; } - $item->setPubDate( - $pubDT->getTimestamp() - ); + $item->setPubDate($pubDT->getTimestamp()); - $item->setLastModified( - $lastmodified->getTimestamp() - ); + $item->setLastModified($lastmodified->getTimestamp()); $item->setRtl($this->determineRtl($parsedFeed)); // unescape content because angularjs helps against XSS @@ -208,14 +204,19 @@ class FeedFetcher implements IFeedFetcher 'HTML-ENTITIES', mb_detect_encoding($body) ); - libxml_use_internal_errors(true); - $data = simplexml_load_string( - "$body", - SimpleXMLElement::class, - LIBXML_NOCDATA - ); - libxml_clear_errors(); - $body = ($data === false) ? $body : (string) $data; + if (strpos($body, 'CDATA') !== false) { + libxml_use_internal_errors(true); + $data = simplexml_load_string( + "$body", + SimpleXMLElement::class, + LIBXML_NOCDATA + ); + if ($data !== false && libxml_get_last_error() === false) { + $body = (string) $data; + } + libxml_clear_errors(); + } + $item->setBody($body); if ($parsedItem->hasMedia()) { -- cgit v1.2.3