]> git.mxchange.org Git - friendica.git/commitdiff
Move remote follow module to profile folder
authorHypolite Petovan <hypolite@mrpetovan.com>
Sun, 30 Oct 2022 19:50:39 +0000 (15:50 -0400)
committerHypolite Petovan <hypolite@mrpetovan.com>
Mon, 31 Oct 2022 19:31:43 +0000 (15:31 -0400)
src/Model/Profile.php
src/Module/Profile/RemoteFollow.php [new file with mode: 0644]
src/Module/RemoteFollow.php [deleted file]
static/routes.config.php

index 2496199bd15439a5819276c6696a25fcecbed765..8538bfde2c9b766919fb9898a7b5c5bca33d8645 100644 (file)
@@ -335,7 +335,7 @@ class Profile
                        if (!$visitor_is_authenticated) {
                                // Remote follow is only available for local profiles
                                if (!empty($profile['nickname']) && strpos($profile_url, DI::baseUrl()->get()) === 0) {
-                                       $follow_link = 'remote_follow/' . $profile['nickname'];
+                                       $follow_link = 'profile/' . $profile['nickname'] . '/remote_follow';
                                }
                        } else {
                                if ($visitor_is_following) {
diff --git a/src/Module/Profile/RemoteFollow.php b/src/Module/Profile/RemoteFollow.php
new file mode 100644 (file)
index 0000000..7111146
--- /dev/null
@@ -0,0 +1,141 @@
+<?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Friendica\Module\Profile;
+
+use Friendica\App;
+use Friendica\App\Page;
+use Friendica\BaseModule;
+use Friendica\Content\Widget;
+use Friendica\Core\L10n;
+use Friendica\Core\Logger;
+use Friendica\Core\Protocol;
+use Friendica\Core\Renderer;
+use Friendica\Core\Search;
+use Friendica\Core\Session\Capability\IHandleUserSessions;
+use Friendica\Core\System;
+use Friendica\DI;
+use Friendica\Model\Contact;
+use Friendica\Model\Profile;
+use Friendica\Model\User;
+use Friendica\Module\Response;
+use Friendica\Navigation\SystemMessages;
+use Friendica\Network\HTTPException;
+use Friendica\Network\Probe;
+use Friendica\Util\Profiler;
+use Psr\Log\LoggerInterface;
+
+/**
+ * Remotely follow the account on this system by the provided account
+ */
+class RemoteFollow extends BaseModule
+{
+       /** @var SystemMessages */
+       private $systemMessages;
+       /** @var Page */
+       protected $page;
+       /** @var IHandleUserSessions */
+       private $userSession;
+
+       /** @var array */
+       protected $owner;
+
+       public function __construct(IHandleUserSessions $userSession, SystemMessages $systemMessages, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, App\Page $page, LoggerInterface $logger, Profiler $profiler, Response $response, array $server, array $parameters = [])
+       {
+               parent::__construct($l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
+
+               $this->systemMessages = $systemMessages;
+               $this->page           = $page;
+               $this->userSession    = $userSession;
+
+               $this->owner = User::getOwnerDataByNick($this->parameters['nickname']);
+               if (!$this->owner) {
+                       throw new HTTPException\NotFoundException($this->t('User not found.'));
+               }
+       }
+
+       protected function post(array $request = [])
+       {
+               if (!empty($request['cancel']) || empty($request['dfrn_url'])) {
+                       $this->baseUrl->redirect('profile/' . $this->parameters['nickname']);
+               }
+       
+               if (empty($this->owner)) {
+                       $this->systemMessages->addNotice($this->t('Profile unavailable.'));
+                       return;
+               }
+
+               $url = Probe::cleanURI($request['dfrn_url']);
+               if (!strlen($url)) {
+                       $this->systemMessages->addNotice($this->t('Invalid locator'));
+                       return;
+               }
+
+               // Detect the network, make sure the provided URL is valid
+               $data = Contact::getByURL($url);
+               if (!$data) {
+                       $this->systemMessages->addNotice($this->t("The provided profile link doesn't seem to be valid"));
+                       return;
+               }
+
+               if (empty($data['subscribe'])) {
+                       $this->systemMessages->addNotice($this->t("Remote subscription can't be done for your network. Please subscribe directly on your system."));
+                       return;
+               }
+
+               $this->logger->notice('Remote request', ['url' => $url, 'follow' => $this->owner['url'], 'remote' => $data['subscribe']]);
+
+               // Substitute our user's feed URL into $data['subscribe']
+               // Send the subscriber home to subscribe
+               // Diaspora needs the uri in the format user@domain.tld
+               if ($data['network'] == Protocol::DIASPORA) {
+                       $uri = urlencode($this->owner['addr']);
+               } else {
+                       $uri = urlencode($this->owner['url']);
+               }
+
+               $follow_link = str_replace('{uri}', $uri, $data['subscribe']);
+               System::externalRedirect($follow_link);
+       }
+
+       protected function content(array $request = []): string
+       {
+               $this->page['aside'] = Widget\VCard::getHTML($this->owner);
+
+               $target_addr = $this->owner['addr'];
+               $target_url  = $this->owner['url'];
+
+               $tpl = Renderer::getMarkupTemplate('auto_request.tpl');
+               return Renderer::replaceMacros($tpl, [
+                       '$header'        => $this->t('Friend/Connection Request'),
+                       '$page_desc'     => $this->t('Enter your Webfinger address (user@domain.tld) or profile URL here. If this isn\'t supported by your system, you have to subscribe to <strong>%s</strong> or <strong>%s</strong> directly on your system.', $target_addr, $target_url),
+                       '$invite_desc'   => $this->t('If you are not yet a member of the free social web, <a href="%s">follow this link to find a public Friendica node and join us today</a>.', Search::getGlobalDirectory() . '/servers'),
+                       '$your_address'  => $this->t('Your Webfinger address or profile URL:'),
+                       '$pls_answer'    => $this->t('Please answer the following:'),
+                       '$submit'        => $this->t('Submit Request'),
+                       '$cancel'        => $this->t('Cancel'),
+
+                       '$action'        => 'profile/' . $this->parameters['nickname'] . '/remote_follow',
+                       '$name'          => $this->owner['name'],
+                       '$myaddr'        => $this->userSession->getMyUrl(),
+               ]);
+       }
+}
diff --git a/src/Module/RemoteFollow.php b/src/Module/RemoteFollow.php
deleted file mode 100644 (file)
index ce5c6f6..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-<?php
-/**
- * @copyright Copyright (C) 2010-2022, the Friendica project
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <https://www.gnu.org/licenses/>.
- *
- */
-
-namespace Friendica\Module;
-
-use Friendica\App;
-use Friendica\App\Page;
-use Friendica\BaseModule;
-use Friendica\Content\Widget;
-use Friendica\Core\L10n;
-use Friendica\Core\Logger;
-use Friendica\Core\Protocol;
-use Friendica\Core\Renderer;
-use Friendica\Core\Search;
-use Friendica\Core\System;
-use Friendica\DI;
-use Friendica\Model\Contact;
-use Friendica\Model\Profile;
-use Friendica\Model\User;
-use Friendica\Network\HTTPException;
-use Friendica\Network\Probe;
-use Friendica\Util\Profiler;
-use Psr\Log\LoggerInterface;
-
-/**
- * Remotely follow the account on this system by the provided account
- */
-class RemoteFollow extends BaseModule
-{
-       /** @var array */
-       protected $owner;
-       /** @var Page */
-       protected $page;
-
-       public function __construct(L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, App\Page $page, LoggerInterface $logger, Profiler $profiler, Response $response, array $server, array $parameters = [])
-       {
-               parent::__construct($l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
-
-               $this->owner = User::getOwnerDataByNick($this->parameters['profile']);
-               if (!$this->owner) {
-                       throw new HTTPException\NotFoundException($this->t('User not found.'));
-               }
-
-               $this->page    = $page;
-       }
-
-       protected function post(array $request = [])
-       {
-               if (!empty($_POST['cancel']) || empty($_POST['dfrn_url'])) {
-                       $this->baseUrl->redirect();
-               }
-       
-               if (empty($this->owner)) {
-                       DI::sysmsg()->addNotice($this->t('Profile unavailable.'));
-                       return;
-               }
-               
-               $url = Probe::cleanURI($_POST['dfrn_url']);
-               if (!strlen($url)) {
-                       DI::sysmsg()->addNotice($this->t("Invalid locator"));
-                       return;
-               }
-
-               // Detect the network, make sure the provided URL is valid
-               $data = Contact::getByURL($url);
-               if (!$data) {
-                       DI::sysmsg()->addNotice($this->t("The provided profile link doesn't seem to be valid"));
-                       return;
-               }
-
-               if (empty($data['subscribe'])) {
-                       DI::sysmsg()->addNotice($this->t("Remote subscription can't be done for your network. Please subscribe directly on your system."));
-                       return;
-               }
-
-               Logger::notice('Remote request', ['url' => $url, 'follow' => $this->owner['url'], 'remote' => $data['subscribe']]);
-               
-               // Substitute our user's feed URL into $data['subscribe']
-               // Send the subscriber home to subscribe
-               // Diaspora needs the uri in the format user@domain.tld
-               if ($data['network'] == Protocol::DIASPORA) {
-                       $uri = urlencode($this->owner['addr']);
-               } else {
-                       $uri = urlencode($this->owner['url']);
-               }
-       
-               $follow_link = str_replace('{uri}', $uri, $data['subscribe']);
-               System::externalRedirect($follow_link);
-       }
-
-       protected function content(array $request = []): string
-       {
-               if (empty($this->owner)) {
-                       return '';
-               }
-
-               $this->page['aside'] = Widget\VCard::getHTML($this->owner);
-
-               $target_addr = $this->owner['addr'];
-               $target_url = $this->owner['url'];
-
-               $tpl = Renderer::getMarkupTemplate('auto_request.tpl');
-               $o = Renderer::replaceMacros($tpl, [
-                       '$header'        => $this->t('Friend/Connection Request'),
-                       '$page_desc'     => $this->t('Enter your Webfinger address (user@domain.tld) or profile URL here. If this isn\'t supported by your system, you have to subscribe to <strong>%s</strong> or <strong>%s</strong> directly on your system.', $target_addr, $target_url),
-                       '$invite_desc'   => $this->t('If you are not yet a member of the free social web, <a href="%s">follow this link to find a public Friendica node and join us today</a>.', Search::getGlobalDirectory() . '/servers'),
-                       '$your_address'  => $this->t('Your Webfinger address or profile URL:'),
-                       '$pls_answer'    => $this->t('Please answer the following:'),
-                       '$submit'        => $this->t('Submit Request'),
-                       '$cancel'        => $this->t('Cancel'),
-
-                       '$action'        => 'remote_follow/' . $this->parameters['profile'],
-                       '$name'          => $this->owner['name'],
-                       '$myaddr'        => Profile::getMyURL(),
-               ]);
-               return $o;
-       }
-}
index 1b0f68026ab24ab8a42100094c89e0e227474daf..c5685acea8d4aa88fba79225e9a69045b5cf7891 100644 (file)
@@ -33,14 +33,15 @@ use Friendica\Module;
 $profileRoutes = [
        ''                                         => [Module\Profile\Index::class,             [R::GET]],
        '/attachment/upload'                       => [Module\Profile\Attachment\Upload::class, [        R::POST]],
-       '/profile'                                 => [Module\Profile\Profile::class,           [R::GET]],
-       '/schedule'                                => [Module\Profile\Schedule::class,          [R::GET, R::POST]],
        '/contacts/common'                         => [Module\Profile\Common::class,            [R::GET]],
        '/contacts[/{type}]'                       => [Module\Profile\Contacts::class,          [R::GET]],
-       '/status[/{category}[/{date1}[/{date2}]]]' => [Module\Profile\Status::class,            [R::GET]],
        '/media'                                   => [Module\Profile\Media::class,             [R::GET]],
-       '/unkmail'                                 => [Module\Profile\UnkMail::class,           [R::GET, R::POST]],
        '/photos/upload'                           => [Module\Profile\Photos\Upload::class,     [        R::POST]],
+       '/profile'                                 => [Module\Profile\Profile::class,           [R::GET]],
+       '/remote_follow'                           => [Module\Profile\RemoteFollow::class,      [R::GET, R::POST]],
+       '/schedule'                                => [Module\Profile\Schedule::class,          [R::GET, R::POST]],
+       '/status[/{category}[/{date1}[/{date2}]]]' => [Module\Profile\Status::class,            [R::GET]],
+       '/unkmail'                                 => [Module\Profile\UnkMail::class,           [R::GET, R::POST]],
 ];
 
 $apiRoutes = [
@@ -589,7 +590,6 @@ return [
 
        '/randprof'                      => [Module\RandomProfile::class,         [R::GET]],
        '/register'                      => [Module\Register::class,              [R::GET, R::POST]],
-       '/remote_follow/{profile}'       => [Module\RemoteFollow::class,          [R::GET, R::POST]],
        '/robots.txt'                    => [Module\RobotsTxt::class,             [R::GET]],
        '/rsd.xml'                       => [Module\ReallySimpleDiscovery::class, [R::GET]],
        '/smilies[/json]'                => [Module\Smilies::class,               [R::GET]],