/** * run process if it's not detected as already running * @param type $process * @return type */ function run_scheduled_task($process = 'queue') { //first let's make sure that the process asked to be run is not already running $scheduled_times = WYSIJA::get_cron_schedule($process); $processes = WYSIJA::get_cron_frequencies(); $process_frequency = $processes[$process]; // check if the scheduled task is already being processed, // we consider it timed out once the started running time plus the frequency has been passed if (!empty($scheduled_times['running']) && $scheduled_times['running'] + $process_frequency > time()) { if ($this->report) { echo 'already running : ' . $process . '<br/>'; } return; } // set schedule as running WYSIJA::set_cron_schedule($process, 0, time()); // execute schedule switch ($process) { case 'queue': // check if there are any scheduled newsletters ready for action WYSIJA::check_scheduled_newsletters(); // if premium is activated we execute the premium cron process if (defined('WYSIJANLP')) { $helper_premium = WYSIJA::get('premium', 'helper', false, WYSIJANLP); $helper_premium->croned_queue_process(); } else { // run the standard queue process no scheduled tasks will be check since it has already been checked above WYSIJA::croned_queue(false); } break; case 'bounce': $helper_premium = WYSIJA::get('premium', 'helper', false, WYSIJANLP); $model_config = WYSIJA::get('config', 'model'); // if premium is activated we launch the premium function if (is_multisite()) { $multisite_prefix = 'ms_'; } // we don't process the bounce automatically unless the option is ticked if (defined('WYSIJANLP') && $model_config->getValue($multisite_prefix . 'bounce_process_auto')) { $helper_premium->croned_bounce(); } else { $process .= ' (bounce handling not activated)'; } break; case 'daily': WYSIJA::croned_daily(); break; case 'weekly': if (defined('WYSIJANLP')) { $helper_premium = WYSIJA::get('premium', 'helper', false, WYSIJANLP); $helper_premium->croned_weekly(); } WYSIJA::croned_weekly(); break; case 'monthly': WYSIJA::croned_monthly(); break; } // set next_schedule details WYSIJA::set_cron_schedule($process); if ($this->report) { echo 'processed : ' . $process . '<br/>'; } }
/** * scheduled task for sending the emails in the queue, the frequency is set in the settings */ public static function croned_queue($check_scheduled_newsletter = true) { // check the scheduled tasks only if it's a standard WP scheduled task free only if ($check_scheduled_newsletter) { WYSIJA::check_scheduled_newsletters(); } $model_config = WYSIJA::get('config', 'model'); // check that the 2000 limit is not passed and process the queue if ((int) $model_config->getValue('total_subscribers') < 2000) { $helper_queue = WYSIJA::get('queue', 'helper'); $helper_queue->report = false; WYSIJA::log('croned_queue process', true, 'cron'); $helper_queue->process(); } }