move common methods to feeditem_common

This commit is contained in:
Andrew Dolgov 2013-05-01 21:06:48 +04:00
parent f11015058d
commit b4d1690097
4 changed files with 51 additions and 86 deletions

View file

@ -1,5 +1,5 @@
<?php
class FeedItem {
abstract class FeedItem {
abstract function get_id();
abstract function get_date();
abstract function get_link();

View file

@ -1,13 +1,5 @@
<?php
class FeedItem_Atom {
private $elem;
private $xpath;
function __construct($elem, $doc, $xpath) {
$this->elem = $elem;
$this->xpath = $xpath;
}
class FeedItem_Atom extends FeedItem_Common {
function get_id() {
$id = $this->elem->getElementsByTagName("id")->item(0);
@ -60,19 +52,6 @@ class FeedItem_Atom {
}
}
// todo
function get_comments_url() {
}
function get_comments_count() {
$comments = $this->xpath->query("slash:comments", $this->elem)->item(0);
if ($comments) {
return $comments->nodeValue;
}
}
function get_categories() {
$categories = $this->elem->getElementsByTagName("category");
$cats = array();
@ -125,26 +104,5 @@ class FeedItem_Atom {
return $encs;
}
function get_author() {
$author = $this->elem->getElementsByTagName("author")->item(0);
if ($author) {
$name = $author->getElementsByTagName("name")->item(0);
if ($name) return $name->nodeValue;
$email = $author->getElementsByTagName("email")->item(0);
if ($email) return $email->nodeValue;
}
$author = $this->xpath->query("dc:creator", $this->elem)->item(0);
if ($author) {
return $author->nodeValue;
}
}
}
?>

View file

@ -0,0 +1,48 @@
<?php
abstract class FeedItem_Common extends FeedItem {
protected $elem;
protected $xpath;
protected $doc;
function __construct($elem, $doc, $xpath) {
$this->elem = $elem;
$this->xpath = $xpath;
$this->doc = $doc;
}
function get_author() {
$author = $this->elem->getElementsByTagName("author")->item(0);
if ($author) {
$name = $author->getElementsByTagName("name")->item(0);
if ($name) return $name->nodeValue;
$email = $author->getElementsByTagName("email")->item(0);
if ($email) return $email->nodeValue;
}
$author = $this->xpath->query("dc:creator", $this->elem)->item(0);
if ($author) {
return $author->nodeValue;
}
}
// todo
function get_comments_url() {
}
function get_comments_count() {
$comments = $this->xpath->query("slash:comments", $this->elem)->item(0);
if ($comments) {
return $comments->nodeValue;
}
}
}
?>

View file

@ -1,13 +1,5 @@
<?php
class FeedItem_RSS {
private $elem;
private $xpath;
function __construct($elem, $doc, $xpath) {
$this->elem = $elem;
$this->xpath = $xpath;
}
class FeedItem_RSS extends FeedItem_Common {
function get_id() {
$id = $this->elem->getElementsByTagName("guid")->item(0);
@ -58,19 +50,6 @@ class FeedItem_RSS {
}
}
// todo
function get_comments_url() {
}
function get_comments_count() {
$comments = $this->xpath->query("slash:comments", $this->elem)->item(0);
if ($comments) {
return $comments->nodeValue;
}
}
function get_categories() {
$categories = $this->elem->getElementsByTagName("category");
$cats = array();
@ -118,25 +97,5 @@ class FeedItem_RSS {
return $encs;
}
function get_author() {
$author = $this->elem->getElementsByTagName("author")->item(0);
if ($author) {
$name = $author->getElementsByTagName("name")->item(0);
if ($name) return $name->nodeValue;
$email = $author->getElementsByTagName("email")->item(0);
if ($email) return $email->nodeValue;
}
$author = $this->xpath->query("dc:creator", $this->elem)->item(0);
if ($author) {
return $author->nodeValue;
}
}
}
?>