+ private static function followUser($activity)
+ {
+ if (empty($activity['receiver'][$activity['object']])) {
+ return;
+ }
+
+ $uid = $activity['receiver'][$activity['object']];
+ $owner = User::getOwnerDataById($uid);
+
+ $cid = Contact::getIdForURL($activity['owner'], $uid);
+ if (!empty($cid)) {
+ $contact = DBA::selectFirst('contact', [], ['id' => $cid]);
+ } else {
+ $contact = false;
+ }
+
+ $item = ['author-id' => Contact::getIdForURL($activity['owner'])];
+
+ Contact::addRelationship($owner, $contact, $item);
+
+ $cid = Contact::getIdForURL($activity['owner'], $uid);
+ if (empty($cid)) {
+ 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']);
+ }
+
+ private static function acceptFollowUser($activity)