- if (DI::args()->getArgc() == 3) {
- $contact_id = intval(DI::args()->getArgv()[1]);
- if (!$contact_id) {
- throw new BadRequestException();
- }
-
- // @TODO: Replace with parameter from router
- $cmd = DI::args()->getArgv()[2];
-
- $orig_record = DBA::selectFirst('contact', [], ['id' => $contact_id, 'uid' => [0, local_user()], 'self' => false, 'deleted' => false]);
- if (!DBA::isResult($orig_record)) {
- throw new NotFoundException(DI::l10n()->t('Contact not found'));
- }
-
- self::checkFormSecurityTokenRedirectOnError('contact/' . $contact_id, 'contact_action', 't');
-
- $cdata = Model\Contact::getPublicAndUserContactID($orig_record['id'], local_user());
- if (empty($cdata)) {
- throw new NotFoundException(DI::l10n()->t('Contact not found'));
- }
-
- if ($cmd === 'update' && $cdata['user']) {
- self::updateContactFromPoll($cdata['user']);
- }
-
- if ($cmd === 'updateprofile' && $cdata['user']) {
- self::updateContactFromProbe($cdata['user']);
- }
-
- if ($cmd === 'block') {
- if (public_contact() === $cdata['public']) {
- throw new BadRequestException(DI::l10n()->t('You can\'t block yourself'));
- }
-
- self::toggleBlockContact($cdata['public'], local_user());
-
- $blocked = Model\Contact\User::isBlocked($contact_id, local_user());
- info(($blocked ? DI::l10n()->t('Contact has been blocked') : DI::l10n()->t('Contact has been unblocked')));
- }
-
- if ($cmd === 'ignore') {
- if (public_contact() === $cdata['public']) {
- throw new BadRequestException(DI::l10n()->t('You can\'t ignore yourself'));
- }
-
- self::toggleIgnoreContact($cdata['public']);
-
- $ignored = Model\Contact\User::isIgnored($cdata['public'], local_user());
- info(($ignored ? DI::l10n()->t('Contact has been ignored') : DI::l10n()->t('Contact has been unignored')));
- }
-
- DI::baseUrl()->redirect('contact/' . $contact_id);
- // NOTREACHED
- }
-