diff options
-rw-r--r-- | include/diaspora.php | 25 | ||||
-rw-r--r-- | mod/follow.php | 15 |
2 files changed, 34 insertions, 6 deletions
diff --git a/include/diaspora.php b/include/diaspora.php index 3310e6d32..d8be2b2cc 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -77,7 +77,7 @@ $decrypted_header = <<< EOT <iv>$b_inner_iv</iv> <aes_key>$b_inner_aes_key</aes_key> <author> - <name>{$contact['name']}</name> + <name>{$user['username']}</name> <uri>$handle</uri> </author> </decrypted_header> @@ -170,7 +170,7 @@ function diaspora_decode($importer,$xml) { if(! $base) { logger('mod-diaspora: unable to locate salmon data in xml '); - dt_return(400); + http_status_exit(400); } @@ -519,3 +519,24 @@ function diaspora_retraction($importer,$contact,$xml) { } +function diaspora_share($me,$contact) { + $a = get_app(); + $myaddr = $me['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3); + $theiraddr = $contact['addr']; + + $tpl = get_markup_template('diaspora_share.tpl'); + $msg = replace_macros($tpl, array( + '$sender' => myaddr, + '$recipient' => $theiraddr + )); + + $slap = diaspora_msg_build($msg,$me,$contact,$me['prvkey'],$contact['pubkey']); + + post_url($contact['notify'],$slap, array( + 'Content-type: application/magic-envelope+xml', + 'Content-length: ' . strlen($slap) + )); + $return_code = $a->get_curl_code(); + return $return_code; +} + diff --git a/mod/follow.php b/mod/follow.php index 80226f3b9..48bccc5aa 100644 --- a/mod/follow.php +++ b/mod/follow.php @@ -71,6 +71,7 @@ function follow_post(&$a) { $writeable = 1; } + // check if we already have a contact // the poll url is more reliable than the profile url, as we may have // indirect links or webfinger links @@ -175,10 +176,16 @@ function follow_post(&$a) { intval(local_user()) ); - - if((count($r)) && (x($contact,'notify')) && (strlen($contact['notify']))) { - require_once('include/salmon.php'); - slapper($r[0],$contact['notify'],$slap); + if(count($r)) { + if(($contact['network'] == NETWORK_OSTATUS) && (strlen($contact['notify']))) { + require_once('include/salmon.php'); + slapper($r[0],$contact['notify'],$slap); + } + if($contact['network'] == NETWORK_DIASPORA) { + require_once('include/diaspora.php'); + $ret = diaspora_share($a->user,$r[0]); + logger('mod_follow: diaspora_share returns: ' . $ret); + } } goaway($_SESSION['return_url']); |