Fix unfollow for sharing-only contacts
- Add removal when unfollowing sharing-only contacts
This commit is contained in:
parent
b028de3aa3
commit
e480da788e
1 changed files with 27 additions and 19 deletions
|
@ -27,29 +27,37 @@ function unfollow_post(App $a)
|
||||||
$url = notags(trim($_REQUEST['url']));
|
$url = notags(trim($_REQUEST['url']));
|
||||||
$return_url = $_SESSION['return_url'];
|
$return_url = $_SESSION['return_url'];
|
||||||
|
|
||||||
$condition = ["`uid` = ? AND `rel` = ? AND (`nurl` = ? OR `alias` = ? OR `alias` = ?) AND `network` != ?",
|
$condition = ["`uid` = ? AND (`rel` = ? OR `rel` = ?) AND (`nurl` = ? OR `alias` = ? OR `alias` = ?) AND `network` != ?",
|
||||||
$uid, Contact::FRIEND, normalise_link($url),
|
$uid, Contact::SHARING, Contact::FRIEND, normalise_link($url),
|
||||||
normalise_link($url), $url, Protocol::STATUSNET];
|
normalise_link($url), $url, Protocol::STATUSNET];
|
||||||
$contact = DBA::selectFirst('contact', [], $condition);
|
$contact = DBA::selectFirst('contact', [], $condition);
|
||||||
|
|
||||||
if (!DBA::isResult($contact)) {
|
if (!DBA::isResult($contact)) {
|
||||||
notice(L10n::t("Contact wasn't found or can't be unfollowed."));
|
notice(L10n::t("Contact wasn't found or can't be unfollowed."));
|
||||||
} else {
|
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']);
|
|
||||||
}
|
}
|
||||||
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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'];
|
||||||
|
}
|
||||||
|
|
||||||
|
info(L10n::t('Contact unfollowed'));
|
||||||
|
goaway($return_path);
|
||||||
// NOTREACHED
|
// NOTREACHED
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,8 +74,8 @@ function unfollow_content(App $a)
|
||||||
|
|
||||||
$submit = L10n::t('Submit Request');
|
$submit = L10n::t('Submit Request');
|
||||||
|
|
||||||
$condition = ["`uid` = ? AND `rel` = ? AND (`nurl` = ? OR `alias` = ? OR `alias` = ?) AND `network` != ?",
|
$condition = ["`uid` = ? AND (`rel` = ? OR `rel` = ?) AND (`nurl` = ? OR `alias` = ? OR `alias` = ?) AND `network` != ?",
|
||||||
local_user(), Contact::FRIEND, normalise_link($url),
|
local_user(), Contact::SHARING, Contact::FRIEND, normalise_link($url),
|
||||||
normalise_link($url), $url, Protocol::STATUSNET];
|
normalise_link($url), $url, Protocol::STATUSNET];
|
||||||
|
|
||||||
$contact = DBA::selectFirst('contact', ['url', 'network', 'addr', 'name'], $condition);
|
$contact = DBA::selectFirst('contact', ['url', 'network', 'addr', 'name'], $condition);
|
||||||
|
|
Loading…
Reference in a new issue