Remove MailPoet Trigger

[MAILPOET-4271]
This commit is contained in:
David Remer
2022-05-02 11:40:04 +03:00
committed by Veljko V
parent 6e0b639fd3
commit 33e5e15e98
6 changed files with 17 additions and 82 deletions

View File

@@ -2,17 +2,14 @@
namespace MailPoet\Cron;
use MailPoet\Cron\Triggers\MailPoet;
use MailPoet\Cron\Triggers\WordPress;
use MailPoet\Settings\SettingsController;
class CronTrigger {
const METHOD_LINUX_CRON = 'Linux Cron';
const METHOD_MAILPOET = 'MailPoet';
const METHOD_WORDPRESS = 'WordPress';
const METHODS = [
'mailpoet' => self::METHOD_MAILPOET,
'wordpress' => self::METHOD_WORDPRESS,
'linux_cron' => self::METHOD_LINUX_CRON,
'none' => 'Disabled',
@@ -21,9 +18,6 @@ class CronTrigger {
const DEFAULT_METHOD = 'WordPress';
const SETTING_NAME = 'cron_trigger';
/** @var MailPoet */
private $mailpoetTrigger;
/** @var WordPress */
private $wordpressTrigger;
@@ -31,11 +25,9 @@ class CronTrigger {
private $settings;
public function __construct(
MailPoet $mailpoetTrigger,
WordPress $wordpressTrigger,
SettingsController $settings
) {
$this->mailpoetTrigger = $mailpoetTrigger;
$this->wordpressTrigger = $wordpressTrigger;
$this->settings = $settings;
}
@@ -43,9 +35,7 @@ class CronTrigger {
public function init() {
$currentMethod = $this->settings->get(self::SETTING_NAME . '.method');
try {
if ($currentMethod === self::METHOD_MAILPOET) {
return $this->mailpoetTrigger->run();
} elseif ($currentMethod === self::METHOD_WORDPRESS) {
if ($currentMethod === self::METHOD_WORDPRESS) {
return $this->wordpressTrigger->run();
}
return false;

View File

@@ -1,21 +0,0 @@
<?php
namespace MailPoet\Cron\Triggers;
use MailPoet\Cron\Supervisor;
class MailPoet {
/** @var Supervisor */
private $supervisor;
public function __construct(
Supervisor $supervisor
) {
$this->supervisor = $supervisor;
}
public function run() {
$this->supervisor->init();
return $this->supervisor->checkDaemon();
}
}

View File

@@ -4,6 +4,7 @@ namespace MailPoet\Cron\Triggers;
use MailPoet\Config\ServicesChecker;
use MailPoet\Cron\CronHelper;
use MailPoet\Cron\Supervisor;
use MailPoet\Cron\Workers\AuthorizedSendingEmailsCheck;
use MailPoet\Cron\Workers\Beamer as BeamerWorker;
use MailPoet\Cron\Workers\Bounce as BounceWorker;
@@ -45,8 +46,8 @@ class WordPress {
/** @var CronHelper */
private $cronHelper;
/** @var MailPoet */
private $mailpoetTrigger;
/** @var Supervisor */
private $supervisor;
/** @var SettingsController */
private $settings;
@@ -62,13 +63,13 @@ class WordPress {
public function __construct(
CronHelper $cronHelper,
MailPoet $mailpoetTrigger,
Supervisor $supervisor,
SettingsController $settings,
ServicesChecker $serviceChecker,
WPFunctions $wp,
EntityManager $entityManager
) {
$this->mailpoetTrigger = $mailpoetTrigger;
$this->supervisor = $supervisor;
$this->settings = $settings;
$this->wp = $wp;
$this->cronHelper = $cronHelper;
@@ -80,9 +81,13 @@ class WordPress {
if (!$this->checkRunInterval()) {
return false;
}
return ($this->checkExecutionRequirements()) ?
$this->mailpoetTrigger->run() :
self::stop();
if (!$this->checkExecutionRequirements()) {
$this->stop();
return;
}
$this->supervisor->init();
return $this->supervisor->checkDaemon();
}
private function checkRunInterval() {

View File

@@ -187,7 +187,6 @@ class ContainerConfigurator implements IContainerConfigurator {
$container->autowire(\MailPoet\Cron\Daemon::class)->setPublic(true);
$container->autowire(\MailPoet\Cron\DaemonHttpRunner::class)->setPublic(true);
$container->autowire(\MailPoet\Cron\Supervisor::class)->setPublic(true);
$container->autowire(\MailPoet\Cron\Triggers\MailPoet::class)->setPublic(true);
$container->autowire(\MailPoet\Cron\Triggers\WordPress::class)->setPublic(true);
$container->autowire(\MailPoet\Cron\Workers\WorkersFactory::class)->setPublic(true);
$container->autowire(\MailPoet\Cron\Workers\SendingQueue\SendingErrorHandler::class)->setPublic(true);

View File

@@ -1,34 +0,0 @@
<?php
namespace MailPoet\Cron\Triggers;
use MailPoet\Cron\CronHelper;
use MailPoet\Settings\SettingsController;
use MailPoet\Settings\SettingsRepository;
class MailPoetTest extends \MailPoetTest {
/** @var SettingsController */
private $settings;
public function _before() {
parent::_before();
// cron trigger is by default set to 'WordPress'; when it runs and does not
// detect any queues to process, it deletes the daemon setting, so Supervisor that's
// called by the MailPoet cron trigger does not work. for that matter, we need to set
// the trigger setting to anything but 'WordPress'.
$this->settings = SettingsController::getInstance();
$this->settings->set('cron_trigger', [
'method' => 'none',
]);
}
public function testItCanRun() {
expect($this->settings->get(CronHelper::DAEMON_SETTING))->null();
$this->diContainer->get(MailPoet::class)->run();
expect($this->settings->get(CronHelper::DAEMON_SETTING))->notEmpty();
}
public function _after() {
$this->diContainer->get(SettingsRepository::class)->truncate();
}
}

View File

@@ -11,10 +11,8 @@ use MailPoet\Settings\SettingsController;
class CronTriggerTest extends \MailPoetUnitTest {
public function testItDefinesConstants() {
expect(CronTrigger::METHOD_LINUX_CRON)->same('Linux Cron');
expect(CronTrigger::METHOD_MAILPOET)->same('MailPoet');
expect(CronTrigger::METHOD_WORDPRESS)->same('WordPress');
expect(CronTrigger::METHODS)->equals([
'mailpoet' => 'MailPoet',
'wordpress' => 'WordPress',
'linux_cron' => 'Linux Cron',
'none' => 'Disabled',
@@ -41,24 +39,22 @@ class CronTriggerTest extends \MailPoetUnitTest {
public function testItIgnoresExceptionsThrownFromCronTriggerMethods() {
$settingsMock = Stub::makeEmpty(SettingsController::class, [
'get' => CronTrigger::METHOD_MAILPOET,
'get' => CronTrigger::METHOD_WORDPRESS,
]);
$mailpoetTrigger = $this->makeEmpty(MailPoet::class, [
$wordPressTrigger = $this->makeEmpty(WordPress::class, [
'run' => function () {
throw new \Exception();
},
]);
$cronTrigger = $this->createCronTrigger($settingsMock, $mailpoetTrigger);
$cronTrigger = $this->createCronTrigger($settingsMock, $wordPressTrigger);
expect($cronTrigger->init())->null();
}
private function createCronTrigger(
SettingsController $settings,
MailPoet $mailpoetTrigger = null,
WordPress $wordpressTrigger = null
) {
$mailpoetTrigger = $mailpoetTrigger ?: $this->make(MailPoet::class, ['run' => true]);
$wordpressTrigger = $wordpressTrigger ?: $this->make(WordPress::class, ['run' => true]);
return new CronTrigger($mailpoetTrigger, $wordpressTrigger, $settings);
return new CronTrigger($wordpressTrigger, $settings);
}
}