X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModel%2FIntroduction.php;h=aab4a9a8e47667857b74034671c446b9127a81f3;hb=741bc98174f81b9cd65432716a21168dd34468a7;hp=127765c0cb5f380ea7991e02dc983cf7d6c51f43;hpb=5197833c5513fe70481bd170b8c840f5a834c8c2;p=friendica.git diff --git a/src/Model/Introduction.php b/src/Model/Introduction.php index 127765c0cb..aab4a9a8e4 100644 --- a/src/Model/Introduction.php +++ b/src/Model/Introduction.php @@ -1,13 +1,35 @@ . + * + */ namespace Friendica\Model; use Friendica\BaseModel; use Friendica\Core\Protocol; +use Friendica\Database\Database; use Friendica\Network\HTTPException; use Friendica\Protocol\ActivityPub; use Friendica\Protocol\Diaspora; +use Friendica\Repository; use Friendica\Util\DateTimeFormat; +use Psr\Log\LoggerInterface; /** * @property int uid @@ -19,22 +41,29 @@ use Friendica\Util\DateTimeFormat; * @property string hash * @property string datetime * @property bool blocked - * @property bool ignored - * - * @package Friendica\Model + * @property bool ignore */ -final class Introduction extends BaseModel +class Introduction extends BaseModel { - static $table_name = 'intro'; + /** @var Repository\Introduction */ + protected $intro; + + public function __construct(Database $dba, LoggerInterface $logger, Repository\Introduction $intro, array $data = []) + { + parent::__construct($dba, $logger, $data); + + $this->intro = $intro; + } /** - * Confirms a follow request and sends a notic to the remote contact. + * Confirms a follow request and sends a notice to the remote contact. * - * @param bool $duplex Is it a follow back? - * @param bool|null $hidden Should this contact be hidden? null = no change + * @param bool $duplex Is it a follow back? + * @param bool|null $hidden Should this contact be hidden? null = no change + * @return bool * @throws HTTPException\InternalServerErrorException - * @throws \ImagickException * @throws HTTPException\NotFoundException + * @throws \ImagickException */ public function confirm(bool $duplex = false, bool $hidden = null) { @@ -46,7 +75,7 @@ final class Introduction extends BaseModel throw new HTTPException\NotFoundException('Contact record not found.'); } - $new_relation = $contact['rel']; + $newRelation = $contact['rel']; $writable = $contact['writable']; if (!empty($contact['protocol'])) { @@ -61,12 +90,12 @@ final class Introduction extends BaseModel if (in_array($protocol, [Protocol::DIASPORA, Protocol::ACTIVITYPUB])) { if ($duplex) { - $new_relation = Contact::FRIEND; + $newRelation = Contact::FRIEND; } else { - $new_relation = Contact::FOLLOWER; + $newRelation = Contact::FOLLOWER; } - if ($new_relation != Contact::FOLLOWER) { + if ($newRelation != Contact::FOLLOWER) { $writable = 1; } } @@ -79,13 +108,13 @@ final class Introduction extends BaseModel 'protocol' => $protocol, 'writable' => $writable, 'hidden' => $hidden ?? $contact['hidden'], - 'rel' => $new_relation, + 'rel' => $newRelation, ]; $this->dba->update('contact', $fields, ['id' => $contact['id']]); array_merge($contact, $fields); - if ($new_relation == Contact::FRIEND) { + if ($newRelation == Contact::FRIEND) { if ($protocol == Protocol::DIASPORA) { $ret = Diaspora::sendShare(User::getById($contact['uid']), $contact); $this->logger->info('share returns', ['return' => $ret]); @@ -94,28 +123,27 @@ final class Introduction extends BaseModel } } - $this->delete(); + return $this->intro->delete($this); } /** * Silently ignores the introduction, hides it from notifications and prevents the remote contact from submitting * additional follow requests. * - * Chainable - * - * @return Introduction + * @return bool * @throws \Exception */ public function ignore() { - $this->dba->update('intro', ['ignore' => true], ['id' => $this->id]); + $this->ignore = true; - return $this; + return $this->intro->update($this); } /** * Discards the introduction and sends a rejection message to AP contacts. * + * @return bool * @throws HTTPException\InternalServerErrorException * @throws HTTPException\NotFoundException * @throws \ImagickException @@ -136,21 +164,18 @@ final class Introduction extends BaseModel } $contact = Contact::selectFirst([], ['id' => $this->{'contact-id'}, 'uid' => $this->uid]); + if (!empty($contact)) { + if (!empty($contact['protocol'])) { + $protocol = $contact['protocol']; + } else { + $protocol = $contact['network']; + } - if (!$contact) { - throw new HTTPException\NotFoundException('Contact record not found.'); - } - - if (!empty($contact['protocol'])) { - $protocol = $contact['protocol']; - } else { - $protocol = $contact['network']; - } - - if ($protocol == Protocol::ACTIVITYPUB) { - ActivityPub\Transmitter::sendContactReject($contact['url'], $contact['hub-verify'], $contact['uid']); + if ($protocol == Protocol::ACTIVITYPUB) { + ActivityPub\Transmitter::sendContactReject($contact['url'], $contact['hub-verify'], $contact['uid']); + } } - $this->delete(); + return $this->intro->delete($this); } }