281 lines
7.7 KiB
PHP
281 lines
7.7 KiB
PHP
<?php
|
|
|
|
require_once(dirname(__FILE__).'../../../config/config.inc.php');
|
|
require_once(dirname(__FILE__).'../../../init.php');
|
|
|
|
header('Content-Type: application/json');
|
|
|
|
|
|
switch (Tools::getValue('action')) {
|
|
case 'getCategories':
|
|
die(json_encode(getCategories()));
|
|
break;
|
|
|
|
case 'getProductId':
|
|
die(json_encode(getProductId()));
|
|
break;
|
|
|
|
case 'addToSellout':
|
|
die(json_encode(addToSellout()));
|
|
break;
|
|
|
|
default:
|
|
http_response_code(418);
|
|
die('I\'m a teapot');
|
|
break;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function getCategories()
|
|
{
|
|
global $cookie;
|
|
$id_sale = (int)Tools::getValue('sale', false);
|
|
|
|
if (!$id_sale) {
|
|
http_response_code(500);
|
|
return Tools::displayError('Catégorie invalide');
|
|
}
|
|
|
|
$db = Db::getInstance();
|
|
$sql = 'SELECT * FROM `'._DB_PREFIX_.'privatesale_category` pc LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON pc.`id_category` = cl.`id_category` WHERE pc.`id_sale` = '.$id_sale.' AND cl.`id_lang` = '.(int)$cookie->id_lang;
|
|
return $db->ExecuteS($sql);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function getProductId()
|
|
{
|
|
global $cookie;
|
|
$ean = (float)Tools::getValue('ean', false);
|
|
|
|
if (!$ean) {
|
|
http_response_code(500);
|
|
return Tools::displayError('Code EAN invalide');
|
|
}
|
|
|
|
if (!is_float($ean)) {
|
|
http_response_code(500);
|
|
return Tools::displayError('Code EAN invalide');
|
|
}
|
|
|
|
$db = Db::getInstance();
|
|
$sql = 'SELECT `'._DB_PREFIX_.'product_lang`.`id_product`, `'._DB_PREFIX_.'product_lang`.`name` FROM `'._DB_PREFIX_.'product` LEFT JOIN `'._DB_PREFIX_.'product_lang` ON `'._DB_PREFIX_.'product`.id_product = `'._DB_PREFIX_.'product_lang`.id_product WHERE `ean13` = '.$ean.' AND `id_lang` = '.(int)$cookie->id_lang.' ORDER BY `date_add` DESC LIMIT 1';
|
|
$result = $db->ExecuteS($sql);
|
|
|
|
if (!$result) {
|
|
$sql = 'SELECT * FROM `'._DB_PREFIX_.'product_attribute` WHERE `ean13` = '.pSQL($ean).' ORDER BY `id_product_attribute` DESC LIMIT 1';
|
|
$result = $db->ExecuteS($sql);
|
|
|
|
$sql = 'SELECT * FROM `'._DB_PREFIX_.'product_lang` WHERE `id_product` = '.(int)($result[0]['id_product']).' LIMIT 1';
|
|
$tmp = $db->ExecuteS($sql)[0];
|
|
$result[0]['name'] = $tmp['name'];
|
|
$result[0]['reference'] = ($result[0]['reference']) ? $result[0]['reference'] : $tmp['reference'];
|
|
}
|
|
|
|
if ($result) {
|
|
return $result[0];
|
|
} else {
|
|
http_response_code(500);
|
|
return Tools::displayError('Aucun produit trouvé');
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function addToSellout()
|
|
{
|
|
$category = (int)Tools::getValue('category', false);
|
|
if (!$category || !is_int($category)) {
|
|
http_response_code(500);
|
|
return Toold::displayError('La catégorie n\'est pas valide');
|
|
}
|
|
|
|
$product_id = (int)Tools::getValue('product', false);
|
|
if (!$product_id || !is_int($product_id)) {
|
|
http_response_code(500);
|
|
return Tools::displayError('Le produit n\'est pas valide');
|
|
}
|
|
|
|
$attribute = (int)Tools::getValue('attribute', false);
|
|
|
|
|
|
$quantity = (int)Tools::getValue('quantity', false);
|
|
if (!$quantity || !is_int($quantity)) {
|
|
http_response_code(500);
|
|
return Tools::displayError('La quantitée n\'est pas valide');
|
|
}
|
|
|
|
$storage = Tools::getValue('storage');
|
|
if (empty($storage)) {
|
|
http_response_code(500);
|
|
return Tools::displayError('L\'emplacement n\'est pas valide');
|
|
}
|
|
|
|
$db = Db::getInstance();
|
|
|
|
// vérifie si le produit n'es pas déjçà dans la vente
|
|
$sql = 'SELECT * FROM `'._DB_PREFIX_.'category_product` WHERE `id_product` = '.pSQL($product_id).' AND `id_category` = '.pSQL($category).' LIMIT 1';
|
|
//var_dump($sql);
|
|
$product = $db->ExecuteS($sql);
|
|
if (!empty($product)) {
|
|
http_response_code(500);
|
|
return Tools::displayError('Le produit existe déjà dans la vente');
|
|
}
|
|
|
|
// duplication produit
|
|
$sql = 'SELECT * FROM `'._DB_PREFIX_.'product` WHERE `'._DB_PREFIX_.'product`.`id_product` = '.pSQL($product_id).' ORDER BY `date_add` DESC LIMIT 1';
|
|
$product = $db->ExecuteS($sql)[0];
|
|
|
|
if ($attribute != 0) {
|
|
$sql = 'SELECT * FROM `'._DB_PREFIX_.'product_attribute` WHERE `'._DB_PREFIX_.'product`.`id_product` = '.pSQL($product_id).' ORDER BY `date_add` DESC LIMIT 1';
|
|
$product = $db->ExecuteS($sql)[0];
|
|
}
|
|
|
|
unset($product['id_product']);
|
|
$product['quantity'] = $quantity;
|
|
$product['active'] = 1;
|
|
$product['id_category_default'] = $category;
|
|
$product['reference'] = $storage.'_'.$product['reference'];
|
|
$r = $db->autoExecute('ps_product', pSQLArray($product), INSERT);
|
|
|
|
if (!$r) {
|
|
http_response_code(500);
|
|
return Tools::displayError('Une erreur s\'est produite');
|
|
}
|
|
|
|
$last_product_id = $db->Insert_ID();
|
|
|
|
// duplication categorie
|
|
$r = $db->autoExecute(_DB_PREFIX_.'category_product', [
|
|
'id_category' => pSQL($category),
|
|
'id_product' => pSQL($last_product_id),
|
|
'position' => 0
|
|
], INSERT);
|
|
|
|
if (!$r) {
|
|
http_response_code(500);
|
|
return Tools::displayError('Une erreur s\'est produite');
|
|
}
|
|
|
|
// duplication lang
|
|
$sql = 'SELECT * FROM `'._DB_PREFIX_.'product_lang` WHERE `'._DB_PREFIX_.'product_lang`.`id_product` = '.$product_id;
|
|
$products_lang = $db->ExecuteS($sql);
|
|
foreach ($products_lang as $key => $p) {
|
|
$p['id_product'] = $last_product_id;
|
|
$r = $db->autoExecute(_DB_PREFIX_.'product_lang', pSQLArray($p), INSERT);
|
|
if (!$r) {
|
|
http_response_code(500);
|
|
return Tools::displayError('Une erreur s\'est produite');
|
|
}
|
|
}
|
|
|
|
// duplication prix specifique
|
|
$sql = 'SELECT * FROM `'._DB_PREFIX_.'specific_price` WHERE `id_product` = '.$product_id;
|
|
$prices = $db->ExecuteS($sql);
|
|
foreach ($prices as $key => $p) {
|
|
unset($p['id_specific_price']);
|
|
$p['id_product'] = $last_product_id;
|
|
$r = $db->autoExecute(_DB_PREFIX_.'specific_price', pSQLArray($p), INSERT);
|
|
if (!$r) {
|
|
http_response_code(500);
|
|
return Tools::displayError('Une erreur s\'est produite');
|
|
}
|
|
}
|
|
|
|
|
|
// duplication images
|
|
$last_product_image_id = 0;
|
|
|
|
$sql = 'SELECT * FROM `'._DB_PREFIX_.'image_lang` im LEFT JOIN `'._DB_PREFIX_.'image` i ON i.id_image = im.id_image WHERE `'._DB_PREFIX_.'image_lang`.`id_product` = '.$product_id;
|
|
$images = $db->ExecuteS($sql);
|
|
foreach ($images as $key => $image) {
|
|
unset($image['id_image']);
|
|
|
|
$r = $db->autoExecute(_DB_PREFIX_.'image_lang', pSQLArray([
|
|
'id_lang' => $image['id_lang'],
|
|
'legend' => $image['legend'],
|
|
]), INSERT);
|
|
if (!$r) {
|
|
http_response_code(500);
|
|
return Tools::displayError('Une erreur s\'est produite');
|
|
}
|
|
$last_product_image_id = $db->Insert_ID();
|
|
$r = $db->autoExecute(_DB_PREFIX_.'image', pSQLArray([
|
|
'id_image' => $last_product_image_id,
|
|
'id_product' => $last_product_id,
|
|
'position' => $image['position'],
|
|
'cover' => $image['cover']
|
|
]), INSERT);
|
|
if (!$r) {
|
|
http_response_code(500);
|
|
return Tools::displayError('Une erreur s\'est produite');
|
|
}
|
|
}
|
|
|
|
if ($attribute) {
|
|
Product::duplicateOneAttribute($product_id, $last_product_id, $attribute);
|
|
} else {
|
|
Product::duplicateAttributes($product_id, $last_product_id);
|
|
}
|
|
|
|
recurse_copy(_PS_IMG_DIR_.$product_id, _PS_IMG_DIR_.$last_product_id, $attribute);
|
|
|
|
return Tools::displayError('Le produit à été mis dans la braderie');
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function pSQLArray($data)
|
|
{
|
|
foreach ($data as $key => $value) {
|
|
if (is_array($value)) {
|
|
$this->pSQLArray($value);
|
|
} else {
|
|
$data[$key] = pSQL($value);
|
|
}
|
|
}
|
|
return $data;
|
|
}
|
|
|
|
|
|
|
|
function recurse_copy($src, $dst) {
|
|
if (is_dir($src) && is_dir($dst)) {
|
|
$dir = opendir($src);
|
|
mkdir($dst);
|
|
while(false !== ( $file = readdir($dir)) ) {
|
|
if (( $file != '.' ) && ( $file != '..' )) {
|
|
if ( is_dir($src . '/' . $file) ) {
|
|
recurse_copy($src . '/' . $file, $dst . '/' . $file);
|
|
}
|
|
else {
|
|
copy($src . '/' . $file, $dst . '/' . $file);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|