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
|
||||
namespace MailPoet\Mailer;
|
||||
|
||||
use MailPoet\Models\Subscriber;
|
||||
|
||||
class MetaInfo {
|
||||
function getSendingTestMetaInfo() {
|
||||
return $this->makeMetaInfo('sending_test', 'unknown', 'administrator');
|
||||
@ -18,6 +20,10 @@ class MetaInfo {
|
||||
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) {
|
||||
return [
|
||||
'email_type' => $email_type,
|
||||
|
@ -4,6 +4,7 @@ namespace MailPoet\Subscribers;
|
||||
|
||||
use Html2Text\Html2Text;
|
||||
use MailPoet\Mailer\Mailer;
|
||||
use MailPoet\Mailer\MetaInfo;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Services\AuthorizedEmailsController;
|
||||
use MailPoet\Services\Bridge;
|
||||
@ -25,6 +26,9 @@ class ConfirmationEmailMailer {
|
||||
/** @var SettingsController */
|
||||
private $settings;
|
||||
|
||||
/** @var MetaInfo */
|
||||
private $mailerMetaInfo;
|
||||
|
||||
/**
|
||||
* @param Mailer|null $mailer
|
||||
*/
|
||||
@ -38,6 +42,7 @@ class ConfirmationEmailMailer {
|
||||
$this->wp = new WPFunctions;
|
||||
}
|
||||
$this->settings = new SettingsController();
|
||||
$this->mailerMetaInfo = new MetaInfo;
|
||||
}
|
||||
|
||||
function sendConfirmationEmail(Subscriber $subscriber) {
|
||||
@ -96,7 +101,10 @@ class ConfirmationEmailMailer {
|
||||
$this->mailer = new Mailer();
|
||||
}
|
||||
$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) {
|
||||
$subscriber->setError(__('Something went wrong with your subscription. Please contact the website owner.', 'mailpoet'));
|
||||
return false;
|
||||
|
@ -3,12 +3,14 @@ namespace MailPoet\Test\Mailer;
|
||||
|
||||
use Codeception\Stub;
|
||||
use MailPoet\Mailer\MetaInfo;
|
||||
use MailPoet\Models\Subscriber;
|
||||
|
||||
class MetaInfoTest extends \MailPoetUnitTest {
|
||||
class MetaInfoTest extends \MailPoetTest {
|
||||
/** @var MetaInfo */
|
||||
private $meta;
|
||||
|
||||
function _before() {
|
||||
parent::_before();
|
||||
$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',
|
||||
'last_name' => 'Mailer',
|
||||
'email' => 'john@mailpoet.com',
|
||||
'status' => 'unconfirmed',
|
||||
'source' => 'api',
|
||||
]);
|
||||
|
||||
$mailer = Stub::makeEmpty(Mailer::class, [
|
||||
'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('<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);
|
||||
|
||||
|
Reference in New Issue
Block a user