diff --git a/src/Core/Hooks/HookEventBridge.php b/src/Core/Hooks/HookEventBridge.php index 7c23e333f1..6c477dae36 100644 --- a/src/Core/Hooks/HookEventBridge.php +++ b/src/Core/Hooks/HookEventBridge.php @@ -71,6 +71,7 @@ final class HookEventBridge ArrayFilterEvent::STORAGE_CONFIG => 'storage_config', ArrayFilterEvent::STORAGE_INSTANCE => 'storage_instance', ArrayFilterEvent::DB_STRUCTURE_DEFINITION => 'dbstructure_definition', + ArrayFilterEvent::DB_VIEW_DEFINITION => 'dbview_definition', HtmlFilterEvent::HEAD => 'head', HtmlFilterEvent::FOOTER => 'footer', HtmlFilterEvent::PAGE_HEADER => 'page_header', @@ -122,6 +123,7 @@ final class HookEventBridge ArrayFilterEvent::STORAGE_CONFIG => 'onArrayFilterEvent', ArrayFilterEvent::STORAGE_INSTANCE => 'onArrayFilterEvent', ArrayFilterEvent::DB_STRUCTURE_DEFINITION => 'onArrayFilterEvent', + ArrayFilterEvent::DB_VIEW_DEFINITION => 'onArrayFilterEvent', HtmlFilterEvent::HEAD => 'onHtmlFilterEvent', HtmlFilterEvent::FOOTER => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent', diff --git a/src/Database/Definition/DbaDefinition.php b/src/Database/Definition/DbaDefinition.php index ecc75f6aa3..c5d77d3a46 100644 --- a/src/Database/Definition/DbaDefinition.php +++ b/src/Database/Definition/DbaDefinition.php @@ -8,7 +8,6 @@ namespace Friendica\Database\Definition; use Exception; -use Friendica\Core\Hook; use Friendica\DI; use Friendica\Event\ArrayFilterEvent; diff --git a/src/Database/Definition/ViewDefinition.php b/src/Database/Definition/ViewDefinition.php index b64e0d0ffc..3c6cb2f43a 100644 --- a/src/Database/Definition/ViewDefinition.php +++ b/src/Database/Definition/ViewDefinition.php @@ -8,7 +8,8 @@ namespace Friendica\Database\Definition; use Exception; -use Friendica\Core\Hook; +use Friendica\DI; +use Friendica\Event\ArrayFilterEvent; /** * Stores the whole View definitions @@ -62,12 +63,16 @@ class ViewDefinition { $definition = require $this->configFile; - if (!$definition) { + if (!is_array($definition)) { throw new Exception('Corrupted database structure config file static/dbstructure.config.php'); } if ($withAddonStructure) { - Hook::callAll('dbview_definition', $definition); + $eventDispatcher = DI::eventDispatcher(); + + $definition = $eventDispatcher->dispatch( + new ArrayFilterEvent(ArrayFilterEvent::DB_VIEW_DEFINITION, $definition), + )->getArray(); } $this->definition = $definition; diff --git a/src/Event/ArrayFilterEvent.php b/src/Event/ArrayFilterEvent.php index f8e19bdad5..f62d7f02c6 100644 --- a/src/Event/ArrayFilterEvent.php +++ b/src/Event/ArrayFilterEvent.php @@ -80,6 +80,8 @@ final class ArrayFilterEvent extends Event public const DB_STRUCTURE_DEFINITION = 'friendica.data.db_structure_definition'; + public const DB_VIEW_DEFINITION = 'friendica.data.db_view_definition'; + private array $array; public function __construct(string $name, array $array) diff --git a/tests/Unit/Core/Hooks/HookEventBridgeTest.php b/tests/Unit/Core/Hooks/HookEventBridgeTest.php index ca0cb2c160..f496467e54 100644 --- a/tests/Unit/Core/Hooks/HookEventBridgeTest.php +++ b/tests/Unit/Core/Hooks/HookEventBridgeTest.php @@ -60,6 +60,7 @@ class HookEventBridgeTest extends TestCase ArrayFilterEvent::STORAGE_CONFIG => 'onArrayFilterEvent', ArrayFilterEvent::STORAGE_INSTANCE => 'onArrayFilterEvent', ArrayFilterEvent::DB_STRUCTURE_DEFINITION => 'onArrayFilterEvent', + ArrayFilterEvent::DB_VIEW_DEFINITION => 'onArrayFilterEvent', HtmlFilterEvent::HEAD => 'onHtmlFilterEvent', HtmlFilterEvent::FOOTER => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent', @@ -296,6 +297,7 @@ class HookEventBridgeTest extends TestCase [ArrayFilterEvent::STORAGE_CONFIG, 'storage_config'], [ArrayFilterEvent::STORAGE_INSTANCE, 'storage_instance'], [ArrayFilterEvent::DB_STRUCTURE_DEFINITION, 'dbstructure_definition'], + [ArrayFilterEvent::DB_VIEW_DEFINITION, 'dbview_definition'], ]; } diff --git a/tests/Unit/Event/ArrayFilterEventTest.php b/tests/Unit/Event/ArrayFilterEventTest.php index 67b2e8a576..e55fa313a6 100644 --- a/tests/Unit/Event/ArrayFilterEventTest.php +++ b/tests/Unit/Event/ArrayFilterEventTest.php @@ -57,6 +57,7 @@ class ArrayFilterEventTest extends TestCase [ArrayFilterEvent::STORAGE_CONFIG, 'friendica.data.storage_config'], [ArrayFilterEvent::STORAGE_INSTANCE, 'friendica.data.storage_instance'], [ArrayFilterEvent::DB_STRUCTURE_DEFINITION, 'friendica.data.db_structure_definition'], + [ArrayFilterEvent::DB_VIEW_DEFINITION, 'friendica.data.db_view_definition'], ]; }