]> git.mxchange.org Git - friendica.git/commitdiff
Create events for register_form and register_post hook
authorArt4 <art4@wlabs.de>
Wed, 26 Mar 2025 08:58:23 +0000 (08:58 +0000)
committerArt4 <art4@wlabs.de>
Wed, 26 Mar 2025 08:58:23 +0000 (08:58 +0000)
src/Core/Hooks/HookEventBridge.php
src/Event/ArrayFilterEvent.php
src/Module/Register.php
tests/Unit/Core/Hooks/HookEventBridgeTest.php
tests/Unit/Event/ArrayFilterEventTest.php

index 0beeec8667f29a23a703c93ab846dff21f852467..8b6c69c2c20d4ef4c444efec522ba246da4ecc4b 100644 (file)
@@ -86,6 +86,8 @@ final class HookEventBridge
                ArrayFilterEvent::UNBLOCK_CONTACT                 => 'unblock',
                ArrayFilterEvent::AVATAR_LOOKUP                   => 'avatar_lookup',
                ArrayFilterEvent::ACCOUNT_AUTHENTICATE            => 'authenticate',
+               ArrayFilterEvent::ACCOUNT_REGISTER_FORM           => 'register_form',
+               ArrayFilterEvent::ACCOUNT_REGISTER_POST           => 'register_post',
                ArrayFilterEvent::ACCOUNT_REGISTER                => 'register_account',
                ArrayFilterEvent::ACCOUNT_REMOVE                  => 'remove_user',
                ArrayFilterEvent::EVENT_CREATED                   => 'event_created',
@@ -163,6 +165,8 @@ final class HookEventBridge
                        ArrayFilterEvent::UNBLOCK_CONTACT                 => 'onArrayFilterEvent',
                        ArrayFilterEvent::AVATAR_LOOKUP                   => 'onArrayFilterEvent',
                        ArrayFilterEvent::ACCOUNT_AUTHENTICATE            => 'onArrayFilterEvent',
+                       ArrayFilterEvent::ACCOUNT_REGISTER_FORM           => 'onArrayFilterEvent',
+                       ArrayFilterEvent::ACCOUNT_REGISTER_POST           => 'onArrayFilterEvent',
                        ArrayFilterEvent::ACCOUNT_REGISTER                => 'onAccountRegisterEvent',
                        ArrayFilterEvent::ACCOUNT_REMOVE                  => 'onAccountRemoveEvent',
                        ArrayFilterEvent::EVENT_CREATED                   => 'onEventCreatedEvent',
index c9ae0fabe189c898aa207382c2fddc95d03e7a1f..40433328a34f82b4ff6626548e5460460ccb73a9 100644 (file)
@@ -122,6 +122,10 @@ final class ArrayFilterEvent extends Event
 
        public const ACCOUNT_AUTHENTICATE = 'friendica.data.account_authenticate';
 
+       public const ACCOUNT_REGISTER_FORM = 'friendica.data.account_register_form';
+
+       public const ACCOUNT_REGISTER_POST = 'friendica.data.account_register_post';
+
        public const ACCOUNT_REGISTER = 'friendica.data.account_register';
 
        public const ACCOUNT_REMOVE = 'friendica.data.account_remove';
index 1cea2ba9a4a5c1c00af33793ef6214c61707695d..6f641355e38895c85eca3614d4552eada01aa2c2 100644 (file)
@@ -12,18 +12,19 @@ use Friendica\App\BaseURL;
 use Friendica\BaseModule;
 use Friendica\Content\Text\BBCode;
 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\Core\Worker;
 use Friendica\Database\DBA;
 use Friendica\DI;
+use Friendica\Event\ArrayFilterEvent;
 use Friendica\Model;
 use Friendica\Model\User;
 use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Profiler;
 use Friendica\Util\Proxy;
+use Psr\EventDispatcher\EventDispatcherInterface;
 use Psr\Log\LoggerInterface;
 
 /**
@@ -41,13 +42,16 @@ class Register extends BaseModule
        /** @var IHandleUserSessions */
        private $session;
 
-       public function __construct(IHandleUserSessions $session, L10n $l10n, BaseURL $baseUrl, Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, IManageConfigValues $config, array $server, array $parameters = [])
+       private EventDispatcherInterface $eventDispatcher;
+
+       public function __construct(IHandleUserSessions $session, EventDispatcherInterface $eventDispatcher, L10n $l10n, BaseURL $baseUrl, Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, IManageConfigValues $config, array $server, array $parameters = [])
        {
                parent::__construct($l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
 
                $this->tos = new Tos($l10n, $baseUrl, $args, $logger, $profiler, $response, $config, $server, $parameters);
 
                $this->session = $session;
+               $this->eventDispatcher = $eventDispatcher;
        }
 
        /**
@@ -129,11 +133,15 @@ class Register extends BaseModule
 
                $tpl = Renderer::getMarkupTemplate('register.tpl');
 
-               $arr = ['template' => $tpl];
+               $hook_data = [
+                       'template' => $tpl,
+               ];
 
-               Hook::callAll('register_form', $arr);
+               $hook_data = $this->eventDispatcher->dispatch(
+                       new ArrayFilterEvent(ArrayFilterEvent::ACCOUNT_REGISTER_FORM, $hook_data),
+               )->getArray();
 
-               $tpl = $arr['template'];
+               $tpl = $hook_data['template'] ?? $tpl;
 
                $o = Renderer::replaceMacros($tpl, [
                        '$invitations'           => DI::config()->get('system', 'invitation_only'),
@@ -190,8 +198,13 @@ class Register extends BaseModule
        {
                BaseModule::checkFormSecurityTokenRedirectOnError('/register', 'register');
 
-               $arr = ['post' => $_POST];
-               Hook::callAll('register_post', $arr);
+               $arr = [
+                       'post' => $_POST,
+               ];
+
+               $arr = $this->eventDispatcher->dispatch(
+                       new ArrayFilterEvent(ArrayFilterEvent::ACCOUNT_REGISTER_POST, $arr),
+               )->getArray();
 
                $additional_account = false;
 
index bdfe5d5508badd3fdd959463378ecf32d1b08054..7660a9d2a1c30cb0e21d58bd477f27d1d54c208d 100644 (file)
@@ -75,6 +75,8 @@ class HookEventBridgeTest extends TestCase
                        ArrayFilterEvent::UNBLOCK_CONTACT                 => 'onArrayFilterEvent',
                        ArrayFilterEvent::AVATAR_LOOKUP                   => 'onArrayFilterEvent',
                        ArrayFilterEvent::ACCOUNT_AUTHENTICATE            => 'onArrayFilterEvent',
+                       ArrayFilterEvent::ACCOUNT_REGISTER_FORM           => 'onArrayFilterEvent',
+                       ArrayFilterEvent::ACCOUNT_REGISTER_POST           => 'onArrayFilterEvent',
                        ArrayFilterEvent::ACCOUNT_REGISTER                => 'onAccountRegisterEvent',
                        ArrayFilterEvent::ACCOUNT_REMOVE                  => 'onAccountRemoveEvent',
                        ArrayFilterEvent::EVENT_CREATED                   => 'onEventCreatedEvent',
@@ -488,6 +490,8 @@ class HookEventBridgeTest extends TestCase
                        [ArrayFilterEvent::UNBLOCK_CONTACT, 'unblock'],
                        [ArrayFilterEvent::AVATAR_LOOKUP, 'avatar_lookup'],
                        [ArrayFilterEvent::ACCOUNT_AUTHENTICATE, 'authenticate'],
+                       [ArrayFilterEvent::ACCOUNT_REGISTER_FORM, 'register_form'],
+                       [ArrayFilterEvent::ACCOUNT_REGISTER_POST, 'register_post'],
                        [ArrayFilterEvent::ACCOUNT_REGISTER, 'register_account'],
                        [ArrayFilterEvent::ACCOUNT_REMOVE, 'remove_user'],
                        [ArrayFilterEvent::EVENT_CREATED, 'event_created'],
index fafd1a66e076a4c9e80ba11f4512d6851d982482..b0c40e51297771eca56d156541bd262c3109469a 100644 (file)
@@ -72,6 +72,8 @@ class ArrayFilterEventTest extends TestCase
                        [ArrayFilterEvent::UNBLOCK_CONTACT, 'friendica.data.unblock_contact'],
                        [ArrayFilterEvent::AVATAR_LOOKUP, 'friendica.data.avatar_lookup'],
                        [ArrayFilterEvent::ACCOUNT_AUTHENTICATE, 'friendica.data.account_authenticate'],
+                       [ArrayFilterEvent::ACCOUNT_REGISTER_FORM, 'friendica.data.account_register_form'],
+                       [ArrayFilterEvent::ACCOUNT_REGISTER_POST, 'friendica.data.account_register_post'],
                        [ArrayFilterEvent::ACCOUNT_REGISTER, 'friendica.data.account_register'],
                        [ArrayFilterEvent::ACCOUNT_REMOVE, 'friendica.data.account_remove'],
                        [ArrayFilterEvent::EVENT_CREATED, 'friendica.data.event_created'],