Improved loop detection for Google+, Pump.io, Twitter and GNU Social

This commit is contained in:
Michael Vogel 2015-03-22 08:55:45 +01:00
parent ad1afc33d0
commit 584f58e573
5 changed files with 32 additions and 16 deletions

View file

@ -416,6 +416,7 @@ function fromgplus_fetch($a, $uid) {
$reversed = array_reverse($activities->items); $reversed = array_reverse($activities->items);
foreach($reversed as $item) { foreach($reversed as $item) {
if (strtotime($item->published) <= $initiallastdate) if (strtotime($item->published) <= $initiallastdate)
continue; continue;
@ -431,14 +432,11 @@ function fromgplus_fetch($a, $uid) {
if ($first_time) if ($first_time)
continue; continue;
if ($item->access->description == "Public") if ($item->access->description == "Public") {
// Loop prevention - ignore postings from HootSuite
if ($item->provider->title == "HootSuite")
continue;
// Loop prevention through the special blank from the googleplus connector // 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; continue;
switch($item->object->objectType) { switch($item->object->objectType) {
@ -454,8 +452,8 @@ function fromgplus_fetch($a, $uid) {
else else
$location = ""; $location = "";
fromgplus_post($a, $uid, "Google+", $post, $location); //fromgplus_post($a, $uid, "Google+", $post, $location);
//fromgplus_post($a, $uid, $item->provider->title, $post, $location); fromgplus_post($a, $uid, $item->provider->title, $post, $location);
break; break;
@ -488,11 +486,12 @@ function fromgplus_fetch($a, $uid) {
else else
$location = ""; $location = "";
fromgplus_post($a, $uid, "Google+", $post, $location); //fromgplus_post($a, $uid, "Google+", $post, $location);
//fromgplus_post($a, $uid, $item->provider->title, $post, $location); fromgplus_post($a, $uid, $item->provider->title, $post, $location);
break; break;
} }
} }
}
if ($lastdate != 0) if ($lastdate != 0)
set_pconfig($uid,'fromgplus','lastdate', $lastdate); set_pconfig($uid,'fromgplus','lastdate', $lastdate);
} }

View file

@ -230,7 +230,7 @@ function gpluspost_send(&$a,&$b) {
return; return;
// if post comes from Google+ don't send it back // 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; return;
if (!gpluspost_nextscripts()) { if (!gpluspost_nextscripts()) {

View file

@ -433,9 +433,6 @@ function pumpio_send(&$a,&$b) {
$title = trim($b['title']); $title = trim($b['title']);
//if ($title != '')
// $title = "<h4>".$title."</h4>";
$content = bbcode($b['body'], false, false, 4); $content = bbcode($b['body'], false, false, 4);
// Enhance the way, videos are displayed // 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); $success = $client->CallAPI($url, 'POST', $params, array('FailOnAccessError'=>true, 'RequestContentType'=>'application/json'), $user);
if($success) { if($success) {
if ($user->generator->displayName)
set_pconfig($b["uid"], "pumpio", "application_name", $user->generator->displayName);
$post_id = $user->object->id; $post_id = $user->object->id;
logger('pumpio_send '.$username.': success '.$post_id); logger('pumpio_send '.$username.': success '.$post_id);
if($post_id AND $iscomment) { if($post_id AND $iscomment) {
@ -672,8 +673,12 @@ function pumpio_fetchtimeline(&$a, $uid) {
$hostname = get_pconfig($uid, 'pumpio','host'); $hostname = get_pconfig($uid, 'pumpio','host');
$username = get_pconfig($uid, "pumpio", "user"); $username = get_pconfig($uid, "pumpio", "user");
// 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'); $application_name = get_config('pumpio', 'application_name');
if ($application_name == "") if ($application_name == "")
$application_name = $a->get_hostname(); $application_name = $a->get_hostname();

View file

@ -606,6 +606,10 @@ function statusnet_post_hook(&$a,&$b) {
//$result = $dent->post('statuses/update', $postdata); //$result = $dent->post('statuses/update', $postdata);
logger('statusnet_post send, result: ' . print_r($result, true). 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)); "\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) { if ($result->error) {
logger('Send to StatusNet failed: "'.$result->error.'"'); logger('Send to StatusNet failed: "'.$result->error.'"');
} elseif ($iscomment) { } elseif ($iscomment) {

View file

@ -506,6 +506,10 @@ function twitter_post_hook(&$a,&$b) {
unlink($tempfile); unlink($tempfile);
logger('twitter_post_with_media send, result: ' . print_r($result, true), LOGGER_DEBUG); 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) { if ($result->errors OR $result->error) {
logger('Send to Twitter failed: "' . print_r($result->errors, true) . '"'); 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); $result = $tweet->post($url, $post);
logger('twitter_post send, result: ' . print_r($result, true), LOGGER_DEBUG); 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) { if ($result->errors) {
logger('Send to Twitter failed: "' . print_r($result->errors, true) . '"'); logger('Send to Twitter failed: "' . print_r($result->errors, true) . '"');