From 7260f2929205eb29015dbb3a1c6254cfbffcb356 Mon Sep 17 00:00:00 2001 From: Art4 Date: Fri, 14 Feb 2025 08:12:59 +0000 Subject: [PATCH] Create Event for jot_tool hook --- src/Content/Conversation.php | 15 ++++++++------- src/Core/Hooks/HookEventBridge.php | 2 ++ src/Event/HtmlFilterEvent.php | 2 ++ src/Module/Item/Compose.php | 12 ++++++++---- src/Module/Post/Edit.php | 15 ++++++++++----- tests/Unit/Core/Hooks/HookEventBridgeTest.php | 2 ++ 6 files changed, 32 insertions(+), 16 deletions(-) diff --git a/src/Content/Conversation.php b/src/Content/Conversation.php index 3394b3c798..205be399ef 100644 --- a/src/Content/Conversation.php +++ b/src/Content/Conversation.php @@ -11,7 +11,6 @@ use Friendica\App\Arguments; use Friendica\App\BaseURL; use Friendica\App\Mode; use Friendica\App\Page; -use Friendica\AppHelper; use Friendica\BaseModule; use Friendica\Core\ACL; use Friendica\Core\Config\Capability\IManageConfigValues; @@ -23,6 +22,7 @@ use Friendica\Core\Renderer; use Friendica\Core\Session\Capability\IHandleUserSessions; use Friendica\Core\Theme; use Friendica\Database\DBA; +use Friendica\Event\HtmlFilterEvent; use Friendica\Model\Contact; use Friendica\Model\Item as ItemModel; use Friendica\Model\Post; @@ -42,6 +42,7 @@ use Friendica\Util\Profiler; use Friendica\Util\Strings; use Friendica\Util\Temporal; use ImagickException; +use Psr\EventDispatcher\EventDispatcherInterface; use Psr\Log\LoggerInterface; class Conversation @@ -75,8 +76,6 @@ class Conversation private $baseURL; /** @var IManageConfigValues */ private $config; - /** @var AppHelper */ - private $appHelper; /** @var Page */ private $page; /** @var Mode */ @@ -85,8 +84,9 @@ class Conversation private $session; /** @var UserGServerRepository */ private $userGServer; + private EventDispatcherInterface $eventDispatcher; - public function __construct(UserGServerRepository $userGServer, LoggerInterface $logger, Profiler $profiler, Activity $activity, L10n $l10n, Item $item, Arguments $args, BaseURL $baseURL, IManageConfigValues $config, IManagePersonalConfigValues $pConfig, Page $page, Mode $mode, AppHelper $appHelper, IHandleUserSessions $session) + public function __construct(UserGServerRepository $userGServer, LoggerInterface $logger, Profiler $profiler, Activity $activity, L10n $l10n, Item $item, Arguments $args, BaseURL $baseURL, IManageConfigValues $config, IManagePersonalConfigValues $pConfig, Page $page, Mode $mode, EventDispatcherInterface $eventDispatcher, IHandleUserSessions $session) { $this->activity = $activity; $this->item = $item; @@ -99,7 +99,7 @@ class Conversation $this->args = $args; $this->pConfig = $pConfig; $this->page = $page; - $this->appHelper = $appHelper; + $this->eventDispatcher = $eventDispatcher; $this->session = $session; $this->userGServer = $userGServer; } @@ -332,8 +332,9 @@ class Conversation '$is_mobile' => $this->mode->isMobile(), ]); - $jotplugins = ''; - Hook::callAll('jot_tool', $jotplugins); + $jotplugins = $this->eventDispatcher->dispatch( + new HtmlFilterEvent(HtmlFilterEvent::JOT_TOOL, ''), + )->getHtml(); if ($this->config->get('system', 'set_creation_date')) { $created_at = Temporal::getDateTimeField( diff --git a/src/Core/Hooks/HookEventBridge.php b/src/Core/Hooks/HookEventBridge.php index fca179a75b..d04a3e60bd 100644 --- a/src/Core/Hooks/HookEventBridge.php +++ b/src/Core/Hooks/HookEventBridge.php @@ -53,6 +53,7 @@ final class HookEventBridge HtmlFilterEvent::PAGE_HEADER => 'page_header', HtmlFilterEvent::PAGE_CONTENT_TOP => 'page_content_top', HtmlFilterEvent::PAGE_END => 'page_end', + HtmlFilterEvent::JOT_TOOL => 'jot_tool', ]; /** @@ -79,6 +80,7 @@ final class HookEventBridge HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_CONTENT_TOP => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_END => 'onHtmlFilterEvent', + HtmlFilterEvent::JOT_TOOL => 'onHtmlFilterEvent', ]; } diff --git a/src/Event/HtmlFilterEvent.php b/src/Event/HtmlFilterEvent.php index 7d1bbb2b55..83a852e08b 100644 --- a/src/Event/HtmlFilterEvent.php +++ b/src/Event/HtmlFilterEvent.php @@ -26,6 +26,8 @@ final class HtmlFilterEvent extends Event public const PAGE_END = 'friendica.html.page_end'; + public const JOT_TOOL = 'friendica.html.jot_tool'; + private string $html; public function __construct(string $name, string $html) diff --git a/src/Module/Item/Compose.php b/src/Module/Item/Compose.php index 727b8ba04f..4463e6dbd8 100644 --- a/src/Module/Item/Compose.php +++ b/src/Module/Item/Compose.php @@ -16,13 +16,13 @@ use Friendica\BaseModule; use Friendica\Content\Feature; use Friendica\Core\ACL; use Friendica\Core\Config\Capability\IManageConfigValues; -use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\PConfig\Capability\IManagePersonalConfigValues; use Friendica\Core\Renderer; use Friendica\Core\Session\Model\UserSession; use Friendica\Core\Theme; use Friendica\Database\DBA; +use Friendica\Event\HtmlFilterEvent; use Friendica\Model\Contact; use Friendica\Model\Item; use Friendica\Model\User; @@ -34,6 +34,7 @@ use Friendica\Util\ACLFormatter; use Friendica\Util\Crypto; use Friendica\Util\Profiler; use Friendica\Util\Temporal; +use Psr\EventDispatcher\EventDispatcherInterface; use Psr\Log\LoggerInterface; class Compose extends BaseModule @@ -59,8 +60,9 @@ class Compose extends BaseModule /** @var AppHelper */ private $appHelper; + private EventDispatcherInterface $eventDispatcher; - public function __construct(AppHelper $appHelper, UserSession $session, IManageConfigValues $config, IManagePersonalConfigValues $pConfig, Page $page, ACLFormatter $ACLFormatter, SystemMessages $systemMessages, L10n $l10n, BaseURL $baseUrl, Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, array $server, array $parameters = []) + public function __construct(EventDispatcherInterface $eventDispatcher, AppHelper $appHelper, UserSession $session, IManageConfigValues $config, IManagePersonalConfigValues $pConfig, Page $page, ACLFormatter $ACLFormatter, SystemMessages $systemMessages, L10n $l10n, BaseURL $baseUrl, Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, array $server, array $parameters = []) { parent::__construct($l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters); @@ -71,6 +73,7 @@ class Compose extends BaseModule $this->config = $config; $this->session = $session; $this->appHelper = $appHelper; + $this->eventDispatcher = $eventDispatcher; } protected function post(array $request = []) @@ -153,8 +156,9 @@ class Compose extends BaseModule $location = $_REQUEST['location'] ?? $user['default-location']; $wall = $_REQUEST['wall'] ?? $type == 'post'; - $jotplugins = ''; - Hook::callAll('jot_tool', $jotplugins); + $jotplugins = $this->eventDispatcher->dispatch( + new HtmlFilterEvent(HtmlFilterEvent::JOT_TOOL, ''), + )->getHtml(); // Output $this->page->registerFooterScript(Theme::getPathForFile('js/ajaxupload.js')); diff --git a/src/Module/Post/Edit.php b/src/Module/Post/Edit.php index c07ba9d78f..76b39389a0 100644 --- a/src/Module/Post/Edit.php +++ b/src/Module/Post/Edit.php @@ -15,10 +15,10 @@ use Friendica\App\Page; use Friendica\AppHelper; use Friendica\BaseModule; use Friendica\Content\Feature; -use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Renderer; use Friendica\Core\Session\Capability\IHandleUserSessions; +use Friendica\Event\HtmlFilterEvent; use Friendica\Model\Contact; use Friendica\Model\Post; use Friendica\Model\User; @@ -27,6 +27,7 @@ use Friendica\Navigation\SystemMessages; use Friendica\Network\HTTPException; use Friendica\Util\Crypto; use Friendica\Util\Profiler; +use Psr\EventDispatcher\EventDispatcherInterface; use Psr\Log\LoggerInterface; /** @@ -44,10 +45,13 @@ class Edit extends BaseModule protected $mode; /** @var AppHelper */ protected $appHelper; + + private EventDispatcherInterface $eventDispatcher; + /** @var bool */ protected $isModal = false; - public function __construct(L10n $l10n, BaseURL $baseUrl, Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, IHandleUserSessions $session, SystemMessages $sysMessages, Page $page, Mode $mode, AppHelper $appHelper, array $server, array $parameters = []) + public function __construct(L10n $l10n, BaseURL $baseUrl, Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, IHandleUserSessions $session, SystemMessages $sysMessages, Page $page, Mode $mode, AppHelper $appHelper, EventDispatcherInterface $eventDispatcher, array $server, array $parameters = []) { parent::__construct($l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters); @@ -56,6 +60,7 @@ class Edit extends BaseModule $this->page = $page; $this->mode = $mode; $this->appHelper = $appHelper; + $this->eventDispatcher = $eventDispatcher; } @@ -109,9 +114,9 @@ class Edit extends BaseModule $item['body'] = Post\Media::addAttachmentsToBody($item['uri-id'], $item['body']); $item = Post\Media::addHTMLAttachmentToItem($item); - $jotplugins = ''; - - Hook::callAll('jot_tool', $jotplugins); + $jotplugins = $this->eventDispatcher->dispatch( + new HtmlFilterEvent(HtmlFilterEvent::JOT_TOOL, ''), + )->getHtml(); $output .= Renderer::replaceMacros(Renderer::getMarkupTemplate('jot.tpl'), [ '$is_edit' => true, diff --git a/tests/Unit/Core/Hooks/HookEventBridgeTest.php b/tests/Unit/Core/Hooks/HookEventBridgeTest.php index 195f0a0d0b..efafdd8395 100644 --- a/tests/Unit/Core/Hooks/HookEventBridgeTest.php +++ b/tests/Unit/Core/Hooks/HookEventBridgeTest.php @@ -42,6 +42,7 @@ class HookEventBridgeTest extends TestCase HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_CONTENT_TOP => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_END => 'onHtmlFilterEvent', + HtmlFilterEvent::JOT_TOOL => 'onHtmlFilterEvent', ]; $this->assertSame( @@ -196,6 +197,7 @@ class HookEventBridgeTest extends TestCase [HtmlFilterEvent::PAGE_HEADER, 'page_header'], [HtmlFilterEvent::PAGE_CONTENT_TOP, 'page_content_top'], [HtmlFilterEvent::PAGE_END, 'page_end'], + [HtmlFilterEvent::JOT_TOOL, 'jot_tool'], ]; }