Remove old ScheduledTask model from Config\Populator

[MAILPOET-4306]
This commit is contained in:
Rodrigo Primo
2022-09-15 15:57:25 -03:00
committed by Aschepikov
parent bc1ee3caa2
commit ef66a21096
2 changed files with 26 additions and 21 deletions

View File

@ -22,8 +22,8 @@ use MailPoet\Entities\SubscriberEntity;
use MailPoet\Entities\UserFlagEntity; use MailPoet\Entities\UserFlagEntity;
use MailPoet\Form\FormsRepository; use MailPoet\Form\FormsRepository;
use MailPoet\Mailer\MailerLog; use MailPoet\Mailer\MailerLog;
use MailPoet\Models\ScheduledTask;
use MailPoet\Models\Segment; use MailPoet\Models\Segment;
use MailPoet\Newsletter\Sending\ScheduledTasksRepository;
use MailPoet\Referrals\ReferralDetector; use MailPoet\Referrals\ReferralDetector;
use MailPoet\Segments\WP; use MailPoet\Segments\WP;
use MailPoet\Services\Bridge; use MailPoet\Services\Bridge;
@ -59,6 +59,8 @@ class Populator {
private $wpSegment; private $wpSegment;
/** @var EntityManager */ /** @var EntityManager */
private $entityManager; private $entityManager;
/** @var ScheduledTasksRepository */
private $scheduledTasksRepository;
public function __construct( public function __construct(
SettingsController $settings, SettingsController $settings,
@ -67,7 +69,8 @@ class Populator {
ReferralDetector $referralDetector, ReferralDetector $referralDetector,
FormsRepository $formsRepository, FormsRepository $formsRepository,
EntityManager $entityManager, EntityManager $entityManager,
WP $wpSegment WP $wpSegment,
ScheduledTasksRepository $scheduledTasksRepository
) { ) {
$this->settings = $settings; $this->settings = $settings;
$this->wp = $wp; $this->wp = $wp;
@ -159,6 +162,7 @@ class Populator {
]; ];
$this->formsRepository = $formsRepository; $this->formsRepository = $formsRepository;
$this->entityManager = $entityManager; $this->entityManager = $entityManager;
$this->scheduledTasksRepository = $scheduledTasksRepository;
} }
public function up() { public function up() {
@ -621,8 +625,9 @@ class Populator {
if (version_compare((string)$this->settings->get('db_version', '3.26.1'), '3.26.0', '>')) { if (version_compare((string)$this->settings->get('db_version', '3.26.1'), '3.26.0', '>')) {
return false; return false;
} }
$scheduledTaskTable = $this->entityManager->getClassMetadata(ScheduledTaskEntity::class)->getTableName();
$sendingQueueTable = $this->entityManager->getClassMetadata(SendingQueueEntity::class)->getTableName(); $sendingQueueTable = $this->entityManager->getClassMetadata(SendingQueueEntity::class)->getTableName();
$tables = [ScheduledTask::$_table, $sendingQueueTable]; $tables = [$scheduledTaskTable, $sendingQueueTable];
foreach ($tables as $table) { foreach ($tables as $table) {
$wpdb->query("UPDATE `" . esc_sql($table) . "` SET meta = NULL WHERE meta = 'null'"); $wpdb->query("UPDATE `" . esc_sql($table) . "` SET meta = NULL WHERE meta = 'null'");
} }
@ -685,20 +690,28 @@ class Populator {
} }
private function scheduleTask($type, $datetime, $priority = null) { private function scheduleTask($type, $datetime, $priority = null) {
$task = ScheduledTask::where('type', $type) $task = $this->scheduledTasksRepository->findOneBy(
->whereRaw('(status = ? OR status IS NULL)', [ScheduledTask::STATUS_SCHEDULED]) [
->findOne(); 'type' => $type,
'status' => [ScheduledTaskEntity::STATUS_SCHEDULED, null],
]
);
if ($task) { if ($task) {
return true; return true;
} }
$task = ScheduledTask::create();
$task->type = $type; $task = new ScheduledTaskEntity();
$task->setType($type);
$task->setStatus(ScheduledTaskEntity::STATUS_SCHEDULED);
$task->setScheduledAt($datetime);
if ($priority !== null) { if ($priority !== null) {
$task->priority = $priority; $task->setPriority($priority);
} }
$task->status = ScheduledTask::STATUS_SCHEDULED;
$task->scheduledAt = $datetime; $this->scheduledTasksRepository->persist($task);
$task->save(); $this->scheduledTasksRepository->flush();
} }
private function enableStatsNotificationsForAutomatedEmails() { private function enableStatsNotificationsForAutomatedEmails() {

View File

@ -32,15 +32,7 @@ class SetupTest extends \MailPoetTest {
$settings = SettingsController::getInstance(); $settings = SettingsController::getInstance();
$referralDetector = new ReferralDetector($wpStub, $settings); $referralDetector = new ReferralDetector($wpStub, $settings);
$subscriptionCaptcha = $this->diContainer->get(Captcha::class); $subscriptionCaptcha = $this->diContainer->get(Captcha::class);
$populator = new Populator( $populator = $this->getServiceWithOverrides(Populator::class, ['wp' => $wpStub, 'referralDetector' => $referralDetector]);
$settings,
$wpStub,
$subscriptionCaptcha,
$referralDetector,
$this->diContainer->get(FormsRepository::class),
$this->entityManager,
$this->diContainer->get(WP::class)
);
$migrator = $this->diContainer->get(Migrator::class); $migrator = $this->diContainer->get(Migrator::class);
$router = new Setup($wpStub, new Activator($settings, $populator, $wpStub, $migrator)); $router = new Setup($wpStub, new Activator($settings, $populator, $wpStub, $migrator));
$response = $router->reset(); $response = $router->reset();