From 9a764516d0c9da99a7dd4fcde252c685b9de0a99 Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 9 Feb 2022 06:52:16 +0000 Subject: [PATCH] Use the "contact-type" instead of "forum" or "prv" --- database.sql | 2 +- src/Content/Widget/VCard.php | 2 +- src/Model/Contact.php | 31 ++++------------------------- src/Model/Profile.php | 2 +- src/Module/Contact.php | 2 +- src/Module/Contact/Hovercard.php | 2 +- src/Module/Contact/Profile.php | 2 +- src/Module/Conversation/Network.php | 2 +- src/Module/Directory.php | 2 +- src/Protocol/DFRN.php | 4 ++-- static/dbstructure.config.php | 2 +- update.php | 9 +++++++++ 12 files changed, 24 insertions(+), 38 deletions(-) diff --git a/database.sql b/database.sql index b7a923618d..4237bcce34 100644 --- a/database.sql +++ b/database.sql @@ -1,6 +1,6 @@ -- ------------------------------------------ -- Friendica 2022.05-dev (Siberian Iris) --- DB_UPDATE_VERSION 1450 +-- DB_UPDATE_VERSION 1451 -- ------------------------------------------ diff --git a/src/Content/Widget/VCard.php b/src/Content/Widget/VCard.php index d230afd303..7f75c6c9c0 100644 --- a/src/Content/Widget/VCard.php +++ b/src/Content/Widget/VCard.php @@ -99,7 +99,7 @@ class VCard '$network_link' => $network_link, '$network_avatar' => $network_avatar, '$network' => DI::l10n()->t('Network:'), - '$account_type' => Contact::getAccountType($contact), + '$account_type' => Contact::getAccountType($contact['contact-type']), '$follow' => DI::l10n()->t('Follow'), '$follow_link' => $follow_link, '$unfollow' => DI::l10n()->t('Unfollow'), diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 0af28a7401..1b39247f4e 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -1457,34 +1457,11 @@ class Contact * * 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 */ - 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) { case self::TYPE_ORGANISATION: $account_type = DI::l10n()->t("Organisation"); @@ -2947,7 +2924,7 @@ class Contact */ public static function isForum($contactid) { - $fields = ['contact-type', 'forum', 'prv']; + $fields = ['contact-type']; $condition = ['id' => $contactid]; $contact = DBA::selectFirst('contact', $fields, $condition); if (!DBA::isResult($contact)) { @@ -2955,7 +2932,7 @@ class Contact } // Is it a forum? - return (($contact['contact-type'] == self::TYPE_COMMUNITY) || $contact['forum'] || $contact['prv']); + return ($contact['contact-type'] == self::TYPE_COMMUNITY); } /** diff --git a/src/Model/Profile.php b/src/Model/Profile.php index cb7fa65479..d779355202 100644 --- a/src/Model/Profile.php +++ b/src/Model/Profile.php @@ -362,7 +362,7 @@ class Profile } // Fetch the account type - $account_type = Contact::getAccountType($profile); + $account_type = Contact::getAccountType($profile['account-type']); if (!empty($profile['address']) || !empty($profile['location'])) { $location = DI::l10n()->t('Location:'); diff --git a/src/Module/Contact.php b/src/Module/Contact.php index d571016f19..c7b2870ece 100644 --- a/src/Module/Contact.php +++ b/src/Module/Contact.php @@ -558,7 +558,7 @@ class Contact extends BaseModule 'details' => $contact['location'], 'tags' => $contact['keywords'], 'about' => $contact['about'], - 'account_type' => Model\Contact::getAccountType($contact), + 'account_type' => Model\Contact::getAccountType($contact['contact-type']), 'sparkle' => $sparkle, 'itemurl' => ($contact['addr'] ?? '') ?: $contact['url'], 'network' => ContactSelector::networkToName($contact['network'], $contact['url'], $contact['protocol'], $contact['gsid']), diff --git a/src/Module/Contact/Hovercard.php b/src/Module/Contact/Hovercard.php index ec77a19cb9..cd03e2533a 100644 --- a/src/Module/Contact/Hovercard.php +++ b/src/Module/Contact/Hovercard.php @@ -101,7 +101,7 @@ class Hovercard extends BaseModule 'network_link' => Strings::formatNetworkName($contact['network'], $contact['url']), 'tags' => $contact['keywords'], 'bd' => $contact['bd'] <= DBA::NULL_DATE ? '' : $contact['bd'], - 'account_type' => Contact::getAccountType($contact), + 'account_type' => Contact::getAccountType($contact['contact-type']), 'actions' => $actions, ], ]); diff --git a/src/Module/Contact/Profile.php b/src/Module/Contact/Profile.php index e02a6a3dc6..8ab8dae60e 100644 --- a/src/Module/Contact/Profile.php +++ b/src/Module/Contact/Profile.php @@ -364,7 +364,7 @@ class Profile extends BaseModule '$url' => $url, '$profileurllabel' => $this->t('Profile 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_label' => $this->t('Location:'), '$xmpp' => BBCode::convertForUriId($contact['uri-id'] ?? 0, $contact['xmpp']), diff --git a/src/Module/Conversation/Network.php b/src/Module/Conversation/Network.php index 908d0a63b4..2978ecbb9d 100644 --- a/src/Module/Conversation/Network.php +++ b/src/Module/Conversation/Network.php @@ -119,7 +119,7 @@ class Network extends BaseModule if (self::$forumContactId) { // 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); if (!empty($contact['addr'])) { $content = '!' . $contact['addr']; diff --git a/src/Module/Directory.php b/src/Module/Directory.php index 3a0a9fa34e..8d7b8611b6 100644 --- a/src/Module/Directory.php +++ b/src/Module/Directory.php @@ -165,7 +165,7 @@ class Directory extends BaseModule 'img_hover' => $contact['name'], 'name' => $contact['name'], 'details' => $details, - 'account_type' => Model\Contact::getAccountType($contact), + 'account_type' => Model\Contact::getAccountType($contact['contact-type']), 'profile' => $profile, 'location' => $location_e, 'tags' => $contact['pub_keywords'], diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index 833c616ab9..94b1b1689d 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -925,9 +925,9 @@ class DFRN foreach ($mentioned as $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( $doc, $entry, diff --git a/static/dbstructure.config.php b/static/dbstructure.config.php index 2e1a2191c0..014185c92a 100644 --- a/static/dbstructure.config.php +++ b/static/dbstructure.config.php @@ -55,7 +55,7 @@ use Friendica\Database\DBA; if (!defined('DB_UPDATE_VERSION')) { - define('DB_UPDATE_VERSION', 1450); + define('DB_UPDATE_VERSION', 1451); } return [ diff --git a/update.php b/update.php index 7b5f6778be..6e9c294c1f 100644 --- a/update.php +++ b/update.php @@ -55,6 +55,7 @@ use Friendica\Model\Notification; use Friendica\Model\Photo; use Friendica\Model\Post; use Friendica\Model\Profile; +use Friendica\Model\User; use Friendica\Security\PermissionSet\Repository\PermissionSet; use Friendica\Worker\Delivery; @@ -1087,3 +1088,11 @@ function update_1446() 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; +}