You are here

public function DefaultController::jquery_social_stream_facebook_callback in jQuery social stream 8.2

Facebook callback for social stream.

1 string reference to 'DefaultController::jquery_social_stream_facebook_callback'
jquery_social_stream.routing.yml in ./jquery_social_stream.routing.yml
jquery_social_stream.routing.yml

File

src/Controller/DefaultController.php, line 85
Contains \Drupal\jquery_social_stream\Controller\DefaultController.

Class

DefaultController
Default controller for the jquery_social_stream module.

Namespace

Drupal\jquery_social_stream\Controller

Code

public function jquery_social_stream_facebook_callback() {
  $config = \Drupal::config('jquery_social_stream.settings');
  $app_id = $config
    ->get('facebook_app_id');
  $app_secret = $config
    ->get('facebook_app_secret');

  // DO NOT EDIT BELOW THIS LINE
  ini_set('display_errors', '0');
  error_reporting(E_ALL | E_STRICT);
  $app_access_token = $app_id . '|' . $app_secret;
  $page_id = isset($_GET['id']) ? $_GET['id'] : '';
  $limit = isset($_GET['limit']) ? $_GET['limit'] : 20;
  $feed = isset($_GET['feed']) ? $_GET['feed'] : 'feed';
  $fields = "id,message,picture,link,name,description,type,icon,created_time,from,object_id,likes,comments";
  $graphUrl = 'https://graph.facebook.com/v2.3/' . $page_id . '/' . $feed . '?key=value&access_token=' . $app_access_token . '&fields=' . $fields;
  $pageUrl = 'https://graph.facebook.com/v2.3/' . $page_id . '?key=value&access_token=' . $app_access_token;

  // get page details
  $pageObject = file_get_contents($pageUrl);
  if ($pageObject === FALSE) {
    $pageObject = self::dc_curl_get_contents($pageUrl);
  }
  $pageDetails = json_decode($pageObject);
  $pageLink = isset($pageDetails->link) ? $pageDetails->link : '';
  $pageName = isset($pageDetails->name) ? $pageDetails->name : '';

  // get page feed
  $graphObject = file_get_contents($graphUrl);
  if ($graphObject === FALSE) {
    $graphObject = self::dc_curl_get_contents($graphUrl);
  }
  $parsedJson = json_decode($graphObject);
  $pagefeed = $parsedJson->data;
  $count = 0;
  $link_url = '';
  $json_decoded = array();
  $json_decoded['responseData']['feed']['link'] = "";
  if (is_array($pagefeed)) {
    foreach ($pagefeed as $data) {
      if (isset($data->message)) {
        $message = $data->message;
      }
      elseif (isset($data->story)) {
        $message = $data->story;
      }
      else {
        $message = '';
      }
      if (isset($data->description)) {
        $message .= ' ' . $data->description;
      }
      $link = isset($data->link) ? $data->link : '';
      $image = isset($data->picture) ? $data->picture : NULL;
      $type = isset($data->type) ? $data->type : '';
      if ($link_url == $link) {

        // continue;
      }
      $link_url = $link;
      if ($type == 'status' && isset($data->story)) {
        continue;
      }
      if (!isset($data->object_id) && $type != 'video') {
        $pic_id = explode("_", $image);
        if (isset($pic_id[1])) {
          $data->object_id = $pic_id[1];
        }
      }
      if (isset($data->object_id)) {
        if (strpos($image, 'safe_image.php') === FALSE && is_numeric($data->object_id)) {
          $image = 'http://graph.facebook.com/' . $data->object_id . '/picture?type=normal';
        }
      }
      $json_decoded['responseData']['feed']['entries'][$count]['pageLink'] = $pageLink;
      $json_decoded['responseData']['feed']['entries'][$count]['pageName'] = $pageName;
      $json_decoded['responseData']['feed']['entries'][$count]['link'] = $link;
      $json_decoded['responseData']['feed']['entries'][$count]['content'] = $message;
      $json_decoded['responseData']['feed']['entries'][$count]['thumb'] = $image;
      $json_decoded['responseData']['feed']['entries'][$count]['publishedDate'] = date("D, d M Y H:i:s O", strtotime($data->created_time));
      $count++;
    }
  }
  header("Content-Type: application/json; charset=UTF-8");
  return new Response(drupal_json_encode($json_decoded));
}