aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/diaspora.php25
-rw-r--r--mod/follow.php15
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']);