芝麻web文件管理V1.00
编辑当前文件:/home/ephorei/www/wp-content/plugins/sureforms/inc/background-process.php
*/ protected $submission_data = []; /** * Constructor * * @since 0.0.3 */ public function __construct() { add_action( 'rest_api_init', [ $this, 'register_custom_endpoint' ] ); } /** * Add custom API Route for 'After Submission' background process. * * @since 0.0.3 * @return void */ public function register_custom_endpoint() { register_rest_route( $this->namespace, '/after-submission/(?P
[0-9]+)', [ 'methods' => WP_REST_Server::READABLE, 'callback' => [ $this, 'handle_after_submission' ], 'permission_callback' => '__return_true', 'args' => [ 'submission_id' => [ 'required' => true, 'validate_callback' => static function( $param ) { return is_integer( Helper::get_integer_value( $param ) ) && 0 < $param; }, ], ], ] ); } /** * Handle 'After Submission' background process * * @param \WP_REST_Request $request Request object or array containing form data. * @since 0.0.3 * @return \WP_REST_Response|\WP_Error Response object on success, or WP_Error object on failure. */ public function handle_after_submission( $request ) { $nonce = Helper::get_string_value( $request->get_header( 'X-WP-Nonce' ) ); if ( ! wp_verify_nonce( sanitize_text_field( $nonce ), 'wp_rest' ) ) { return new \WP_Error( 'rest_nonce_failed', __( 'Nonce verification failed.', 'sureforms' ), [ 'status' => 403 ] ); } $this->submission_id = Helper::get_integer_value( $request->get_param( 'submission_id' ) ); if ( ! ( 0 < $this->submission_id ) ) { return new \WP_Error( 'incomplete_request', __( 'Submission id missing.', 'sureforms' ), [ 'status' => 403 ] ); } // Get the entries data for further processing, related to webhooks. $entry_data = Entries::get( $this->submission_id ); $this->form_id = Helper::get_integer_value( $entry_data['form_id'] ); $this->submission_data = Helper::get_array_value( $entry_data['form_data'] ); if ( ! $this->trigger_after_submission_process() ) { return new \WP_Error( 'process_failed', __( 'Something went wrong. We haved logged the error for further investigation', 'sureforms' ), [ 'status' => 403 ] ); } return new \WP_REST_Response( [] ); } /** * Handle 'After Submission' background process * * @since 0.0.3 * @return bool */ public function trigger_after_submission_process() { if ( ! is_integer( $this->form_id ) || ! is_array( $this->submission_data ) ) { return false; } $form_data = $this->submission_data; $form_data['form_id'] = $this->form_id; $form_data['submission_id'] = $this->submission_id; // Refers to the entry ID. /** * Hook for enabling background processes. * * @param array $form_data form data related to submission. */ do_action( 'srfm_after_submission_process', $form_data ); return true; } }