scheduler = $scheduler; $this->settings = $settings; } /** * Handles the monitor cron callback. * * The monitor ensures each initiator schedule exists and recreates any * missing ones without disturbing existing events. * * @since 1.167.0 */ public function handle_monitor_action() { if ( ! $this->settings->is_email_reporting_enabled() ) { return; } foreach ( array( User_Email_Reporting_Settings::FREQUENCY_WEEKLY, User_Email_Reporting_Settings::FREQUENCY_MONTHLY, User_Email_Reporting_Settings::FREQUENCY_QUARTERLY ) as $frequency ) { if ( wp_next_scheduled( Email_Reporting_Scheduler::ACTION_INITIATOR, array( $frequency ) ) ) { continue; } $this->scheduler->schedule_initiator_once( $frequency ); } } }