From c7e53cb9b44f06002ea83c6e87c1fe3f4792f252 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Fri, 16 Dec 2022 10:29:20 -0500 Subject: [PATCH] Use account-user-view entry to instantiate Api\Mastodon\FollowRequest objects - Address https://github.com/friendica/friendica/issues/11993#issuecomment-1354395861 --- src/Contact/Introduction/Entity/Introduction.php | 2 +- src/Factory/Api/Mastodon/FollowRequest.php | 13 ++++--------- src/Object/Api/Mastodon/FollowRequest.php | 8 +++----- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/src/Contact/Introduction/Entity/Introduction.php b/src/Contact/Introduction/Entity/Introduction.php index 17a0bce265..40a3078a3e 100644 --- a/src/Contact/Introduction/Entity/Introduction.php +++ b/src/Contact/Introduction/Entity/Introduction.php @@ -25,7 +25,7 @@ use Friendica\BaseEntity; /** * @property-read int $uid - * @property-read int $cid + * @property-read int $cid Either a public contact id (DFRN suggestion) or user-specific id (Contact::addRelationship) * @property-read int|null $sid * @property-read bool $knowyou * @property-read string $note diff --git a/src/Factory/Api/Mastodon/FollowRequest.php b/src/Factory/Api/Mastodon/FollowRequest.php index 1a6babd312..53c78373e5 100644 --- a/src/Factory/Api/Mastodon/FollowRequest.php +++ b/src/Factory/Api/Mastodon/FollowRequest.php @@ -24,6 +24,7 @@ namespace Friendica\Factory\Api\Mastodon; use Friendica\App\BaseURL; use Friendica\BaseFactory; use Friendica\Contact\Introduction\Entity\Introduction; +use Friendica\Database\DBA; use Friendica\Model\APContact; use Friendica\Model\Contact; use Friendica\Network\HTTPException; @@ -49,18 +50,12 @@ class FollowRequest extends BaseFactory */ public function createFromIntroduction(Introduction $introduction): \Friendica\Object\Api\Mastodon\FollowRequest { - $cdata = Contact::getPublicAndUserContactID($introduction->cid, $introduction->uid); - - if (empty($cdata)) { + $account = DBA::selectFirst('account-user-view', [], ['id' => $introduction->cid, 'uid' => [0, $introduction->uid]]); + if (empty($account)) { $this->logger->warning('Wrong introduction data', ['Introduction' => $introduction]); throw new HTTPException\InternalServerErrorException('Wrong introduction data'); } - $publicContact = Contact::getById($cdata['public']); - $userContact = Contact::getById($cdata['user']); - - $apContact = APContact::getByURL($publicContact['url'], false); - - return new \Friendica\Object\Api\Mastodon\FollowRequest($this->baseUrl, $introduction->id, $publicContact, $apContact, $userContact); + return new \Friendica\Object\Api\Mastodon\FollowRequest($this->baseUrl, $introduction->id, $account); } } diff --git a/src/Object/Api/Mastodon/FollowRequest.php b/src/Object/Api/Mastodon/FollowRequest.php index 3a634d46e0..0f8c9b39c0 100644 --- a/src/Object/Api/Mastodon/FollowRequest.php +++ b/src/Object/Api/Mastodon/FollowRequest.php @@ -37,14 +37,12 @@ class FollowRequest extends Account * * @param BaseURL $baseUrl * @param int $introduction_id Introduction record id - * @param array $publicContact Full contact table record with uid = 0 - * @param array $apcontact Optional full apcontact table record - * @param array $userContact Optional full contact table record with uid != 0 + * @param array $account entry of "account-user-view" * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public function __construct(BaseURL $baseUrl, int $introduction_id, array $publicContact, array $apcontact = [], array $userContact = []) + public function __construct(BaseURL $baseUrl, int $introduction_id, array $account) { - parent::__construct($baseUrl, $publicContact, new Fields(), $apcontact, $userContact); + parent::__construct($baseUrl, $account, new Fields()); $this->id = $introduction_id; }