. * */ namespace Friendica\Module\Api\Mastodon\Accounts; use Friendica\Core\System; use Friendica\DI; use Friendica\Model\Contact; use Friendica\Model\User; use Friendica\Module\BaseApi; /** * @see https://docs.joinmastodon.org/methods/accounts/ */ class Block extends BaseApi { protected function post(array $request = []) { self::checkAllowedScope(self::SCOPE_FOLLOW); $uid = self::getCurrentUserID(); if (empty($this->parameters['id'])) { DI::mstdnError()->UnprocessableEntity(); } $owner = User::getOwnerDataById($uid); if (empty($owner)) { DI::mstdnError()->Forbidden(); } $cdata = Contact::getPublicAndUserContactID($this->parameters['id'], $uid); if (empty($cdata['user'])) { DI::mstdnError()->RecordNotFound(); } $contact = Contact::getById($cdata['user']); if (empty($contact)) { DI::mstdnError()->RecordNotFound(); } Contact\User::setBlocked($cdata['user'], $uid, true); // Mastodon-expected behavior: relationship is severed on block Contact::terminateFriendship($contact); System::jsonExit(DI::mstdnRelationship()->createFromContactId($this->parameters['id'], $uid)->toArray()); } }