From 6041f74df64861ae0cab4b6250b97a65f61873a3 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 1 Jul 2019 18:00:55 +0000 Subject: [PATCH 1/3] New constant for federated protocols --- include/conversation.php | 8 ++++---- mod/crepair.php | 2 +- mod/item.php | 2 +- src/Content/ContactSelector.php | 2 +- src/Content/Widget/ContactBlock.php | 2 +- src/Core/Protocol.php | 2 ++ src/Core/Search.php | 2 +- src/Model/Contact.php | 10 +++++----- src/Model/Item.php | 8 ++++---- src/Model/Profile.php | 2 +- src/Module/Contact.php | 4 ++-- src/Protocol/ActivityPub/Receiver.php | 4 ++-- src/Protocol/ActivityPub/Transmitter.php | 4 ++-- src/Worker/UpdateGContact.php | 4 ++-- 14 files changed, 29 insertions(+), 27 deletions(-) diff --git a/include/conversation.php b/include/conversation.php index 3b3c7a4c1..a2927f9bf 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -584,7 +584,7 @@ function conversation(App $a, array $items, Pager $pager, $mode, $update, $previ if (in_array($mode, ['community', 'contacts'])) { $writable = true; } else { - $writable = ($items[0]['uid'] == 0) && in_array($items[0]['network'], [Protocol::ACTIVITYPUB, Protocol::OSTATUS, Protocol::DIASPORA, Protocol::DFRN]); + $writable = ($items[0]['uid'] == 0) && in_array($items[0]['network'], Protocol::FEDERATED); } if (!local_user()) { @@ -872,7 +872,7 @@ function conversation_add_children(array $parents, $block_authors, $order, $uid) foreach ($items as $index => $item) { if ($item['uid'] == 0) { - $items[$index]['writable'] = in_array($item['network'], [Protocol::ACTIVITYPUB, Protocol::OSTATUS, Protocol::DIASPORA, Protocol::DFRN]); + $items[$index]['writable'] = in_array($item['network'], Protocol::FEDERATED); } } @@ -931,7 +931,7 @@ function item_photo_menu($item) { $contact_url = 'contact/' . $cid; $posts_link = 'contact/' . $cid . '/posts'; - if (in_array($network, [Protocol::DFRN, Protocol::DIASPORA])) { + if (in_array($network, [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA])) { $pm_url = 'message/new/' . $cid; } } @@ -954,7 +954,7 @@ function item_photo_menu($item) { } if ((($cid == 0) || ($rel == Contact::FOLLOWER)) && - in_array($item['network'], [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::OSTATUS, Protocol::DIASPORA])) { + in_array($item['network'], Protocol::FEDERATED)) { $menu[L10n::t('Connect/Follow')] = 'follow?url=' . urlencode($item['author-link']); } } else { diff --git a/mod/crepair.php b/mod/crepair.php index 7e10b2ff2..ce27b4498 100644 --- a/mod/crepair.php +++ b/mod/crepair.php @@ -132,7 +132,7 @@ function crepair_content(App $a) $remote_self_options = ['0' => L10n::t('No mirroring'), '2' => L10n::t('Mirror as my own posting')]; } - $update_profile = in_array($contact['network'], [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS]); + $update_profile = in_array($contact['network'], Protocol::FEDERATED); $tab_str = Module\Contact::getTabsHTML($a, $contact, 5); diff --git a/mod/item.php b/mod/item.php index 20dc9dfda..fff4f712c 100644 --- a/mod/item.php +++ b/mod/item.php @@ -163,7 +163,7 @@ function item_post(App $a) { } // Allow commenting if it is an answer to a public post - $allow_comment = local_user() && ($profile_uid == 0) && $toplevel_item_id && in_array($toplevel_item['network'], [Protocol::ACTIVITYPUB, Protocol::OSTATUS, Protocol::DIASPORA, Protocol::DFRN]); + $allow_comment = local_user() && ($profile_uid == 0) && $toplevel_item_id && in_array($toplevel_item['network'], Protocol::FEDERATED); // Now check that valid personal details have been provided if (!Security::canWriteToUserWall($profile_uid) && !$allow_comment) { diff --git a/src/Content/ContactSelector.php b/src/Content/ContactSelector.php index e327069b3..22bfe08b5 100644 --- a/src/Content/ContactSelector.php +++ b/src/Content/ContactSelector.php @@ -105,7 +105,7 @@ class ContactSelector $networkname = str_replace($search, $replace, $network); - if ((in_array($network, [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS])) && ($profile != "")) { + if ((in_array($network, Protocol::FEDERATED)) && ($profile != "")) { // Create the server url out of the profile url $parts = parse_url($profile); unset($parts['path']); diff --git a/src/Content/Widget/ContactBlock.php b/src/Content/Widget/ContactBlock.php index bc33b9c9c..ef152f900 100644 --- a/src/Content/Widget/ContactBlock.php +++ b/src/Content/Widget/ContactBlock.php @@ -75,7 +75,7 @@ class ContactBlock 'hidden' => false, 'archive' => false, 'rel' => $rel, - 'network' => [Protocol::DFRN, Protocol::ACTIVITYPUB, Protocol::OSTATUS, Protocol::DIASPORA], + 'network' => Protocol::FEDERATED, ], ['limit' => $shown]); if (DBA::isResult($contact_ids_stmt)) { diff --git a/src/Core/Protocol.php b/src/Core/Protocol.php index 0038b505a..759a6e70e 100644 --- a/src/Core/Protocol.php +++ b/src/Core/Protocol.php @@ -23,6 +23,8 @@ class Protocol const NATIVE_SUPPORT = [self::DFRN, self::DIASPORA, self::OSTATUS, self::FEED, self::MAIL, self::ACTIVITYPUB]; + const FEDERATED = [self::DFRN, self::DIASPORA, self::OSTATUS, self::ACTIVITYPUB]; + // Supported through a connector const DIASPORA2 = 'dspc'; // Diaspora connector const LINKEDIN = 'lnkd'; // LinkedIn diff --git a/src/Core/Search.php b/src/Core/Search.php index e26cc0edc..9f8375da1 100644 --- a/src/Core/Search.php +++ b/src/Core/Search.php @@ -49,7 +49,7 @@ class Search extends BaseObject return $emptyResultList; } - if (!(in_array($user_data["network"], [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::OSTATUS, Protocol::DIASPORA]))) { + if (!(in_array($user_data["network"], Protocol::FEDERATED))) { return $emptyResultList; } diff --git a/src/Model/Contact.php b/src/Model/Contact.php index f38c69ed0..84cdbbc82 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -963,7 +963,7 @@ class Contact extends BaseObject } if ((empty($profile["addr"]) || empty($profile["name"])) && (defaults($profile, "gid", 0) != 0) - && in_array($profile["network"], [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS]) + && in_array($profile["network"], Protocol::FEDERATED) ) { Worker::add(PRIORITY_LOW, "UpdateGContact", $profile["gid"]); } @@ -1587,7 +1587,7 @@ class Contact extends BaseObject return ''; } - if (in_array($contact["network"], [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS, ""])) { + if (in_array($contact["network"], array_merge(Protocol::FEDERATED ,['']))) { $sql = "(`item`.`uid` = 0 OR (`item`.`uid` = ? AND NOT `item`.`global`))"; } else { $sql = "`item`.`uid` = ?"; @@ -1779,8 +1779,7 @@ class Contact extends BaseObject self::markForArchival($contact); } - $condition = ['self' => false, 'nurl' => Strings::normaliseLink($url), - 'network' => [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS]]; + $condition = ['self' => false, 'nurl' => Strings::normaliseLink($url), 'network' => Protocol::FEDERATED]; // These contacts are sharing with us, we don't poll them. // This means that we don't set the update fields in "OnePoll.php". @@ -1878,7 +1877,8 @@ class Contact extends BaseObject self::updateContact($id, $uid, $ret['url'], $ret); // Update the corresponding gcontact entry - PortableContact::lastUpdated($ret["url"]); +// PortableContact::lastUpdated($ret["url"]); + GContact::updateFromProbe($ret['url']); return true; } diff --git a/src/Model/Item.php b/src/Model/Item.php index 3244053ba..69d9c1885 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -177,7 +177,7 @@ class Item extends BaseObject // We can always comment on posts from these networks if (array_key_exists('writable', $row) && - in_array($row['internal-network'], [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS])) { + in_array($row['internal-network'], Protocol::FEDERATED)) { $row['writable'] = true; } @@ -1354,7 +1354,7 @@ class Item extends BaseObject * We have to check several networks since Friendica posts could be repeated * via OStatus (maybe Diasporsa as well) */ - if (in_array($item['network'], [Protocol::ACTIVITYPUB, Protocol::DIASPORA, Protocol::DFRN, Protocol::OSTATUS, ""])) { + if (in_array($item['network'], array_merge(Protocol::FEDERATED ,['']))) { $condition = ["`uri` = ? AND `uid` = ? AND `network` IN (?, ?, ?)", trim($item['uri']), $item['uid'], Protocol::DIASPORA, Protocol::DFRN, Protocol::OSTATUS]; @@ -2077,7 +2077,7 @@ class Item extends BaseObject // Only distribute public items from native networks $condition = ['id' => $itemid, 'uid' => 0, - 'network' => [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS, ""], + 'network' => array_merge(Protocol::FEDERATED ,['']), 'visible' => true, 'deleted' => false, 'moderated' => false, 'private' => false]; $item = self::selectFirst(self::ITEM_FIELDLIST, $condition); if (!DBA::isResult($item)) { @@ -2233,7 +2233,7 @@ class Item extends BaseObject } // is it an entry from a connector? Only add an entry for natively connected networks - if (!in_array($item["network"], [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS, ""])) { + if (!in_array($item["network"], array_merge(Protocol::FEDERATED ,['']))) { return; } diff --git a/src/Model/Profile.php b/src/Model/Profile.php index 62d56798f..10bd3a1d7 100644 --- a/src/Model/Profile.php +++ b/src/Model/Profile.php @@ -471,7 +471,7 @@ class Profile 'pending' => false, 'hidden' => false, 'archive' => false, - 'network' => [Protocol::DFRN, Protocol::ACTIVITYPUB, Protocol::OSTATUS, Protocol::DIASPORA], + 'network' => Protocol::FEDERATED, ]); } } diff --git a/src/Module/Contact.php b/src/Module/Contact.php index feae601fd..dfa0b0659 100644 --- a/src/Module/Contact.php +++ b/src/Module/Contact.php @@ -521,7 +521,7 @@ class Contact extends BaseModule $relation_text = ''; } - if (!in_array($contact['network'], [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::OSTATUS, Protocol::DIASPORA])) { + if (!in_array($contact['network'], Protocol::FEDERATED)) { $relation_text = ''; } @@ -968,7 +968,7 @@ class Contact extends BaseModule $profiledata = Model\Contact::getDetailsByURL($contact['url']); - if (local_user() && in_array($profiledata['network'], [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS])) { + if (local_user() && in_array($profiledata['network'], Protocol::FEDERATED)) { $profiledata['remoteconnect'] = System::baseUrl() . '/follow?url=' . urlencode($profiledata['url']); } diff --git a/src/Protocol/ActivityPub/Receiver.php b/src/Protocol/ActivityPub/Receiver.php index 1d425600d..a8b5a18db 100644 --- a/src/Protocol/ActivityPub/Receiver.php +++ b/src/Protocol/ActivityPub/Receiver.php @@ -556,7 +556,7 @@ class Receiver // Check if the potential receiver is following the actor // Exception: The receiver is targetted via "to" or this is a comment if ((($element != 'as:to') && empty($replyto)) || ($contact['contact-type'] == Contact::TYPE_COMMUNITY)) { - $networks = [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS]; + $networks = Protocol::FEDERATED; $condition = ['nurl' => Strings::normaliseLink($actor), 'rel' => [Contact::SHARING, Contact::FRIEND], 'network' => $networks, 'archive' => false, 'pending' => false, 'uid' => $contact['uid']]; @@ -591,7 +591,7 @@ class Receiver public static function getReceiverForActor($actor, $tags) { $receivers = []; - $networks = [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS]; + $networks = Protocol::FEDERATED; $condition = ['nurl' => Strings::normaliseLink($actor), 'rel' => [Contact::SHARING, Contact::FRIEND, Contact::FOLLOWER], 'network' => $networks, 'archive' => false, 'pending' => false]; $contacts = DBA::select('contact', ['uid', 'rel'], $condition); diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index a3b8b679e..1d5192d93 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -358,7 +358,7 @@ class Transmitter if (Config::get('debug', 'total_ap_delivery')) { // Will be activated in a later step - $networks = [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS]; + $networks = Protocol::FEDERATED; } else { // For now only send to these contacts: $networks = [Protocol::ACTIVITYPUB, Protocol::OSTATUS]; @@ -530,7 +530,7 @@ class Transmitter if (Config::get('debug', 'total_ap_delivery')) { // Will be activated in a later step - $networks = [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS]; + $networks = Protocol::FEDERATED; } else { // For now only send to these contacts: $networks = [Protocol::ACTIVITYPUB, Protocol::OSTATUS]; diff --git a/src/Worker/UpdateGContact.php b/src/Worker/UpdateGContact.php index b927e61bb..dd344baf9 100644 --- a/src/Worker/UpdateGContact.php +++ b/src/Worker/UpdateGContact.php @@ -31,13 +31,13 @@ class UpdateGContact return; } - if (!in_array($r[0]["network"], [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS])) { + if (!in_array($r[0]["network"], Protocol::FEDERATED)) { return; } $data = Probe::uri($r[0]["url"]); - if (!in_array($data["network"], [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS])) { + if (!in_array($data["network"], Protocol::FEDERATED)) { if ($r[0]["server_url"] != "") { PortableContact::checkServer($r[0]["server_url"], $r[0]["network"]); } From 9e3aff9adeb3bb463bffa4db220bdf645a263a3d Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 1 Jul 2019 18:09:40 +0000 Subject: [PATCH 2/3] Removed comment line --- src/Model/Contact.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 84cdbbc82..8cdf331b7 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -1877,7 +1877,6 @@ class Contact extends BaseObject self::updateContact($id, $uid, $ret['url'], $ret); // Update the corresponding gcontact entry -// PortableContact::lastUpdated($ret["url"]); GContact::updateFromProbe($ret['url']); return true; From ee8baf00ce35f3198aef34f2cc41200262623efa Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 1 Jul 2019 22:14:34 +0000 Subject: [PATCH 3/3] Now without array_merge --- src/Model/Contact.php | 2 +- src/Model/Item.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 8cdf331b7..a10c0d05e 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -1587,7 +1587,7 @@ class Contact extends BaseObject return ''; } - if (in_array($contact["network"], array_merge(Protocol::FEDERATED ,['']))) { + if (empty($contact["network"]) || in_array($contact["network"], Protocol::FEDERATED)) { $sql = "(`item`.`uid` = 0 OR (`item`.`uid` = ? AND NOT `item`.`global`))"; } else { $sql = "`item`.`uid` = ?"; diff --git a/src/Model/Item.php b/src/Model/Item.php index 69d9c1885..c3ff0520b 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -1354,7 +1354,7 @@ class Item extends BaseObject * We have to check several networks since Friendica posts could be repeated * via OStatus (maybe Diasporsa as well) */ - if (in_array($item['network'], array_merge(Protocol::FEDERATED ,['']))) { + if (empty($item['network']) || in_array($item['network'], Protocol::FEDERATED)) { $condition = ["`uri` = ? AND `uid` = ? AND `network` IN (?, ?, ?)", trim($item['uri']), $item['uid'], Protocol::DIASPORA, Protocol::DFRN, Protocol::OSTATUS];