diff --git a/admin-dev/tabs/AdminCustomers.php b/admin-dev/tabs/AdminCustomers.php index 0540f1d78..fa8cda1ae 100644 --- a/admin-dev/tabs/AdminCustomers.php +++ b/admin-dev/tabs/AdminCustomers.php @@ -605,14 +605,17 @@ class AdminCustomers extends AdminTab echo $this->l('No cart available').'.'; echo ''; - $interested = Db::getInstance()->ExecuteS('SELECT DISTINCT id_product, c.id_cart, c.id_shop - FROM '._DB_PREFIX_.'cart_product cp - JOIN '._DB_PREFIX_.'cart c ON (c.id_cart = cp.id_cart) - WHERE c.id_customer = '.(int)$customer->id.' - AND cp.id_product NOT IN (SELECT product_id - FROM '._DB_PREFIX_.'orders o - JOIN '._DB_PREFIX_.'order_detail od ON (o.id_order = od.id_order) - WHERE o.valid = 1 AND o.id_customer = '.(int)$customer->id.')'); + $sql = 'SELECT DISTINCT id_product, c.id_cart, c.id_shop, cp.id_shop AS cp_id_shop + FROM '._DB_PREFIX_.'cart_product cp + JOIN '._DB_PREFIX_.'cart c ON (c.id_cart = cp.id_cart) + WHERE c.id_customer = '.(int)$customer->id.' + AND cp.id_product NOT IN ( + SELECT product_id + FROM '._DB_PREFIX_.'orders o + JOIN '._DB_PREFIX_.'order_detail od ON (o.id_order = od.id_order) + WHERE o.valid = 1 AND o.id_customer = '.(int)$customer->id.' + )'; + $interested = Db::getInstance()->ExecuteS($sql); if (count($interested)) { echo '
@@ -621,11 +624,12 @@ class AdminCustomers extends AdminTab foreach ($interested as $p) { $product = new Product($p['id_product'], false, $context->language->id, $p['id_shop']); + $url = $context->link->getProductLink($product->id, $product->link_rewrite, Category::getLinkRewrite($product->id_category_default, $context->language->id), null, null, $p['cp_id_shop']); echo ' - + '.(int)$product->id.' '.Tools::htmlentitiesUTF8($product->name).' - + '; } echo '
'; diff --git a/admin-dev/tabs/AdminGroupShop.php b/admin-dev/tabs/AdminGroupShop.php index c39a378a0..fadfc8c4c 100755 --- a/admin-dev/tabs/AdminGroupShop.php +++ b/admin-dev/tabs/AdminGroupShop.php @@ -71,6 +71,25 @@ class AdminGroupShop extends AdminTab $disabled = 'disabled="disabled"'; else $disabled = ''; + + echo << + // + +EOF; + echo '
'.($obj->id ? '' : '').' @@ -79,22 +98,30 @@ class AdminGroupShop extends AdminTab
- +
- getFieldValue($obj, 'share_datas') ? 'checked="checked" ' : '').'/> - - getFieldValue($obj, 'share_datas') ? 'checked="checked" ' : '').'/> - -

'.$this->l('Share customers, orders and carts between shops of this group').'

+ getFieldValue($obj, 'share_customer') ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'share_customer') ? 'checked="checked" ' : '').'/> + +

'.$this->l('Share customers between shops of this group').'

getFieldValue($obj, 'share_stock') ? 'checked="checked" ' : '').'/> - getFieldValue($obj, 'share_stock') ? 'checked="checked" ' : '').'/> - + getFieldValue($obj, 'share_stock') ? 'checked="checked" ' : '').'/> +

'.$this->l('Sare stock between shops of this group').'

+ +
+ getFieldValue($obj, 'share_order') ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'share_order') ? 'checked="checked" ' : '').'/> + +

'.$this->l('Share orders and carts between shops of this group (you can share orders only if you share customers and stock)').'

+
getFieldValue($obj, 'active') ? 'checked="checked" ' : '').'/> diff --git a/admin-dev/tabs/AdminProducts.php b/admin-dev/tabs/AdminProducts.php index 94b5ff7dd..3aea8cdc4 100644 --- a/admin-dev/tabs/AdminProducts.php +++ b/admin-dev/tabs/AdminProducts.php @@ -66,7 +66,7 @@ class AdminProducts extends AdminTab LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`)'; $this->_filter = 'AND cp.`id_category` = '.(int)($this->_category->id); $this->_select = 'cp.`position`, i.`id_image`, (a.`price` * ((100 + (t.`rate`))/100)) AS price_final, SUM(stock.quantity) AS quantity'; - $this->_group = 'GROUP BY stock.id_product'; + $this->_group = 'GROUP BY a.id_product'; parent::__construct(); } diff --git a/classes/CMSCategory.php b/classes/CMSCategory.php index 943984d21..a313e6ea5 100644 --- a/classes/CMSCategory.php +++ b/classes/CMSCategory.php @@ -200,7 +200,7 @@ class CMSCategoryCore extends ObjectModel $sql = 'SELECT c.`id_cms`, cl.`meta_title`, cl.`link_rewrite` FROM `'._DB_PREFIX_.'cms` c - '.$context->shop->sqlAsso('cms', 'c').' + '.$context->shop->sqlAsso('cms', 'c', false).' JOIN `'._DB_PREFIX_.'cms_lang` cl ON c.`id_cms` = cl.`id_cms` WHERE `id_cms_category` = '.(int)$current.' AND cl.`id_lang` = '.$id_lang.($active ? ' AND c.`active` = 1' : '').' diff --git a/classes/Cart.php b/classes/Cart.php index e2e4d56ac..fdd8461fd 100644 --- a/classes/Cart.php +++ b/classes/Cart.php @@ -318,7 +318,7 @@ class CartCore extends ObjectModel public function getLastProduct() { $sql = ' - SELECT `id_product`, `id_product_attribute` + SELECT `id_product`, `id_product_attribute`, id_shop FROM `'._DB_PREFIX_.'cart_product` WHERE `id_cart` = '.(int)($this->id).' ORDER BY `date_add` DESC'; @@ -353,46 +353,45 @@ class CartCore extends ObjectModel if (!$context) $context = Context::getContext(); - $sql = ' - SELECT cp.`id_product_attribute`, cp.`id_product`, cu.`id_customization`, cp.`quantity` AS cart_quantity, cu.`quantity` AS customization_quantity, pl.`name`, - pl.`description_short`, pl.`available_now`, pl.`available_later`, p.`id_product`, p.`id_category_default`, p.`id_supplier`, p.`id_manufacturer`, p.`on_sale`, p.`ecotax`, p.`additional_shipping_cost`, p.`available_for_order`, - p.`price`, p.`weight`, p.`width`, p.`height`, p.`depth`, p.`out_of_stock`, p.`active`, p.`date_add`, p.`date_upd`, IFNULL(pa.`minimal_quantity`, p.`minimal_quantity`) as minimal_quantity, - t.`id_tax`, tl.`name` AS tax, t.`rate`, pa.`price` AS price_attribute, stock.quantity, - pa.`ecotax` AS ecotax_attr, i.`id_image`, il.`legend`, pl.`link_rewrite`, cl.`link_rewrite` AS category, CONCAT(cp.`id_product`, cp.`id_product_attribute`) AS unique_id, - IF (IFNULL(pa.`reference`, \'\') = \'\', p.`reference`, pa.`reference`) AS reference, - IF (IFNULL(pa.`supplier_reference`, \'\') = \'\', p.`supplier_reference`, pa.`supplier_reference`) AS supplier_reference, - (p.`weight`+ pa.`weight`) weight_attribute, - IF (IFNULL(pa.`ean13`, \'\') = \'\', p.`ean13`, pa.`ean13`) AS ean13, IF (IFNULL(pa.`upc`, \'\') = \'\', p.`upc`, pa.`upc`) AS upc, - pai.`id_image` as pai_id_image - FROM `'._DB_PREFIX_.'cart_product` cp - LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = cp.`id_product` - LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$this->id_lang.') - LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON (pa.`id_product_attribute` = cp.`id_product_attribute`) - LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` - AND tr.`id_country` = '.(int)$context->country->id.' - AND tr.`id_state` = 0) - LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`) - LEFT JOIN `'._DB_PREFIX_.'tax_lang` tl ON (t.`id_tax` = tl.`id_tax` AND tl.`id_lang` = '.(int)$this->id_lang.') - LEFT JOIN `'._DB_PREFIX_.'customization` cu ON (p.`id_product` = cu.`id_product`) - LEFT JOIN `'._DB_PREFIX_.'product_attribute_image` pai ON (pai.`id_product_attribute` = pa.`id_product_attribute`) - LEFT JOIN `'._DB_PREFIX_.'image` i ON (IF(pai.`id_image`, - i.`id_image` = - (SELECT i2.`id_image` - FROM `'._DB_PREFIX_.'image` i2 - INNER JOIN `'._DB_PREFIX_.'product_attribute_image` pai2 ON (pai2.`id_image` = i2.`id_image`) - WHERE i2.`id_product` = p.`id_product` AND pai2.`id_product_attribute` = pa.`id_product_attribute` - ORDER BY i2.`position` - LIMIT 1), - i.`id_product` = p.`id_product` AND i.`cover` = 1) - ) - LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$this->id_lang.') - LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (p.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.(int)$this->id_lang.') - '.Product::sqlStock('cp', 'cp').' - WHERE cp.`id_cart` = '.(int)$this->id.' - '.($id_product ? ' AND cp.`id_product` = '.(int)$id_product : '').' - AND p.`id_product` IS NOT NULL - GROUP BY unique_id - ORDER BY cp.date_add ASC'; + $sql = 'SELECT cp.`id_product_attribute`, cp.`id_product`, cu.`id_customization`, cp.`quantity` AS cart_quantity, cp.id_shop, cu.`quantity` AS customization_quantity, pl.`name`, + pl.`description_short`, pl.`available_now`, pl.`available_later`, p.`id_product`, p.`id_category_default`, p.`id_supplier`, p.`id_manufacturer`, p.`on_sale`, p.`ecotax`, p.`additional_shipping_cost`, p.`available_for_order`, + p.`price`, p.`weight`, p.`width`, p.`height`, p.`depth`, p.`out_of_stock`, p.`active`, p.`date_add`, p.`date_upd`, IFNULL(pa.`minimal_quantity`, p.`minimal_quantity`) as minimal_quantity, + t.`id_tax`, tl.`name` AS tax, t.`rate`, pa.`price` AS price_attribute, stock.quantity, + pa.`ecotax` AS ecotax_attr, i.`id_image`, il.`legend`, pl.`link_rewrite`, cl.`link_rewrite` AS category, CONCAT(cp.`id_product`, cp.`id_product_attribute`) AS unique_id, + IF (IFNULL(pa.`reference`, \'\') = \'\', p.`reference`, pa.`reference`) AS reference, + IF (IFNULL(pa.`supplier_reference`, \'\') = \'\', p.`supplier_reference`, pa.`supplier_reference`) AS supplier_reference, + (p.`weight`+ pa.`weight`) weight_attribute, + IF (IFNULL(pa.`ean13`, \'\') = \'\', p.`ean13`, pa.`ean13`) AS ean13, IF (IFNULL(pa.`upc`, \'\') = \'\', p.`upc`, pa.`upc`) AS upc, + pai.`id_image` as pai_id_image + FROM `'._DB_PREFIX_.'cart_product` cp + LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = cp.`id_product` + LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$this->id_lang.') + LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON (pa.`id_product_attribute` = cp.`id_product_attribute`) + LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` + AND tr.`id_country` = '.(int)$context->country->id.' + AND tr.`id_state` = 0) + LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`) + LEFT JOIN `'._DB_PREFIX_.'tax_lang` tl ON (t.`id_tax` = tl.`id_tax` AND tl.`id_lang` = '.(int)$this->id_lang.') + LEFT JOIN `'._DB_PREFIX_.'customization` cu ON (p.`id_product` = cu.`id_product`) + LEFT JOIN `'._DB_PREFIX_.'product_attribute_image` pai ON (pai.`id_product_attribute` = pa.`id_product_attribute`) + LEFT JOIN `'._DB_PREFIX_.'image` i ON (IF(pai.`id_image`, + i.`id_image` = + (SELECT i2.`id_image` + FROM `'._DB_PREFIX_.'image` i2 + INNER JOIN `'._DB_PREFIX_.'product_attribute_image` pai2 ON (pai2.`id_image` = i2.`id_image`) + WHERE i2.`id_product` = p.`id_product` AND pai2.`id_product_attribute` = pa.`id_product_attribute` + ORDER BY i2.`position` + LIMIT 1), + i.`id_product` = p.`id_product` AND i.`cover` = 1) + ) + LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$this->id_lang.') + LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (p.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.(int)$this->id_lang.') + '.Product::sqlStock('cp', 'cp').' + WHERE cp.`id_cart` = '.(int)$this->id.' + '.($id_product ? ' AND cp.`id_product` = '.(int)$id_product : '').' + AND p.`id_product` IS NOT NULL + GROUP BY unique_id + ORDER BY cp.date_add ASC'; $result = Db::getInstance()->ExecuteS($sql); // Reset the cache before the following return, or else an empty cart will add dozens of queries @@ -632,9 +631,15 @@ class CartCore extends ObjectModel if ((int)$quantity < $minimalQuantity) return -1; - if (!Db::getInstance()->AutoExecute(_DB_PREFIX_.'cart_product', array('id_product' => (int)$id_product, - 'id_product_attribute' => (int)$id_product_attribute, 'id_cart' => (int)$this->id, - 'quantity' => (int)$quantity, 'date_add' => date('Y-m-d H:i:s')), 'INSERT')) + $resultAdd = Db::getInstance()->AutoExecute(_DB_PREFIX_.'cart_product', array( + 'id_product' => (int)$id_product, + 'id_product_attribute' => (int)$id_product_attribute, + 'id_cart' => (int)$this->id, + 'id_shop' => $context->shop->getID(true), + 'quantity' => (int)$quantity, + 'date_add' => date('Y-m-d H:i:s') + ), 'INSERT'); + if (!$resultAdd) return false; } } @@ -1475,7 +1480,7 @@ class CartCore extends ObjectModel LEFT JOIN '._DB_PREFIX_.'orders o ON (c.`id_cart` = o.`id_cart`) WHERE c.`id_customer` = '.(int)($id_customer).' AND o.`id_cart` IS NULL - '.Context::getContext()->shop->sqlRestriction(true, 'c').' + '.Context::getContext()->shop->sqlRestriction(Shop::SHARE_ORDER, 'c').' ORDER BY c.`date_upd` DESC'; if (!$id_cart = Db::getInstance()->getValue($sql)) return false; diff --git a/classes/Category.php b/classes/Category.php index 5e8bf570d..67db4d817 100644 --- a/classes/Category.php +++ b/classes/Category.php @@ -493,7 +493,7 @@ class CategoryCore extends ObjectModel { $sql = 'SELECT COUNT(cp.`id_product`) AS total FROM `'._DB_PREFIX_.'product` p - '.$context->shop->sqlAsso('product', 'p', true).' + '.$context->shop->sqlAsso('product', 'p').' LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON p.`id_product` = cp.`id_product` WHERE cp.`id_category` = '.(int)($this->id). ($active ? ' AND p.`active` = 1' : ''). @@ -506,7 +506,7 @@ class CategoryCore extends ObjectModel FROM `'._DB_PREFIX_.'category_product` cp LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = cp.`id_product` LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON (p.`id_product` = pa.`id_product` AND default_on = 1) - '.$context->shop->sqlAsso('product', 'p', true).' + '.$context->shop->sqlAsso('product', 'p').' '.Product::sqlStock('p', 'pa', false, $context).' LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (p.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.(int)$id_lang.$context->shop->sqlLang('cl').') LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.$context->shop->sqlLang('pl').') diff --git a/classes/Connection.php b/classes/Connection.php index 4c5fcc435..9fd7031cf 100644 --- a/classes/Connection.php +++ b/classes/Connection.php @@ -103,7 +103,7 @@ class ConnectionCore extends ObjectModel $sql = 'SELECT `id_connections` FROM `'._DB_PREFIX_.'connections` WHERE ip_address = '.ip2long(Tools::getRemoteAddr()).' AND DATE_ADD(`date_add`, INTERVAL 30 MINUTE) > \''.pSQL(date('Y-m-d H:i:00')).'\' - '.$context->shop->sqlRestriction(true).' + '.$context->shop->sqlRestriction(Shop::SHARE_CUSTOMER).' ORDER BY `date_add` DESC'; if ($id_connections = Db::getInstance()->getValue($sql)) { @@ -117,7 +117,7 @@ class ConnectionCore extends ObjectModel FROM `'._DB_PREFIX_.'connections` WHERE `id_guest` = '.(int)($cookie->id_guest).' AND DATE_ADD(`date_add`, INTERVAL 30 MINUTE) > \''.pSQL(date('Y-m-d H:i:00')).'\' - '.$context->shop->sqlRestriction(true).' + '.$context->shop->sqlRestriction(Shop::SHARE_CUSTOMER).' ORDER BY `date_add` DESC'; $result = Db::getInstance()->getRow($sql); if (!$result['id_guest'] AND (int)($cookie->id_guest)) diff --git a/classes/Contact.php b/classes/Contact.php index 38eac548c..bc11e41b8 100644 --- a/classes/Contact.php +++ b/classes/Contact.php @@ -83,7 +83,7 @@ class ContactCore extends ObjectModel $sql = 'SELECT * FROM `'._DB_PREFIX_.'contact` c - '.$context->shop->sqlAsso('contact', 'c').' + '.$context->shop->sqlAsso('contact', 'c', false).' LEFT JOIN `'._DB_PREFIX_.'contact_lang` cl ON (c.`id_contact` = cl.`id_contact`) WHERE cl.`id_lang` = '.(int)$id_lang.' ORDER BY `name` ASC'; diff --git a/classes/Country.php b/classes/Country.php index 7ce388654..9474ce345 100644 --- a/classes/Country.php +++ b/classes/Country.php @@ -122,8 +122,10 @@ class CountryCore extends ObjectModel { if (!Validate::isBool($active)) die(Tools::displayError()); - if (!$context) - $context = Context::getContext(); + + if (!$context) + $context = Context::getContext(); + $states = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' SELECT s.* FROM `'._DB_PREFIX_.'state` s @@ -131,7 +133,7 @@ class CountryCore extends ObjectModel $sql = 'SELECT cl.*,c.*, cl.`name` AS country, z.`name` AS zone FROM `'._DB_PREFIX_.'country` c - '.$context->shop->sqlAsso('country', 'c').' + '.$context->shop->sqlAsso('country', 'c', false).' LEFT JOIN `'._DB_PREFIX_.'country_lang` cl ON (c.`id_country` = cl.`id_country` AND cl.`id_lang` = '.(int)$id_lang.') LEFT JOIN `'._DB_PREFIX_.'zone` z ON z.`id_zone` = c.`id_zone` WHERE 1' @@ -296,7 +298,7 @@ class CountryCore extends ObjectModel $sql = ' SELECT DISTINCT c.*, cl.* FROM `'._DB_PREFIX_.'country` c - '.$context->shop->sqlAsso('country', 'c').' + '.$context->shop->sqlAsso('country', 'c', false).' LEFT JOIN `'._DB_PREFIX_.'state` s ON (s.`id_country` = c.`id_country`) LEFT JOIN `'._DB_PREFIX_.'country_lang` cl ON (c.`id_country` = cl.`id_country`) WHERE (c.`id_zone` = '.(int)$id_zone.' OR s.`id_zone` = '.(int)$id_zone.') diff --git a/classes/Currency.php b/classes/Currency.php index 2a335768b..7e292e810 100644 --- a/classes/Currency.php +++ b/classes/Currency.php @@ -187,7 +187,7 @@ class CurrencyCore extends ObjectModel $sql = 'SELECT * FROM `'._DB_PREFIX_.'currency` c - '.$context->shop->sqlAsso('currency', 'c').' + '.$context->shop->sqlAsso('currency', 'c', false).' WHERE `deleted` = 0' .($active == 1 ? ' AND c.`active` = 1' : '').' ORDER BY `name` ASC'; diff --git a/classes/Customer.php b/classes/Customer.php index 3a566463a..944787c28 100644 --- a/classes/Customer.php +++ b/classes/Customer.php @@ -212,7 +212,7 @@ class CustomerCore extends ObjectModel $sql = 'SELECT `id_customer`, `email`, `firstname`, `lastname` FROM `'._DB_PREFIX_.'customer` WHERE 1 - '.$context->shop->sqlRestriction(true).' + '.$context->shop->sqlRestriction(Shop::SHARE_CUSTOMER).' ORDER BY `id_customer` ASC'; return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($sql); } @@ -236,7 +236,7 @@ class CustomerCore extends ObjectModel FROM `'._DB_PREFIX_ .'customer` WHERE `active` = 1 AND `email` = \''.pSQL($email).'\' - '.$context->shop->sqlRestriction(true).' + '.$context->shop->sqlRestriction(Shop::SHARE_CUSTOMER).' '.(isset($passwd) ? 'AND `passwd` = \''.md5(_COOKIE_KEY_.$passwd).'\'' : '').' AND `deleted` = 0 AND `is_guest` = 0'; @@ -291,7 +291,7 @@ class CustomerCore extends ObjectModel $sql = 'SELECT `id_customer` FROM `'._DB_PREFIX_.'customer` WHERE `email` = \''.pSQL($email).'\' - '.$context->shop->sqlRestriction(true). + '.$context->shop->sqlRestriction(Shop::SHARE_CUSTOMER). ($ignoreGuest ? 'AND `is_guest` = 0' : ''); $result = Db::getInstance()->getRow($sql); @@ -468,7 +468,7 @@ class CustomerCore extends ObjectModel OR `id_customer` LIKE \'%'.pSQL($query).'%\' OR `lastname` LIKE \'%'.pSQL($query).'%\' OR `firstname` LIKE \'%'.pSQL($query).'%\' - )'.$context->shop->sqlRestriction(true); + )'.$context->shop->sqlRestriction(Shop::SHARE_CUSTOMER); return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($sql); } diff --git a/classes/Discount.php b/classes/Discount.php index c6e7e6ae4..c53d34f0d 100644 --- a/classes/Discount.php +++ b/classes/Discount.php @@ -518,8 +518,8 @@ class DiscountCore extends ObjectModel // @todo share datas on discount ? Utility of this function ? $sql = 'SELECT id_discount FROM '._DB_PREFIX_.'discount - WHERE id_discount='.(int)$this->id - .$shop->sqlRestriction(true); + WHERE id_discount = '.(int)$this->id + .$shop->sqlRestriction(false); return Db::getInstance()->getValue($sql); } } diff --git a/classes/FrontController.php b/classes/FrontController.php index 4b3aa4a23..cce7fecf7 100755 --- a/classes/FrontController.php +++ b/classes/FrontController.php @@ -84,6 +84,11 @@ class FrontControllerCore $context = Context::getContext(); + $protocol_link = (Configuration::get('PS_SSL_ENABLED') OR (!empty($_SERVER['HTTPS']) AND strtolower($_SERVER['HTTPS']) != 'off')) ? 'https://' : 'http://'; + $protocol_content = ((isset($useSSL) AND $useSSL AND Configuration::get('PS_SSL_ENABLED')) OR (!empty($_SERVER['HTTPS']) AND strtolower($_SERVER['HTTPS']) != 'off')) ? 'https://' : 'http://'; + $link = new Link($protocol_link, $protocol_content); + $context->link = $link; + $this->id_current_shop = Context::getContext()->shop->getID(); $this->id_current_group_shop = Context::getContext()->shop->getGroupID(); diff --git a/classes/GroupShop.php b/classes/GroupShop.php index 6036b82ca..82afc0fec 100755 --- a/classes/GroupShop.php +++ b/classes/GroupShop.php @@ -32,14 +32,16 @@ class GroupShopCore extends ObjectModel { public $name; public $active; - public $share_datas; + public $share_customer; + public $share_order; public $share_stock; public $deleted; protected $fieldsSize = array('name' => 64); protected $fieldsValidate = array( 'active' => 'isBool', - 'share_datas' => 'isBool', + 'share_customer' => 'isBool', + 'share_order' => 'isBool', 'share_stock' => 'isBool', 'name' => 'isGenericName', ); @@ -63,8 +65,9 @@ class GroupShopCore extends ObjectModel parent::validateFields(); $fields['name'] = pSQL($this->name); - $fields['share_datas'] = (int)$this->share_datas; + $fields['share_customer'] = (int)$this->share_customer; $fields['share_stock'] = (int)$this->share_stock; + $fields['share_order'] = ($fields['share_customer'] && $fields['share_stock']) ? (int)$this->share_order : false; $fields['active'] = (int)$this->active; $fields['deleted'] = (int)$this->deleted; return $fields; diff --git a/classes/Link.php b/classes/Link.php index 838229a26..24ec645d2 100644 --- a/classes/Link.php +++ b/classes/Link.php @@ -68,16 +68,22 @@ class LinkCore * @param string $alias Friendly URL (only if $id_OBJ is the object) * @return string link */ - public function getProductLink($id_product, $alias = NULL, $category = NULL, $ean13 = NULL, $id_lang = NULL) + public function getProductLink($id_product, $alias = null, $category = null, $ean13 = null, $id_lang = null, $id_shop = null) { + $url = _PS_BASE_URL_.__PS_BASE_URI__; + + // @todo use specific method ? + if ($id_shop && ($shop = Shop::getShop($id_shop))) + $url = 'http://'.$shop['domain'].'/'.$shop['uri']; + if (is_object($id_product)) - return ($this->allow == 1)?(_PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink((int)$id_lang).((isset($id_product->category) AND !empty($id_product->category) AND $id_product->category != 'home') ? $id_product->category.'/' : '').(int)$id_product->id.'-'.$id_product->link_rewrite.($id_product->ean13 ? '-'.$id_product->ean13 : '').'.html') : - (_PS_BASE_URL_.__PS_BASE_URI__.'index.php?controller=product&id_product='.(int)$id_product->id); + return ($this->allow == 1)?($url.$this->getLangLink((int)$id_lang).((isset($id_product->category) AND !empty($id_product->category) AND $id_product->category != 'home') ? $id_product->category.'/' : '').(int)$id_product->id.'-'.$id_product->link_rewrite.($id_product->ean13 ? '-'.$id_product->ean13 : '').'.html') : + ($url.'index.php?controller=product&id_product='.(int)$id_product->id); elseif ($alias) - return ($this->allow == 1)?(_PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink((int)$id_lang).(($category AND $category != 'home') ? ($category.'/') : '').(int)$id_product.'-'.$alias.($ean13 ? '-'.$ean13 : '').'.html') : - (_PS_BASE_URL_.__PS_BASE_URI__.'index.php?controller=product&id_product='.(int)$id_product); + return ($this->allow == 1)?($url.$this->getLangLink((int)$id_lang).(($category AND $category != 'home') ? ($category.'/') : '').(int)$id_product.'-'.$alias.($ean13 ? '-'.$ean13 : '').'.html') : + ($url.'index.php?controller=product&id_product='.(int)$id_product); else - return _PS_BASE_URL_.__PS_BASE_URI__.'index.php?controller=product&id_product='.(int)$id_product; + return $url.'index.php?controller=product&id_product='.(int)$id_product; } public function getCategoryLink($id_category, $alias = NULL, $id_lang = NULL) diff --git a/classes/Manufacturer.php b/classes/Manufacturer.php index 60daa9817..96f915358 100644 --- a/classes/Manufacturer.php +++ b/classes/Manufacturer.php @@ -188,7 +188,7 @@ class ManufacturerCore extends ObjectModel if (!$id_lang) $id_lang = (int)Configuration::get('PS_LANG_DEFAULT'); if (!$id_group_shop) - $id_group_shop = Configuration::get('PS_GROUP_SHOP_DEFAULT'); + $id_group_shop = Shop::getGroupFromShop(Configuration::get('PS_SHOP_DEFAULT')); $sql = 'SELECT m.*, ml.`description`'; $sql.= 'FROM `'._DB_PREFIX_.'manufacturer_group_shop` mgs LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON (m.id_manufacturer = mgs.id_manufacturer) @@ -293,7 +293,7 @@ class ManufacturerCore extends ObjectModel $sql = ' SELECT p.`id_product` FROM `'._DB_PREFIX_.'product` p - '.$context->shop->sqlAsso('product', 'p', true).' + '.$context->shop->sqlAsso('product', 'p').' WHERE p.id_manufacturer = '.(int)($id_manufacturer) .($active ? ' AND p.`active` = 1' : '').' AND p.`id_product` IN ( @@ -309,7 +309,7 @@ class ManufacturerCore extends ObjectModel $sql = 'SELECT p.*, pa.`id_product_attribute`, pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, i.`id_image`, il.`legend`, m.`name` AS manufacturer_name, tl.`name` AS tax_name, t.`rate`, DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new, (p.`price` * ((100 + (t.`rate`))/100)) AS orderprice FROM `'._DB_PREFIX_.'product` p - '.$context->shop->sqlAsso('product', 'p', true).' + '.$context->shop->sqlAsso('product', 'p').' LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON (p.`id_product` = pa.`id_product` AND default_on = 1) LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.$context->shop->sqlLang('pl').') LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) diff --git a/classes/Meta.php b/classes/Meta.php index 73b45ef9e..860637101 100644 --- a/classes/Meta.php +++ b/classes/Meta.php @@ -95,16 +95,16 @@ class MetaCore extends ObjectModel ORDER BY page ASC'); } - static public function getMetasByIdLang($id_lang, Context $context = null) + static public function getMetasByIdLang($id_lang, Shop $shop = null) { - if (!$context) - $context = Context::getContext(); + if (!$shop) + $shop = Context::getContext()->shop; $sql = 'SELECT * FROM `'._DB_PREFIX_.'meta` m LEFT JOIN `'._DB_PREFIX_.'meta_lang` ml ON m.`id_meta` = ml.`id_meta` WHERE ml.`id_lang` = '.(int)$id_lang - .$context->shop->sqlLang('ml'). + .$shop->sqlLang('ml'). 'ORDER BY page ASC'; return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($sql); diff --git a/classes/Pack.php b/classes/Pack.php index 933049068..5556e6ce5 100644 --- a/classes/Pack.php +++ b/classes/Pack.php @@ -88,21 +88,20 @@ class PackCore extends Product public static function getItemTable($id_product, $id_lang, $full = false) { - $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' - SELECT p.*, pl.*, i.`id_image`, il.`legend`, t.`rate`, cl.`name` AS category_default, a.quantity AS pack_quantity - FROM `'._DB_PREFIX_.'pack` a - LEFT JOIN `'._DB_PREFIX_.'product` p ON p.id_product = a.id_product_item - LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.id_product = pl.id_product AND pl.`id_lang` = '.(int)($id_lang).') - LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) - LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)($id_lang).') - LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (p.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.(int)($id_lang).') - LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` - AND tr.`id_country` = '.(int)Context::getContext()->country->id.' - AND tr.`id_state` = 0) - LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`) - LEFT JOIN `'._DB_PREFIX_.'tax_lang` tl ON (t.`id_tax` = tl.`id_tax` AND tl.`id_lang` = '.(int)($id_lang).') - WHERE a.`id_product_pack` = '.(int)($id_product) - ); + $sql = 'SELECT p.*, pl.*, i.`id_image`, il.`legend`, t.`rate`, cl.`name` AS category_default, a.quantity AS pack_quantity + FROM `'._DB_PREFIX_.'pack` a + LEFT JOIN `'._DB_PREFIX_.'product` p ON p.id_product = a.id_product_item + LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.id_product = pl.id_product AND pl.`id_lang` = '.(int)$id_lang.') + LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) + LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.') + LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (p.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.(int)$id_lang.') + LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` + AND tr.`id_country` = '.(int)Context::getContext()->country->id.' + AND tr.`id_state` = 0) + LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`) + LEFT JOIN `'._DB_PREFIX_.'tax_lang` tl ON (t.`id_tax` = tl.`id_tax` AND tl.`id_lang` = '.(int)$id_lang.') + WHERE a.`id_product_pack` = '.(int)$id_product; + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($sql); if (!$full) return $result; diff --git a/classes/Product.php b/classes/Product.php index 0188d2d1d..efd8b421c 100644 --- a/classes/Product.php +++ b/classes/Product.php @@ -795,7 +795,7 @@ class ProductCore extends ObjectModel $sql = 'SELECT p.*, pl.* , t.`rate` AS tax_rate, m.`name` AS manufacturer_name, s.`name` AS supplier_name FROM `'._DB_PREFIX_.'product` p - '.$context->shop->sqlAsso('product', 'p', true).' + '.$context->shop->sqlAsso('product', 'p').' LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` '.$context->shop->sqlLang('pl').') LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` AND tr.`id_country` = '.(int)Context::getContext()->country->id.' @@ -822,7 +822,7 @@ class ProductCore extends ObjectModel $sql = 'SELECT p.`id_product`, pl.`name` FROM `'._DB_PREFIX_.'product` p - '.$context->shop->sqlAsso('product', 'p').' + '.$context->shop->sqlAsso('product', 'p', false).' LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` '.$context->shop->sqlLang('pl').') WHERE pl.`id_lang` = '.(int)($id_lang).' ORDER BY pl.`name`'; @@ -1368,7 +1368,7 @@ class ProductCore extends ObjectModel { $sql = 'SELECT COUNT(p.`id_product`) AS nb FROM `'._DB_PREFIX_.'product` p - '.$context->shop->sqlAsso('product', 'p', true).' + '.$context->shop->sqlAsso('product', 'p').' WHERE `active` = 1 AND DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AND p.`id_product` IN ( @@ -1384,7 +1384,7 @@ class ProductCore extends ObjectModel i.`id_image`, il.`legend`, t.`rate`, m.`name` AS manufacturer_name, DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new, (p.`price` * ((100 + (t.`rate`))/100)) AS orderprice, pa.id_product_attribute FROM `'._DB_PREFIX_.'product` p - '.$context->shop->sqlAsso('product', 'p', true).' + '.$context->shop->sqlAsso('product', 'p').' LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.$context->shop->sqlLang('pl').') LEFT OUTER JOIN `'._DB_PREFIX_.'product_attribute` pa ON (p.`id_product` = pa.`id_product` AND `default_on` = 1) LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) @@ -1451,7 +1451,7 @@ class ProductCore extends ObjectModel // Please keep 2 distinct queries because RAND() is an awful way to achieve this result $sql = 'SELECT p.id_product FROM `'._DB_PREFIX_.'product` p - '.$context->shop->sqlAsso('product', 'p', true).' + '.$context->shop->sqlAsso('product', 'p').' WHERE p.`active` = 1 AND p.`id_product` IN ('.implode(', ', $ids_product).') AND p.`id_product` IN ( @@ -1517,7 +1517,7 @@ class ProductCore extends ObjectModel { $sql = 'SELECT COUNT(DISTINCT p.`id_product`) AS nb FROM `'._DB_PREFIX_.'product` p - '.$context->shop->sqlAsso('product', 'p', true).' + '.$context->shop->sqlAsso('product', 'p').' WHERE p.`active` = 1 AND p.`show_price` = 1 '.((!$beginning AND !$ending) ? ' AND p.`id_product` IN('.((is_array($ids_product) AND sizeof($ids_product)) ? implode(', ', $ids_product) : 0).')' : '').' @@ -1535,7 +1535,7 @@ class ProductCore extends ObjectModel pl.`name`, i.`id_image`, il.`legend`, t.`rate`, m.`name` AS manufacturer_name, DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new FROM `'._DB_PREFIX_.'product` p - '.$context->shop->sqlAsso('product', 'p', true).' + '.$context->shop->sqlAsso('product', 'p').' '.Product::sqlStock('p', 0, false, $context).' LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.$context->shop->sqlLang('pl').') LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) @@ -1622,7 +1622,7 @@ class ProductCore extends ObjectModel $sql = 'SELECT i.`cover`, i.`id_image`, il.`legend` FROM `'._DB_PREFIX_.'image` i - '.$context->shop->sqlAsso('image', 'i', true).' + '.$context->shop->sqlAsso('image', 'i').' LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.') WHERE i.`id_product` = '.(int)$this->id.' ORDER BY `position`'; @@ -1641,7 +1641,7 @@ class ProductCore extends ObjectModel $sql = 'SELECT i.`id_image` FROM `'._DB_PREFIX_.'image` i - '.$context->shop->sqlAsso('image', 'i', true).' + '.$context->shop->sqlAsso('image', 'i').' WHERE i.`id_product` = '.(int)($id_product).' AND i.`cover` = 1'; return Db::getInstance()->getRow($sql); @@ -2342,7 +2342,7 @@ class ProductCore extends ObjectModel $sql = 'SELECT p.`id_product`, p.`reference`, pl.`name` FROM `'._DB_PREFIX_.'accessory` LEFT JOIN `'._DB_PREFIX_.'product` p ON (p.`id_product`= `id_product_2`) - '.$context->shop->sqlAsso('product', 'p', true).' + '.$context->shop->sqlAsso('product', 'p').' LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.$context->shop->sqlLang('pl').') WHERE `id_product_1` = '.(int)$id_product; return Db::getInstance()->ExecuteS($sql); @@ -2364,7 +2364,7 @@ class ProductCore extends ObjectModel INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new FROM `'._DB_PREFIX_.'accessory` LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = `id_product_2` - '.$context->shop->sqlAsso('product', 'p', true).' + '.$context->shop->sqlAsso('product', 'p').' LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.$context->shop->sqlLang('pl').') LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (p.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.(int)$id_lang.$context->shop->sqlLang('cl').') LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) @@ -2511,7 +2511,7 @@ class ProductCore extends ObjectModel il.`legend`, m.`name` AS manufacturer_name, tl.`name` AS tax_name FROM `'._DB_PREFIX_.'category_product` cp LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = cp.`id_product` - '.$context->shop->sqlAsso('product', 'p', true).' + '.$context->shop->sqlAsso('product', 'p').' LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.$context->shop->sqlLang('pl').') LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` AND tr.`id_country` = '.(int)Context::getContext()->country->id.' diff --git a/classes/ProductSale.php b/classes/ProductSale.php index 405128545..05516364f 100644 --- a/classes/ProductSale.php +++ b/classes/ProductSale.php @@ -51,7 +51,7 @@ class ProductSaleCore $sql = 'SELECT COUNT(ps.`id_product`) AS nb FROM `'._DB_PREFIX_.'product_sale` ps - '.$context->shop->sqlAsso('product', 'p').' + '.$context->shop->sqlAsso('product', 'p', false).' LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = ps.`id_product` WHERE p.`active` = 1'; return (int)Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($sql); @@ -85,7 +85,7 @@ class ProductSaleCore DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new FROM `'._DB_PREFIX_.'product_sale` ps LEFT JOIN `'._DB_PREFIX_.'product` p ON ps.`id_product` = p.`id_product` - '.$context->shop->sqlAsso('product', 'p').' + '.$context->shop->sqlAsso('product', 'p', false).' LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.$context->shop->sqlLang('pl').') LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.') @@ -133,7 +133,7 @@ class ProductSaleCore $sql = 'SELECT p.id_product, pl.`link_rewrite`, pl.`name`, pl.`description_short`, i.`id_image`, il.`legend`, ps.`quantity` AS sales, p.`ean13`, p.`upc`, cl.`link_rewrite` AS category FROM `'._DB_PREFIX_.'product_sale` ps LEFT JOIN `'._DB_PREFIX_.'product` p ON ps.`id_product` = p.`id_product` - '.$context->shop->sqlAsso('product', 'p', true).' + '.$context->shop->sqlAsso('product', 'p').' LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.$context->shop->sqlLang('pl').') LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.') diff --git a/classes/Referrer.php b/classes/Referrer.php index d882cb109..efc7a5f49 100644 --- a/classes/Referrer.php +++ b/classes/Referrer.php @@ -197,7 +197,7 @@ class ReferrerCore extends ObjectModel WHERE cu.date_add BETWEEN '.ModuleGraph::getDateBetween($employee).' '.$shop->sqlRestriction(false, 'rs').' '.$shop->sqlRestriction(false, 'c').' - '.$shop->sqlRestriction(true, 'cu').' + '.$shop->sqlRestriction(Shop::SHARE_CUSTOMER, 'cu').' AND cu.date_add > cs.date_add AND rc.id_referrer = '.(int)($this->id) .$where; @@ -232,7 +232,7 @@ class ReferrerCore extends ObjectModel WHERE oo.invoice_date BETWEEN '.ModuleGraph::getDateBetween($employee).' '.$shop->sqlRestriction(false, 'rs').' '.$shop->sqlRestriction(false, 'c').' - '.$shop->sqlRestriction(true, 'oo').' + '.$shop->sqlRestriction(Shop::SHARE_ORDER, 'oo').' AND oo.date_add > cs.date_add AND rc.id_referrer = '.(int)($this->id).' AND oo.valid = 1' @@ -249,7 +249,7 @@ class ReferrerCore extends ObjectModel $sql = 'SELECT COUNT(id_order) AS orders, SUM(total_paid_real / conversion_rate) AS sales FROM '._DB_PREFIX_.'orders WHERE id_order IN ('.implode($implode, ',').') - '.$shop->sqlRestriction(true).' + '.$shop->sqlRestriction(Shop::SHARE_ORDER).' AND valid = 1'; return Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($sql); } diff --git a/classes/Search.php b/classes/Search.php index d3a750670..eb315ef29 100644 --- a/classes/Search.php +++ b/classes/Search.php @@ -210,7 +210,7 @@ class SearchCore INNER JOIN `'._DB_PREFIX_.'category_product` cp ON cp.`id_category` = cg.`id_category` INNER JOIN `'._DB_PREFIX_.'category` c ON cp.`id_category` = c.`id_category` INNER JOIN `'._DB_PREFIX_.'product` p ON cp.`id_product` = p.`id_product` - '.$context->shop->sqlAsso('product', 'p').' + '.$context->shop->sqlAsso('product', 'p', false).' WHERE c.`active` = 1 AND p.`active` = 1 AND indexed = 1 @@ -553,7 +553,7 @@ class SearchCore { $sql = 'SELECT COUNT(DISTINCT pt.`id_product`) nb FROM `'._DB_PREFIX_.'product` p - '.$context->shop->sqlAsso('product', 'p', true).' + '.$context->shop->sqlAsso('product', 'p').' LEFT JOIN `'._DB_PREFIX_.'product_tag` pt ON (p.`id_product` = pt.`id_product`) LEFT JOIN `'._DB_PREFIX_.'tag` t ON (pt.`id_tag` = t.`id_tag` AND t.`id_lang` = '.(int)$id_lang.') LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_product` = p.`id_product`) @@ -570,7 +570,7 @@ class SearchCore DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 new FROM `'._DB_PREFIX_.'product` p INNER JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.$context->shop->sqlLang('pl').') - '.$context->shop->sqlAsso('product', 'p').' + '.$context->shop->sqlAsso('product', 'p', false).' LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.') LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` diff --git a/classes/Shop.php b/classes/Shop.php index 1d4720fd8..0b84057ba 100644 --- a/classes/Shop.php +++ b/classes/Shop.php @@ -94,6 +94,12 @@ class ShopCore extends ObjectModel const CONTEXT_SHOP = 1; const CONTEXT_GROUP = 2; const CONTEXT_ALL = 3; + + /** + * Some data can be shared between shops, like customers or orders + */ + const SHARE_CUSTOMER = 'share_customer'; + const SHARE_ORDER = 'share_order'; public function getFields() { @@ -332,10 +338,12 @@ class ShopCore extends ObjectModel if (self::$shops && !$refresh) return; - $sql = 'SELECT gs.id_group_shop, gs.name AS group_name, gs.share_datas, gs.share_stock, s.id_shop, s.name AS shop_name, s.id_theme, s.id_category, s.active + $sql = 'SELECT gs.*, s.*, gs.name AS group_name, s.name AS shop_name, s.active, su.domain, su.domain_ssl, su.uri FROM '._DB_PREFIX_.'group_shop gs LEFT JOIN '._DB_PREFIX_.'shop s - ON (s.id_group_shop = gs.id_group_shop) + ON s.id_group_shop = gs.id_group_shop + LEFT JOIN '._DB_PREFIX_.'shop_url su + ON s.id_shop = su.id_shop AND su.main = 1 WHERE s.deleted = 0 AND gs.deleted = 0 ORDER BY gs.name, s.name'; @@ -347,7 +355,8 @@ class ShopCore extends ObjectModel self::$shops[$row['id_group_shop']] = array( 'id' => $row['id_group_shop'], 'name' => $row['group_name'], - 'share_datas' => $row['share_datas'], + 'share_customer' => $row['share_customer'], + 'share_order' => $row['share_order'], 'share_stock' => $row['share_stock'], 'shops' => array(), ); @@ -358,6 +367,9 @@ class ShopCore extends ObjectModel 'name' => $row['shop_name'], 'id_theme' => $row['id_theme'], 'id_category' => $row['id_category'], + 'domain' => $row['domain'], + 'domain_ssl' => $row['domain_ssl'], + 'uri' => $row['uri'], 'active' => $row['active'], ); } @@ -386,6 +398,21 @@ class ShopCore extends ObjectModel } return $results; } + + /** + * Return some informations cached for one shop + * + * @param int $shopID + * @return array + */ + public static function getShop($shopID) + { + Shop::cacheShops(); + foreach (self::$shops as $groupID => $groupData) + if (array_key_exists($shopID, $groupData['shops'])) + return $groupData['shops'][$shopID]; + return false; + } /** * Return a shop ID from shop name @@ -427,16 +454,20 @@ class ShopCore extends ObjectModel } /** - * If the shop group has the option "share_datas" activated, get all shops ID of this group, else get current shop ID + * If the shop group has the option $type activated, get all shops ID of this group, else get current shop ID * * @param int $shopID + * @param int $type Shop::SHARE_CUSTOMER or Shop::SHARE_ORDER * @return array */ - public static function getSharedShops($shopID) + public static function getSharedShops($shopID, $type) { + if (!in_array($type, array(Shop::SHARE_CUSTOMER, Shop::SHARE_ORDER))) + die('Wrong argument ($type) in Shop::getSharedShops() method'); + Shop::cacheShops(); foreach (self::$shops as $groupData) - if (array_key_exists($shopID, $groupData['shops']) && $groupData['share_datas']) + if (array_key_exists($shopID, $groupData['shops']) && $groupData[$type]) return array_keys($groupData['shops']); return array($shopID); } @@ -444,7 +475,7 @@ class ShopCore extends ObjectModel /** * Get a list of ID concerned by the shop context (E.g. if context is shop group, get list of children shop ID) * - * @param bool $share If true and if $shopID is set, list shops with share data too + * @param int $share If false, dont check share datas from group. Else can take a Shop::SHARE_* constant value * @return array */ public function getListOfID($share = false) @@ -453,7 +484,7 @@ class ShopCore extends ObjectModel $shopGroupID = $this->getGroupID(); if ($shopID) - $list = (!$share) ? array($shopID) : Shop::getSharedShops($shopID); + $list = ($share) ? Shop::getSharedShops($shopID, $share) : array($shopID); else if ($shopGroupID) $list = Shop::getShops(true, $shopGroupID, true); else @@ -530,17 +561,7 @@ class ShopCore extends ObjectModel { return Shop::getContext('group'); } - - /** - * Get a list of ID concerned by the shop context (E.g. if context is shop group, get list of children shop ID) - * - * @return array - */ - public function getListFromContext() - { - return Shop::getListOfID(Context::getContext()); - } - + /** * Check in which type of shop context we are * @@ -555,17 +576,14 @@ class ShopCore extends ObjectModel return Shop::CONTEXT_GROUP; return Shop::CONTEXT_ALL; } - + /** - * Check if we are in "all" context + * Add an sql restriction for shops fields * - * @return bool + * @param int $share If false, dont check share datas from group. Else can take a Shop::SHARE_* constant value + * @param string $alias + * @param string $type shop|group_shop */ - public function inGlobalContext() - { - return $this->getContextType() == Shop::CONTEXT_ALL; - } - public function sqlRestriction($share = false, $alias = null, $type = 'shop') { if ($type != 'shop' && $type != 'group_shop') @@ -588,7 +606,7 @@ class ShopCore extends ObjectModel else { if ($shopID || $shopGroupID) - $restriction = ' AND '.$alias.'id_shop IN ('.implode(', ', Shop::getListOfID($shopID, $shopGroupID, $share)).')'; + $restriction = ' AND '.$alias.'id_shop IN ('.implode(', ', $this->getListOfID($share)).')'; } return $restriction; @@ -620,7 +638,7 @@ class ShopCore extends ObjectModel * @param Context $context * @return string */ - public function sqlAsso($table, $alias, $innerJoin = false) + public function sqlAsso($table, $alias, $innerJoin = true) { $tableAlias = ' asso_shop_'.$table; if (strpos($table, '.') !== false) @@ -632,7 +650,7 @@ class ShopCore extends ObjectModel $sql = (($innerJoin) ? ' INNER' : ' LEFT').' JOIN '._DB_PREFIX_.$table.'_shop '.$tableAlias.' ON '.$tableAlias.'.id_'.$table.' = '.$alias.'.id_'.$table.' - AND '.$tableAlias.'.id_shop IN('.implode(', ', Shop::getListOfID($this->getID(), $this->getGroupID())).') '; + AND '.$tableAlias.'.id_shop IN('.implode(', ', $this->getListOfID()).') '; return $sql; } diff --git a/classes/ShopUrl.php b/classes/ShopUrl.php index 3b05506e5..10b66af2f 100755 --- a/classes/ShopUrl.php +++ b/classes/ShopUrl.php @@ -63,7 +63,7 @@ class ShopUrlCore extends ObjectModel FROM '._DB_PREFIX_.'shop_url WHERE 1 '.($id_shop ? ' AND id_shop = '.(int)$id_shop : ''); - return Db::getInstance()->ExecuteS(); + return Db::getInstance()->ExecuteS($sql); } public function setMain() diff --git a/classes/Tools.php b/classes/Tools.php index fd9a4eead..166cf3292 100644 --- a/classes/Tools.php +++ b/classes/Tools.php @@ -1667,12 +1667,12 @@ class ToolsCore $tab['RewriteRule'][$domain]['content']['^'.ltrim($uri['uri'], '/').'content/category/([0-9]+)\-([a-zA-Z0-9-]*)'] = 'index.php?controller=cms&id_cms_category=$1&id_shop='.$uri['id_shop'].' [QSA,L]'; Language::loadLanguages(); - $default_meta = Meta::getMetasByIdLang((int)Configuration::get('PS_LANG_DEFAULT'), (int)$uri['id_shop']); + $default_meta = Meta::getMetasByIdLang((int)Configuration::get('PS_LANG_DEFAULT'), new Shop($uri['id_shop'])); if ($multilang) foreach (Language::getLanguages() as $language) { - foreach (Meta::getMetasByIdLang((int)$language['id_lang'], (int)$uri['id_shop']) as $key => $meta) + foreach (Meta::getMetasByIdLang((int)$language['id_lang'], new Shop($uri['id_shop'])) as $key => $meta) if (!empty($meta['url_rewrite']) AND Validate::isLinkRewrite($meta['url_rewrite'])) $tab['RewriteRule'][$domain]['content']['^'.ltrim($uri['uri'], '/').''.$language['iso_code'].'/'.$meta['url_rewrite'].'$'] = 'index.php?controller='.$meta['page'].'&isolang='.$language['iso_code'].'&id_shop='.$uri['id_shop'].' [QSA,L]'; elseif (array_key_exists($key, $default_meta) && $default_meta[$key]['url_rewrite'] != '') diff --git a/controllers/CartController.php b/controllers/CartController.php index 5eed288bd..121bf7249 100644 --- a/controllers/CartController.php +++ b/controllers/CartController.php @@ -114,7 +114,7 @@ class CartControllerCore extends FrontController /* Check the quantity availability */ if ($idProductAttribute AND is_numeric($idProductAttribute)) { - if (!$delete AND !$producToAdd->isAvailableWhenOutOfStock($producToAdd->out_of_stock) AND !Attribute::checkAttributeQty((int)$idProductAttribute, (int)$qty)) + if (!$delete AND !Product::isAvailableWhenOutOfStock($producToAdd->out_of_stock) AND !Attribute::checkAttributeQty((int)$idProductAttribute, (int)$qty)) if (Tools::getValue('ajax') == 'true') die('{"hasError" : true, "errors" : ["'.Tools::displayError('There is not enough product in stock.', false).'"]}'); else @@ -124,8 +124,8 @@ class CartControllerCore extends FrontController { $idProductAttribute = Product::getDefaultAttribute((int)$producToAdd->id, (int)$producToAdd->out_of_stock == 2 ? !(int)Configuration::get('PS_ORDER_OUT_OF_STOCK') : !(int)$producToAdd->out_of_stock); if (!$idProductAttribute) - Tools::redirectAdmin($link->getProductLink($producToAdd)); - elseif (!$delete AND !$producToAdd->isAvailableWhenOutOfStock($producToAdd->out_of_stock) AND !Attribute::checkAttributeQty((int)$idProductAttribute, (int)$qty)) + Tools::redirectAdmin($context->link->getProductLink($producToAdd)); + elseif (!$delete AND !Product::isAvailableWhenOutOfStock($producToAdd->out_of_stock) AND !Attribute::checkAttributeQty((int)$idProductAttribute, (int)$qty)) if (Tools::getValue('ajax') == 'true') die('{"hasError" : true, "errors" : ["'.Tools::displayError('There is not enough product in stock.', false).'"]}'); else diff --git a/install-dev/sql/db.sql b/install-dev/sql/db.sql index 5e20a97f2..a0a1b46f4 100644 --- a/install-dev/sql/db.sql +++ b/install-dev/sql/db.sql @@ -192,6 +192,7 @@ CREATE TABLE `PREFIX_cart_discount` ( CREATE TABLE `PREFIX_cart_product` ( `id_cart` int(10) unsigned NOT NULL, `id_product` int(10) unsigned NOT NULL, + `id_shop` int(10) unsigned NOT NULL DEFAULT '1', `id_product_attribute` int(10) unsigned default NULL, `quantity` int(10) unsigned NOT NULL default '0', `date_add` datetime NOT NULL, @@ -1694,7 +1695,8 @@ CREATE TABLE `PREFIX_address_format` ( CREATE TABLE IF NOT EXISTS `PREFIX_group_shop` ( `id_group_shop` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(64) CHARACTER SET utf8 NOT NULL, - `share_datas` TINYINT(1) NOT NULL, + `share_customer` TINYINT(1) NOT NULL, + `share_order` TINYINT(1) NOT NULL, `share_stock` TINYINT(1) NOT NULL, `active` tinyint(1) NOT NULL DEFAULT '1', `deleted` tinyint(1) NOT NULL DEFAULT '0', diff --git a/install-dev/sql/db_settings_extends.sql b/install-dev/sql/db_settings_extends.sql index b71f014d9..4e61ffeb8 100644 --- a/install-dev/sql/db_settings_extends.sql +++ b/install-dev/sql/db_settings_extends.sql @@ -169,8 +169,8 @@ INSERT INTO `PREFIX_guest` (`id_guest`, `id_operating_system`, `id_web_browser`, INSERT INTO `PREFIX_cart` (`id_cart`, `id_carrier`, `id_lang`, `id_address_delivery`, `id_address_invoice`, `id_currency`, `id_customer`, `id_guest`, `recyclable`, `gift`, `date_add`, `date_upd`) VALUES (1, 2, 2, 6, 6, 1, 1, 1, 1, 0, NOW(), NOW()); -INSERT INTO `PREFIX_cart_product` (`id_cart`, `id_product`, `id_product_attribute`, `quantity`, `date_add`) VALUES (1, 7, 23, 1, NOW()); -INSERT INTO `PREFIX_cart_product` (`id_cart`, `id_product`, `id_product_attribute`, `quantity`, `date_add`) VALUES (1, 9, 0, 1, NOW()); +INSERT INTO `PREFIX_cart_product` (`id_cart`, `id_product`, `id_shop`, `id_product_attribute`, `quantity`, `date_add`) VALUES (1, 7, 1, 23, 1, NOW()); +INSERT INTO `PREFIX_cart_product` (`id_cart`, `id_product`, `id_shop`, `id_product_attribute`, `quantity`, `date_add`) VALUES (1, 9, 1, 0, 1, NOW()); INSERT INTO `PREFIX_orders` (`id_order`, `id_carrier`, `id_lang`, `id_customer`, `id_cart`, `id_currency`, `id_address_delivery`, `id_address_invoice`, `secure_key`, `payment`, `module`, `recyclable`, `gift`, `gift_message`, `shipping_number`, `total_discounts`, `total_paid`, `total_paid_real`, `total_products`, `total_products_wt`, `total_shipping`, `total_wrapping`, `invoice_number`, `delivery_number`, `invoice_date`, `delivery_date`, `date_add`, `date_upd`) VALUES (1, 2, 2, 1, 1, 1, 2, 2, '47ce86627c1f3c792a80773c5d2deaf8', 'Chèque', 'cheque', 0, 0, '', '', '0.00', '625.98', '625.98', '516.72', '618.00', '7.98', '0.00', 0, 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', NOW(), NOW()); diff --git a/install-dev/sql/db_settings_lite.sql b/install-dev/sql/db_settings_lite.sql index a19ac45d9..3db4af89c 100644 --- a/install-dev/sql/db_settings_lite.sql +++ b/install-dev/sql/db_settings_lite.sql @@ -1167,9 +1167,8 @@ city State:name postcode Country:name phone' where `id_country`=21; -INSERT INTO `PREFIX_group_shop` (`id_group_shop`, `name`, `active`, `deleted`) VALUES (1, 'Default', 1, 0); +INSERT INTO `PREFIX_group_shop` (`id_group_shop`, `name`, `active`, `deleted`, `share_stock`, `share_customer`, `share_order`) VALUES (1, 'Default', 1, 0, 0, 0, 0); INSERT INTO `PREFIX_shop` (`id_shop`, `id_group_shop`, `name`, `id_category`, `id_theme`, `active`, `deleted`) VALUES (1, 1, 'Default', 1, 1, 1, 0); INSERT INTO `PREFIX_configuration` (`id_configuration`, `name`, `value`, `date_add`, `date_upd`) VALUES (NULL, 'PS_SHOP_DEFAULT', '1', NOW(), NOW()); -INSERT INTO `PREFIX_configuration` (`id_configuration`, `name`, `value`, `date_add`, `date_upd`) VALUES (NULL, 'PS_GROUP_SHOP_DEFAULT', '1', NOW(), NOW()); INSERT INTO `PREFIX_theme` (`id_theme`, `name`) VALUES (1, 'prestashop'); diff --git a/install-dev/sql/upgrade/1.5.0.0.sql b/install-dev/sql/upgrade/1.5.0.0.sql index 95131fd46..dc21a89fa 100755 --- a/install-dev/sql/upgrade/1.5.0.0.sql +++ b/install-dev/sql/upgrade/1.5.0.0.sql @@ -2,13 +2,14 @@ SET NAMES 'utf8'; CREATE TABLE IF NOT EXISTS `PREFIX_group_shop` ( `id_group_shop` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(64) CHARACTER SET utf8 NOT NULL, - `share_datas` TINYINT(1) NOT NULL, + `share_order` TINYINT(1) NOT NULL, + `share_stock` TINYINT(1) NOT NULL, `share_stock` TINYINT(1) NOT NULL, `active` tinyint(1) NOT NULL DEFAULT '1', `deleted` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`id_group_shop`) ) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; -INSERT INTO `PREFIX_group_shop` (`id_group_shop`, `name`, `active`) VALUES (1, 'Default', 1); +INSERT INTO `PREFIX_group_shop` (`id_group_shop`, `name`, `active`, `deleted`, `share_stock`, `share_customer`, `share_order`) VALUES (1, 'Default', 1, 0, 0, 0, 0); CREATE TABLE IF NOT EXISTS `PREFIX_shop` ( `id_shop` int(11) unsigned NOT NULL AUTO_INCREMENT, @@ -30,7 +31,6 @@ ALTER TABLE `PREFIX_configuration` DROP INDEX `name` , ADD INDEX `name` ( `name` ALTER TABLE `PREFIX_configuration` ADD INDEX (`id_group_shop`); ALTER TABLE `PREFIX_configuration` ADD INDEX (`id_shop`); INSERT INTO `PREFIX_configuration` (`id_configuration`, `name`, `value`, `date_add`, `date_upd`) VALUES (NULL, 'PS_SHOP_DEFAULT', '1', NOW(), NOW()); -INSERT INTO `PREFIX_configuration` (`id_configuration`, `name`, `value`, `date_add`, `date_upd`) VALUES (NULL, 'PS_GROUP_SHOP_DEFAULT', '1', NOW(), NOW()); CREATE TABLE IF NOT EXISTS `PREFIX_shop_url` ( `id_shop_url` int(11) unsigned NOT NULL AUTO_INCREMENT, @@ -302,4 +302,6 @@ ALTER TABLE `PREFIX_referrer` DROP `cache_visitors`, DROP `cache_visits`, DROP ` ALTER TABLE PREFIX_employee ADD `show_screencast` tinyint(1) unsigned NOT NULL default '1'; +ALTER TABLE `PREFIX_cart_product` ADD `id_shop` INT NOT NULL DEFAULT '1' AFTER `id_product`; + /* PHP:create_multistore(); */ diff --git a/modules/blockcart/blockcart-json.tpl b/modules/blockcart/blockcart-json.tpl index 67166004a..8f08a6f1f 100644 --- a/modules/blockcart/blockcart-json.tpl +++ b/modules/blockcart/blockcart-json.tpl @@ -32,7 +32,7 @@ {assign var='productAttributeId' value=$product.id_product_attribute} {ldelim} "id": {$product.id_product}, - "link": "{$link->getProductLink($product.id_product, $product.link_rewrite, $product.category)|addslashes|replace:'\\\'':'\''}", + "link": "{$link->getProductLink($product.id_product, $product.link_rewrite, $product.category, null, null, $product.id_shop)|addslashes|replace:'\\\'':'\''}", "quantity": {$product.cart_quantity}, "priceByLine": "{if $priceDisplay == $smarty.const.PS_TAX_EXC}{displayWtPrice|html_entity_decode:2:'UTF-8' p=$product.total}{else}{displayWtPrice|html_entity_decode:2:'UTF-8' p=$product.total_wt}{/if}", "name": "{$product.name|html_entity_decode:2:'UTF-8'|escape|truncate:15:'...':true}", diff --git a/modules/blockcart/blockcart.tpl b/modules/blockcart/blockcart.tpl index 4a146f625..cf8fe211c 100644 --- a/modules/blockcart/blockcart.tpl +++ b/modules/blockcart/blockcart.tpl @@ -62,14 +62,14 @@ var removingLinkText = '{l s='remove this product from my cart' mod='blockcart' {assign var='productAttributeId' value=$product.id_product_attribute}
{$product.cart_quantity}x - + {$product.name|truncate:13:'...'|escape:html:'UTF-8'} {if !isset($customizedDatas.$productId.$productAttributeId)} {/if} {if $priceDisplay == $smarty.const.PS_TAX_EXC}{displayWtPrice p="`$product.total`"}{else}{displayWtPrice p="`$product.total_wt`"}{/if}
{if isset($product.attributes_small)}
- {$product.attributes_small} + {$product.attributes_small} {/if} diff --git a/modules/blocklayered/blocklayered.php b/modules/blocklayered/blocklayered.php index 5ff74e022..62c648b7a 100644 --- a/modules/blocklayered/blocklayered.php +++ b/modules/blocklayered/blocklayered.php @@ -387,7 +387,7 @@ class BlockLayered extends Module p.ean13, pl.available_later, pl.description_short, pl.link_rewrite, pl.name, i.id_image, il.legend, m.name manufacturer_name, p.condition, p.id_manufacturer, stock.quantity, DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new FROM '._DB_PREFIX_.'product p - '.$context->shop->sqlAsso('product', 'p', true).' + '.$context->shop->sqlAsso('product', 'p').' LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (pl.id_product = p.id_product'.$context->shop->sqlLang('pl').') '.Product::sqlStock('p', 0).' LEFT JOIN '._DB_PREFIX_.'image i ON (i.id_product = p.id_product AND i.cover = 1) diff --git a/modules/blockmanufacturer/blockmanufacturer.php b/modules/blockmanufacturer/blockmanufacturer.php index 0c0d80130..2f3c1079f 100644 --- a/modules/blockmanufacturer/blockmanufacturer.php +++ b/modules/blockmanufacturer/blockmanufacturer.php @@ -57,7 +57,7 @@ class BlockManufacturer extends Module $context = Context::getContext(); $context->smarty->assign(array( - 'manufacturers' => Manufacturer::getManufacturers(false, 0, true, false, false, false, $this->context->shop->getGroupID()), + 'manufacturers' => Manufacturer::getManufacturers(), 'link' => $context->link, 'text_list' => Configuration::get('MANUFACTURER_DISPLAY_TEXT'), 'text_list_nb' => Configuration::get('MANUFACTURER_DISPLAY_TEXT_NB'), diff --git a/modules/statsbestproducts/statsbestproducts.php b/modules/statsbestproducts/statsbestproducts.php index 6c4c71af2..dcf7cdfbe 100644 --- a/modules/statsbestproducts/statsbestproducts.php +++ b/modules/statsbestproducts/statsbestproducts.php @@ -164,7 +164,7 @@ class StatsBestProducts extends ModuleGrid AND dr.time_end BETWEEN '.$dateBetween.' ) AS totalPageViewed FROM '._DB_PREFIX_.'product p - '.$this->context->shop->sqlAsso('product', 'p', true).' + '.$this->context->shop->sqlAsso('product', 'p').' LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (p.id_product = pl.id_product AND pl.id_lang = '.(int)($this->getLang()).') LEFT JOIN '._DB_PREFIX_.'order_detail od ON od.product_id = p.id_product LEFT JOIN '._DB_PREFIX_.'orders o ON od.id_order = o.id_order diff --git a/modules/statscatalog/statscatalog.php b/modules/statscatalog/statscatalog.php index cdf62a900..b16829325 100644 --- a/modules/statscatalog/statscatalog.php +++ b/modules/statscatalog/statscatalog.php @@ -147,7 +147,7 @@ class StatsCatalog extends Module $this->_join = ' LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_product` = p.`id_product`)'; $this->_where = ' AND cp.`id_category` = '.$id_category; } - $this->_join .= $this->context->shop->sqlAsso('product', 'p', true); + $this->_join .= $this->context->shop->sqlAsso('product', 'p'); $result1 = $this->getQuery1(true); $total = $result1['total']; diff --git a/modules/statscheckup/statscheckup.php b/modules/statscheckup/statscheckup.php index 2cfdf9095..0b588a049 100644 --- a/modules/statscheckup/statscheckup.php +++ b/modules/statscheckup/statscheckup.php @@ -82,7 +82,7 @@ class StatsCheckUp extends Module // Get languages $sql = 'SELECT l.* FROM '._DB_PREFIX_.'lang l' - .$this->context->shop->sqlAsso('lang', 'l', true); + .$this->context->shop->sqlAsso('lang', 'l'); $languages = $db->ExecuteS($sql); $arrayColors = array( @@ -109,7 +109,7 @@ class StatsCheckUp extends Module $sql = 'SELECT p.id_product, p.active, pl.name, ( SELECT COUNT(*) FROM '._DB_PREFIX_.'image i - '.$this->context->shop->sqlAsso('image', 'i', true).' + '.$this->context->shop->sqlAsso('image', 'i').' WHERE i.id_product = p.id_product ) as nbImages, ( SELECT SUM(od.product_quantity) @@ -125,7 +125,7 @@ class StatsCheckUp extends Module ), p.quantity) as stock FROM '._DB_PREFIX_.'product p LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (p.id_product = pl.id_product AND pl.id_lang = '.(int)$cookie->id_lang.') - '.$this->context->shop->sqlAsso('product', 'p', true).' + '.$this->context->shop->sqlAsso('product', 'p').' ORDER BY '.$orderBy; $result = $db->ExecuteS($sql); diff --git a/modules/statsforecast/statsforecast.php b/modules/statsforecast/statsforecast.php index e1cdeff5f..7b7e87938 100644 --- a/modules/statsforecast/statsforecast.php +++ b/modules/statsforecast/statsforecast.php @@ -512,7 +512,7 @@ class StatsForecast extends Module $langValues = ''; $sql = 'SELECT l.id_lang, l.iso_code FROM `'._DB_PREFIX_.'lang` l - '.$this->context->shop->sqlAsso('lang', 'l', true).' + '.$this->context->shop->sqlAsso('lang', 'l').' WHERE l.active = 1'; $languages = Db::getInstance()->ExecuteS($sql); foreach ($languages as $language) diff --git a/modules/statsproduct/statsproduct.php b/modules/statsproduct/statsproduct.php index 012dd725d..e691b4168 100644 --- a/modules/statsproduct/statsproduct.php +++ b/modules/statsproduct/statsproduct.php @@ -103,7 +103,7 @@ class StatsProduct extends ModuleGraph (SELECT SUM(pa.quantity) FROM '._DB_PREFIX_.'product_attribute pa WHERE pa.id_product = p.id_product), p.quantity) as quantity FROM `'._DB_PREFIX_.'product` p LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON p.`id_product` = pl.`id_product` - '.$this->context->shop->sqlAsso('product', 'p', true).' + '.$this->context->shop->sqlAsso('product', 'p').' '.(Tools::getValue('id_category') ? 'LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON p.`id_product` = cp.`id_product`' : '').' WHERE pl.`id_lang` = '.(int)($id_lang).' '.(Tools::getValue('id_category') ? 'AND cp.id_category = '.(int)(Tools::getValue('id_category')) : '').' diff --git a/modules/statsstock/statsstock.php b/modules/statsstock/statsstock.php index 02fbace74..cc468495d 100644 --- a/modules/statsstock/statsstock.php +++ b/modules/statsstock/statsstock.php @@ -75,7 +75,7 @@ class StatsStock extends Module FROM '._DB_PREFIX_.'product_attribute pa WHERE p.id_product = pa.id_product ), p.wholesale_price * p.quantity) as stockvalue FROM '._DB_PREFIX_.'product p - '.$this->context->shop->sqlAsso('product', 'p', true).' + '.$this->context->shop->sqlAsso('product', 'p').' INNER JOIN '._DB_PREFIX_.'product_lang pl ON (p.id_product = pl.id_product AND pl.id_lang = '.(int)$cookie->id_lang.') WHERE 1 = 1 '.$filter; diff --git a/themes/prestashop/shopping-cart.tpl b/themes/prestashop/shopping-cart.tpl index e7714dab4..1e1767aa5 100644 --- a/themes/prestashop/shopping-cart.tpl +++ b/themes/prestashop/shopping-cart.tpl @@ -57,7 +57,7 @@
{l s='Last added product'}
- {$product.name|escape:'htmlall':'UTF-8'} + {$product.name|escape:'htmlall':'UTF-8'}
{$product.name|escape:'htmlall':'UTF-8'}
{if isset($product.attributes) && $product.attributes}{$product.attributes|escape:'htmlall':'UTF-8'}{/if}