]> git.mxchange.org Git - friendica.git/blobdiff - mod/follow.php
Merge pull request #7095 from annando/ap-connect
[friendica.git] / mod / follow.php
index b92424c2083730c339c248dc93e1111190104b6c..8a00e0559ce3d4132dca07cc3f8084638e981dc7 100644 (file)
@@ -12,17 +12,16 @@ use Friendica\Model\Contact;
 use Friendica\Model\Profile;
 use Friendica\Network\Probe;
 use Friendica\Database\DBA;
-use Friendica\Util\Proxy as ProxyUtils;
 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('contacts');
+               $a->internalRedirect('contact');
        }
 
        $uid = local_user();
@@ -52,7 +51,7 @@ function follow_post(App $a)
 
 function follow_content(App $a)
 {
-       $return_path = 'contacts';
+       $return_path = 'contact';
 
        if (!local_user()) {
                notice(L10n::t('Permission denied.'));
@@ -61,7 +60,16 @@ function follow_content(App $a)
        }
 
        $uid = local_user();
-       $url = Strings::escapeTags(trim($_REQUEST['url']));
+       $url = Strings::escapeTags(trim(defaults($_REQUEST, 'url', '')));
+
+       // Issue 6874: Allow remote following from Peertube
+       if (strpos($url, 'acct:') === 0) {
+               $url = str_replace('acct:', '', $url);
+       }
+
+       if (!$url) {
+               $a->internalRedirect($return_path);
+       }
 
        $submit = L10n::t('Submit Request');
 
@@ -83,32 +91,34 @@ 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 {
@@ -139,16 +149,13 @@ 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'] = '';
        }
 
-       $header = L10n::t('Connect/Follow');
-
        $o = Renderer::replaceMacros($tpl, [
-               '$header'        => htmlentities($header),
-               //'$photo'         => ProxyUtils::proxifyUrl($ret['photo'], false, ProxyUtils::SIZE_SMALL),
+               '$header'        => L10n::t('Connect/Follow'),
                '$desc'          => '',
                '$pls_answer'    => L10n::t('Please answer the following:'),
                '$does_know_you' => ['knowyou', L10n::t('Does %s know you?', $ret['name']), false, '', [L10n::t('No'), L10n::t('Yes')]],
@@ -170,13 +177,6 @@ function follow_content(App $a)
                '$url_label'     => L10n::t('Profile URL'),
                '$myaddr'        => $myaddr,
                '$request'       => $request,
-               /*
-                * @TODO commented out?
-               '$location'      => Friendica\Content\Text\BBCode::::convert($r[0]['location']),
-               '$location_label'=> L10n::t('Location:'),
-               '$about'         => Friendica\Content\Text\BBCode::::convert($r[0]['about'], false, false),
-               '$about_label'   => L10n::t('About:'),
-               */
                '$keywords'      => $r[0]['keywords'],
                '$keywords_label'=> L10n::t('Tags:')
        ]);