Refactor fetching newsletter options in SendingQueue using doctrine
[MAILPOET-4511]
This commit is contained in:
committed by
Veljko V
parent
3b5d737143
commit
5042cdd15e
@@ -145,7 +145,8 @@ class SendingQueue {
|
|||||||
['task_id' => $queue->taskId]
|
['task_id' => $queue->taskId]
|
||||||
);
|
);
|
||||||
$newsletter = $this->newsletterTask->getNewsletterFromQueue($queue);
|
$newsletter = $this->newsletterTask->getNewsletterFromQueue($queue);
|
||||||
if (!$newsletter) {
|
$newsletterEntity = $this->newslettersRepository->findOneById($newsletter->id);
|
||||||
|
if (!$newsletter || !$newsletterEntity) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// pre-process newsletter (render, replace shortcodes/links, etc.)
|
// pre-process newsletter (render, replace shortcodes/links, etc.)
|
||||||
@@ -160,11 +161,7 @@ class SendingQueue {
|
|||||||
}
|
}
|
||||||
// clone the original object to be used for processing
|
// clone the original object to be used for processing
|
||||||
$_newsletter = (object)$newsletter->asArray();
|
$_newsletter = (object)$newsletter->asArray();
|
||||||
$options = $newsletter->options()->findMany();
|
$_newsletter->options = $newsletterEntity->getOptionsAsArray();
|
||||||
if (!empty($options)) {
|
|
||||||
$options = array_column($options, 'value', 'name');
|
|
||||||
}
|
|
||||||
$_newsletter->options = $options;
|
|
||||||
// configure mailer
|
// configure mailer
|
||||||
$this->mailerTask->configureMailer($newsletter);
|
$this->mailerTask->configureMailer($newsletter);
|
||||||
// get newsletter segments
|
// get newsletter segments
|
||||||
|
@@ -443,6 +443,21 @@ class NewsletterEntity {
|
|||||||
return $option ?: null;
|
return $option ?: null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array<string, mixed> Associative array of newsletter option values with option names as keys
|
||||||
|
*/
|
||||||
|
public function getOptionsAsArray(): array {
|
||||||
|
$optionsArray = [];
|
||||||
|
foreach ($this->options as $option) {
|
||||||
|
$name = $option->getName();
|
||||||
|
if (!$name) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$optionsArray[$name] = $option->getValue();
|
||||||
|
}
|
||||||
|
return $optionsArray;
|
||||||
|
}
|
||||||
|
|
||||||
public function getOptionValue(string $name) {
|
public function getOptionValue(string $name) {
|
||||||
$option = $this->getOption($name);
|
$option = $this->getOption($name);
|
||||||
return $option ? $option->getValue() : null;
|
return $option ? $option->getValue() : null;
|
||||||
|
@@ -52,6 +52,17 @@ class NewsletterOptionEntity {
|
|||||||
return $this->value;
|
return $this->value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string|null
|
||||||
|
*/
|
||||||
|
public function getName() {
|
||||||
|
$optionField = $this->getOptionField();
|
||||||
|
if ($optionField === null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return $optionField->getName();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string|null $value
|
* @param string|null $value
|
||||||
*/
|
*/
|
||||||
|
@@ -189,8 +189,8 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function testItEnforcesExecutionLimitsBeforeQueueProcessing() {
|
public function testItEnforcesExecutionLimitsBeforeQueueProcessing() {
|
||||||
$sendingQueueWorker = $this->make($this->getSendingQueueWorker(
|
$sendingQueueWorker = $this->make(
|
||||||
$this->makeEmpty(NewslettersRepository::class)),
|
$this->getSendingQueueWorker(),
|
||||||
[
|
[
|
||||||
'processQueue' => Expected::never(),
|
'processQueue' => Expected::never(),
|
||||||
'enforceSendingAndExecutionLimits' => Expected::exactly(1, function() {
|
'enforceSendingAndExecutionLimits' => Expected::exactly(1, function() {
|
||||||
@@ -202,7 +202,7 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
$this->sendingThrottlingHandler,
|
$this->sendingThrottlingHandler,
|
||||||
$this->statsNotificationsWorker,
|
$this->statsNotificationsWorker,
|
||||||
$this->loggerFactory,
|
$this->loggerFactory,
|
||||||
$this->makeEmpty(NewslettersRepository::class),
|
$this->newslettersRepository,
|
||||||
$this->cronHelper,
|
$this->cronHelper,
|
||||||
$this->subscribersFinder,
|
$this->subscribersFinder,
|
||||||
$this->segmentsRepository,
|
$this->segmentsRepository,
|
||||||
@@ -307,7 +307,7 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
|
|
||||||
public function testItEnforcesExecutionLimitsAfterQueueProcessing() {
|
public function testItEnforcesExecutionLimitsAfterQueueProcessing() {
|
||||||
$sendingQueueWorker = $this->make(
|
$sendingQueueWorker = $this->make(
|
||||||
$this->getSendingQueueWorker($this->makeEmpty(NewslettersRepository::class)),
|
$this->getSendingQueueWorker(),
|
||||||
[
|
[
|
||||||
'processQueue' => function() {
|
'processQueue' => function() {
|
||||||
// this function returns a queue object
|
// this function returns a queue object
|
||||||
@@ -320,7 +320,7 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
$this->sendingThrottlingHandler,
|
$this->sendingThrottlingHandler,
|
||||||
$this->statsNotificationsWorker,
|
$this->statsNotificationsWorker,
|
||||||
$this->loggerFactory,
|
$this->loggerFactory,
|
||||||
$this->makeEmpty(NewslettersRepository::class),
|
$this->newslettersRepository,
|
||||||
$this->cronHelper,
|
$this->cronHelper,
|
||||||
$this->subscribersFinder,
|
$this->subscribersFinder,
|
||||||
$this->segmentsRepository,
|
$this->segmentsRepository,
|
||||||
@@ -781,7 +781,7 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
$this->newsletterSegment->delete();
|
$this->newsletterSegment->delete();
|
||||||
|
|
||||||
$sendingQueueWorker = $this->getSendingQueueWorker(
|
$sendingQueueWorker = $this->getSendingQueueWorker(
|
||||||
$this->makeEmpty(NewslettersRepository::class),
|
null,
|
||||||
$this->construct(
|
$this->construct(
|
||||||
MailerTask::class,
|
MailerTask::class,
|
||||||
[$this->diContainer->get(MailerFactory::class)],
|
[$this->diContainer->get(MailerFactory::class)],
|
||||||
|
Reference in New Issue
Block a user