From e90f628b1ef2f70b45e87bdb5ef3abd08ffd2c0d Mon Sep 17 00:00:00 2001 From: vAugagneur Date: Tue, 28 Feb 2012 14:19:31 +0000 Subject: [PATCH] [-] BO : fixed Duplicate entry for key 'full_shop_url' when added new shop url --- classes/shop/ShopUrl.php | 19 +++++++++++++++++++ controllers/admin/AdminShopUrlController.php | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/classes/shop/ShopUrl.php b/classes/shop/ShopUrl.php index d16525c08..2079cd661 100644 --- a/classes/shop/ShopUrl.php +++ b/classes/shop/ShopUrl.php @@ -168,6 +168,7 @@ class ShopUrlCore extends ObjectModel */ public static function virtualUriExists($virtual_uri, $id_shop_tested) { + Tools::displayAsDeprecated(); $virtual_uri = trim($virtual_uri); if (substr($virtual_uri, -1) != '/') $virtual_uri .= '/'; @@ -177,4 +178,22 @@ class ShopUrlCore extends ObjectModel WHERE `id_shop` != '.(int)$id_shop_tested.' AND `virtual_uri` = "'.pSQL($virtual_uri).'"'); } + + /** + * @static + * @param string $domain + * @param string $physical_uri + * @param string $virtual_uri + * @param int $id_shop_tested + * @return bool + */ + public static function urlExists($domain, $physical_uri, $virtual_uri, $id_shop_tested) + { + $url = $domain.$physical_uri.$virtual_uri; + return (bool)Db::getInstance()->getValue(' + SELECT * + FROM `'._DB_PREFIX_.'shop_url` + WHERE `id_shop` != '.(int)$id_shop_tested.' + AND CONCAT(`domain`, `physical_uri`, `virtual_uri`) ="'.pSQL($url).'"'); + } } diff --git a/controllers/admin/AdminShopUrlController.php b/controllers/admin/AdminShopUrlController.php index 9a5054125..3d5d4e08c 100644 --- a/controllers/admin/AdminShopUrlController.php +++ b/controllers/admin/AdminShopUrlController.php @@ -267,7 +267,7 @@ class AdminShopUrlControllerCore extends AdminController } else if (Tools::isSubmit('submitAdd'.$this->table) && $this->tabAccess['add'] === '1') { - if (ShopUrl::virtualUriExists(Tools::getValue('virtual_uri'), Tools::getValue('id_shop'))) + if (ShopUrl::urlExists(Tools::getValue('domain'), Tools::getValue('physical_uri'), Tools::getValue('virtual_uri'), Tools::getValue('id_shop'))) $this->errors[] = Tools::displayError('Virtual URI already used.'); else return parent::postProcess();