Преглед изворни кода

[API, extension] Use 'dateAdded()' to forge 'crawlTimeMsec' & 'timestampUsec' field in greader API. (#2773)

- Add the ability to customize 'dateAdded()', so an extension can change it if needed.
Julien-Pierre Avérous пре 6 година
родитељ
комит
01576e6317
2 измењених фајлова са 20 додато и 5 уклоњено
  1. 18 3
      app/Models/Entry.php
  2. 2 2
      p/api/greader.php

+ 18 - 3
app/Models/Entry.php

@@ -14,6 +14,7 @@ class FreshRSS_Entry extends Minz_Model {
 	private $content;
 	private $link;
 	private $date;
+	private $date_added = 0; //In microseconds
 	private $hash = null;
 	private $is_read;	//Nullable boolean
 	private $is_favorite;
@@ -68,11 +69,15 @@ class FreshRSS_Entry extends Minz_Model {
 			return timestamptodate($this->date);
 		}
 	}
-	public function dateAdded($raw = false) {
-		$date = intval(substr($this->id, 0, -6));
+	public function dateAdded($raw = false, $microsecond = false) {
 		if ($raw) {
-			return $date;
+			if ($microsecond) {
+				return $this->date_added;
+			} else {
+				return intval(substr($this->id, 0, -6));
+			}
 		} else {
+			$date = intval(substr($this->id, 0, -6));
 			return timestamptodate($date);
 		}
 	}
@@ -119,6 +124,9 @@ class FreshRSS_Entry extends Minz_Model {
 
 	public function _id($value) {
 		$this->id = $value;
+		if ($this->date_added == 0) {
+			$this->date_added = $value;
+		}
 	}
 	public function _guid($value) {
 		if ($value == '') {
@@ -161,6 +169,13 @@ class FreshRSS_Entry extends Minz_Model {
 		$value = intval($value);
 		$this->date = $value > 1 ? $value : time();
 	}
+	public function _dateAdded($value, $microsecond = false) {
+		if ($microsecond) {
+			$this->date_added = $value;
+		} else {
+			$this->date_added = $value * 1000000;
+		}
+	}
 	public function _isRead($value) {
 		$this->is_read = $value === null ? null : (bool)$value;
 	}

+ 2 - 2
p/api/greader.php

@@ -496,8 +496,8 @@ function entriesToArray($entries) {
 		}
 		$item = array(
 			'id' => 'tag:google.com,2005:reader/item/' . dec2hex($entry->id()),	//64-bit hexa http://code.google.com/p/google-reader-api/wiki/ItemId
-			'crawlTimeMsec' => substr($entry->id(), 0, -3),
-			'timestampUsec' => '' . $entry->id(),	//EasyRSS
+			'crawlTimeMsec' => substr($entry->dateAdded(true, true), 0, -3),
+			'timestampUsec' => '' . $entry->dateAdded(true, true), //EasyRSS & Reeder
 			'published' => $entry->date(true),
 			'title' => escapeToUnicodeAlternative($entry->title(), false),
 			'summary' => array('content' => $entry->content()),