[*] Classes: Db->execute() now return always a boolean. Use Db->query() instead.

This commit is contained in:
rMalie
2011-12-06 15:41:34 +00:00
parent f7e573035e
commit ad45eeca37
17 changed files with 85 additions and 88 deletions
+1 -1
View File
@@ -243,7 +243,7 @@ class BackupCore
if (!in_array($schema[0]['Table'], $ignore_insert_table))
{
$data = Db::getInstance()->executeS('SELECT * FROM `' . $schema[0]['Table'] . '`', false);
$data = Db::getInstance()->query('SELECT * FROM `' . $schema[0]['Table'] . '`', false);
$sizeof = DB::getInstance()->NumRows();
$lines = explode("\n", $schema[0]['Create Table']);
+2 -2
View File
@@ -260,12 +260,12 @@ class CartRuleCore extends ObjectModel
return array();
$productRules = array();
$result = Db::getInstance()->ExecuteS('
$results = Db::getInstance()->ExecuteS('
SELECT *
FROM '._DB_PREFIX_.'cart_rule_product_rule pr
LEFT JOIN '._DB_PREFIX_.'cart_rule_product_rule_value prv ON pr.id_product_rule = prv.id_product_rule
WHERE pr.id_cart_rule = '.(int)$this->id, false);
while ($row = Db::getInstance()->nextRow($result))
foreach ($results as $row)
{
if (!isset($productRules[$row['id_product_rule']]))
$productRules[$row['id_product_rule']] = array('quantity' => $row['quantity'], 'type' => $row['type'], 'values' => array());
+23 -21
View File
@@ -62,18 +62,18 @@ class GroupReductionCore extends ObjectModel
public function delete()
{
$resource = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
$products = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT p.`id_product`
FROM `'._DB_PREFIX_.'product` p
WHERE p.`id_category_default` = '.(int)$this->id_category
, false);
);
while ($row = Db::getInstance()->nextRow($resource))
{
$query = 'DELETE FROM `'._DB_PREFIX_.'product_group_reduction_cache` WHERE `id_product` = '.(int)$row['id_product'];
if (Db::getInstance()->execute($query) === false)
return false;
}
$ids = array();
foreach ($products as $row)
$ids[] = $row['id_product'];
if ($ids)
Db::getInstance()->delete(_DB_PREFIX_.'product_group_reduction_cache', 'id_product IN ('.implode(', ', $ids).')');
return (parent::delete());
}
@@ -84,15 +84,15 @@ class GroupReductionCore extends ObjectModel
protected function _setCache()
{
$resource = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
$products = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT p.`id_product`
FROM `'._DB_PREFIX_.'product` p
WHERE p.`id_category_default` = '.(int)$this->id_category
, false);
);
$query = 'INSERT INTO `'._DB_PREFIX_.'product_group_reduction_cache` (`id_product`, `id_group`, `reduction`) VALUES ';
$updated = false;
while ($row = Db::getInstance()->nextRow($resource))
foreach ($products as $row)
{
$query .= '('.(int)$row['id_product'].', '.(int)$this->id_group.', '.(float)$this->reduction.'), ';
$updated = true;
@@ -105,21 +105,23 @@ class GroupReductionCore extends ObjectModel
protected function _updateCache()
{
$resource = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
$products = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT p.`id_product`
FROM `'._DB_PREFIX_.'product` p
WHERE p.`id_category_default` = '.(int)$this->id_category
, false);
while ($row = Db::getInstance()->nextRow($resource))
{
$query = 'UPDATE `'._DB_PREFIX_.'product_group_reduction_cache`
SET `reduction` = '.(float)$this->reduction.'
WHERE `id_product` = '.(int)$row['id_product'].' AND `id_group` = '.(int)$this->id_group;
if (Db::getInstance()->execute($query) === false)
return false;
}
return true;
$ids = array();
foreach ($products as $product)
$ids[] = $product['id_product'];
$result = true;
if ($ids)
$result &= Db::getInstance()->autoExecute(_DB_PREFIX_.'product_group_reduction_cache', array(
'reduction' => (float)$this->reduction,
), 'UPDATE', 'id_product IN('.implode(', ', $ids).') AND id_group = '.(int)$this->id_group);
return $result;
}
public static function getGroupReductions($id_group, $id_lang)
+3 -3
View File
@@ -220,11 +220,11 @@ class HookCore extends ObjectModel
$sql .= '
GROUP BY hm.id_hook, hm.id_module
ORDER BY hm.`position`';
$result = $db->executeS($sql, false);
$results = $db->executeS($sql);
self::$_hookModulesCache = array();
if ($result)
while ($row = $db->nextRow())
if ($results)
foreach ($results as $row)
{
$row['hook'] = strtolower($row['hook']);
if (!isset(self::$_hookModulesCache[$row['hook']]))
+3 -4
View File
@@ -3226,16 +3226,15 @@ class ProductCore extends ObjectModel
$sql = 'SELECT `display_filename`, `filename`, `date_add`, `date_expiration`, `nb_days_accessible`, `nb_downloadable`, `active`, `is_shareable`
FROM `'._DB_PREFIX_.'product_download`
WHERE `id_product` = '.(int)$id_product_old;
$resource = Db::getInstance()->execute($sql);
if (!Db::getInstance()->NumRows())
$results = Db::getInstance()->executeS($sql);
if (!$results)
return true;
$query = 'INSERT INTO `'._DB_PREFIX_.'product_download`
(`id_product`, `display_filename`, `filename`, `date_add`, `date_expiration`, `nb_days_accessible`, `nb_downloadable`, `active`, `is_shareable`)
VALUES';
while ($row = Db::getInstance()->nextRow($resource))
foreach ($results as $row)
$query .= ' ('.(int)$id_product_new.', \''.pSQL($row['display_filename']).'\', \''.pSQL($row['filename']).
'\', \''.pSQL($row['date_add']).'\', \''.pSQL($row['date_expiration']).'\', '.(int)$row['nb_days_accessible'].
', '.(int)$row['nb_downloadable'].', '.(int)$row['active'].'), '.(int)$row['is_shareable'].'),';
+7 -9
View File
@@ -219,16 +219,15 @@ class SearchCore
SELECT id_group FROM '._DB_PREFIX_.'customer_group
WHERE id_customer = '.(int)$id_customer.'
)');
$result = $db->executeS($sql, false);
$results = $db->executeS($sql);
$eligibleProducts = array();
while ($row = $db->nextRow($result))
foreach ($results as $row)
$eligibleProducts[] = $row['id_product'];
foreach ($intersectArray as $query)
{
$result = $db->executeS($query, false);
$eligibleProducts2 = array();
while ($row = $db->nextRow($result))
foreach ($db->executeS($query) as $row)
$eligibleProducts2[] = $row['id_product'];
$eligibleProducts = array_intersect($eligibleProducts, $eligibleProducts2);
@@ -418,19 +417,18 @@ class SearchCore
'features' => Configuration::get('PS_SEARCH_WEIGHT_FEATURE')
);
// Those are kind of global variables required to save the processed data in the database every X occurences, in order to avoid overloading MySQL
// Those are kind of global variables required to save the processed data in the database every X occurrences, in order to avoid overloading MySQL
$countWords = 0;
$countProducts = 0;
$queryArray3 = array();
$productsArray = array();
// Every indexed words are cached into a PHP array
$wordIdsByWord = array();
$wordIds = Db::getInstance()->executeS('
SELECT id_word, word, id_lang, id_shop
FROM '._DB_PREFIX_.'search_word', false);
SELECT id_word, word, id_lang, id_shop
FROM '._DB_PREFIX_.'search_word');
$wordIdsByWord = array();
while ($wordId = $db->nextRow($wordIds))
foreach ($wordIds as $wordId)
{
if (!isset($wordIdsByWord[$wordId['id_shop']][$wordId['id_lang']]))
$wordIdsByWord[$wordId['id_shop']][$wordId['id_lang']] = array();
+3 -3
View File
@@ -286,7 +286,7 @@ class SpecificPriceCore extends ObjectModel
if (!self::isFeatureActive())
return array();
$resource = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
$results = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT `id_product`
FROM `'._DB_PREFIX_.'specific_price`
WHERE `id_shop` IN(0, '.(int)$id_shop.') AND
@@ -301,9 +301,9 @@ class SpecificPriceCore extends ObjectModel
)
AND
`reduction` > 0
', false);
');
$ids_product = array();
while ($row = DB::getInstance()->nextRow($resource))
foreach ($results as $row)
$ids_product[] = (int)$row['id_product'];
return $ids_product;
}
+11 -11
View File
@@ -362,14 +362,14 @@ abstract class DbCore
* @param bool $use_cache Use cache or not
* @return bool
*/
public function delete($table, $where = false, $limit = false, $use_cache = 1)
public function delete($table, $where = false, $limit = false, $use_cache = true)
{
$this->result = false;
$sql = 'DELETE FROM `'.bqSQL($table).'`'.($where ? ' WHERE '.$where : '').($limit ? ' LIMIT '.(int)$limit : '');
$res = $this->query($sql);
if ($use_cache && $this->is_cache_enabled)
Cache::getInstance()->deleteQuery($sql);
return $res;
return (bool)$res;
}
/**
@@ -377,30 +377,30 @@ abstract class DbCore
*
* @param string $sql
* @param bool $use_cache
* @return mixed
* @return bool
*/
public function execute($sql, $use_cache = 1)
public function execute($sql, $use_cache = true)
{
$sql = (string)$sql;
$this->result = $this->query($sql);
if ($use_cache && $this->is_cache_enabled)
Cache::getInstance()->deleteQuery($sql);
return $this->result;
return (bool)$this->result;
}
/**
* ExecuteS return the result of $sql as array
*
* @param string $sql query to execute
* @param boolean $array return an array instead of a mysql_result object
* @param boolean $array return an array instead of a mysql_result object (deprecated since 1.5.0, use query method instead)
* @param int $use_cache if query has been already executed, use its result
* @return array or result object
*/
public function executeS($sql, $array = true, $use_cache = 1)
public function executeS($sql, $array = true, $use_cache = true)
{
$sql = (string)$sql;
// This methode must be used only with queries which display results
// This method must be used only with queries which display results
if (!preg_match('#^\s*(select|show|explain|describe)\s#i', $sql))
{
if (defined('_PS_MODE_DEV_') && _PS_MODE_DEV_)
@@ -441,7 +441,7 @@ abstract class DbCore
* @param int $use_cache find it in cache first
* @return array associative array of (field=>value)
*/
public function getRow($sql, $use_cache = 1)
public function getRow($sql, $use_cache = true)
{
$sql = (string)$sql;
$sql .= ' LIMIT 1';
@@ -471,7 +471,7 @@ abstract class DbCore
* @param int $use_cache
* @return void
*/
public function getValue($sql, $use_cache = 1)
public function getValue($sql, $use_cache = true)
{
$sql = (string)$sql;
if (!$result = $this->getRow($sql, $use_cache))
@@ -504,7 +504,7 @@ abstract class DbCore
* @param string $sql
* @param bool $use_cache
*/
protected function q($sql, $use_cache = 1)
protected function q($sql, $use_cache = true)
{
global $webservice_call;
+1 -1
View File
@@ -294,7 +294,7 @@ class StockManagerCore implements StockManagerInterface
if ($left_quantity_to_check <= 0)
continue;
$resource = Db::getInstance(_PS_USE_SQL_SLAVE_)->execute('
$resource = Db::getInstance(_PS_USE_SQL_SLAVE_)->query('
SELECT sm.`id_stock_mvt`, sm.`date_add`, sm.`physical_quantity`,
IF ((sm2.`physical_quantity` is null), sm.`physical_quantity`, (sm.`physical_quantity` - SUM(sm2.`physical_quantity`))) as qty
FROM `'._DB_PREFIX_.'stock_mvt` sm
@@ -166,14 +166,14 @@ class AdminCartRulesControllerCore extends AdminController
{
case 'attributes':
$attributes = array('selected' => array(), 'unselected' => array());
$result = Db::getInstance()->ExecuteS('
$results = Db::getInstance()->ExecuteS('
SELECT CONCAT(agl.name, " - ", al.name) as name, a.id_attribute as id
FROM '._DB_PREFIX_.'attribute_group_lang agl
LEFT JOIN '._DB_PREFIX_.'attribute a ON a.id_attribute_group = agl.id_attribute_group
LEFT JOIN '._DB_PREFIX_.'attribute_lang al ON (a.id_attribute = al.id_attribute AND al.id_lang = '.(int)Context::getContext()->language->id.')
WHERE agl.id_lang = '.(int)Context::getContext()->language->id.'
ORDER BY agl.name, al.name', false);
while ($row = Db::getInstance()->nextRow($result))
ORDER BY agl.name, al.name');
foreach ($results as $row)
$attributes[in_array($row['id'], $selected) ? 'selected' : 'unselected'][] = $row;
Context::getContext()->smarty->assign('product_rule_itemlist', $attributes);
$choose_content = Context::getContext()->smarty->fetch('cart_rules/product_rule_itemlist.tpl');
@@ -182,12 +182,12 @@ class AdminCartRulesControllerCore extends AdminController
case 'products':
// Todo: Consider optimization
$products = array('selected' => array(), 'unselected' => array());
$result = Db::getInstance()->ExecuteS('
$results = Db::getInstance()->ExecuteS('
SELECT name, id_product as id
FROM '._DB_PREFIX_.'product_lang pl
WHERE id_lang = '.(int)Context::getContext()->language->id.'
ORDER BY name', false);
while ($row = Db::getInstance()->nextRow($result))
ORDER BY name');
foreach ($results as $row)
$products[in_array($row['id'], $selected) ? 'selected' : 'unselected'][] = $row;
Context::getContext()->smarty->assign('product_rule_itemlist', $products);
$choose_content = Context::getContext()->smarty->fetch('cart_rules/product_rule_itemlist.tpl');
@@ -196,12 +196,12 @@ class AdminCartRulesControllerCore extends AdminController
case 'categories':
// Todo: Consider optimization
$categories = array('selected' => array(), 'unselected' => array());
$result = Db::getInstance()->ExecuteS('
$results = Db::getInstance()->ExecuteS('
SELECT name, id_category as id
FROM '._DB_PREFIX_.'category_lang pl
WHERE id_lang = '.(int)Context::getContext()->language->id.'
ORDER BY name', false);
while ($row = Db::getInstance()->nextRow($result))
ORDER BY name');
foreach ($results as $row)
$categories[in_array($row['id'], $selected) ? 'selected' : 'unselected'][] = $row;
Context::getContext()->smarty->assign('product_rule_itemlist', $categories);
$choose_content = Context::getContext()->smarty->fetch('cart_rules/product_rule_itemlist.tpl');
@@ -1102,7 +1102,7 @@ class AdminSupplyOrdersControllerCore extends AdminController
$query->from('supply_order_detail');
$query->where('id_supply_order = '.(int)$id);
$query->orderBy('id_supply_order_detail DESC');
$resource = Db::getInstance()->execute($query);
$resource = Db::getInstance()->query($query);
// gets details
while ($row = Db::getInstance()->nextRow($resource))
echo sprintf("%s\n", implode(';', array_map(array('CSVCore', 'wrap'), $row)));
+4 -4
View File
@@ -666,17 +666,17 @@ abstract class Module
if (!isset(self::$_hookModulesCache))
{
$db = Db::getInstance(_PS_USE_SQL_SLAVE_);
$result = $db->executeS('
$results = $db->executeS('
SELECT h.`name` as hook, m.`id_module`, h.`id_hook`, m.`name` as module, h.`live_edit`
FROM `'._DB_PREFIX_.'module` m
LEFT JOIN `'._DB_PREFIX_.'hook_module` hm ON hm.`id_module` = m.`id_module`
LEFT JOIN `'._DB_PREFIX_.'hook` h ON hm.`id_hook` = h.`id_hook`
AND m.`active` = 1
ORDER BY hm.`position`', false);
ORDER BY hm.`position`');
self::$_hookModulesCache = array();
if ($result)
while ($row = $db->nextRow())
if ($results)
foreach ($results as $row)
{
$row['hook'] = strtolower($row['hook']);
if (!isset(self::$_hookModulesCache[$row['hook']]))
+2 -4
View File
@@ -32,10 +32,8 @@ function convert_product_price()
$taxRates = array();
foreach ($taxes as $data)
$taxRates[$data['id_tax']] = (float)($data['rate']) / 100;
$resource = DB::getInstance()->executeS('SELECT `id_product`, `price`, `id_tax` FROM `'._DB_PREFIX_.'product`', false);
if (!$resource)
die(Db::getInstance()->getMsgError());
while ($row = DB::getInstance()->nextRow($resource))
$results = DB::getInstance()->executeS('SELECT `id_product`, `price`, `id_tax` FROM `'._DB_PREFIX_.'product`');
foreach ($results as $row)
if ($row['id_tax'])
{
$price = $row['price'] * (1 + $taxRates[$row['id_tax']]);
+10 -10
View File
@@ -2082,19 +2082,19 @@ class BlockLayered extends Module
AND psi.`id_currency` = '.$idCurrency;
}
$allProductsOut = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
$allProductsOut = Db::getInstance(_PS_USE_SQL_SLAVE_)->query('
SELECT p.`id_product` id_product
FROM `'._DB_PREFIX_.'product` p
'.$priceFilterQueryOut.'
'.$queryFiltersFrom.'
WHERE 1 '.$queryFiltersWhere.' GROUP BY id_product', false);
WHERE 1 '.$queryFiltersWhere.' GROUP BY id_product');
$allProductsIn = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
$allProductsIn = Db::getInstance(_PS_USE_SQL_SLAVE_)->query('
SELECT p.`id_product` id_product
FROM `'._DB_PREFIX_.'product` p
'.$priceFilterQueryIn.'
'.$queryFiltersFrom.'
WHERE 1 '.$queryFiltersWhere.' GROUP BY id_product', false);
WHERE 1 '.$queryFiltersWhere.' GROUP BY id_product');
$productIdList = array();
@@ -3304,7 +3304,7 @@ class BlockLayered extends Module
$nCategories = array();
$doneCategories = array();
$attributeGroups = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
$attributeGroups = Db::getInstance(_PS_USE_SQL_SLAVE_)->query('
SELECT a.id_attribute, a.id_attribute_group
FROM '._DB_PREFIX_.'attribute a
LEFT JOIN '._DB_PREFIX_.'product_attribute_combination pac ON (pac.id_attribute = a.id_attribute)
@@ -3313,13 +3313,13 @@ class BlockLayered extends Module
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)
WHERE c.active = 1'.(count($categoriesIds) ? ' AND cp.id_category IN ('.implode(',', $categoriesIds).')' : '').' AND p.active = 1'.(count($productsIds) ? '
AND p.id_product IN ('.implode(',', $productsIds).')' : ''), false);
AND p.id_product IN ('.implode(',', $productsIds).')' : ''));
$attributeGroupsById = array();
while ($row = $db->nextRow($attributeGroups))
$attributeGroupsById[(int)$row['id_attribute']] = (int)$row['id_attribute_group'];
$features = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
$features = Db::getInstance(_PS_USE_SQL_SLAVE_)->query('
SELECT fv.id_feature_value, fv.id_feature
FROM '._DB_PREFIX_.'feature_value fv
LEFT JOIN '._DB_PREFIX_.'feature_product fp ON (fp.id_feature_value = fv.id_feature_value)
@@ -3327,13 +3327,13 @@ class BlockLayered extends Module
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)
WHERE (fv.custom IS NULL OR fv.custom = 0) AND c.active = 1'.(count($categoriesIds) ? ' AND cp.id_category IN ('.implode(',', $categoriesIds).')' : '').'
AND p.active = 1'.(count($productsIds) ? ' AND p.id_product IN ('.implode(',', $productsIds).')' : ''), false);
AND p.active = 1'.(count($productsIds) ? ' AND p.id_product IN ('.implode(',', $productsIds).')' : ''));
$featuresById = array();
while ($row = $db->nextRow($features))
$featuresById[(int)$row['id_feature_value']] = (int)$row['id_feature'];
$result = $db->ExecuteS('
$result = $db->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
FROM '._DB_PREFIX_.'product p
LEFT JOIN '._DB_PREFIX_.'category_product cp ON (cp.id_product = p.id_product)
@@ -3344,7 +3344,7 @@ class BlockLayered extends Module
LEFT JOIN '._DB_PREFIX_.'product_attribute_combination pac ON (pac.id_product_attribute = pa.id_product_attribute)
WHERE c.active = 1'.(count($categoriesIds) ? ' AND cp.id_category IN ('.implode(',', $categoriesIds).')' : '').' AND p.active = 1'.(count($productsIds) ? '
AND p.id_product IN ('.implode(',', $productsIds).')' : '').' AND (fv.custom IS NULL OR fv.custom = 0)
GROUP BY p.id_product', false);
GROUP BY p.id_product');
while ($product = $db->nextRow($result))
{
+1 -1
View File
@@ -63,7 +63,7 @@ class StatsEquipment extends ModuleGraph
LEFT JOIN `'._DB_PREFIX_.'guest` g ON g.`id_guest` = c.`id_guest`
WHERE c.`date_add` BETWEEN '.ModuleGraph::getDateBetween().'
'.$this->sqlShopRestriction(false, 'c');
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql, false);
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->query($sql);
$calcArray = array(
'jsOK' => 0,
+3 -3
View File
@@ -122,7 +122,7 @@ class StatsForecast extends Module
'.$this->sqlShopRestriction(Shop::SHARE_ORDER, 'o').'
GROUP BY '.$dateFromGInvoice.'
ORDER BY fix_date';
$result = $db->executeS($sql, false);
$result = $db->query($sql);
while ($row = $db->nextRow($result))
$dataTable[$row['fix_date']] = $row;
@@ -159,7 +159,7 @@ class StatsForecast extends Module
WHERE c.date_add BETWEEN '.ModuleGraph::getDateBetween().'
'.$this->sqlShopRestriction(false, 'c').'
GROUP BY '.$dateFromGAdd;
$visits = Db::getInstance()->executeS($sql, false);
$visits = Db::getInstance()->query($sql);
while ($row = $db->nextRow($visits))
$visitArray[$row['fix_date']] = $row['visits'];
@@ -172,7 +172,7 @@ class StatsForecast extends Module
AND o.invoice_date BETWEEN '.ModuleGraph::getDateBetween()
.$this->sqlShopRestriction(Shop::SHARE_ORDER, 'o').'
GROUP BY '.$dateFromGInvoice;
$discounts = Db::getInstance()->executeS($sql, false);
$discounts = Db::getInstance()->query($sql);
while ($row = $db->nextRow($discounts))
$discountArray[$row['fix_date']] = $row['total'];*/
+1 -1
View File
@@ -59,7 +59,7 @@ class StatsOrigin extends ModuleGraph
WHERE 1
'.$this->sqlShopRestriction().'
AND date_add BETWEEN '.$dateBetween;
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql, false);
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->query($sql);
$websites = array($directLink => 0);
while ($row = Db::getInstance(_PS_USE_SQL_SLAVE_)->nextRow($result))
{