false ); if ( 'acknowledge' === $action ) { $scope = isset( $_POST['scope_type'] ) ? sanitize_key( wp_unslash( $_POST['scope_type'] ) ) : ''; $id = isset( $_POST['entity_id'] ) ? absint( $_POST['entity_id'] ) : 0; $reason = isset( $_POST['ack_reason'] ) ? sanitize_textarea_field( wp_unslash( $_POST['ack_reason'] ) ) : ''; $result = $svc->acknowledge( $scope, $id, $reason ); } elseif ( 'revoke' === $action ) { $id = isset( $_POST['ack_id'] ) ? absint( $_POST['ack_id'] ) : 0; $reason = isset( $_POST['ack_reason'] ) ? sanitize_textarea_field( wp_unslash( $_POST['ack_reason'] ) ) : ''; $result = $svc->revoke( $id, $reason ); } else { return; } $order_id = isset( $_POST['order_id'] ) ? absint( $_POST['order_id'] ) : 0; if ( ! empty( $result['success'] ) && $order_id > 0 ) { ( new OrderRiskAcknowledgementSync() )->sync_order( $order_id ); } $redirect = $this->resolve_redirect( $order_id ); $msg = ! empty( $result['success'] ) ? __( 'Acknowledgement saved.', 'marginbeacon' ) : ( isset( $result['error'] ) ? (string) $result['error'] : __( 'Action failed.', 'marginbeacon' ) ); $redirect = add_query_arg( array( 'aksmb_ack' => ! empty( $result['success'] ) ? '1' : '0', 'aksmb_msg' => rawurlencode( $msg ), ), $redirect ); wp_safe_redirect( $redirect ); exit; } /** * Prefer WooCommerce order edit URL; never build from home_url(REQUEST_URI). * * @param int $order_id Order ID. * @return string */ private function resolve_redirect( $order_id ) { $edit = OrderEditUrlResolver::from_order_id( $order_id ); if ( '' !== $edit ) { return $edit; } $referer = wp_get_referer(); if ( $referer ) { return $referer; } return admin_url( 'admin.php?page=wc-orders' ); } }