]> git.mxchange.org Git - friendica.git/commitdiff
Create event for acl_lookup_end hook
authorArt4 <art4@wlabs.de>
Fri, 11 Apr 2025 06:55:51 +0000 (06:55 +0000)
committerArt4 <art4@wlabs.de>
Fri, 11 Apr 2025 06:55:51 +0000 (06:55 +0000)
src/Core/Hooks/HookEventBridge.php
src/Event/ArrayFilterEvent.php
src/Module/Search/Acl.php
tests/Unit/Core/Hooks/HookEventBridgeTest.php
tests/Unit/Event/ArrayFilterEventTest.php

index 9d20a36e8972faafed18b60db4c019bc529e1728..9b8c2350c4cc23fd0be3970caf49b1960af52cf5 100644 (file)
@@ -76,6 +76,7 @@ final class HookEventBridge
                ArrayFilterEvent::PROFILE_SIDEBAR                 => 'profile_sidebar',
                ArrayFilterEvent::PROFILE_TABS                    => 'profile_tabs',
                ArrayFilterEvent::MODERATION_USERS_TABS           => 'moderation_users_tabs',
+               ArrayFilterEvent::ACL_LOOKUP_END                  => 'acl_lookup_end',
                ArrayFilterEvent::OEMBED_FETCH_END                => 'oembed_fetch_url',
                ArrayFilterEvent::PAGE_INFO                       => 'page_info_data',
                ArrayFilterEvent::SMILEY_LIST                     => 'smilie',
@@ -165,6 +166,7 @@ final class HookEventBridge
                        ArrayFilterEvent::PROFILE_SIDEBAR                 => 'onArrayFilterEvent',
                        ArrayFilterEvent::PROFILE_TABS                    => 'onArrayFilterEvent',
                        ArrayFilterEvent::MODERATION_USERS_TABS           => 'onArrayFilterEvent',
+                       ArrayFilterEvent::ACL_LOOKUP_END                  => 'onArrayFilterEvent',
                        ArrayFilterEvent::OEMBED_FETCH_END                => 'onOembedFetchEndEvent',
                        ArrayFilterEvent::PAGE_INFO                       => 'onArrayFilterEvent',
                        ArrayFilterEvent::SMILEY_LIST                     => 'onArrayFilterEvent',
index 7c772f4132799bae1a0522c837809f663e32af4f..591250455fbb490df152d2fbe02ebcb41452414b 100644 (file)
@@ -102,6 +102,8 @@ final class ArrayFilterEvent extends Event
 
        public const MODERATION_USERS_TABS = 'friendica.data.moderation_users_tabs';
 
+       public const ACL_LOOKUP_END = 'friendica.data.acl_lookup_end';
+
        public const OEMBED_FETCH_END = 'friendica.data.oembed_fetch_end';
 
        public const PAGE_INFO = 'friendica.data.page_info';
index ad1dc180be79984e61b38ca4f8d795ba8772ccf6..83e5a5dfff9fdd5730c11598005dfdb5156261b0 100644 (file)
@@ -7,22 +7,23 @@
 
 namespace Friendica\Module\Search;
 
-use Friendica\App;
+use Friendica\App\Arguments;
+use Friendica\App\BaseURL;
 use Friendica\BaseModule;
 use Friendica\Content\Widget;
-use Friendica\Core\Hook;
 use Friendica\Core\L10n;
 use Friendica\Core\Protocol;
 use Friendica\Core\Search;
 use Friendica\Core\Session\Capability\IHandleUserSessions;
-use Friendica\Core\System;
 use Friendica\Database\Database;
 use Friendica\Database\DBA;
+use Friendica\Event\ArrayFilterEvent;
 use Friendica\Model\Contact;
 use Friendica\Model\Post;
 use Friendica\Module\Response;
-use Friendica\Network\HTTPException;
+use Friendica\Network\HTTPException\UnauthorizedException;
 use Friendica\Util\Profiler;
+use Psr\EventDispatcher\EventDispatcherInterface;
 use Psr\Log\LoggerInterface;
 
 /**
@@ -44,13 +45,26 @@ class Acl extends BaseModule
        private $session;
        /** @var Database */
        private $database;
-
-       public function __construct(Database $database, IHandleUserSessions $session, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, array $server, array $parameters = [])
-       {
+       private EventDispatcherInterface $eventDispatcher;
+
+       public function __construct(
+               Database $database,
+               IHandleUserSessions $session,
+               EventDispatcherInterface $eventDispatcher,
+               L10n $l10n,
+               BaseURL $baseUrl,
+               Arguments $args,
+               LoggerInterface $logger,
+               Profiler $profiler,
+               Response $response,
+               array $server,
+               array $parameters = [],
+       ) {
                parent::__construct($l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
 
                $this->session  = $session;
                $this->database = $database;
+               $this->eventDispatcher = $eventDispatcher;
        }
 
        protected function post(array $request = [])
@@ -61,7 +75,7 @@ class Acl extends BaseModule
        protected function rawContent(array $request = [])
        {
                if (!$this->session->getLocalUserId()) {
-                       throw new HTTPException\UnauthorizedException($this->t('You must be logged in to use this module.'));
+                       throw new UnauthorizedException($this->t('You must be logged in to use this module.'));
                }
 
                $type = $request['type'] ?? self::TYPE_MENTION_CONTACT_CIRCLE;
@@ -280,7 +294,7 @@ class Acl extends BaseModule
                        $resultTotal += count($unknown_contacts);
                }
 
-               $results = [
+               $hook_data = [
                        'tot'      => $resultTotal,
                        'start'    => $start,
                        'count'    => $count,
@@ -291,13 +305,15 @@ class Acl extends BaseModule
                        'search'   => $search,
                ];
 
-               Hook::callAll('acl_lookup_end', $results);
+               $hook_data = $this->eventDispatcher->dispatch(
+                       new ArrayFilterEvent(ArrayFilterEvent::ACL_LOOKUP_END, $hook_data),
+               )->getArray();
 
                $o = [
-                       'tot'   => $results['tot'],
-                       'start' => $results['start'],
-                       'count' => $results['count'],
-                       'items' => $results['items'],
+                       'tot'   => $hook_data['tot'],
+                       'start' => $hook_data['start'],
+                       'count' => $hook_data['count'],
+                       'items' => $hook_data['items'],
                ];
 
                $this->logger->info('ACL {action} - {subaction} - done', ['module' => 'acl', 'action' => 'content', 'subaction' => 'search', 'search' => $search, 'type' => $type, 'conversation' => $conv_id]);
index 6c5c5fecf8970ae42c373ea9f1f780cf226bb2d5..fc3752e97783586d239b3ab9c6a09004b32629c4 100644 (file)
@@ -65,6 +65,7 @@ class HookEventBridgeTest extends TestCase
                        ArrayFilterEvent::PROFILE_SIDEBAR                 => 'onArrayFilterEvent',
                        ArrayFilterEvent::PROFILE_TABS                    => 'onArrayFilterEvent',
                        ArrayFilterEvent::MODERATION_USERS_TABS           => 'onArrayFilterEvent',
+                       ArrayFilterEvent::ACL_LOOKUP_END                  => 'onArrayFilterEvent',
                        ArrayFilterEvent::OEMBED_FETCH_END                => 'onOembedFetchEndEvent',
                        ArrayFilterEvent::PAGE_INFO                       => 'onArrayFilterEvent',
                        ArrayFilterEvent::SMILEY_LIST                     => 'onArrayFilterEvent',
@@ -553,6 +554,7 @@ class HookEventBridgeTest extends TestCase
                        [ArrayFilterEvent::PROFILE_SIDEBAR, 'profile_sidebar'],
                        [ArrayFilterEvent::PROFILE_TABS, 'profile_tabs'],
                        [ArrayFilterEvent::MODERATION_USERS_TABS, 'moderation_users_tabs'],
+                       [ArrayFilterEvent::ACL_LOOKUP_END, 'acl_lookup_end'],
                        [ArrayFilterEvent::PAGE_INFO, 'page_info_data'],
                        [ArrayFilterEvent::SMILEY_LIST, 'smilie'],
                        [ArrayFilterEvent::JOT_NETWORKS, 'jot_networks'],
index 9ecdb6feeeed308c26718c8d2c6a869f427d547f..771cd4fed7469ca6b2087a8bf37755bde1447830 100644 (file)
@@ -62,6 +62,7 @@ class ArrayFilterEventTest extends TestCase
                        [ArrayFilterEvent::PROFILE_SIDEBAR, 'friendica.data.profile_sidebar'],
                        [ArrayFilterEvent::PROFILE_TABS, 'friendica.data.profile_tabs'],
                        [ArrayFilterEvent::MODERATION_USERS_TABS, 'friendica.data.moderation_users_tabs'],
+                       [ArrayFilterEvent::ACL_LOOKUP_END, 'friendica.data.acl_lookup_end'],
                        [ArrayFilterEvent::OEMBED_FETCH_END, 'friendica.data.oembed_fetch_end'],
                        [ArrayFilterEvent::PAGE_INFO, 'friendica.data.page_info'],
                        [ArrayFilterEvent::SMILEY_LIST, 'friendica.data.smiley_list'],