Add meta when sending confirmation emails
[MAILPOET-2333]
This commit is contained in:
committed by
Jack Kitterhing
parent
553df6c135
commit
eebe6e828f
@ -1,6 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace MailPoet\Mailer;
|
namespace MailPoet\Mailer;
|
||||||
|
|
||||||
|
use MailPoet\Models\Subscriber;
|
||||||
|
|
||||||
class MetaInfo {
|
class MetaInfo {
|
||||||
function getSendingTestMetaInfo() {
|
function getSendingTestMetaInfo() {
|
||||||
return $this->makeMetaInfo('sending_test', 'unknown', 'administrator');
|
return $this->makeMetaInfo('sending_test', 'unknown', 'administrator');
|
||||||
@ -18,6 +20,10 @@ class MetaInfo {
|
|||||||
return $this->makeMetaInfo('transactional', 'unknown', 'administrator');
|
return $this->makeMetaInfo('transactional', 'unknown', 'administrator');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getConfirmationMetaInfo(Subscriber $subscriber) {
|
||||||
|
return $this->makeMetaInfo('confirmation', $subscriber->status, $subscriber->source);
|
||||||
|
}
|
||||||
|
|
||||||
private function makeMetaInfo($email_type, $subscriber_status, $subscriber_source) {
|
private function makeMetaInfo($email_type, $subscriber_status, $subscriber_source) {
|
||||||
return [
|
return [
|
||||||
'email_type' => $email_type,
|
'email_type' => $email_type,
|
||||||
|
@ -4,6 +4,7 @@ namespace MailPoet\Subscribers;
|
|||||||
|
|
||||||
use Html2Text\Html2Text;
|
use Html2Text\Html2Text;
|
||||||
use MailPoet\Mailer\Mailer;
|
use MailPoet\Mailer\Mailer;
|
||||||
|
use MailPoet\Mailer\MetaInfo;
|
||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Models\Subscriber;
|
||||||
use MailPoet\Services\AuthorizedEmailsController;
|
use MailPoet\Services\AuthorizedEmailsController;
|
||||||
use MailPoet\Services\Bridge;
|
use MailPoet\Services\Bridge;
|
||||||
@ -25,6 +26,9 @@ class ConfirmationEmailMailer {
|
|||||||
/** @var SettingsController */
|
/** @var SettingsController */
|
||||||
private $settings;
|
private $settings;
|
||||||
|
|
||||||
|
/** @var MetaInfo */
|
||||||
|
private $mailerMetaInfo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Mailer|null $mailer
|
* @param Mailer|null $mailer
|
||||||
*/
|
*/
|
||||||
@ -38,6 +42,7 @@ class ConfirmationEmailMailer {
|
|||||||
$this->wp = new WPFunctions;
|
$this->wp = new WPFunctions;
|
||||||
}
|
}
|
||||||
$this->settings = new SettingsController();
|
$this->settings = new SettingsController();
|
||||||
|
$this->mailerMetaInfo = new MetaInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
function sendConfirmationEmail(Subscriber $subscriber) {
|
function sendConfirmationEmail(Subscriber $subscriber) {
|
||||||
@ -96,7 +101,10 @@ class ConfirmationEmailMailer {
|
|||||||
$this->mailer = new Mailer();
|
$this->mailer = new Mailer();
|
||||||
}
|
}
|
||||||
$this->mailer->init();
|
$this->mailer->init();
|
||||||
$result = $this->mailer->send($email, $subscriber);
|
$extra_params = [
|
||||||
|
'meta' => $this->mailerMetaInfo->getConfirmationMetaInfo($subscriber),
|
||||||
|
];
|
||||||
|
$result = $this->mailer->send($email, $subscriber, $extra_params);
|
||||||
if ($result['response'] === false) {
|
if ($result['response'] === false) {
|
||||||
$subscriber->setError(__('Something went wrong with your subscription. Please contact the website owner.', 'mailpoet'));
|
$subscriber->setError(__('Something went wrong with your subscription. Please contact the website owner.', 'mailpoet'));
|
||||||
return false;
|
return false;
|
||||||
|
@ -3,12 +3,14 @@ namespace MailPoet\Test\Mailer;
|
|||||||
|
|
||||||
use Codeception\Stub;
|
use Codeception\Stub;
|
||||||
use MailPoet\Mailer\MetaInfo;
|
use MailPoet\Mailer\MetaInfo;
|
||||||
|
use MailPoet\Models\Subscriber;
|
||||||
|
|
||||||
class MetaInfoTest extends \MailPoetUnitTest {
|
class MetaInfoTest extends \MailPoetTest {
|
||||||
/** @var MetaInfo */
|
/** @var MetaInfo */
|
||||||
private $meta;
|
private $meta;
|
||||||
|
|
||||||
function _before() {
|
function _before() {
|
||||||
|
parent::_before();
|
||||||
$this->meta = new MetaInfo;
|
$this->meta = new MetaInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,4 +46,20 @@ class MetaInfoTest extends \MailPoetUnitTest {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function testItGetsMetaInfoForConfirmationEmails() {
|
||||||
|
$subscriber = Subscriber::createOrUpdate([
|
||||||
|
'email' => 'meta@test.fake',
|
||||||
|
'status' => 'unconfirmed',
|
||||||
|
'source' => 'form',
|
||||||
|
]);
|
||||||
|
expect($this->meta->getConfirmationMetaInfo($subscriber))->equals([
|
||||||
|
'email_type' => 'confirmation',
|
||||||
|
'subscriber_status' => 'unconfirmed',
|
||||||
|
'subscriber_source' => 'form',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function _after() {
|
||||||
|
Subscriber::deleteMany();
|
||||||
|
}
|
||||||
}
|
}
|
@ -23,13 +23,20 @@ class ConfirmationEmailMailerTest extends \MailPoetTest {
|
|||||||
'first_name' => 'John',
|
'first_name' => 'John',
|
||||||
'last_name' => 'Mailer',
|
'last_name' => 'Mailer',
|
||||||
'email' => 'john@mailpoet.com',
|
'email' => 'john@mailpoet.com',
|
||||||
|
'status' => 'unconfirmed',
|
||||||
|
'source' => 'api',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$mailer = Stub::makeEmpty(Mailer::class, [
|
$mailer = Stub::makeEmpty(Mailer::class, [
|
||||||
'send' =>
|
'send' =>
|
||||||
Stub\Expected::once(function($email) {
|
Stub\Expected::once(function($email, $subscriber, $extra_params) {
|
||||||
expect($email['body']['html'])->contains('<strong>Test segment</strong>');
|
expect($email['body']['html'])->contains('<strong>Test segment</strong>');
|
||||||
expect($email['body']['html'])->contains('<a target="_blank" href="http://example.com">I confirm my subscription!</a>');
|
expect($email['body']['html'])->contains('<a target="_blank" href="http://example.com">I confirm my subscription!</a>');
|
||||||
|
expect($extra_params['meta'])->equals([
|
||||||
|
'email_type' => 'confirmation',
|
||||||
|
'subscriber_status' => 'unconfirmed',
|
||||||
|
'subscriber_source' => 'api',
|
||||||
|
]);
|
||||||
}),
|
}),
|
||||||
], $this);
|
], $this);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user