From 584f58e5733e62d92c451feb41c420e6c42a0d76 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 22 Mar 2015 08:55:45 +0100 Subject: [PATCH] Improved loop detection for Google+, Pump.io, Twitter and GNU Social --- fromgplus/fromgplus.php | 19 +++++++++---------- gpluspost/gpluspost.php | 2 +- pumpio/pumpio.php | 15 ++++++++++----- statusnet/statusnet.php | 4 ++++ twitter/twitter.php | 8 ++++++++ 5 files changed, 32 insertions(+), 16 deletions(-) diff --git a/fromgplus/fromgplus.php b/fromgplus/fromgplus.php index 17300ae8..e0725a46 100644 --- a/fromgplus/fromgplus.php +++ b/fromgplus/fromgplus.php @@ -416,6 +416,7 @@ function fromgplus_fetch($a, $uid) { $reversed = array_reverse($activities->items); foreach($reversed as $item) { + if (strtotime($item->published) <= $initiallastdate) continue; @@ -431,14 +432,11 @@ function fromgplus_fetch($a, $uid) { if ($first_time) continue; - if ($item->access->description == "Public") - - // Loop prevention - ignore postings from HootSuite - if ($item->provider->title == "HootSuite") - continue; + if ($item->access->description == "Public") { // Loop prevention through the special blank from the googleplus connector - if (strstr($item->object->content, $blank)) + //if (strstr($item->object->content, $blank)) + if (strrpos($item->object->content, $blank) >= strlen($item->object->content) - 5) continue; switch($item->object->objectType) { @@ -454,8 +452,8 @@ function fromgplus_fetch($a, $uid) { else $location = ""; - fromgplus_post($a, $uid, "Google+", $post, $location); - //fromgplus_post($a, $uid, $item->provider->title, $post, $location); + //fromgplus_post($a, $uid, "Google+", $post, $location); + fromgplus_post($a, $uid, $item->provider->title, $post, $location); break; @@ -488,10 +486,11 @@ function fromgplus_fetch($a, $uid) { else $location = ""; - fromgplus_post($a, $uid, "Google+", $post, $location); - //fromgplus_post($a, $uid, $item->provider->title, $post, $location); + //fromgplus_post($a, $uid, "Google+", $post, $location); + fromgplus_post($a, $uid, $item->provider->title, $post, $location); break; } + } } if ($lastdate != 0) set_pconfig($uid,'fromgplus','lastdate', $lastdate); diff --git a/gpluspost/gpluspost.php b/gpluspost/gpluspost.php index 5b2b3bf6..f9459b5a 100644 --- a/gpluspost/gpluspost.php +++ b/gpluspost/gpluspost.php @@ -230,7 +230,7 @@ function gpluspost_send(&$a,&$b) { return; // if post comes from Google+ don't send it back - if (!get_pconfig($b["uid"],'gpluspost','no_loop_prevention') and ($b['app'] == "Google+")) + if (!get_pconfig($b["uid"],'gpluspost','no_loop_prevention') and (($b['app'] == "Google+") OR ($b["extid"] == NETWORK_GPLUS))) return; if (!gpluspost_nextscripts()) { diff --git a/pumpio/pumpio.php b/pumpio/pumpio.php index 0e6c9c91..b413f59e 100644 --- a/pumpio/pumpio.php +++ b/pumpio/pumpio.php @@ -433,9 +433,6 @@ function pumpio_send(&$a,&$b) { $title = trim($b['title']); - //if ($title != '') - // $title = "

".$title."

"; - $content = bbcode($b['body'], false, false, 4); // Enhance the way, videos are displayed @@ -502,6 +499,10 @@ function pumpio_send(&$a,&$b) { $success = $client->CallAPI($url, 'POST', $params, array('FailOnAccessError'=>true, 'RequestContentType'=>'application/json'), $user); if($success) { + + if ($user->generator->displayName) + set_pconfig($b["uid"], "pumpio", "application_name", $user->generator->displayName); + $post_id = $user->object->id; logger('pumpio_send '.$username.': success '.$post_id); if($post_id AND $iscomment) { @@ -672,8 +673,12 @@ function pumpio_fetchtimeline(&$a, $uid) { $hostname = get_pconfig($uid, 'pumpio','host'); $username = get_pconfig($uid, "pumpio", "user"); - $application_name = get_config('pumpio', 'application_name'); - + // get the application name for the pump.io app + // 1st try personal config, then system config and fallback to the + // hostname of the node if neither one is set. + $application_name = get_pconfig( $uid, 'pumpio', 'application_name'); + if ($application_name == "") + $application_name = get_config('pumpio', 'application_name'); if ($application_name == "") $application_name = $a->get_hostname(); diff --git a/statusnet/statusnet.php b/statusnet/statusnet.php index 6713842e..a4b539f4 100644 --- a/statusnet/statusnet.php +++ b/statusnet/statusnet.php @@ -606,6 +606,10 @@ function statusnet_post_hook(&$a,&$b) { //$result = $dent->post('statuses/update', $postdata); logger('statusnet_post send, result: ' . print_r($result, true). "\nmessage: ".$msg, LOGGER_DEBUG."\nOriginal post: ".print_r($b, true)."\nPost Data: ".print_r($postdata, true)); + + if ($result->source) + set_pconfig($b["uid"], "statusnet", "application_name", strip_tags($result->source)); + if ($result->error) { logger('Send to StatusNet failed: "'.$result->error.'"'); } elseif ($iscomment) { diff --git a/twitter/twitter.php b/twitter/twitter.php index f0076703..16b3ea46 100644 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -506,6 +506,10 @@ function twitter_post_hook(&$a,&$b) { unlink($tempfile); logger('twitter_post_with_media send, result: ' . print_r($result, true), LOGGER_DEBUG); + + if ($result->source) + set_config("twitter", "application_name", strip_tags($result->source)); + if ($result->errors OR $result->error) { logger('Send to Twitter failed: "' . print_r($result->errors, true) . '"'); @@ -531,6 +535,10 @@ function twitter_post_hook(&$a,&$b) { $result = $tweet->post($url, $post); logger('twitter_post send, result: ' . print_r($result, true), LOGGER_DEBUG); + + if ($result->source) + set_config("twitter", "application_name", strip_tags($result->source)); + if ($result->errors) { logger('Send to Twitter failed: "' . print_r($result->errors, true) . '"');