From b584460302b674c8e9c52718d0e6682e427a913a Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 25 Jun 2013 14:43:59 +0400 Subject: parser: remove atom element --- classes/feeditem/common.php | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'classes/feeditem/common.php') diff --git a/classes/feeditem/common.php b/classes/feeditem/common.php index 0787a42cb..f8fd3c62a 100644 --- a/classes/feeditem/common.php +++ b/classes/feeditem/common.php @@ -8,6 +8,12 @@ abstract class FeedItem_Common extends FeedItem { $this->elem = $elem; $this->xpath = $xpath; $this->doc = $doc; + + $source = $elem->getElementsByTagName("source")->item(0); + + // we don't need element + if ($source) + $elem->removeChild($source); } function get_author() { -- cgit v1.2.3-54-g00ecf From 0156128702a7477c6a2f725fa6bf24c66952aa48 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 10 Jul 2013 12:50:42 +0400 Subject: catch warning when removing source element --- classes/feeditem/common.php | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'classes/feeditem/common.php') diff --git a/classes/feeditem/common.php b/classes/feeditem/common.php index f8fd3c62a..58065b198 100644 --- a/classes/feeditem/common.php +++ b/classes/feeditem/common.php @@ -9,11 +9,16 @@ abstract class FeedItem_Common extends FeedItem { $this->xpath = $xpath; $this->doc = $doc; - $source = $elem->getElementsByTagName("source")->item(0); + try { - // we don't need element - if ($source) - $elem->removeChild($source); + $source = $elem->getElementsByTagName("source")->item(0); + + // we don't need element + if ($source) + $elem->removeChild($source); + } catch (DOMException $e) { + // + } } function get_author() { -- cgit v1.2.3-54-g00ecf From d71ac5d3dabde7dda4aef6efa2af3a68ee2095c6 Mon Sep 17 00:00:00 2001 From: wltb Date: Wed, 18 Dec 2013 17:05:43 +0100 Subject: implemented get_comments_url() and Atom Threading Extension --- classes/feeditem/common.php | 17 +++++++++++++++-- classes/feedparser.php | 1 + 2 files changed, 16 insertions(+), 2 deletions(-) (limited to 'classes/feeditem/common.php') diff --git a/classes/feeditem/common.php b/classes/feeditem/common.php index 58065b198..80bebf8fb 100644 --- a/classes/feeditem/common.php +++ b/classes/feeditem/common.php @@ -44,13 +44,26 @@ abstract class FeedItem_Common extends FeedItem { } } - // todo function get_comments_url() { + //RSS only. Use a query here to avoid namespace clashes (e.g. with slash). + //might give a wrong result if a default namespace was declared (possible with XPath 2.0) + $com_url = $this->xpath->query("comments", $this->elem)->item(0); + if($com_url) + return $com_url->nodeValue; + + //Atom Threading Extension (RFC 4685) stuff. Could be used in RSS feeds, so it's in common. + //'text/html' for type is too restrictive? + $com_url = $this->xpath->query("atom:link[@rel='replies' and contains(@type,'text/html')]/@href", $this->elem)->item(0); + + if($com_url) + return $com_url->nodeValue; } function get_comments_count() { - $comments = $this->xpath->query("slash:comments", $this->elem)->item(0); + //also query for ATE stuff here + $query = "slash:comments|thread:total|atom:link[@rel='replies']/@thread:count"; + $comments = $this->xpath->query($query, $this->elem)->item(0); if ($comments) { return $comments->nodeValue; diff --git a/classes/feedparser.php b/classes/feedparser.php index de6c56542..187875b5f 100644 --- a/classes/feedparser.php +++ b/classes/feedparser.php @@ -97,6 +97,7 @@ class FeedParser { $xpath->registerNamespace('slash', 'http://purl.org/rss/1.0/modules/slash/'); $xpath->registerNamespace('dc', 'http://purl.org/dc/elements/1.1/'); $xpath->registerNamespace('content', 'http://purl.org/rss/1.0/modules/content/'); + $xpath->registerNamespace('thread', 'http://purl.org/syndication/thread/1.0'); $this->xpath = $xpath; -- cgit v1.2.3-54-g00ecf