send_expired_email( $subscription_id ); return; } $hook = 'subscrpt_send_delayed_expired_email'; $args = array( $subscription_id ); $scheduled_time = time() + $delay_seconds; // Existing queue check. $existing = wp_next_scheduled( $hook, $args ); if ( $existing ) { wp_unschedule_event( $existing, $hook, $args ); } wp_schedule_single_event( $scheduled_time, $hook, $args ); } /** * Fire the delayed "subscription expired" email. * * @param int $subscription_id Subscription id. * @return void */ public function send_expired_email( int $subscription_id ) { if ( 'expired' !== get_post_status( $subscription_id ) ) { return; } WC()->mailer(); do_action( 'subscrpt_subscription_expired_email_notification', $subscription_id ); } /** * Cancel any pending delayed "subscription expired" email. * * @param int $subscription_id Subscription id. * @return void */ public function cancel_pending_expired_email( int $subscription_id ) { $hook = 'subscrpt_send_delayed_expired_email'; $args = array( $subscription_id ); if ( function_exists( 'as_unschedule_action' ) ) { as_unschedule_action( $hook, $args ); } wp_clear_scheduled_hook( $hook, $args ); } /** * Register emails. * * @param array $emails Email classes. * * @return array */ public function register_emails( array $emails ): array { $emails['subscrpt_status_changed_admin_email'] = new StatusChangedAdmin(); $emails['subscrpt_subscription_expired_email'] = new SubscriptionExpired(); $emails['subscrpt_subscription_cancelled_email'] = new SubscriptionCancelled(); // The admin cancellation notices are free's reduced stand-ins. Pro ships // richer equivalents on the same events, so registering both would list // two of each in WooCommerce and mail the store owner twice. if ( ! subscrpt_pro_activated() ) { $emails['subscrpt_cancellation_admin'] = new CancellationAdmin(); $emails['subscrpt_cancellation_saved_admin'] = new SavedAdmin(); } return $emails; } /** * Add subscription sections inside order mail. * * @param \WC_Order $order Order Object. * * @return void */ public function add_subscription_table( \WC_Order $order ) { $histories = Helper::get_subscriptions_from_order( $order->get_id() ); if ( count( $histories ) > 0 ) { include 'views/subscription-table.php'; } } }