summaryrefslogtreecommitdiff
path: root/providers
diff options
context:
space:
mode:
authoremkael <emkael@tlen.pl>2017-01-16 22:04:43 +0100
committeremkael <emkael@tlen.pl>2017-01-16 22:50:24 +0100
commit677953067f2bb5502a70f0d004f1ac844b18a128 (patch)
tree003c26454b543c2a8d73f0602446482fdbbef8db /providers
parentf7b2bfae9778af2c99e0c7fe7b2634e0f4f0973f (diff)
* Facebook support
Diffstat (limited to 'providers')
-rw-r--r--providers/Facebook.php70
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);
+ }
+
+}
+
+?>