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']));
 | 
			
		||||
	$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);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		DBA::update('contact', ['rel' => Contact::FOLLOWER], ['id' => $contact['id']]);
 | 
			
		||||
 | 
			
		||||
		info(L10n::t('Contact unfollowed').EOL);
 | 
			
		||||
		goaway(System::baseUrl().'/contacts/'.$contact['id']);
 | 
			
		||||
		goaway($return_url);
 | 
			
		||||
	}
 | 
			
		||||
	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
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -66,8 +74,8 @@ function unfollow_content(App $a)
 | 
			
		|||
 | 
			
		||||
	$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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue