Bugfix: Conversations with Diaspora now work reliable
This commit is contained in:
parent
4663df5b2b
commit
887372a0d7
|
@ -1791,7 +1791,7 @@ function diaspora_message($importer,$xml,$msg) {
|
||||||
$msg_diaspora_handle = notags(unxmlify($xml->diaspora_handle));
|
$msg_diaspora_handle = notags(unxmlify($xml->diaspora_handle));
|
||||||
$msg_conversation_guid = notags(unxmlify($xml->conversation_guid));
|
$msg_conversation_guid = notags(unxmlify($xml->conversation_guid));
|
||||||
|
|
||||||
$parent_uri = $diaspora_handle . ':' . $msg_parent_guid;
|
$parent_uri = $msg_diaspora_handle . ':' . $msg_parent_guid;
|
||||||
|
|
||||||
$contact = diaspora_get_contact_by_handle($importer['uid'],$msg_diaspora_handle);
|
$contact = diaspora_get_contact_by_handle($importer['uid'],$msg_diaspora_handle);
|
||||||
if(! $contact) {
|
if(! $contact) {
|
||||||
|
@ -2991,7 +2991,7 @@ function diaspora_send_mail($item,$owner,$contact) {
|
||||||
$body = bb2diaspora($item['body']);
|
$body = bb2diaspora($item['body']);
|
||||||
$created = datetime_convert('UTC','UTC',$item['created'],'Y-m-d H:i:s \U\T\C');
|
$created = datetime_convert('UTC','UTC',$item['created'],'Y-m-d H:i:s \U\T\C');
|
||||||
|
|
||||||
$signed_text = $item['guid'] . ';' . $cnv['guid'] . ';' . $body . ';'
|
$signed_text = $item['guid'] . ';' . $cnv['guid'] . ';' . $body . ';'
|
||||||
. $created . ';' . $myaddr . ';' . $cnv['guid'];
|
. $created . ';' . $myaddr . ';' . $cnv['guid'];
|
||||||
|
|
||||||
$sig = base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256'));
|
$sig = base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256'));
|
||||||
|
@ -2999,7 +2999,7 @@ function diaspora_send_mail($item,$owner,$contact) {
|
||||||
$msg = array(
|
$msg = array(
|
||||||
'guid' => xmlify($item['guid']),
|
'guid' => xmlify($item['guid']),
|
||||||
'parent_guid' => xmlify($cnv['guid']),
|
'parent_guid' => xmlify($cnv['guid']),
|
||||||
'parent_author_signature' => (($item['reply']) ? null : xmlify($sig)),
|
'parent_author_signature' => xmlify($sig),
|
||||||
'author_signature' => xmlify($sig),
|
'author_signature' => xmlify($sig),
|
||||||
'text' => xmlify($body),
|
'text' => xmlify($body),
|
||||||
'created_at' => xmlify($created),
|
'created_at' => xmlify($created),
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
// send a private message
|
// send a private message
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function send_message($recipient=0, $body='', $subject='', $replyto=''){
|
|
||||||
|
function send_message($recipient=0, $body='', $subject='', $replyto=''){
|
||||||
|
|
||||||
$a = get_app();
|
$a = get_app();
|
||||||
|
|
||||||
if(! $recipient) return -1;
|
if(! $recipient) return -1;
|
||||||
|
|
||||||
if(! strlen($subject))
|
if(! strlen($subject))
|
||||||
$subject = t('[no subject]');
|
$subject = t('[no subject]');
|
||||||
|
|
||||||
|
@ -26,9 +26,6 @@ function send_message($recipient=0, $body='', $subject='', $replyto=''){
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
$hash = random_string();
|
|
||||||
$uri = 'urn:X-dfrn:' . $a->get_baseurl() . ':' . local_user() . ':' . $hash ;
|
|
||||||
|
|
||||||
$convid = 0;
|
$convid = 0;
|
||||||
$reply = false;
|
$reply = false;
|
||||||
|
|
||||||
|
@ -43,19 +40,23 @@ function send_message($recipient=0, $body='', $subject='', $replyto=''){
|
||||||
);
|
);
|
||||||
if(count($r))
|
if(count($r))
|
||||||
$convid = $r[0]['convid'];
|
$convid = $r[0]['convid'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$recip_host = substr($contact[0]['url'],strpos($contact[0]['url'],'://')+3);
|
||||||
|
$recip_host = substr($recip_host,0,strpos($recip_host,'/'));
|
||||||
|
|
||||||
|
$recip_handle = (($contact[0]['addr']) ? $contact[0]['addr'] : $contact[0]['nick'] . '@' . $recip_host);
|
||||||
|
$sender_handle = $a->user['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
|
||||||
|
|
||||||
|
$msg_guid = get_guid(32);
|
||||||
|
$uri = $recip_handle.':'.$msg_guid;
|
||||||
|
|
||||||
if(! $convid) {
|
if(! $convid) {
|
||||||
|
|
||||||
// create a new conversation
|
// create a new conversation
|
||||||
|
|
||||||
$conv_guid = get_guid();
|
$conv_guid = get_guid(32);
|
||||||
|
$convuri = $recip_handle.':'.$conv_guid;
|
||||||
$recip_host = substr($contact[0]['url'],strpos($contact[0]['url'],'://')+3);
|
|
||||||
$recip_host = substr($recip_host,0,strpos($recip_host,'/'));
|
|
||||||
|
|
||||||
$recip_handle = (($contact[0]['addr']) ? $contact[0]['addr'] : $contact[0]['nick'] . '@' . $recip_host);
|
|
||||||
$sender_handle = $a->user['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
|
|
||||||
|
|
||||||
$handles = $recip_handle . ';' . $sender_handle;
|
$handles = $recip_handle . ';' . $sender_handle;
|
||||||
|
|
||||||
|
@ -83,15 +84,15 @@ function send_message($recipient=0, $body='', $subject='', $replyto=''){
|
||||||
}
|
}
|
||||||
|
|
||||||
if(! strlen($replyto)) {
|
if(! strlen($replyto)) {
|
||||||
$replyto = $uri;
|
$replyto = $convuri;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$r = q("INSERT INTO `mail` ( `uid`, `guid`, `convid`, `from-name`, `from-photo`, `from-url`,
|
$r = q("INSERT INTO `mail` ( `uid`, `guid`, `convid`, `from-name`, `from-photo`, `from-url`,
|
||||||
`contact-id`, `title`, `body`, `seen`, `reply`, `replied`, `uri`, `parent-uri`, `created`)
|
`contact-id`, `title`, `body`, `seen`, `reply`, `replied`, `uri`, `parent-uri`, `created`)
|
||||||
VALUES ( %d, '%s', %d, '%s', '%s', '%s', %d, '%s', '%s', %d, %d, %d, '%s', '%s', '%s' )",
|
VALUES ( %d, '%s', %d, '%s', '%s', '%s', %d, '%s', '%s', %d, %d, %d, '%s', '%s', '%s' )",
|
||||||
intval(local_user()),
|
intval(local_user()),
|
||||||
dbesc(get_guid()),
|
dbesc($msg_guid),
|
||||||
intval($convid),
|
intval($convid),
|
||||||
dbesc($me[0]['name']),
|
dbesc($me[0]['name']),
|
||||||
dbesc($me[0]['thumb']),
|
dbesc($me[0]['thumb']),
|
||||||
|
@ -117,7 +118,7 @@ function send_message($recipient=0, $body='', $subject='', $replyto=''){
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* When a photo was uploaded into the message using the (profile wall) ajax
|
* When a photo was uploaded into the message using the (profile wall) ajax
|
||||||
* uploader, The permissions are initially set to disallow anybody but the
|
* uploader, The permissions are initially set to disallow anybody but the
|
||||||
* owner from seeing it. This is because the permissions may not yet have been
|
* owner from seeing it. This is because the permissions may not yet have been
|
||||||
* set for the post. If it's private, the photo permissions should be set
|
* set for the post. If it's private, the photo permissions should be set
|
||||||
|
@ -143,11 +144,11 @@ function send_message($recipient=0, $body='', $subject='', $replyto=''){
|
||||||
dbesc($image_uri),
|
dbesc($image_uri),
|
||||||
dbesc( t('Wall Photos')),
|
dbesc( t('Wall Photos')),
|
||||||
intval(local_user())
|
intval(local_user())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if($post_id) {
|
if($post_id) {
|
||||||
proc_run('php',"include/notifier.php","mail","$post_id");
|
proc_run('php',"include/notifier.php","mail","$post_id");
|
||||||
return intval($post_id);
|
return intval($post_id);
|
||||||
|
@ -161,13 +162,13 @@ function send_message($recipient=0, $body='', $subject='', $replyto=''){
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function send_wallmessage($recipient='', $body='', $subject='', $replyto=''){
|
function send_wallmessage($recipient='', $body='', $subject='', $replyto=''){
|
||||||
|
|
||||||
$a = get_app();
|
$a = get_app();
|
||||||
|
|
||||||
|
|
||||||
if(! $recipient) return -1;
|
if(! $recipient) return -1;
|
||||||
|
|
||||||
if(! strlen($subject))
|
if(! strlen($subject))
|
||||||
$subject = t('[no subject]');
|
$subject = t('[no subject]');
|
||||||
|
|
||||||
|
@ -184,7 +185,7 @@ function send_wallmessage($recipient='', $body='', $subject='', $replyto=''){
|
||||||
if(! $me['name'])
|
if(! $me['name'])
|
||||||
return -2;
|
return -2;
|
||||||
|
|
||||||
$conv_guid = get_guid();
|
$conv_guid = get_guid(32);
|
||||||
|
|
||||||
$recip_handle = $recipient['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
|
$recip_handle = $recipient['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
|
||||||
|
|
||||||
|
@ -217,11 +218,11 @@ function send_wallmessage($recipient='', $body='', $subject='', $replyto=''){
|
||||||
return -4;
|
return -4;
|
||||||
}
|
}
|
||||||
|
|
||||||
$r = q("INSERT INTO `mail` ( `uid`, `guid`, `convid`, `from-name`, `from-photo`, `from-url`,
|
$r = q("INSERT INTO `mail` ( `uid`, `guid`, `convid`, `from-name`, `from-photo`, `from-url`,
|
||||||
`contact-id`, `title`, `body`, `seen`, `reply`, `replied`, `uri`, `parent-uri`, `created`, `unknown`)
|
`contact-id`, `title`, `body`, `seen`, `reply`, `replied`, `uri`, `parent-uri`, `created`, `unknown`)
|
||||||
VALUES ( %d, '%s', %d, '%s', '%s', '%s', %d, '%s', '%s', %d, %d, %d, '%s', '%s', '%s', %d )",
|
VALUES ( %d, '%s', %d, '%s', '%s', '%s', %d, '%s', '%s', %d, %d, %d, '%s', '%s', '%s', %d )",
|
||||||
intval($recipient['uid']),
|
intval($recipient['uid']),
|
||||||
dbesc(get_guid()),
|
dbesc(get_guid(32)),
|
||||||
intval($convid),
|
intval($convid),
|
||||||
dbesc($me['name']),
|
dbesc($me['name']),
|
||||||
dbesc($me['photo']),
|
dbesc($me['photo']),
|
||||||
|
|
|
@ -4,6 +4,9 @@
|
||||||
<message>
|
<message>
|
||||||
<guid>{{$msg.guid}}</guid>
|
<guid>{{$msg.guid}}</guid>
|
||||||
<parent_guid>{{$msg.parent_guid}}</parent_guid>
|
<parent_guid>{{$msg.parent_guid}}</parent_guid>
|
||||||
|
{{if $msg.parent_author_signature}}
|
||||||
|
<parent_author_signature>{{$msg.parent_author_signature}}</parent_author_signature>
|
||||||
|
{{/if}}
|
||||||
<author_signature>{{$msg.author_signature}}</author_signature>
|
<author_signature>{{$msg.author_signature}}</author_signature>
|
||||||
<text>{{$msg.text}}</text>
|
<text>{{$msg.text}}</text>
|
||||||
<created_at>{{$msg.created_at}}</created_at>
|
<created_at>{{$msg.created_at}}</created_at>
|
||||||
|
|
Loading…
Reference in a new issue