/**
* 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;
}