Merge pull request #5867 from annando/ap-fix-follow
AP: Switchting existing contacts to AP when receiving activities
This commit is contained in:
		
				commit
				
					
						5f9dd11cfb
					
				
			
		
					 1 changed files with 23 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -297,6 +297,7 @@ class Processor
 | 
			
		|||
 | 
			
		||||
		$cid = Contact::getIdForURL($activity['actor'], $uid);
 | 
			
		||||
		if (!empty($cid)) {
 | 
			
		||||
			self::switchContact($cid);
 | 
			
		||||
			$contact = DBA::selectFirst('contact', [], ['id' => $cid, 'network' => Protocol::NATIVE_SUPPORT]);
 | 
			
		||||
		} else {
 | 
			
		||||
			$contact = false;
 | 
			
		||||
| 
						 | 
				
			
			@ -311,11 +312,6 @@ class Processor
 | 
			
		|||
			return;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		$contact = DBA::selectFirst('contact', ['network'], ['id' => $cid]);
 | 
			
		||||
		if ($contact['network'] != Protocol::ACTIVITYPUB) {
 | 
			
		||||
			Contact::updateFromProbe($cid, Protocol::ACTIVITYPUB);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		DBA::update('contact', ['hub-verify' => $activity['id']], ['id' => $cid]);
 | 
			
		||||
		logger('Follow user ' . $uid . ' from contact ' . $cid . ' with id ' . $activity['id']);
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -381,6 +377,8 @@ class Processor
 | 
			
		|||
			return;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		self::switchContact($cid);
 | 
			
		||||
 | 
			
		||||
		$fields = ['pending' => false];
 | 
			
		||||
 | 
			
		||||
		$contact = DBA::selectFirst('contact', ['rel'], ['id' => $cid]);
 | 
			
		||||
| 
						 | 
				
			
			@ -413,6 +411,8 @@ class Processor
 | 
			
		|||
			return;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		self::switchContact($cid);
 | 
			
		||||
 | 
			
		||||
		if (DBA::exists('contact', ['id' => $cid, 'rel' => Contact::SHARING, 'pending' => true])) {
 | 
			
		||||
			Contact::remove($cid);
 | 
			
		||||
			logger('Rejected contact request from contact ' . $cid . ' for user ' . $uid . ' - contact had been removed.', LOGGER_DEBUG);
 | 
			
		||||
| 
						 | 
				
			
			@ -464,6 +464,8 @@ class Processor
 | 
			
		|||
			return;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		self::switchContact($cid);
 | 
			
		||||
 | 
			
		||||
		$contact = DBA::selectFirst('contact', [], ['id' => $cid]);
 | 
			
		||||
		if (!DBA::isResult($contact)) {
 | 
			
		||||
			return;
 | 
			
		||||
| 
						 | 
				
			
			@ -472,4 +474,20 @@ class Processor
 | 
			
		|||
		Contact::removeFollower($owner, $contact);
 | 
			
		||||
		logger('Undo following request from contact ' . $cid . ' for user ' . $uid, LOGGER_DEBUG);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Switches a contact to AP if needed
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param integer $cid Contact ID
 | 
			
		||||
	 */
 | 
			
		||||
	private static function switchContact($cid)
 | 
			
		||||
	{
 | 
			
		||||
		$contact = DBA::selectFirst('contact', ['network'], ['id' => $cid, 'network' => Protocol::NATIVE_SUPPORT]);
 | 
			
		||||
		if (!DBA::isResult($contact) || ($contact['network'] == Protocol::ACTIVITYPUB)) {
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		logger('Change existing contact ' . $cid . ' from ' . $contact['network'] . ' to ActivityPub.');
 | 
			
		||||
		Contact::updateFromProbe($cid, Protocol::ACTIVITYPUB);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue