New field "manually-approve" for contact table

This commit is contained in:
Michael 2020-09-02 03:02:50 +00:00
parent 31d724e7d8
commit cbf1e5c699
5 changed files with 13 additions and 9 deletions

View File

@ -1802,7 +1802,7 @@ class Contact
// These fields aren't updated by this routine: // These fields aren't updated by this routine:
// 'xmpp', 'sensitive' // 'xmpp', 'sensitive'
$fields = ['uid', 'avatar', 'name', 'nick', 'location', 'keywords', 'about', 'subscribe', $fields = ['uid', 'avatar', 'name', 'nick', 'location', 'keywords', 'about', 'subscribe', 'manually-approve',
'unsearchable', 'url', 'addr', 'batch', 'notify', 'poll', 'request', 'confirm', 'poco', 'unsearchable', 'url', 'addr', 'batch', 'notify', 'poll', 'request', 'confirm', 'poco',
'network', 'alias', 'baseurl', 'gsid', 'forum', 'prv', 'contact-type', 'pubkey', 'last-item']; 'network', 'alias', 'baseurl', 'gsid', 'forum', 'prv', 'contact-type', 'pubkey', 'last-item'];
$contact = DBA::selectFirst('contact', $fields, ['id' => $id]); $contact = DBA::selectFirst('contact', $fields, ['id' => $id]);
@ -1851,9 +1851,8 @@ class Contact
$ret['prv'] = false; $ret['prv'] = false;
$ret['contact-type'] = $ret['account-type']; $ret['contact-type'] = $ret['account-type'];
if ($ret['contact-type'] == User::ACCOUNT_TYPE_COMMUNITY) { if ($ret['contact-type'] == User::ACCOUNT_TYPE_COMMUNITY) {
$apcontact = APContact::getByURL($ret['url'], false); if (isset($ret['manually-approve'])) {
if (isset($apcontact['manually-approve'])) { $ret['forum'] = (bool)!$ret['manually-approve'];
$ret['forum'] = (bool)!$apcontact['manually-approve'];
$ret['prv'] = (bool)!$ret['forum']; $ret['prv'] = (bool)!$ret['forum'];
} }
} }

View File

@ -91,12 +91,12 @@ class Probe
"community", "keywords", "location", "about", "hide", "community", "keywords", "location", "about", "hide",
"batch", "notify", "poll", "request", "confirm", "subscribe", "poco", "batch", "notify", "poll", "request", "confirm", "subscribe", "poco",
"following", "followers", "inbox", "outbox", "sharedinbox", "following", "followers", "inbox", "outbox", "sharedinbox",
"priority", "network", "pubkey", "baseurl", "gsid"]; "priority", "network", "pubkey", "manually-approve", "baseurl", "gsid"];
$newdata = []; $newdata = [];
foreach ($fields as $field) { foreach ($fields as $field) {
if (isset($data[$field])) { if (isset($data[$field])) {
if (in_array($field, ["gsid", "hide", "account-type"])) { if (in_array($field, ["gsid", "hide", "account-type", "manually-approve"])) {
$newdata[$field] = (int)$data[$field]; $newdata[$field] = (int)$data[$field];
} else { } else {
$newdata[$field] = $data[$field]; $newdata[$field] = $data[$field];
@ -1454,6 +1454,7 @@ class Probe
&& !empty($hcard_url) && !empty($hcard_url)
) { ) {
$data["network"] = Protocol::DIASPORA; $data["network"] = Protocol::DIASPORA;
$data["manually-approve"] = false;
// The Diaspora handle must always be lowercase // The Diaspora handle must always be lowercase
if (!empty($data["addr"])) { if (!empty($data["addr"])) {
@ -1544,6 +1545,7 @@ class Probe
&& isset($data["url"]) && isset($data["url"])
) { ) {
$data["network"] = Protocol::OSTATUS; $data["network"] = Protocol::OSTATUS;
$data["manually-approve"] = false;
} else { } else {
return $short ? false : []; return $short ? false : [];
} }
@ -2218,7 +2220,8 @@ class Probe
'following' => $approfile['following'], 'followers' => $approfile['followers'], 'following' => $approfile['following'], 'followers' => $approfile['followers'],
'inbox' => $approfile['inbox'], 'outbox' => $approfile['outbox'], 'inbox' => $approfile['inbox'], 'outbox' => $approfile['outbox'],
'sharedinbox' => $approfile['endpoints']['sharedInbox'], 'network' => Protocol::DFRN, 'sharedinbox' => $approfile['endpoints']['sharedInbox'], 'network' => Protocol::DFRN,
'pubkey' => $profile['upubkey'], 'baseurl' => $approfile['generator']['url'], 'gsid' => $profile['gsid']]; 'pubkey' => $profile['upubkey'], 'baseurl' => $approfile['generator']['url'], 'gsid' => $profile['gsid'],
'manually-approve' => in_array($profile['page-flags'], [User::PAGE_FLAGS_NORMAL, User::PAGE_FLAGS_PRVGROUP])];
return self::rearrangeData($data); return self::rearrangeData($data);
} }
} }

View File

@ -99,7 +99,7 @@ class Account extends BaseEntity
$publicContact['nick'] : $publicContact['nick'] :
$publicContact['addr']; $publicContact['addr'];
$this->display_name = $publicContact['name']; $this->display_name = $publicContact['name'];
$this->locked = !empty($apcontact['manually-approve']); $this->locked = $publicContact['manually-approve'] ?? !empty($apcontact['manually-approve']);
$this->bot = ($publicContact['contact-type'] == Contact::TYPE_NEWS); $this->bot = ($publicContact['contact-type'] == Contact::TYPE_NEWS);
$this->discoverable = !$publicContact['unsearchable']; $this->discoverable = !$publicContact['unsearchable'];
$this->group = ($publicContact['contact-type'] == Contact::TYPE_COMMUNITY); $this->group = ($publicContact['contact-type'] == Contact::TYPE_COMMUNITY);

View File

@ -157,6 +157,7 @@ class ActivityPub
$profile['poll'] = $apcontact['outbox']; $profile['poll'] = $apcontact['outbox'];
$profile['pubkey'] = $apcontact['pubkey']; $profile['pubkey'] = $apcontact['pubkey'];
$profile['subscribe'] = $apcontact['subscribe']; $profile['subscribe'] = $apcontact['subscribe'];
$profile['manually-approve'] = $apcontact['manually-approve'];
$profile['baseurl'] = $apcontact['baseurl']; $profile['baseurl'] = $apcontact['baseurl'];
$profile['gsid'] = $apcontact['gsid']; $profile['gsid'] = $apcontact['gsid'];

View File

@ -54,7 +54,7 @@
use Friendica\Database\DBA; use Friendica\Database\DBA;
if (!defined('DB_UPDATE_VERSION')) { if (!defined('DB_UPDATE_VERSION')) {
define('DB_UPDATE_VERSION', 1365); define('DB_UPDATE_VERSION', 1366);
} }
return [ return [
@ -153,6 +153,7 @@ return [
"forum" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "contact is a forum"], "forum" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "contact is a forum"],
"prv" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "contact is a private group"], "prv" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "contact is a private group"],
"contact-type" => ["type" => "tinyint", "not null" => "1", "default" => "0", "comment" => ""], "contact-type" => ["type" => "tinyint", "not null" => "1", "default" => "0", "comment" => ""],
"manually-approve" => ["type" => "boolean", "comment" => ""],
"hidden" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""], "hidden" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
"archive" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""], "archive" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
"pending" => ["type" => "boolean", "not null" => "1", "default" => "1", "comment" => ""], "pending" => ["type" => "boolean", "not null" => "1", "default" => "1", "comment" => ""],