. * */ namespace Friendica\Module\Contact; use Friendica\BaseModule; use Friendica\Content\Nav; use Friendica\Core\Protocol; use Friendica\Core\Renderer; use Friendica\Database\DBA; use Friendica\DI; use Friendica\Model; use Friendica\Module\Contact; use Friendica\Module\Security\Login; use Friendica\Network\HTTPException; class Revoke extends BaseModule { /** @var array */ private static $contact; public static function init(array $parameters = []) { if (!local_user()) { return; } $data = Model\Contact::getPublicAndUserContactID($parameters['id'], local_user()); if (!DBA::isResult($data)) { throw new HTTPException\NotFoundException(DI::l10n()->t('Unknown contact.')); } if (empty($data['user'])) { throw new HTTPException\ForbiddenException(); } self::$contact = Model\Contact::getById($data['user']); if (self::$contact['deleted']) { throw new HTTPException\NotFoundException(DI::l10n()->t('Contact is deleted.')); } if (!empty(self::$contact['network']) && self::$contact['network'] == Protocol::PHANTOM) { throw new HTTPException\NotFoundException(DI::l10n()->t('Contact is being deleted.')); } } public static function post(array $parameters = []) { if (!local_user()) { throw new HTTPException\UnauthorizedException(); } self::checkFormSecurityTokenRedirectOnError('contact/' . $parameters['id'], 'contact_revoke'); $result = Model\Contact::revokeFollow(self::$contact); if ($result === true) { notice(DI::l10n()->t('Follow was successfully revoked.')); } elseif ($result === null) { notice(DI::l10n()->t('Follow was successfully revoked, however the remote contact won\'t be aware of this revokation.')); } else { notice(DI::l10n()->t('Unable to revoke follow, please try again later or contact the administrator.')); } DI::baseUrl()->redirect('contact/' . $parameters['id']); } public static function content(array $parameters = []): string { if (!local_user()) { return Login::form($_SERVER['REQUEST_URI']); } Nav::setSelected('contact'); return Renderer::replaceMacros(Renderer::getMarkupTemplate('contact_drop_confirm.tpl'), [ '$l10n' => [ 'header' => DI::l10n()->t('Revoke Follow'), 'message' => DI::l10n()->t('Do you really want to revoke this contact\'s follow? This cannot be undone and they will have to manually follow you back again.'), 'confirm' => DI::l10n()->t('Yes'), 'cancel' => DI::l10n()->t('Cancel'), ], '$contact' => Contact::getContactTemplateVars(self::$contact), '$method' => 'post', '$confirm_url' => DI::args()->getCommand(), '$confirm_name' => 'form_security_token', '$confirm_value' => BaseModule::getFormSecurityToken('contact_revoke'), ]); } }