summaryrefslogtreecommitdiff
path: root/providers
diff options
context:
space:
mode:
Diffstat (limited to 'providers')
-rw-r--r--providers/Item.php16
-rw-r--r--providers/Provider.php8
-rw-r--r--providers/Twitter.php22
3 files changed, 41 insertions, 5 deletions
diff --git a/providers/Item.php b/providers/Item.php
new file mode 100644
index 0000000..cecbd26
--- /dev/null
+++ b/providers/Item.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Providers;
+
+class Item {
+
+ public $ID;
+ public $Title;
+ public $Link;
+ public $Time;
+ public $Text;
+ public $Author;
+
+}
+
+?>
diff --git a/providers/Provider.php b/providers/Provider.php
index 02031ad..2e14d2b 100644
--- a/providers/Provider.php
+++ b/providers/Provider.php
@@ -24,16 +24,18 @@ abstract class Provider {
abstract protected function _spamFilter($items);
+ abstract protected function _mapItems($content);
+
abstract protected function _sortContent($content);
protected function _getItems() {
$cacheFile = sprintf($this->_getCachePath(), $this->_feed);
$this->_cacheTime = file_exists($cacheFile) ? filemtime($cacheFile) : 0;
if ($this->_cacheTime > strtotime('-' . $this->_cacheTimeout)) {
- return json_decode($this->_getCache($cacheFile));
+ return unserialize($this->_getCache($cacheFile));
} else {
$content = $this->_fetchItems();
- file_put_contents($cacheFile, json_encode($content));
+ file_put_contents($cacheFile, serialize($content));
$this->_cacheTime = time();
return $content;
}
@@ -44,7 +46,7 @@ abstract class Provider {
if (isset($this->_options['spamfilter'])) {
$items = $this->_spamFilter($items);
}
- return $this->_sortContent($items);
+ return $this->_sortContent($this->_mapItems($items));
}
public function cacheTime() {
diff --git a/providers/Twitter.php b/providers/Twitter.php
index e9b98e1..704420e 100644
--- a/providers/Twitter.php
+++ b/providers/Twitter.php
@@ -3,6 +3,7 @@
namespace Providers;
require_once('Provider.php');
+require_once('Item.php');
require_once('../lib/codebird-php/src/codebird.php');
@@ -19,7 +20,7 @@ class Twitter extends \Providers\Provider {
}
protected function _getCachePath() {
- return '../cache/twitter.%s.json';
+ return '../cache/twitter.%s';
}
protected function _fetchItems() {
@@ -111,8 +112,25 @@ class Twitter extends \Providers\Provider {
return $content;
}
+ protected function _mapItems($content) {
+ $items = [];
+ foreach ($content as $i) {
+ $item = new Item();
+ $item->ID = $i->id_str;
+ $item->Title = $i->text;
+ $item->Link = sprintf('https://twitter.com/%s/status%s', $this->_feed, $i->id_str);
+ $item->Time = $i->created_at;
+ $item->Text = $i->text;
+ if (isset($i->user)) {
+ $item->Author = $i->user->screen_name;
+ }
+ $items[] = $item;
+ }
+ return $items;
+ }
+
protected function _sortContent($content) {
- usort($content, function($c1, $c2) { return strcmp($c2->id_str, $c1->id_str); });
+ usort($content, function($c1, $c2) { return strcmp($c2->ID, $c1->ID); });
return $content;
}