New field "manually-approve" for contact table

2022.09-rc
Michael 2020-09-02 03:02:50 +00:00
rodzic 31d724e7d8
commit cbf1e5c699
5 zmienionych plików z 13 dodań i 9 usunięć

Wyświetl plik

@ -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'];
} }
} }

Wyświetl plik

@ -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);
} }
} }

Wyświetl plik

@ -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);

Wyświetl plik

@ -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'];

Wyświetl plik

@ -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" => ""],