]> git.mxchange.org Git - friendica.git/commitdiff
Add new Contact/Suggestions module class
authorHypolite Petovan <hypolite@mrpetovan.com>
Fri, 4 Nov 2022 11:57:00 +0000 (07:57 -0400)
committerHypolite Petovan <hypolite@mrpetovan.com>
Fri, 4 Nov 2022 11:57:00 +0000 (07:57 -0400)
src/Module/Contact/Suggestions.php [new file with mode: 0644]
static/routes.config.php
view/theme/frio/templates/widget/peoplefind.tpl

diff --git a/src/Module/Contact/Suggestions.php b/src/Module/Contact/Suggestions.php
new file mode 100644 (file)
index 0000000..86e3f6c
--- /dev/null
@@ -0,0 +1,77 @@
+<?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\Contact;
+
+use Friendica\App;
+use Friendica\Core\L10n;
+use Friendica\Core\Session\Capability\IHandleUserSessions;
+use Friendica\Module\Response;
+use Friendica\Util\Profiler;
+use Psr\Log\LoggerInterface;
+use Friendica\Content\Widget;
+use Friendica\Core\Renderer;
+use Friendica\Model\Contact;
+use Friendica\Module\Contact as ModuleContact;
+use Friendica\Network\HTTPException;
+
+class Suggestions extends \Friendica\BaseModule
+{
+       /** @var IHandleUserSessions */
+       private $session;
+       /** @var App\Page */
+       private $page;
+
+       public function __construct(App\Page $page, IHandleUserSessions $session, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, array $server, array $parameters = [])
+       {
+               parent::__construct($l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
+
+               $this->session = $session;
+               $this->page    = $page;
+       }
+
+       protected function content(array $request = []): string
+       {
+               if (!$this->session->getLocalUserId()) {
+                       throw new HTTPException\ForbiddenException($this->t('Permission denied.'));
+               }
+
+               $this->page['aside'] .= Widget::findPeople();
+               $this->page['aside'] .= Widget::follow();
+
+               $contacts = Contact\Relation::getSuggestions($this->session->getLocalUserId());
+               if (!$contacts) {
+                       return $this->t('No suggestions available. If this is a new site, please try again in 24 hours.');
+               }
+
+               $entries = [];
+               foreach ($contacts as $contact) {
+                       $entries[] = ModuleContact::getContactTemplateVars($contact);
+               }
+
+               $tpl = Renderer::getMarkupTemplate('contact/list.tpl');
+
+               return Renderer::replaceMacros($tpl, [
+                       '$title'    => $this->t('Friend Suggestions'),
+                       '$contacts' => $entries,
+               ]);
+       }
+}
index ef4b1345c45ba63e4fe2fe65d694102ab0a7e181..85171d2b7e6dd9ab01bd88cc281abb1fc19736de 100644 (file)
@@ -373,25 +373,26 @@ return [
        '/compose[/{type}]'    => [Module\Item\Compose::class, [R::GET, R::POST]],
 
        '/contact'   => [
-               '[/]'                         => [Module\Contact::class,           [R::GET]],
-               '/{id:\d+}[/]'                => [Module\Contact\Profile::class,   [R::GET, R::POST]],
+               '[/]'                         => [Module\Contact::class,               [R::GET]],
+               '/{id:\d+}[/]'                => [Module\Contact\Profile::class,       [R::GET, R::POST]],
                '/{id:\d+}/{action:block|ignore|update|updateprofile}'
-                                             => [Module\Contact\Profile::class,   [R::GET]],
-               '/{id:\d+}/advanced'          => [Module\Contact\Advanced::class,  [R::GET, R::POST]],
+                                             => [Module\Contact\Profile::class,       [R::GET]],
+               '/{id:\d+}/advanced'          => [Module\Contact\Advanced::class,      [R::GET, R::POST]],
                '/{id:\d+}/conversations'     => [Module\Contact\Conversations::class, [R::GET]],
-               '/{id:\d+}/contacts[/{type}]' => [Module\Contact\Contacts::class,  [R::GET]],
-               '/{id:\d+}/media'             => [Module\Contact\Media::class,     [R::GET]],
-               '/{id:\d+}/posts'             => [Module\Contact\Posts::class,     [R::GET]],
-               '/{id:\d+}/revoke'            => [Module\Contact\Revoke::class,    [R::GET, R::POST]],
-               '/archived'                   => [Module\Contact::class,           [R::GET]],
-               '/batch'                      => [Module\Contact::class,           [R::GET, R::POST]],
-               '/pending'                    => [Module\Contact::class,           [R::GET]],
-               '/blocked'                    => [Module\Contact::class,           [R::GET]],
-               '/hidden'                     => [Module\Contact::class,           [R::GET]],
-               '/ignored'                    => [Module\Contact::class,           [R::GET]],
-               '/hovercard'                  => [Module\Contact\Hovercard::class, [R::GET]],
-               '/follow'                     => [Module\Contact\Follow::class,    [R::GET, R::POST]],
-               '/unfollow'                   => [Module\Contact\Unfollow::class,  [R::GET, R::POST]],
+               '/{id:\d+}/contacts[/{type}]' => [Module\Contact\Contacts::class,      [R::GET]],
+               '/{id:\d+}/media'             => [Module\Contact\Media::class,         [R::GET]],
+               '/{id:\d+}/posts'             => [Module\Contact\Posts::class,         [R::GET]],
+               '/{id:\d+}/revoke'            => [Module\Contact\Revoke::class,        [R::GET, R::POST]],
+               '/archived'                   => [Module\Contact::class,               [R::GET]],
+               '/batch'                      => [Module\Contact::class,               [R::GET, R::POST]],
+               '/blocked'                    => [Module\Contact::class,               [R::GET]],
+               '/follow'                     => [Module\Contact\Follow::class,        [R::GET, R::POST]],
+               '/hidden'                     => [Module\Contact::class,               [R::GET]],
+               '/hovercard'                  => [Module\Contact\Hovercard::class,     [R::GET]],
+               '/ignored'                    => [Module\Contact::class,               [R::GET]],
+               '/pending'                    => [Module\Contact::class,               [R::GET]],
+               '/suggestions'                => [Module\Contact\Suggestions::class,   [R::GET]],
+               '/unfollow'                   => [Module\Contact\Unfollow::class,      [R::GET, R::POST]],
        ],
 
        '/credits'                  => [Module\Credits::class,          [R::GET]],
index 7c69e6bff317c0c9917785e56cb67fd9d16bd66f..11168eca0bddd1a6f4fe0e53ba9fb50a95774a17 100644 (file)
@@ -15,7 +15,7 @@
        <div class="side-link" id="side-directory-link"><a href="{{$nv.global_dir}}" target="extlink">{{$nv.directory}}</a></div>
        {{* Additional links *}}
        <div class="side-link" id="side-match-link"><a href="match">{{$nv.similar}}</a></div>
-       <div class="side-link" id="side-suggest-link"><a href="suggest">{{$nv.suggest}}</a></div>
+       <div class="side-link" id="side-suggest-link"><a href="contact/suggestions">{{$nv.suggest}}</a></div>
        <div class="side-link" id="side-random-profile-link"><a href="randprof" target="extlink">{{$nv.random}}</a></div>
 
        {{if $nv.inv}}