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',
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',
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
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;
$this->permissionSetRepo = $permissionSetRepo;
$this->permissionSetFactory = $permissionSetFactory;
$this->aclFormatter = $aclFormatter;
+ $this->eventDispatcher = $eventDispatcher;
}
protected function post(array $request = [])
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'] ?? '');
'$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;
}
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',
[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'],