Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
1ee452c37a | ||
|
1726c8de07 | ||
|
12b1bf4698 | ||
|
b79188e262 | ||
|
6246c154ae | ||
|
932aa2167d |
@@ -200,6 +200,7 @@ class Populator {
|
||||
$this->moveNewsletterTemplatesThumbnailData();
|
||||
$this->scheduleNewsletterTemplateThumbnails();
|
||||
$this->updateToUnifiedTrackingSettings();
|
||||
$this->fixNotificationHistoryRecordsStuckAtSending();
|
||||
}
|
||||
|
||||
private function createMailPoetPage() {
|
||||
@@ -982,4 +983,32 @@ class Populator {
|
||||
}
|
||||
$this->settings->set('tracking.level', $trackingLevel);
|
||||
}
|
||||
|
||||
private function fixNotificationHistoryRecordsStuckAtSending() {
|
||||
// perform once for versions below or equal to 3.99.0
|
||||
if (version_compare((string)$this->settings->get('db_version', '3.99.1'), '3.99.0', '>')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$newsletters = $this->entityManager->getClassMetadata(NewsletterEntity::class)->getTableName();
|
||||
$queues = $this->entityManager->getClassMetadata(SendingQueueEntity::class)->getTableName();
|
||||
$tasks = $this->entityManager->getClassMetadata(ScheduledTaskEntity::class)->getTableName();
|
||||
|
||||
$this->entityManager->getConnection()->executeStatement("
|
||||
UPDATE {$newsletters} n
|
||||
JOIN {$queues} q ON n.id = q.newsletter_id
|
||||
JOIN {$tasks} t ON q.task_id = t.id
|
||||
SET n.status = :sentStatus
|
||||
WHERE n.type = :type
|
||||
AND n.status = :sendingStatus
|
||||
AND t.status = :taskStatus
|
||||
", [
|
||||
'type' => NewsletterEntity::TYPE_NOTIFICATION_HISTORY,
|
||||
'sendingStatus' => NewsletterEntity::STATUS_SENDING,
|
||||
'sentStatus' => NewsletterEntity::STATUS_SENT,
|
||||
'taskStatus' => ScheduledTaskEntity::STATUS_COMPLETED,
|
||||
]);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@@ -20,6 +20,7 @@ use MailPoet\Newsletter\Scheduler\Scheduler as NewsletterScheduler;
|
||||
use MailPoet\Newsletter\Scheduler\WelcomeScheduler;
|
||||
use MailPoet\Newsletter\Segment\NewsletterSegmentRepository;
|
||||
use MailPoet\Newsletter\Sending\ScheduledTasksRepository;
|
||||
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
|
||||
use MailPoet\Segments\SegmentsRepository;
|
||||
use MailPoet\Segments\SubscribersFinder;
|
||||
use MailPoet\Tasks\Sending as SendingTask;
|
||||
@@ -54,6 +55,9 @@ class Scheduler {
|
||||
/** @var NewsletterSegmentRepository */
|
||||
private $newsletterSegmentRepository;
|
||||
|
||||
/** @var SendingQueuesRepository */
|
||||
private $sendingQueuesRepository;
|
||||
|
||||
/** @var WPFunctions */
|
||||
private $wp;
|
||||
|
||||
@@ -72,6 +76,7 @@ class Scheduler {
|
||||
NewslettersRepository $newslettersRepository,
|
||||
SegmentsRepository $segmentsRepository,
|
||||
NewsletterSegmentRepository $newsletterSegmentRepository,
|
||||
SendingQueuesRepository $sendingQueuesRepository,
|
||||
WPFunctions $wp,
|
||||
Security $security,
|
||||
NewsletterScheduler $scheduler
|
||||
@@ -84,6 +89,7 @@ class Scheduler {
|
||||
$this->newslettersRepository = $newslettersRepository;
|
||||
$this->segmentsRepository = $segmentsRepository;
|
||||
$this->newsletterSegmentRepository = $newsletterSegmentRepository;
|
||||
$this->sendingQueuesRepository = $sendingQueuesRepository;
|
||||
$this->wp = $wp;
|
||||
$this->security = $security;
|
||||
$this->scheduler = $scheduler;
|
||||
@@ -211,6 +217,7 @@ class Scheduler {
|
||||
|
||||
// Because there is mixed usage of the old and new model, we want to be sure about the correct state
|
||||
$this->newslettersRepository->refresh($notificationHistory);
|
||||
$this->sendingQueuesRepository->refresh($queue->getSendingQueueEntity());
|
||||
|
||||
$this->loggerFactory->getLogger(LoggerFactory::TOPIC_POST_NOTIFICATIONS)->info(
|
||||
'post notification set status to sending',
|
||||
|
@@ -250,9 +250,9 @@ class Newsletter {
|
||||
$newsletter->getType() === NewsletterEntity::TYPE_STANDARD ||
|
||||
$newsletter->getType() === NewsletterEntity::TYPE_NOTIFICATION_HISTORY
|
||||
) {
|
||||
$sendingQueue = $sendingTask->queue();
|
||||
$scheduledTask = $sendingTask->task();
|
||||
$newsletter->setStatus(NewsletterEntity::STATUS_SENT);
|
||||
$newsletter->setSentAt(new Carbon($sendingQueue->processedAt));
|
||||
$newsletter->setSentAt(new Carbon($scheduledTask->processedAt));
|
||||
$this->newslettersRepository->persist($newsletter);
|
||||
$this->newslettersRepository->flush();
|
||||
}
|
||||
|
@@ -404,8 +404,8 @@ class NewslettersRepository extends Repository {
|
||||
/**
|
||||
* @return NewsletterEntity[]
|
||||
*/
|
||||
public function findSendigNotificationHistoryWithPausedTask(NewsletterEntity $newsletter): array {
|
||||
$result = $this->entityManager->createQueryBuilder()
|
||||
public function findSendingNotificationHistoryWithoutPausedTask(NewsletterEntity $newsletter): array {
|
||||
return $this->entityManager->createQueryBuilder()
|
||||
->select('n')
|
||||
->from(NewsletterEntity::class, 'n')
|
||||
->join('n.queues', 'q')
|
||||
@@ -413,13 +413,13 @@ class NewslettersRepository extends Repository {
|
||||
->where('n.parent = :parent')
|
||||
->andWhere('n.type = :type')
|
||||
->andWhere('n.status = :status')
|
||||
->andWhere('n.deletedAt IS NULL')
|
||||
->andWhere('t.status != :taskStatus')
|
||||
->setParameter('parent', $newsletter)
|
||||
->setParameter('type', NewsletterEntity::TYPE_NOTIFICATION_HISTORY)
|
||||
->setParameter('status', NewsletterEntity::STATUS_SENDING)
|
||||
->setParameter('taskStatus', ScheduledTaskEntity::STATUS_PAUSED)
|
||||
->getQuery()->execute();
|
||||
return $result;
|
||||
->getQuery()->getResult();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -110,7 +110,7 @@ class PostNotificationScheduler {
|
||||
}
|
||||
|
||||
public function createPostNotificationSendingTask(NewsletterEntity $newsletter): ?ScheduledTaskEntity {
|
||||
$notificationHistory = $this->newslettersRepository->findSendigNotificationHistoryWithPausedTask($newsletter);
|
||||
$notificationHistory = $this->newslettersRepository->findSendingNotificationHistoryWithoutPausedTask($newsletter);
|
||||
if (count($notificationHistory) > 0) {
|
||||
return null;
|
||||
}
|
||||
|
@@ -2,7 +2,7 @@
|
||||
|
||||
/*
|
||||
* Plugin Name: MailPoet
|
||||
* Version: 3.99.0
|
||||
* Version: 3.99.1
|
||||
* Plugin URI: http://www.mailpoet.com
|
||||
* Description: Create and send newsletters, post notifications and welcome emails from your WordPress.
|
||||
* Author: MailPoet
|
||||
@@ -17,7 +17,7 @@
|
||||
*/
|
||||
|
||||
$mailpoetPlugin = [
|
||||
'version' => '3.99.0',
|
||||
'version' => '3.99.1',
|
||||
'filename' => __FILE__,
|
||||
'path' => dirname(__FILE__),
|
||||
'autoloader' => dirname(__FILE__) . '/vendor/autoload.php',
|
||||
|
@@ -3,7 +3,7 @@ Contributors: mailpoet
|
||||
Tags: email, email marketing, post notification, woocommerce emails, email automation, newsletter, newsletter builder, newsletter subscribers
|
||||
Requires at least: 5.6
|
||||
Tested up to: 6.0
|
||||
Stable tag: 3.99.0
|
||||
Stable tag: 3.99.1
|
||||
Requires PHP: 7.2
|
||||
License: GPLv3
|
||||
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
||||
@@ -219,6 +219,9 @@ Check our [Knowledge Base](https://kb.mailpoet.com) or contact us through our [s
|
||||
|
||||
== Changelog ==
|
||||
|
||||
= 3.99.1 - 2022-09-29 =
|
||||
* Fix issue with post notifications in MailPoet 3.99.
|
||||
|
||||
= 3.99.0 - 2022-09-27 =
|
||||
* Added: any email address from a sender domain is automatically allowed for sending (MailPoet Sending Service only);
|
||||
* Fixed: some post notifications may fail to send.
|
||||
|
@@ -485,11 +485,6 @@ parameters:
|
||||
count: 2
|
||||
path: ../../lib/Newsletter/NewslettersRepository.php
|
||||
|
||||
-
|
||||
message: "#^Method MailPoet\\\\Newsletter\\\\NewslettersRepository\\:\\:findSendigNotificationHistoryWithPausedTask\\(\\) should return array\\<MailPoet\\\\Entities\\\\NewsletterEntity\\> but returns mixed\\.$#"
|
||||
count: 1
|
||||
path: ../../lib/Newsletter/NewslettersRepository.php
|
||||
|
||||
-
|
||||
message: "#^Method MailPoet\\\\Newsletter\\\\Renderer\\\\Renderer\\:\\:postProcessTemplate\\(\\) should return string but returns mixed\\.$#"
|
||||
count: 1
|
||||
|
@@ -485,11 +485,6 @@ parameters:
|
||||
count: 2
|
||||
path: ../../lib/Newsletter/NewslettersRepository.php
|
||||
|
||||
-
|
||||
message: "#^Method MailPoet\\\\Newsletter\\\\NewslettersRepository\\:\\:findSendigNotificationHistoryWithPausedTask\\(\\) should return array\\<MailPoet\\\\Entities\\\\NewsletterEntity\\> but returns mixed\\.$#"
|
||||
count: 1
|
||||
path: ../../lib/Newsletter/NewslettersRepository.php
|
||||
|
||||
-
|
||||
message: "#^Method MailPoet\\\\Newsletter\\\\Renderer\\\\Renderer\\:\\:postProcessTemplate\\(\\) should return string but returns mixed\\.$#"
|
||||
count: 1
|
||||
|
@@ -484,11 +484,6 @@ parameters:
|
||||
count: 2
|
||||
path: ../../lib/Newsletter/NewslettersRepository.php
|
||||
|
||||
-
|
||||
message: "#^Method MailPoet\\\\Newsletter\\\\NewslettersRepository\\:\\:findSendigNotificationHistoryWithPausedTask\\(\\) should return array\\<MailPoet\\\\Entities\\\\NewsletterEntity\\> but returns mixed\\.$#"
|
||||
count: 1
|
||||
path: ../../lib/Newsletter/NewslettersRepository.php
|
||||
|
||||
-
|
||||
message: "#^Method MailPoet\\\\Newsletter\\\\Renderer\\\\Renderer\\:\\:postProcessTemplate\\(\\) should return string but returns mixed\\.$#"
|
||||
count: 1
|
||||
|
@@ -31,6 +31,7 @@ use MailPoet\Newsletter\NewslettersRepository;
|
||||
use MailPoet\Newsletter\Scheduler\WelcomeScheduler;
|
||||
use MailPoet\Newsletter\Segment\NewsletterSegmentRepository;
|
||||
use MailPoet\Newsletter\Sending\ScheduledTasksRepository;
|
||||
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
|
||||
use MailPoet\Segments\SegmentsRepository;
|
||||
use MailPoet\Segments\SubscribersFinder;
|
||||
use MailPoet\Tasks\Sending as SendingTask;
|
||||
@@ -72,6 +73,9 @@ class SchedulerTest extends \MailPoetTest {
|
||||
/** @var NewsletterSegmentRepository */
|
||||
private $newsletterSegmentRepository;
|
||||
|
||||
/** @var SendingQueuesRepository */
|
||||
private $sendingQueuesRepository;
|
||||
|
||||
/** @var Security */
|
||||
private $security;
|
||||
|
||||
@@ -87,6 +91,7 @@ class SchedulerTest extends \MailPoetTest {
|
||||
$this->newsletterScheduler = $this->diContainer->get(NewsletterScheduler::class);
|
||||
$this->newsletterOptionFactory = new NewsletterOptionFactory();
|
||||
$this->newsletterSegmentRepository = $this->diContainer->get(NewsletterSegmentRepository::class);
|
||||
$this->sendingQueuesRepository = $this->diContainer->get(SendingQueuesRepository::class);
|
||||
$this->security = $this->diContainer->get(Security::class);
|
||||
}
|
||||
|
||||
@@ -534,6 +539,7 @@ class SchedulerTest extends \MailPoetTest {
|
||||
$this->newslettersRepository,
|
||||
$this->segmentsRepository,
|
||||
$this->newsletterSegmentRepository,
|
||||
$this->sendingQueuesRepository,
|
||||
WPFunctions::get(),
|
||||
$this->security,
|
||||
$this->newsletterScheduler,
|
||||
|
Reference in New Issue
Block a user