]> git.mxchange.org Git - friendica.git/commitdiff
Bugfix: Conversations with Diaspora now work reliable
authorMichael Vogel <icarus@dabo.de>
Thu, 13 Aug 2015 20:49:57 +0000 (22:49 +0200)
committerMichael Vogel <icarus@dabo.de>
Thu, 13 Aug 2015 20:49:57 +0000 (22:49 +0200)
include/diaspora.php
include/message.php
view/templates/diaspora_message.tpl

index 3640c74959a9ca49862cd98d50335d8b06858d69..5b242fe3b831936c7299915785ee9df5dc93862e 100644 (file)
@@ -1791,7 +1791,7 @@ function diaspora_message($importer,$xml,$msg) {
        $msg_diaspora_handle = notags(unxmlify($xml->diaspora_handle));
        $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);
        if(! $contact) {
@@ -2991,7 +2991,7 @@ function diaspora_send_mail($item,$owner,$contact) {
        $body = bb2diaspora($item['body']);
        $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'];
 
        $sig = base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256'));
@@ -2999,7 +2999,7 @@ function diaspora_send_mail($item,$owner,$contact) {
        $msg = array(
                'guid' => xmlify($item['guid']),
                'parent_guid' => xmlify($cnv['guid']),
-               'parent_author_signature' => (($item['reply']) ? null : xmlify($sig)),
+               'parent_author_signature' => xmlify($sig),
                'author_signature' => xmlify($sig),
                'text' => xmlify($body),
                'created_at' => xmlify($created),
index 07e90fa2df3c9875bab04b56aaf6dcf05563e186..ac14571721580f421d3b3f650d21f2a937cf969b 100644 (file)
@@ -1,16 +1,16 @@
 <?php
 
        // send a private message
-       
 
 
 
-function send_message($recipient=0, $body='', $subject='', $replyto=''){ 
+
+function send_message($recipient=0, $body='', $subject='', $replyto=''){
 
        $a = get_app();
 
        if(! $recipient) return -1;
-       
+
        if(! strlen($subject))
                $subject = t('[no subject]');
 
@@ -26,9 +26,6 @@ function send_message($recipient=0, $body='', $subject='', $replyto=''){
                return -2;
        }
 
-       $hash = random_string();
-       $uri = 'urn:X-dfrn:' . $a->get_baseurl() . ':' . local_user() . ':' . $hash ;
-
        $convid = 0;
        $reply = false;
 
@@ -43,19 +40,23 @@ function send_message($recipient=0, $body='', $subject='', $replyto=''){
                );
                if(count($r))
                        $convid = $r[0]['convid'];
-       }               
+       }
 
-       if(! $convid) {
+       $recip_host = substr($contact[0]['url'],strpos($contact[0]['url'],'://')+3);
+       $recip_host = substr($recip_host,0,strpos($recip_host,'/'));
 
-               // create a new conversation
+       $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;
 
-               $conv_guid = get_guid();
+       if(! $convid) {
 
-               $recip_host = substr($contact[0]['url'],strpos($contact[0]['url'],'://')+3);
-               $recip_host = substr($recip_host,0,strpos($recip_host,'/'));
+               // create a new conversation
 
-               $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);
+               $conv_guid = get_guid(32);
+               $convuri = $recip_handle.':'.$conv_guid;
 
                $handles = $recip_handle . ';' . $sender_handle;
 
@@ -83,15 +84,15 @@ function send_message($recipient=0, $body='', $subject='', $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`)
                VALUES ( %d, '%s', %d, '%s', '%s', '%s', %d, '%s', '%s', %d, %d, %d, '%s', '%s', '%s' )",
                intval(local_user()),
-               dbesc(get_guid()),
+               dbesc($msg_guid),
                intval($convid),
                dbesc($me[0]['name']),
                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
         * 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
@@ -143,11 +144,11 @@ function send_message($recipient=0, $body='', $subject='', $replyto=''){
                                        dbesc($image_uri),
                                        dbesc( t('Wall Photos')),
                                        intval(local_user())
-                               ); 
+                               );
                        }
                }
        }
-       
+
        if($post_id) {
                proc_run('php',"include/notifier.php","mail","$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();
 
 
        if(! $recipient) return -1;
-       
+
        if(! strlen($subject))
                $subject = t('[no subject]');
 
@@ -184,7 +185,7 @@ function send_wallmessage($recipient='', $body='', $subject='', $replyto=''){
        if(! $me['name'])
                return -2;
 
-       $conv_guid = get_guid();
+       $conv_guid = get_guid(32);
 
        $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;
        }
 
-       $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`)
                VALUES ( %d, '%s', %d, '%s', '%s', '%s', %d, '%s', '%s', %d, %d, %d, '%s', '%s', '%s', %d )",
                intval($recipient['uid']),
-               dbesc(get_guid()),
+               dbesc(get_guid(32)),
                intval($convid),
                dbesc($me['name']),
                dbesc($me['photo']),
index fe0ab4b5f472269994ccbd90f94cac625315a57b..f9adb833b69eca5e3bb21bcfac61996444d777e6 100644 (file)
@@ -4,6 +4,9 @@
       <message>
         <guid>{{$msg.guid}}</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>
         <text>{{$msg.text}}</text>
         <created_at>{{$msg.created_at}}</created_at>