Notifications_Endpoints_Config::class, ); public function register( Service_Container $container ) { parent::register( $container ); $this->container->add( self::EMAIL_SUMMARY_HANDLER, function () use ( $container ) { return new Email_Summary_Handler( $container->get( Connector_Service_Provider::DATA_STORE_ROUTER ), $container->get( Connector_Service_Provider::EVENT_MODEL ) ); } ); } public function init( Service_Container $container ) { add_action( 'gravitysmtp_cron_' . Email_Summary_Handler::ACTION_NAME, function () use ( $container ) { $container->get( self::EMAIL_SUMMARY_HANDLER )->handle(); } ); add_action( 'wp_ajax_' . Email_Summary_Handler::ACTION_NAME, function () use ( $container ) { check_ajax_referer( Email_Summary_Handler::ACTION_NAME, 'security' ); if ( ! current_user_can( Roles::EDIT_NOTIFICATIONS_SETTINGS ) ) { wp_send_json_error( 'Unauthorized' ); } try { $container->get( self::EMAIL_SUMMARY_HANDLER )->handle( false ); } catch( \Exception $e ) { wp_send_json_error( $e->getMessage(), 500 ); } wp_send_json_success( 'Digest sent.' ); } ); if ( ! wp_next_scheduled( 'gravitysmtp_cron_' . Email_Summary_Handler::ACTION_NAME ) ) { wp_schedule_event( time(), 'hourly', 'gravitysmtp_cron_' . Email_Summary_Handler::ACTION_NAME ); } } }