-- ------------------------------------------
-- Friendica 2021.06-rc (Siberian Iris)
--- DB_UPDATE_VERSION 1423
+-- DB_UPDATE_VERSION 1424
-- ------------------------------------------
`outbox` varchar(255) COMMENT '',
`sharedinbox` varchar(255) COMMENT '',
`manually-approve` boolean COMMENT '',
+ `discoverable` boolean COMMENT 'Mastodon extension: true if profile is published in their directory',
`nick` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`name` varchar(255) COMMENT '',
`about` text COMMENT '',
Fields
------
-| Field | Description | Type | Null | Key | Default | Extra |
-| ---------------- | ---------------------------- | -------------- | ---- | --- | ------------------- | ----- |
-| url | URL of the contact | varbinary(255) | NO | PRI | NULL | |
-| uuid | | varchar(255) | YES | | NULL | |
-| type | | varchar(20) | NO | | NULL | |
-| following | | varchar(255) | YES | | NULL | |
-| followers | | varchar(255) | YES | | NULL | |
-| inbox | | varchar(255) | NO | | NULL | |
-| outbox | | varchar(255) | YES | | NULL | |
-| sharedinbox | | varchar(255) | YES | | NULL | |
-| manually-approve | | boolean | YES | | NULL | |
-| nick | | varchar(255) | NO | | | |
-| name | | varchar(255) | YES | | NULL | |
-| about | | text | YES | | NULL | |
-| photo | | varchar(255) | YES | | NULL | |
-| header | Header picture | varchar(255) | YES | | NULL | |
-| addr | | varchar(255) | YES | | NULL | |
-| alias | | varchar(255) | YES | | NULL | |
-| pubkey | | text | YES | | NULL | |
-| subscribe | | varchar(255) | YES | | NULL | |
-| baseurl | baseurl of the ap contact | varchar(255) | YES | | NULL | |
-| gsid | Global Server ID | int unsigned | YES | | NULL | |
-| generator | Name of the contact's system | varchar(255) | YES | | NULL | |
-| following_count | Number of following contacts | int unsigned | YES | | 0 | |
-| followers_count | Number of followers | int unsigned | YES | | 0 | |
-| statuses_count | Number of posts | int unsigned | YES | | 0 | |
-| updated | | datetime | NO | | 0001-01-01 00:00:00 | |
+| Field | Description | Type | Null | Key | Default | Extra |
+| ---------------- | ------------------------------------------------------------------- | -------------- | ---- | --- | ------------------- | ----- |
+| url | URL of the contact | varbinary(255) | NO | PRI | NULL | |
+| uuid | | varchar(255) | YES | | NULL | |
+| type | | varchar(20) | NO | | NULL | |
+| following | | varchar(255) | YES | | NULL | |
+| followers | | varchar(255) | YES | | NULL | |
+| inbox | | varchar(255) | NO | | NULL | |
+| outbox | | varchar(255) | YES | | NULL | |
+| sharedinbox | | varchar(255) | YES | | NULL | |
+| manually-approve | | boolean | YES | | NULL | |
+| discoverable | Mastodon extension: true if profile is published in their directory | boolean | YES | | NULL | |
+| nick | | varchar(255) | NO | | | |
+| name | | varchar(255) | YES | | NULL | |
+| about | | text | YES | | NULL | |
+| photo | | varchar(255) | YES | | NULL | |
+| header | Header picture | varchar(255) | YES | | NULL | |
+| addr | | varchar(255) | YES | | NULL | |
+| alias | | varchar(255) | YES | | NULL | |
+| pubkey | | text | YES | | NULL | |
+| subscribe | | varchar(255) | YES | | NULL | |
+| baseurl | baseurl of the ap contact | varchar(255) | YES | | NULL | |
+| gsid | Global Server ID | int unsigned | YES | | NULL | |
+| generator | Name of the contact's system | varchar(255) | YES | | NULL | |
+| following_count | Number of following contacts | int unsigned | YES | | 0 | |
+| followers_count | Number of followers | int unsigned | YES | | 0 | |
+| statuses_count | Number of posts | int unsigned | YES | | 0 | |
+| updated | | datetime | NO | | 0001-01-01 00:00:00 | |
Indexes
------------
}
}
+ $apcontact['discoverable'] = JsonLD::fetchElement($compacted, 'toot:discoverable', '@value');
+
// To-Do
// Unhandled
'dfrn' => 'http://purl.org/macgirvin/dfrn/1.0/',
'diaspora' => 'https://diasporafoundation.org/ns/',
'litepub' => 'http://litepub.social/ns#',
+ 'toot' => 'http://joinmastodon.org/ns#',
'manuallyApprovesFollowers' => 'as:manuallyApprovesFollowers',
'sensitive' => 'as:sensitive', 'Hashtag' => 'as:Hashtag',
- 'directMessage' => 'litepub:directMessage']];
+ 'directMessage' => 'litepub:directMessage',
+ 'discoverable' => 'toot:discoverable']];
const ACCOUNT_TYPES = ['Person', 'Organization', 'Service', 'Group', 'Application', 'Tombstone'];
/**
* Checks if the web request is done for the AP protocol
$profile['baseurl'] = $apcontact['baseurl'];
$profile['gsid'] = $apcontact['gsid'];
+ if (!is_null($apcontact['discoverable'])) {
+ $profile['hide'] = !$apcontact['discoverable'];
+ }
+
// Remove all "null" fields
foreach ($profile as $field => $content) {
if (is_null($content)) {
return [];
}
- $fields = ['locality', 'region', 'country-name'];
+ $fields = ['locality', 'region', 'country-name', 'net-publish'];
$profile = DBA::selectFirst('profile', $fields, ['uid' => $uid]);
if (!DBA::isResult($profile)) {
return [];
$contact = User::getSystemAccount();
$user = ['guid' => '', 'nickname' => $contact['nick'], 'pubkey' => $contact['pubkey'],
'account-type' => $contact['contact-type'], 'page-flags' => User::PAGE_FLAGS_NORMAL];
- $profile = ['locality' => '', 'region' => '', 'country-name' => ''];
+ $profile = ['locality' => '', 'region' => '', 'country-name' => '', 'net-publish' => false];
}
$data = ['@context' => ActivityPub::CONTEXT];
$data['url'] = $contact['url'];
$data['manuallyApprovesFollowers'] = in_array($user['page-flags'], [User::PAGE_FLAGS_NORMAL, User::PAGE_FLAGS_PRVGROUP]);
+ $data['discoverable'] = $profile['net-publish'];
$data['publicKey'] = ['id' => $contact['url'] . '#main-key',
'owner' => $contact['url'],
'publicKeyPem' => $user['pubkey']];
use Friendica\Database\DBA;
if (!defined('DB_UPDATE_VERSION')) {
- define('DB_UPDATE_VERSION', 1423);
+ define('DB_UPDATE_VERSION', 1424);
}
return [
"outbox" => ["type" => "varchar(255)", "comment" => ""],
"sharedinbox" => ["type" => "varchar(255)", "comment" => ""],
"manually-approve" => ["type" => "boolean", "comment" => ""],
+ "discoverable" => ["type" => "boolean", "comment" => "Mastodon extension: true if profile is published in their directory"],
"nick" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
"name" => ["type" => "varchar(255)", "comment" => ""],
"about" => ["type" => "text", "comment" => ""],