From b3ef18bed71947be84bfe58a5604291b60139b5b Mon Sep 17 00:00:00 2001 From: Art4 Date: Fri, 14 Feb 2025 10:19:55 +0000 Subject: [PATCH] create event for render_location hook --- src/Content/Conversation.php | 7 +++++-- src/Core/Hooks/HookEventBridge.php | 2 ++ src/Event/ArrayFilterEvent.php | 2 ++ src/Object/Post.php | 11 +++++++---- tests/Unit/Core/Hooks/HookEventBridgeTest.php | 2 ++ 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/Content/Conversation.php b/src/Content/Conversation.php index ec275af06a..722aaf27b5 100644 --- a/src/Content/Conversation.php +++ b/src/Content/Conversation.php @@ -14,7 +14,6 @@ use Friendica\App\Page; use Friendica\BaseModule; 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\Protocol; @@ -1472,7 +1471,11 @@ class Conversation } $locate = ['location' => $item['location'], 'coord' => $item['coord'], 'html' => '']; - Hook::callAll('render_location', $locate); + + $locate = $this->eventDispatcher->dispatch( + new ArrayFilterEvent(ArrayFilterEvent::RENDER_LOCATION, $locate), + )->getArray(); + $location_html = $locate['html'] ?: Strings::escapeHtml($locate['location'] ?: $locate['coord'] ?: ''); $this->item->localize($item); diff --git a/src/Core/Hooks/HookEventBridge.php b/src/Core/Hooks/HookEventBridge.php index 50f8945b47..99290480b7 100644 --- a/src/Core/Hooks/HookEventBridge.php +++ b/src/Core/Hooks/HookEventBridge.php @@ -50,6 +50,7 @@ final class HookEventBridge ArrayFilterEvent::NETWORK_TO_NAME => 'network_to_name', ArrayFilterEvent::CONVERSATION_START => 'conversation_start', ArrayFilterEvent::DISPLAY_ITEM => 'display_item', + ArrayFilterEvent::RENDER_LOCATION => 'render_location', HtmlFilterEvent::HEAD => 'head', HtmlFilterEvent::FOOTER => 'footer', HtmlFilterEvent::PAGE_HEADER => 'page_header', @@ -79,6 +80,7 @@ final class HookEventBridge ArrayFilterEvent::NETWORK_TO_NAME => 'onArrayFilterEvent', ArrayFilterEvent::CONVERSATION_START => 'onArrayFilterEvent', ArrayFilterEvent::DISPLAY_ITEM => 'onArrayFilterEvent', + ArrayFilterEvent::RENDER_LOCATION => 'onArrayFilterEvent', HtmlFilterEvent::HEAD => 'onHtmlFilterEvent', HtmlFilterEvent::FOOTER => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent', diff --git a/src/Event/ArrayFilterEvent.php b/src/Event/ArrayFilterEvent.php index 75f1eb8620..4b9ed3ce3e 100644 --- a/src/Event/ArrayFilterEvent.php +++ b/src/Event/ArrayFilterEvent.php @@ -38,6 +38,8 @@ final class ArrayFilterEvent extends Event public const DISPLAY_ITEM = 'friendica.data.display_item'; + public const RENDER_LOCATION = 'friendica.data.render_location'; + private array $array; public function __construct(string $name, array $array) diff --git a/src/Object/Post.php b/src/Object/Post.php index 769d74576c..d4b381a115 100644 --- a/src/Object/Post.php +++ b/src/Object/Post.php @@ -10,7 +10,6 @@ namespace Friendica\Object; use Friendica\Content\ContactSelector; use Friendica\Content\Feature; use Friendica\Core\Addon; -use Friendica\Core\Hook; use Friendica\Core\Protocol; use Friendica\Core\Renderer; use Friendica\DI; @@ -315,8 +314,14 @@ class Post $sparkle = ' sparkle'; } + $eventDispatcher = DI::eventDispatcher(); + $locate = ['location' => $item['location'], 'coord' => $item['coord'], 'html' => '']; - Hook::callAll('render_location', $locate); + + $locate = $eventDispatcher->dispatch( + new ArrayFilterEvent(ArrayFilterEvent::RENDER_LOCATION, $locate), + )->getArray(); + $location_html = $locate['html'] ?: Strings::escapeHtml($locate['location'] ?: $locate['coord'] ?: ''); // process action responses - e.g. like/dislike/attend/agree/whatever @@ -631,8 +636,6 @@ class Post ], ]; - $eventDispatcher = DI::eventDispatcher(); - $arr = ['item' => $item, 'output' => $tmp_item]; $arr = $eventDispatcher->dispatch( diff --git a/tests/Unit/Core/Hooks/HookEventBridgeTest.php b/tests/Unit/Core/Hooks/HookEventBridgeTest.php index eed89c343a..de2b43f15c 100644 --- a/tests/Unit/Core/Hooks/HookEventBridgeTest.php +++ b/tests/Unit/Core/Hooks/HookEventBridgeTest.php @@ -39,6 +39,7 @@ class HookEventBridgeTest extends TestCase ArrayFilterEvent::NETWORK_TO_NAME => 'onArrayFilterEvent', ArrayFilterEvent::CONVERSATION_START => 'onArrayFilterEvent', ArrayFilterEvent::DISPLAY_ITEM => 'onArrayFilterEvent', + ArrayFilterEvent::RENDER_LOCATION => 'onArrayFilterEvent', HtmlFilterEvent::HEAD => 'onHtmlFilterEvent', HtmlFilterEvent::FOOTER => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent', @@ -169,6 +170,7 @@ class HookEventBridgeTest extends TestCase [ArrayFilterEvent::NETWORK_TO_NAME, 'network_to_name'], [ArrayFilterEvent::CONVERSATION_START, 'conversation_start'], [ArrayFilterEvent::DISPLAY_ITEM, 'display_item'], + [ArrayFilterEvent::RENDER_LOCATION, 'render_location'], ]; }