diff --git a/classes/AttributeGroup.php b/classes/AttributeGroup.php index b5515fa81..2f6469386 100644 --- a/classes/AttributeGroup.php +++ b/classes/AttributeGroup.php @@ -228,8 +228,10 @@ class AttributeGroupCore extends ObjectModel public function getWsProductOptionValues() { $result = Db::getInstance()->executeS(' - SELECT id_attribute AS id from `'._DB_PREFIX_.'attribute` - WHERE id_attribute_group = '.(int)$this->id + SELECT a.id_attribute AS id + FROM `'._DB_PREFIX_.'attribute` a + '.Shop::addSqlAssociation('attribute', 'a').' + WHERE a.id_attribute_group = '.(int)$this->id ); return $result; } diff --git a/classes/Cart.php b/classes/Cart.php index 68f18d49d..52f361a8c 100644 --- a/classes/Cart.php +++ b/classes/Cart.php @@ -3017,7 +3017,8 @@ class CartCore extends ObjectModel $query = ' SELECT id_product, id_product_attribute, quantity FROM `'._DB_PREFIX_.'cart_product` - WHERE id_cart = '.(int)$this->id; + WHERE id_cart = '.(int)$this->id.' + AND id_shop = '.(int)Context::getContext()->shop->id; $result = Db::getInstance()->executeS($query); return $result; @@ -3027,11 +3028,11 @@ class CartCore extends ObjectModel { if ($this->deleteAssociations()) { - $query = 'INSERT INTO `'._DB_PREFIX_.'cart_product`(`id_cart`, `id_product`, `id_product_attribute`, `quantity`, `date_add`) VALUES '; + $query = 'INSERT INTO `'._DB_PREFIX_.'cart_product`(`id_cart`, `id_product`, `id_product_attribute`, `quantity`, `date_add`, `id_shop`) VALUES '; foreach ($values as $value) $query .= '('.(int)$this->id.', '.(int)$value['id_product'].', '. - (isset($value['id_product_attribute']) ? (int)$value['id_product_attribute'] : 'NULL').', '.(int)$value['quantity'].', NOW()),'; + (isset($value['id_product_attribute']) ? (int)$value['id_product_attribute'] : 'NULL').', '.(int)$value['quantity'].', NOW(), '.(int)Context::getContext()->shop->id.'),'; Db::getInstance()->execute(rtrim($query, ',')); } diff --git a/classes/Category.php b/classes/Category.php index fe4083a8d..d6bfe6d47 100644 --- a/classes/Category.php +++ b/classes/Category.php @@ -1306,11 +1306,18 @@ class CategoryCore extends ObjectModel public function getWsNbProductsRecursive() { $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' - SELECT count(distinct(id_product)) as nb_product_recursive FROM `'._DB_PREFIX_.'category_product` - WHERE id_category IN (SELECT id_category - FROM `'._DB_PREFIX_.'category` - WHERE nleft > '.(int)$this->nleft. - ' AND nright < '.(int)$this->nright.' AND active = 1 UNION SELECT '.(int)$this->id.')'); + SELECT COUNT(distinct(id_product)) as nb_product_recursive + FROM `'._DB_PREFIX_.'category_product` + WHERE id_category IN ( + SELECT c2.id_category + FROM `'._DB_PREFIX_.'category` c2 + '.Shop::addSqlAssociation('category', 'c2').' + WHERE c2.nleft > '.(int)$this->nleft.' + AND c2.nright < '.(int)$this->nright.' + AND c2.active = 1 + UNION SELECT '.(int)$this->id.' + ) + '); if (!$result) return -1; return $result[0]['nb_product_recursive']; diff --git a/classes/Combination.php b/classes/Combination.php index 07c0755b7..923a89a5a 100644 --- a/classes/Combination.php +++ b/classes/Combination.php @@ -144,9 +144,10 @@ class CombinationCore extends ObjectModel public function getWsProductOptionValues() { $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' - SELECT id_attribute AS id - FROM `'._DB_PREFIX_.'product_attribute_combination` - WHERE id_product_attribute = '.(int)$this->id); + SELECT a.id_attribute AS id + FROM `'._DB_PREFIX_.'product_attribute_combination` a + '.Shop::addSqlAssociation('attribute', 'a').' + WHERE a.id_product_attribute = '.(int)$this->id); return $result; } @@ -154,9 +155,10 @@ class CombinationCore extends ObjectModel public function getWsImages() { return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' - SELECT `id_image` as id - FROM `'._DB_PREFIX_.'product_attribute_image` - WHERE `id_product_attribute` = '.(int)$this->id.' + SELECT a.`id_image` as id + FROM `'._DB_PREFIX_.'product_attribute_image` a + '.Shop::addSqlAssociation('product_attribute', 'a').' + WHERE a.`id_product_attribute` = '.(int)$this->id.' '); } diff --git a/classes/Customer.php b/classes/Customer.php index 95b0c7b52..e734aa09e 100644 --- a/classes/Customer.php +++ b/classes/Customer.php @@ -144,7 +144,7 @@ class CustomerCore extends ObjectModel 'passwd' => array('setter' => 'setWsPasswd'), ), 'associations' => array( - 'groups' => array('resource' => 'group'), + 'groups' => array('resource' => 'group'), ) ); @@ -741,9 +741,11 @@ class CustomerCore extends ObjectModel public function getWsGroups() { return Db::getInstance()->executeS(' - SELECT cg.`id_group` as id - FROM '._DB_PREFIX_.'customer_group cg - WHERE cg.`id_customer` = '.(int)$this->id); + SELECT cg.`id_group` as id + FROM '._DB_PREFIX_.'customer_group cg + '.Shop::addSqlAssociation('group', 'cg').' + WHERE cg.`id_customer` = '.(int)$this->id + ); } public function setWsGroups($result) @@ -755,4 +757,13 @@ class CustomerCore extends ObjectModel $this->addGroups($groups); return true; } + + /** + * @see ObjectModel::getWebserviceObjectList() + */ + public function getWebserviceObjectList($sql_join, $sql_filter, $sql_sort, $sql_limit) + { + $sql_filter .= Shop::addSqlRestriction(Shop::SHARE_CUSTOMER, 'main'); + return parent::getWebserviceObjectList($sql_join, $sql_filter, $sql_sort, $sql_limit); + } } diff --git a/classes/Manufacturer.php b/classes/Manufacturer.php index 877c51171..e7d13da68 100644 --- a/classes/Manufacturer.php +++ b/classes/Manufacturer.php @@ -441,7 +441,8 @@ class ManufacturerCore extends ObjectModel return Db::getInstance()->executeS(' SELECT a.id_address as id FROM `'._DB_PREFIX_.'address` AS a - WHERE `id_manufacturer` = '.(int)$this->id.' + '.Shop::addSqlAssociation('manufacturer', 'a').' + WHERE a.`id_manufacturer` = '.(int)$this->id.' AND a.`deleted` = 0' ); } diff --git a/classes/Product.php b/classes/Product.php index 41ff38478..62d0863fa 100644 --- a/classes/Product.php +++ b/classes/Product.php @@ -4176,9 +4176,10 @@ class ProductCore extends ObjectModel public function getWsCategories() { $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS( - 'SELECT `id_category` AS id - FROM `'._DB_PREFIX_.'category_product` - WHERE `id_product` = '.(int)$this->id + 'SELECT cp.`id_category` AS id + FROM `'._DB_PREFIX_.'category_product` cp + '.Shop::addSqlAssociation('category', 'cp').' + WHERE cp.`id_product` = '.(int)$this->id ); return $result; } @@ -4354,10 +4355,11 @@ class ProductCore extends ObjectModel public function getWsImages() { return Db::getInstance()->executeS(' - SELECT `id_image` as id - FROM `'._DB_PREFIX_.'image` - WHERE `id_product` = '.(int)$this->id.' - ORDER BY `position`'); + SELECT i.`id_image` as id + FROM `'._DB_PREFIX_.'image` i + '.Shop::addSqlAssociation('image', 'i').' + WHERE i.`id_product` = '.(int)$this->id.' + ORDER BY i.`position`'); } public function getWsTags() diff --git a/classes/order/Order.php b/classes/order/Order.php index 4a3158089..0e2006adb 100644 --- a/classes/order/Order.php +++ b/classes/order/Order.php @@ -1736,5 +1736,14 @@ class OrderCore extends ObjectModel return new OrderState($this->current_state); return null; } + + /** + * @see ObjectModel::getWebserviceObjectList() + */ + public function getWebserviceObjectList($sql_join, $sql_filter, $sql_sort, $sql_limit) + { + $sql_filter .= Shop::addSqlRestriction(Shop::SHARE_ORDER, 'main'); + return parent::getWebserviceObjectList($sql_join, $sql_filter, $sql_sort, $sql_limit); + } } diff --git a/classes/order/OrderDetail.php b/classes/order/OrderDetail.php index a1184ea2b..f669ba56d 100644 --- a/classes/order/OrderDetail.php +++ b/classes/order/OrderDetail.php @@ -199,9 +199,9 @@ class OrderDetailCore extends ObjectModel ), 'hidden_fields' => array('tax_rate', 'tax_name'), 'associations' => array( - 'taxes' => array('resource' => 'tax', 'getter' => 'getWsTaxes', 'setter' => false, - 'fields' => array('id' => array(), ), - ), + 'taxes' => array('resource' => 'tax', 'getter' => 'getWsTaxes', 'setter' => false, + 'fields' => array('id' => array(), ), + ), )); /** @var bool */