X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=pumpio%2Fpumpio.php;h=b90d8b608dfa4cf10ed017404a48c086ed89d71b;hb=3b54203d80b63101d064581081ec7a2a5236e322;hp=cb2ee000431c157ceed463ece56d55f98e58f132;hpb=8bd0cf1d56cd93d43a1f00d5579be1d8ee152515;p=friendica-addons.git
diff --git a/pumpio/pumpio.php b/pumpio/pumpio.php
index cb2ee000..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'];
@@ -433,9 +436,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
@@ -499,9 +499,16 @@ 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) {
+
+ 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) {
@@ -581,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);
@@ -599,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'));
@@ -663,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');
@@ -672,8 +692,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();
@@ -695,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));
@@ -731,7 +758,7 @@ function pumpio_fetchtimeline(&$a, $uid) {
if ($receiver->id == "http://activityschema.org/collection/public")
$public = true;
- if ($public AND !strstr($post->generator->displayName, $application_name)) {
+ if ($public AND !stristr($post->generator->displayName, $application_name)) {
require_once('include/html2bbcode.php');
$_SESSION["authenticated"] = true;
@@ -917,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)));
@@ -1130,6 +1164,7 @@ function pumpio_dopost(&$a, $client, $uid, $self, $post, $own_id, $threadcomplet
$public = true;
$postarray = array();
+ $postarray['network'] = NETWORK_PUMPIO;
$postarray['gravity'] = 0;
$postarray['uid'] = $uid;
$postarray['wall'] = 0;
@@ -1227,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
@@ -1240,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",
@@ -1350,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);
@@ -1388,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)
@@ -1454,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;
@@ -1602,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;
@@ -1667,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