diff options
author | emkael <emkael@tlen.pl> | 2017-01-16 22:04:43 +0100 |
---|---|---|
committer | emkael <emkael@tlen.pl> | 2017-01-16 22:50:24 +0100 |
commit | 677953067f2bb5502a70f0d004f1ac844b18a128 (patch) | |
tree | 003c26454b543c2a8d73f0602446482fdbbef8db /providers | |
parent | f7b2bfae9778af2c99e0c7fe7b2634e0f4f0973f (diff) |
* Facebook support
Diffstat (limited to 'providers')
-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); + } + +} + +?> |