Fix a regression in 1f76c1e4 that stopped sending email confirmation on registration

This commit is contained in:
Mikael Nordfeldth 2016-03-02 14:35:08 +01:00
parent 6336248d71
commit 346a73c36f
1 changed files with 17 additions and 12 deletions

View File

@ -343,7 +343,8 @@ class User extends Managed_DataObject
$invite->convert($user); $invite->convert($user);
} }
if (!empty($email) && !$user->email) { if (!empty($email) && empty($user->email)) {
// The actual email will be sent further down, after the database COMMIT
$confirm = new Confirm_address(); $confirm = new Confirm_address();
$confirm->code = common_confirmation_code(128); $confirm->code = common_confirmation_code(128);
@ -353,7 +354,7 @@ class User extends Managed_DataObject
$result = $confirm->insert(); $result = $confirm->insert();
if (!$result) { if ($result===false) {
common_log_db_error($confirm, 'INSERT', __FILE__); common_log_db_error($confirm, 'INSERT', __FILE__);
$profile->query('ROLLBACK'); $profile->query('ROLLBACK');
// TRANS: Email confirmation data could not be inserted for some reason. // TRANS: Email confirmation data could not be inserted for some reason.
@ -381,11 +382,12 @@ class User extends Managed_DataObject
$profile->query('COMMIT'); $profile->query('COMMIT');
if (!empty($email) && !empty($user->email)) { if (!empty($email) && empty($user->email)) {
try { try {
mail_confirm_address($user, $confirm->code, $profile->nickname, $email); require_once(INSTALLDIR . '/lib/mail.php');
mail_confirm_address($user, $confirm->code, $profile->getNickname(), $email);
} catch (EmailException $e) { } catch (EmailException $e) {
common_log(LOG_ERR, "Could not send user registration email for user id=={$user->id}: {$e->getMessage()}"); common_log(LOG_ERR, "Could not send user registration email for user id=={$profile->getID()}: {$e->getMessage()}");
if (!$accept_email_fail) { if (!$accept_email_fail) {
throw $e; throw $e;
} }
@ -407,7 +409,7 @@ class User extends Managed_DataObject
// TRANS: %1$s is the sitename, $2$s is the registering user's nickname. // TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
sprintf(_('Welcome to %1$s, @%2$s!'), sprintf(_('Welcome to %1$s, @%2$s!'),
common_config('site', 'name'), common_config('site', 'name'),
$user->nickname), $profile->getNickname()),
'system'); 'system');
} }
} }
@ -415,7 +417,7 @@ class User extends Managed_DataObject
Event::handle('EndUserRegister', array($profile)); Event::handle('EndUserRegister', array($profile));
} }
if (!$user instanceof User) { if (!$user instanceof User || empty($user->id)) {
throw new ServerException('User could not be registered. Probably an event hook that failed.'); throw new ServerException('User could not be registered. Probably an event hook that failed.');
} }
@ -433,13 +435,14 @@ class User extends Managed_DataObject
if ($invites->find()) { if ($invites->find()) {
while ($invites->fetch()) { while ($invites->fetch()) {
try { try {
$other = Profile::getKV('id', $invites->user_id); $other = Profile::getByID($invites->user_id);
if (!($other instanceof Profile)) { // remove when getKV throws exceptions
continue;
}
Subscription::start($other, $this->getProfile()); Subscription::start($other, $this->getProfile());
} catch (NoResultException $e) {
// profile did not exist
} catch (AlreadyFulfilledException $e) {
// already subscribed to this profile
} catch (Exception $e) { } catch (Exception $e) {
continue; common_log(LOG_ERR, 'On-invitation-completion subscription failed when subscribing '._ve($invites->user_id).' to '.$this->getProfile()->getID().': '._ve($e->getMessage()));
} }
} }
} }
@ -873,6 +876,8 @@ class User extends Managed_DataObject
static function recoverPassword($nore) static function recoverPassword($nore)
{ {
require_once(INSTALLDIR . '/lib/mail.php');
// $confirm_email will be used as a fallback if our user doesn't have a confirmed email // $confirm_email will be used as a fallback if our user doesn't have a confirmed email
$confirm_email = null; $confirm_email = null;