Use doctrine for populator query

[MAILPOET-3481]
This commit is contained in:
Pavel Dohnal
2021-03-19 11:34:57 +01:00
committed by Veljko V
parent 50b98bd079
commit 95825793c0
2 changed files with 30 additions and 9 deletions

View File

@ -10,6 +10,9 @@ use MailPoet\Cron\Workers\StatsNotifications\Worker;
use MailPoet\Cron\Workers\SubscriberLinkTokens;
use MailPoet\Cron\Workers\UnsubscribeTokens;
use MailPoet\Entities\FormEntity;
use MailPoet\Entities\NewsletterEntity;
use MailPoet\Entities\ScheduledTaskEntity;
use MailPoet\Entities\SendingQueueEntity;
use MailPoet\Entities\UserFlagEntity;
use MailPoet\Form\FormsRepository;
use MailPoet\Mailer\MailerLog;
@ -32,6 +35,7 @@ use MailPoet\Subscription\Captcha;
use MailPoet\Util\Helpers;
use MailPoet\WP\Functions as WPFunctions;
use MailPoetVendor\Carbon\Carbon;
use MailPoetVendor\Doctrine\ORM\EntityManager;
class Populator {
public $prefix;
@ -50,6 +54,8 @@ class Populator {
private $formsRepository;
/** @var WP */
private $wpSegment;
/** @var EntityManager */
private $entityManager;
public function __construct(
SettingsController $settings,
@ -57,6 +63,7 @@ class Populator {
Captcha $captcha,
ReferralDetector $referralDetector,
FormsRepository $formsRepository,
EntityManager $entityManager,
WP $wpSegment
) {
$this->settings = $settings;
@ -146,6 +153,7 @@ class Populator {
'FarmersMarket',
];
$this->formsRepository = $formsRepository;
$this->entityManager = $entityManager;
}
public function up() {
@ -694,15 +702,27 @@ class Populator {
if (version_compare($this->settings->get('db_version', '3.60.5'), '3.60.4', '>')) {
return;
}
global $wpdb;
$wpdb->query(
'UPDATE `' . ScheduledTask::$_table . '` t ' .
'JOIN `' . SendingQueue::$_table . '` q ON t.`id` = q.`task_id` ' .
'JOIN `' . Newsletter::$_table . '` n ON n.`id` = q.`newsletter_id` ' .
'SET t.`status` = "' . ScheduledTask::STATUS_PAUSED . '" ' .
'WHERE ' .
' t.`status` = "' . ScheduledTask::STATUS_SCHEDULED . '" ' .
' AND n.`status` = "' . Newsletter::STATUS_DRAFT . '" '
$scheduledTaskTable = $this->entityManager->getClassMetadata(ScheduledTaskEntity::class)->getTableName();
$sendingQueueTable = $this->entityManager->getClassMetadata(SendingQueueEntity::class)->getTableName();
$newsletterTable = $this->entityManager->getClassMetadata(NewsletterEntity::class)->getTableName();
$query = "
UPDATE $scheduledTaskTable as t
JOIN $sendingQueueTable as q ON t.id = q.task_id
JOIN $newsletterTable as n ON n.id = q.newsletter_id
SET t.status = :tStatusPaused
WHERE
t.status = :tStatusScheduled
AND n.status = :nStatusDraft
";
$this->entityManager->getConnection()->executeUpdate(
$query,
[
'tStatusPaused' => ScheduledTaskEntity::STATUS_PAUSED,
'tStatusScheduled' => ScheduledTaskEntity::STATUS_SCHEDULED,
'nStatusDraft' => NewsletterEntity::STATUS_DRAFT,
]
);
}

View File

@ -36,6 +36,7 @@ class SetupTest extends \MailPoetTest {
new Captcha(),
$referralDetector,
$this->diContainer->get(FormsRepository::class),
$this->entityManager,
$this->diContainer->get(WP::class)
);
$router = new Setup($wpStub, new Activator($settings, $populator));