Execute WordPress cron trigger with a time interval [MAILPOET-2181]

This commit is contained in:
wxa
2019-07-26 22:33:33 +03:00
committed by M. Shull
parent 82661248f3
commit e1b8462254
3 changed files with 52 additions and 0 deletions

View File

@ -27,14 +27,38 @@ if (!defined('ABSPATH')) exit;
class WordPress {
const SCHEDULED_IN_THE_PAST = 'past';
const SCHEDULED_IN_THE_FUTURE = 'future';
const RUN_INTERVAL = 10; // seconds
const LAST_RUN_AT_SETTING = 'cron_trigger_wordpress.last_run_at';
static private $tasks_counts;
static function run() {
if (!self::checkRunInterval()) {
return false;
}
return (self::checkExecutionRequirements()) ?
MailPoet::run() :
self::stop();
}
private static function checkRunInterval() {
$settings = new SettingsController();
$last_run_at = (int)$settings->get(self::LAST_RUN_AT_SETTING, 0);
$run_interval = WPFunctions::get()->applyFilters('mailpoet_cron_trigger_wordpress_run_interval', self::RUN_INTERVAL);
$run_interval_elapsed = (time() - $last_run_at) >= $run_interval;
if ($run_interval_elapsed) {
$settings->set(self::LAST_RUN_AT_SETTING, time());
return true;
}
return false;
}
static function resetRunInterval() {
$settings = new SettingsController();
$settings->set(self::LAST_RUN_AT_SETTING, 0);
}
static function checkExecutionRequirements(WPFunctions $wp = null) {
self::loadTasksCounts($wp ?: new WPFunctions);