]> git.mxchange.org Git - friendica.git/blobdiff - mod/follow.php
Issue 7285: Perform duplicate check for item URI also with AP
[friendica.git] / mod / follow.php
index e0b6e1733b7386b420f0efb221e9a9b59abed75f..c7a96f734f6a01ad7dd9b0449618eee1e95787d3 100644 (file)
@@ -60,7 +60,9 @@ function follow_content(App $a)
        }
 
        $uid = local_user();
-       $url = Strings::escapeTags(trim(defaults($_REQUEST, 'url', '')));
+
+       // Issue 4815: Silently removing a prefixing @
+       $url = ltrim(Strings::escapeTags(trim(defaults($_REQUEST, 'url', ''))), '@!');
 
        // Issue 6874: Allow remote following from Peertube
        if (strpos($url, 'acct:') === 0) {
@@ -91,32 +93,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 {
@@ -147,7 +151,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'] = '';
        }