From f7b2bfae9778af2c99e0c7fe7b2634e0f4f0973f Mon Sep 17 00:00:00 2001 From: emkael Date: Mon, 16 Jan 2017 22:04:21 +0100 Subject: * mapping twitter items to universal objects --- providers/Item.php | 16 ++++++++++++++++ providers/Provider.php | 8 +++++--- providers/Twitter.php | 22 ++++++++++++++++++++-- 3 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 providers/Item.php (limited to 'providers') 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 @@ + 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; } -- cgit v1.2.3