[-] BO : fixed bug when save image shop association

This commit is contained in:
vAugagneur
2013-03-01 17:17:17 +01:00
parent a7fd19d3c4
commit ca53094d34
2 changed files with 24 additions and 7 deletions
@@ -280,6 +280,7 @@
{
"action":"UpdateProductImageShopAsso",
"id_image":id,
"id_product":id_product,
"id_shop": id_shop,
"active":active,
"token" : "{/literal}{$token}{literal}",
+23 -7
View File
@@ -1401,6 +1401,7 @@ class AdminProductsControllerCore extends AdminController
public function ajaxProcessUpdateProductImageShopAsso()
{
$id_product = Tools::getValue('id_product');
if (($id_image = Tools::getValue('id_image')) && ($id_shop = (int)Tools::getValue('id_shop')))
if (Tools::getValue('active') == 'true')
$res = Db::getInstance()->execute('INSERT INTO '._DB_PREFIX_.'image_shop (`id_image`, `id_shop`) VALUES('.(int)$id_image.', '.(int)$id_shop.')');
@@ -1408,18 +1409,33 @@ class AdminProductsControllerCore extends AdminController
$res = Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'image_shop WHERE `id_image` = '.(int)$id_image.' AND `id_shop` = '.(int)$id_shop);
// Clean covers in image table
$count_cover_image = Db::getInstance()->getValue('SELECT COUNT(*) FROM '._DB_PREFIX_.'image i INNER JOIN '._DB_PREFIX_.'image_shop ish ON (i.id_image = ish.id_image AND ish.id_shop = '.(int)$id_shop.') WHERE i.cover = 1');
$count_cover_image = Db::getInstance()->getValue('
SELECT COUNT(*) FROM '._DB_PREFIX_.'image i
INNER JOIN '._DB_PREFIX_.'image_shop ish ON (i.id_image = ish.id_image AND ish.id_shop = '.(int)$id_shop.')
WHERE i.cover = 1 AND `id_product` = '.(int)$id_product);
$id_image = Db::getInstance()->getValue('
SELECT i.`id_image` FROM '._DB_PREFIX_.'image i
INNER JOIN '._DB_PREFIX_.'image_shop ish ON (i.id_image = ish.id_image AND ish.id_shop = '.(int)$id_shop.')
WHERE `id_product` = '.(int)$id_product);
if ($count_cover_image < 1)
Db::getInstance()->execute('UPDATE '._DB_PREFIX_.'image i, '._DB_PREFIX_.'image_shop ish SET i.cover = 1 WHERE i.id_image = ish.id_image AND ish.id_shop = '.(int)$id_shop.' LIMIT 1');
Db::getInstance()->execute('UPDATE '._DB_PREFIX_.'image i SET i.cover = 1 WHERE i.id_image = '.(int)$id_image.' AND i.`id_product` = '.(int)$id_product.' LIMIT 1');
if ($count_cover_image > 1)
Db::getInstance()->execute('UPDATE '._DB_PREFIX_.'image i, '._DB_PREFIX_.'image_shop ish SET i.cover = 0 WHERE cover = 1 AND i.id_image = ish.id_image AND is.id_shop = '.(int)$id_shop.' LIMIT '.intval($count_cover_image - 1));
Db::getInstance()->execute('UPDATE '._DB_PREFIX_.'image i SET i.cover = 0 WHERE i.id_image <> '.(int)$id_image.' AND i.`id_product` = '.(int)$id_product);
// Clean covers in image_shop table
$count_cover_image_shop = Db::getInstance()->getValue('SELECT COUNT(*) FROM '._DB_PREFIX_.'image_shop ish WHERE ish.id_shop = '.(int)$id_shop.' AND ish.cover = 1');
$count_cover_image_shop = Db::getInstance()->getValue('
SELECT COUNT(*)
FROM '._DB_PREFIX_.'image_shop ish
INNER JOIN '._DB_PREFIX_.'image i ON (i.id_image = ish.id_image AND i.`id_product` = '.(int)$id_product.')
WHERE ish.id_shop = '.(int)$id_shop.' AND ish.cover = 1');
if ($count_cover_image_shop < 1)
Db::getInstance()->execute('UPDATE '._DB_PREFIX_.'image_shop ish SET ish.cover = 1 WHERE ish.id_shop = '.(int)$id_shop.' LIMIT 1');
Db::getInstance()->execute('UPDATE '._DB_PREFIX_.'image_shop ish SET ish.cover = 1 WHERE ish.id_image = '.(int)$id_image.' AND ish.id_shop = '.(int)$id_shop.' LIMIT 1');
if ($count_cover_image_shop > 1)
Db::getInstance()->execute('UPDATE '._DB_PREFIX_.'image_shop ish SET ish.cover = 0 WHERE ish.cover = 1 AND ish.id_shop = '.(int)$id_shop.' LIMIT '.intval($count_cover_image_shop - 1));
Db::getInstance()->execute('UPDATE '._DB_PREFIX_.'image_shop ish SET ish.cover = 0 WHERE ish.id_image <> '.(int)$id_image.' AND ish.cover = 1 AND ish.id_shop = '.(int)$id_shop.' LIMIT '.intval($count_cover_image_shop - 1));
if ($res)
$this->jsonConfirmation($this->_conf[27]);