- $condition = ["`uid` = ? AND (`rel` = ? OR `rel` = ?) AND (`nurl` = ? OR `alias` = ? OR `alias` = ?)",
- $uid, Contact::SHARING, Contact::FRIEND, Strings::normaliseLink($url),
- Strings::normaliseLink($url), $url];
- $contact = DBA::selectFirst('contact', [], $condition);
-
- if (!DBA::isResult($contact)) {
- notice(L10n::t("You aren't following this contact."));
- DI::baseUrl()->redirect($base_return_path);
- // NOTREACHED
- }
-
- if (!empty($_REQUEST['cancel'])) {
- DI::baseUrl()->redirect($base_return_path . '/' . $contact['id']);
- }
-
- if (!in_array($contact['network'], Protocol::NATIVE_SUPPORT)) {
- notice(L10n::t('Unfollowing is currently not supported by your network.'));
- DI::baseUrl()->redirect($base_return_path . '/' . $contact['id']);
- // NOTREACHED
- }
-
- $dissolve = ($contact['rel'] == Contact::SHARING);
-
- $owner = User::getOwnerDataById($uid);
- if ($owner) {
- Contact::terminateFriendship($owner, $contact, $dissolve);
- }
-
- // Sharing-only contacts get deleted as there no relationship any more
- if ($dissolve) {
- Contact::remove($contact['id']);
- $return_path = $base_return_path;
- } else {
- DBA::update('contact', ['rel' => Contact::FOLLOWER], ['id' => $contact['id']]);
- $return_path = $base_return_path . '/' . $contact['id'];
- }
-
- info(L10n::t('Contact unfollowed'));
- DI::baseUrl()->redirect($return_path);
- // NOTREACHED