diff --git a/src/Core/Hooks/HookEventBridge.php b/src/Core/Hooks/HookEventBridge.php index 0beeec8667..8b6c69c2c2 100644 --- a/src/Core/Hooks/HookEventBridge.php +++ b/src/Core/Hooks/HookEventBridge.php @@ -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', diff --git a/src/Event/ArrayFilterEvent.php b/src/Event/ArrayFilterEvent.php index c9ae0fabe1..40433328a3 100644 --- a/src/Event/ArrayFilterEvent.php +++ b/src/Event/ArrayFilterEvent.php @@ -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'; diff --git a/src/Module/Register.php b/src/Module/Register.php index 1cea2ba9a4..6f641355e3 100644 --- a/src/Module/Register.php +++ b/src/Module/Register.php @@ -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; diff --git a/tests/Unit/Core/Hooks/HookEventBridgeTest.php b/tests/Unit/Core/Hooks/HookEventBridgeTest.php index bdfe5d5508..7660a9d2a1 100644 --- a/tests/Unit/Core/Hooks/HookEventBridgeTest.php +++ b/tests/Unit/Core/Hooks/HookEventBridgeTest.php @@ -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'], diff --git a/tests/Unit/Event/ArrayFilterEventTest.php b/tests/Unit/Event/ArrayFilterEventTest.php index fafd1a66e0..b0c40e5129 100644 --- a/tests/Unit/Event/ArrayFilterEventTest.php +++ b/tests/Unit/Event/ArrayFilterEventTest.php @@ -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'],