]> git.mxchange.org Git - friendica.git/commitdiff
Create event for item_by_link hook
authorArt4 <art4@wlabs.de>
Mon, 17 Mar 2025 10:52:37 +0000 (10:52 +0000)
committerArt4 <art4@wlabs.de>
Mon, 17 Mar 2025 10:52:37 +0000 (10:52 +0000)
src/Core/Hooks/HookEventBridge.php
src/Event/ArrayFilterEvent.php
src/Model/Item.php
tests/Unit/Core/Hooks/HookEventBridgeTest.php
tests/Unit/Event/ArrayFilterEventTest.php

index f59a267230fb229788e6fe6d11b199027f996d02..83a075c7d531498469436a015848a46273ed2b1e 100644 (file)
@@ -55,6 +55,7 @@ final class HookEventBridge
                ArrayFilterEvent::PHOTO_UPLOAD_FORM               => 'photo_upload_form',
                ArrayFilterEvent::NETWORK_TO_NAME                 => 'network_to_name',
                ArrayFilterEvent::CONVERSATION_START              => 'conversation_start',
+               ArrayFilterEvent::FETCH_ITEM_BY_LINK              => 'item_by_link',
                ArrayFilterEvent::ITEM_TAGGED                     => 'tagged',
                ArrayFilterEvent::DISPLAY_ITEM                    => 'display_item',
                ArrayFilterEvent::CACHE_ITEM                      => 'put_item_in_cache',
@@ -120,6 +121,7 @@ final class HookEventBridge
                        ArrayFilterEvent::PHOTO_UPLOAD_FORM               => 'onArrayFilterEvent',
                        ArrayFilterEvent::NETWORK_TO_NAME                 => 'onArrayFilterEvent',
                        ArrayFilterEvent::CONVERSATION_START              => 'onArrayFilterEvent',
+                       ArrayFilterEvent::FETCH_ITEM_BY_LINK              => 'onArrayFilterEvent',
                        ArrayFilterEvent::ITEM_TAGGED                     => 'onArrayFilterEvent',
                        ArrayFilterEvent::DISPLAY_ITEM                    => 'onArrayFilterEvent',
                        ArrayFilterEvent::CACHE_ITEM                      => 'onArrayFilterEvent',
index db57babfdab4dd3da7f60201804dc106aad0fa19..ee36b2d983f59768f0b7b9dcf14a13f7a8d7721f 100644 (file)
@@ -60,6 +60,8 @@ final class ArrayFilterEvent extends Event
 
        public const CONVERSATION_START = 'friendica.data.conversation_start';
 
+       public const FETCH_ITEM_BY_LINK = 'friendica.data.fetch_item_by_link';
+
        public const ITEM_TAGGED = 'friendica.data.item_tagged';
 
        public const DISPLAY_ITEM = 'friendica.data.display_item';
index d93ab1768da7c293e27a7ca157b4393e11f5ec6a..3edd6950e7f0828c7e5384db46657b05afa50047 100644 (file)
@@ -14,7 +14,6 @@ use Friendica\Content\Post\Collection\PostMedias;
 use Friendica\Content\Post\Entity\PostMedia;
 use Friendica\Content\Text\BBCode;
 use Friendica\Content\Text\HTML;
-use Friendica\Core\Hook;
 use Friendica\Core\L10n;
 use Friendica\Core\Protocol;
 use Friendica\Core\Renderer;
@@ -3951,17 +3950,21 @@ class Item
                        return 0;
                }
 
-               $hookData = [
+               $eventDispatcher = DI::eventDispatcher();
+
+               $hook_data = [
                        'uri'     => $uri,
                        'uid'     => $uid,
                        'item_id' => null,
                ];
 
-               Hook::callAll('item_by_link', $hookData);
+               $hook_data = $eventDispatcher->dispatch(
+                       new ArrayFilterEvent(ArrayFilterEvent::FETCH_ITEM_BY_LINK, $hook_data)
+               )->getArray();
 
-               if (isset($hookData['item_id'])) {
-                       DI::logger()->info('Hook link fetched', ['uid' => $uid, 'uri' => $uri, 'id' => $hookData['item_id']]);
-                       return is_numeric($hookData['item_id']) ? $hookData['item_id'] : 0;
+               if (isset($hook_data['item_id'])) {
+                       DI::logger()->info('Hook link fetched', ['uid' => $uid, 'uri' => $uri, 'id' => $hook_data['item_id']]);
+                       return is_numeric($hook_data['item_id']) ? $hook_data['item_id'] : 0;
                }
 
                if (!$mimetype) {
index 0e4afb2448a282c13479d7df0ba68b526bb67a03..c6b7ac7a5cde0d527902d4529785494640b2b43c 100644 (file)
@@ -44,6 +44,7 @@ class HookEventBridgeTest extends TestCase
                        ArrayFilterEvent::PHOTO_UPLOAD_FORM               => 'onArrayFilterEvent',
                        ArrayFilterEvent::NETWORK_TO_NAME                 => 'onArrayFilterEvent',
                        ArrayFilterEvent::CONVERSATION_START              => 'onArrayFilterEvent',
+                       ArrayFilterEvent::FETCH_ITEM_BY_LINK              => 'onArrayFilterEvent',
                        ArrayFilterEvent::ITEM_TAGGED                     => 'onArrayFilterEvent',
                        ArrayFilterEvent::DISPLAY_ITEM                    => 'onArrayFilterEvent',
                        ArrayFilterEvent::CACHE_ITEM                      => 'onArrayFilterEvent',
@@ -353,6 +354,7 @@ class HookEventBridgeTest extends TestCase
                        [ArrayFilterEvent::PHOTO_UPLOAD_FORM, 'photo_upload_form'],
                        [ArrayFilterEvent::NETWORK_TO_NAME, 'network_to_name'],
                        [ArrayFilterEvent::CONVERSATION_START, 'conversation_start'],
+                       [ArrayFilterEvent::FETCH_ITEM_BY_LINK, 'item_by_link'],
                        [ArrayFilterEvent::ITEM_TAGGED, 'tagged'],
                        [ArrayFilterEvent::DISPLAY_ITEM, 'display_item'],
                        [ArrayFilterEvent::CACHE_ITEM, 'put_item_in_cache'],
index e087856178f727050e1ab13a4dd98b91f3319aaa..7a72faf758f0d95db84ae7711f3df9d0affbe05a 100644 (file)
@@ -41,6 +41,7 @@ class ArrayFilterEventTest extends TestCase
                        [ArrayFilterEvent::PHOTO_UPLOAD_FORM, 'friendica.data.photo_upload_form'],
                        [ArrayFilterEvent::NETWORK_TO_NAME, 'friendica.data.network_to_name'],
                        [ArrayFilterEvent::CONVERSATION_START, 'friendica.data.conversation_start'],
+                       [ArrayFilterEvent::FETCH_ITEM_BY_LINK, 'friendica.data.fetch_item_by_link'],
                        [ArrayFilterEvent::ITEM_TAGGED, 'friendica.data.item_tagged'],
                        [ArrayFilterEvent::DISPLAY_ITEM, 'friendica.data.display_item'],
                        [ArrayFilterEvent::CACHE_ITEM, 'friendica.data.cache_item'],