diff options
Diffstat (limited to 'providers/Facebook.php')
-rw-r--r-- | providers/Facebook.php | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/providers/Facebook.php b/providers/Facebook.php new file mode 100644 index 0000000..f420535 --- /dev/null +++ b/providers/Facebook.php @@ -0,0 +1,70 @@ +<?php + +namespace Providers; + +require_once('Provider.php'); +require_once('Item.php'); +require_once('../lib/facebook-graph-sdk/src/Facebook/autoload.php'); + +class Facebook extends \Providers\Provider { + + protected $_cacheTimeout = '10 seconds'; + private $_api; + + public function __construct($feed, $options=[]) { + parent::__construct($feed, $options); + $config = json_decode(file_get_contents('../config/facebook.json'), TRUE); + $this->_api = new \Facebook\Facebook($config); + } + + protected function _getCachePath() { + return '../cache/facebook.%s'; + } + + protected function _fetchItems() { + $request = new \Facebook\FacebookRequest( + $this->_api->getApp(), + $this->_api->getApp()->getAccessToken(), + 'GET', + sprintf('/%s/posts', $this->_feed) + ); + $data = $this->_api->getClient()->sendRequest($request)->getDecodedBody()['data']; + return $data; + } + + protected function _spamFilter($items) { + return $items; + } + + protected function _mapItems($content) { + return array_map( + function($i) { + $item = new Item(); + $item->ID = $i['id']; + $item->Title = isset($i['message']) ? $i['message'] : ( + isset($i['story']) ? $i['story'] : $i['id'] + ); + $item->Link = sprintf( + 'https://facebook.com/%s', + $i['id'] + ); + $item->Text = isset($i['story']) ? $i['story'] : ( + isset($i['message']) ? $i['message'] : $i['id'] + ); + $item->Time = strtotime($i['created_time']); + return $item; + }, $content + ); + } + + protected function _sortContent($content) { + return $content; + } + + public function title() { + return sprintf("%s's Facebook page posts", $this->_feed); + } + +} + +?> |