$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;
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']);
}
return;
}
+ self::switchContact($cid);
+
$fields = ['pending' => false];
$contact = DBA::selectFirst('contact', ['rel'], ['id' => $cid]);
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);
return;
}
+ self::switchContact($cid);
+
$contact = DBA::selectFirst('contact', [], ['id' => $cid]);
if (!DBA::isResult($contact)) {
return;
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);
+ }
}