summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorSean Molenaar <sean@seanmolenaar.eu>2019-03-25 22:53:38 +0100
committerSean Molenaar <SMillerDev@users.noreply.github.com>2019-03-26 09:31:03 +0100
commitb37e237c7a8618a043bbf56b048f5604a0f854e8 (patch)
tree940eb2003c4f8733c63e42c62136ef5a9704ebe4 /lib
parent08e44b8460e73f6c47de80c54bd90fb09cfe43b1 (diff)
Fix xkcd commics
Diffstat (limited to 'lib')
-rwxr-xr-xlib/Fetcher/FeedFetcher.php29
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()) {