scheduler(); if ( ! $scheduler ) { $this->redirect( $order_id, false, __( 'Scheduler not ready.', 'marginbeacon' ) ); } $result = ( new OrderRiskEnqueueService( $scheduler ) )->enqueue_manual_retry( $order_id ); $this->redirect( $order_id, ! empty( $result['success'] ), ! empty( $result['success'] ) ? __( 'Evaluation queued. Refresh this page in a moment.', 'marginbeacon' ) : ( isset( $result['error'] ) ? (string) $result['error'] : __( 'Retry failed.', 'marginbeacon' ) ) ); } /** * @param int $order_id Order ID. * @param bool $ok Success. * @param string $msg Message. * @return void */ private function redirect( $order_id, $ok, $msg ) { $redirect = admin_url( 'edit.php?post_type=shop_order' ); $edit = OrderEditUrlResolver::from_order_id( $order_id ); if ( '' !== $edit ) { $redirect = $edit; } $redirect = add_query_arg( array( 'aksmb_ack' => $ok ? '1' : '0', 'aksmb_msg' => rawurlencode( $msg ), ), $redirect ); wp_safe_redirect( $redirect ); exit; } }