From 8ec5d10bf4385f3012aa5a885009ebed61d0dc3b Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Fri, 4 Nov 2022 07:57:00 -0400 Subject: [PATCH] Add new Contact/Suggestions module class --- src/Module/Contact/Suggestions.php | 77 +++++++++++++++++++ static/routes.config.php | 35 +++++---- .../frio/templates/widget/peoplefind.tpl | 2 +- 3 files changed, 96 insertions(+), 18 deletions(-) create mode 100644 src/Module/Contact/Suggestions.php diff --git a/src/Module/Contact/Suggestions.php b/src/Module/Contact/Suggestions.php new file mode 100644 index 0000000000..86e3f6cc8a --- /dev/null +++ b/src/Module/Contact/Suggestions.php @@ -0,0 +1,77 @@ +. + * + */ + +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, + ]); + } +} diff --git a/static/routes.config.php b/static/routes.config.php index ef4b1345c4..85171d2b7e 100644 --- a/static/routes.config.php +++ b/static/routes.config.php @@ -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]], diff --git a/view/theme/frio/templates/widget/peoplefind.tpl b/view/theme/frio/templates/widget/peoplefind.tpl index 7c69e6bff3..11168eca0b 100644 --- a/view/theme/frio/templates/widget/peoplefind.tpl +++ b/view/theme/frio/templates/widget/peoplefind.tpl @@ -15,7 +15,7 @@ {{* Additional links *}} - + {{if $nv.inv}}