X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fdiaspora.php;h=18d37c243e212a992419f2de80a0dd09a54f096e;hb=39d8fec290613cac87c2821b9f7b20fa94d319ca;hp=f645aeb39b86a0ea62f24419a30bde0b8937b42e;hpb=6aca58f32052a8c4a78f471db3247c34f4931c7b;p=friendica.git diff --git a/include/diaspora.php b/include/diaspora.php index f645aeb39b..18d37c243e 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; @@ -859,7 +861,8 @@ function diaspora_post($importer,$xml,$msg) { $datarray['parent'] = 0; $datarray['owner-name'] = $contact['name']; $datarray['owner-link'] = $contact['url']; - $datarray['owner-avatar'] = $contact['thumb']; + //$datarray['owner-avatar'] = $contact['thumb']; + $datarray['owner-avatar'] = ((x($contact,'thumb')) ? $contact['thumb'] : $contact['photo']); $datarray['author-name'] = $contact['name']; $datarray['author-link'] = $contact['url']; $datarray['author-avatar'] = $contact['thumb']; @@ -922,6 +925,7 @@ function diaspora_reshare($importer,$xml,$msg) { $orig_guid = notags(unxmlify($xml->root_guid)); $source_url = 'https://' . substr($orig_author,strpos($orig_author,'@')+1) . '/p/' . $orig_guid . '.xml'; + $orig_url = 'https://'.substr($orig_author,strpos($orig_author,'@')+1).'/posts/'.$orig_guid; $x = fetch_url($source_url); if(! $x) $x = fetch_url(str_replace('https://','http://',$source_url)); @@ -958,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. @@ -1010,7 +1014,7 @@ function diaspora_reshare($importer,$xml,$msg) { } } } - + $datarray['uid'] = $importer['uid']; $datarray['contact-id'] = $contact['id']; $datarray['wall'] = 0; @@ -1021,11 +1025,24 @@ function diaspora_reshare($importer,$xml,$msg) { $datarray['parent'] = 0; $datarray['owner-name'] = $contact['name']; $datarray['owner-link'] = $contact['url']; - $datarray['owner-avatar'] = $contact['thumb']; - $datarray['author-name'] = $contact['name']; - $datarray['author-link'] = $contact['url']; - $datarray['author-avatar'] = $contact['thumb']; - $datarray['body'] = $prefix . $body; + $datarray['owner-avatar'] = ((x($contact,'thumb')) ? $contact['thumb'] : $contact['photo']); + 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."']"; + $datarray['author-name'] = $contact['name']; + $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; $datarray['app'] = 'Diaspora'; @@ -1116,7 +1133,8 @@ function diaspora_asphoto($importer,$xml,$msg) { $datarray['parent'] = 0; $datarray['owner-name'] = $contact['name']; $datarray['owner-link'] = $contact['url']; - $datarray['owner-avatar'] = $contact['thumb']; + //$datarray['owner-avatar'] = $contact['thumb']; + $datarray['owner-avatar'] = ((x($contact,'thumb')) ? $contact['thumb'] : $contact['photo']); $datarray['author-name'] = $contact['name']; $datarray['author-link'] = $contact['url']; $datarray['author-avatar'] = $contact['thumb']; @@ -1639,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(); @@ -1677,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; } @@ -1864,7 +1889,8 @@ EOT; $arr['owner-name'] = $parent_item['name']; $arr['owner-link'] = $parent_item['url']; - $arr['owner-avatar'] = $parent_item['thumb']; + //$arr['owner-avatar'] = $parent_item['thumb']; + $arr['owner-avatar'] = ((x($parent_item,'thumb')) ? $parent_item['thumb'] : $parent_item['photo']); $arr['author-name'] = $person['name']; $arr['author-link'] = $person['url']; @@ -2302,13 +2328,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. @@ -2316,7 +2344,7 @@ function diaspora_send_followup($item,$owner,$contact,$public_batch = false) { intval($item['parent']), intval($item['parent']) ); - //} + } if(count($p)) $parent = $p[0]; else @@ -2378,13 +2406,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. @@ -2392,7 +2422,7 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) { intval($item['parent']), intval($item['parent']) ); - //} + } if(count($p)) $parent = $p[0]; else