]> git.mxchange.org Git - friendica.git/commitdiff
Replace Hook with EventDispatcher in Content Nav class
authorArt4 <art4@wlabs.de>
Wed, 29 Jan 2025 07:46:56 +0000 (07:46 +0000)
committerHypolite Petovan <hypolite@mrpetovan.com>
Tue, 4 Feb 2025 18:22:54 +0000 (13:22 -0500)
src/Content/Nav.php
src/Event/ArrayFilterEvent.php
src/Event/HtmlFilterEvent.php
src/EventSubscriber/HookEventBridge.php
tests/Unit/EventSubscriber/HookEventBridgeTest.php

index e5da7d878a8f3347f49162cd8e7a21c551f8425d..695d32ffddac76772f868ca73152bb62e5239443 100644 (file)
@@ -10,12 +10,12 @@ namespace Friendica\Content;
 use Friendica\App\BaseURL;
 use Friendica\App\Router;
 use Friendica\Core\Config\Capability\IManageConfigValues;
-use Friendica\Core\Hook;
 use Friendica\Core\L10n;
 use Friendica\Core\Renderer;
 use Friendica\Core\Session\Capability\IHandleUserSessions;
 use Friendica\Database\Database;
 use Friendica\Event\ArrayFilterEvent;
+use Friendica\Event\HtmlFilterEvent;
 use Friendica\Model\Contact;
 use Friendica\Model\User;
 use Friendica\Module\Conversation\Community;
@@ -119,7 +119,9 @@ class Nav
                        '$search_hint'        => $this->l10n->t('@name, !group, #tags, content')
                ]);
 
-               Hook::callAll('page_header', $nav);
+               $nav = $this->eventDispatcher->dispatch(
+                       new HtmlFilterEvent(HtmlFilterEvent::PAGE_HEADER, $nav)
+               )->getHtml();
 
                return $nav;
        }
@@ -156,9 +158,11 @@ class Nav
                ) {
                        $arr = ['app_menu' => $appMenu];
 
-                       $arr = $this->eventDispatcher->dispatch(new ArrayFilterEvent(ArrayFilterEvent::APP_MENU, $arr))->getArray();
+                       $arr = $this->eventDispatcher->dispatch(
+                               new ArrayFilterEvent(ArrayFilterEvent::APP_MENU, $arr)
+                       )->getArray();
 
-                       $appMenu = $arr['app_menu'];
+                       $appMenu = $arr['app_menu'] ?? [];
                }
 
                return $appMenu;
@@ -342,7 +346,9 @@ class Nav
                        'userinfo'     => $userinfo,
                ];
 
-               Hook::callAll('nav_info', $nav_info);
+               $nav_info = $this->eventDispatcher->dispatch(
+                       new ArrayFilterEvent(ArrayFilterEvent::NAV_INFO, $nav_info)
+               )->getArray();
 
                return $nav_info;
        }
index 7e9063398b169a686c4a9224127336d5e977af6a..4c888dcb8049f5c00ae82b7b3c3aa213c86fe20b 100644 (file)
@@ -18,6 +18,8 @@ final class ArrayFilterEvent extends Event
 {
        public const APP_MENU = 'friendica.data.app_menu';
 
+       public const NAV_INFO = 'friendica.data.nav_info';
+
        private array $array;
 
        public function __construct(string $name, array $array)
index 6b71ffb5bc914020caa4ec9945b1e75ad65bf0af..7d1bbb2b5555e6d0c1f27b0b138c5b65dee1ea93 100644 (file)
@@ -20,6 +20,8 @@ final class HtmlFilterEvent extends Event
 
        public const FOOTER = 'friendica.html.footer';
 
+       public const PAGE_HEADER = 'friendica.html.page_header';
+
        public const PAGE_CONTENT_TOP = 'friendica.html.page_content_top';
 
        public const PAGE_END = 'friendica.html.page_end';
index 662df204fd7fc7112ebad04c3e2e8b888c43c5c1..c7e3280125385e74d482e14a1d373ea72d6104b8 100644 (file)
@@ -24,7 +24,7 @@ use Friendica\Event\NamedEvent;
 final class HookEventBridge
 {
        /**
-        * This allows us to mock the Hook call in tests.
+        * @internal This allows us to mock the Hook call in tests.
         *
         * @var \Closure|null
         */
@@ -37,8 +37,10 @@ final class HookEventBridge
                Event::INIT                       => 'init_1',
                ConfigLoadedEvent::CONFIG_LOADED  => 'load_config',
                ArrayFilterEvent::APP_MENU        => 'app_menu',
+               ArrayFilterEvent::NAV_INFO        => 'nav_info',
                HtmlFilterEvent::HEAD             => 'head',
                HtmlFilterEvent::FOOTER           => 'footer',
+               HtmlFilterEvent::PAGE_HEADER      => 'page_header',
                HtmlFilterEvent::PAGE_CONTENT_TOP => 'page_content_top',
                HtmlFilterEvent::PAGE_END         => 'page_end',
        ];
@@ -52,8 +54,10 @@ final class HookEventBridge
                        Event::INIT                       => 'onNamedEvent',
                        ConfigLoadedEvent::CONFIG_LOADED  => 'onConfigLoadedEvent',
                        ArrayFilterEvent::APP_MENU        => 'onArrayFilterEvent',
+                       ArrayFilterEvent::NAV_INFO        => 'onArrayFilterEvent',
                        HtmlFilterEvent::HEAD             => 'onHtmlFilterEvent',
                        HtmlFilterEvent::FOOTER           => 'onHtmlFilterEvent',
+                       HtmlFilterEvent::PAGE_HEADER      => 'onHtmlFilterEvent',
                        HtmlFilterEvent::PAGE_CONTENT_TOP => 'onHtmlFilterEvent',
                        HtmlFilterEvent::PAGE_END         => 'onHtmlFilterEvent',
                ];
index 3b9b0afba1b4133f06185f0aa6f1a209c44d8bc6..ce1ebc58a0e01b8763ce14644e92978fc1f26a04 100644 (file)
@@ -25,8 +25,10 @@ class HookEventBridgeTest extends TestCase
                        Event::INIT                       => 'onNamedEvent',
                        ConfigLoadedEvent::CONFIG_LOADED  => 'onConfigLoadedEvent',
                        ArrayFilterEvent::APP_MENU        => 'onArrayFilterEvent',
+                       ArrayFilterEvent::NAV_INFO        => 'onArrayFilterEvent',
                        HtmlFilterEvent::HEAD             => 'onHtmlFilterEvent',
                        HtmlFilterEvent::FOOTER           => 'onHtmlFilterEvent',
+                       HtmlFilterEvent::PAGE_HEADER      => 'onHtmlFilterEvent',
                        HtmlFilterEvent::PAGE_CONTENT_TOP => 'onHtmlFilterEvent',
                        HtmlFilterEvent::PAGE_END         => 'onHtmlFilterEvent',
                ];
@@ -141,6 +143,7 @@ class HookEventBridgeTest extends TestCase
                        ['test', 'test'],
                        [HtmlFilterEvent::HEAD, 'head'],
                        [HtmlFilterEvent::FOOTER, 'footer'],
+                       [HtmlFilterEvent::PAGE_HEADER, 'page_header'],
                        [HtmlFilterEvent::PAGE_CONTENT_TOP, 'page_content_top'],
                        [HtmlFilterEvent::PAGE_END, 'page_end'],
                ];