Send a confirmation email when a user is added to a website

[MAILPOET-2567]
This commit is contained in:
Pavel Dohnal
2020-01-22 10:25:45 +01:00
committed by Jack Kitterhing
parent de9c151fe4
commit 4c5155132a
5 changed files with 44 additions and 1 deletions

View File

@@ -13,6 +13,7 @@ use MailPoet\WP\Functions as WPFunctions;
* @property string $name
* @property string $type
* @property string $description
* @property string $countConfirmations
*/
class Segment extends Model {

View File

@@ -2,6 +2,7 @@
namespace MailPoet\Segments;
use MailPoet\DI\ContainerWrapper;
use MailPoet\Models\ModelValidator;
use MailPoet\Models\Segment;
use MailPoet\Models\StatisticsClicks;
@@ -10,6 +11,7 @@ use MailPoet\Models\Subscriber;
use MailPoet\Models\SubscriberSegment;
use MailPoet\Newsletter\Scheduler\WelcomeScheduler;
use MailPoet\Settings\SettingsController;
use MailPoet\Subscribers\ConfirmationEmailMailer;
use MailPoet\Subscribers\Source;
use MailPoetVendor\Idiorm\ORM;
@@ -70,6 +72,10 @@ class WP {
$subscriber,
[$wpSegment->id]
);
if ($subscriber->status === Subscriber::STATUS_UNCONFIRMED) {
$confirmationEmailMailer = ContainerWrapper::getInstance()->get(ConfirmationEmailMailer::class);
$confirmationEmailMailer->sendConfirmationEmail($subscriber);
}
// welcome email
if ($scheduleWelcomeNewsletter === true) {

View File

@@ -45,7 +45,6 @@ class ConfirmationEmailMailer {
if ((bool)$signupConfirmation['enabled'] === false) {
return false;
}
if (!$this->wp->isUserLoggedIn() && $subscriber->countConfirmations >= self::MAX_CONFIRMATION_EMAILS) {
return false;
}

View File

@@ -0,0 +1,32 @@
<?php
namespace MailPoet\Test\Acceptance;
use Codeception\Util\Locator;
use MailPoet\Test\DataFactories\Settings;
class CreateNewWordPressUserCest {
/** @var Settings */
private $settings;
protected function _inject(Settings $settings) {
$this->settings = $settings;
}
public function sendConfirmationEmail(\AcceptanceTester $i) {
$i->wantTo('Create a new wordpress user and check if the confirmation email is sent');
$this->settings->withConfirmationEmailEnabled();
//create a wp user with wp role subscriber
$i->cli(['user', 'create', 'narwhal', 'standardtest@example.com', '--role=subscriber']);
$i->amOnMailboxAppPage();
$i->waitForElement(Locator::contains('span.subject', 'Confirm your subscription'));
$i->click(Locator::contains('span.subject', 'Confirm your subscription'));
$i->switchToIframe('preview-html');
$i->click('I confirm my subscription!');
$i->switchToNextTab();
$i->see('You have subscribed');
$i->seeNoJSErrors();
}
}

View File

@@ -43,12 +43,17 @@ class WPTest extends \MailPoetTest {
}
public function testSynchronizeUserStatusIsUnconfirmedForNewUserWithSignUpConfirmationEnabled() {
$this->settings->set('sender', [
'address' => 'sender@mailpoet.com',
'name' => 'Sender',
]);
$this->settings->set('signup_confirmation', ['enabled' => '1']);
$randomNumber = rand();
$id = $this->insertUser($randomNumber);
WP::synchronizeUser($id);
$wpSubscriber = Segment::getWPSegment()->subscribers()->where('wp_user_id', $id)->findOne();
expect($wpSubscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED);
expect($wpSubscriber->countConfirmations)->equals(1);
}
public function testSynchronizeUsersStatusIsSubscribedForNewUsersWithSignUpConfirmationDisabled() {