Search.php
2.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
class Search extends SearchCore
{
public static function indexation($full = false, $id_product = false)
{
$result = parent::indexation($full, $id_product);
if ($result) {
$shops = Shop::getShops(true, null, true);
$languages = Language::getLanguages(true);
$sql = 'SELECT m.`id_product`, m.`ean13` FROM ' . _DB_PREFIX_ . 'imaxmultiean_multiean m';
// Si se proporciona $id_product, solo indexamos ese producto
if ($id_product !== false) {
$sql .= ' WHERE m.`id_product` = ' . (int)$id_product;
} elseif (!$full) {
// Si no es una indexación completa y no se proporciona $id_product, indexamos solo los que faltan
$sql .= ' LEFT JOIN ' . _DB_PREFIX_ . 'search_word sw ON m.ean13 = sw.word WHERE sw.id_word IS NULL';
}
$productos = Db::getInstance()->executeS($sql);
foreach ($productos as $producto) {
$word = pSQL($producto['ean13']);
foreach ($languages as $lang) {
foreach ($shops as $shopId) {
// Insertar o actualizar la palabra en search_word
$sqlInsertWord = "
INSERT IGNORE INTO " . _DB_PREFIX_ . "search_word (id_word, id_lang, id_shop, word)
VALUES (NULL, '" . (int)$lang['id_lang'] . "', '" . (int)$shopId . "', '$word')
";
Db::getInstance()->execute($sqlInsertWord);
$id_word = Db::getInstance()->Insert_ID();
// Si la palabra fue insertada con éxito, proceder con la inserción o actualización en search_index
if ($id_word) {
$weight = Configuration::get('PS_SEARCH_WEIGHT_REF');
$idProduct = (int)$producto['id_product'];
$sqlInsertIndex = "
INSERT INTO " . _DB_PREFIX_ . "search_index (id_product, id_word, weight)
VALUES ('$idProduct', '$id_word', '$weight')
ON DUPLICATE KEY UPDATE weight = '$weight'
";
Db::getInstance()->execute($sqlInsertIndex);
}
}
}
}
}
return $result;
}
}