/**
  * Save product images
  *
  * @since  2.2
  * @param WC_Product $product
  * @param  array $images
  * @throws WC_API_Exception
  */
 protected function save_product_images($product, $images)
 {
     if (is_array($images)) {
         $gallery = array();
         foreach ($images as $image) {
             if (isset($image['position']) && 0 == $image['position']) {
                 $attachment_id = isset($image['id']) ? absint($image['id']) : 0;
                 if (0 === $attachment_id && isset($image['src'])) {
                     $upload = $this->upload_product_image(esc_url_raw($image['src']));
                     if (is_wp_error($upload)) {
                         throw new WC_API_Exception('woocommerce_api_cannot_upload_product_image', $upload->get_error_message(), 400);
                     }
                     $attachment_id = $this->set_product_image_as_attachment($upload, $product->get_id());
                 }
                 $product->set_image_id($attachment_id);
             } else {
                 $attachment_id = isset($image['id']) ? absint($image['id']) : 0;
                 if (0 === $attachment_id && isset($image['src'])) {
                     $upload = $this->upload_product_image(esc_url_raw($image['src']));
                     if (is_wp_error($upload)) {
                         throw new WC_API_Exception('woocommerce_api_cannot_upload_product_image', $upload->get_error_message(), 400);
                     }
                     $gallery[] = $this->set_product_image_as_attachment($upload, $id);
                 } else {
                     $gallery[] = $attachment_id;
                 }
             }
         }
         if (!empty($gallery)) {
             $product->set_gallery_image_ids($gallery);
         }
     } else {
         $product->set_image_id('');
         $product->set_gallery_image_ids(array());
     }
     return $product;
 }
 /**
  * Save product images.
  *
  * @throws WC_REST_Exception REST API exceptions.
  * @param WC_Product $product Product instance.
  * @param array      $images  Images data.
  * @return WC_Product
  */
 protected function save_product_images($product, $images)
 {
     if (is_array($images)) {
         $gallery = array();
         foreach ($images as $image) {
             $attachment_id = isset($image['id']) ? absint($image['id']) : 0;
             if (0 === $attachment_id && isset($image['src'])) {
                 $upload = wc_rest_upload_image_from_url(esc_url_raw($image['src']));
                 if (is_wp_error($upload)) {
                     if (!apply_filters('woocommerce_rest_suppress_image_upload_error', false, $upload, $product->get_id(), $images)) {
                         throw new WC_REST_Exception('woocommerce_product_image_upload_error', $upload->get_error_message(), 400);
                     } else {
                         continue;
                     }
                 }
                 $attachment_id = wc_rest_set_uploaded_image_as_attachment($upload, $product->get_id());
             }
             if (isset($image['position']) && 0 === $image['position']) {
                 $product->set_image_id($attachment_id);
             } else {
                 $gallery[] = $attachment_id;
             }
             // Set the image alt if present.
             if (!empty($image['alt'])) {
                 update_post_meta($attachment_id, '_wp_attachment_image_alt', wc_clean($image['alt']));
             }
             // Set the image name if present.
             if (!empty($image['name'])) {
                 wp_update_post(array('ID' => $attachment_id, 'post_title' => $image['name']));
             }
         }
         if (!empty($gallery)) {
             $product->set_gallery_image_ids($gallery);
         }
     } else {
         $product->set_image_id('');
         $product->set_gallery_image_ids(array());
     }
     return $product;
 }
 /**
  * Save product images.
  *
  * @since  2.2
  * @param  WC_Product $product
  * @param  array $images
  * @throws WC_API_Exception
  * @return WC_Product
  */
 protected function save_product_images($product, $images)
 {
     if (is_array($images)) {
         $gallery = array();
         foreach ($images as $image) {
             if (isset($image['position']) && 0 == $image['position']) {
                 $attachment_id = isset($image['id']) ? absint($image['id']) : 0;
                 if (0 === $attachment_id && isset($image['src'])) {
                     $upload = $this->upload_product_image(esc_url_raw($image['src']));
                     if (is_wp_error($upload)) {
                         throw new WC_API_Exception('woocommerce_api_cannot_upload_product_image', $upload->get_error_message(), 400);
                     }
                     $attachment_id = $this->set_product_image_as_attachment($upload, $product->get_id());
                 }
                 $product->set_image_id($attachment_id);
             } else {
                 $attachment_id = isset($image['id']) ? absint($image['id']) : 0;
                 if (0 === $attachment_id && isset($image['src'])) {
                     $upload = $this->upload_product_image(esc_url_raw($image['src']));
                     if (is_wp_error($upload)) {
                         throw new WC_API_Exception('woocommerce_api_cannot_upload_product_image', $upload->get_error_message(), 400);
                     }
                     $attachment_id = $this->set_product_image_as_attachment($upload, $id);
                 }
                 $gallery[] = $attachment_id;
             }
             // Set the image alt if present.
             if (!empty($image['alt']) && $attachment_id) {
                 update_post_meta($attachment_id, '_wp_attachment_image_alt', wc_clean($image['alt']));
             }
             // Set the image title if present.
             if (!empty($image['title']) && $attachment_id) {
                 wp_update_post(array('ID' => $attachment_id, 'post_title' => $image['title']));
             }
         }
         if (!empty($gallery)) {
             $product->set_gallery_image_ids($gallery);
         }
     } else {
         $product->set_image_id('');
         $product->set_gallery_image_ids(array());
     }
     return $product;
 }