+ /**
+ * Add moved contacts as followers for all subscribers of the old contact
+ *
+ * @param array $activity
+ * @return void
+ * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+ */
+ public static function movePerson(array $activity)
+ {
+ if (empty($activity['target_id']) || empty($activity['object_id'])) {
+ Queue::remove($activity);
+ return;
+ }
+
+ if ($activity['object_id'] != $activity['actor']) {
+ Logger::notice('Object is not the actor', ['activity' => $activity]);
+ Queue::remove($activity);
+ return;
+ }
+
+ $from = Contact::getByURL($activity['object_id'], false, ['uri-id']);
+ if (empty($from['uri-id'])) {
+ Logger::info('Object not found', ['activity' => $activity]);
+ Queue::remove($activity);
+ return;
+ }
+
+ $contacts = DBA::select('contact', ['uid', 'url'], ["`uri-id` = ? AND `uid` != ? AND `rel` IN (?, ?)", $from['uri-id'], 0, Contact::FRIEND, Contact::SHARING]);
+ while ($from_contact = DBA::fetch($contacts)) {
+ $result = Contact::createFromProbeForUser($from_contact['uid'], $activity['target_id']);
+ Logger::debug('Follower added', ['from' => $from_contact, 'result' => $result]);
+ }
+ DBA::close($contacts);
+ Queue::remove($activity);
+ }
+