]> git.mxchange.org Git - friendica.git/blobdiff - mod/follow.php
Merge pull request #8244 from MrPetovan/task/8234-add-ap-to-dfrn-request
[friendica.git] / mod / follow.php
index 8956bd5768d05ca727b186eb7c71aa812d5e072b..e1d8b0ea7d8aa22f379983e0c8e1898ebca89b4f 100644 (file)
@@ -8,6 +8,7 @@ use Friendica\Core\Renderer;
 use Friendica\DI;
 use Friendica\Model\Contact;
 use Friendica\Model\Profile;
+use Friendica\Model\Item;
 use Friendica\Network\Probe;
 use Friendica\Database\DBA;
 use Friendica\Util\Strings;
@@ -33,6 +34,9 @@ function follow_post(App $a)
        $result = Contact::createFromProbe($uid, $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']);
                }
@@ -108,6 +112,9 @@ function follow_content(App $a)
        }
 
        if ($protocol == Protocol::PHANTOM) {
+               // Possibly it is a remote item and not an account
+               follow_remote_item($url);
+
                notice(DI::l10n()->t("The network type couldn't be detected. Contact can't be added."));
                $submit = '';
                //$a->internalRedirect($_SESSION['return_path']);
@@ -156,36 +163,29 @@ function follow_content(App $a)
 
        $o = Renderer::replaceMacros($tpl, [
                '$header'        => DI::l10n()->t('Connect/Follow'),
-               '$desc'          => '',
                '$pls_answer'    => DI::l10n()->t('Please answer the following:'),
-               '$does_know_you' => ['knowyou', DI::l10n()->t('Does %s know you?', $ret['name']), false, '', [DI::l10n()->t('No'), DI::l10n()->t('Yes')]],
-               '$add_note'      => DI::l10n()->t('Add a personal note:'),
-               '$page_desc'     => '',
-               '$friendica'     => '',
-               '$statusnet'     => '',
-               '$diaspora'      => '',
-               '$diasnote'      => '',
                '$your_address'  => DI::l10n()->t('Your Identity Address:'),
-               '$invite_desc'   => '',
-               '$emailnet'      => '',
+               '$url_label'     => DI::l10n()->t('Profile URL'),
+               '$keywords_label'=> DI::l10n()->t('Tags:'),
                '$submit'        => $submit,
                '$cancel'        => DI::l10n()->t('Cancel'),
-               '$nickname'      => '',
+
+               '$request'       => $request,
                '$name'          => $ret['name'],
                '$url'           => $ret['url'],
                '$zrl'           => Profile::zrl($ret['url']),
-               '$url_label'     => DI::l10n()->t('Profile URL'),
                '$myaddr'        => $myaddr,
-               '$request'       => $request,
                '$keywords'      => $r[0]['keywords'],
-               '$keywords_label'=> DI::l10n()->t('Tags:')
+
+               '$does_know_you' => ['knowyou', DI::l10n()->t('Does %s know you?', $ret['name'])],
+               '$addnote_field' => ['dfrn-request-message', DI::l10n()->t('Add a personal note:')],
        ]);
 
        DI::page()['aside'] = '';
 
        $profiledata = Contact::getDetailsByURL($ret['url']);
        if ($profiledata) {
-               Profile::load($a, '', 0, $profiledata, false);
+               Profile::load($a, '', $profiledata, false);
        }
 
        if ($gcontact_id <> 0) {
@@ -199,3 +199,19 @@ function follow_content(App $a)
 
        return $o;
 }
+
+function follow_remote_item($url)
+{
+       $item_id = Item::fetchByLink($url, local_user());
+       if (!$item_id) {
+               // If the user-specific search failed, we search and probe a public post
+               $item_id = Item::fetchByLink($url);
+       }
+
+       if (!empty($item_id)) {
+               $item = Item::selectFirst(['guid'], ['id' => $item_id]);
+               if (DBA::isResult($item)) {
+                       DI::baseUrl()->redirect('display/' . $item['guid']);
+               }
+       }
+}