From 2a7ebc860c5640aaea8b9d8e52affad3f85ce858 Mon Sep 17 00:00:00 2001 From: Art4 Date: Wed, 9 Apr 2025 14:25:00 +0000 Subject: [PATCH] Create event for moderation_users_tabs hook --- src/Core/Hooks/HookEventBridge.php | 2 ++ src/Event/ArrayFilterEvent.php | 2 ++ src/Module/Moderation/BaseUsers.php | 20 ++++++++++++++++--- tests/Unit/Core/Hooks/HookEventBridgeTest.php | 2 ++ tests/Unit/Event/ArrayFilterEventTest.php | 1 + 5 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/Core/Hooks/HookEventBridge.php b/src/Core/Hooks/HookEventBridge.php index 72204ab11e..6dc6aeb667 100644 --- a/src/Core/Hooks/HookEventBridge.php +++ b/src/Core/Hooks/HookEventBridge.php @@ -71,6 +71,7 @@ final class HookEventBridge ArrayFilterEvent::PROFILE_SIDEBAR_ENTRY => 'profile_sidebar_enter', ArrayFilterEvent::PROFILE_SIDEBAR => 'profile_sidebar', ArrayFilterEvent::PROFILE_TABS => 'profile_tabs', + ArrayFilterEvent::MODERATION_USERS_TABS => 'moderation_users_tabs', ArrayFilterEvent::OEMBED_FETCH_END => 'oembed_fetch_url', ArrayFilterEvent::PAGE_INFO => 'page_info_data', ArrayFilterEvent::SMILEY_LIST => 'smilie', @@ -154,6 +155,7 @@ final class HookEventBridge ArrayFilterEvent::PROFILE_SIDEBAR_ENTRY => 'onProfileSidebarEntryEvent', ArrayFilterEvent::PROFILE_SIDEBAR => 'onArrayFilterEvent', ArrayFilterEvent::PROFILE_TABS => 'onArrayFilterEvent', + ArrayFilterEvent::MODERATION_USERS_TABS => 'onArrayFilterEvent', ArrayFilterEvent::OEMBED_FETCH_END => 'onOembedFetchEndEvent', ArrayFilterEvent::PAGE_INFO => 'onArrayFilterEvent', ArrayFilterEvent::SMILEY_LIST => 'onArrayFilterEvent', diff --git a/src/Event/ArrayFilterEvent.php b/src/Event/ArrayFilterEvent.php index 01a9a90675..cb14052bb2 100644 --- a/src/Event/ArrayFilterEvent.php +++ b/src/Event/ArrayFilterEvent.php @@ -92,6 +92,8 @@ final class ArrayFilterEvent extends Event public const PROFILE_TABS = 'friendica.data.profile_tabs'; + public const MODERATION_USERS_TABS = 'friendica.data.moderation_users_tabs'; + public const OEMBED_FETCH_END = 'friendica.data.oembed_fetch_end'; public const PAGE_INFO = 'friendica.data.page_info'; diff --git a/src/Module/Moderation/BaseUsers.php b/src/Module/Moderation/BaseUsers.php index fcf4b4aa16..6f9e4a800d 100644 --- a/src/Module/Moderation/BaseUsers.php +++ b/src/Module/Moderation/BaseUsers.php @@ -16,6 +16,8 @@ use Friendica\Core\L10n; use Friendica\Core\Renderer; use Friendica\Core\Session\Capability\IHandleUserSessions; use Friendica\Database\Database; +use Friendica\DI; +use Friendica\Event\ArrayFilterEvent; use Friendica\Model\Register; use Friendica\Model\User; use Friendica\Module\BaseModeration; @@ -95,11 +97,23 @@ abstract class BaseUsers extends BaseModeration 'accesskey' => 'd', ], ]; - $tabs_arr = ['tabs' => $tabs, 'selectedTab' => $selectedTab]; - Hook::callAll('moderation_users_tabs', $tabs_arr); + + $hook_data = [ + 'tabs' => $tabs, + 'selectedTab' => $selectedTab, + ]; + + $eventDispatcher = DI::eventDispatcher(); + + $hook_data = $eventDispatcher->dispatch( + new ArrayFilterEvent(ArrayFilterEvent::MODERATION_USERS_TABS, $hook_data), + )->getArray(); + + $tabs = $hook_data['tabs'] ?? $tabs; $tpl = Renderer::getMarkupTemplate('common_tabs.tpl'); - return Renderer::replaceMacros($tpl, ['$tabs' => $tabs_arr['tabs'], '$more' => $this->t('More')]); + + return Renderer::replaceMacros($tpl, ['$tabs' => $tabs, '$more' => $this->t('More')]); } protected function setupUserCallback(): \Closure diff --git a/tests/Unit/Core/Hooks/HookEventBridgeTest.php b/tests/Unit/Core/Hooks/HookEventBridgeTest.php index 7b97e76a02..ae98a2fc0e 100644 --- a/tests/Unit/Core/Hooks/HookEventBridgeTest.php +++ b/tests/Unit/Core/Hooks/HookEventBridgeTest.php @@ -60,6 +60,7 @@ class HookEventBridgeTest extends TestCase ArrayFilterEvent::PROFILE_SIDEBAR_ENTRY => 'onProfileSidebarEntryEvent', ArrayFilterEvent::PROFILE_SIDEBAR => 'onArrayFilterEvent', ArrayFilterEvent::PROFILE_TABS => 'onArrayFilterEvent', + ArrayFilterEvent::MODERATION_USERS_TABS => 'onArrayFilterEvent', ArrayFilterEvent::OEMBED_FETCH_END => 'onOembedFetchEndEvent', ArrayFilterEvent::PAGE_INFO => 'onArrayFilterEvent', ArrayFilterEvent::SMILEY_LIST => 'onArrayFilterEvent', @@ -483,6 +484,7 @@ class HookEventBridgeTest extends TestCase [ArrayFilterEvent::CONTACT_PHOTO_MENU, 'contact_photo_menu'], [ArrayFilterEvent::PROFILE_SIDEBAR, 'profile_sidebar'], [ArrayFilterEvent::PROFILE_TABS, 'profile_tabs'], + [ArrayFilterEvent::MODERATION_USERS_TABS, 'moderation_users_tabs'], [ArrayFilterEvent::PAGE_INFO, 'page_info_data'], [ArrayFilterEvent::SMILEY_LIST, 'smilie'], [ArrayFilterEvent::JOT_NETWORKS, 'jot_networks'], diff --git a/tests/Unit/Event/ArrayFilterEventTest.php b/tests/Unit/Event/ArrayFilterEventTest.php index 4e1a800435..4f20c37543 100644 --- a/tests/Unit/Event/ArrayFilterEventTest.php +++ b/tests/Unit/Event/ArrayFilterEventTest.php @@ -57,6 +57,7 @@ class ArrayFilterEventTest extends TestCase [ArrayFilterEvent::PROFILE_SIDEBAR_ENTRY, 'friendica.data.profile_sidebar_entry'], [ArrayFilterEvent::PROFILE_SIDEBAR, 'friendica.data.profile_sidebar'], [ArrayFilterEvent::PROFILE_TABS, 'friendica.data.profile_tabs'], + [ArrayFilterEvent::MODERATION_USERS_TABS, 'friendica.data.moderation_users_tabs'], [ArrayFilterEvent::OEMBED_FETCH_END, 'friendica.data.oembed_fetch_end'], [ArrayFilterEvent::PAGE_INFO, 'friendica.data.page_info'], [ArrayFilterEvent::SMILEY_LIST, 'friendica.data.smiley_list'],