]> git.mxchange.org Git - friendica.git/blobdiff - include/diaspora.php
Merge branch 'master' of https://github.com/annando/friendica
[friendica.git] / include / diaspora.php
index 8e77f03336bd935614062cdde64cc19d816a887f..5bf45e241fe1013b230f041bbd7b498918f05eac 100755 (executable)
@@ -16,7 +16,9 @@ function diaspora_dispatch_public($msg) {
                return;
        }
 
-       $r = q("SELECT `user`.* FROM `user` WHERE `user`.`uid` IN ( SELECT `contact`.`uid` FROM `contact` WHERE `contact`.`network` = '%s' AND `contact`.`addr` = '%s' ) AND `account_expired` = 0 AND `account_removed` = 0 ",
+       $r = q("SELECT `user`.* FROM `user` WHERE `user`.`uid` IN
+               ( SELECT `contact`.`uid` FROM `contact` WHERE `contact`.`network` = '%s' AND `contact`.`addr` = '%s' )
+               AND `account_expired` = 0 AND `account_removed` = 0 ",
                dbesc(NETWORK_DIASPORA),
                dbesc($msg['author'])
        );
@@ -32,7 +34,7 @@ function diaspora_dispatch_public($msg) {
 
 
 
-function diaspora_dispatch($importer,$msg) {
+function diaspora_dispatch($importer,$msg,$attempt=1) {
 
        $ret = 0;
 
@@ -88,7 +90,7 @@ function diaspora_dispatch($importer,$msg) {
                $ret = diaspora_signed_retraction($importer,$xmlbase->relayable_retraction,$msg);
        }
        elseif($xmlbase->photo) {
-               $ret = diaspora_photo($importer,$xmlbase->photo,$msg);
+               $ret = diaspora_photo($importer,$xmlbase->photo,$msg,$attempt);
        }
        elseif($xmlbase->conversation) {
                $ret = diaspora_conversation($importer,$xmlbase->conversation,$msg);
@@ -1669,7 +1671,7 @@ function diaspora_message($importer,$xml,$msg) {
 }
 
 
-function diaspora_photo($importer,$xml,$msg) {
+function diaspora_photo($importer,$xml,$msg,$attempt=1) {
 
        $a = get_app();
 
@@ -1707,7 +1709,14 @@ function diaspora_photo($importer,$xml,$msg) {
                dbesc($status_message_guid)
        );
        if(! count($r)) {
-               logger('diaspora_photo: parent item not found: parent: ' . $parent_guid . ' item: ' . $guid);
+               if($attempt <= 3) {
+                       q("INSERT INTO dsprphotoq (uid, msg, attempt) VALUES (%d, '%s', %d)",
+                          intval($importer['uid']),
+                          dbesc(serialize($msg)),
+                          intval($attempt + 1)
+                       );
+               }
+               logger('diaspora_photo: attempt = ' . $attempt . '; status message not found: ' . $status_message_guid . ' for photo: ' . $guid);
                return;
        }
 
@@ -2333,13 +2342,15 @@ function diaspora_send_followup($item,$owner,$contact,$public_batch = false) {
        $myaddr = $owner['nickname'] . '@' .  substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
 //     $theiraddr = $contact['addr'];
 
-       // Diaspora doesn't support threaded comments
-       /*if($item['thr-parent']) {
+       // Diaspora doesn't support threaded comments, but some
+       // versions of Diaspora (i.e. Diaspora-pistos) support
+       // likes on comments
+       if($item['verb'] === ACTIVITY_LIKE && $item['thr-parent']) {
                $p = q("select guid, type, uri, `parent-uri` from item where uri = '%s' limit 1",
                        dbesc($item['thr-parent'])
                      );
        }
-       else {*/
+       else {
                // The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always
                // return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent.
                // The only item with `parent` and `id` as the parent id is the parent item.
@@ -2347,7 +2358,7 @@ function diaspora_send_followup($item,$owner,$contact,$public_batch = false) {
                        intval($item['parent']),
                        intval($item['parent'])
                );
-       //}
+       }
        if(count($p))
                $parent = $p[0];
        else
@@ -2409,13 +2420,15 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
        $body = $item['body'];
        $text = html_entity_decode(bb2diaspora($body));
 
-       // Diaspora doesn't support threaded comments
-       /*if($item['thr-parent']) {
+       // Diaspora doesn't support threaded comments, but some
+       // versions of Diaspora (i.e. Diaspora-pistos) support
+       // likes on comments
+       if($item['verb'] === ACTIVITY_LIKE && $item['thr-parent']) {
                $p = q("select guid, type, uri, `parent-uri` from item where uri = '%s' limit 1",
                        dbesc($item['thr-parent'])
                      );
        }
-       else {*/
+       else {
                // The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always
                // return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent.
                // The only item with `parent` and `id` as the parent id is the parent item.
@@ -2423,7 +2436,7 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
                       intval($item['parent']),
                       intval($item['parent'])
                      );
-       //}
+       }
        if(count($p))
                $parent = $p[0];
        else