Use the "contact-type" instead of "forum" or "prv"

This commit is contained in:
Michael 2022-02-09 06:52:16 +00:00
parent b857c26999
commit 9a764516d0
12 changed files with 24 additions and 38 deletions

View file

@ -1,6 +1,6 @@
-- ------------------------------------------ -- ------------------------------------------
-- Friendica 2022.05-dev (Siberian Iris) -- Friendica 2022.05-dev (Siberian Iris)
-- DB_UPDATE_VERSION 1450 -- DB_UPDATE_VERSION 1451
-- ------------------------------------------ -- ------------------------------------------

View file

@ -99,7 +99,7 @@ class VCard
'$network_link' => $network_link, '$network_link' => $network_link,
'$network_avatar' => $network_avatar, '$network_avatar' => $network_avatar,
'$network' => DI::l10n()->t('Network:'), '$network' => DI::l10n()->t('Network:'),
'$account_type' => Contact::getAccountType($contact), '$account_type' => Contact::getAccountType($contact['contact-type']),
'$follow' => DI::l10n()->t('Follow'), '$follow' => DI::l10n()->t('Follow'),
'$follow_link' => $follow_link, '$follow_link' => $follow_link,
'$unfollow' => DI::l10n()->t('Unfollow'), '$unfollow' => DI::l10n()->t('Unfollow'),

View file

@ -1457,34 +1457,11 @@ class Contact
* *
* The function can be called with either the user or the contact array * The function can be called with either the user or the contact array
* *
* @param array $contact contact or user array * @param int $type type of contact or account
* @return string * @return string
*/ */
public static function getAccountType(array $contact) public static function getAccountType(int $type)
{ {
// There are several fields that indicate that the contact or user is a forum
// "page-flags" is a field in the user table,
// "forum" and "prv" are used in the contact table. They stand for User::PAGE_FLAGS_COMMUNITY and User::PAGE_FLAGS_PRVGROUP.
if ((isset($contact['page-flags']) && (intval($contact['page-flags']) == User::PAGE_FLAGS_COMMUNITY))
|| (isset($contact['page-flags']) && (intval($contact['page-flags']) == User::PAGE_FLAGS_PRVGROUP))
|| (isset($contact['forum']) && intval($contact['forum']))
|| (isset($contact['prv']) && intval($contact['prv']))
|| (isset($contact['community']) && intval($contact['community']))
) {
$type = self::TYPE_COMMUNITY;
} else {
$type = self::TYPE_PERSON;
}
// The "contact-type" (contact table) and "account-type" (user table) are more general then the chaos from above.
if (isset($contact["contact-type"])) {
$type = $contact["contact-type"];
}
if (isset($contact["account-type"])) {
$type = $contact["account-type"];
}
switch ($type) { switch ($type) {
case self::TYPE_ORGANISATION: case self::TYPE_ORGANISATION:
$account_type = DI::l10n()->t("Organisation"); $account_type = DI::l10n()->t("Organisation");
@ -2947,7 +2924,7 @@ class Contact
*/ */
public static function isForum($contactid) public static function isForum($contactid)
{ {
$fields = ['contact-type', 'forum', 'prv']; $fields = ['contact-type'];
$condition = ['id' => $contactid]; $condition = ['id' => $contactid];
$contact = DBA::selectFirst('contact', $fields, $condition); $contact = DBA::selectFirst('contact', $fields, $condition);
if (!DBA::isResult($contact)) { if (!DBA::isResult($contact)) {
@ -2955,7 +2932,7 @@ class Contact
} }
// Is it a forum? // Is it a forum?
return (($contact['contact-type'] == self::TYPE_COMMUNITY) || $contact['forum'] || $contact['prv']); return ($contact['contact-type'] == self::TYPE_COMMUNITY);
} }
/** /**

View file

@ -362,7 +362,7 @@ class Profile
} }
// Fetch the account type // Fetch the account type
$account_type = Contact::getAccountType($profile); $account_type = Contact::getAccountType($profile['account-type']);
if (!empty($profile['address']) || !empty($profile['location'])) { if (!empty($profile['address']) || !empty($profile['location'])) {
$location = DI::l10n()->t('Location:'); $location = DI::l10n()->t('Location:');

View file

@ -558,7 +558,7 @@ class Contact extends BaseModule
'details' => $contact['location'], 'details' => $contact['location'],
'tags' => $contact['keywords'], 'tags' => $contact['keywords'],
'about' => $contact['about'], 'about' => $contact['about'],
'account_type' => Model\Contact::getAccountType($contact), 'account_type' => Model\Contact::getAccountType($contact['contact-type']),
'sparkle' => $sparkle, 'sparkle' => $sparkle,
'itemurl' => ($contact['addr'] ?? '') ?: $contact['url'], 'itemurl' => ($contact['addr'] ?? '') ?: $contact['url'],
'network' => ContactSelector::networkToName($contact['network'], $contact['url'], $contact['protocol'], $contact['gsid']), 'network' => ContactSelector::networkToName($contact['network'], $contact['url'], $contact['protocol'], $contact['gsid']),

View file

@ -101,7 +101,7 @@ class Hovercard extends BaseModule
'network_link' => Strings::formatNetworkName($contact['network'], $contact['url']), 'network_link' => Strings::formatNetworkName($contact['network'], $contact['url']),
'tags' => $contact['keywords'], 'tags' => $contact['keywords'],
'bd' => $contact['bd'] <= DBA::NULL_DATE ? '' : $contact['bd'], 'bd' => $contact['bd'] <= DBA::NULL_DATE ? '' : $contact['bd'],
'account_type' => Contact::getAccountType($contact), 'account_type' => Contact::getAccountType($contact['contact-type']),
'actions' => $actions, 'actions' => $actions,
], ],
]); ]);

View file

@ -364,7 +364,7 @@ class Profile extends BaseModule
'$url' => $url, '$url' => $url,
'$profileurllabel' => $this->t('Profile URL'), '$profileurllabel' => $this->t('Profile URL'),
'$profileurl' => $contact['url'], '$profileurl' => $contact['url'],
'$account_type' => Contact::getAccountType($contact), '$account_type' => Contact::getAccountType($contact['contact-type']),
'$location' => BBCode::convertForUriId($contact['uri-id'] ?? 0, $contact['location']), '$location' => BBCode::convertForUriId($contact['uri-id'] ?? 0, $contact['location']),
'$location_label' => $this->t('Location:'), '$location_label' => $this->t('Location:'),
'$xmpp' => BBCode::convertForUriId($contact['uri-id'] ?? 0, $contact['xmpp']), '$xmpp' => BBCode::convertForUriId($contact['uri-id'] ?? 0, $contact['xmpp']),

View file

@ -119,7 +119,7 @@ class Network extends BaseModule
if (self::$forumContactId) { if (self::$forumContactId) {
// If self::$forumContactId belongs to a communitity forum or a privat goup,.add a mention to the status editor // If self::$forumContactId belongs to a communitity forum or a privat goup,.add a mention to the status editor
$condition = ["`id` = ? AND (`forum` OR `prv`)", self::$forumContactId]; $condition = ["`id` = ? AND `contact-type` = ?", self::$forumContactId, Contact::TYPE_COMMUNITY];
$contact = DBA::selectFirst('contact', ['addr'], $condition); $contact = DBA::selectFirst('contact', ['addr'], $condition);
if (!empty($contact['addr'])) { if (!empty($contact['addr'])) {
$content = '!' . $contact['addr']; $content = '!' . $contact['addr'];

View file

@ -165,7 +165,7 @@ class Directory extends BaseModule
'img_hover' => $contact['name'], 'img_hover' => $contact['name'],
'name' => $contact['name'], 'name' => $contact['name'],
'details' => $details, 'details' => $details,
'account_type' => Model\Contact::getAccountType($contact), 'account_type' => Model\Contact::getAccountType($contact['contact-type']),
'profile' => $profile, 'profile' => $profile,
'location' => $location_e, 'location' => $location_e,
'tags' => $contact['pub_keywords'], 'tags' => $contact['pub_keywords'],

View file

@ -925,9 +925,9 @@ class DFRN
foreach ($mentioned as $mention) { foreach ($mentioned as $mention) {
$condition = ['uid' => $owner["uid"], 'nurl' => Strings::normaliseLink($mention)]; $condition = ['uid' => $owner["uid"], 'nurl' => Strings::normaliseLink($mention)];
$contact = DBA::selectFirst('contact', ['forum', 'prv'], $condition); $contact = DBA::selectFirst('contact', ['contact-type'], $condition);
if (DBA::isResult($contact) && ($contact["forum"] || $contact["prv"])) { if (DBA::isResult($contact) && ($contact['contact-type'] == Contact::TYPE_COMMUNITY)) {
XML::addElement( XML::addElement(
$doc, $doc,
$entry, $entry,

View file

@ -55,7 +55,7 @@
use Friendica\Database\DBA; use Friendica\Database\DBA;
if (!defined('DB_UPDATE_VERSION')) { if (!defined('DB_UPDATE_VERSION')) {
define('DB_UPDATE_VERSION', 1450); define('DB_UPDATE_VERSION', 1451);
} }
return [ return [

View file

@ -55,6 +55,7 @@ use Friendica\Model\Notification;
use Friendica\Model\Photo; use Friendica\Model\Photo;
use Friendica\Model\Post; use Friendica\Model\Post;
use Friendica\Model\Profile; use Friendica\Model\Profile;
use Friendica\Model\User;
use Friendica\Security\PermissionSet\Repository\PermissionSet; use Friendica\Security\PermissionSet\Repository\PermissionSet;
use Friendica\Worker\Delivery; use Friendica\Worker\Delivery;
@ -1087,3 +1088,11 @@ function update_1446()
return Update::SUCCESS; return Update::SUCCESS;
} }
function update_1451()
{
DBA::update('user', ['account-type' => User::ACCOUNT_TYPE_COMMUNITY], ['page-flags' => [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_PRVGROUP]]);
DBA::update('contact', ['contact-type' => Contact::TYPE_COMMUNITY], ["`forum` OR `prv`"]);
return Update::SUCCESS;
}