sendConfirmationEmail = (bool)$params['sendConfirmationEmail']; } } public function setConfig( Config $config ) { parent::setConfig( $config ); if ( $this->sendConfirmationEmail === null ) { $this->sendConfirmationEmail = $this->config->get( 'EnableEmail' ) && $this->config->get( 'EmailAuthentication' ); } } public function getAuthenticationRequests( $action, array $options ) { return []; } public function beginSecondaryAuthentication( $user, array $reqs ) { return AuthenticationResponse::newAbstain(); } public function beginSecondaryAccountCreation( $user, $creator, array $reqs ) { if ( $this->sendConfirmationEmail && $user->getEmail() && !$this->manager->getAuthenticationSessionData( 'no-email' ) ) { // TODO show 'confirmemail_oncreate'/'confirmemail_sendfailed' message wfGetDB( DB_MASTER )->onTransactionIdle( function () use ( $user ) { $user = $user->getInstanceForUpdate(); $status = $user->sendConfirmationMail(); $user->saveSettings(); if ( !$status->isGood() ) { $this->logger->warning( 'Could not send confirmation email: ' . $status->getWikiText( false, false, 'en' ) ); } }, __METHOD__ ); } return AuthenticationResponse::newPass(); } }