- Modifies cron router/UI to display proper status message when WP task
scheduler is configured and cron is not running - Updates sending queue worker and related components to stop (delete) cron when all processing is done
This commit is contained in:
@ -53,10 +53,13 @@ define(
|
|||||||
}.bind(this));
|
}.bind(this));
|
||||||
},
|
},
|
||||||
render: function() {
|
render: function() {
|
||||||
if(this.state.status === 'loading') {
|
|
||||||
return(<div>{MailPoet.I18n.t('loadingDaemonStatus')}</div>);
|
|
||||||
}
|
|
||||||
switch(this.state.status) {
|
switch(this.state.status) {
|
||||||
|
case 'loading':
|
||||||
|
return(
|
||||||
|
<div>
|
||||||
|
{MailPoet.I18n.t('loadingDaemonStatus')}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
case 'started':
|
case 'started':
|
||||||
return(
|
return(
|
||||||
<div>
|
<div>
|
||||||
@ -85,6 +88,20 @@ define(
|
|||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
case 'wordpress_task_scheduler_enabled':
|
||||||
|
return(
|
||||||
|
<div>
|
||||||
|
{MailPoet.I18n.t('wordpressTaskSchedulerEnabled')}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case false:
|
||||||
|
return(
|
||||||
|
<div>
|
||||||
|
{MailPoet.I18n.t('daemonNotRunning')}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace MailPoet\API\Endpoints;
|
namespace MailPoet\API\Endpoints;
|
||||||
|
|
||||||
|
use MailPoet\Config\TaskScheduler;
|
||||||
use MailPoet\Cron\CronHelper;
|
use MailPoet\Cron\CronHelper;
|
||||||
use MailPoet\Cron\Supervisor;
|
use MailPoet\Cron\Supervisor;
|
||||||
use MailPoet\Models\Setting;
|
use MailPoet\Models\Setting;
|
||||||
@ -27,10 +28,14 @@ class Cron {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getStatus() {
|
function getStatus() {
|
||||||
$daemon = Setting::where('name', 'cron_daemon')
|
$task_scheduler = TaskScheduler::getCurrentMethod();
|
||||||
->findOne();
|
$daemon = Setting::getSetting(CronHelper::DAEMON_SETTING);
|
||||||
return ($daemon) ?
|
if($daemon) {
|
||||||
unserialize($daemon->value) :
|
return $daemon;
|
||||||
|
}
|
||||||
|
$status = ($task_scheduler === TaskScheduler::METHOD_WORDPRESS) ?
|
||||||
|
'wordpress_task_scheduler_enabled' :
|
||||||
false;
|
false;
|
||||||
|
return array('status' => $status);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -12,6 +12,7 @@ class CronHelper {
|
|||||||
const DAEMON_EXECUTION_LIMIT = 20;
|
const DAEMON_EXECUTION_LIMIT = 20;
|
||||||
const DAEMON_EXECUTION_TIMEOUT = 35;
|
const DAEMON_EXECUTION_TIMEOUT = 35;
|
||||||
const DAEMON_REQUEST_TIMEOUT = 2;
|
const DAEMON_REQUEST_TIMEOUT = 2;
|
||||||
|
const DAEMON_SETTING = 'cron_daemon';
|
||||||
|
|
||||||
static function createDaemon($token) {
|
static function createDaemon($token) {
|
||||||
$daemon = array(
|
$daemon = array(
|
||||||
@ -23,17 +24,27 @@ class CronHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static function getDaemon() {
|
static function getDaemon() {
|
||||||
return Setting::getValue('cron_daemon');
|
return Setting::getValue(self::DAEMON_SETTING);
|
||||||
}
|
}
|
||||||
|
|
||||||
static function saveDaemon($daemon) {
|
static function saveDaemon($daemon) {
|
||||||
$daemon['updated_at'] = time();
|
$daemon['updated_at'] = time();
|
||||||
return Setting::setValue(
|
return Setting::setValue(
|
||||||
'cron_daemon',
|
self::DAEMON_SETTING,
|
||||||
$daemon
|
$daemon
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static function stopDaemon() {
|
||||||
|
$daemon = self::getDaemon();
|
||||||
|
$daemon['status'] = Daemon::STATUS_STOPPED;
|
||||||
|
return self::saveDaemon($daemon);
|
||||||
|
}
|
||||||
|
|
||||||
|
static function deleteDaemon() {
|
||||||
|
return Setting::deleteSetting(self::DAEMON_SETTING);
|
||||||
|
}
|
||||||
|
|
||||||
static function createToken() {
|
static function createToken() {
|
||||||
return Security::generateRandomString();
|
return Security::generateRandomString();
|
||||||
}
|
}
|
||||||
|
@ -62,7 +62,7 @@ class Newsletter {
|
|||||||
return $newsletter;
|
return $newsletter;
|
||||||
}
|
}
|
||||||
|
|
||||||
function render($newsletter) {
|
function render(array $newsletter) {
|
||||||
$renderer = new Renderer($newsletter);
|
$renderer = new Renderer($newsletter);
|
||||||
$newsletter['rendered_body'] = $renderer->render();
|
$newsletter['rendered_body'] = $renderer->render();
|
||||||
return $newsletter;
|
return $newsletter;
|
||||||
@ -103,4 +103,12 @@ class Newsletter {
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
function markNewsletterAsSent($queue_id) {
|
||||||
|
$newsletter = NewsletterModel::findOne($queue_id);
|
||||||
|
// if it's a standard newsletter, update its status
|
||||||
|
if($newsletter->type === NewsletterModel::TYPE_STANDARD) {
|
||||||
|
$newsletter->setStatus(NewsletterModel::STATUS_SENT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -160,4 +160,13 @@ class Setting extends Model {
|
|||||||
|
|
||||||
return $setting->save();
|
return $setting->save();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
public static function getSetting($setting) {
|
||||||
|
return self::where('name', $setting)->findOne();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function deleteSetting($setting) {
|
||||||
|
$setting = self::where('name', $setting)->findOne();
|
||||||
|
return ($setting) ? $setting->delete() : false;
|
||||||
|
}
|
||||||
|
}
|
@ -6,9 +6,11 @@
|
|||||||
|
|
||||||
<% block translations %>
|
<% block translations %>
|
||||||
<%= localize({
|
<%= localize({
|
||||||
|
'daemonNotRunning': __('Daemon is not running'),
|
||||||
|
'wordpressTaskSchedulerEnabled': __('Daemon is not running because WordPress task scheduler is enabled and there are no scheduled or in-progress jobs'),
|
||||||
'daemonControlError': __('Cron daemon error'),
|
'daemonControlError': __('Cron daemon error'),
|
||||||
'loadingDaemonStatus': __('Loading daemon status...'),
|
'loadingDaemonStatus': __('Loading daemon status...'),
|
||||||
'cronDaemonIsRunning': __('Cron daemon is running.'),
|
'cronDaemonIsRunning': __('Cron daemon is running'),
|
||||||
'stop': __('Stop'),
|
'stop': __('Stop'),
|
||||||
'start': __('Start'),
|
'start': __('Start'),
|
||||||
'cronDaemonState': __('Cron is %$1s')
|
'cronDaemonState': __('Cron is %$1s')
|
||||||
|
Reference in New Issue
Block a user