Add_To_Cart::handle_request( int $post_id, BigCommerceApiv3ApiCartApi $cart_api )

Summary

No summary available.

Parameters

$post_id

(int) (Required)

$cart_api

(BigCommerceApiv3ApiCartApi) (Required)


Return

(void)


Source

File: src/BigCommerce/Cart/Add_To_Cart.php

	public function handle_request( $post_id, CartApi $cart_api ) {
		if ( ! $this->validate_request( $post_id, $_POST ) ) {
			$error = new \WP_Error( 'unknown_product', __( 'We were unable to process your request. Please go back and try again.', 'bigcommerce' ) );
			do_action( 'bigcommerce/form/error', $error, $_POST, home_url( '/' ) );

			return;
		}

		$product    = new Product( $post_id );
		$product_id = $product->bc_id();
		$variant_id = $this->get_variant_id( $product, $_POST );

		$options = [];

		// Options are sanitized bellow
		$submitted_options = empty( $_POST[ 'option' ] ) ? [] : (array) $_POST[ 'option' ]; // phpcs:ignore
		$option_config     = $product->options();
		$modifier_config   = $product->modifiers();
		foreach ( $option_config as $config ) {
			if ( array_key_exists( $config[ 'id' ], $submitted_options ) ) {
				$options[ $config[ 'id' ] ] = absint( $submitted_options[ $config[ 'id' ] ] );
			}
		}
		foreach ( $modifier_config as $config ) {
			if ( array_key_exists( $config[ 'id' ], $submitted_options ) ) {
				$options[ $config[ 'id' ] ] = $this->sanitize_option( $submitted_options[ $config[ 'id' ] ], $config );
			}
		}

		$quantity = array_key_exists( 'quantity', $_POST ) ? absint( $_POST[ 'quantity' ] ) : 1;

		$cart     = new Cart( $cart_api );
		try {
			$response = $cart->add_line_item( $product_id, $options, $quantity );
			$this->handle_response( $response, $cart, $post_id, $product_id, $variant_id );
		} catch ( ApiException $e ) {
			$this->handle_exception( $e, $cart );
		}
	}


User Contributed Notes

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