diff --git a/classes/Search.php b/classes/Search.php index 3241c3476..1ab992005 100644 --- a/classes/Search.php +++ b/classes/Search.php @@ -571,6 +571,14 @@ class SearchCore return true; } + public static function removeProductsSearchIndex($products) + { + if (count($products)) { + Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'search_index WHERE id_product IN ('.implode(',', $products).')'); + ObjectModel::updateMultishopTable('Product', array('indexed' => 0), 'a.id_product IN ('.implode(',', $products).')'); + } + } + protected static function setProductsAsIndexed(&$products) { if (count($products)) diff --git a/controllers/admin/AdminTagsController.php b/controllers/admin/AdminTagsController.php index 7e7ffcf41..57a158d37 100644 --- a/controllers/admin/AdminTagsController.php +++ b/controllers/admin/AdminTagsController.php @@ -77,8 +77,23 @@ class AdminTagsControllerCore extends AdminController public function postProcess() { if ($this->tabAccess['edit'] === '1' && Tools::getValue('submitAdd'.$this->table)) + { if (($id = (int)Tools::getValue($this->identifier)) && ($obj = new $this->className($id)) && Validate::isLoadedObject($obj)) + { + $previousProducts = $obj->getProducts(); + $removedProducts = array(); + + foreach ($previousProducts as $product) + if (!in_array($product['id_product'], $_POST['products'])) + $removedProducts[] = $product['id_product']; + + if (Configuration::get('PS_SEARCH_INDEXATION')) + Search::removeProductsSearchIndex($removedProducts); + $obj->setProducts($_POST['products']); + } + } + return parent::postProcess(); }