Product_Review_Handler::handle_request( $submission )

Summary

No summary available.

Source

File: src/BigCommerce/Forms/Product_Review_Handler.php

	public function handle_request( $submission ) {

		if ( ! $this->should_handle_request( $submission ) ) {
			return;
		}

		$errors = $this->validate_submission( $submission );

		if ( count( $errors->get_error_codes() ) > 0 ) {

			/**
			 * Triggered when a form has errors that prevent completion.
			 *
			 * @param \WP_Error $errors     The message that will display to the user
			 * @param array     $submission The data submitted to the form
			 */
			do_action( 'bigcommerce/form/error', $errors, $submission );

			return;
		}

		$product    = new Product( (int) $submission['bc-review']['post_id'] );
		$product_id = $product->bc_id();

		$review_request = new ProductReviewPost( [
			'title'         => sanitize_text_field( $submission['bc-review']['subject'] ),
			'text'          => sanitize_textarea_field( $submission['bc-review']['content'] ),
			/**
			 * Filters review status in form.
			 *
			 * @param string $status Status.
			 */
			'status'        => apply_filters( 'bigcommerce/form/review/status', 'pending', $submission, $product_id ),
			'rating'        => intval( $submission['bc-review']['rating'] ),
			'email'         => sanitize_email( $submission['bc-review']['email'] ),
			'name'          => sanitize_text_field( $submission['bc-review']['name'] ),
			'date_reviewed' => new \DateTime(),
		] );

		try {
			$response = $this->api->createProductReview( $product_id, $review_request );
		} catch ( ApiException $e ) {
			$errors->add( 'api_error', __( 'There was an error saving your review. Please try again.', 'bigcommerce' ) );
			do_action( 'bigcommerce/form/error', $errors, $submission );

			return;
		}

		/**
		 * Filters review form created message.
		 *
		 * @param string $message Message.
		 */
		$message = apply_filters( 'bigcommerce/form/review/created_message', __( 'Thank you for your review! It has been successfully submitted and is pending.', 'bigcommerce' ) );
		do_action( 'bigcommerce/form/success', $message, $submission, null );
	}


User Contributed Notes

You must log in before being able to contribute a note or feedback.