From 8124dedbf6506acfeeb3e1fdac2f87c417d3eb0f Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Fri, 4 Nov 2022 13:01:25 -0400 Subject: [PATCH] Create new Post/Share module class --- src/Module/Post/Share.php | 76 ++++++++++++++++++++ static/routes.config.php | 1 + view/templates/jot-header.tpl | 2 +- view/theme/frio/templates/jot-header.tpl | 2 +- view/theme/smoothly/templates/jot-header.tpl | 14 ++-- 5 files changed, 86 insertions(+), 9 deletions(-) create mode 100644 src/Module/Post/Share.php diff --git a/src/Module/Post/Share.php b/src/Module/Post/Share.php new file mode 100644 index 0000000000..df15dbbef9 --- /dev/null +++ b/src/Module/Post/Share.php @@ -0,0 +1,76 @@ +. + * + */ + +namespace Friendica\Module\Post; + +use Friendica\App; +use Friendica\Content; +use Friendica\Core\L10n; +use Friendica\Core\Session\Capability\IHandleUserSessions; +use Friendica\Core\System; +use Friendica\Model\Item; +use Friendica\Model\Post; +use Friendica\Module\Response; +use Friendica\Util\Profiler; +use Psr\Log\LoggerInterface; + +/** + * Generates a share BBCode block for the provided item. + * + * Only used in Ajax calls + */ +class Share extends \Friendica\BaseModule +{ + /** @var IHandleUserSessions */ + private $session; + /** @var Content\Item */ + private $contentItem; + + public function __construct(Content\Item $contentItem, 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->contentItem = $contentItem; + } + + protected function rawContent(array $request = []) + { + $post_id = $this->parameters['post_id']; + if (!$post_id || !$this->session->getLocalUserId()) { + System::httpError(403); + } + + $item = Post::selectFirst(['private', 'body', 'uri'], ['id' => $post_id]); + if (!$item || $item['private'] == Item::PRIVATE) { + System::httpError(404); + } + + $shared = $this->contentItem->getSharedPost($item, ['uri']); + if ($shared && empty($shared['comment'])) { + $content = '[share]' . $shared['post']['uri'] . '[/share]'; + } else { + $content = '[share]' . $item['uri'] . '[/share]'; + } + + System::httpExit($content); + } +} diff --git a/static/routes.config.php b/static/routes.config.php index 85171d2b7e..3cb1b47e22 100644 --- a/static/routes.config.php +++ b/static/routes.config.php @@ -534,6 +534,7 @@ return [ '/ping' => [Module\Notifications\Ping::class, [R::GET]], '/post' => [ + '/{post_id}/share' => [Module\Post\Share::class, [R::GET ]], '/{item_id}/tag/add' => [Module\Post\Tag\Add::class, [ R::POST]], '/{item_id}/tag/remove[/{tag_name}]' => [Module\Post\Tag\Remove::class, [R::GET, R::POST]], ], diff --git a/view/templates/jot-header.tpl b/view/templates/jot-header.tpl index 9b47ed56a7..a67f9c3f0c 100644 --- a/view/templates/jot-header.tpl +++ b/view/templates/jot-header.tpl @@ -141,7 +141,7 @@ function enableOnUser(){ if ($('#jot-popup').length != 0) $('#jot-popup').show(); $('#like-rotator-' + id).show(); - $.get('share/' + id, function(data) { + $.get('post/' + id + '/share', function(data) { if (!editor) $("#profile-jot-text").val(""); initEditor(function(){ addeditortext(data); diff --git a/view/theme/frio/templates/jot-header.tpl b/view/theme/frio/templates/jot-header.tpl index 23aa8663fb..25a02b9b60 100644 --- a/view/theme/frio/templates/jot-header.tpl +++ b/view/theme/frio/templates/jot-header.tpl @@ -210,7 +210,7 @@ } function jotShare(id) { - $.get('share/' + id, function(data) { + $.get('post/' + id + '/share', function(data) { // remove the former content of the text input $("#profile-jot-text").val(""); initEditor(function(){ diff --git a/view/theme/smoothly/templates/jot-header.tpl b/view/theme/smoothly/templates/jot-header.tpl index a2be043024..69233b9260 100644 --- a/view/theme/smoothly/templates/jot-header.tpl +++ b/view/theme/smoothly/templates/jot-header.tpl @@ -168,13 +168,13 @@ function enableOnUser(){ function jotShare(id) { $('#like-rotator-' + id).show(); - $.get('share/' + id, function(data) { - if (!editor) $("#profile-jot-text").val(""); - initEditor(function(){ - addeditortext(data); - $('#like-rotator-' + id).hide(); - $(window).scrollTop(0); - }); + $.get('post/' + id + '/share', function(data) { + if (!editor) $("#profile-jot-text").val(""); + initEditor(function(){ + addeditortext(data); + $('#like-rotator-' + id).hide(); + $(window).scrollTop(0); + }); }); } -- 2.39.5