fbpost/fbsync: Better picture support for facebook. Now the highest resolution is fetched.

This commit is contained in:
Michael Vogel 2014-07-27 16:07:30 +02:00
parent 1b41f6581b
commit 31ab2a3cbf
3 changed files with 36 additions and 8 deletions

View file

@ -1050,11 +1050,25 @@ function fbpost_fetchwall($a, $uid) {
$type = $item->type; $type = $item->type;
if(isset($item->picture) && isset($item->link))
$content .= "\n".'[url='.$item->link.'][img]'.fpost_cleanpicture($item->picture).'[/img][/url]';
else {
if (isset($item->picture)) if (isset($item->picture))
$content .= "\n".'[img]'.fpost_cleanpicture($item->picture).'[/img]'; $picture = $item->picture;
if (($type == "photo") AND isset($item->object_id)) {
logger('fbpost_fetchwall: fetching fbid '.$item->object_id, LOGGER_DEBUG);
$url = "https://graph.facebook.com/v2.0/".$item->object_id."/?access_token=".$access_token;
$feed = fetch_url($url);
$data = json_decode($feed);
if (isset($data->images)) {
$picture = $data->images[0]->source;
logger('fbpost_fetchwall: got fbid image '.$preview, LOGGER_DEBUG);
}
}
if(($picture != "") && isset($item->link))
$content .= "\n".'[url='.$item->link.'][img]'.$picture.'[/img][/url]';
else {
if ($picture != "")
$content .= "\n".'[img]'.$picture.'[/img]';
// if just a link, it may be a wall photo - check // if just a link, it may be a wall photo - check
if(isset($item->link)) if(isset($item->link))
$content .= fbpost_get_photo($uid,$item->link); $content .= fbpost_get_photo($uid,$item->link);
@ -1125,7 +1139,7 @@ function fbpost_get_photo($uid,$link) {
$x = fetch_url('https://graph.facebook.com/'.$photo_id.'?access_token='.$access_token); $x = fetch_url('https://graph.facebook.com/'.$photo_id.'?access_token='.$access_token);
$j = json_decode($x); $j = json_decode($x);
if($j->picture) if($j->picture)
return "\n\n".'[url='.$link.'][img]'.fpost_cleanpicture($j->picture).'[/img][/url]'; return "\n\n".'[url='.$link.'][img]'.$j->picture.'[/img][/url]';
return ""; return "";
} }

View file

@ -213,6 +213,8 @@ function fbsync_expire($a,$b) {
function fbsync_createpost($a, $uid, $self, $contacts, $applications, $post, $create_user) { function fbsync_createpost($a, $uid, $self, $contacts, $applications, $post, $create_user) {
$access_token = get_pconfig($uid,'facebook','access_token');
require_once("include/oembed.php"); require_once("include/oembed.php");
// check if it was already imported // check if it was already imported
@ -365,10 +367,22 @@ function fbsync_createpost($a, $uid, $self, $contacts, $applications, $post, $cr
if (isset($media->src)) if (isset($media->src))
$preview = $media->src; $preview = $media->src;
if (isset($media->photo)) if (isset($media->photo)) {
if (isset($media->photo->images) AND (count($media->photo->images) > 1)) if (isset($media->photo->images) AND (count($media->photo->images) > 1))
$preview = $media->photo->images[1]->src; $preview = $media->photo->images[1]->src;
if (isset($media->photo->fbid)) {
logger('fbsync_createpost: fetching fbid '.$media->photo->fbid, LOGGER_DEBUG);
$url = "https://graph.facebook.com/v2.0/".$media->photo->fbid."/?access_token=".$access_token;
$feed = fetch_url($url);
$data = json_decode($feed);
if (isset($data->images)) {
$preview = $data->images[0]->source;
logger('fbsync_createpost: got fbid image '.$preview, LOGGER_DEBUG);
}
}
}
if (isset($media->href) AND ($preview != "") AND ($media->href != "")) if (isset($media->href) AND ($preview != "") AND ($media->href != ""))
$content .= "\n".'[url='.$media->href.'][img]'.$preview.'[/img][/url]'; $content .= "\n".'[url='.$media->href.'][img]'.$preview.'[/img][/url]';
else { else {

View file

@ -307,8 +307,8 @@ function privacy_image_cache_img_cb($matches) {
$matches[2] = urldecode($queryvar['url']); $matches[2] = urldecode($queryvar['url']);
// if fetching facebook pictures don't fetch the thumbnail but the big one // if fetching facebook pictures don't fetch the thumbnail but the big one
if (((strpos($matches[2], ".fbcdn.net/") OR strpos($matches[2], "/fbcdn-photos-"))) and (substr($matches[2], -6) == "_s.jpg")) //if (((strpos($matches[2], ".fbcdn.net/") OR strpos($matches[2], "/fbcdn-photos-"))) and (substr($matches[2], -6) == "_s.jpg"))
$matches[2] = substr($matches[2], 0, -6)."_n.jpg"; // $matches[2] = substr($matches[2], 0, -6)."_n.jpg";
// following line changed per bug #431 // following line changed per bug #431
if (privacy_image_cache_is_local_image($matches[2])) if (privacy_image_cache_is_local_image($matches[2]))