diff options
author | Sean Molenaar <sean@seanmolenaar.eu> | 2019-03-25 22:53:38 +0100 |
---|---|---|
committer | Sean Molenaar <SMillerDev@users.noreply.github.com> | 2019-03-26 09:31:03 +0100 |
commit | b37e237c7a8618a043bbf56b048f5604a0f854e8 (patch) | |
tree | 940eb2003c4f8733c63e42c62136ef5a9704ebe4 /lib | |
parent | 08e44b8460e73f6c47de80c54bd90fb09cfe43b1 (diff) |
Fix xkcd commics
Diffstat (limited to 'lib')
-rwxr-xr-x | lib/Fetcher/FeedFetcher.php | 29 |
1 files changed, 15 insertions, 14 deletions
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( - "<?xml version=\"1.0\"?><item>$body</item>", - 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( + "<?xml version=\"1.0\"?><item>$body</item>", + SimpleXMLElement::class, + LIBXML_NOCDATA + ); + if ($data !== false && libxml_get_last_error() === false) { + $body = (string) $data; + } + libxml_clear_errors(); + } + $item->setBody($body); if ($parsedItem->hasMedia()) { |