]> git.mxchange.org Git - friendica.git/commitdiff
Create event for contact_photo_menu hook
authorArt4 <art4@wlabs.de>
Fri, 14 Mar 2025 13:23:21 +0000 (13:23 +0000)
committerArt4 <art4@wlabs.de>
Fri, 14 Mar 2025 13:23:21 +0000 (13:23 +0000)
src/Core/Hooks/HookEventBridge.php
src/Event/ArrayFilterEvent.php
src/Model/Contact.php
tests/Unit/Core/Hooks/HookEventBridgeTest.php
tests/Unit/Event/ArrayFilterEventTest.php

index 6c477dae36f0c79f1e5651f2e2d851e214ebff9f..6f61c58c728787ff4f128f3c15aebde816f99e81 100644 (file)
@@ -52,6 +52,7 @@ final class HookEventBridge
                ArrayFilterEvent::DISPLAY_ITEM                    => 'display_item',
                ArrayFilterEvent::RENDER_LOCATION                 => 'render_location',
                ArrayFilterEvent::ITEM_PHOTO_MENU                 => 'item_photo_menu',
+               ArrayFilterEvent::CONTACT_PHOTO_MENU              => 'contact_photo_menu',
                ArrayFilterEvent::OEMBED_FETCH_END                => 'oembed_fetch_url',
                ArrayFilterEvent::PAGE_INFO                       => 'page_info_data',
                ArrayFilterEvent::SMILEY_LIST                     => 'smilie',
@@ -104,6 +105,7 @@ final class HookEventBridge
                        ArrayFilterEvent::DISPLAY_ITEM                    => 'onArrayFilterEvent',
                        ArrayFilterEvent::RENDER_LOCATION                 => 'onArrayFilterEvent',
                        ArrayFilterEvent::ITEM_PHOTO_MENU                 => 'onArrayFilterEvent',
+                       ArrayFilterEvent::CONTACT_PHOTO_MENU              => 'onArrayFilterEvent',
                        ArrayFilterEvent::OEMBED_FETCH_END                => 'onOembedFetchEndEvent',
                        ArrayFilterEvent::PAGE_INFO                       => 'onArrayFilterEvent',
                        ArrayFilterEvent::SMILEY_LIST                     => 'onArrayFilterEvent',
index f62d7f02c67a5deeccfb751cec7a90c815727a38..056cdec470e27d6d44982f90ee1f7f5e6e4e2dda 100644 (file)
@@ -42,6 +42,8 @@ final class ArrayFilterEvent extends Event
 
        public const ITEM_PHOTO_MENU = 'friendica.data.item_photo_menu';
 
+       public const CONTACT_PHOTO_MENU = 'friendica.data.contact_photo_menu';
+
        public const OEMBED_FETCH_END = 'friendica.data.oembed_fetch_end';
 
        public const PAGE_INFO = 'friendica.data.page_info';
index e94ef46964b37a5ffc7930d00152e3d4e4fecf25..845c8be4eeb38e25c5a9ae664be12a77cb8801e0 100644 (file)
@@ -1312,9 +1312,17 @@ class Contact
                        }
                }
 
-               $args = ['contact' => $contact, 'menu' => &$menu];
+               $args = ['contact' => $contact, 'menu' => $menu];
 
-               Hook::callAll('contact_photo_menu', $args);
+               $eventDispatcher = DI::eventDispatcher();
+
+               $args = $eventDispatcher->dispatch(
+                       new ArrayFilterEvent(ArrayFilterEvent::CONTACT_PHOTO_MENU, $args),
+               )->getArray();
+
+               if (is_array($args['menu'])) {
+                       $menu = $args['menu'];
+               }
 
                $menucondensed = [];
 
index f496467e54a1984be7409565971595bff8caf3b9..949401f364b04c907fd20fb305abe57ee8646eba 100644 (file)
@@ -41,6 +41,7 @@ class HookEventBridgeTest extends TestCase
                        ArrayFilterEvent::DISPLAY_ITEM                    => 'onArrayFilterEvent',
                        ArrayFilterEvent::RENDER_LOCATION                 => 'onArrayFilterEvent',
                        ArrayFilterEvent::ITEM_PHOTO_MENU                 => 'onArrayFilterEvent',
+                       ArrayFilterEvent::CONTACT_PHOTO_MENU              => 'onArrayFilterEvent',
                        ArrayFilterEvent::OEMBED_FETCH_END                => 'onOembedFetchEndEvent',
                        ArrayFilterEvent::PAGE_INFO                       => 'onArrayFilterEvent',
                        ArrayFilterEvent::SMILEY_LIST                     => 'onArrayFilterEvent',
@@ -282,6 +283,7 @@ class HookEventBridgeTest extends TestCase
                        [ArrayFilterEvent::DISPLAY_ITEM, 'display_item'],
                        [ArrayFilterEvent::RENDER_LOCATION, 'render_location'],
                        [ArrayFilterEvent::ITEM_PHOTO_MENU, 'item_photo_menu'],
+                       [ArrayFilterEvent::CONTACT_PHOTO_MENU, 'contact_photo_menu'],
                        [ArrayFilterEvent::PAGE_INFO, 'page_info_data'],
                        [ArrayFilterEvent::SMILEY_LIST, 'smilie'],
                        [ArrayFilterEvent::JOT_NETWORKS, 'jot_networks'],
index e55fa313a66bd6dec7915b5c9e7d63fc535c6c1c..2e539e290e14d094978843b3dc2ddd1ab0e7cd98 100644 (file)
@@ -38,6 +38,7 @@ class ArrayFilterEventTest extends TestCase
                        [ArrayFilterEvent::DISPLAY_ITEM, 'friendica.data.display_item'],
                        [ArrayFilterEvent::RENDER_LOCATION, 'friendica.data.render_location'],
                        [ArrayFilterEvent::ITEM_PHOTO_MENU, 'friendica.data.item_photo_menu'],
+                       [ArrayFilterEvent::CONTACT_PHOTO_MENU, 'friendica.data.contact_photo_menu'],
                        [ArrayFilterEvent::OEMBED_FETCH_END, 'friendica.data.oembed_fetch_end'],
                        [ArrayFilterEvent::PAGE_INFO, 'friendica.data.page_info'],
                        [ArrayFilterEvent::SMILEY_LIST, 'friendica.data.smiley_list'],