Bugfix: Conversations with Diaspora now work reliable

This commit is contained in:
Michael Vogel 2015-08-13 22:49:57 +02:00
parent 4663df5b2b
commit 887372a0d7
3 changed files with 32 additions and 28 deletions

View File

@ -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) {
@ -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),

View File

@ -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;
@ -45,17 +42,21 @@ function send_message($recipient=0, $body='', $subject='', $replyto=''){
$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,7 +84,7 @@ function send_message($recipient=0, $body='', $subject='', $replyto=''){
} }
if(! strlen($replyto)) { if(! strlen($replyto)) {
$replyto = $uri; $replyto = $convuri;
} }
@ -91,7 +92,7 @@ function send_message($recipient=0, $body='', $subject='', $replyto=''){
`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']),
@ -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);
@ -221,7 +222,7 @@ function send_wallmessage($recipient='', $body='', $subject='', $replyto=''){
`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']),

View File

@ -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>