X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fdiaspora.php;h=c97abc28cdec81b8049f5cf401cc39bee7b2b3b7;hb=a320805bd931cad1fcbb96e547fa28c74da88bff;hp=c874ded4a75fa20708fd4614f290444992fb7c2a;hpb=af48217465bd3e2995fab33ff2469b9e01840915;p=friendica.git diff --git a/include/diaspora.php b/include/diaspora.php index c874ded4a7..c97abc28cd 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -22,6 +22,12 @@ function diaspora_dispatch_public($msg) { return; } + // Use a dummy importer to import the data for the public copy + $importer = array("uid" => 0, "page-flags" => PAGE_FREELOVE); + $result = diaspora_dispatch($importer,$msg); + logger("Dispatcher reported ".$result, LOGGER_DEBUG); + + // Now distribute it to the followers $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 ", @@ -34,15 +40,8 @@ function diaspora_dispatch_public($msg) { diaspora_dispatch($rr,$msg); } } - else { + else logger('diaspora_public: no subscribers for '.$msg["author"].' '.print_r($msg, true)); - - // Use a dummy importer - $importer = array("uid" => 0, "page-flags" => PAGE_FREELOVE); - $result = diaspora_dispatch($importer,$msg); - - logger("Dispatcher reported ".$result, LOGGER_DEBUG); - } } @@ -111,6 +110,9 @@ function diaspora_dispatch($importer,$msg,$attempt=1) { elseif($xmlbase->message) { $ret = diaspora_message($importer,$xmlbase->message,$msg); } + elseif($xmlbase->participation) { + $ret = diaspora_participation($importer,$xmlbase->participation); + } else { logger('diaspora_dispatch: unknown message type: ' . print_r($xmlbase,true)); } @@ -590,7 +592,7 @@ function diaspora_request($importer,$xml) { // perhaps we were already sharing with this person. Now they're sharing with us. // That makes us friends. - if($contact['rel'] == CONTACT_IS_FOLLOWER && !in_array($importer['page-flags'], array(PAGE_COMMUNITY, PAGE_SOAPBOX))) { + if($contact['rel'] == CONTACT_IS_FOLLOWER && in_array($importer['page-flags'], array(PAGE_FREELOVE))) { q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d", intval(CONTACT_IS_FRIEND), intval($contact['id']), @@ -772,7 +774,7 @@ function diaspora_post_allow($importer,$contact, $is_comment = false) { // 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 && !in_array($importer['page-flags'], array(PAGE_COMMUNITY, PAGE_SOAPBOX))) { + if($contact['rel'] == CONTACT_IS_FOLLOWER && in_array($importer['page-flags'], array(PAGE_FREELOVE))) { q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d", intval(CONTACT_IS_FRIEND), intval($contact['id']), @@ -846,9 +848,8 @@ function diaspora_post($importer,$xml,$msg) { } $message_id = $diaspora_handle . ':' . $guid; - $r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `uri` = '%s' AND `guid` = '%s' LIMIT 1", + $r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", intval($importer['uid']), - dbesc($message_id), dbesc($guid) ); if(count($r)) { @@ -965,9 +966,8 @@ function diaspora_store_by_guid($guid, $server, $uid = 0) { $objecttype = $item["object-type"]; $message_id = $author.':'.$guid; - $r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `uri` = '%s' AND `guid` = '%s' LIMIT 1", + $r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", intval($uid), - dbesc($message_id), dbesc($guid) ); if(count($r)) @@ -975,9 +975,21 @@ function diaspora_store_by_guid($guid, $server, $uid = 0) { $person = find_diaspora_person_by_handle($author); + $contact_id = get_contact($person['url'], $uid); + + $contacts = q("SELECT * FROM `contact` WHERE `id` = %d", intval($contact_id)); + $importers = q("SELECT * FROM `user` WHERE `uid` = %d", intval($uid)); + + if ($contacts AND $importers) + if(!diaspora_post_allow($importers[0],$contacts[0], false)) { + logger('Ignoring author '.$person['url'].' for uid '.$uid); + return false; + } else + logger('Author '.$person['url'].' is allowed for uid '.$uid); + $datarray = array(); $datarray['uid'] = $uid; - $datarray['contact-id'] = get_contact($person['url'], $uid); + $datarray['contact-id'] = $contact_id; $datarray['wall'] = 0; $datarray['network'] = NETWORK_DIASPORA; $datarray['guid'] = $guid; @@ -1123,9 +1135,8 @@ function diaspora_reshare($importer,$xml,$msg) { } $message_id = $diaspora_handle . ':' . $guid; - $r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `uri` = '%s' AND `guid` = '%s' LIMIT 1", + $r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", intval($importer['uid']), - dbesc($message_id), dbesc($guid) ); if(count($r)) { @@ -1309,9 +1320,8 @@ function diaspora_asphoto($importer,$xml,$msg) { } $message_id = $diaspora_handle . ':' . $guid; - $r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `uri` = '%s' AND `guid` = '%s' LIMIT 1", + $r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", intval($importer['uid']), - dbesc($message_id), dbesc($guid) ); if(count($r)) { @@ -1827,7 +1837,7 @@ function diaspora_message($importer,$xml,$msg) { $author_signature = base64_decode($msg_author_signature); - $person = find_diaspora_person_by_handle($msg_diaspora_handle); + $person = find_diaspora_person_by_handle($msg_diaspora_handle); if(is_array($person) && x($person,'pubkey')) $key = $person['pubkey']; else { @@ -1874,6 +1884,9 @@ function diaspora_message($importer,$xml,$msg) { return; } +function diaspora_participation($importer,$xml) { + logger("Unsupported message type 'participation' ".print_r($xml, true)); +} function diaspora_photo($importer,$xml,$msg,$attempt=1) { @@ -2408,7 +2421,8 @@ function diaspora_profile($importer,$xml,$msg) { $birthday = str_replace('1000','1901',$birthday); - $birthday = datetime_convert('UTC','UTC',$birthday,'Y-m-d'); + if ($birthday != "") + $birthday = datetime_convert('UTC','UTC',$birthday,'Y-m-d'); // this is to prevent multiple birthday notifications in a single year // if we already have a stored birthday and the 'm-d' part hasn't changed, preserve the entry, which will preserve the notify year