From a9f02bfef5453e0005a63f490a7f81a677883e4c Mon Sep 17 00:00:00 2001 From: Art4 Date: Tue, 25 Mar 2025 12:26:40 +0000 Subject: [PATCH] Create event for about_hook hook --- src/Core/Hooks/HookEventBridge.php | 2 ++ src/Event/HtmlFilterEvent.php | 2 ++ src/Module/Friendica.php | 26 ++++++++++++++++--- tests/Unit/Core/Hooks/HookEventBridgeTest.php | 2 ++ tests/Unit/Event/HtmlFilterEventTest.php | 4 +++ 5 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/Core/Hooks/HookEventBridge.php b/src/Core/Hooks/HookEventBridge.php index e208901a82..24d15606ea 100644 --- a/src/Core/Hooks/HookEventBridge.php +++ b/src/Core/Hooks/HookEventBridge.php @@ -99,6 +99,7 @@ final class HookEventBridge HtmlFilterEvent::PAGE_HEADER => 'page_header', HtmlFilterEvent::PAGE_CONTENT_TOP => 'page_content_top', HtmlFilterEvent::PAGE_END => 'page_end', + HtmlFilterEvent::ABOUT_CONTENT => 'about_hook', HtmlFilterEvent::JOT_TOOL => 'jot_tool', HtmlFilterEvent::CONTACT_BLOCK_END => 'contact_block_end', ]; @@ -173,6 +174,7 @@ final class HookEventBridge HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_CONTENT_TOP => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_END => 'onHtmlFilterEvent', + HtmlFilterEvent::ABOUT_CONTENT => 'onHtmlFilterEvent', HtmlFilterEvent::JOT_TOOL => 'onHtmlFilterEvent', HtmlFilterEvent::CONTACT_BLOCK_END => 'onHtmlFilterEvent', ]; diff --git a/src/Event/HtmlFilterEvent.php b/src/Event/HtmlFilterEvent.php index cb8a3992df..2f68d864bf 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 ABOUT_CONTENT = 'friendica.html.about_content'; + public const JOT_TOOL = 'friendica.html.jot_tool'; public const CONTACT_BLOCK_END = 'friendica.html.contact_block_end'; diff --git a/src/Module/Friendica.php b/src/Module/Friendica.php index 1a741b890c..0ace0707dd 100644 --- a/src/Module/Friendica.php +++ b/src/Module/Friendica.php @@ -13,16 +13,17 @@ use Friendica\App\BaseURL; use Friendica\BaseModule; use Friendica\Core\Addon\AddonHelper; use Friendica\Core\Config\Capability\IManageConfigValues; -use Friendica\Core\Hook; use Friendica\Core\KeyValueStorage\Capability\IManageKeyValuePairs; use Friendica\Core\L10n; use Friendica\Core\Renderer; use Friendica\Core\Session\Capability\IHandleUserSessions; use Friendica\Database\PostUpdate; +use Friendica\Event\HtmlFilterEvent; use Friendica\Model\User; use Friendica\Network\HTTPException; use Friendica\Protocol\ActivityPub; use Friendica\Util\Profiler; +use Psr\EventDispatcher\EventDispatcherInterface; use Psr\Log\LoggerInterface; /** @@ -32,6 +33,7 @@ use Psr\Log\LoggerInterface; class Friendica extends BaseModule { private AddonHelper $addonHelper; + private EventDispatcherInterface $eventDispatcher; /** @var IManageConfigValues */ private $config; /** @var IManageKeyValuePairs */ @@ -39,13 +41,27 @@ class Friendica extends BaseModule /** @var IHandleUserSessions */ private $session; - public function __construct(AddonHelper $addonHelper, IHandleUserSessions $session, IManageKeyValuePairs $keyValue, IManageConfigValues $config, L10n $l10n, BaseURL $baseUrl, Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, array $server, array $parameters = []) - { + public function __construct( + AddonHelper $addonHelper, + EventDispatcherInterface $eventDispatcher, + IHandleUserSessions $session, + IManageKeyValuePairs $keyValue, + IManageConfigValues $config, + 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); $this->config = $config; $this->keyValue = $keyValue; $this->session = $session; + $this->eventDispatcher = $eventDispatcher; $this->addonHelper = $addonHelper; } @@ -99,7 +115,9 @@ class Friendica extends BaseModule $hooked = ''; - Hook::callAll('about_hook', $hooked); + $hooked = $this->eventDispatcher->dispatch( + new HtmlFilterEvent(HtmlFilterEvent::ABOUT_CONTENT, $hooked), + )->getHtml(); $tpl = Renderer::getMarkupTemplate('friendica.tpl'); diff --git a/tests/Unit/Core/Hooks/HookEventBridgeTest.php b/tests/Unit/Core/Hooks/HookEventBridgeTest.php index 69e37c0b9c..ab6f5e2cf0 100644 --- a/tests/Unit/Core/Hooks/HookEventBridgeTest.php +++ b/tests/Unit/Core/Hooks/HookEventBridgeTest.php @@ -88,6 +88,7 @@ class HookEventBridgeTest extends TestCase HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_CONTENT_TOP => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_END => 'onHtmlFilterEvent', + HtmlFilterEvent::ABOUT_CONTENT => 'onHtmlFilterEvent', HtmlFilterEvent::JOT_TOOL => 'onHtmlFilterEvent', HtmlFilterEvent::CONTACT_BLOCK_END => 'onHtmlFilterEvent', ]; @@ -525,6 +526,7 @@ class HookEventBridgeTest extends TestCase [HtmlFilterEvent::PAGE_HEADER, 'page_header'], [HtmlFilterEvent::PAGE_CONTENT_TOP, 'page_content_top'], [HtmlFilterEvent::PAGE_END, 'page_end'], + [HtmlFilterEvent::ABOUT_CONTENT, 'about_hook'], [HtmlFilterEvent::JOT_TOOL, 'jot_tool'], [HtmlFilterEvent::CONTACT_BLOCK_END, 'contact_block_end'], ]; diff --git a/tests/Unit/Event/HtmlFilterEventTest.php b/tests/Unit/Event/HtmlFilterEventTest.php index ae1d27a5ad..9d38cf097a 100644 --- a/tests/Unit/Event/HtmlFilterEventTest.php +++ b/tests/Unit/Event/HtmlFilterEventTest.php @@ -27,8 +27,12 @@ class HtmlFilterEventTest extends TestCase return [ [HtmlFilterEvent::HEAD, 'friendica.html.head'], [HtmlFilterEvent::FOOTER, 'friendica.html.footer'], + [HtmlFilterEvent::PAGE_HEADER, 'friendica.html.page_header'], [HtmlFilterEvent::PAGE_CONTENT_TOP, 'friendica.html.page_content_top'], [HtmlFilterEvent::PAGE_END, 'friendica.html.page_end'], + [HtmlFilterEvent::ABOUT_CONTENT, 'friendica.html.about_content'], + [HtmlFilterEvent::JOT_TOOL, 'friendica.html.jot_tool'], + [HtmlFilterEvent::CONTACT_BLOCK_END, 'friendica.html.contact_block_end'], ]; }