Remove static calling from Links
[MAILPOET-3269]
This commit is contained in:
@@ -62,6 +62,9 @@ class SendingQueue {
|
||||
/** @var WPFunctions */
|
||||
private $wp;
|
||||
|
||||
/** @var Links */
|
||||
private $links;
|
||||
|
||||
public function __construct(
|
||||
SendingErrorHandler $errorHandler,
|
||||
SendingThrottlingHandler $throttlingHandler,
|
||||
@@ -72,6 +75,7 @@ class SendingQueue {
|
||||
SubscribersFinder $subscriberFinder,
|
||||
SegmentsRepository $segmentsRepository,
|
||||
WPFunctions $wp,
|
||||
Links $links,
|
||||
$mailerTask = false,
|
||||
$newsletterTask = false
|
||||
) {
|
||||
@@ -87,6 +91,7 @@ class SendingQueue {
|
||||
$this->loggerFactory = $loggerFactory;
|
||||
$this->newslettersRepository = $newslettersRepository;
|
||||
$this->cronHelper = $cronHelper;
|
||||
$this->links = $links;
|
||||
}
|
||||
|
||||
public function process($timer = false) {
|
||||
@@ -260,7 +265,7 @@ class SendingQueue {
|
||||
);
|
||||
$preparedSubscribersIds[] = $subscriber->id;
|
||||
// create personalized instant unsubsribe link
|
||||
$unsubscribeUrls[] = Links::getUnsubscribeUrl($queue, $subscriber->id);
|
||||
$unsubscribeUrls[] = $this->links->getUnsubscribeUrl($queue, $subscriber->id);
|
||||
$metas[] = $this->mailerMetaInfo->getNewsletterMetaInfo($newsletter, $subscriber);
|
||||
// keep track of values for statistics purposes
|
||||
$statistics[] = [
|
||||
|
@@ -13,14 +13,20 @@ use MailPoet\Subscription\SubscriptionUrlFactory;
|
||||
use MailPoet\Util\Helpers;
|
||||
|
||||
class Links {
|
||||
public static function process($renderedNewsletter, $newsletter, $queue) {
|
||||
list($renderedNewsletter, $links) =
|
||||
self::hashAndReplaceLinks($renderedNewsletter, $newsletter->id, $queue->id);
|
||||
self::saveLinks($links, $newsletter, $queue);
|
||||
/** @var LinkTokens */
|
||||
private $linkTokens;
|
||||
|
||||
public function __construct(LinkTokens $linkTokens) {
|
||||
$this->linkTokens = $linkTokens;
|
||||
}
|
||||
|
||||
public function process($renderedNewsletter, $newsletter, $queue) {
|
||||
[$renderedNewsletter, $links] = $this->hashAndReplaceLinks($renderedNewsletter, $newsletter->id, $queue->id);
|
||||
$this->saveLinks($links, $newsletter, $queue);
|
||||
return $renderedNewsletter;
|
||||
}
|
||||
|
||||
public static function hashAndReplaceLinks($renderedNewsletter, $newsletterId, $queueId) {
|
||||
public function hashAndReplaceLinks($renderedNewsletter, $newsletterId, $queueId) {
|
||||
// join HTML and TEXT rendered body into a text string
|
||||
$content = Helpers::joinObject($renderedNewsletter);
|
||||
list($content, $links) = NewsletterLinks::process($content, $newsletterId, $queueId);
|
||||
@@ -34,11 +40,11 @@ class Links {
|
||||
];
|
||||
}
|
||||
|
||||
public static function saveLinks($links, $newsletter, $queue) {
|
||||
public function saveLinks($links, $newsletter, $queue) {
|
||||
return NewsletterLinks::save($links, $newsletter->id, $queue->id);
|
||||
}
|
||||
|
||||
public static function getUnsubscribeUrl($queue, $subscriberId) {
|
||||
public function getUnsubscribeUrl($queue, $subscriberId) {
|
||||
$subscriber = Subscriber::where('id', $subscriberId)->findOne();
|
||||
$settings = SettingsController::getInstance();
|
||||
if ((boolean)$settings->get('tracking.enabled')) {
|
||||
@@ -48,10 +54,9 @@ class Links {
|
||||
if (!$linkHash instanceof NewsletterLinkModel) {
|
||||
return '';
|
||||
}
|
||||
$linkTokens = new LinkTokens;
|
||||
$data = NewsletterLinks::createUrlDataObject(
|
||||
$subscriber->id,
|
||||
$linkTokens->getToken($subscriber),
|
||||
$this->linkTokens->getToken($subscriber),
|
||||
$queue->id,
|
||||
$linkHash->hash,
|
||||
false
|
||||
|
@@ -46,6 +46,9 @@ class Newsletter {
|
||||
/** @var Emoji */
|
||||
private $emoji;
|
||||
|
||||
/** @var LinksTask */
|
||||
private $linksTask;
|
||||
|
||||
public function __construct(
|
||||
WPFunctions $wp = null,
|
||||
PostsTask $postsTask = null,
|
||||
@@ -73,6 +76,7 @@ class Newsletter {
|
||||
$this->emoji = $emoji;
|
||||
$this->renderer = ContainerWrapper::getInstance()->get(Renderer::class);
|
||||
$this->newslettersRepository = ContainerWrapper::getInstance()->get(NewslettersRepository::class);
|
||||
$this->linksTask = ContainerWrapper::getInstance()->get(LinksTask::class);
|
||||
}
|
||||
|
||||
public function getNewsletterFromQueue($queue) {
|
||||
@@ -127,7 +131,7 @@ class Newsletter {
|
||||
);
|
||||
$renderedNewsletter = $this->gaTracking->applyGATracking($renderedNewsletter, $newsletter);
|
||||
// hash and save all links
|
||||
$renderedNewsletter = LinksTask::process($renderedNewsletter, $newsletter, $sendingTask);
|
||||
$renderedNewsletter = $this->linksTask->process($renderedNewsletter, $newsletter, $sendingTask);
|
||||
} else {
|
||||
// render newsletter
|
||||
$renderedNewsletter = $this->renderer->render($newsletter, $sendingTask);
|
||||
|
@@ -153,6 +153,7 @@ class ContainerConfigurator implements IContainerConfigurator {
|
||||
// Cron workers
|
||||
$container->autowire(\MailPoet\Cron\Workers\Scheduler::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\Cron\Workers\SendingQueue\SendingQueue::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\Cron\Workers\SendingQueue\Tasks\Links::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\Cron\Workers\StatsNotifications\Worker::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\Cron\Workers\StatsNotifications\AutomatedEmails::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\Cron\Workers\KeyCheck\SendingServiceKeyCheck::class)->setPublic(true);
|
||||
|
@@ -8,6 +8,14 @@ use MailPoet\Models\NewsletterLink;
|
||||
use MailPoetVendor\Idiorm\ORM;
|
||||
|
||||
class LinksTest extends \MailPoetTest {
|
||||
/** @var Links */
|
||||
private $links;
|
||||
|
||||
protected function _before() {
|
||||
parent::_before();
|
||||
$this->links = $this->diContainer->get(Links::class);
|
||||
}
|
||||
|
||||
public function testItCanSaveLinks() {
|
||||
$links = [
|
||||
[
|
||||
@@ -17,7 +25,7 @@ class LinksTest extends \MailPoetTest {
|
||||
];
|
||||
$newsletter = (object)['id' => 1];
|
||||
$queue = (object)['id' => 2];
|
||||
$result = Links::saveLinks($links, $newsletter, $queue);
|
||||
$result = $this->links->saveLinks($links, $newsletter, $queue);
|
||||
$newsletterLink = NewsletterLink::where('hash', $links[0]['hash'])
|
||||
->findOne();
|
||||
assert($newsletterLink instanceof NewsletterLink);
|
||||
@@ -31,7 +39,7 @@ class LinksTest extends \MailPoetTest {
|
||||
'html' => '<a href="http://example.com">Example Link</a>',
|
||||
'text' => '<a href="http://example.com">Example Link</a>',
|
||||
];
|
||||
$result = Links::hashAndReplaceLinks($renderedNewsletter, 0, 0);
|
||||
$result = $this->links->hashAndReplaceLinks($renderedNewsletter, 0, 0);
|
||||
$processedRenderedNewsletterBody = $result[0];
|
||||
$processedAndHashedLinks = $result[1];
|
||||
expect($processedRenderedNewsletterBody['html'])
|
||||
@@ -50,7 +58,7 @@ class LinksTest extends \MailPoetTest {
|
||||
'text' => '<a href="http://example.com">Example Link</a>',
|
||||
];
|
||||
$queue = (object)['id' => 2];
|
||||
$result = Links::process($renderedNewsletter, $newsletter, $queue);
|
||||
$result = $this->links->process($renderedNewsletter, $newsletter, $queue);
|
||||
$newsletterLink = NewsletterLink::where('newsletter_id', $newsletter->id)
|
||||
->findOne();
|
||||
assert($newsletterLink instanceof NewsletterLink);
|
||||
@@ -66,7 +74,7 @@ class LinksTest extends \MailPoetTest {
|
||||
'text' => '<a href="http://example.com">Example Link</a>',
|
||||
];
|
||||
$queue = (object)['id' => 2];
|
||||
Links::process($renderedNewsletter, $newsletter, $queue);
|
||||
$this->links->process($renderedNewsletter, $newsletter, $queue);
|
||||
$unsubscribeCount = NewsletterLink::where('newsletter_id', $newsletter->id)
|
||||
->where('url', NewsletterLink::INSTANT_UNSUBSCRIBE_LINK_SHORT_CODE)->count();
|
||||
expect($unsubscribeCount)->equals(1);
|
||||
|
Reference in New Issue
Block a user