$url = notags(trim($_REQUEST['url']));
$return_url = $_SESSION['return_url'];
- $condition = ["`uid` = ? AND `rel` = ? AND (`nurl` = ? OR `alias` = ? OR `alias` = ?) AND `network` != ?",
- $uid, Contact::FRIEND, normalise_link($url),
+ $condition = ["`uid` = ? AND (`rel` = ? OR `rel` = ?) AND (`nurl` = ? OR `alias` = ? OR `alias` = ?) AND `network` != ?",
+ $uid, Contact::SHARING, Contact::FRIEND, normalise_link($url),
normalise_link($url), $url, Protocol::STATUSNET];
$contact = DBA::selectFirst('contact', [], $condition);
if (!DBA::isResult($contact)) {
notice(L10n::t("Contact wasn't found or can't be unfollowed."));
- } else {
- if (in_array($contact['network'], [Protocol::OSTATUS, Protocol::DIASPORA, Protocol::DFRN])) {
- $r = q("SELECT `contact`.*, `user`.* FROM `contact` INNER JOIN `user` ON `contact`.`uid` = `user`.`uid`
- WHERE `user`.`uid` = %d AND `contact`.`self` LIMIT 1",
- intval($uid)
- );
- if (DBA::isResult($r)) {
- Contact::terminateFriendship($r[0], $contact);
- }
+ goaway($return_url);
+ }
+
+ if (in_array($contact['network'], [Protocol::OSTATUS, Protocol::DIASPORA, Protocol::DFRN])) {
+ $r = q("SELECT `contact`.*, `user`.* FROM `contact` INNER JOIN `user` ON `contact`.`uid` = `user`.`uid`
+ WHERE `user`.`uid` = %d AND `contact`.`self` LIMIT 1",
+ intval($uid)
+ );
+ if (DBA::isResult($r)) {
+ Contact::terminateFriendship($r[0], $contact);
}
- DBA::update('contact', ['rel' => Contact::FOLLOWER], ['id' => $contact['id']]);
+ }
- info(L10n::t('Contact unfollowed').EOL);
- goaway(System::baseUrl().'/contacts/'.$contact['id']);
+ // Sharing-only contacts get deleted as there no relationship any more
+ if ($contact['rel'] == Contact::SHARING) {
+ Contact::remove($contact['id']);
+ $return_path = 'contacts';
+ } else {
+ DBA::update('contact', ['rel' => Contact::FOLLOWER], ['id' => $contact['id']]);
+ $return_path = 'contacts/' . $contact['id'];
}
- goaway($return_url);
+
+ info(L10n::t('Contact unfollowed'));
+ goaway($return_path);
// NOTREACHED
}
$submit = L10n::t('Submit Request');
- $condition = ["`uid` = ? AND `rel` = ? AND (`nurl` = ? OR `alias` = ? OR `alias` = ?) AND `network` != ?",
- local_user(), Contact::FRIEND, normalise_link($url),
+ $condition = ["`uid` = ? AND (`rel` = ? OR `rel` = ?) AND (`nurl` = ? OR `alias` = ? OR `alias` = ?) AND `network` != ?",
+ local_user(), Contact::SHARING, Contact::FRIEND, normalise_link($url),
normalise_link($url), $url, Protocol::STATUSNET];
$contact = DBA::selectFirst('contact', ['url', 'network', 'addr', 'name'], $condition);