]> git.mxchange.org Git - friendica.git/commitdiff
Create event for directory_item hook
authorArt4 <art4@wlabs.de>
Mon, 24 Mar 2025 13:31:53 +0000 (13:31 +0000)
committerArt4 <art4@wlabs.de>
Mon, 24 Mar 2025 13:31:53 +0000 (13:31 +0000)
src/Core/Hooks/HookEventBridge.php
src/Event/ArrayFilterEvent.php
src/Module/Directory.php
tests/Unit/Core/Hooks/HookEventBridgeTest.php
tests/Unit/Event/ArrayFilterEventTest.php

index 3d2d6d62f5ef345f65f208d2d29df7b0196d330f..e208901a82bc3ec19ab6873fc0462c9493b7a62c 100644 (file)
@@ -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',
index 06ada45a223ba27b999034fda1bc70e67542a745..de92599ee353a795e6dcf31f22a0f6154316e3dc 100644 (file)
@@ -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';
index ad95b4952439484f919b7ee0985c7f7783e5066c..d63bbc13e3cbef4731b7aa438259edd196f35bb7 100644 (file)
@@ -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;
        }
 }
index 874fc9b25e1a93c563459aa0fdee2ad66db90b7b..69e37c0b9c8a5a5a516df29694f462b21107e78e 100644 (file)
@@ -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'],
index ea495110c33c841fc4448eec143461cec3e9b285..881deacd434b6e8a2cdaf9b277079abff2407844 100644 (file)
@@ -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'],