return '';
}
+ /**
+ * Check if the given contact url is on the same machine
+ *
+ * @param string $url The contact link
+ *
+ * @return boolean Is it the same machine?
+ */
+ public static function isLocal($url)
+ {
+ return Strings::compareLink(self::getBasepath($url), System::baseUrl());
+
+ }
+
/**
* Returns the public contact id of the given user id
*
['id' => $contact['id'], 'uid' => $importer['uid']]);
}
+ // Ensure to always have the correct network type, independent from the connection request method
+ self::updateFromProbe($contact['id'], '', true);
+
return true;
} else {
// send email notification to owner?
'writable' => 1,
]);
- $contact_record = [
- 'id' => DBA::lastInsertId(),
- 'network' => $network,
- 'name' => $name,
- 'url' => $url,
- 'photo' => $photo
- ];
+ $contact_id = DBA::lastInsertId();
+
+ // Ensure to always have the correct network type, independent from the connection request method
+ self::updateFromProbe($contact_id, '', true);
+
+ Contact::updateAvatar($photo, $importer["uid"], $contact_id, true);
- Contact::updateAvatar($photo, $importer["uid"], $contact_record["id"], true);
+ $contact_record = DBA::selectFirst('contact', ['id', 'network', 'name', 'url', 'photo'], ['id' => $contact_id]);
/// @TODO Encapsulate this into a function/method
$fields = ['uid', 'username', 'email', 'page-flags', 'notify-flags', 'language'];
$contacts = DBA::select('contact', ['url', 'network', 'protocol'], $condition);
while ($contact = DBA::fetch($contacts)) {
+ if (Contact::isLocal($contact['url'])) {
+ continue;
+ }
+
if (!in_array($contact['network'], $networks) && ($contact['protocol'] != Protocol::ACTIVITYPUB)) {
continue;
}
if ($receiver == $item_profile['followers']) {
$inboxes = array_merge($inboxes, self::fetchTargetInboxesforUser($uid, $personal));
} else {
+ if (Contact::isLocal($receiver)) {
+ continue;
+ }
+
$profile = APContact::getByURL($receiver, false);
if (!empty($profile)) {
if (empty($profile['sharedinbox']) || $personal || $blindcopy) {
*/
private static function skipDFRN($contact, $item, $cmd)
{
+ // Use DFRN if we are on the same site
+ if (Contact::isLocal($contact['url'])) {
+ return false;
+ }
+
// Don't skip when author or owner don't have AP profiles
if ((!empty($item['author-link']) && empty(APContact::getByURL($item['author-link'], false))) || (!empty($item['owner-link']) && empty(APContact::getByURL($item['owner-link'], false)))) {
return false;