Files
piratepoet/mailpoet/mailpoet-cron.php
Rodrigo Primo 302aba0274 Add explanation of what mailpoet-cron.php does
This commit adds a brief explanation of what the mailpoet-cron.php script
does to the top of the file. This change was requested by the WP.org
plugin team.

[MAILPOET-4228]
2022-04-01 15:14:24 -03:00

60 lines
2.0 KiB
PHP

<?php
/**
* This file may be used by MailPoet to run a cron daemon that sends emails and perform other periodic tasks. It is
* disabled by default, and it only works on the command line (it is not accessible via the web browser in any way).
* It is used by a small subset of users that are not able to use the recommended method to send MailPoet emails.
* This is the case for sites that have their WP-Cron jobs broken by 3rd party plugins during cron processing, which
* prevents MailPoet from functioning. To work around this problem, this script loads only MailPoet and WordPress,
* without any other plugins. That is why it needs to require wp-load.php directly.
*/
ini_set("display_errors", "1");
error_reporting(E_ALL);
if (!isset($argv[1]) || !$argv[1]) {
echo 'You need to pass a WordPress root as an argument.';
exit(1);
}
$wpLoadFile = $argv[1] . '/wp-load.php';
if (!file_exists($wpLoadFile)) {
echo 'WordPress root argument is not valid.';
exit(1);
}
if (!defined('ABSPATH')) {
/** Set up WordPress environment */
require_once($wpLoadFile);
}
if (!is_plugin_active('mailpoet/mailpoet.php')) {
echo 'MailPoet plugin is not active';
exit(1);
}
// Check for minimum supported PHP version
if (version_compare(phpversion(), '7.2.0', '<')) {
echo 'MailPoet requires PHP version 7.2 or newer (version 8.0 recommended).';
exit(1);
}
if (strpos(@ini_get('disable_functions'), 'set_time_limit') === false) {
set_time_limit(0);
}
$container = \MailPoet\DI\ContainerWrapper::getInstance(WP_DEBUG);
// Check if Linux Cron method is set in plugin settings
$settings = $container->get(\MailPoet\Settings\SettingsController::class);
if ($settings->get('cron_trigger.method') !== \MailPoet\Cron\CronTrigger::METHOD_LINUX_CRON) {
echo 'MailPoet is not configured to run with Linux Cron.';
exit(1);
}
// Run Cron Daemon
$cronHelper = $container->get(\MailPoet\Cron\CronHelper::class);
$data = $cronHelper->createDaemon(null);
$trigger = $container->get(\MailPoet\Cron\Daemon::class);
$trigger->run($data);