Example #1
0
 public static function get_fb_feeds($fb_page_id = '', $page_id = 0, $category_id = 0)
 {
     if (!$fb_page_id) {
         return false;
     }
     $url = self::$api_url . $fb_page_id . '/posts?limit=' . self::$limit . '&access_token=' . self::get_fb_access_token();
     $obj = json_decode(HelperNews::curl($url));
     $batches_like = array();
     $batches_comment = array();
     $items = array();
     $item_ids = array();
     if (!empty($obj->data) && is_array($obj->data)) {
         foreach ($obj->data as $i => $item) {
             if (empty($item->id)) {
                 return false;
             }
             $shares = !empty($item->shares->count) ? $item->shares->count : 0;
             $timestamp = \Carbon\Carbon::now()->toDateTimeString();
             $items[] = array('page_id' => $page_id, 'category_id' => $category_id, 'fb_id' => !empty($item->id) ? $item->id : 0, 'object_id' => !empty($item->object_id) ? $item->object_id : 0, 'name' => !empty($item->name) ? $item->name : '', 'message' => !empty($item->message) ? $item->message : '', 'picture' => !empty($item->picture) ? $item->picture : '', 'fb_link' => !empty($item->link) ? $item->link : '', 'source' => !empty($item->source) ? $item->source : '', 'type' => !empty($item->type) ? $item->type : '', 'share_count' => $shares, 'created_at' => !empty($item->created_time) ? $item->created_time : '', 'updated_at' => $timestamp);
             $item_ids[] = $item->id;
             $batch = new \stdClass();
             $batch->method = 'GET';
             $batch->relative_url = $item->id . '/likes?summary=1';
             $batches_like[] = $batch;
             $batch = new \stdClass();
             $batch->method = 'GET';
             $batch->relative_url = $item->id . '/comments?summary=1';
             $batches_comment[] = $batch;
         }
         // Get facebook like meta information
         $url = self::$api_url . '?batch=' . urlencode(json_encode($batches_like)) . '&access_token=' . self::get_fb_access_token() . '&method=post';
         $objs = json_decode(HelperNews::curl($url));
         if (!empty($objs)) {
             foreach ($objs as $i => $obj) {
                 if ($obj->body) {
                     $body = json_decode($obj->body);
                     $items[$i]['like_count'] = isset($body->summary->total_count) ? $body->summary->total_count : 0;
                 }
             }
         }
         // Get facebook like meta information
         $url = self::$api_url . '?batch=' . urlencode(json_encode($batches_comment)) . '&access_token=' . self::get_fb_access_token() . '&method=post';
         $objs = json_decode(HelperNews::curl($url));
         if (!empty($objs)) {
             foreach ($objs as $i => $obj) {
                 if ($obj->body) {
                     $body = json_decode($obj->body);
                     $items[$i]['comment_count'] = isset($body->summary->total_count) ? $body->summary->total_count : 0;
                 }
             }
         }
         $records = FbFeed::whereIn('fb_id', $item_ids)->get();
         if (count($records)) {
             foreach ($items as $i => $item) {
                 if ($item) {
                     foreach ($records as $j => $record) {
                         if ($item['fb_id'] == $record->fb_id) {
                             if ($item['share_count'] != $record->share_count || $item['like_count'] != $record->like_count || $item['comment_count'] != $record->comment_count) {
                                 $record->share_count = $item['share_count'];
                                 $record->like_count = $item['like_count'];
                                 $record->comment_count = $item['comment_count'];
                                 $record->save();
                             }
                             unset($items[$i]);
                         }
                     }
                 }
             }
         }
         if (count($items)) {
             foreach ($items as $i => $item) {
                 $record = FbFeed::where('fb_id', '=', $item['fb_id'])->first();
                 if (!$record) {
                     FbFeed::insert(array($item));
                 }
             }
         }
     }
     return $items;
 }