]> git.mxchange.org Git - friendica.git/blobdiff - src/Module/Register.php
Decouple conversation creation from rendering
[friendica.git] / src / Module / Register.php
index ad3e1feeacce1932d265bd18996ef7ecb7012657..d26fb0a3d321bfc34096ea852ef7015a4ab6bba3 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2022, the Friendica project
+ * @copyright Copyright (C) 2010-2023, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -161,7 +161,7 @@ class Register extends BaseModule
                        '$ask_password' => $ask_password,
                        '$password1'    => ['password1', DI::l10n()->t('New Password:'), '', DI::l10n()->t('Leave empty for an auto generated password.')],
                        '$password2'    => ['confirm', DI::l10n()->t('Confirm:'), '', ''],
-                       '$nickdesc'     => DI::l10n()->t('Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be "<strong>nickname@%s</strong>".', DI::baseUrl()->getHostname()),
+                       '$nickdesc'     => DI::l10n()->t('Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be "<strong>nickname@%s</strong>".', DI::baseUrl()->getHost()),
                        '$nicklabel'    => DI::l10n()->t('Choose a nickname: '),
                        '$photo'        => $photo,
                        '$publish'      => $profile_publish,
@@ -169,7 +169,7 @@ class Register extends BaseModule
                        '$username'     => $username,
                        '$email'        => $email,
                        '$nickname'     => $nickname,
-                       '$sitename'     => DI::baseUrl()->getHostname(),
+                       '$sitename'     => DI::baseUrl()->getHost(),
                        '$importh'      => DI::l10n()->t('Import'),
                        '$importt'      => DI::l10n()->t('Import your profile to this friendica instance'),
                        '$showtoslink'  => DI::config()->get('system', 'tosdisplay'),
@@ -298,7 +298,7 @@ class Register extends BaseModule
 
                $user = $result['user'];
 
-               $base_url = DI::baseUrl()->get();
+               $base_url = (string)DI::baseUrl();
 
                if ($netpublish && intval(DI::config()->get('config', 'register_policy')) !== self::APPROVE) {
                        $url = $base_url . '/profile/' . $user['nickname'];
@@ -352,7 +352,8 @@ class Register extends BaseModule
                                DI::baseUrl()->redirect();
                        }
                } elseif (intval(DI::config()->get('config', 'register_policy')) === self::APPROVE) {
-                       if (!strlen(DI::config()->get('config', 'admin_email'))) {
+                       if (!User::getAdminEmailList()) {
+                               $this->logger->critical('Registration policy is set to APPROVE but no admin email address has been set in config.admin_email');
                                DI::sysmsg()->addNotice(DI::l10n()->t('Your registration can not be processed.'));
                                DI::baseUrl()->redirect();
                        }
@@ -362,10 +363,17 @@ class Register extends BaseModule
                                DI::sysmsg()->addNotice(DI::l10n()->t('You have to leave a request note for the admin.')
                                        . DI::l10n()->t('Your registration can not be processed.'));
 
-                               DI::baseUrl()->redirect('register/');
+                               $this->baseUrl->redirect('register');
                        }
 
-                       Model\Register::createForApproval($user['uid'], DI::config()->get('system', 'language'), $_POST['permonlybox']);
+                       try {
+                               Model\Register::createForApproval($user['uid'], DI::config()->get('system', 'language'), $_POST['permonlybox']);
+                       } catch (\Throwable $e) {
+                               $this->logger->error('Unable to create a `register` record.', ['user' => $user]);
+                               DI::sysmsg()->addNotice(DI::l10n()->t('An internal error occured.')
+                                       . DI::l10n()->t('Your registration can not be processed.'));
+                               $this->baseUrl->redirect('register');
+                       }
 
                        // invite system
                        if ($using_invites && $invite_id) {
@@ -387,34 +395,23 @@ class Register extends BaseModule
                        DI::sysmsg()->addInfo(DI::l10n()->t('Your registration is pending approval by the site owner.'));
                        DI::baseUrl()->redirect();
                }
-
-               return;
        }
 
        private function sendNotification(array $user, string $event)
        {
-               // send email to admins
-               $admins_stmt = DBA::select(
-                       'user',
-                       ['uid', 'language', 'email'],
-                       ['email' => explode(',', str_replace(' ', '', DI::config()->get('config', 'admin_email')))]
-               );
-
-               // send notification to admins
-               while ($admin = DBA::fetch($admins_stmt)) {
+               foreach (User::getAdminListForEmailing(['uid', 'language', 'email']) as $admin) {
                        DI::notify()->createFromArray([
-                               'type'         => Model\Notification\Type::SYSTEM,
-                               'event'        => $event,
-                               'uid'          => $admin['uid'],
-                               'link'         => DI::baseUrl()->get(true) . '/moderation/users/',
-                               'source_name'  => $user['username'],
-                               'source_mail'  => $user['email'],
-                               'source_nick'  => $user['nickname'],
-                               'source_link'  => DI::baseUrl()->get(true) . '/moderation/users/',
-                               'source_photo' => User::getAvatarUrl($user, Proxy::SIZE_THUMB),
+                               'type'                      => Model\Notification\Type::SYSTEM,
+                               'event'                     => $event,
+                               'uid'                       => $admin['uid'],
+                               'link'                      => DI::baseUrl() . '/moderation/users/',
+                               'source_name'               => $user['username'],
+                               'source_mail'               => $user['email'],
+                               'source_nick'               => $user['nickname'],
+                               'source_link'               => DI::baseUrl() . '/moderation/users/',
+                               'source_photo'              => User::getAvatarUrl($user, Proxy::SIZE_THUMB),
                                'show_in_notification_page' => false
                        ]);
                }
-               DBA::close($admins_stmt);               
        }
 }