Browse Source

better support for atom:link elements in rss feeds, support rel=standout (fuck you google and your nonstandard shit)

Andrew Dolgov 7 years ago
parent
commit
df2655e015
2 changed files with 14 additions and 5 deletions
  1. 5 2
      classes/feeditem/atom.php
  2. 9 3
      classes/feeditem/rss.php

+ 5 - 2
classes/feeditem/atom.php

@@ -22,8 +22,11 @@ class FeedItem_Atom extends FeedItem_Common {
 		$links = $this->elem->getElementsByTagName("link");
 
 		foreach ($links as $link) {
-			if ($link && $link->hasAttribute("href") && (!$link->hasAttribute("rel")
-					|| $link->getAttribute("rel") == "alternate")) {
+			if ($link && $link->hasAttribute("href") &&
+				(!$link->hasAttribute("rel")
+					|| $link->getAttribute("rel") == "alternate"
+					|| $link->getAttribute("rel") == "standout")) {
+
 				return $link->getAttribute("href");
 			}
 		}

+ 9 - 3
classes/feeditem/rss.php

@@ -19,10 +19,16 @@ class FeedItem_RSS extends FeedItem_Common {
 	}
 
 	function get_link() {
-		$link = $this->xpath->query("atom:link", $this->elem)->item(0);
+		$links = $this->xpath->query("atom:link", $this->elem);
 
-		if ($link) {
-			return $link->getAttribute("href");
+		foreach ($links as $link) {
+			if ($link && $link->hasAttribute("href") &&
+				(!$link->hasAttribute("rel")
+					|| $link->getAttribute("rel") == "alternate"
+					|| $link->getAttribute("rel") == "standout")) {
+
+				return $link->getAttribute("href");
+			}
 		}
 
 		$link = $this->elem->getElementsByTagName("guid")->item(0);