X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=pumpio%2Fpumpio.php;h=b90d8b608dfa4cf10ed017404a48c086ed89d71b;hb=3b54203d80b63101d064581081ec7a2a5236e322;hp=b413f59e522387bdcf45ff4f95b79af463b6f95a;hpb=9317b8c0aeccd0ef68271be1e20e5dd371c37e15;p=friendica-addons.git diff --git a/pumpio/pumpio.php b/pumpio/pumpio.php index b413f59e..b90d8b60 100644 --- a/pumpio/pumpio.php +++ b/pumpio/pumpio.php @@ -1,7 +1,7 @@ */ @@ -68,8 +68,10 @@ function pumpio_registerclient(&$a, $host) { if ($application_name == "") $application_name = $a->get_hostname(); + $adminlist = explode(",", str_replace(" ", "", $a->config['admin_email'])); + $params["type"] = "client_associate"; - $params["contacts"] = $a->config['admin_email']; + $params["contacts"] = $adminlist[0]; $params["application_type"] = "native"; $params["application_name"] = $application_name; $params["logo_url"] = $a->get_baseurl()."/images/friendica-256.png"; @@ -302,6 +304,7 @@ function pumpio_settings_post(&$a,&$b) { set_pconfig(local_user(),'pumpio','mirror',false); set_pconfig(local_user(),'pumpio','post_by_default',false); set_pconfig(local_user(),'pumpio','lastdate', 0); + set_pconfig(local_user(),'pumpio','last_id', ''); } else { // filtering the username if it is filled wrong $user = $_POST['pumpio_user']; @@ -496,7 +499,10 @@ function pumpio_send(&$a,&$b) { $username = $user.'@'.$host; $url = 'https://'.$host.'/api/user/'.$user.'/feed'; - $success = $client->CallAPI($url, 'POST', $params, array('FailOnAccessError'=>true, 'RequestContentType'=>'application/json'), $user); + if (pumpio_reachable($url)) + $success = $client->CallAPI($url, 'POST', $params, array('FailOnAccessError'=>true, 'RequestContentType'=>'application/json'), $user); + else + $success = false; if($success) { @@ -582,7 +588,10 @@ function pumpio_action(&$a, $uid, $uri, $action, $content = "") { $url = 'https://'.$hostname.'/api/user/'.$username.'/feed'; - $success = $client->CallAPI($url, 'POST', $params, array('FailOnAccessError'=>true, 'RequestContentType'=>'application/json'), $user); + if (pumpio_reachable($url)) + $success = $client->CallAPI($url, 'POST', $params, array('FailOnAccessError'=>true, 'RequestContentType'=>'application/json'), $user); + else + $success = false; if($success) logger('pumpio_action '.$username.' '.$action.': success '.$uri); @@ -600,8 +609,13 @@ function pumpio_action(&$a, $uid, $uri, $action, $content = "") { } } +function pumpio_sync(&$a) { + $r = q("SELECT * FROM `addon` WHERE `installed` = 1 AND `name` = 'pumpio'", + $plugin); + + if (!count($r)) + return; -function pumpio_cron(&$a,$b) { $last = get_config('pumpio','last_poll'); $poll_interval = intval(get_config('pumpio','poll_interval')); @@ -664,6 +678,11 @@ function pumpio_cron(&$a,$b) { set_config('pumpio','last_poll', time()); } +function pumpio_cron(&$a,$b) { + //pumpio_sync($a); + proc_run("php","addon/pumpio/pumpio_sync.php"); +} + function pumpio_fetchtimeline(&$a, $uid) { $ckey = get_pconfig($uid, 'pumpio', 'consumer_key'); $csecret = get_pconfig($uid, 'pumpio', 'consumer_secret'); @@ -700,7 +719,10 @@ function pumpio_fetchtimeline(&$a, $uid) { $username = $user.'@'.$host; - $success = $client->CallAPI($url, 'GET', array(), array('FailOnAccessError'=>true), $user); + if (pumpio_reachable($url)) + $success = $client->CallAPI($url, 'GET', array(), array('FailOnAccessError'=>true), $user); + else + $success = false; if (!$success) { logger('pumpio: error fetching posts for user '.$uid." ".$username." ".print_r($user, true)); @@ -922,6 +944,13 @@ function pumpio_dolike(&$a, $uid, $self, $post, $own_id, $threadcompletion = tru function pumpio_get_contact($uid, $contact) { + if (function_exists("update_gcontact")) + update_gcontact($contact->url, + NETWORK_PUMPIO, $contact->image->url, + $contact->displayName, $contact->preferredUsername, + $contact->location->displayName, $contact->summary, + str_replace("acct:", "", $contact->id)); + $r = q("SELECT id FROM unique_contacts WHERE url='%s' LIMIT 1", dbesc(normalise_link($contact->url))); @@ -1233,6 +1262,7 @@ function pumpio_dopost(&$a, $client, $uid, $self, $post, $own_id, $threadcomplet $postarray['body'] = "[share author='".$post->object->author->displayName. "' profile='".$post->object->author->url. "' avatar='".$post->object->author->image->url. + "' posted='".datetime_convert('UTC','UTC',$post->object->created). "' link='".$post->links->self->href."']".$postarray['body']."[/share]"; } else { // Let shares look like wall-to-wall posts @@ -1246,6 +1276,7 @@ function pumpio_dopost(&$a, $client, $uid, $self, $post, $own_id, $threadcomplet return false; $top_item = item_store($postarray); + $postarray["id"] = $top_item; if (($top_item == 0) AND ($post->verb == "update")) { $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s' , `changed` = '%s' WHERE `uri` = '%s' AND `uid` = %d", @@ -1356,7 +1387,10 @@ function pumpio_fetchinbox(&$a, $uid) { if ($last_id != "") $url .= '?since='.urlencode($last_id); - $success = $client->CallAPI($url, 'GET', array(), array('FailOnAccessError'=>true), $user); + if (pumpio_reachable($url)) + $success = $client->CallAPI($url, 'GET', array(), array('FailOnAccessError'=>true), $user); + else + $success = false; if ($user->items) { $posts = array_reverse($user->items); @@ -1394,12 +1428,18 @@ function pumpio_getallusers(&$a, $uid) { $url = 'https://'.$hostname.'/api/user/'.$username.'/following'; - $success = $client->CallAPI($url, 'GET', array(), array('FailOnAccessError'=>true), $users); + if (pumpio_reachable($url)) + $success = $client->CallAPI($url, 'GET', array(), array('FailOnAccessError'=>true), $users); + else + $success = false; if ($users->totalItems > count($users->items)) { $url = 'https://'.$hostname.'/api/user/'.$username.'/following?count='.$users->totalItems; - $success = $client->CallAPI($url, 'GET', array(), array('FailOnAccessError'=>true), $users); + if (pumpio_reachable($url)) + $success = $client->CallAPI($url, 'GET', array(), array('FailOnAccessError'=>true), $users); + else + $success = false; } foreach ($users->items AS $user) @@ -1460,7 +1500,10 @@ function pumpio_queue_hook(&$a,&$b) { $client->client_id = $consumer_key; $client->client_secret = $consumer_secret; - $success = $client->CallAPI($z['url'], 'POST', $z['post'], array('FailOnAccessError'=>true, 'RequestContentType'=>'application/json'), $user); + if (pumpio_reachable($z['url'])) + $success = $client->CallAPI($z['url'], 'POST', $z['post'], array('FailOnAccessError'=>true, 'RequestContentType'=>'application/json'), $user); + else + $success = false; if($success) { $post_id = $user->object->id; @@ -1608,7 +1651,10 @@ function pumpio_fetchallcomments(&$a, $uid, $id) { logger("pumpio_fetchallcomments: fetching comment for user ".$uid." url ".$url); - $success = $client->CallAPI($url, 'GET', array(), array('FailOnAccessError'=>true), $item); + if (pumpio_reachable($url)) + $success = $client->CallAPI($url, 'GET', array(), array('FailOnAccessError'=>true), $item); + else + $success = false; if (!$success) return; @@ -1673,6 +1719,12 @@ function pumpio_fetchallcomments(&$a, $uid, $id) { } } + +function pumpio_reachable($url) { + $data = z_fetch_url($url, false, $redirects, array('timeout'=>10)); + return(intval($data['return_code']) != 0); +} + /* To-Do: - edit own notes