X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=mod%2Ffollow.php;h=ed8e3aa5fee881bd470d308be901fa3adb613809;hb=53e38b03130ea798bba44db44ccb7f331dc4b91d;hp=ac07d040cc99afb11d9afcbe9747fa91de507c16;hpb=5e0b4b8a8f39f28fcfc2812e66223d95c92431a0;p=friendica.git diff --git a/mod/follow.php b/mod/follow.php index ac07d040cc..ed8e3aa5fe 100644 --- a/mod/follow.php +++ b/mod/follow.php @@ -1,6 +1,6 @@ user, $url, true); - - if ($result['success'] == false) { - // Possibly it is a remote item and not an account - follow_remote_item($url); - - if ($result['message']) { - notice($result['message']); - } - DI::baseUrl()->redirect($return_path); - } elseif ($result['cid']) { - DI::baseUrl()->redirect('contact/' . $result['cid']); - } - notice(DI::l10n()->t('The contact could not be added.')); - - DI::baseUrl()->redirect($return_path); - // NOTREACHED + follow_process($a, $url); } function follow_content(App $a) @@ -108,7 +87,13 @@ function follow_content(App $a) } $contact = Contact::getByURL($url, true); + + // Possibly it is a mail contact if (empty($contact)) { + $contact = Probe::uri($url, Protocol::MAIL, $uid); + } + + if (empty($contact) || ($contact['network'] == Protocol::PHANTOM)) { // Possibly it is a remote item and not an account follow_remote_item($url); @@ -137,6 +122,10 @@ function follow_content(App $a) $request = $contact['request']; $tpl = Renderer::getMarkupTemplate('dfrn_request.tpl'); } else { + if (!empty($_REQUEST['auto'])) { + follow_process($a, $contact['url']); + } + $request = DI::baseUrl() . '/follow'; $tpl = Renderer::getMarkupTemplate('auto_request.tpl'); } @@ -189,6 +178,33 @@ function follow_content(App $a) return $o; } +function follow_process(App $a, string $url) +{ + $return_path = 'follow?url=' . urlencode($url); + + // Makes the connection request for friendica contacts easier + // This is just a precaution if maybe this page is called somewhere directly via POST + $_SESSION['fastlane'] = $url; + + $result = Contact::createFromProbe($a->user, $url, true); + + if ($result['success'] == false) { + // Possibly it is a remote item and not an account + follow_remote_item($url); + + if ($result['message']) { + notice($result['message']); + } + DI::baseUrl()->redirect($return_path); + } elseif ($result['cid']) { + DI::baseUrl()->redirect('contact/' . $result['cid']); + } + + notice(DI::l10n()->t('The contact could not be added.')); + + DI::baseUrl()->redirect($return_path); +} + function follow_remote_item($url) { $item_id = Item::fetchByLink($url, local_user()); @@ -198,7 +214,7 @@ function follow_remote_item($url) } if (!empty($item_id)) { - $item = Item::selectFirst(['guid'], ['id' => $item_id]); + $item = Post::selectFirst(['guid'], ['id' => $item_id]); if (DBA::isResult($item)) { DI::baseUrl()->redirect('display/' . $item['guid']); }