mirror of
https://github.com/friendica/friendica
synced 2024-11-10 03:42:53 +00:00
Improved detection for a local contact
This commit is contained in:
parent
424a85bb94
commit
aa6313dee6
3 changed files with 24 additions and 3 deletions
|
@ -54,6 +54,20 @@ class APContact
|
|||
return [];
|
||||
}
|
||||
|
||||
if (Contact::isLocal($addr) && ($local_uid = User::getIdForURL($addr)) && ($local_owner = User::getOwnerDataById($local_uid))) {
|
||||
$data = [
|
||||
'addr' => $local_owner['addr'],
|
||||
'baseurl' => $local_owner['baseurl'],
|
||||
'url' => $local_owner['url'],
|
||||
'subscribe' => $local_owner['baseurl'] . '/follow?url={uri}'];
|
||||
|
||||
if (!empty($local_owner['alias']) && ($local_owner['url'] != $local_owner['alias'])) {
|
||||
$data['alias'] = $local_owner['alias'];
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
$data = ['addr' => $addr];
|
||||
$template = 'https://' . $addr_parts[1] . '/.well-known/webfinger?resource=acct:' . urlencode($addr);
|
||||
$webfinger = Probe::webfinger(str_replace('{uri}', urlencode($addr), $template), 'application/jrd+json');
|
||||
|
@ -284,7 +298,7 @@ class APContact
|
|||
$following = ActivityPub::fetchContent($apcontact['following']);
|
||||
}
|
||||
if (!empty($following['totalItems'])) {
|
||||
// Mastodon seriously allows for this condition?
|
||||
// Mastodon seriously allows for this condition?
|
||||
// Jul 14 2021 - See https://mastodon.social/@BLUW for a negative following count
|
||||
if ($following['totalItems'] < 0) {
|
||||
$following['totalItems'] = 0;
|
||||
|
@ -300,7 +314,7 @@ class APContact
|
|||
$followers = ActivityPub::fetchContent($apcontact['followers']);
|
||||
}
|
||||
if (!empty($followers['totalItems'])) {
|
||||
// Mastodon seriously allows for this condition?
|
||||
// Mastodon seriously allows for this condition?
|
||||
// Jul 14 2021 - See https://mastodon.online/@goes11 for a negative followers count
|
||||
if ($followers['totalItems'] < 0) {
|
||||
$followers['totalItems'] = 0;
|
||||
|
|
|
@ -453,6 +453,13 @@ class Contact
|
|||
*/
|
||||
public static function isLocal($url)
|
||||
{
|
||||
if (!parse_url($url, PHP_URL_SCHEME)) {
|
||||
$addr_parts = explode('@', $url);
|
||||
if (count($addr_parts) == 2) {
|
||||
return $addr_parts[1] == DI::baseUrl()->getHostname();
|
||||
}
|
||||
}
|
||||
|
||||
return Strings::compareLink(self::getBasepath($url, true), DI::baseUrl());
|
||||
}
|
||||
|
||||
|
|
|
@ -333,7 +333,7 @@ class Probe
|
|||
public static function uri($uri, $network = '', $uid = -1)
|
||||
{
|
||||
// Local profiles aren't probed via network
|
||||
if (empty($network) && strpos($uri, DI::baseUrl()->getHostname())) {
|
||||
if (empty($network) && Contact::isLocal($uri)) {
|
||||
$data = self::localProbe($uri);
|
||||
if (!empty($data)) {
|
||||
return $data;
|
||||
|
|
Loading…
Reference in a new issue