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; }