[-] Project : #PSCFI-519 - Blocklayered installation optimization
// Blocklayered: Adding missing prefix on SQL request
This commit is contained in:
1 parent
0542781b1e
commit
000b044e81
4 files changed
+25
-12
No files matched your search
@@ -0,0 +1,2 @@
|
|||||||
|
SET NAMES 'utf8';
|
||||||
|
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
SET NAMES 'utf8';
|
||||||
|
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
SET NAMES 'utf8';
|
||||||
|
|
||||||
|
ALTER TABLE `PREFIX_feature_product` ADD INDEX `id_product`(`id_product`);
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
*
|
*
|
||||||
* @author PrestaShop SA <contact@prestashop.com>
|
* @author PrestaShop SA <contact@prestashop.com>
|
||||||
* @copyright 2007-2012 PrestaShop SA
|
* @copyright 2007-2012 PrestaShop SA
|
||||||
* @version Release: $Revision: 13512 $
|
* @version Release: $Revision: 14437 $
|
||||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||||
* International Registred Trademark & Property of PrestaShop SA
|
* International Registred Trademark & Property of PrestaShop SA
|
||||||
*/
|
*/
|
||||||
@@ -76,14 +76,14 @@ class BlockLayered extends Module
|
|||||||
|
|
||||||
$products_count = Db::getInstance()->getValue('SELECT COUNT(*) FROM `'._DB_PREFIX_.'product`');
|
$products_count = Db::getInstance()->getValue('SELECT COUNT(*) FROM `'._DB_PREFIX_.'product`');
|
||||||
|
|
||||||
if ($products_count < 10000) // Lock price indexation if too many products
|
if ($products_count < 20000) // Lock template filter creation if too many products
|
||||||
$this->rebuildLayeredCache();
|
$this->rebuildLayeredCache();
|
||||||
self::installPriceIndexTable();
|
self::installPriceIndexTable();
|
||||||
$this->installFriendlyUrlTable();
|
$this->installFriendlyUrlTable();
|
||||||
$this->installIndexableAttributeTable();
|
$this->installIndexableAttributeTable();
|
||||||
$this->installProductAttributeTable();
|
$this->installProductAttributeTable();
|
||||||
|
|
||||||
if ($products_count < 10000) // Lock indexation if too many products
|
if ($products_count < 5000) // Lock indexation if too many products
|
||||||
{
|
{
|
||||||
$this->indexUrl();
|
$this->indexUrl();
|
||||||
$this->indexAttribute();
|
$this->indexAttribute();
|
||||||
@@ -1422,7 +1422,7 @@ class BlockLayered extends Module
|
|||||||
Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'layered_filter_shop WHERE `id_layered_filter` = '.(int)$id_layered_filter);
|
Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'layered_filter_shop WHERE `id_layered_filter` = '.(int)$id_layered_filter);
|
||||||
if (isset($assos))
|
if (isset($assos))
|
||||||
foreach ($assos as $asso)
|
foreach ($assos as $asso)
|
||||||
Db::getInstance()->execute('INSERT INTO '._DB_PREFIX_.'layered_filter_shop (`id_layered_filter`, `id_shop`)
|
Db::getInstance()->execute('INSERT INTO '._DB_PREFIX_.'layered_filter_shop (`id_layered_filter`, `id_shop`)
|
||||||
VALUES('.$id_layered_filter.', '.(int)$asso['id_shop'].')');
|
VALUES('.$id_layered_filter.', '.(int)$asso['id_shop'].')');
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3902,7 +3902,10 @@ class BlockLayered extends Module
|
|||||||
$features_by_id[(int)$row['id_feature_value']] = (int)$row['id_feature'];
|
$features_by_id[(int)$row['id_feature_value']] = (int)$row['id_feature'];
|
||||||
|
|
||||||
$result = self::query('
|
$result = self::query('
|
||||||
SELECT p.id_product, GROUP_CONCAT(DISTINCT fv.id_feature_value) features, GROUP_CONCAT(DISTINCT cp.id_category) categories, GROUP_CONCAT(DISTINCT pac.id_attribute) attributes
|
SELECT p.id_product,
|
||||||
|
GROUP_CONCAT(DISTINCT fv.id_feature_value) features,
|
||||||
|
GROUP_CONCAT(DISTINCT cp.id_category) categories,
|
||||||
|
GROUP_CONCAT(DISTINCT pac.id_attribute) attributes
|
||||||
FROM '._DB_PREFIX_.'product p
|
FROM '._DB_PREFIX_.'product p
|
||||||
LEFT JOIN '._DB_PREFIX_.'category_product cp ON (cp.id_product = p.id_product)
|
LEFT JOIN '._DB_PREFIX_.'category_product cp ON (cp.id_product = p.id_product)
|
||||||
LEFT JOIN '._DB_PREFIX_.'category c ON (c.id_category = cp.id_category)
|
LEFT JOIN '._DB_PREFIX_.'category c ON (c.id_category = cp.id_category)
|
||||||
@@ -3914,6 +3917,12 @@ class BlockLayered extends Module
|
|||||||
AND p.id_product IN ('.implode(',', $products_ids).')' : '').' AND (fv.custom IS NULL OR fv.custom = 0)
|
AND p.id_product IN ('.implode(',', $products_ids).')' : '').' AND (fv.custom IS NULL OR fv.custom = 0)
|
||||||
GROUP BY p.id_product');
|
GROUP BY p.id_product');
|
||||||
|
|
||||||
|
|
||||||
|
if (version_compare(_PS_VERSION_,'1.5','>'))
|
||||||
|
$shop_list = Shop::getShops(false, null, true);
|
||||||
|
else
|
||||||
|
$shop_list = array(0);
|
||||||
|
|
||||||
$to_insert = false;
|
$to_insert = false;
|
||||||
while ($product = $db->nextRow($result))
|
while ($product = $db->nextRow($result))
|
||||||
{
|
{
|
||||||
@@ -3924,15 +3933,11 @@ class BlockLayered extends Module
|
|||||||
$c = array_flip(explode(',', $product['categories']));
|
$c = array_flip(explode(',', $product['categories']));
|
||||||
if (!empty($product['features']))
|
if (!empty($product['features']))
|
||||||
$f = array_flip(explode(',', $product['features']));
|
$f = array_flip(explode(',', $product['features']));
|
||||||
|
|
||||||
if (version_compare(_PS_VERSION_,'1.5','>'))
|
|
||||||
$shop_list = Shop::getShops(false, null, true);
|
|
||||||
else
|
|
||||||
$shop_list = array(0);
|
|
||||||
|
|
||||||
$filter_data['shop_list'] = $shop_list;
|
$filter_data['shop_list'] = $shop_list;
|
||||||
|
|
||||||
foreach ($shop_list as $id_shop)
|
foreach ($shop_list as $id_shop)
|
||||||
|
{
|
||||||
foreach ($c as $id_category => $category)
|
foreach ($c as $id_category => $category)
|
||||||
{
|
{
|
||||||
if (!in_array($id_category, $filter_data['categories']))
|
if (!in_array($id_category, $filter_data['categories']))
|
||||||
@@ -3991,6 +3996,7 @@ class BlockLayered extends Module
|
|||||||
$to_insert = true;
|
$to_insert = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if ($to_insert)
|
if ($to_insert)
|
||||||
{
|
{
|
||||||
@@ -4002,7 +4008,7 @@ class BlockLayered extends Module
|
|||||||
$last_id = Db::getInstance()->Insert_ID();
|
$last_id = Db::getInstance()->Insert_ID();
|
||||||
Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'layered_filter_shop WHERE `id_layered_filter` = '.$last_id);
|
Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'layered_filter_shop WHERE `id_layered_filter` = '.$last_id);
|
||||||
foreach ($shop_list as $id_shop)
|
foreach ($shop_list as $id_shop)
|
||||||
Db::getInstance()->execute('INSERT INTO layered_filter_shop (`id_layered_filter`, `id_shop`)
|
Db::getInstance()->execute('INSERT INTO '._DB_PREFIX_.'layered_filter_shop (`id_layered_filter`, `id_shop`)
|
||||||
VALUES('.$last_id.', '.(int)$id_shop.')');
|
VALUES('.$last_id.', '.(int)$id_shop.')');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user