Log when processing the queue for corrupt newsletter
[MAILPOET-4983]
This commit is contained in:
@ -239,25 +239,32 @@ class SendingQueue {
|
|||||||
// reschedule bounce task to run sooner, if needed
|
// reschedule bounce task to run sooner, if needed
|
||||||
$this->reScheduleBounceTask();
|
$this->reScheduleBounceTask();
|
||||||
|
|
||||||
$queue = $this->processQueue(
|
if ($newsletterEntity->getStatus() !== NewsletterEntity::STATUS_CORRUPT) {
|
||||||
$queue,
|
$queue = $this->processQueue(
|
||||||
$_newsletter,
|
$queue,
|
||||||
$foundSubscribers,
|
$_newsletter,
|
||||||
$timer
|
$foundSubscribers,
|
||||||
);
|
$timer
|
||||||
$this->loggerFactory->getLogger(LoggerFactory::TOPIC_NEWSLETTERS)->info(
|
);
|
||||||
'after queue chunk processing',
|
|
||||||
['newsletter_id' => $newsletter->id, 'task_id' => $queue->taskId]
|
|
||||||
);
|
|
||||||
if ($queue->status === ScheduledTaskEntity::STATUS_COMPLETED) {
|
|
||||||
$this->loggerFactory->getLogger(LoggerFactory::TOPIC_NEWSLETTERS)->info(
|
$this->loggerFactory->getLogger(LoggerFactory::TOPIC_NEWSLETTERS)->info(
|
||||||
'completed newsletter sending',
|
'after queue chunk processing',
|
||||||
|
['newsletter_id' => $newsletter->id, 'task_id' => $queue->taskId]
|
||||||
|
);
|
||||||
|
if ($queue->status === ScheduledTaskEntity::STATUS_COMPLETED) {
|
||||||
|
$this->loggerFactory->getLogger(LoggerFactory::TOPIC_NEWSLETTERS)->info(
|
||||||
|
'completed newsletter sending',
|
||||||
|
['newsletter_id' => $newsletter->id, 'task_id' => $queue->taskId]
|
||||||
|
);
|
||||||
|
$this->newsletterTask->markNewsletterAsSent($newsletterEntity, $queue);
|
||||||
|
$this->statsNotificationsScheduler->schedule($newsletterEntity);
|
||||||
|
}
|
||||||
|
$this->enforceSendingAndExecutionLimits($timer);
|
||||||
|
} else {
|
||||||
|
$this->loggerFactory->getLogger(LoggerFactory::TOPIC_NEWSLETTERS)->error(
|
||||||
|
'Can\'t send corrupt newsletter',
|
||||||
['newsletter_id' => $newsletter->id, 'task_id' => $queue->taskId]
|
['newsletter_id' => $newsletter->id, 'task_id' => $queue->taskId]
|
||||||
);
|
);
|
||||||
$this->newsletterTask->markNewsletterAsSent($newsletterEntity, $queue);
|
|
||||||
$this->statsNotificationsScheduler->schedule($newsletterEntity);
|
|
||||||
}
|
}
|
||||||
$this->enforceSendingAndExecutionLimits($timer);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
namespace MailPoet\Newsletter\Renderer;
|
namespace MailPoet\Newsletter\Renderer;
|
||||||
|
|
||||||
use MailPoet\Entities\NewsletterEntity;
|
use MailPoet\Entities\NewsletterEntity;
|
||||||
|
use MailPoet\Logging\LoggerFactory;
|
||||||
use MailPoet\Newsletter\NewslettersRepository;
|
use MailPoet\Newsletter\NewslettersRepository;
|
||||||
use MailPoet\Newsletter\Renderer\Blocks\AbandonedCartContent;
|
use MailPoet\Newsletter\Renderer\Blocks\AbandonedCartContent;
|
||||||
use MailPoet\Newsletter\Renderer\Blocks\AutomatedLatestContentBlock;
|
use MailPoet\Newsletter\Renderer\Blocks\AutomatedLatestContentBlock;
|
||||||
@ -36,18 +37,23 @@ class Preprocessor {
|
|||||||
/*** @var NewslettersRepository */
|
/*** @var NewslettersRepository */
|
||||||
private $newslettersRepository;
|
private $newslettersRepository;
|
||||||
|
|
||||||
|
/*** @var LoggerFactory */
|
||||||
|
private $loggerFactory;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
AbandonedCartContent $abandonedCartContent,
|
AbandonedCartContent $abandonedCartContent,
|
||||||
AutomatedLatestContentBlock $automatedLatestContent,
|
AutomatedLatestContentBlock $automatedLatestContent,
|
||||||
ContentPreprocessor $wooCommerceContentPreprocessor,
|
ContentPreprocessor $wooCommerceContentPreprocessor,
|
||||||
CouponPreProcessor $couponPreProcessor,
|
CouponPreProcessor $couponPreProcessor,
|
||||||
NewslettersRepository $newslettersRepository
|
NewslettersRepository $newslettersRepository,
|
||||||
|
LoggerFactory $loggerFactory
|
||||||
) {
|
) {
|
||||||
$this->abandonedCartContent = $abandonedCartContent;
|
$this->abandonedCartContent = $abandonedCartContent;
|
||||||
$this->automatedLatestContent = $automatedLatestContent;
|
$this->automatedLatestContent = $automatedLatestContent;
|
||||||
$this->wooCommerceContentPreprocessor = $wooCommerceContentPreprocessor;
|
$this->wooCommerceContentPreprocessor = $wooCommerceContentPreprocessor;
|
||||||
$this->couponPreProcessor = $couponPreProcessor;
|
$this->couponPreProcessor = $couponPreProcessor;
|
||||||
$this->newslettersRepository = $newslettersRepository;
|
$this->newslettersRepository = $newslettersRepository;
|
||||||
|
$this->loggerFactory = $loggerFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -67,7 +73,11 @@ class Preprocessor {
|
|||||||
try {
|
try {
|
||||||
$contentBlocks = $this->couponPreProcessor->processCoupons($newsletter, $contentBlocks, $preview);
|
$contentBlocks = $this->couponPreProcessor->processCoupons($newsletter, $contentBlocks, $preview);
|
||||||
} catch (NewsletterProcessingException $e) {
|
} catch (NewsletterProcessingException $e) {
|
||||||
$newsletter->setStatus(NewsletterEntity::STATUS_CORRUPT);
|
$this->loggerFactory->getLogger(LoggerFactory::TOPIC_COUPONS)->error(
|
||||||
|
$e->getMessage(),
|
||||||
|
['newsletter_id' => $newsletter->getId()]
|
||||||
|
);
|
||||||
|
$newsletter->setStatus(NewsletterEntity::STATUS_CORRUPT);
|
||||||
$this->newslettersRepository->persist($newsletter);
|
$this->newslettersRepository->persist($newsletter);
|
||||||
$this->newslettersRepository->flush();
|
$this->newslettersRepository->flush();
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@ class CouponPreProcessor {
|
|||||||
|
|
||||||
if (!$this->wcHelper->isWooCommerceActive()) {
|
if (!$this->wcHelper->isWooCommerceActive()) {
|
||||||
$this->loggerFactory->getLogger(LoggerFactory::TOPIC_COUPONS)->error(
|
$this->loggerFactory->getLogger(LoggerFactory::TOPIC_COUPONS)->error(
|
||||||
'Woocommerce is not active', ['WC Coupons', 'Process coupons']
|
'Woocommerce is not active', ['WC Coupons', 'Process coupons', 'newsletter_id']
|
||||||
);
|
);
|
||||||
return $blocks;
|
return $blocks;
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ namespace MailPoet\WooCommerce\TransactionalEmails;
|
|||||||
use Codeception\Stub;
|
use Codeception\Stub;
|
||||||
use MailPoet\Config\ServicesChecker;
|
use MailPoet\Config\ServicesChecker;
|
||||||
use MailPoet\Entities\NewsletterEntity;
|
use MailPoet\Entities\NewsletterEntity;
|
||||||
|
use MailPoet\Logging\LoggerFactory;
|
||||||
use MailPoet\Models\Newsletter;
|
use MailPoet\Models\Newsletter;
|
||||||
use MailPoet\Newsletter\Editor\LayoutHelper as L;
|
use MailPoet\Newsletter\Editor\LayoutHelper as L;
|
||||||
use MailPoet\Newsletter\NewslettersRepository;
|
use MailPoet\Newsletter\NewslettersRepository;
|
||||||
@ -111,7 +112,8 @@ class RendererTest extends \MailPoetTest {
|
|||||||
$this->diContainer->get(\MailPoet\Newsletter\Renderer\Blocks\AutomatedLatestContentBlock::class),
|
$this->diContainer->get(\MailPoet\Newsletter\Renderer\Blocks\AutomatedLatestContentBlock::class),
|
||||||
$wooPreprocessor,
|
$wooPreprocessor,
|
||||||
$this->diContainer->get(\MailPoet\WooCommerce\CouponPreProcessor::class),
|
$this->diContainer->get(\MailPoet\WooCommerce\CouponPreProcessor::class),
|
||||||
$this->diContainer->get(NewslettersRepository::class)
|
$this->diContainer->get(NewslettersRepository::class),
|
||||||
|
$this->diContainer->get(LoggerFactory::class)
|
||||||
),
|
),
|
||||||
$this->diContainer->get(\MailPoetVendor\CSS::class),
|
$this->diContainer->get(\MailPoetVendor\CSS::class),
|
||||||
$this->diContainer->get(ServicesChecker::class),
|
$this->diContainer->get(ServicesChecker::class),
|
||||||
|
@ -4,6 +4,7 @@ namespace MailPoet\Test\Newsletter;
|
|||||||
|
|
||||||
use Codeception\Stub;
|
use Codeception\Stub;
|
||||||
use MailPoet\Entities\NewsletterEntity;
|
use MailPoet\Entities\NewsletterEntity;
|
||||||
|
use MailPoet\Logging\LoggerFactory;
|
||||||
use MailPoet\Newsletter\NewslettersRepository;
|
use MailPoet\Newsletter\NewslettersRepository;
|
||||||
use MailPoet\Newsletter\Renderer\Blocks\AbandonedCartContent;
|
use MailPoet\Newsletter\Renderer\Blocks\AbandonedCartContent;
|
||||||
use MailPoet\Newsletter\Renderer\Blocks\AutomatedLatestContentBlock;
|
use MailPoet\Newsletter\Renderer\Blocks\AutomatedLatestContentBlock;
|
||||||
@ -24,7 +25,15 @@ class PreprocessorTest extends \MailPoetUnitTest {
|
|||||||
]);
|
]);
|
||||||
$wooPreprocessor = new TransactionalEmails\ContentPreprocessor($transactionalEmails);
|
$wooPreprocessor = new TransactionalEmails\ContentPreprocessor($transactionalEmails);
|
||||||
$newsletterRepository = Stub::make(NewslettersRepository::class);
|
$newsletterRepository = Stub::make(NewslettersRepository::class);
|
||||||
$preprocessor = new Preprocessor($acc, $alc, $wooPreprocessor, $couponPreProcessor, $newsletterRepository);
|
$loggerFactory = Stub::make(LoggerFactory::class);
|
||||||
|
$preprocessor = new Preprocessor(
|
||||||
|
$acc,
|
||||||
|
$alc,
|
||||||
|
$wooPreprocessor,
|
||||||
|
$couponPreProcessor,
|
||||||
|
$newsletterRepository,
|
||||||
|
$loggerFactory
|
||||||
|
);
|
||||||
expect($preprocessor->processBlock(new NewsletterEntity(), ['type' => 'woocommerceHeading']))->equals([[
|
expect($preprocessor->processBlock(new NewsletterEntity(), ['type' => 'woocommerceHeading']))->equals([[
|
||||||
'type' => 'container',
|
'type' => 'container',
|
||||||
'orientation' => 'horizontal',
|
'orientation' => 'horizontal',
|
||||||
@ -53,7 +62,15 @@ class PreprocessorTest extends \MailPoetUnitTest {
|
|||||||
$couponPreProcessor = Stub::make(CouponPreProcessor::class);
|
$couponPreProcessor = Stub::make(CouponPreProcessor::class);
|
||||||
$wooPreprocessor = new TransactionalEmails\ContentPreprocessor(Stub::make(TransactionalEmails::class));
|
$wooPreprocessor = new TransactionalEmails\ContentPreprocessor(Stub::make(TransactionalEmails::class));
|
||||||
$newsletterRepository = Stub::make(NewslettersRepository::class);
|
$newsletterRepository = Stub::make(NewslettersRepository::class);
|
||||||
$preprocessor = new Preprocessor($acc, $alc, $wooPreprocessor, $couponPreProcessor, $newsletterRepository);
|
$loggerFactory = Stub::make(LoggerFactory::class);
|
||||||
|
$preprocessor = new Preprocessor(
|
||||||
|
$acc,
|
||||||
|
$alc,
|
||||||
|
$wooPreprocessor,
|
||||||
|
$couponPreProcessor,
|
||||||
|
$newsletterRepository,
|
||||||
|
$loggerFactory
|
||||||
|
);
|
||||||
expect($preprocessor->processBlock(new NewsletterEntity(), ['type' => 'woocommerceContent']))->equals([[
|
expect($preprocessor->processBlock(new NewsletterEntity(), ['type' => 'woocommerceContent']))->equals([[
|
||||||
'type' => 'container',
|
'type' => 'container',
|
||||||
'orientation' => 'horizontal',
|
'orientation' => 'horizontal',
|
||||||
|
Reference in New Issue
Block a user