X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fdiaspora.php;h=5bf45e241fe1013b230f041bbd7b498918f05eac;hb=dbf51229d9014089eba0da41a55f23c507f7e2ea;hp=3b681e9918457e135a8b4bf195cea0c17e3dc253;hpb=e50c0efcdfa05f682201deb630b6147755c87fe4;p=friendica.git diff --git a/include/diaspora.php b/include/diaspora.php index 3b681e9918..5bf45e241f 100755 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -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); @@ -557,7 +559,7 @@ function diaspora_decode($importer,$xml) { } - + function diaspora_request($importer,$xml) { $a = get_app(); @@ -567,7 +569,7 @@ function diaspora_request($importer,$xml) { if(! $sender_handle || ! $recipient_handle) return; - + $contact = diaspora_get_contact_by_handle($importer['uid'],$sender_handle); if($contact) { @@ -752,6 +754,20 @@ function diaspora_request($importer,$xml) { } function diaspora_post_allow($importer,$contact) { + + // perhaps we were already sharing with this person. Now they're sharing with us. + // That makes us friends. + // Normally this should have handled by getting a request - but this could get lost + if($contact['rel'] == CONTACT_IS_FOLLOWER && $importer['page-flags'] != PAGE_COMMUNITY) { + q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d LIMIT 1", + intval(CONTACT_IS_FRIEND), + intval($contact['id']), + intval($importer['uid']) + ); + $contact['rel'] = CONTACT_IS_FRIEND; + logger('diaspora_post_allow: defining user '.$contact["nick"].' as friend'); + } + if(($contact['blocked']) || ($contact['readonly']) || ($contact['archive'])) return false; if($contact['rel'] == CONTACT_IS_SHARING || $contact['rel'] == CONTACT_IS_FRIEND) @@ -1655,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(); @@ -1693,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; } @@ -2319,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. @@ -2333,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 @@ -2395,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. @@ -2409,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