Add meta when sending new subscriber notifications

[MAILPOET-2333]
This commit is contained in:
Amine Ben hammou
2019-09-13 03:20:45 +01:00
committed by Jack Kitterhing
parent eebe6e828f
commit 3dcde4170e
4 changed files with 27 additions and 2 deletions

View File

@ -24,6 +24,10 @@ class MetaInfo {
return $this->makeMetaInfo('confirmation', $subscriber->status, $subscriber->source); return $this->makeMetaInfo('confirmation', $subscriber->status, $subscriber->source);
} }
function getNewSubscriberNotificationMetaInfo() {
return $this->makeMetaInfo('new_subscriber_notification', 'unknown', 'administrator');
}
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,

View File

@ -3,6 +3,7 @@ namespace MailPoet\Subscribers;
use MailPoet\Config\Renderer; use MailPoet\Config\Renderer;
use MailPoet\Mailer\Mailer; use MailPoet\Mailer\Mailer;
use MailPoet\Mailer\MetaInfo;
use MailPoet\Models\Segment; use MailPoet\Models\Segment;
use MailPoet\Models\Subscriber; use MailPoet\Models\Subscriber;
use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsController;
@ -21,6 +22,9 @@ class NewSubscriberNotificationMailer {
/** @var SettingsController */ /** @var SettingsController */
private $settings; private $settings;
/** @var MetaInfo */
private $mailerMetaInfo;
/** /**
* @param \MailPoet\Mailer\Mailer|null $mailer * @param \MailPoet\Mailer\Mailer|null $mailer
* @param Renderer|null $renderer * @param Renderer|null $renderer
@ -35,6 +39,7 @@ class NewSubscriberNotificationMailer {
} }
$this->mailer = $mailer; $this->mailer = $mailer;
$this->settings = new SettingsController(); $this->settings = new SettingsController();
$this->mailerMetaInfo = new MetaInfo();
} }
/** /**
@ -49,7 +54,10 @@ class NewSubscriberNotificationMailer {
return; return;
} }
try { try {
$this->getMailer()->send($this->constructNewsletter($subscriber, $segments), $settings['address']); $extra_params = [
'meta' => $this->mailerMetaInfo->getNewSubscriberNotificationMetaInfo(),
];
$this->getMailer()->send($this->constructNewsletter($subscriber, $segments), $settings['address'], $extra_params);
} catch (\Exception $e) { } catch (\Exception $e) {
if (WP_DEBUG) { if (WP_DEBUG) {
throw $e; throw $e;

View File

@ -59,6 +59,14 @@ class MetaInfoTest extends \MailPoetTest {
]); ]);
} }
function testItGetsMetaInfoForNewSubscriberNotifications() {
expect($this->meta->getNewSubscriberNotificationMetaInfo())->equals([
'email_type' => 'new_subscriber_notification',
'subscriber_status' => 'unknown',
'subscriber_source' => 'administrator',
]);
}
function _after() { function _after() {
Subscriber::deleteMany(); Subscriber::deleteMany();
} }

View File

@ -65,7 +65,7 @@ class NewSubscriberNotificationMailerTest extends \MailPoetTest {
$mailer = Stub::makeEmpty(Mailer::class, [ $mailer = Stub::makeEmpty(Mailer::class, [
'send' => 'send' =>
Expected::once(function($newsletter, $subscriber) { Expected::once(function($newsletter, $subscriber, $extra_params) {
expect($subscriber)->equals('a@b.c'); expect($subscriber)->equals('a@b.c');
expect($newsletter)->hasKey('subject'); expect($newsletter)->hasKey('subject');
expect($newsletter)->hasKey('body'); expect($newsletter)->hasKey('body');
@ -76,6 +76,11 @@ class NewSubscriberNotificationMailerTest extends \MailPoetTest {
expect($newsletter['body'])->count(2); expect($newsletter['body'])->count(2);
expect($newsletter['body']['text'])->contains('subscriber@example.com'); expect($newsletter['body']['text'])->contains('subscriber@example.com');
expect($newsletter['body']['html'])->contains('subscriber@example.com'); expect($newsletter['body']['html'])->contains('subscriber@example.com');
expect($extra_params['meta'])->equals([
'email_type' => 'new_subscriber_notification',
'subscriber_status' => 'unknown',
'subscriber_source' => 'administrator',
]);
}), }),
], $this); ], $this);