300, 'display' => 'Every 5 Minutes' ]; return $schedules; } // Schedule the event on plugin load if not already scheduled add_action( 'wp', 'inspry_toolkit_schedule_gateway_test_mode_check' ); function inspry_toolkit_schedule_gateway_test_mode_check() { if ( ! wp_next_scheduled( 'check_gateway_test_mode_event' ) ) { wp_schedule_event( time(), 'every_5_minutes', 'check_gateway_test_mode_event' ); } } // Cron event callback to check test mode settings and email admin add_action( 'check_gateway_test_mode_event', 'inspry_toolkit_check_gateways_and_email_admins' ); function inspry_toolkit_check_gateways_and_email_admins() { $gateways_in_test = []; // Stripe if ( is_plugin_active( 'woocommerce-gateway-stripe/woocommerce-gateway-stripe.php' ) ) { $stripe_settings = get_option( 'woocommerce_stripe_settings' ); if ( isset( $stripe_settings['testmode'] ) && $stripe_settings['testmode'] === 'yes' ) { $gateways_in_test[] = 'Stripe'; } } // PayPal Standard if ( is_plugin_active( 'woocommerce-paypal-payments/woocommerce-paypal-payments.php' ) ) { $paypal_settings = get_option( 'woocommerce-ppcp-data-common' ); if ( isset( $paypal_settings['use_sandbox'] ) && $paypal_settings['use_sandbox'] === true ) { $gateways_in_test[] = 'PayPal'; } } // Authorize.Net AIM if ( is_plugin_active( 'woocommerce-gateway-authorize-net-cim/woocommerce-gateway-authorize-net-cim.php' ) ) { $auth_settings = get_option( 'woocommerce_authorize_net_cim_credit_card_settings' ); if ( isset( $auth_settings['environment'] ) && $auth_settings['environment'] === 'test' ) { $gateways_in_test[] = 'Authorize.net'; } } $last_alert = get_option( 'last_test_mode_gateways', [] ); $last_email_sent = get_option( 'last_test_mode_email_sent', 0 ); $now = time(); if ( $gateways_in_test !== $last_alert || ( ! empty( $gateways_in_test ) && ( $now - $last_email_sent ) > HOUR_IN_SECONDS ) ) { if ( ! empty( $gateways_in_test ) ) { // Get the list of selected users $users_ids = get_option( 'inspry_toolkit_payments_test_mode_check_admin_notifications_list' ); // Loop through users to get emails $to = []; if ( ! empty( $users_ids ) ) { foreach ( $users_ids as $user_id ) { $user_info = get_userdata( $user_id ); if ( $user_info && ! empty( $user_info->user_email ) ) { $to[] = $user_info->user_email; } } } else { // Fallback to admin email if no users are selected $to[] = get_option( 'admin_email' ); } // Set up and send the email $subject = '⚠️ WooCommerce Gateway(s) in Test Mode'; $body = "Attention:\n\nThe following payment gateways are in TEST mode on your site (" . home_url() . "):\n"; $body .= implode( ", ", $gateways_in_test ) . "\n\nPlease log in to ensure this is intentional."; wp_mail( $to, $subject, $body ); update_option( 'last_test_mode_email_sent', $now ); } update_option( 'last_test_mode_gateways', $gateways_in_test ); } }