From 0b3915322b9f5f84c9392616566c78753b42d091 Mon Sep 17 00:00:00 2001 From: Art4 Date: Fri, 14 Feb 2025 12:26:50 +0000 Subject: [PATCH] Create event for page_info_data hook --- src/Content/PageInfo.php | 8 ++++++-- src/Core/Hooks/HookEventBridge.php | 2 ++ src/Event/ArrayFilterEvent.php | 2 ++ tests/Unit/Core/Hooks/HookEventBridgeTest.php | 2 ++ tests/Unit/Event/ArrayFilterEventTest.php | 1 + 5 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/Content/PageInfo.php b/src/Content/PageInfo.php index 93d2e46750..4d2a1180d3 100644 --- a/src/Content/PageInfo.php +++ b/src/Content/PageInfo.php @@ -7,8 +7,8 @@ namespace Friendica\Content; -use Friendica\Core\Hook; use Friendica\DI; +use Friendica\Event\ArrayFilterEvent; use Friendica\Network\HTTPException; use Friendica\Util\ParseUrl; use Friendica\Util\Strings; @@ -90,7 +90,11 @@ class PageInfo */ public static function getFooterFromData(array $data, bool $no_photos = false): string { - Hook::callAll('page_info_data', $data); + $eventDispatcher = DI::eventDispatcher(); + + $data = $eventDispatcher->dispatch( + new ArrayFilterEvent(ArrayFilterEvent::PAGE_INFO, $data), + )->getArray(); if (empty($data['type'])) { return ''; diff --git a/src/Core/Hooks/HookEventBridge.php b/src/Core/Hooks/HookEventBridge.php index 031b92834b..1479e41d54 100644 --- a/src/Core/Hooks/HookEventBridge.php +++ b/src/Core/Hooks/HookEventBridge.php @@ -53,6 +53,7 @@ final class HookEventBridge ArrayFilterEvent::RENDER_LOCATION => 'render_location', ArrayFilterEvent::ITEM_PHOTO_MENU => 'item_photo_menu', ArrayFilterEvent::OEMBED_FETCH_END => 'oembed_fetch_url', + ArrayFilterEvent::PAGE_INFO => 'page_info_data', HtmlFilterEvent::HEAD => 'head', HtmlFilterEvent::FOOTER => 'footer', HtmlFilterEvent::PAGE_HEADER => 'page_header', @@ -85,6 +86,7 @@ final class HookEventBridge ArrayFilterEvent::RENDER_LOCATION => 'onArrayFilterEvent', ArrayFilterEvent::ITEM_PHOTO_MENU => 'onArrayFilterEvent', ArrayFilterEvent::OEMBED_FETCH_END => 'onOembedFetchEndEvent', + ArrayFilterEvent::PAGE_INFO => 'onArrayFilterEvent', HtmlFilterEvent::HEAD => 'onHtmlFilterEvent', HtmlFilterEvent::FOOTER => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent', diff --git a/src/Event/ArrayFilterEvent.php b/src/Event/ArrayFilterEvent.php index 47beddc866..41158c7eb3 100644 --- a/src/Event/ArrayFilterEvent.php +++ b/src/Event/ArrayFilterEvent.php @@ -44,6 +44,8 @@ final class ArrayFilterEvent extends Event public const OEMBED_FETCH_END = 'friendica.data.oembed_fetch_end'; + public const PAGE_INFO = 'friendica.data.page_info'; + private array $array; public function __construct(string $name, array $array) diff --git a/tests/Unit/Core/Hooks/HookEventBridgeTest.php b/tests/Unit/Core/Hooks/HookEventBridgeTest.php index 44b727cf71..d6d7801f13 100644 --- a/tests/Unit/Core/Hooks/HookEventBridgeTest.php +++ b/tests/Unit/Core/Hooks/HookEventBridgeTest.php @@ -42,6 +42,7 @@ class HookEventBridgeTest extends TestCase ArrayFilterEvent::RENDER_LOCATION => 'onArrayFilterEvent', ArrayFilterEvent::ITEM_PHOTO_MENU => 'onArrayFilterEvent', ArrayFilterEvent::OEMBED_FETCH_END => 'onOembedFetchEndEvent', + ArrayFilterEvent::PAGE_INFO => 'onArrayFilterEvent', HtmlFilterEvent::HEAD => 'onHtmlFilterEvent', HtmlFilterEvent::FOOTER => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent', @@ -196,6 +197,7 @@ class HookEventBridgeTest extends TestCase [ArrayFilterEvent::DISPLAY_ITEM, 'display_item'], [ArrayFilterEvent::RENDER_LOCATION, 'render_location'], [ArrayFilterEvent::ITEM_PHOTO_MENU, 'item_photo_menu'], + [ArrayFilterEvent::PAGE_INFO, 'page_info_data'], ]; } diff --git a/tests/Unit/Event/ArrayFilterEventTest.php b/tests/Unit/Event/ArrayFilterEventTest.php index 26ff604170..00e47f4b61 100644 --- a/tests/Unit/Event/ArrayFilterEventTest.php +++ b/tests/Unit/Event/ArrayFilterEventTest.php @@ -39,6 +39,7 @@ class ArrayFilterEventTest extends TestCase [ArrayFilterEvent::RENDER_LOCATION, 'friendica.data.render_location'], [ArrayFilterEvent::ITEM_PHOTO_MENU, 'friendica.data.item_photo_menu'], [ArrayFilterEvent::OEMBED_FETCH_END, 'friendica.data.oembed_fetch_end'], + [ArrayFilterEvent::PAGE_INFO, 'friendica.data.page_info'], ]; }