Remove MailPoet Trigger
[MAILPOET-4271]
This commit is contained in:
@@ -2,17 +2,14 @@
|
|||||||
|
|
||||||
namespace MailPoet\Cron;
|
namespace MailPoet\Cron;
|
||||||
|
|
||||||
use MailPoet\Cron\Triggers\MailPoet;
|
|
||||||
use MailPoet\Cron\Triggers\WordPress;
|
use MailPoet\Cron\Triggers\WordPress;
|
||||||
use MailPoet\Settings\SettingsController;
|
use MailPoet\Settings\SettingsController;
|
||||||
|
|
||||||
class CronTrigger {
|
class CronTrigger {
|
||||||
const METHOD_LINUX_CRON = 'Linux Cron';
|
const METHOD_LINUX_CRON = 'Linux Cron';
|
||||||
const METHOD_MAILPOET = 'MailPoet';
|
|
||||||
const METHOD_WORDPRESS = 'WordPress';
|
const METHOD_WORDPRESS = 'WordPress';
|
||||||
|
|
||||||
const METHODS = [
|
const METHODS = [
|
||||||
'mailpoet' => self::METHOD_MAILPOET,
|
|
||||||
'wordpress' => self::METHOD_WORDPRESS,
|
'wordpress' => self::METHOD_WORDPRESS,
|
||||||
'linux_cron' => self::METHOD_LINUX_CRON,
|
'linux_cron' => self::METHOD_LINUX_CRON,
|
||||||
'none' => 'Disabled',
|
'none' => 'Disabled',
|
||||||
@@ -21,9 +18,6 @@ class CronTrigger {
|
|||||||
const DEFAULT_METHOD = 'WordPress';
|
const DEFAULT_METHOD = 'WordPress';
|
||||||
const SETTING_NAME = 'cron_trigger';
|
const SETTING_NAME = 'cron_trigger';
|
||||||
|
|
||||||
/** @var MailPoet */
|
|
||||||
private $mailpoetTrigger;
|
|
||||||
|
|
||||||
/** @var WordPress */
|
/** @var WordPress */
|
||||||
private $wordpressTrigger;
|
private $wordpressTrigger;
|
||||||
|
|
||||||
@@ -31,11 +25,9 @@ class CronTrigger {
|
|||||||
private $settings;
|
private $settings;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
MailPoet $mailpoetTrigger,
|
|
||||||
WordPress $wordpressTrigger,
|
WordPress $wordpressTrigger,
|
||||||
SettingsController $settings
|
SettingsController $settings
|
||||||
) {
|
) {
|
||||||
$this->mailpoetTrigger = $mailpoetTrigger;
|
|
||||||
$this->wordpressTrigger = $wordpressTrigger;
|
$this->wordpressTrigger = $wordpressTrigger;
|
||||||
$this->settings = $settings;
|
$this->settings = $settings;
|
||||||
}
|
}
|
||||||
@@ -43,9 +35,7 @@ class CronTrigger {
|
|||||||
public function init() {
|
public function init() {
|
||||||
$currentMethod = $this->settings->get(self::SETTING_NAME . '.method');
|
$currentMethod = $this->settings->get(self::SETTING_NAME . '.method');
|
||||||
try {
|
try {
|
||||||
if ($currentMethod === self::METHOD_MAILPOET) {
|
if ($currentMethod === self::METHOD_WORDPRESS) {
|
||||||
return $this->mailpoetTrigger->run();
|
|
||||||
} elseif ($currentMethod === self::METHOD_WORDPRESS) {
|
|
||||||
return $this->wordpressTrigger->run();
|
return $this->wordpressTrigger->run();
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@@ -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();
|
|
||||||
}
|
|
||||||
}
|
|
@@ -4,6 +4,7 @@ namespace MailPoet\Cron\Triggers;
|
|||||||
|
|
||||||
use MailPoet\Config\ServicesChecker;
|
use MailPoet\Config\ServicesChecker;
|
||||||
use MailPoet\Cron\CronHelper;
|
use MailPoet\Cron\CronHelper;
|
||||||
|
use MailPoet\Cron\Supervisor;
|
||||||
use MailPoet\Cron\Workers\AuthorizedSendingEmailsCheck;
|
use MailPoet\Cron\Workers\AuthorizedSendingEmailsCheck;
|
||||||
use MailPoet\Cron\Workers\Beamer as BeamerWorker;
|
use MailPoet\Cron\Workers\Beamer as BeamerWorker;
|
||||||
use MailPoet\Cron\Workers\Bounce as BounceWorker;
|
use MailPoet\Cron\Workers\Bounce as BounceWorker;
|
||||||
@@ -45,8 +46,8 @@ class WordPress {
|
|||||||
/** @var CronHelper */
|
/** @var CronHelper */
|
||||||
private $cronHelper;
|
private $cronHelper;
|
||||||
|
|
||||||
/** @var MailPoet */
|
/** @var Supervisor */
|
||||||
private $mailpoetTrigger;
|
private $supervisor;
|
||||||
|
|
||||||
/** @var SettingsController */
|
/** @var SettingsController */
|
||||||
private $settings;
|
private $settings;
|
||||||
@@ -62,13 +63,13 @@ class WordPress {
|
|||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
CronHelper $cronHelper,
|
CronHelper $cronHelper,
|
||||||
MailPoet $mailpoetTrigger,
|
Supervisor $supervisor,
|
||||||
SettingsController $settings,
|
SettingsController $settings,
|
||||||
ServicesChecker $serviceChecker,
|
ServicesChecker $serviceChecker,
|
||||||
WPFunctions $wp,
|
WPFunctions $wp,
|
||||||
EntityManager $entityManager
|
EntityManager $entityManager
|
||||||
) {
|
) {
|
||||||
$this->mailpoetTrigger = $mailpoetTrigger;
|
$this->supervisor = $supervisor;
|
||||||
$this->settings = $settings;
|
$this->settings = $settings;
|
||||||
$this->wp = $wp;
|
$this->wp = $wp;
|
||||||
$this->cronHelper = $cronHelper;
|
$this->cronHelper = $cronHelper;
|
||||||
@@ -80,9 +81,13 @@ class WordPress {
|
|||||||
if (!$this->checkRunInterval()) {
|
if (!$this->checkRunInterval()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return ($this->checkExecutionRequirements()) ?
|
if (!$this->checkExecutionRequirements()) {
|
||||||
$this->mailpoetTrigger->run() :
|
$this->stop();
|
||||||
self::stop();
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->supervisor->init();
|
||||||
|
return $this->supervisor->checkDaemon();
|
||||||
}
|
}
|
||||||
|
|
||||||
private function checkRunInterval() {
|
private function checkRunInterval() {
|
||||||
|
@@ -187,7 +187,6 @@ class ContainerConfigurator implements IContainerConfigurator {
|
|||||||
$container->autowire(\MailPoet\Cron\Daemon::class)->setPublic(true);
|
$container->autowire(\MailPoet\Cron\Daemon::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Cron\DaemonHttpRunner::class)->setPublic(true);
|
$container->autowire(\MailPoet\Cron\DaemonHttpRunner::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Cron\Supervisor::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\Triggers\WordPress::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Cron\Workers\WorkersFactory::class)->setPublic(true);
|
$container->autowire(\MailPoet\Cron\Workers\WorkersFactory::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Cron\Workers\SendingQueue\SendingErrorHandler::class)->setPublic(true);
|
$container->autowire(\MailPoet\Cron\Workers\SendingQueue\SendingErrorHandler::class)->setPublic(true);
|
||||||
|
@@ -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();
|
|
||||||
}
|
|
||||||
}
|
|
@@ -11,10 +11,8 @@ use MailPoet\Settings\SettingsController;
|
|||||||
class CronTriggerTest extends \MailPoetUnitTest {
|
class CronTriggerTest extends \MailPoetUnitTest {
|
||||||
public function testItDefinesConstants() {
|
public function testItDefinesConstants() {
|
||||||
expect(CronTrigger::METHOD_LINUX_CRON)->same('Linux Cron');
|
expect(CronTrigger::METHOD_LINUX_CRON)->same('Linux Cron');
|
||||||
expect(CronTrigger::METHOD_MAILPOET)->same('MailPoet');
|
|
||||||
expect(CronTrigger::METHOD_WORDPRESS)->same('WordPress');
|
expect(CronTrigger::METHOD_WORDPRESS)->same('WordPress');
|
||||||
expect(CronTrigger::METHODS)->equals([
|
expect(CronTrigger::METHODS)->equals([
|
||||||
'mailpoet' => 'MailPoet',
|
|
||||||
'wordpress' => 'WordPress',
|
'wordpress' => 'WordPress',
|
||||||
'linux_cron' => 'Linux Cron',
|
'linux_cron' => 'Linux Cron',
|
||||||
'none' => 'Disabled',
|
'none' => 'Disabled',
|
||||||
@@ -41,24 +39,22 @@ class CronTriggerTest extends \MailPoetUnitTest {
|
|||||||
|
|
||||||
public function testItIgnoresExceptionsThrownFromCronTriggerMethods() {
|
public function testItIgnoresExceptionsThrownFromCronTriggerMethods() {
|
||||||
$settingsMock = Stub::makeEmpty(SettingsController::class, [
|
$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 () {
|
'run' => function () {
|
||||||
throw new \Exception();
|
throw new \Exception();
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
$cronTrigger = $this->createCronTrigger($settingsMock, $mailpoetTrigger);
|
$cronTrigger = $this->createCronTrigger($settingsMock, $wordPressTrigger);
|
||||||
expect($cronTrigger->init())->null();
|
expect($cronTrigger->init())->null();
|
||||||
}
|
}
|
||||||
|
|
||||||
private function createCronTrigger(
|
private function createCronTrigger(
|
||||||
SettingsController $settings,
|
SettingsController $settings,
|
||||||
MailPoet $mailpoetTrigger = null,
|
|
||||||
WordPress $wordpressTrigger = null
|
WordPress $wordpressTrigger = null
|
||||||
) {
|
) {
|
||||||
$mailpoetTrigger = $mailpoetTrigger ?: $this->make(MailPoet::class, ['run' => true]);
|
|
||||||
$wordpressTrigger = $wordpressTrigger ?: $this->make(WordPress::class, ['run' => true]);
|
$wordpressTrigger = $wordpressTrigger ?: $this->make(WordPress::class, ['run' => true]);
|
||||||
return new CronTrigger($mailpoetTrigger, $wordpressTrigger, $settings);
|
return new CronTrigger($wordpressTrigger, $settings);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user