X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fdiaspora.php;h=4b81efef8172faac9bed6384f5924be1770d4bc9;hb=1507ec37a4f6c35aebb9c50cbbade2b7d5682225;hp=b14402b5a24cffade05e6fd14886ca1bdd88d053;hpb=cb3586a2807b98f77fa1cb075ff15d981e473c21;p=friendica.git diff --git a/include/diaspora.php b/include/diaspora.php index b14402b5a2..4b81efef81 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); @@ -752,7 +754,7 @@ function diaspora_request($importer,$xml) { } function diaspora_post_allow($importer,$contact) { - if(($contact['blocked']) || ($contact['readonly'])) + if(($contact['blocked']) || ($contact['readonly']) || ($contact['archive'])) return false; if($contact['rel'] == CONTACT_IS_SHARING || $contact['rel'] == CONTACT_IS_FRIEND) return true; @@ -960,12 +962,12 @@ function diaspora_reshare($importer,$xml,$msg) { $person = find_diaspora_person_by_handle($orig_author); - if(is_array($person) && x($person,'name') && x($person,'url')) + /*if(is_array($person) && x($person,'name') && x($person,'url')) $details = '[url=' . $person['url'] . ']' . $person['name'] . '[/url]'; else $details = $orig_author; - $prefix = html_entity_decode("♲ ", ENT_QUOTES, 'UTF-8') . $details . "\n"; + $prefix = html_entity_decode("♲ ", ENT_QUOTES, 'UTF-8') . $details . "\n";*/ // allocate a guid on our system - we aren't fixing any collisions. @@ -1012,7 +1014,7 @@ function diaspora_reshare($importer,$xml,$msg) { } } } - + $datarray['uid'] = $importer['uid']; $datarray['contact-id'] = $contact['id']; $datarray['wall'] = 0; @@ -1024,16 +1026,8 @@ function diaspora_reshare($importer,$xml,$msg) { $datarray['owner-name'] = $contact['name']; $datarray['owner-link'] = $contact['url']; $datarray['owner-avatar'] = ((x($contact,'thumb')) ? $contact['thumb'] : $contact['photo']); - if (intval(get_config('system','diaspora_newreshare'))) { - // Let reshared messages look like wall-to-wall posts - // we have to set an additional value in the item in the future - // to distinct the wall-to-wall-posts from reshared/repeated messages - $datarray['author-name'] = $person['name']; - $datarray['author-link'] = $person['url']; - $datarray['author-avatar'] = ((x($person,'thumb')) ? $person['thumb'] : $person['photo']); - $datarray['body'] = $body; - } else { - $prefix = "[share author='".$person['name']. + if (intval(get_config('system','new_share'))) { + $prefix = "[share author='".str_replace("'", "'",$person['name']). "' profile='".$person['url']. "' avatar='".((x($person,'thumb')) ? $person['thumb'] : $person['photo']). "' link='".$orig_url."']"; @@ -1041,6 +1035,12 @@ function diaspora_reshare($importer,$xml,$msg) { $datarray['author-link'] = $contact['url']; $datarray['author-avatar'] = $contact['thumb']; $datarray['body'] = $prefix.$body."[/share]"; + } else { + // Let reshared messages look like wall-to-wall posts + $datarray['author-name'] = $person['name']; + $datarray['author-link'] = $person['url']; + $datarray['author-avatar'] = ((x($person,'thumb')) ? $person['thumb'] : $person['photo']); + $datarray['body'] = $body; } $datarray['tag'] = $str_tags; @@ -1657,7 +1657,7 @@ function diaspora_message($importer,$xml,$msg) { } -function diaspora_photo($importer,$xml,$msg) { +function diaspora_photo($importer,$xml,$msg,$attempt=1) { $a = get_app(); @@ -1695,7 +1695,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; } @@ -2199,7 +2206,7 @@ function diaspora_send_status($item,$owner,$contact,$public_batch = false) { $images = array(); $title = $item['title']; - $body = $item['body']; + $body = fix_private_photos($item['body'], $owner['uid'], $item, $contact['id']); /* // We're trying to match Diaspora's split message/photo protocol but @@ -2322,12 +2329,12 @@ function diaspora_send_followup($item,$owner,$contact,$public_batch = false) { // $theiraddr = $contact['addr']; // Diaspora doesn't support threaded comments - /*if($item['thr-parent']) { + 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. @@ -2335,7 +2342,7 @@ function diaspora_send_followup($item,$owner,$contact,$public_batch = false) { intval($item['parent']), intval($item['parent']) ); - //} + } if(count($p)) $parent = $p[0]; else @@ -2398,12 +2405,12 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) { $text = html_entity_decode(bb2diaspora($body)); // Diaspora doesn't support threaded comments - /*if($item['thr-parent']) { + 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. @@ -2411,7 +2418,7 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) { intval($item['parent']), intval($item['parent']) ); - //} + } if(count($p)) $parent = $p[0]; else