]> git.mxchange.org Git - friendica.git/blobdiff - mod/follow.php
Merge pull request #8073 from annando/issue-8067
[friendica.git] / mod / follow.php
index ba4ff35f1923e0556ae6f1451781f41bef778b65..7363275de69966e7b352bf8e5d4dd1dd108d366f 100644 (file)
@@ -8,6 +8,7 @@ use Friendica\Core\L10n;
 use Friendica\Core\Protocol;
 use Friendica\Core\Renderer;
 use Friendica\Core\System;
+use Friendica\DI;
 use Friendica\Model\Contact;
 use Friendica\Model\Profile;
 use Friendica\Network\Probe;
@@ -17,11 +18,11 @@ use Friendica\Util\Strings;
 function follow_post(App $a)
 {
        if (!local_user()) {
-               System::httpExit(403, ['title' => L10n::t('Access denied.')]);
+               throw new \Friendica\Network\HTTPException\ForbiddenException(L10n::t('Access denied.'));
        }
 
        if (isset($_REQUEST['cancel'])) {
-               $a->internalRedirect('contact');
+               DI::baseUrl()->redirect('contact');
        }
 
        $uid = local_user();
@@ -38,14 +39,14 @@ function follow_post(App $a)
                if ($result['message']) {
                        notice($result['message']);
                }
-               $a->internalRedirect($return_path);
+               DI::baseUrl()->redirect($return_path);
        } elseif ($result['cid']) {
-               $a->internalRedirect('contact/' . $result['cid']);
+               DI::baseUrl()->redirect('contact/' . $result['cid']);
        }
 
        info(L10n::t('The contact could not be added.'));
 
-       $a->internalRedirect($return_path);
+       DI::baseUrl()->redirect($return_path);
        // NOTREACHED
 }
 
@@ -55,12 +56,14 @@ function follow_content(App $a)
 
        if (!local_user()) {
                notice(L10n::t('Permission denied.'));
-               $a->internalRedirect($return_path);
+               DI::baseUrl()->redirect($return_path);
                // NOTREACHED
        }
 
        $uid = local_user();
-       $url = Strings::escapeTags(trim(defaults($_REQUEST, 'url', '')));
+
+       // Issue 4815: Silently removing a prefixing @
+       $url = ltrim(Strings::escapeTags(trim($_REQUEST['url'] ?? '')), '@!');
 
        // Issue 6874: Allow remote following from Peertube
        if (strpos($url, 'acct:') === 0) {
@@ -68,7 +71,7 @@ function follow_content(App $a)
        }
 
        if (!$url) {
-               $a->internalRedirect($return_path);
+               DI::baseUrl()->redirect($return_path);
        }
 
        $submit = L10n::t('Submit Request');
@@ -91,36 +94,38 @@ function follow_content(App $a)
 
        $ret = Probe::uri($url);
 
-       if (($ret['network'] == Protocol::DIASPORA) && !Config::get('system', 'diaspora_enabled')) {
+       $protocol = Contact::getProtocol($ret['url'], $ret['network']);
+
+       if (($protocol == Protocol::DIASPORA) && !Config::get('system', 'diaspora_enabled')) {
                notice(L10n::t("Diaspora support isn't enabled. Contact can't be added."));
                $submit = '';
                //$a->internalRedirect($_SESSION['return_path']);
                // NOTREACHED
        }
 
-       if (($ret['network'] == Protocol::OSTATUS) && Config::get('system', 'ostatus_disabled')) {
+       if (($protocol == Protocol::OSTATUS) && Config::get('system', 'ostatus_disabled')) {
                notice(L10n::t("OStatus support is disabled. Contact can't be added."));
                $submit = '';
                //$a->internalRedirect($_SESSION['return_path']);
                // NOTREACHED
        }
 
-       if ($ret['network'] == Protocol::PHANTOM) {
+       if ($protocol == Protocol::PHANTOM) {
                notice(L10n::t("The network type couldn't be detected. Contact can't be added."));
                $submit = '';
                //$a->internalRedirect($_SESSION['return_path']);
                // NOTREACHED
        }
 
-       if ($ret['network'] == Protocol::MAIL) {
+       if ($protocol == Protocol::MAIL) {
                $ret['url'] = $ret['addr'];
        }
 
-       if (($ret['network'] === Protocol::DFRN) && !DBA::isResult($r)) {
+       if (($protocol === Protocol::DFRN) && !DBA::isResult($r)) {
                $request = $ret['request'];
                $tpl = Renderer::getMarkupTemplate('dfrn_request.tpl');
        } else {
-               $request = System::baseUrl() . '/follow';
+               $request = DI::baseUrl() . '/follow';
                $tpl = Renderer::getMarkupTemplate('auto_request.tpl');
        }
 
@@ -128,7 +133,7 @@ function follow_content(App $a)
 
        if (!$r) {
                notice(L10n::t('Permission denied.'));
-               $a->internalRedirect($return_path);
+               DI::baseUrl()->redirect($return_path);
                // NOTREACHED
        }
 
@@ -147,7 +152,7 @@ function follow_content(App $a)
                $gcontact_id = $r[0]['id'];
        }
 
-       if ($ret['network'] === Protocol::DIASPORA) {
+       if ($protocol === Protocol::DIASPORA) {
                $r[0]['location'] = '';
                $r[0]['about'] = '';
        }
@@ -179,7 +184,7 @@ function follow_content(App $a)
                '$keywords_label'=> L10n::t('Tags:')
        ]);
 
-       $a->page['aside'] = '';
+       DI::page()['aside'] = '';
 
        $profiledata = Contact::getDetailsByURL($ret['url']);
        if ($profiledata) {