From f6c61b2d55ff70819bc1582791fdc8df149eb22f Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Thu, 19 Dec 2013 13:19:30 +0400 Subject: [PATCH] rss: choose between description and content:encoded based on which one is longer because publishers are idiots and can't use tags properly --- classes/feeditem/rss.php | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/classes/feeditem/rss.php b/classes/feeditem/rss.php index f632d3bbf..7d445a6c3 100644 --- a/classes/feeditem/rss.php +++ b/classes/feeditem/rss.php @@ -59,16 +59,21 @@ class FeedItem_RSS extends FeedItem_Common { } function get_content() { - $content = $this->xpath->query("content:encoded", $this->elem)->item(0); + $contentA = $this->xpath->query("content:encoded", $this->elem)->item(0); + $contentB = $this->elem->getElementsByTagName("description")->item(0); - if ($content) { - return $content->nodeValue; + if ($contentA && !$contentB) { + return $contentA->nodeValue; } - $content = $this->elem->getElementsByTagName("description")->item(0); - if ($content) { - return $content->nodeValue; + if ($contentB && !$contentA) { + return $contentB->nodeValue; + } + + if ($contentA && $contentB) { + return mb_strlen($contentA->nodeValue) > mb_strlen($contentB->nodeValue) ? + $contentA->nodeValue : $contentB->nodeValue; } }