示例#1
0
 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);
 }
示例#2
0
 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;
 }