diff --git a/src/Content/Conversation.php b/src/Content/Conversation.php index 16ca762698..4175398a64 100644 --- a/src/Content/Conversation.php +++ b/src/Content/Conversation.php @@ -1572,7 +1572,10 @@ class Conversation ]; $arr = ['item' => $item, 'output' => $tmp_item]; - Hook::callAll('display_item', $arr); + + $arr = $this->eventDispatcher->dispatch( + new ArrayFilterEvent(ArrayFilterEvent::DISPLAY_ITEM, $arr), + )->getArray(); $threads[] = [ 'id' => $item['id'], diff --git a/src/Core/Hooks/HookEventBridge.php b/src/Core/Hooks/HookEventBridge.php index ffe16210c7..50f8945b47 100644 --- a/src/Core/Hooks/HookEventBridge.php +++ b/src/Core/Hooks/HookEventBridge.php @@ -49,6 +49,7 @@ final class HookEventBridge ArrayFilterEvent::PHOTO_UPLOAD_FORM => 'photo_upload_form', ArrayFilterEvent::NETWORK_TO_NAME => 'network_to_name', ArrayFilterEvent::CONVERSATION_START => 'conversation_start', + ArrayFilterEvent::DISPLAY_ITEM => 'display_item', HtmlFilterEvent::HEAD => 'head', HtmlFilterEvent::FOOTER => 'footer', HtmlFilterEvent::PAGE_HEADER => 'page_header', @@ -77,6 +78,7 @@ final class HookEventBridge ArrayFilterEvent::PHOTO_UPLOAD_FORM => 'onArrayFilterEvent', ArrayFilterEvent::NETWORK_TO_NAME => 'onArrayFilterEvent', ArrayFilterEvent::CONVERSATION_START => 'onArrayFilterEvent', + ArrayFilterEvent::DISPLAY_ITEM => 'onArrayFilterEvent', HtmlFilterEvent::HEAD => 'onHtmlFilterEvent', HtmlFilterEvent::FOOTER => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent', diff --git a/src/Event/ArrayFilterEvent.php b/src/Event/ArrayFilterEvent.php index 6c90a9d01d..75f1eb8620 100644 --- a/src/Event/ArrayFilterEvent.php +++ b/src/Event/ArrayFilterEvent.php @@ -36,6 +36,8 @@ final class ArrayFilterEvent extends Event public const CONVERSATION_START = 'friendica.data.conversation_start'; + public const DISPLAY_ITEM = 'friendica.data.display_item'; + private array $array; public function __construct(string $name, array $array) diff --git a/src/Object/Post.php b/src/Object/Post.php index b5ad33f56e..769d74576c 100644 --- a/src/Object/Post.php +++ b/src/Object/Post.php @@ -14,6 +14,7 @@ use Friendica\Core\Hook; use Friendica\Core\Protocol; use Friendica\Core\Renderer; use Friendica\DI; +use Friendica\Event\ArrayFilterEvent; use Friendica\Model\Contact; use Friendica\Model\Conversation; use Friendica\Model\Item; @@ -630,8 +631,13 @@ class Post ], ]; + $eventDispatcher = DI::eventDispatcher(); + $arr = ['item' => $item, 'output' => $tmp_item]; - Hook::callAll('display_item', $arr); + + $arr = $eventDispatcher->dispatch( + new ArrayFilterEvent(ArrayFilterEvent::DISPLAY_ITEM, $arr), + )->getArray(); $result = $arr['output']; diff --git a/tests/Unit/Core/Hooks/HookEventBridgeTest.php b/tests/Unit/Core/Hooks/HookEventBridgeTest.php index 0e9e476590..eed89c343a 100644 --- a/tests/Unit/Core/Hooks/HookEventBridgeTest.php +++ b/tests/Unit/Core/Hooks/HookEventBridgeTest.php @@ -38,6 +38,7 @@ class HookEventBridgeTest extends TestCase ArrayFilterEvent::PHOTO_UPLOAD_FORM => 'onArrayFilterEvent', ArrayFilterEvent::NETWORK_TO_NAME => 'onArrayFilterEvent', ArrayFilterEvent::CONVERSATION_START => 'onArrayFilterEvent', + ArrayFilterEvent::DISPLAY_ITEM => 'onArrayFilterEvent', HtmlFilterEvent::HEAD => 'onHtmlFilterEvent', HtmlFilterEvent::FOOTER => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent', @@ -167,6 +168,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::DISPLAY_ITEM, 'display_item'], ]; }