Browse Source

move common methods to feeditem_common

Andrew Dolgov 7 years ago
parent
commit
b4d1690097
4 changed files with 51 additions and 86 deletions
  1. 1 1
      classes/feeditem.php
  2. 1 43
      classes/feeditem/atom.php
  3. 48 0
      classes/feeditem/common.php
  4. 1 42
      classes/feeditem/rss.php

+ 1 - 1
classes/feeditem.php

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

+ 1 - 43
classes/feeditem/atom.php

@@ -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;
-		}
-
-	}
 }
 ?>

+ 48 - 0
classes/feeditem/common.php

@@ -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;
+		}
+	}
+
+
+}
+?>

+ 1 - 42
classes/feeditem/rss.php

@@ -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;
-		}
-
-	}
 }
 ?>