autoship_update_product_availability (function)
( src/products.php) Used to update a product / variation availability in QPilot. It takes the WP Post Id or product object ( $id) & the product's $availability as its parameters.
Function
/** * Updates the product / product variation Availability in QPilot. * * @param mixed $id. Post object or post ID of the product. * @param string $availability The product availability to update. Values should be * "AddToScheduledOrder,ProcessScheduledOrder", "AddToScheduledOrder", * "ProcessScheduledOrder" or empty string */ function autoship_update_product_availability ( $id, $availability = '' ){ // Create the QPilot client // Grab the client and only continue if connection exists. if ( empty( $client = autoship_get_default_client() ) || empty( $client->get_token_auth() ) ) return false; // Get the product ( if invalid or wrong type or not correct status returns false ) if ( ( $product = autoship_productize_and_validate( $id ) ) === false ) return false; try { // If this is a variation then lets initialize Autoship fields // If they aren't already if ( 'variation' == $product->get_type() ){ // Since this is a variation we need to ensure the parent exists. // Currently the best route is to try and get the product via external id. try { $Qproduct = $client->get_product( $product->get_parent_id() ); } catch ( Exception $e ) { // Since this is an create / update for a variation // and a 404 is thrown Assume the parent needs to be created // before moving on. if ( $e->getCode() == 404 ) { do_action( 'autoship_push_product_404_missing_variable_parent', $product, $product->get_parent_id() ); autoship_push_product ( $product->get_parent_id() ); } autoship_log_entry( __( 'Autoship Products', 'autoship' ), $e->getMessage() ); } // Initialize the variation - any missing fields add them. $product = autoship_init_variation_metafields( $product->get_id() ); } // Based on supplied value set the flags $addToScheduledOrder = strpos($availability, 'AddToScheduledOrder') !== false; $processScheduledOrder = strpos($availability, 'ProcessScheduledOrder') !== false; // update product availability $client->update_product_availability( $product->get_id() , $addToScheduledOrder, $processScheduledOrder ); } catch (Exception $e) { autoship_log_entry( __( 'Autoship Products', 'autoship' ), $e->getMessage() ); } do_action( 'autoship_after_update_product_availability', $product ); return true; }