]> git.mxchange.org Git - friendica.git/commitdiff
Create event for profile_edit and profile_post hooks
authorArt4 <art4@wlabs.de>
Fri, 11 Apr 2025 08:21:29 +0000 (08:21 +0000)
committerArt4 <art4@wlabs.de>
Fri, 11 Apr 2025 08:21:29 +0000 (08:21 +0000)
src/Core/Hooks/HookEventBridge.php
src/Event/ArrayFilterEvent.php
src/Module/Settings/Profile/Index.php
src/Navigation/Notifications/Repository/Notify.php
tests/Unit/Core/Hooks/HookEventBridgeTest.php
tests/Unit/Event/ArrayFilterEventTest.php

index ae7a42c154b819ffae80bc3dd598f71bbadc697b..06f918ea6daebb2857a380334b3b302e27a2436e 100644 (file)
@@ -78,6 +78,8 @@ final class HookEventBridge
                ArrayFilterEvent::PROFILE_SIDEBAR_ENTRY           => 'profile_sidebar_enter',
                ArrayFilterEvent::PROFILE_SIDEBAR                 => 'profile_sidebar',
                ArrayFilterEvent::PROFILE_TABS                    => 'profile_tabs',
+               ArrayFilterEvent::PROFILE_SETTINGS_FORM           => 'profile_edit',
+               ArrayFilterEvent::PROFILE_SETTINGS_POST           => 'profile_post',
                ArrayFilterEvent::MODERATION_USERS_TABS           => 'moderation_users_tabs',
                ArrayFilterEvent::ACL_LOOKUP_END                  => 'acl_lookup_end',
                ArrayFilterEvent::OEMBED_FETCH_END                => 'oembed_fetch_url',
@@ -171,6 +173,8 @@ final class HookEventBridge
                        ArrayFilterEvent::PROFILE_SIDEBAR_ENTRY           => 'onProfileSidebarEntryEvent',
                        ArrayFilterEvent::PROFILE_SIDEBAR                 => 'onArrayFilterEvent',
                        ArrayFilterEvent::PROFILE_TABS                    => 'onArrayFilterEvent',
+                       ArrayFilterEvent::PROFILE_SETTINGS_FORM           => 'onArrayFilterEvent',
+                       ArrayFilterEvent::PROFILE_SETTINGS_POST           => 'onArrayFilterEvent',
                        ArrayFilterEvent::MODERATION_USERS_TABS           => 'onArrayFilterEvent',
                        ArrayFilterEvent::ACL_LOOKUP_END                  => 'onArrayFilterEvent',
                        ArrayFilterEvent::OEMBED_FETCH_END                => 'onOembedFetchEndEvent',
index 1f73eadf62fdc6dbc079ccfd57ec972a8655a251..864f269cdba282bc8a6b07adca42674f62568d7d 100644 (file)
@@ -106,6 +106,10 @@ final class ArrayFilterEvent extends Event
 
        public const PROFILE_TABS = 'friendica.data.profile_tabs';
 
+       public const PROFILE_SETTINGS_FORM = 'friendica.data.profile_settings_form';
+
+       public const PROFILE_SETTINGS_POST = 'friendica.data.profile_settings_post';
+
        public const MODERATION_USERS_TABS = 'friendica.data.moderation_users_tabs';
 
        public const ACL_LOOKUP_END = 'friendica.data.acl_lookup_end';
index f63ae3b1354843590de0a0251d9d98007ad1af65..bf865667e46692be57ea1b938c7963bc7764096f 100644 (file)
@@ -7,30 +7,33 @@
 
 namespace Friendica\Module\Settings\Profile;
 
-use Friendica\App;
+use Friendica\App\Arguments;
+use Friendica\App\BaseURL;
+use Friendica\App\Page;
 use Friendica\Core\ACL;
-use Friendica\Core\Hook;
 use Friendica\Core\L10n;
 use Friendica\Core\Protocol;
 use Friendica\Core\Renderer;
 use Friendica\Core\Session\Capability\IHandleUserSessions;
 use Friendica\Core\Theme;
+use Friendica\Core\Worker;
 use Friendica\Database\DBA;
+use Friendica\Event\ArrayFilterEvent;
 use Friendica\Model\Contact;
 use Friendica\Model\Profile;
 use Friendica\Module\Response;
-use Friendica\Navigation\SystemMessages;
-use Friendica\Profile\ProfileField;
 use Friendica\Model\User;
 use Friendica\Module\BaseSettings;
 use Friendica\Module\Security\Login;
+use Friendica\Navigation\SystemMessages;
 use Friendica\Network\HTTPException;
+use Friendica\Profile\ProfileField;
 use Friendica\Security\PermissionSet;
 use Friendica\Util\ACLFormatter;
 use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Profiler;
 use Friendica\Util\Temporal;
-use Friendica\Core\Worker;
+use Psr\EventDispatcher\EventDispatcherInterface;
 use Psr\Log\LoggerInterface;
 
 class Index extends BaseSettings
@@ -47,9 +50,27 @@ class Index extends BaseSettings
        private $permissionSetFactory;
        /** @var ACLFormatter */
        private $aclFormatter;
-
-       public function __construct(ACLFormatter $aclFormatter, PermissionSet\Factory\PermissionSet $permissionSetFactory, PermissionSet\Repository\PermissionSet $permissionSetRepo, SystemMessages $systemMessages, ProfileField\Factory\ProfileField $profileFieldFactory, ProfileField\Repository\ProfileField $profileFieldRepo, IHandleUserSessions $session, App\Page $page, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, array $server, array $parameters = [])
-       {
+       private EventDispatcherInterface $eventDispatcher;
+
+       public function __construct(
+               ACLFormatter $aclFormatter,
+               PermissionSet\Factory\PermissionSet $permissionSetFactory,
+               PermissionSet\Repository\PermissionSet $permissionSetRepo,
+               SystemMessages $systemMessages,
+               ProfileField\Factory\ProfileField $profileFieldFactory,
+               ProfileField\Repository\ProfileField $profileFieldRepo,
+               EventDispatcherInterface $eventDispatcher,
+               IHandleUserSessions $session,
+               Page $page,
+               L10n $l10n,
+               BaseURL $baseUrl,
+               Arguments $args,
+               LoggerInterface $logger,
+               Profiler $profiler,
+               Response $response,
+               array $server,
+               array $parameters = [],
+       ) {
                parent::__construct($session, $page, $l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
 
                $this->profileFieldRepo     = $profileFieldRepo;
@@ -58,6 +79,7 @@ class Index extends BaseSettings
                $this->permissionSetRepo    = $permissionSetRepo;
                $this->permissionSetFactory = $permissionSetFactory;
                $this->aclFormatter         = $aclFormatter;
+               $this->eventDispatcher      = $eventDispatcher;
        }
 
        protected function post(array $request = [])
@@ -73,7 +95,9 @@ class Index extends BaseSettings
 
                self::checkFormSecurityTokenRedirectOnError('/settings/profile', 'settings_profile');
 
-               Hook::callAll('profile_post', $request);
+               $request = $this->eventDispatcher->dispatch(
+                       new ArrayFilterEvent(ArrayFilterEvent::PROFILE_SETTINGS_POST, $request),
+               )->getArray();
 
                $dob = trim($request['dob'] ?? '');
 
@@ -288,8 +312,16 @@ class Index extends BaseSettings
                        '$custom_fields' => $custom_fields,
                ]);
 
-               $arr = ['profile' => $owner, 'entry' => $o];
-               Hook::callAll('profile_edit', $arr);
+               $hook_data = [
+                       'profile' => $owner,
+                       'entry' => $o,
+               ];
+
+               $hook_data = $this->eventDispatcher->dispatch(
+                       new ArrayFilterEvent(ArrayFilterEvent::PROFILE_SETTINGS_FORM, $hook_data),
+               )->getArray();
+
+               $o = $hook_data['entry'] ?? $o;
 
                return $o;
        }
index c59eed92aa922f1cfb520a21829fd8cbd26ca1de..7f55fd1a4890630a711338a9666db1b63213becd 100644 (file)
@@ -13,7 +13,6 @@ use Friendica\Content\Text\BBCode;
 use Friendica\Content\Text\Plaintext;
 use Friendica\Core\Config\Capability\IManageConfigValues;
 use Friendica\Core\PConfig\Capability\IManagePersonalConfigValues;
-use Friendica\Core\Hook;
 use Friendica\Core\L10n;
 use Friendica\Database\Database;
 use Friendica\Database\DBA;
index 7b655ee0a109e6c56f8e0d22f1e8ef28b0b31bd7..436e1435bc5f6ff884ee75ddd461e9aef4406713 100644 (file)
@@ -67,6 +67,8 @@ class HookEventBridgeTest extends TestCase
                        ArrayFilterEvent::PROFILE_SIDEBAR_ENTRY           => 'onProfileSidebarEntryEvent',
                        ArrayFilterEvent::PROFILE_SIDEBAR                 => 'onArrayFilterEvent',
                        ArrayFilterEvent::PROFILE_TABS                    => 'onArrayFilterEvent',
+                       ArrayFilterEvent::PROFILE_SETTINGS_FORM           => 'onArrayFilterEvent',
+                       ArrayFilterEvent::PROFILE_SETTINGS_POST           => 'onArrayFilterEvent',
                        ArrayFilterEvent::MODERATION_USERS_TABS           => 'onArrayFilterEvent',
                        ArrayFilterEvent::ACL_LOOKUP_END                  => 'onArrayFilterEvent',
                        ArrayFilterEvent::OEMBED_FETCH_END                => 'onOembedFetchEndEvent',
@@ -559,6 +561,8 @@ class HookEventBridgeTest extends TestCase
                        [ArrayFilterEvent::CONTACT_PHOTO_MENU, 'contact_photo_menu'],
                        [ArrayFilterEvent::PROFILE_SIDEBAR, 'profile_sidebar'],
                        [ArrayFilterEvent::PROFILE_TABS, 'profile_tabs'],
+                       [ArrayFilterEvent::PROFILE_SETTINGS_FORM, 'profile_edit'],
+                       [ArrayFilterEvent::PROFILE_SETTINGS_POST, 'profile_post'],
                        [ArrayFilterEvent::MODERATION_USERS_TABS, 'moderation_users_tabs'],
                        [ArrayFilterEvent::ACL_LOOKUP_END, 'acl_lookup_end'],
                        [ArrayFilterEvent::PAGE_INFO, 'page_info_data'],
index aae225cd468f1816cd58a22d5965fcafd79b1bc2..85f9307a0dfd724289d8596f8703746bad0a3c48 100644 (file)
@@ -64,6 +64,8 @@ class ArrayFilterEventTest extends TestCase
                        [ArrayFilterEvent::PROFILE_SIDEBAR_ENTRY, 'friendica.data.profile_sidebar_entry'],
                        [ArrayFilterEvent::PROFILE_SIDEBAR, 'friendica.data.profile_sidebar'],
                        [ArrayFilterEvent::PROFILE_TABS, 'friendica.data.profile_tabs'],
+                       [ArrayFilterEvent::PROFILE_SETTINGS_FORM, 'friendica.data.profile_settings_form'],
+                       [ArrayFilterEvent::PROFILE_SETTINGS_POST, 'friendica.data.profile_settings_post'],
                        [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'],