$interval = rocket_apply_filter_and_deprecated( 'rocket_saas_pending_jobs_cron_interval', [ 1 * rocket_get_constant( 'MINUTE_IN_SECONDS', 60 ) ], '3.16', 'rocket_rucss_pending_jobs_cron_interval' ); $schedules['rocket_saas_pending_jobs'] = [ 'interval' => $interval, 'display' => esc_html__( 'WP Rocket process pending jobs', 'rocket' ), ]; $default_interval = 3 * rocket_get_constant( 'DAY_IN_SECONDS', 86400 ); /** * Filters the cron interval for clearing failed jobs. * * @param int $interval Interval in seconds. */ $interval = rocket_apply_filter_and_deprecated( 'rocket_remove_saas_failed_jobs_cron_interval', [ $default_interval ], '3.16', 'rocket_remove_rucss_failed_jobs_cron_interval' ); $interval = (bool) $interval ? $interval : $default_interval; $schedules['rocket_remove_saas_failed_jobs'] = [ 'interval' => $interval, 'display' => esc_html__( 'WP Rocket clear failed jobs', 'rocket' ), ]; /** * Filters the cron interval for processing on submit jobs. * * @param int $interval Interval in seconds. */ $interval = (int) rocket_apply_filter_and_deprecated( 'rocket_remove_saas_on_submit_jobs_cron_interval', [ 1 * rocket_get_constant( 'MINUTE_IN_SECONDS', 60 ) ], '3.16', 'rocket_remove_rucss_on_submit_jobs_cron_interval' ); $schedules['rocket_saas_on_submit_jobs'] = [ 'interval' => $interval, 'display' => esc_html__( 'WP Rocket process on submit jobs', 'rocket' ), ]; return $schedules; } /** * Schedule on submit jobs. * * @return void */ public function schedule_on_submit_jobs() { if ( ! $this->job_processor->is_allowed() && wp_next_scheduled( 'rocket_saas_on_submit_jobs' ) ) { wp_clear_scheduled_hook( 'rocket_saas_on_submit_jobs' ); return; } if ( ! $this->job_processor->is_allowed() ) { return; } if ( wp_next_scheduled( 'rocket_saas_on_submit_jobs' ) ) { return; } wp_schedule_event( time(), 'rocket_saas_on_submit_jobs', 'rocket_saas_on_submit_jobs' ); } /** * Schedules cron to get SaaS pendings jobs. * * @since 3.11.3 * * @return void */ public function schedule_pending_jobs() { if ( ! $this->job_processor->is_allowed() && wp_next_scheduled( 'rocket_saas_pending_jobs' ) ) { wp_clear_scheduled_hook( 'rocket_saas_pending_jobs' ); return; } if ( ! $this->job_processor->is_allowed() ) { return; } if ( wp_next_scheduled( 'rocket_saas_pending_jobs' ) ) { return; } wp_schedule_event( time(), 'rocket_saas_pending_jobs', 'rocket_saas_pending_jobs' ); } /** * Schedules cron to remove failed jobs. * * @return void */ public function schedule_removing_failed_jobs() { if ( ! $this->job_processor->is_allowed() && wp_next_scheduled( 'rocket_remove_saas_failed_jobs' ) ) { wp_clear_scheduled_hook( 'rocket_remove_saas_failed_jobs' ); return; } if ( ! $this->job_processor->is_allowed() ) { return; } if ( wp_next_scheduled( 'rocket_remove_saas_failed_jobs' ) ) { return; } wp_schedule_event( time(), 'rocket_remove_saas_failed_jobs', 'rocket_remove_saas_failed_jobs' ); } /** * Clear schedule of SaaS CRONs on deactivation. * * @return void */ public function on_deactivation() { wp_clear_scheduled_hook( 'action_scheduler_run_queue_rucss', [ 'WP Cron' ] ); } /** * Checks if the SaaS deletion is enabled. * * @return bool */ protected function is_deletion_enabled(): bool { /** * Filters the enable SaaS job deletion value * * @param bool $delete_saas_jobs True to enable deletion, false otherwise. */ return (bool) rocket_apply_filter_and_deprecated( 'rocket_saas_deletion_enabled', [ true ], '3.16', 'rocket_rucss_deletion_enabled' ); } /** * Unschedule old rucss crons. * * @since 3.16 * * @param string $new_version New plugin version. * @param string $old_version Previous plugin version. * * @return void */ public function unschedule_rucss_cron( $new_version, $old_version ) { if ( version_compare( $old_version, '3.16', '>=' ) ) { return; } wp_clear_scheduled_hook( 'rocket_rucss_on_submit_jobs' ); wp_clear_scheduled_hook( 'rocket_rucss_pending_jobs' ); wp_clear_scheduled_hook( 'rocket_remove_rucss_failed_jobs' ); wp_clear_scheduled_hook( 'rocket_rucss_clean_rows_time_event' ); } }