<?php
defined('ABSPATH') or die;
add_action('plugins_loaded', 'rsssl_le_schedule_cron');
function rsssl_le_schedule_cron()
{
if (!RSSSL()->rsssl_front_end->ssl_enabled) {
return;
}
if (!get_option('rsssl_le_certificate_generated_by_rsssl')) {
return;
}
$useCron = true;
if ($useCron) {
if (!wp_next_scheduled('rsssl_le_every_week_hook')) {
wp_schedule_event(time(), 'rsssl_le_weekly', 'rsssl_le_every_week_hook');
}
if (!wp_next_scheduled('rsssl_le_every_day_hook')) {
wp_schedule_event(time(), 'rsssl_le_daily', 'rsssl_le_every_day_hook');
}
add_action('rsssl_le_every_week_hook', 'rsssl_le_cron_maybe_start_renewal');
add_action('rsssl_le_every_day_hook', 'rsssl_le_check_renewal_status');
} else {
add_action('init', 'rsssl_le_cron_maybe_start_renewal');
add_action('init', 'rsssl_le_check_renewal_status');
}
}
function rsssl_le_cron_maybe_start_renewal()
{
if (!rsssl_generated_by_rsssl()) {
return;
}
if (RSSSL_LE()->letsencrypt_handler->cron_certificate_needs_renewal()) {
update_option("rsssl_le_start_renewal", true);
}
if (RSSSL_LE()->letsencrypt_handler->certificate_install_required()) {
update_option("rsssl_le_start_installation", true);
}
}
function rsssl_le_check_renewal_status()
{
if (!rsssl_generated_by_rsssl()) {
return;
}
if (!RSSSL_LE()->letsencrypt_handler->ssl_generation_can_auto_renew()) {
return;
}
$renewal_active = get_option("rsssl_le_start_renewal");
$installation_active = get_option("rsssl_le_start_installation");
if ($renewal_active) {
RSSSL_LE()->letsencrypt_handler->create_bundle_or_renew();
} else {
if ($installation_active) {
RSSSL_LE()->letsencrypt_handler->cron_renew_installation();
}
}
}
add_filter('cron_schedules', 'rsssl_le_filter_cron_schedules');
function rsssl_le_filter_cron_schedules($schedules)
{
$schedules['rsssl_le_weekly'] = array('interval' => WEEK_IN_SECONDS, 'display' => __('Once every week'));
$schedules['rsssl_le_daily'] = array('interval' => DAY_IN_SECONDS, 'display' => __('Once every day'));
$schedules['rsssl_le_five_minutes'] = array('interval' => 5 * MINUTE_IN_SECONDS, 'display' => __('Once every 5 minutes'));
return $schedules;
}
register_deactivation_hook(rsssl_file, 'rsssl_le_clear_scheduled_hooks');
function rsssl_le_clear_scheduled_hooks()
{
wp_clear_scheduled_hook('rsssl_le_every_week_hook');
wp_clear_scheduled_hook('rsssl_le_every_day_hook');
}