получение фото при обновлении API на php
Есть интернет-магазин, есть поставщик, у поставщика есть АПИ через который получаю товары(фото, описание, цены, остатки и т.д) но это работает только при добавление товара. Бывает такое что они могут добавить товар без фото и товар загружается без фото, через какое-то время они добавляют фото, но при обновлении АПИ фото не добавляется. В низу код где есть метод добавления товара, Метод обновления, Метод загрузки и сохранения изображений для товара. Кто нибудь может помочь дописать пару строк в Метод обновления?
Интернет-магазин на OpenCart 3, API реализовано по технологии RESTful API. Запросы отправляются методом GET, сервер выдает ответ в формате json
/**
* Метод добавления товара
*/
protected function insertProduct($product, $productIndex)
{
$id = $product['article'];
$quantity = (int) str_replace(['>', '<'], ['', ''], $product['quantity']);
$stock_status_id = 5;
$sku = $product['article_pn'];
$model = $product['article'];
$name = $product['name'];
$weight = !empty($product['weight']) ? $product['weight'] : 0;
$weight_class_id = 1;
$price = !empty($product['price1']) ? $product['price1'] : 0;
$status = ($price > 0) ? 1 : 0;
$language_id = 1;
$description = !empty($product['description']) ? addslashes($product['description']) : NULL;
$categories = $this->getCategories($product['category']);
$store_id = 0;
$manufacturer_id = $this->getManufacturer($product['brand']);
$image = $this->uploadImages($product['images'], $id);
$sql = [];
$sql[] = "INSERT INTO `" . DB_PREFIX . "product` (`product_id`, `quantity`, `sku`, `model`, `cost`, `image`, `weight`, `weight_class_id`, `status`, `sort_order`, `manufacturer_id`, `stock_status_id`)
VALUES ($id, $quantity, '$sku', '$model', $price, '$image', $weight, $weight_class_id, $status, $productIndex, $manufacturer_id, $stock_status_id);";
$sql[] = "INSERT INTO `" . DB_PREFIX . "product_description` (`product_id`, `language_id`, `name`, `description`) VALUES ($id, $language_id, '$name', '$description');";
foreach ($categories as $categoryIndex => $category) {
if ($categoryIndex === 0) {
$sql[] = "INSERT INTO `" . DB_PREFIX . "product_to_category` (`product_id`,`category_id`, `main_category`) VALUES ($id, $category, 1);";
} else {
$sql[] = "INSERT INTO `" . DB_PREFIX . "product_to_category` (`product_id`,`category_id`) VALUES ($id, $category);";
}
}
$sql[] = "INSERT INTO `" . DB_PREFIX . "product_to_store` (`product_id`,`store_id`) VALUES ($id, $store_id);";
foreach ($sql as $sqlQuery) {
if (!mysqli_query($this->db, $sqlQuery)) {
$this->log->error('Ошибка добавления товара: ' . mysqli_error($this->db));
}
}
$this->log->info("Создан товар: $id - $name");
}
/**
* Метод обновления товара
*/
protected function updateProduct($product)
{
$id = $product['article'];
$quantity = (int) str_replace(['>', '<'], ['', ''], $product['quantity']);
$name = $product['name'];
$price = !empty($product['price1']) ? $product['price1'] : 0;
$sql = "UPDATE `" . DB_PREFIX . "product` SET `quantity` = $quantity, `cost` = $price WHERE `product_id` = $id";
if (!mysqli_query($this->db, $sql)) {
$this->log->error('Ошибка обновления товара: ' . mysqli_error($this->db));
}
$this->log->info("Обновлен товар: $id - $name, цена = $price, количество = $quantity");
}
/**
* Метод загрузки и сохранения изображений для товара
*/
protected function uploadImages($images, $product_id)
{
$folder = __DIR__ . '/../image/catalog/al-style/';
$mainImage = 'NULL';
if (!empty($images)) {
foreach ($images as $imageIndex => $image) {
$extension = explode('.', $image)[3];
$newfile = $folder . $product_id . '_' . $imageIndex . '.' . $extension;
if (!file_exists($newfile)) {
if (!copy($image, $newfile)) {
$this->log->error("Ошибка загрузки изображения товара: $product_id");
}
$imageUrl = 'catalog/al-style/' . $product_id . '_' . $imageIndex . '.' . $extension;
if ($imageIndex > 0) {
$sql = "INSERT INTO `" . DB_PREFIX . "product_image` (`product_id`,`image`) VALUES ($product_id, '$imageUrl');";
mysqli_query($this->db, $sql);
} else {
$mainImage = $imageUrl;
}
}
}
}
return $mainImage;
}
}