public function reindexSpecificSearch($id_search) { $objSearch = new AdvancedSearchClass($id_search, $this->_cookie->id_lang); $objSearch->updateCacheProduct(); $criterions_groups_indexed = AdvancedSearchClass::getCriterionsGroupsIndexed($id_search, $this->_cookie->id_lang, false); if (self::_isFilledArray($criterions_groups_indexed)) { foreach ($criterions_groups_indexed as $key2 => $row2) { AdvancedSearchClass::indexCriterionsGroup($row2['criterion_group_type'], $row2['id_criterion_group_linked'], $objSearch, $row2['visible'], false, true); } } AdvancedSearchClass::optimizedSearchTables($objSearch->id, true); unset($objSearch, $criterions_groups_indexed, $id_search); }
public static function indexCriterionsFromProduct($product, $add = false) { if (!Validate::isLoadedObject($product)) { return; } global $cookie; $advanced_searchs_id = AdvancedSearchClass::getSearchsId(false); foreach ($advanced_searchs_id as $key => $row) { $id_search = $row['id_search']; $objSearch = new AdvancedSearchClass($id_search, $cookie->id_lang); if (!self::getIdCacheProductFromIdProduct($id_search, $product->id)) { self::addProductToCache($id_search, $product->id); } elseif (!$add) { self::deleteCacheFromIdProduct($id_search, $product->id); } $criterions_groups_indexed = AdvancedSearchClass::getCriterionsGroupsIndexed($id_search, false, false); foreach ($criterions_groups_indexed as $key2 => $row2) { if ($row2['criterion_group_type'] == 'manufacturer' && $product->id_manufacturer) { self::indexCriterionsGroup($row2['criterion_group_type'], 0, $objSearch, $row2['visible'], false, true, $product->id, $product->id_manufacturer); } elseif ($row2['criterion_group_type'] == 'supplier' && $product->id_supplier) { self::indexCriterionsGroup($row2['criterion_group_type'], 0, $objSearch, $row2['visible'], false, true, $product->id, $product->id_supplier); } elseif ($row2['criterion_group_type'] == 'feature') { $features = self::getFeaturesFromProduct($product->id, $cookie->id_lang, $row2['id_criterion_group_linked']); foreach ($features as $feature) { self::indexCriterionsGroup($row2['criterion_group_type'], $feature['id_feature'], $objSearch, $row2['visible'], false, true, $product->id, false, $feature['value']); } } elseif ($row2['criterion_group_type'] == 'attribute') { $attributes = self::getAttributesFromProduct($product->id); foreach ($attributes as $attribute) { self::indexCriterionsGroup($row2['criterion_group_type'], $attribute['id_attribute_group'], $objSearch, $row2['visible'], false, true, $product->id, $attribute['id_attribute']); } } elseif ($row2['criterion_group_type'] == 'category') { $categories = self::getCategoriesFromProduct($product->id); if ($categories && sizeof($categories)) { $categories = self::getParentsCategoriesId($categories, array(0, 1)); foreach ($categories as $id_category) { if ($row2['id_criterion_group_linked'] && $row2['id_criterion_group_linked'] != self::getCategoryLevelDepth($id_category)) { continue; } self::indexCriterionsGroup($row2['criterion_group_type'], $row2['id_criterion_group_linked'], $objSearch, $row2['visible'], false, true, $product->id, $id_category); } } } elseif ($row2['criterion_group_type'] == 'price') { self::indexCriterionsGroup($row2['criterion_group_type'], 0, $objSearch, $row2['visible'], false, true, $product->id); } elseif ($row2['criterion_group_type'] == 'on_sale' && $product->on_sale) { self::indexCriterionsGroup($row2['criterion_group_type'], 0, $objSearch, $row2['visible'], false, true, $product->id, $product->on_sale); } elseif ($row2['criterion_group_type'] == 'available_for_order' && $product->available_for_order) { self::indexCriterionsGroup($row2['criterion_group_type'], 0, $objSearch, $row2['visible'], false, true, $product->id, $product->available_for_order); } elseif ($row2['criterion_group_type'] == 'online_only' && $product->online_only) { self::indexCriterionsGroup($row2['criterion_group_type'], 0, $objSearch, $row2['visible'], false, true, $product->id, $product->online_only); } elseif ($row2['criterion_group_type'] == 'stock' && $product->quantity > 0) { self::indexCriterionsGroup($row2['criterion_group_type'], 0, $objSearch, $row2['visible'], false, true, $product->id, 1); } elseif ($row2['criterion_group_type'] == 'weight' && $product->weight) { self::indexCriterionsGroup($row2['criterion_group_type'], 0, $objSearch, $row2['visible'], false, true, $product->id, false, $product->weight); } elseif ($row2['criterion_group_type'] == 'width' && $product->width) { self::indexCriterionsGroup($row2['criterion_group_type'], 0, $objSearch, $row2['visible'], false, true, $product->id, false, $product->width); } elseif ($row2['criterion_group_type'] == 'height' && $product->height) { self::indexCriterionsGroup($row2['criterion_group_type'], 0, $objSearch, $row2['visible'], false, true, $product->id, false, $product->height); } elseif ($row2['criterion_group_type'] == 'depth' && $product->depth) { self::indexCriterionsGroup($row2['criterion_group_type'], 0, $objSearch, $row2['visible'], false, true, $product->id, false, $product->depth); } elseif ($row2['criterion_group_type'] == 'condition' && $product->condition) { self::indexCriterionsGroup($row2['criterion_group_type'], 0, $objSearch, $row2['visible'], false, true, $product->id, false, $product->condition); } elseif (version_compare(_PS_VERSION_, '1.5.0.0', '>=') && $row2['criterion_group_type'] == 'pack' && class_exists('AdvancedPack')) { self::indexCriterionsGroup($row2['criterion_group_type'], 0, $objSearch, $row2['visible'], false, true, $product->id, AdvancedPack::isValidPack($product->id)); } } } return true; }