pass xpath object to feeditem, support media-rss objects
This commit is contained in:
parent
fd0daa9b55
commit
4c00e15b5d
|
@ -2,7 +2,7 @@
|
||||||
class FeedItem_Atom {
|
class FeedItem_Atom {
|
||||||
private $elem;
|
private $elem;
|
||||||
|
|
||||||
function __construct($elem) {
|
function __construct($elem, $doc, $xpath) {
|
||||||
$this->elem = $elem;
|
$this->elem = $elem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
<?php
|
<?php
|
||||||
class FeedItem_RSS {
|
class FeedItem_RSS {
|
||||||
private $elem;
|
private $elem;
|
||||||
|
private $xpath;
|
||||||
|
|
||||||
function __construct($elem) {
|
function __construct($elem, $doc, $xpath) {
|
||||||
$this->elem = $elem;
|
$this->elem = $elem;
|
||||||
|
$this->xpath = $xpath;
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_id() {
|
function get_id() {
|
||||||
|
@ -92,6 +94,20 @@ class FeedItem_RSS {
|
||||||
array_push($encs, $enc);
|
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;
|
return $encs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@ class FeedParser {
|
||||||
$root = $this->doc->firstChild;
|
$root = $this->doc->firstChild;
|
||||||
$xpath = new DOMXPath($this->doc);
|
$xpath = new DOMXPath($this->doc);
|
||||||
$xpath->registerNamespace('atom', 'http://www.w3.org/2005/Atom');
|
$xpath->registerNamespace('atom', 'http://www.w3.org/2005/Atom');
|
||||||
|
$xpath->registerNamespace('media', 'http://search.yahoo.com/mrss/');
|
||||||
$this->xpath = $xpath;
|
$this->xpath = $xpath;
|
||||||
|
|
||||||
$root = $xpath->query("(//atom:feed|//channel)")->item(0);
|
$root = $xpath->query("(//atom:feed|//channel)")->item(0);
|
||||||
|
@ -62,7 +63,7 @@ class FeedParser {
|
||||||
$articles = $xpath->query("//atom:entry");
|
$articles = $xpath->query("//atom:entry");
|
||||||
|
|
||||||
foreach ($articles as $article) {
|
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;
|
break;
|
||||||
|
@ -83,7 +84,7 @@ class FeedParser {
|
||||||
$articles = $xpath->query("//channel/item");
|
$articles = $xpath->query("//channel/item");
|
||||||
|
|
||||||
foreach ($articles as $article) {
|
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;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue