pass xpath object to feeditem, support media-rss objects

master
Andrew Dolgov 11 years ago
parent fd0daa9b55
commit 4c00e15b5d

@ -2,7 +2,7 @@
class FeedItem_Atom {
private $elem;
function __construct($elem) {
function __construct($elem, $doc, $xpath) {
$this->elem = $elem;
}

@ -1,9 +1,11 @@
<?php
class FeedItem_RSS {
private $elem;
private $xpath;
function __construct($elem) {
function __construct($elem, $doc, $xpath) {
$this->elem = $elem;
$this->xpath = $xpath;
}
function get_id() {
@ -92,6 +94,20 @@ class FeedItem_RSS {
array_push($encs, $enc);
}
$enclosures = $this->xpath->query("media:content", $this->elem);
$encs = array();
foreach ($enclosures as $enclosure) {
$enc = new FeedEnclosure();
$enc->type = $enclosure->getAttribute("type");
$enc->link = $enclosure->getAttribute("url");
$enc->length = $enclosure->getAttribute("length");
array_push($encs, $enc);
}
return $encs;
}

@ -27,6 +27,7 @@ class FeedParser {
$root = $this->doc->firstChild;
$xpath = new DOMXPath($this->doc);
$xpath->registerNamespace('atom', 'http://www.w3.org/2005/Atom');
$xpath->registerNamespace('media', 'http://search.yahoo.com/mrss/');
$this->xpath = $xpath;
$root = $xpath->query("(//atom:feed|//channel)")->item(0);
@ -62,7 +63,7 @@ class FeedParser {
$articles = $xpath->query("//atom:entry");
foreach ($articles as $article) {
array_push($this->items, new FeedItem_Atom($article));
array_push($this->items, new FeedItem_Atom($article, $this->doc, $this->xpath));
}
break;
@ -83,7 +84,7 @@ class FeedParser {
$articles = $xpath->query("//channel/item");
foreach ($articles as $article) {
array_push($this->items, new FeedItem_RSS($article));
array_push($this->items, new FeedItem_RSS($article, $this->doc, $this->xpath));
}
break;

Loading…
Cancel
Save