Use Newsletter\Links as service
[MAILPOET-3269]
This commit is contained in:
@ -16,8 +16,15 @@ class Links {
|
|||||||
/** @var LinkTokens */
|
/** @var LinkTokens */
|
||||||
private $linkTokens;
|
private $linkTokens;
|
||||||
|
|
||||||
public function __construct(LinkTokens $linkTokens) {
|
/** @var NewsletterLinks */
|
||||||
|
private $newsletterLinks;
|
||||||
|
|
||||||
|
public function __construct(
|
||||||
|
LinkTokens $linkTokens,
|
||||||
|
NewsletterLinks $newsletterLinks
|
||||||
|
) {
|
||||||
$this->linkTokens = $linkTokens;
|
$this->linkTokens = $linkTokens;
|
||||||
|
$this->newsletterLinks = $newsletterLinks;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function process($renderedNewsletter, $newsletter, $queue) {
|
public function process($renderedNewsletter, $newsletter, $queue) {
|
||||||
@ -29,8 +36,8 @@ class Links {
|
|||||||
public function hashAndReplaceLinks($renderedNewsletter, $newsletterId, $queueId) {
|
public function hashAndReplaceLinks($renderedNewsletter, $newsletterId, $queueId) {
|
||||||
// join HTML and TEXT rendered body into a text string
|
// join HTML and TEXT rendered body into a text string
|
||||||
$content = Helpers::joinObject($renderedNewsletter);
|
$content = Helpers::joinObject($renderedNewsletter);
|
||||||
list($content, $links) = NewsletterLinks::process($content, $newsletterId, $queueId);
|
[$content, $links] = $this->newsletterLinks->process($content, $newsletterId, $queueId);
|
||||||
$links = NewsletterLinks::ensureInstantUnsubscribeLink($links);
|
$links = $this->newsletterLinks->ensureInstantUnsubscribeLink($links);
|
||||||
// split the processed body with hashed links back to HTML and TEXT
|
// split the processed body with hashed links back to HTML and TEXT
|
||||||
list($renderedNewsletter['html'], $renderedNewsletter['text'])
|
list($renderedNewsletter['html'], $renderedNewsletter['text'])
|
||||||
= Helpers::splitObject($content);
|
= Helpers::splitObject($content);
|
||||||
@ -41,7 +48,7 @@ class Links {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function saveLinks($links, $newsletter, $queue) {
|
public function saveLinks($links, $newsletter, $queue) {
|
||||||
return NewsletterLinks::save($links, $newsletter->id, $queue->id);
|
return $this->newsletterLinks->save($links, $newsletter->id, $queue->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getUnsubscribeUrl($queue, $subscriberId) {
|
public function getUnsubscribeUrl($queue, $subscriberId) {
|
||||||
@ -54,7 +61,7 @@ class Links {
|
|||||||
if (!$linkHash instanceof NewsletterLinkModel) {
|
if (!$linkHash instanceof NewsletterLinkModel) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
$data = NewsletterLinks::createUrlDataObject(
|
$data = $this->newsletterLinks->createUrlDataObject(
|
||||||
$subscriber->id,
|
$subscriber->id,
|
||||||
$this->linkTokens->getToken($subscriber),
|
$this->linkTokens->getToken($subscriber),
|
||||||
$queue->id,
|
$queue->id,
|
||||||
|
@ -49,6 +49,9 @@ class Newsletter {
|
|||||||
/** @var LinksTask */
|
/** @var LinksTask */
|
||||||
private $linksTask;
|
private $linksTask;
|
||||||
|
|
||||||
|
/** @var NewsletterLinks */
|
||||||
|
private $newsletterLinks;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
WPFunctions $wp = null,
|
WPFunctions $wp = null,
|
||||||
PostsTask $postsTask = null,
|
PostsTask $postsTask = null,
|
||||||
@ -66,7 +69,7 @@ class Newsletter {
|
|||||||
}
|
}
|
||||||
$this->postsTask = $postsTask;
|
$this->postsTask = $postsTask;
|
||||||
if ($gaTracking === null) {
|
if ($gaTracking === null) {
|
||||||
$gaTracking = new GATracking;
|
$gaTracking = ContainerWrapper::getInstance()->get(GATracking::class);
|
||||||
}
|
}
|
||||||
$this->gaTracking = $gaTracking;
|
$this->gaTracking = $gaTracking;
|
||||||
$this->loggerFactory = LoggerFactory::getInstance();
|
$this->loggerFactory = LoggerFactory::getInstance();
|
||||||
@ -77,6 +80,7 @@ class Newsletter {
|
|||||||
$this->renderer = ContainerWrapper::getInstance()->get(Renderer::class);
|
$this->renderer = ContainerWrapper::getInstance()->get(Renderer::class);
|
||||||
$this->newslettersRepository = ContainerWrapper::getInstance()->get(NewslettersRepository::class);
|
$this->newslettersRepository = ContainerWrapper::getInstance()->get(NewslettersRepository::class);
|
||||||
$this->linksTask = ContainerWrapper::getInstance()->get(LinksTask::class);
|
$this->linksTask = ContainerWrapper::getInstance()->get(LinksTask::class);
|
||||||
|
$this->newsletterLinks = ContainerWrapper::getInstance()->get(NewsletterLinks::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getNewsletterFromQueue($queue) {
|
public function getNewsletterFromQueue($queue) {
|
||||||
@ -209,7 +213,7 @@ class Newsletter {
|
|||||||
$queue
|
$queue
|
||||||
);
|
);
|
||||||
if ($this->trackingEnabled) {
|
if ($this->trackingEnabled) {
|
||||||
$preparedNewsletter = NewsletterLinks::replaceSubscriberData(
|
$preparedNewsletter = $this->newsletterLinks->replaceSubscriberData(
|
||||||
$subscriber->id,
|
$subscriber->id,
|
||||||
$queue->id,
|
$queue->id,
|
||||||
$preparedNewsletter
|
$preparedNewsletter
|
||||||
|
@ -321,6 +321,7 @@ class ContainerConfigurator implements IContainerConfigurator {
|
|||||||
$container->autowire(\MailPoet\Newsletter\NewslettersRepository::class)->setPublic(true);
|
$container->autowire(\MailPoet\Newsletter\NewslettersRepository::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Newsletter\AutomaticEmailsRepository::class)->setPublic(true);
|
$container->autowire(\MailPoet\Newsletter\AutomaticEmailsRepository::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Newsletter\NewsletterHtmlSanitizer::class)->setPublic(true);
|
$container->autowire(\MailPoet\Newsletter\NewsletterHtmlSanitizer::class)->setPublic(true);
|
||||||
|
$container->autowire(\MailPoet\Newsletter\Links\Links::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Newsletter\Listing\NewsletterListingRepository::class)->setPublic(true);
|
$container->autowire(\MailPoet\Newsletter\Listing\NewsletterListingRepository::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Newsletter\Options\NewsletterOptionsRepository::class)->setPublic(true);
|
$container->autowire(\MailPoet\Newsletter\Options\NewsletterOptionsRepository::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Newsletter\Options\NewsletterOptionFieldsRepository::class)->setPublic(true);
|
$container->autowire(\MailPoet\Newsletter\Options\NewsletterOptionFieldsRepository::class)->setPublic(true);
|
||||||
@ -355,6 +356,7 @@ class ContainerConfigurator implements IContainerConfigurator {
|
|||||||
$container->autowire(\MailPoet\Newsletter\Sending\SendingQueuesRepository::class)->setPublic(true);
|
$container->autowire(\MailPoet\Newsletter\Sending\SendingQueuesRepository::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Newsletter\ViewInBrowser\ViewInBrowserController::class)->setPublic(true);
|
$container->autowire(\MailPoet\Newsletter\ViewInBrowser\ViewInBrowserController::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Newsletter\ViewInBrowser\ViewInBrowserRenderer::class)->setPublic(true);
|
$container->autowire(\MailPoet\Newsletter\ViewInBrowser\ViewInBrowserRenderer::class)->setPublic(true);
|
||||||
|
$container->autowire(\MailPoet\Statistics\GATracking::class)->setPublic(true);
|
||||||
// Newsletter templates
|
// Newsletter templates
|
||||||
$container->autowire(\MailPoet\NewsletterTemplates\NewsletterTemplatesRepository::class)->setPublic(true);
|
$container->autowire(\MailPoet\NewsletterTemplates\NewsletterTemplatesRepository::class)->setPublic(true);
|
||||||
// Util
|
// Util
|
||||||
|
@ -27,16 +27,21 @@ class ViewInBrowserRenderer {
|
|||||||
/** @var Shortcodes */
|
/** @var Shortcodes */
|
||||||
private $shortcodes;
|
private $shortcodes;
|
||||||
|
|
||||||
|
/** @var Links */
|
||||||
|
private $links;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
Emoji $emoji,
|
Emoji $emoji,
|
||||||
SettingsController $settings,
|
SettingsController $settings,
|
||||||
Shortcodes $shortcodes,
|
Shortcodes $shortcodes,
|
||||||
Renderer $renderer
|
Renderer $renderer,
|
||||||
|
Links $links
|
||||||
) {
|
) {
|
||||||
$this->emoji = $emoji;
|
$this->emoji = $emoji;
|
||||||
$this->isTrackingEnabled = $settings->get('tracking.enabled');
|
$this->isTrackingEnabled = $settings->get('tracking.enabled');
|
||||||
$this->renderer = $renderer;
|
$this->renderer = $renderer;
|
||||||
$this->shortcodes = $shortcodes;
|
$this->shortcodes = $shortcodes;
|
||||||
|
$this->links = $links;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function render(
|
public function render(
|
||||||
@ -58,8 +63,8 @@ class ViewInBrowserRenderer {
|
|||||||
// isolate "view in browser", "unsubscribe" and "manage subscription" links
|
// isolate "view in browser", "unsubscribe" and "manage subscription" links
|
||||||
// and convert them to shortcodes, which later will be replaced with "#" when
|
// and convert them to shortcodes, which later will be replaced with "#" when
|
||||||
// newsletter is previewed
|
// newsletter is previewed
|
||||||
if ($wpUserPreview && preg_match(Links::getLinkRegex(), $newsletterBody)) {
|
if ($wpUserPreview && preg_match($this->links->getLinkRegex(), $newsletterBody)) {
|
||||||
$newsletterBody = Links::convertHashedLinksToShortcodesAndUrls(
|
$newsletterBody = $this->links->convertHashedLinksToShortcodesAndUrls(
|
||||||
$newsletterBody,
|
$newsletterBody,
|
||||||
$queue->getId(),
|
$queue->getId(),
|
||||||
$convertAll = true
|
$convertAll = true
|
||||||
@ -82,7 +87,7 @@ class ViewInBrowserRenderer {
|
|||||||
);
|
);
|
||||||
$renderedNewsletter = $this->shortcodes->replace($newsletterBody);
|
$renderedNewsletter = $this->shortcodes->replace($newsletterBody);
|
||||||
if (!$wpUserPreview && $queue && $subscriber && $this->isTrackingEnabled) {
|
if (!$wpUserPreview && $queue && $subscriber && $this->isTrackingEnabled) {
|
||||||
$renderedNewsletter = Links::replaceSubscriberData(
|
$renderedNewsletter = $this->links->replaceSubscriberData(
|
||||||
$subscriber->getId(),
|
$subscriber->getId(),
|
||||||
$queue->getId(),
|
$queue->getId(),
|
||||||
$renderedNewsletter
|
$renderedNewsletter
|
||||||
|
@ -47,6 +47,9 @@ class Track {
|
|||||||
/** @var NewsletterLinkRepository */
|
/** @var NewsletterLinkRepository */
|
||||||
private $newsletterLinkRepository;
|
private $newsletterLinkRepository;
|
||||||
|
|
||||||
|
/** @var Links */
|
||||||
|
private $links;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
Clicks $clicks,
|
Clicks $clicks,
|
||||||
Opens $opens,
|
Opens $opens,
|
||||||
@ -54,7 +57,8 @@ class Track {
|
|||||||
SubscribersRepository $subscribersRepository,
|
SubscribersRepository $subscribersRepository,
|
||||||
NewslettersRepository $newslettersRepository,
|
NewslettersRepository $newslettersRepository,
|
||||||
NewsletterLinkRepository $newsletterLinkRepository,
|
NewsletterLinkRepository $newsletterLinkRepository,
|
||||||
LinkTokens $linkTokens
|
LinkTokens $linkTokens,
|
||||||
|
Links $links
|
||||||
) {
|
) {
|
||||||
$this->clicks = $clicks;
|
$this->clicks = $clicks;
|
||||||
$this->opens = $opens;
|
$this->opens = $opens;
|
||||||
@ -63,6 +67,7 @@ class Track {
|
|||||||
$this->subscribersRepository = $subscribersRepository;
|
$this->subscribersRepository = $subscribersRepository;
|
||||||
$this->newslettersRepository = $newslettersRepository;
|
$this->newslettersRepository = $newslettersRepository;
|
||||||
$this->newsletterLinkRepository = $newsletterLinkRepository;
|
$this->newsletterLinkRepository = $newsletterLinkRepository;
|
||||||
|
$this->links = $links;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function click($data) {
|
public function click($data) {
|
||||||
@ -74,7 +79,7 @@ class Track {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function _processTrackData($data) {
|
public function _processTrackData($data) {
|
||||||
$data = (object)Links::transformUrlDataObject($data);
|
$data = (object)$this->links->transformUrlDataObject($data);
|
||||||
if (empty($data->queue_id) || // phpcs:ignore Squiz.NamingConventions.ValidVariableName.NotCamelCaps
|
if (empty($data->queue_id) || // phpcs:ignore Squiz.NamingConventions.ValidVariableName.NotCamelCaps
|
||||||
empty($data->subscriber_id) || // phpcs:ignore Squiz.NamingConventions.ValidVariableName.NotCamelCaps
|
empty($data->subscriber_id) || // phpcs:ignore Squiz.NamingConventions.ValidVariableName.NotCamelCaps
|
||||||
empty($data->subscriber_token) // phpcs:ignore Squiz.NamingConventions.ValidVariableName.NotCamelCaps
|
empty($data->subscriber_token) // phpcs:ignore Squiz.NamingConventions.ValidVariableName.NotCamelCaps
|
||||||
|
@ -12,8 +12,12 @@ class GATracking {
|
|||||||
/** @var SecondLevelDomainNames */
|
/** @var SecondLevelDomainNames */
|
||||||
private $secondLevelDomainNames;
|
private $secondLevelDomainNames;
|
||||||
|
|
||||||
public function __construct() {
|
/** @var NewsletterLinks */
|
||||||
|
private $newsletterLinks;
|
||||||
|
|
||||||
|
public function __construct(NewsletterLinks $newsletterLinks) {
|
||||||
$this->secondLevelDomainNames = new SecondLevelDomainNames();
|
$this->secondLevelDomainNames = new SecondLevelDomainNames();
|
||||||
|
$this->newsletterLinks = $newsletterLinks;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function applyGATracking($renderedNewsletter, $newsletter, $internalHost = null) {
|
public function applyGATracking($renderedNewsletter, $newsletter, $internalHost = null) {
|
||||||
@ -32,9 +36,9 @@ class GATracking {
|
|||||||
private function addGAParamsToLinks($renderedNewsletter, $gaCampaign, $internalHost = null) {
|
private function addGAParamsToLinks($renderedNewsletter, $gaCampaign, $internalHost = null) {
|
||||||
// join HTML and TEXT rendered body into a text string
|
// join HTML and TEXT rendered body into a text string
|
||||||
$content = Helpers::joinObject($renderedNewsletter);
|
$content = Helpers::joinObject($renderedNewsletter);
|
||||||
$extractedLinks = NewsletterLinks::extract($content);
|
$extractedLinks = $this->newsletterLinks->extract($content);
|
||||||
$processedLinks = $this->addParams($extractedLinks, $gaCampaign, $internalHost);
|
$processedLinks = $this->addParams($extractedLinks, $gaCampaign, $internalHost);
|
||||||
list($content, $links) = NewsletterLinks::replace($content, $processedLinks);
|
list($content, $links) = $this->newsletterLinks->replace($content, $processedLinks);
|
||||||
// split the processed body with hashed links back to HTML and TEXT
|
// split the processed body with hashed links back to HTML and TEXT
|
||||||
list($renderedNewsletter['html'], $renderedNewsletter['text'])
|
list($renderedNewsletter['html'], $renderedNewsletter['text'])
|
||||||
= Helpers::splitObject($content);
|
= Helpers::splitObject($content);
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace MailPoet\Subscription;
|
namespace MailPoet\Subscription;
|
||||||
|
|
||||||
|
use MailPoet\DI\ContainerWrapper;
|
||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Models\Subscriber;
|
||||||
use MailPoet\Router\Endpoints\Subscription as SubscriptionEndpoint;
|
use MailPoet\Router\Endpoints\Subscription as SubscriptionEndpoint;
|
||||||
use MailPoet\Router\Router;
|
use MailPoet\Router\Router;
|
||||||
@ -111,7 +112,8 @@ class SubscriptionUrlFactory {
|
|||||||
*/
|
*/
|
||||||
public static function getInstance() {
|
public static function getInstance() {
|
||||||
if (!self::$instance instanceof SubscriptionUrlFactory) {
|
if (!self::$instance instanceof SubscriptionUrlFactory) {
|
||||||
self::$instance = new SubscriptionUrlFactory(new WPFunctions, SettingsController::getInstance(), new LinkTokens);
|
$linkTokens = ContainerWrapper::getInstance()->get(LinkTokens::class);
|
||||||
|
self::$instance = new SubscriptionUrlFactory(new WPFunctions, SettingsController::getInstance(), $linkTokens);
|
||||||
}
|
}
|
||||||
return self::$instance;
|
return self::$instance;
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ use MailPoet\Cron\CronHelper;
|
|||||||
use MailPoet\Cron\Workers\SendingQueue\SendingErrorHandler;
|
use MailPoet\Cron\Workers\SendingQueue\SendingErrorHandler;
|
||||||
use MailPoet\Cron\Workers\SendingQueue\SendingQueue as SendingQueueWorker;
|
use MailPoet\Cron\Workers\SendingQueue\SendingQueue as SendingQueueWorker;
|
||||||
use MailPoet\Cron\Workers\SendingQueue\SendingThrottlingHandler;
|
use MailPoet\Cron\Workers\SendingQueue\SendingThrottlingHandler;
|
||||||
|
use MailPoet\Cron\Workers\SendingQueue\Tasks\Links as TasksLinks;
|
||||||
use MailPoet\Cron\Workers\SendingQueue\Tasks\Mailer as MailerTask;
|
use MailPoet\Cron\Workers\SendingQueue\Tasks\Mailer as MailerTask;
|
||||||
use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterTask;
|
use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterTask;
|
||||||
use MailPoet\Cron\Workers\StatsNotifications\Scheduler as StatsNotificationsScheduler;
|
use MailPoet\Cron\Workers\StatsNotifications\Scheduler as StatsNotificationsScheduler;
|
||||||
@ -79,6 +80,8 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
private $segmentsRepository;
|
private $segmentsRepository;
|
||||||
/** @var WPFunctions */
|
/** @var WPFunctions */
|
||||||
private $wp;
|
private $wp;
|
||||||
|
/** @var TasksLinks */
|
||||||
|
private $tasksLinks;
|
||||||
|
|
||||||
public function _before() {
|
public function _before() {
|
||||||
parent::_before();
|
parent::_before();
|
||||||
@ -131,6 +134,7 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
$this->cronHelper = $this->diContainer->get(CronHelper::class);
|
$this->cronHelper = $this->diContainer->get(CronHelper::class);
|
||||||
$this->newslettersRepository = $this->diContainer->get(NewslettersRepository::class);
|
$this->newslettersRepository = $this->diContainer->get(NewslettersRepository::class);
|
||||||
$this->segmentsRepository = $this->diContainer->get(SegmentsRepository::class);
|
$this->segmentsRepository = $this->diContainer->get(SegmentsRepository::class);
|
||||||
|
$this->tasksLinks = $this->diContainer->get(TasksLinks::class);
|
||||||
$this->sendingQueueWorker = $this->getSendingQueueWorker(Stub::makeEmpty(NewslettersRepository::class, ['findOneById' => new NewsletterEntity()]));
|
$this->sendingQueueWorker = $this->getSendingQueueWorker(Stub::makeEmpty(NewslettersRepository::class, ['findOneById' => new NewsletterEntity()]));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -139,8 +143,9 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function getTrackedUnsubscribeURL() {
|
private function getTrackedUnsubscribeURL() {
|
||||||
$linkTokens = new LinkTokens;
|
$linkTokens = $this->diContainer->get(LinkTokens::class);
|
||||||
$data = Links::createUrlDataObject(
|
$links = $this->diContainer->get(Links::class);
|
||||||
|
$data = $links->createUrlDataObject(
|
||||||
$this->subscriber->id,
|
$this->subscriber->id,
|
||||||
$linkTokens->getToken($this->subscriber),
|
$linkTokens->getToken($this->subscriber),
|
||||||
$this->queue->id,
|
$this->queue->id,
|
||||||
@ -181,7 +186,8 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
$this->cronHelper,
|
$this->cronHelper,
|
||||||
$this->subscribersFinder,
|
$this->subscribersFinder,
|
||||||
$this->segmentsRepository,
|
$this->segmentsRepository,
|
||||||
$this->wp
|
$this->wp,
|
||||||
|
$this->tasksLinks
|
||||||
);
|
);
|
||||||
try {
|
try {
|
||||||
$sendingQueueWorker->process();
|
$sendingQueueWorker->process();
|
||||||
@ -207,6 +213,7 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
$this->subscribersFinder,
|
$this->subscribersFinder,
|
||||||
$this->segmentsRepository,
|
$this->segmentsRepository,
|
||||||
$this->wp,
|
$this->wp,
|
||||||
|
$this->tasksLinks,
|
||||||
Stub::make(
|
Stub::make(
|
||||||
new MailerTask(),
|
new MailerTask(),
|
||||||
[
|
[
|
||||||
@ -249,6 +256,7 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
$this->subscribersFinder,
|
$this->subscribersFinder,
|
||||||
$this->segmentsRepository,
|
$this->segmentsRepository,
|
||||||
$this->wp,
|
$this->wp,
|
||||||
|
$this->tasksLinks,
|
||||||
Stub::make(
|
Stub::make(
|
||||||
new MailerTask(),
|
new MailerTask(),
|
||||||
[
|
[
|
||||||
@ -289,7 +297,8 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
$this->cronHelper,
|
$this->cronHelper,
|
||||||
$this->subscribersFinder,
|
$this->subscribersFinder,
|
||||||
$this->segmentsRepository,
|
$this->segmentsRepository,
|
||||||
$this->wp
|
$this->wp,
|
||||||
|
$this->tasksLinks
|
||||||
);
|
);
|
||||||
$sendingQueueWorker->process();
|
$sendingQueueWorker->process();
|
||||||
}
|
}
|
||||||
@ -1021,6 +1030,7 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
$this->subscribersFinder,
|
$this->subscribersFinder,
|
||||||
$this->segmentsRepository,
|
$this->segmentsRepository,
|
||||||
$this->wp,
|
$this->wp,
|
||||||
|
$this->tasksLinks,
|
||||||
$mailerMock
|
$mailerMock
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ class LinksTest extends \MailPoetTest {
|
|||||||
];
|
];
|
||||||
$newsletter = (object)['id' => 1];
|
$newsletter = (object)['id' => 1];
|
||||||
$queue = (object)['id' => 2];
|
$queue = (object)['id' => 2];
|
||||||
$result = $this->links->saveLinks($links, $newsletter, $queue);
|
$this->links->saveLinks($links, $newsletter, $queue);
|
||||||
$newsletterLink = NewsletterLink::where('hash', $links[0]['hash'])
|
$newsletterLink = NewsletterLink::where('hash', $links[0]['hash'])
|
||||||
->findOne();
|
->findOne();
|
||||||
assert($newsletterLink instanceof NewsletterLink);
|
assert($newsletterLink instanceof NewsletterLink);
|
||||||
|
@ -19,7 +19,11 @@ class GATrackingTest extends \MailPoetTest {
|
|||||||
/** @var string[] */
|
/** @var string[] */
|
||||||
private $renderedNewsletter;
|
private $renderedNewsletter;
|
||||||
|
|
||||||
|
/** @var GATracking */
|
||||||
|
private $tracking;
|
||||||
|
|
||||||
public function _before() {
|
public function _before() {
|
||||||
|
$this->tracking = $this->diContainer->get(GATracking::class);
|
||||||
$this->internalHost = 'newsletters.mailpoet.com';
|
$this->internalHost = 'newsletters.mailpoet.com';
|
||||||
$this->gaCampaign = 'Spring email';
|
$this->gaCampaign = 'Spring email';
|
||||||
$this->link = add_query_arg(['foo' => 'bar', 'baz' => 'xyz'], 'http://www.mailpoet.com/');
|
$this->link = add_query_arg(['foo' => 'bar', 'baz' => 'xyz'], 'http://www.mailpoet.com/');
|
||||||
@ -32,18 +36,16 @@ class GATrackingTest extends \MailPoetTest {
|
|||||||
public function testItConditionallyAppliesGATracking() {
|
public function testItConditionallyAppliesGATracking() {
|
||||||
// No process (empty GA campaign)
|
// No process (empty GA campaign)
|
||||||
$newsletter = Newsletter::createOrUpdate(['id' => 123]);
|
$newsletter = Newsletter::createOrUpdate(['id' => 123]);
|
||||||
$tracking = new GATracking();
|
$result = $this->tracking->applyGATracking($this->renderedNewsletter, $newsletter, $this->internalHost);
|
||||||
$result = $tracking->applyGATracking($this->renderedNewsletter, $newsletter, $this->internalHost);
|
|
||||||
expect($result)->equals($this->renderedNewsletter);
|
expect($result)->equals($this->renderedNewsletter);
|
||||||
// Process (filled GA campaign)
|
// Process (filled GA campaign)
|
||||||
$newsletter->gaCampaign = $this->gaCampaign;
|
$newsletter->gaCampaign = $this->gaCampaign;
|
||||||
$newsletter->save();
|
$newsletter->save();
|
||||||
$result = $tracking->applyGATracking($this->renderedNewsletter, $newsletter, $this->internalHost);
|
$result = $this->tracking->applyGATracking($this->renderedNewsletter, $newsletter, $this->internalHost);
|
||||||
expect($result)->notEquals($this->renderedNewsletter);
|
expect($result)->notEquals($this->renderedNewsletter);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testItGetsGACampaignFromParentNewsletterForPostNotifications() {
|
public function testItGetsGACampaignFromParentNewsletterForPostNotifications() {
|
||||||
$tracking = new GATracking();
|
|
||||||
$notification = Newsletter::create();
|
$notification = Newsletter::create();
|
||||||
$notification->hydrate([
|
$notification->hydrate([
|
||||||
'type' => Newsletter::TYPE_NOTIFICATION,
|
'type' => Newsletter::TYPE_NOTIFICATION,
|
||||||
@ -56,26 +58,24 @@ class GATrackingTest extends \MailPoetTest {
|
|||||||
'type' => Newsletter::TYPE_NOTIFICATION_HISTORY,
|
'type' => Newsletter::TYPE_NOTIFICATION_HISTORY,
|
||||||
]);
|
]);
|
||||||
$notificationHistory->save();
|
$notificationHistory->save();
|
||||||
$result = $tracking->applyGATracking($this->renderedNewsletter, $notificationHistory, $this->internalHost);
|
$result = $this->tracking->applyGATracking($this->renderedNewsletter, $notificationHistory, $this->internalHost);
|
||||||
expect($result)->notEquals($this->renderedNewsletter);
|
expect($result)->notEquals($this->renderedNewsletter);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testItCanAddGAParamsToLinks() {
|
public function testItCanAddGAParamsToLinks() {
|
||||||
$tracking = new GATracking();
|
|
||||||
$newsletter = Newsletter::createOrUpdate([
|
$newsletter = Newsletter::createOrUpdate([
|
||||||
'ga_campaign' => $this->gaCampaign,
|
'ga_campaign' => $this->gaCampaign,
|
||||||
]);
|
]);
|
||||||
$result = $tracking->applyGATracking($this->renderedNewsletter, $newsletter, $this->internalHost);
|
$result = $this->tracking->applyGATracking($this->renderedNewsletter, $newsletter, $this->internalHost);
|
||||||
expect($result['text'])->stringContainsString('utm_campaign=' . urlencode($this->gaCampaign));
|
expect($result['text'])->stringContainsString('utm_campaign=' . urlencode($this->gaCampaign));
|
||||||
expect($result['html'])->stringContainsString('utm_campaign=' . urlencode($this->gaCampaign));
|
expect($result['html'])->stringContainsString('utm_campaign=' . urlencode($this->gaCampaign));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testItKeepsShorcodes() {
|
public function testItKeepsShorcodes() {
|
||||||
$tracking = new GATracking();
|
|
||||||
$newsletter = Newsletter::createOrUpdate([
|
$newsletter = Newsletter::createOrUpdate([
|
||||||
'ga_campaign' => $this->gaCampaign,
|
'ga_campaign' => $this->gaCampaign,
|
||||||
]);
|
]);
|
||||||
$result = $tracking->applyGATracking($this->renderedNewsletter, $newsletter, $this->internalHost);
|
$result = $this->tracking->applyGATracking($this->renderedNewsletter, $newsletter, $this->internalHost);
|
||||||
expect($result['text'])->stringContainsString('email=[subscriber:email]');
|
expect($result['text'])->stringContainsString('email=[subscriber:email]');
|
||||||
expect($result['html'])->stringContainsString('email=[subscriber:email]');
|
expect($result['html'])->stringContainsString('email=[subscriber:email]');
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user