From: Art4 Date: Wed, 29 Jan 2025 08:12:08 +0000 (+0000) Subject: Replace Hook with EventDispatcher in Feature class X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=f3ccd198a4d1052f370748094d6c8667883d80cf;p=friendica.git Replace Hook with EventDispatcher in Feature class --- diff --git a/src/Content/Feature.php b/src/Content/Feature.php index 8b5e56eba4..92198ae2c9 100644 --- a/src/Content/Feature.php +++ b/src/Content/Feature.php @@ -9,6 +9,7 @@ namespace Friendica\Content; use Friendica\Core\Hook; use Friendica\DI; +use Friendica\Event\ArrayFilterEvent; class Feature { @@ -41,15 +42,23 @@ class Feature */ public static function isEnabled(int $uid, $feature): bool { - if (!DI::config()->get('feature_lock', $feature, false)) { - $enabled = DI::config()->get('feature', $feature) ?? self::getDefault($feature); - $enabled = DI::pConfig()->get($uid, 'feature', $feature) ?? $enabled; + $config = DI::config(); + $pConfig = DI::pConfig(); + $eventDispatcher = DI::eventDispatcher(); + + if (!$config->get('feature_lock', $feature, false)) { + $enabled = $config->get('feature', $feature) ?? self::getDefault($feature); + $enabled = $pConfig->get($uid, 'feature', $feature) ?? $enabled; } else { $enabled = true; } $arr = ['uid' => $uid, 'feature' => $feature, 'enabled' => $enabled]; - Hook::callAll('isEnabled', $arr); + + $arr = $eventDispatcher->dispatch( + new ArrayFilterEvent(ArrayFilterEvent::FEATURE_ENABLED, $arr) + )->getArray(); + return (bool)$arr['enabled']; } diff --git a/src/Event/ArrayFilterEvent.php b/src/Event/ArrayFilterEvent.php index 4c888dcb80..5d084e42d5 100644 --- a/src/Event/ArrayFilterEvent.php +++ b/src/Event/ArrayFilterEvent.php @@ -20,6 +20,8 @@ final class ArrayFilterEvent extends Event public const NAV_INFO = 'friendica.data.nav_info'; + public const FEATURE_ENABLED = 'friendica.data.feature_enabled'; + private array $array; public function __construct(string $name, array $array) diff --git a/src/EventSubscriber/HookEventBridge.php b/src/EventSubscriber/HookEventBridge.php index c7e3280125..ede5fe409f 100644 --- a/src/EventSubscriber/HookEventBridge.php +++ b/src/EventSubscriber/HookEventBridge.php @@ -38,6 +38,7 @@ final class HookEventBridge ConfigLoadedEvent::CONFIG_LOADED => 'load_config', ArrayFilterEvent::APP_MENU => 'app_menu', ArrayFilterEvent::NAV_INFO => 'nav_info', + ArrayFilterEvent::FEATURE_ENABLED => 'isEnabled', HtmlFilterEvent::HEAD => 'head', HtmlFilterEvent::FOOTER => 'footer', HtmlFilterEvent::PAGE_HEADER => 'page_header', @@ -55,6 +56,7 @@ final class HookEventBridge ConfigLoadedEvent::CONFIG_LOADED => 'onConfigLoadedEvent', ArrayFilterEvent::APP_MENU => 'onArrayFilterEvent', ArrayFilterEvent::NAV_INFO => 'onArrayFilterEvent', + ArrayFilterEvent::FEATURE_ENABLED => 'onArrayFilterEvent', HtmlFilterEvent::HEAD => 'onHtmlFilterEvent', HtmlFilterEvent::FOOTER => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent', @@ -88,7 +90,7 @@ final class HookEventBridge } /** - * @param string|array $data + * @param string|array|object $data * * @return string|array|object */ diff --git a/tests/Unit/EventSubscriber/HookEventBridgeTest.php b/tests/Unit/EventSubscriber/HookEventBridgeTest.php index ce1ebc58a0..df138f4577 100644 --- a/tests/Unit/EventSubscriber/HookEventBridgeTest.php +++ b/tests/Unit/EventSubscriber/HookEventBridgeTest.php @@ -26,6 +26,7 @@ class HookEventBridgeTest extends TestCase ConfigLoadedEvent::CONFIG_LOADED => 'onConfigLoadedEvent', ArrayFilterEvent::APP_MENU => 'onArrayFilterEvent', ArrayFilterEvent::NAV_INFO => 'onArrayFilterEvent', + ArrayFilterEvent::FEATURE_ENABLED => 'onArrayFilterEvent', HtmlFilterEvent::HEAD => 'onHtmlFilterEvent', HtmlFilterEvent::FOOTER => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent', @@ -114,6 +115,8 @@ class HookEventBridgeTest extends TestCase return [ ['test', 'test'], [ArrayFilterEvent::APP_MENU, 'app_menu'], + [ArrayFilterEvent::NAV_INFO, 'nav_info'], + [ArrayFilterEvent::FEATURE_ENABLED, 'isEnabled'], ]; }