]> git.wh0rd.org Git - tt-rss.git/commitdiff
implemented get_comments_url() and Atom Threading Extension
authorwltb <wltb@localhost.com>
Wed, 18 Dec 2013 16:05:43 +0000 (17:05 +0100)
committerwltb <wltb@localhost.com>
Wed, 18 Dec 2013 16:06:43 +0000 (17:06 +0100)
classes/feeditem/common.php
classes/feedparser.php

index 58065b19879e92ecc3c726bf6e3f2379bda1e161..80bebf8fb9db5674d40870e69d227af745af0e3f 100644 (file)
@@ -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;
index de6c565428a1a803ea316790da8279b742f389e6..187875b5f9cbf380d70147454ace75ddc3409917 100644 (file)
@@ -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;