diff --git a/fbpost/fbpost.php b/fbpost/fbpost.php index 2ac558ea..5b28c859 100644 --- a/fbpost/fbpost.php +++ b/fbpost/fbpost.php @@ -428,6 +428,9 @@ function fbpost_post_hook(&$a,&$b) { logger('fbpost_post_hook: Facebook post first check successful', LOGGER_DEBUG); // if post comes from facebook don't send it back + if($b['extid'] == NETWORK_FACEBOOK) + return; + if(($b['app'] == "Facebook") AND ($b['verb'] != ACTIVITY_LIKE)) return; @@ -967,8 +970,21 @@ function fbpost_cron($a,$b) { set_config('facebook','last_poll', time()); } +function fbpost_cleanpicture($url) { + require_once("include/Photo.php"); + + $urldata = parse_url($url); + if (isset($urldata["query"])) { + parse_str($urldata["query"], $querydata); + if (isset($querydata["url"]) AND (get_photo_info($querydata["url"]))) + return($querydata["url"]); + } + return($url); +} + function fbpost_fetchwall($a, $uid) { require_once("include/oembed.php"); + require_once("include/network.php"); require_once('mod/item.php'); $access_token = get_pconfig($uid,'facebook','access_token'); @@ -1019,7 +1035,9 @@ function fbpost_fetchwall($a, $uid) { $_REQUEST["type"] = "wall"; $_REQUEST["api_source"] = true; $_REQUEST["profile_uid"] = $uid; - $_REQUEST["source"] = "Facebook"; + //$_REQUEST["source"] = "Facebook"; + $_REQUEST["source"] = $item->application->name; + $_REQUEST["extid"] = NETWORK_FACEBOOK; $_REQUEST["title"] = ""; @@ -1029,6 +1047,7 @@ function fbpost_fetchwall($a, $uid) { $type = ""; if(isset($item->name) and isset($item->link)) { + $item->link = original_url($item->link); $oembed_data = oembed_fetch_url($item->link); $type = $oembed_data->type; $content = "[bookmark=".$item->link."]".$item->name."[/bookmark]"; @@ -1071,9 +1090,17 @@ function fbpost_fetchwall($a, $uid) { } } - if(($picture != "") && isset($item->link)) + if(trim($_REQUEST["body"].$content.$quote) == '') { + logger('facebook: empty body 2 '.$item->id.' '.print_r($item, true)); + continue; + } + + $picture = fbpost_cleanpicture($picture); + + if(($picture != "") && isset($item->link)) { + $item->link = original_url($item->link); $content .= "\n".'[url='.$item->link.'][img]'.$picture.'[/img][/url]'; - else { + } else { if ($picture != "") $content .= "\n".'[img]'.$picture.'[/img]'; // if just a link, it may be a wall photo - check diff --git a/fbsync/fbsync.php b/fbsync/fbsync.php index 51d2747f..64f6fe2a 100644 --- a/fbsync/fbsync.php +++ b/fbsync/fbsync.php @@ -216,6 +216,7 @@ function fbsync_createpost($a, $uid, $self, $contacts, $applications, $post, $cr $access_token = get_pconfig($uid,'facebook','access_token'); require_once("include/oembed.php"); + require_once("include/network.php"); // check if it was already imported $r = q("SELECT * FROM `item` WHERE `uid` = %d AND `uri` = '%s' LIMIT 1", @@ -339,6 +340,7 @@ function fbsync_createpost($a, $uid, $self, $contacts, $applications, $post, $cr $type = ""; if (isset($post->attachment->name) and isset($post->attachment->href)) { + $post->attachment->href = original_url($post->attachment->href); $oembed_data = oembed_fetch_url($post->attachment->href); $type = $oembed_data->type; if ($type == "rich") @@ -391,6 +393,8 @@ function fbsync_createpost($a, $uid, $self, $contacts, $applications, $post, $cr } } + $preview = fbpost_cleanpicture($preview); + if (isset($media->href) AND ($preview != "") AND ($media->href != "")) $content .= "\n".'[url='.$media->href.'][img]'.$preview.'[/img][/url]'; else { diff --git a/statusnet/statusnet.php b/statusnet/statusnet.php index ce8d170b..7d0f80c3 100644 --- a/statusnet/statusnet.php +++ b/statusnet/statusnet.php @@ -532,6 +532,9 @@ function statusnet_post_hook(&$a,&$b) { return; // if posts comes from statusnet don't send it back + if($b['extid'] == NETWORK_STATUSNET) + return; + if($b['app'] == "StatusNet") return; @@ -829,7 +832,9 @@ function statusnet_fetchtimeline($a, $uid) { $_REQUEST["type"] = "wall"; $_REQUEST["api_source"] = true; $_REQUEST["profile_uid"] = $uid; - $_REQUEST["source"] = "StatusNet"; + //$_REQUEST["source"] = "StatusNet"; + $_REQUEST["source"] = $post->source; + $_REQUEST["extid"] = NETWORK_STATUSNET; //$_REQUEST["date"] = $post->created_at; diff --git a/twitter/twitter.php b/twitter/twitter.php index 2669c46d..380121c2 100644 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -438,6 +438,9 @@ function twitter_post_hook(&$a,&$b) { return; // if post comes from twitter don't send it back + if($b['extid'] == NETWORK_TWITTER) + return; + if($b['app'] == "Twitter") return; @@ -743,7 +746,9 @@ function twitter_fetchtimeline($a, $uid) { $_REQUEST["type"] = "wall"; $_REQUEST["api_source"] = true; $_REQUEST["profile_uid"] = $uid; - $_REQUEST["source"] = "Twitter"; + //$_REQUEST["source"] = "Twitter"; + $_REQUEST["source"] = $post->source; + $_REQUEST["extid"] = NETWORK_TWITTER; //$_REQUEST["date"] = $post->created_at;