]> git.mxchange.org Git - friendica.git/blobdiff - mod/follow.php
Fixed:
[friendica.git] / mod / follow.php
index 86f72671269184f062ba79af6716c38440381770..db7a52b2c32c5c9d088b4418775fa8d999be0aed 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -35,7 +35,7 @@ use Friendica\Util\Strings;
 
 function follow_post(App $a)
 {
-       if (!local_user()) {
+       if (!DI::userSession()->getLocalUserId()) {
                throw new \Friendica\Network\HTTPException\ForbiddenException(DI::l10n()->t('Access denied.'));
        }
 
@@ -52,16 +52,15 @@ function follow_content(App $a)
 {
        $return_path = 'contact';
 
-       if (!local_user()) {
-               notice(DI::l10n()->t('Permission denied.'));
+       if (!DI::userSession()->getLocalUserId()) {
+               DI::sysmsg()->addNotice(DI::l10n()->t('Permission denied.'));
                DI::baseUrl()->redirect($return_path);
                // NOTREACHED
        }
 
-       $uid = local_user();
+       $uid = DI::userSession()->getLocalUserId();
 
-       // Issue 4815: Silently removing a prefixing @
-       $url = ltrim(Strings::escapeTags(trim($_REQUEST['url'] ?? '')), '@!');
+       $url = Probe::cleanURI(trim($_REQUEST['url'] ?? ''));
 
        // Issue 6874: Allow remote following from Peertube
        if (strpos($url, 'acct:') === 0) {
@@ -82,7 +81,7 @@ function follow_content(App $a)
 
        if (DBA::isResult($user_contact)) {
                if ($user_contact['pending']) {
-                       notice(DI::l10n()->t('You already added this contact.'));
+                       DI::sysmsg()->addNotice(DI::l10n()->t('You already added this contact.'));
                        $submit = '';
                }
        }
@@ -98,7 +97,7 @@ function follow_content(App $a)
                // 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."));
+               DI::sysmsg()->addNotice(DI::l10n()->t("The network type couldn't be detected. Contact can't be added."));
                $submit = '';
                $contact = ['url' => $url, 'network' => Protocol::PHANTOM, 'name' => $url, 'keywords' => ''];
        }
@@ -106,12 +105,12 @@ function follow_content(App $a)
        $protocol = Contact::getProtocol($contact['url'], $contact['network']);
 
        if (($protocol == Protocol::DIASPORA) && !DI::config()->get('system', 'diaspora_enabled')) {
-               notice(DI::l10n()->t("Diaspora support isn't enabled. Contact can't be added."));
+               DI::sysmsg()->addNotice(DI::l10n()->t("Diaspora support isn't enabled. Contact can't be added."));
                $submit = '';
        }
 
        if (($protocol == Protocol::OSTATUS) && DI::config()->get('system', 'ostatus_disabled')) {
-               notice(DI::l10n()->t("OStatus support is disabled. Contact can't be added."));
+               DI::sysmsg()->addNotice(DI::l10n()->t("OStatus support is disabled. Contact can't be added."));
                $submit = '';
        }
 
@@ -128,7 +127,7 @@ function follow_content(App $a)
 
        $owner = User::getOwnerDataById($uid);
        if (empty($owner)) {
-               notice(DI::l10n()->t('Permission denied.'));
+               DI::sysmsg()->addNotice(DI::l10n()->t('Permission denied.'));
                DI::baseUrl()->redirect($return_path);
                // NOTREACHED
        }
@@ -157,8 +156,8 @@ function follow_content(App $a)
 
        DI::page()['aside'] = '';
 
-       if ($protocol != Protocol::PHANTOM) {
-               DI::page()['aside'] = Widget\VCard::getHTML(Contact::getByURL($contact['url'], false));
+       if (!in_array($protocol, [Protocol::PHANTOM, Protocol::MAIL])) {
+               DI::page()['aside'] = Widget\VCard::getHTML($contact);
 
                $o .= Renderer::replaceMacros(Renderer::getMarkupTemplate('section_title.tpl'),
                        ['$title' => DI::l10n()->t('Status Messages and Posts')]
@@ -175,28 +174,28 @@ function follow_process(App $a, string $url)
 {
        $return_path = 'follow?url=' . urlencode($url);
 
-       $result = Contact::createFromProbe($a->user, $url, true);
+       $result = Contact::createFromProbeForUser($a->getLoggedInUserId(), $url);
 
        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::sysmsg()->addNotice($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::sysmsg()->addNotice(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());
+       $item_id = Item::fetchByLink($url, DI::userSession()->getLocalUserId());
        if (!$item_id) {
                // If the user-specific search failed, we search and probe a public post
                $item_id = Item::fetchByLink($url);