1
0
mirror of https://git.tt-rss.org/git/tt-rss.git synced 2025-12-13 11:55:56 +00:00

add basic rss support

This commit is contained in:
Andrew Dolgov
2013-05-01 17:38:16 +04:00
parent cd07592c29
commit 04d2f9c831
4 changed files with 138 additions and 6 deletions

View File

@@ -24,10 +24,14 @@ class FeedParser {
function init() {
$root = $this->doc->firstChild;
$xpath = new DOMXPath($this->doc);
$xpath->registerNamespace('atom', 'http://www.w3.org/2005/Atom');
$root = $xpath->query("(//atom:feed|//channel)")->item(0);
if ($root) {
switch ($root->tagName) {
case "rss":
case "channel":
$this->type = $this::FEED_RSS;
break;
case "feed":
@@ -38,11 +42,8 @@ class FeedParser {
return;
}
$xpath = new DOMXPath($this->doc);
switch ($this->type) {
case $this::FEED_ATOM:
$xpath->registerNamespace('atom', 'http://www.w3.org/2005/Atom');
$title = $xpath->query("//atom:feed/atom:title")->item(0);
@@ -67,6 +68,25 @@ class FeedParser {
break;
case $this::FEED_RSS:
$title = $xpath->query("//channel/title")->item(0);
if ($title) {
$this->title = $title->nodeValue;
}
$link = $xpath->query("//channel/link")->item(0);
if ($link && $link->hasAttributes()) {
$this->link = $link->getAttribute("href");
}
$articles = $xpath->query("//channel/item");
foreach ($articles as $article) {
array_push($this->items, new FeedItem_RSS($article));
}
break;
}
}