diff --git a/modules/crossselling/config.xml b/modules/crossselling/config.xml index 59e2ea5ab..8aed65a6b 100755 --- a/modules/crossselling/config.xml +++ b/modules/crossselling/config.xml @@ -1,12 +1,12 @@ - - crossselling - - - - - - 1 - 0 + + crossselling + + + + + + 1 + 0 - \ No newline at end of file + \ No newline at end of file diff --git a/modules/crossselling/crossselling.php b/modules/crossselling/crossselling.php index 99c7ae92c..31262888d 100755 --- a/modules/crossselling/crossselling.php +++ b/modules/crossselling/crossselling.php @@ -88,6 +88,7 @@ class CrossSelling extends Module { Configuration::updateValue('CROSSSELLING_DISPLAY_PRICE', (int)Tools::getValue('displayPrice')); Configuration::updateValue('CROSSSELLING_NBR', (int)Tools::getValue('productNbr')); + $this->_clearCache('crossselling.tpl'); $this->_html .= $this->displayConfirmation($this->l('Settings updated successfully')); } } diff --git a/modules/productscategory/config.xml b/modules/productscategory/config.xml index af48bb894..4b8faeec9 100755 --- a/modules/productscategory/config.xml +++ b/modules/productscategory/config.xml @@ -1,12 +1,12 @@ - - productscategory - - - - - - 1 - 0 + + productscategory + + + + + + 1 + 0 - \ No newline at end of file + \ No newline at end of file diff --git a/modules/productscategory/productscategory.php b/modules/productscategory/productscategory.php index 00d394e0c..fb1f74e36 100644 --- a/modules/productscategory/productscategory.php +++ b/modules/productscategory/productscategory.php @@ -34,7 +34,7 @@ class productsCategory extends Module public function __construct() { $this->name = 'productscategory'; - $this->version = '1.3'; + $this->version = '1.4'; $this->author = 'PrestaShop'; $this->tab = 'front_office_features'; $this->need_instance = 0; @@ -50,16 +50,22 @@ class productsCategory extends Module public function install() { - if (!parent::install() OR !$this->registerHook('productfooter') OR !$this->registerHook('header') OR !Configuration::updateValue('PRODUCTSCATEGORY_DISPLAY_PRICE', 0)) - return false; - return true; + Configuration::updateValue('PRODUCTSCATEGORY_DISPLAY_PRICE', 0); + $this->_clearCache('productscategory.tpl'); + return (parent::install() + && $this->registerHook('productfooter') + && $this->registerHook('header') + && $this->registerHook('addproduct') + && $this->registerHook('updateproduct') + && $this->registerHook('deleteproduct') + ); } public function uninstall() { - if (!parent::uninstall() OR !Configuration::deleteByName('PRODUCTSCATEGORY_DISPLAY_PRICE')) - return false; - return true; + Configuration::deleteByName('PRODUCTSCATEGORY_DISPLAY_PRICE'); + $this->_clearCache('productscategory.tpl'); + return parent::uninstall(); } public function getContent() @@ -70,6 +76,7 @@ class productsCategory extends Module elseif (Tools::isSubmit('submitCross')) { Configuration::updateValue('PRODUCTSCATEGORY_DISPLAY_PRICE', Tools::getValue('displayPrice')); + $this->_clearCache('productscategory.tpl'); $this->_html .= $this->displayConfirmation($this->l('Settings updated successfully')); } $this->_html .= ' @@ -100,75 +107,79 @@ class productsCategory extends Module public function hookProductFooter($params) { - $idProduct = (int)(Tools::getValue('id_product')); - $product = new Product((int)($idProduct)); - - /* If the visitor has came to this product by a category, use this one */ - if (isset($params['category']->id_category)) - $category = $params['category']; - /* Else, use the default product category */ - else - { - if (isset($product->id_category_default) AND $product->id_category_default > 1) - $category = New Category((int)($product->id_category_default)); - } + $id_product = (int)$params['product']->id; + $product = $params['product']; - if (!Validate::isLoadedObject($category) OR !$category->active) - return; + $cache_id = 'productscategory|'.$id_product.'|'.(isset($params['category']->id_category) ? (int)$params['category']->id_category : $product->id_category_default); - // Get infos - $categoryProducts = $category->getProducts($this->context->language->id, 1, 100); /* 100 products max. */ - $sizeOfCategoryProducts = (int)sizeof($categoryProducts); - $middlePosition = 0; - - // Remove current product from the list - if (is_array($categoryProducts) AND sizeof($categoryProducts)) + if (!$this->isCached('productscategory.tpl', $this->getCacheId($cache_id))) { - foreach ($categoryProducts AS $key => $categoryProduct) - if ($categoryProduct['id_product'] == $idProduct) - { - unset($categoryProducts[$key]); - break; - } + /* If the visitor has came to this product by a category, use this one */ + if (isset($params['category']->id_category)) + $category = $params['category']; + /* Else, use the default product category */ + else + { + if (isset($product->id_category_default) AND $product->id_category_default > 1) + $category = new Category((int)$product->id_category_default); + } + + if (!Validate::isLoadedObject($category) OR !$category->active) + return; - $taxes = Product::getTaxCalculationMethod(); - if (Configuration::get('PRODUCTSCATEGORY_DISPLAY_PRICE')) + // Get infos + $categoryProducts = $category->getProducts($this->context->language->id, 1, 100); /* 100 products max. */ + $sizeOfCategoryProducts = (int)sizeof($categoryProducts); + $middlePosition = 0; + + // Remove current product from the list + if (is_array($categoryProducts) AND sizeof($categoryProducts)) + { foreach ($categoryProducts AS $key => $categoryProduct) - if ($categoryProduct['id_product'] != $idProduct) + if ($categoryProduct['id_product'] == $id_product) { - if ($taxes == 0 OR $taxes == 2) - $categoryProducts[$key]['displayed_price'] = Product::getPriceStatic((int)$categoryProduct['id_product'], true, NULL, 2); - elseif ($taxes == 1) - $categoryProducts[$key]['displayed_price'] = Product::getPriceStatic((int)$categoryProduct['id_product'], false, NULL, 2); + unset($categoryProducts[$key]); + break; } - - // Get positions - $middlePosition = round($sizeOfCategoryProducts / 2, 0); - $productPosition = $this->getCurrentProduct($categoryProducts, (int)$idProduct); - - // Flip middle product with current product - if ($productPosition) - { - $tmp = $categoryProducts[$middlePosition-1]; - $categoryProducts[$middlePosition-1] = $categoryProducts[$productPosition]; - $categoryProducts[$productPosition] = $tmp; - } - - // If products tab higher than 30, slice it - if ($sizeOfCategoryProducts > 30) - { - $categoryProducts = array_slice($categoryProducts, $middlePosition - 15, 30, true); - $middlePosition = 15; - } - } - - // Display tpl - $this->smarty->assign(array( - 'categoryProducts' => $categoryProducts, - 'middlePosition' => (int)$middlePosition, - 'ProdDisplayPrice' => Configuration::get('PRODUCTSCATEGORY_DISPLAY_PRICE'))); - return $this->display(__FILE__, 'productscategory.tpl'); + $taxes = Product::getTaxCalculationMethod(); + if (Configuration::get('PRODUCTSCATEGORY_DISPLAY_PRICE')) + foreach ($categoryProducts AS $key => $categoryProduct) + if ($categoryProduct['id_product'] != $id_product) + { + if ($taxes == 0 OR $taxes == 2) + $categoryProducts[$key]['displayed_price'] = Product::getPriceStatic((int)$categoryProduct['id_product'], true, NULL, 2); + elseif ($taxes == 1) + $categoryProducts[$key]['displayed_price'] = Product::getPriceStatic((int)$categoryProduct['id_product'], false, NULL, 2); + } + + // Get positions + $middlePosition = round($sizeOfCategoryProducts / 2, 0); + $productPosition = $this->getCurrentProduct($categoryProducts, (int)$id_product); + + // Flip middle product with current product + if ($productPosition) + { + $tmp = $categoryProducts[$middlePosition-1]; + $categoryProducts[$middlePosition-1] = $categoryProducts[$productPosition]; + $categoryProducts[$productPosition] = $tmp; + } + + // If products tab higher than 30, slice it + if ($sizeOfCategoryProducts > 30) + { + $categoryProducts = array_slice($categoryProducts, $middlePosition - 15, 30, true); + $middlePosition = 15; + } + } + + // Display tpl + $this->smarty->assign(array( + 'categoryProducts' => $categoryProducts, + 'middlePosition' => (int)$middlePosition, + 'ProdDisplayPrice' => Configuration::get('PRODUCTSCATEGORY_DISPLAY_PRICE'))); + } + return $this->display(__FILE__, 'productscategory.tpl', $this->getCacheId($cache_id)); } public function hookHeader($params) @@ -177,4 +188,19 @@ class productsCategory extends Module $this->context->controller->addJS($this->_path.'productscategory.js'); $this->context->controller->addJqueryPlugin('serialScroll'); } + + public function hookAddProduct($params) + { + $this->_clearCache('productscategory.tpl'); + } + + public function hookUpdateProduct($params) + { + $this->_clearCache('productscategory.tpl'); + } + + public function hookDeleteProduct($params) + { + $this->_clearCache('productscategory.tpl'); + } } diff --git a/modules/productscategory/upgrade/install-1.4.php b/modules/productscategory/upgrade/install-1.4.php new file mode 100644 index 000000000..f20e47235 --- /dev/null +++ b/modules/productscategory/upgrade/install-1.4.php @@ -0,0 +1,9 @@ +registerHook('addproduct') && $object->registerHook('updateproduct') && $object->registerHook('deleteproduct')); +}