diff --git a/src/Core/Hooks/HookEventBridge.php b/src/Core/Hooks/HookEventBridge.php index 3d2d6d62f5..e208901a82 100644 --- a/src/Core/Hooks/HookEventBridge.php +++ b/src/Core/Hooks/HookEventBridge.php @@ -63,6 +63,7 @@ final class HookEventBridge ArrayFilterEvent::DETECT_LANGUAGES => 'detect_languages', ArrayFilterEvent::RENDER_LOCATION => 'render_location', ArrayFilterEvent::ITEM_PHOTO_MENU => 'item_photo_menu', + ArrayFilterEvent::DIRECTORY_ITEM => 'directory_item', ArrayFilterEvent::CONTACT_PHOTO_MENU => 'contact_photo_menu', ArrayFilterEvent::PROFILE_SIDEBAR_ENTRY => 'profile_sidebar_enter', ArrayFilterEvent::PROFILE_SIDEBAR => 'profile_sidebar', @@ -136,6 +137,7 @@ final class HookEventBridge ArrayFilterEvent::DETECT_LANGUAGES => 'onArrayFilterEvent', ArrayFilterEvent::RENDER_LOCATION => 'onArrayFilterEvent', ArrayFilterEvent::ITEM_PHOTO_MENU => 'onArrayFilterEvent', + ArrayFilterEvent::DIRECTORY_ITEM => 'onArrayFilterEvent', ArrayFilterEvent::CONTACT_PHOTO_MENU => 'onArrayFilterEvent', ArrayFilterEvent::PROFILE_SIDEBAR_ENTRY => 'onProfileSidebarEntryEvent', ArrayFilterEvent::PROFILE_SIDEBAR => 'onArrayFilterEvent', diff --git a/src/Event/ArrayFilterEvent.php b/src/Event/ArrayFilterEvent.php index 06ada45a22..de92599ee3 100644 --- a/src/Event/ArrayFilterEvent.php +++ b/src/Event/ArrayFilterEvent.php @@ -76,6 +76,8 @@ final class ArrayFilterEvent extends Event public const ITEM_PHOTO_MENU = 'friendica.data.item_photo_menu'; + public const DIRECTORY_ITEM = 'friendica.data.directory_item'; + public const CONTACT_PHOTO_MENU = 'friendica.data.contact_photo_menu'; public const PROFILE_SIDEBAR_ENTRY = 'friendica.data.profile_sidebar_entry'; diff --git a/src/Module/Directory.php b/src/Module/Directory.php index ad95b49524..d63bbc13e3 100644 --- a/src/Module/Directory.php +++ b/src/Module/Directory.php @@ -15,6 +15,7 @@ use Friendica\Core\Hook; use Friendica\Core\Renderer; use Friendica\Core\Search; use Friendica\DI; +use Friendica\Event\ArrayFilterEvent; use Friendica\Model; use Friendica\Model\Profile; use Friendica\Network\HTTPException; @@ -161,13 +162,22 @@ class Directory extends BaseModule ]; - $hook = ['contact' => $contact, 'entry' => $entry]; + $eventDispatcher = DI::eventDispatcher(); - Hook::callAll('directory_item', $hook); + $hook_data = [ + 'contact' => $contact, + 'entry' => $entry, + ]; + + $hook_data = $eventDispatcher->dispatch( + new ArrayFilterEvent(ArrayFilterEvent::DIRECTORY_ITEM, $hook_data), + )->getArray(); + + $entry = $hook_data['entry'] ?? $entry; unset($profile); unset($location); - return $hook['entry']; + return $entry; } } diff --git a/tests/Unit/Core/Hooks/HookEventBridgeTest.php b/tests/Unit/Core/Hooks/HookEventBridgeTest.php index 874fc9b25e..69e37c0b9c 100644 --- a/tests/Unit/Core/Hooks/HookEventBridgeTest.php +++ b/tests/Unit/Core/Hooks/HookEventBridgeTest.php @@ -52,6 +52,7 @@ class HookEventBridgeTest extends TestCase ArrayFilterEvent::DETECT_LANGUAGES => 'onArrayFilterEvent', ArrayFilterEvent::RENDER_LOCATION => 'onArrayFilterEvent', ArrayFilterEvent::ITEM_PHOTO_MENU => 'onArrayFilterEvent', + ArrayFilterEvent::DIRECTORY_ITEM => 'onArrayFilterEvent', ArrayFilterEvent::CONTACT_PHOTO_MENU => 'onArrayFilterEvent', ArrayFilterEvent::PROFILE_SIDEBAR_ENTRY => 'onProfileSidebarEntryEvent', ArrayFilterEvent::PROFILE_SIDEBAR => 'onArrayFilterEvent', @@ -466,6 +467,7 @@ class HookEventBridgeTest extends TestCase [ArrayFilterEvent::DETECT_LANGUAGES, 'detect_languages'], [ArrayFilterEvent::RENDER_LOCATION, 'render_location'], [ArrayFilterEvent::ITEM_PHOTO_MENU, 'item_photo_menu'], + [ArrayFilterEvent::DIRECTORY_ITEM, 'directory_item'], [ArrayFilterEvent::CONTACT_PHOTO_MENU, 'contact_photo_menu'], [ArrayFilterEvent::PROFILE_SIDEBAR, 'profile_sidebar'], [ArrayFilterEvent::PROFILE_TABS, 'profile_tabs'], diff --git a/tests/Unit/Event/ArrayFilterEventTest.php b/tests/Unit/Event/ArrayFilterEventTest.php index ea495110c3..881deacd43 100644 --- a/tests/Unit/Event/ArrayFilterEventTest.php +++ b/tests/Unit/Event/ArrayFilterEventTest.php @@ -49,6 +49,7 @@ class ArrayFilterEventTest extends TestCase [ArrayFilterEvent::DETECT_LANGUAGES, 'friendica.data.detect_languages'], [ArrayFilterEvent::RENDER_LOCATION, 'friendica.data.render_location'], [ArrayFilterEvent::ITEM_PHOTO_MENU, 'friendica.data.item_photo_menu'], + [ArrayFilterEvent::DIRECTORY_ITEM, 'friendica.data.directory_item'], [ArrayFilterEvent::CONTACT_PHOTO_MENU, 'friendica.data.contact_photo_menu'], [ArrayFilterEvent::PROFILE_SIDEBAR_ENTRY, 'friendica.data.profile_sidebar_entry'], [ArrayFilterEvent::PROFILE_SIDEBAR, 'friendica.data.profile_sidebar'],