[*] Classes : Db::autoExecute() call are now replaced by Db::insert() or Db::update()

This commit is contained in:
rMalie
2012-01-23 17:41:02 +00:00
parent 08c7b79a27
commit cc841b6969
29 changed files with 251 additions and 235 deletions
+1 -1
View File
@@ -787,7 +787,7 @@ abstract class AdminTabCore
foreach ($category as $categ_id => $categ)
if ($categ_id != 1)
$rowList[] = array('id_category' => $categ_id, 'id_group' => $object->id);
Db::getInstance()->autoExecute(_DB_PREFIX_.'category_group', $rowList, 'INSERT');
Db::getInstance()->insert('category_group', $rowList);
}
// Save and stay on same form
if (Tools::isSubmit('submitAdd'.$this->table.'AndStay'))
+6 -10
View File
@@ -693,14 +693,10 @@ class CartCore extends ObjectModel
public function addCartRule($id_cart_rule)
{
return Db::getInstance()->AutoExecute(
_DB_PREFIX_.'cart_cart_rule',
array(
'id_cart_rule' => (int)$id_cart_rule,
'id_cart' => (int)$this->id
),
'INSERT'
);
return Db::getInstance()->insert('cart_cart_rule', array(
'id_cart_rule' => (int)$id_cart_rule,
'id_cart' => (int)$this->id
));
}
public function containsProduct($id_product, $id_product_attribute = 0, $id_customization = false, $id_address_delivery = 0)
@@ -849,7 +845,7 @@ class CartCore extends ObjectModel
if ((int)$quantity < $minimal_quantity)
return -1;
$result_add = Db::getInstance()->AutoExecute(_DB_PREFIX_.'cart_product', array(
$result_add = Db::getInstance()->insert('cart_product', array(
'id_product' => (int)$id_product,
'id_product_attribute' => (int)$id_product_attribute,
'id_cart' => (int)$this->id,
@@ -857,7 +853,7 @@ class CartCore extends ObjectModel
'id_shop' => $shop->getID(true),
'quantity' => (int)$quantity,
'date_add' => date('Y-m-d H:i:s')
), 'INSERT');
));
if (!$result_add)
return false;
+1 -1
View File
@@ -987,7 +987,7 @@ class CategoryCore extends ObjectModel
foreach ($groups as $group)
{
$row = array('id_category' => (int)$this->id, 'id_group' => (int)$group);
Db::getInstance()->AutoExecute(_DB_PREFIX_.'category_group', $row, 'INSERT');
Db::getInstance()->insert('category_group', $row);
}
}
+10 -10
View File
@@ -290,10 +290,10 @@ class ConfigurationCore extends ObjectModel
if (!$lang)
{
// Update config not linked to lang
$result &= Db::getInstance()->AutoExecute(_DB_PREFIX_.'configuration', array(
$result &= Db::getInstance()->update('configuration', array(
'value' => pSQL($value, $html),
'date_upd' => date('Y-m-d H:i:s'),
), 'UPDATE', '`name` = \''.pSQL($key).'\''.Configuration::sqlRestriction($shopGroupID, $shopID), true, true);
), '`name` = \''.pSQL($key).'\''.Configuration::sqlRestriction($shopGroupID, $shopID), true, true);
}
else
{
@@ -330,12 +330,12 @@ class ConfigurationCore extends ObjectModel
if ($lang)
{
$result &= Db::getInstance()->autoExecute(_DB_PREFIX_.'configuration_lang', array(
$result &= Db::getInstance()->insert('configuration_lang', array(
'id_configuration' => $configID,
'id_lang' => $lang,
'value' => pSQL($value, $html),
'date_upd' => date('Y-m-d H:i:s'),
), 'INSERT');
));
}
}
@@ -346,12 +346,12 @@ class ConfigurationCore extends ObjectModel
}
/**
* Delete a configuration key in database (with or without language management)
*
* @param string $key Key to delete
* @return boolean Deletion result
*/
static public function deleteByName($key)
* Delete a configuration key in database (with or without language management)
*
* @param string $key Key to delete
* @return boolean Deletion result
*/
public static function deleteByName($key)
{
if (!Validate::isConfigName($key))
return false;
+5 -9
View File
@@ -92,15 +92,11 @@ class ConnectionCore extends ObjectModel
// The ending time will be updated by an ajax request when the guest will close the page
$time_start = date('Y-m-d H:i:s');
Db::getInstance()->AutoExecute(
_DB_PREFIX_.'connections_page',
array(
'id_connections' => (int)$cookie->id_connections,
'id_page' => (int)$id_page,
'time_start' => $time_start
),
'INSERT'
);
Db::getInstance()->insert('connections_page', array(
'id_connections' => (int)$cookie->id_connections,
'id_page' => (int)$id_page,
'time_start' => $time_start
));
// This array is serialized and used by the ajax request to identify the page
return array(
+1 -1
View File
@@ -535,7 +535,7 @@ class CustomerCore extends ObjectModel
foreach ($groups as $group)
{
$row = array('id_customer' => (int)$this->id, 'id_group' => (int)$group);
Db::getInstance()->AutoExecute(_DB_PREFIX_.'customer_group', $row, 'INSERT');
Db::getInstance()->insert('customer_group', $row);
}
}
+3 -4
View File
@@ -161,11 +161,10 @@ class FeatureCore extends ObjectModel
WHERE `'.$this->def['primary'].'` = '.(int)$this->id.'
AND `id_lang` = '.(int)$field['id_lang'];
$mode = Db::getInstance()->getRow($sql);
$result &= (!$mode) ? Db::getInstance()->AutoExecute(_DB_PREFIX_.$this->def['table'].'_lang', $field, 'INSERT') :
Db::getInstance()->AutoExecute(
_DB_PREFIX_.$this->def['table'].'_lang',
$result &= (!$mode) ? Db::getInstance()->insert($this->def['table'].'_lang', $field) :
Db::getInstance()->update(
$this->def['table'].'_lang',
$field,
'UPDATE',
'`'.$this->def['primary'].'` = '.(int)$this->id.' AND `id_lang` = '.(int)$field['id_lang']
);
}
+2 -2
View File
@@ -113,9 +113,9 @@ class GroupReductionCore extends ObjectModel
$result = true;
if ($ids)
$result &= Db::getInstance()->autoExecute(_DB_PREFIX_.'product_group_reduction_cache', array(
$result &= Db::getInstance()->update('product_group_reduction_cache', array(
'reduction' => (float)$this->reduction,
), 'UPDATE', 'id_product IN('.implode(', ', $ids).') AND id_group = '.(int)$this->id_group);
), 'id_product IN('.implode(', ', $ids).') AND id_group = '.(int)$this->id_group);
return $result;
}
+1 -6
View File
@@ -106,12 +106,7 @@ class ImageCore extends ObjectModel
foreach ($result as $row)
{
$row['position'] = $i++;
Db::getInstance()->AutoExecute(
_DB_PREFIX_.$this->def['table'],
$row,
'UPDATE',
'`id_image` = '.(int)$row['id_image'], 1
);
Db::getInstance()->update($this->def['table'], $row, '`id_image` = '.(int)$row['id_image'], 1);
}
return true;
+6 -6
View File
@@ -215,7 +215,7 @@ abstract class ModuleCore
}
// Install module and retrieve the installation id
$result = Db::getInstance()->autoExecute(_DB_PREFIX_.$this->table, array('name' => $this->name, 'active' => 1, 'version' => $this->version), 'INSERT');
$result = Db::getInstance()->insert($this->table, array('name' => $this->name, 'active' => 1, 'version' => $this->version));
if (!$result)
{
$this->_errors[] = $this->l('Technical error : PrestaShop could not installed this module.');
@@ -500,10 +500,10 @@ abstract class ModuleCore
// Enable module in the shop where it is not enabled yet
foreach ($list as $id)
if (!in_array($id, $items))
Db::getInstance()->autoExecute(_DB_PREFIX_.'module_shop', array(
Db::getInstance()->insert('module_shop', array(
'id_module' => $this->id,
'id_shop' => $id,
), 'INSERT');
));
return true;
}
@@ -630,12 +630,12 @@ abstract class ModuleCore
$position = 0;
// Register module in hook
$return &= Db::getInstance()->autoExecute(_DB_PREFIX_.'hook_module', array(
$return &= Db::getInstance()->insert('hook_module', array(
'id_module' => (int)$this->id,
'id_hook' => (int)$id_hook,
'id_shop' => (int)$shopID,
'position' => (int)($position + 1),
), 'INSERT');
));
}
return $return;
@@ -713,7 +713,7 @@ abstract class ModuleCore
'id_shop' => (int)$shopID,
'file_name' => pSQL($except),
);
$result = Db::getInstance()->autoExecute(_DB_PREFIX_.'hook_module_exceptions', $insertException, 'INSERT');
$result = Db::getInstance()->insert('hook_module_exceptions', $insertException);
if (!$result)
return false;
}
+12 -12
View File
@@ -383,9 +383,9 @@ abstract class ObjectModelCore
// Database insertion
if ($null_values)
$result = Db::getInstance()->autoExecuteWithNullValues(_DB_PREFIX_.$this->def['table'], $this->getFields(), 'INSERT');
$result = Db::getInstance()->insert($this->def['table'], $this->getFields(), true);
else
$result = Db::getInstance()->autoExecute(_DB_PREFIX_.$this->def['table'], $this->getFields(), 'INSERT');
$result = Db::getInstance()->insert($this->def['table'], $this->getFields());
if (!$result)
return false;
@@ -412,11 +412,11 @@ abstract class ObjectModelCore
foreach ($shops as $id_shop)
{
$field['id_shop'] = (int)$id_shop;
$result &= Db::getInstance()->AutoExecute(_DB_PREFIX_.$this->def['table'].'_lang', $field, 'INSERT');
$result &= Db::getInstance()->insert($this->def['table'].'_lang', $field);
}
}
else
$result &= Db::getInstance()->AutoExecute(_DB_PREFIX_.$this->def['table'].'_lang', $field, 'INSERT');
$result &= Db::getInstance()->insert($this->def['table'].'_lang', $field);
}
}
@@ -457,9 +457,9 @@ abstract class ObjectModelCore
// Database update
if ($null_values)
$result = Db::getInstance()->autoExecuteWithNullValues(_DB_PREFIX_.$this->def['table'], $this->getFields(), 'UPDATE', '`'.pSQL($this->def['primary']).'` = '.(int)($this->id));
$result = Db::getInstance()->update($this->def['table'], $this->getFields(), '`'.pSQL($this->def['primary']).'` = '.(int)$this->id, 0, true);
else
$result = Db::getInstance()->autoExecute(_DB_PREFIX_.$this->def['table'], $this->getFields(), 'UPDATE', '`'.pSQL($this->def['primary']).'` = '.(int)($this->id));
$result = Db::getInstance()->update($this->def['table'], $this->getFields(), '`'.pSQL($this->def['primary']).'` = '.(int)$this->id);
if (!$result)
return false;
@@ -487,9 +487,9 @@ abstract class ObjectModelCore
.' AND id_shop = '.$field['id_shop'];
if (Db::getInstance()->getValue('SELECT COUNT(*) FROM '.pSQL(_DB_PREFIX_.$this->def['table']).'_lang WHERE '.$where))
$result &= Db::getInstance()->AutoExecute(_DB_PREFIX_.$this->def['table'].'_lang', $field, 'UPDATE', $where);
$result &= Db::getInstance()->update($this->def['table'].'_lang', $field, $where);
else
$result &= Db::getInstance()->AutoExecute(_DB_PREFIX_.$this->def['table'].'_lang', $field, 'INSERT');
$result &= Db::getInstance()->insert($this->def['table'].'_lang', $field);
}
}
// If this table is not linked to multishop system ...
@@ -498,9 +498,9 @@ abstract class ObjectModelCore
$where = pSQL($this->def['primary']).' = '.(int)$this->id
.' AND id_lang = '.(int)$field['id_lang'];
if (Db::getInstance()->getValue('SELECT COUNT(*) FROM '.pSQL(_DB_PREFIX_.$this->def['table']).'_lang WHERE '.$where))
$result &= Db::getInstance()->AutoExecute(_DB_PREFIX_.$this->def['table'].'_lang', $field, 'UPDATE', $where);
$result &= Db::getInstance()->update($this->def['table'].'_lang', $field, $where);
else
$result &= Db::getInstance()->AutoExecute(_DB_PREFIX_.$this->def['table'].'_lang', $field, 'INSERT');
$result &= Db::getInstance()->insert($this->def['table'].'_lang', $field, 'INSERT');
}
}
}
@@ -977,11 +977,11 @@ abstract class ObjectModelCore
if (!is_array($fields))
return false;
if (!Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'required_field WHERE object_name = \''.pSQL(get_class($this)).'\''))
if (!Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'required_field WHERE object_name = \''.get_class($this).'\''))
return false;
foreach ($fields AS $field)
if (!Db::getInstance()->AutoExecute(_DB_PREFIX_.'required_field', array('object_name' => pSQL(get_class($this)), 'field_name' => pSQL($field)), 'INSERT'))
if (!Db::getInstance()->insert('required_field', array('object_name' => get_class($this), 'field_name' => pSQL($field))))
return false;
return true;
}
+1 -1
View File
@@ -190,7 +190,7 @@ class PackCore extends Product
public static function addItem($id_product, $id_item, $qty)
{
return Db::getInstance()->execute('UPDATE '._DB_PREFIX_.'product SET cache_is_pack = 1 WHERE id_product = '.(int)($id_product).' LIMIT 1') &&
Db::getInstance()->AutoExecute(_DB_PREFIX_.'pack', array('id_product_pack' => (int)($id_product), 'id_product_item' => (int)($id_item), 'quantity' => (int)($qty)), 'INSERT') &&
Db::getInstance()->insert('pack', array('id_product_pack' => (int)$id_product, 'id_product_item' => (int)$id_item, 'quantity' => (int)$qty)) &&
Configuration::updateGlobalValue('PS_PACK_FEATURE_ACTIVE', '1');
}
+5 -5
View File
@@ -80,7 +80,7 @@ class PageCore extends ObjectModel
if ($result['id_page'])
return $result['id_page'];
Db::getInstance()->autoExecuteWithNullValues(_DB_PREFIX_.'page', $insertData, 'INSERT');
Db::getInstance()->insert('page', $insertData, true);
return Db::getInstance()->Insert_ID();
}
@@ -97,9 +97,9 @@ class PageCore extends ObjectModel
if ($value = Db::getInstance()->getValue($sql))
return $value;
Db::getInstance()->autoExecute(_DB_PREFIX_.'page_type', array(
Db::getInstance()->insert('page_type', array(
'name' => $name,
), 'INSERT');
));
return Db::getInstance()->Insert_ID();
}
@@ -118,12 +118,12 @@ class PageCore extends ObjectModel
// If no one has seen the page in this date range, it is added
if (Db::getInstance()->Affected_Rows() == 0)
Db::getInstance()->autoExecute(_DB_PREFIX_.'page_viewed', array(
Db::getInstance()->insert('page_viewed', array(
'id_date_range' => (int)$id_date_range,
'id_page' => (int)$id_page,
'counter' => 1,
'id_shop' => (int)$context->shop->getID(),
'id_group_shop' => (int)$context->shop->getGroupID(),
), 'INSERT');
));
}
}
+15 -23
View File
@@ -2102,7 +2102,7 @@ class ProductCore extends ObjectModel
AND id_shop = '.(int)$this->id_shop
);
Db::getInstance()->AutoExecute(_DB_PREFIX_.'product_carrier', $data, 'INSERT');
Db::getInstance()->insert('product_carrier', $data);
}
/**
@@ -2913,14 +2913,10 @@ class ProductCore extends ObjectModel
public function changeAccessories($accessories_id)
{
foreach ($accessories_id as $id_product_2)
Db::getInstance()->AutoExecute(
_DB_PREFIX_.'accessory',
array(
'id_product_1' => (int)$this->id,
'id_product_2' => (int)$id_product_2
),
'INSERT'
);
Db::getInstance()->insert('accessory', array(
'id_product_1' => (int)$this->id,
'id_product_2' => (int)$id_product_2
));
}
/**
@@ -2929,7 +2925,7 @@ class ProductCore extends ObjectModel
public function addFeaturesCustomToDB($id_value, $lang, $cust)
{
$row = array('id_feature_value' => (int)$id_value, 'id_lang' => (int)$lang, 'value' => pSQL($cust));
return Db::getInstance()->autoExecute(_DB_PREFIX_.'feature_value_lang', $row, 'INSERT');
return Db::getInstance()->insert('feature_value_lang', $row);
}
public function addFeaturesToDB($id_feature, $id_value, $cust = 0)
@@ -2937,11 +2933,11 @@ class ProductCore extends ObjectModel
if ($cust)
{
$row = array('id_feature' => (int)$id_feature, 'custom' => 1);
Db::getInstance()->autoExecute(_DB_PREFIX_.'feature_value', $row, 'INSERT');
Db::getInstance()->insert('feature_value', $row);
$id_value = Db::getInstance()->Insert_ID();
}
$row = array('id_feature' => (int)$id_feature, 'id_product' => (int)$this->id, 'id_feature_value' => (int)$id_value);
Db::getInstance()->autoExecute(_DB_PREFIX_.'feature_product', $row, 'INSERT');
Db::getInstance()->insert('feature_product', $row);
if ($id_value)
return ($id_value);
}
@@ -3104,7 +3100,7 @@ class ProductCore extends ObjectModel
$row['id_product'] = $id_product_new;
unset($row['id_product_attribute']);
$return &= Db::getInstance()->AutoExecute(_DB_PREFIX_.'product_attribute', $row, 'INSERT');
$return &= Db::getInstance()->insert('product_attribute', $row);
$id_product_attribute_new = (int)Db::getInstance()->Insert_ID();
if ($result_images = Product::_getAttributeImageAssociations($id_product_attribute_old))
@@ -3115,7 +3111,7 @@ class ProductCore extends ObjectModel
foreach ($result2 as $row2)
{
$row2['id_product_attribute'] = $id_product_attribute_new;
$return &= Db::getInstance()->AutoExecute(_DB_PREFIX_.'product_attribute_combination', $row2, 'INSERT');
$return &= Db::getInstance()->insert('product_attribute_combination', $row2);
}
}
return !$return ? false : $combination_images;
@@ -3151,7 +3147,7 @@ class ProductCore extends ObjectModel
$data = array(
'id_product_1' => (int)$id_product_new,
'id_product_2' => (int)$row['id_product_2']);
$return &= Db::getInstance()->AutoExecute(_DB_PREFIX_.'accessory', $data, 'INSERT');
$return &= Db::getInstance()->insert('accessory', $data);
}
return $return;
}
@@ -3216,7 +3212,7 @@ class ProductCore extends ObjectModel
{
$old_id_feature_value = $result2['id_feature_value'];
unset($result2['id_feature_value']);
$return &= Db::getInstance()->AutoExecute(_DB_PREFIX_.'feature_value', $result2, 'INSERT');
$return &= Db::getInstance()->insert('feature_value', $result2);
$max_fv = Db::getInstance()->getRow('
SELECT MAX(`id_feature_value`) AS nb
FROM `'._DB_PREFIX_.'feature_value`');
@@ -3230,12 +3226,12 @@ class ProductCore extends ObjectModel
WHERE `id_feature_value` = '.(int)$old_id_feature_value.'
AND `id_lang` = '.(int)$language['id_lang']);
$result3['id_feature_value'] = $new_id_feature_value;
$return &= Db::getInstance()->AutoExecute(_DB_PREFIX_.'feature_value_lang', $result3, 'INSERT');
$return &= Db::getInstance()->insert('feature_value_lang', $result3);
}
$row['id_feature_value'] = $new_id_feature_value;
}
$row['id_product'] = $id_product_new;
$return &= Db::getInstance()->AutoExecute(_DB_PREFIX_.'feature_product', $row, 'INSERT');
$return &= Db::getInstance()->insert('feature_product', $row);
}
return $return;
}
@@ -3301,11 +3297,7 @@ class ProductCore extends ObjectModel
unset($customization_field['id_customization_field']);
if (!Db::getInstance()->AutoExecute(
_DB_PREFIX_.'customization_field',
$customization_field,
'INSERT'
)
if (!Db::getInstance()->insert('customization_field', $customization_field)
|| !$customization_field_id = Db::getInstance()->Insert_ID())
return false;
+2 -2
View File
@@ -271,7 +271,7 @@ class ReferrerCore extends ObjectModel
$registrations = $referrer->getRegistrations(null, $employee, $shop);
$stats_sales = $referrer->getStatsSales(null, $employee, $shop);
Db::getInstance()->autoExecute(_DB_PREFIX_.'referrer_shop', array(
Db::getInstance()->update('referrer_shop', array(
'cache_visitors' => $stats_visits['uniqs'],
'cache_visits' => $stats_visits['visits'],
'cache_pages' => $stats_visits['pages'],
@@ -280,7 +280,7 @@ class ReferrerCore extends ObjectModel
'cache_sales' => number_format($stats_sales['sales'], 2, '.', ''),
'cache_reg_rate' => $stats_visits['uniqs'] ? $registrations / $stats_visits['uniqs'] : 0,
'cache_order_rate' => $stats_visits['uniqs'] ? $stats_sales['orders'] / $stats_visits['uniqs'] : 0,
), 'UPDATE', 'id_referrer = '.$referrer->id.' AND id_shop = '.$shop_id);
), 'id_referrer = '.$referrer->id.' AND id_shop = '.$shop_id);
}
}
+2 -2
View File
@@ -139,7 +139,7 @@ class SceneCore extends ObjectModel
'id_category' => (int)$category,
);
}
return Db::getInstance()->autoExecute(_DB_PREFIX_.'scene_category', $data, 'INSERT');
return Db::getInstance()->insert('scene_category', $data);
}
public function deleteCategories()
@@ -173,7 +173,7 @@ class SceneCore extends ObjectModel
);
}
return Db::getInstance()->autoExecute(_DB_PREFIX_.'scene_products', $data, 'INSERT');
return Db::getInstance()->insert('scene_products', $data);
}
public function deleteZoneProducts()
+4 -4
View File
@@ -81,21 +81,21 @@ class SpecificPriceRuleCore extends ObjectModel
if (!is_array($conditions))
return;
$result = Db::getInstance()->autoExecute(_DB_PREFIX_.'specific_price_rule_condition_group', array(
$result = Db::getInstance()->insert('specific_price_rule_condition_group', array(
'id_specific_price_rule_condition_group' => '',
'id_specific_price_rule' => (int)$this->id
), 'INSERT');
));
if (!$result)
return false;
$id_specific_price_rule_condition_group = (int)Db::getInstance()->Insert_ID();
foreach ($conditions as $condition)
{
$result = Db::getInstance()->autoExecute(_DB_PREFIX_.'specific_price_rule_condition', array(
$result = Db::getInstance()->insert('specific_price_rule_condition', array(
'id_specific_price_rule_condition' => '',
'id_specific_price_rule_condition_group' => (int)$id_specific_price_rule_condition_group,
'type' => $condition['type'],
'value' => $condition['value'],
), 'INSERT');
));
if (!$result)
return false;
}
+121 -73
View File
@@ -30,6 +30,13 @@ if (file_exists(dirname(__FILE__).'/../config/settings.inc.php'))
abstract class DbCore
{
/**
* Constants used by insert() method
*/
const INSERT = 1;
const INSERT_IGNORE = 2;
const REPLACE = 3;
/**
* @var string Server (eg. localhost)
*/
@@ -105,7 +112,7 @@ abstract class DbCore
abstract public function disconnect();
/**
* Execute a query and get result ressource
* Execute a query and get result resource
*
* @param string $sql
* @return mixed
@@ -125,7 +132,7 @@ abstract class DbCore
abstract public function Insert_ID();
/**
* Get number of affected rows in previous databse operation
* Get number of affected rows in previous database operation
*/
abstract public function Affected_Rows();
@@ -167,7 +174,7 @@ abstract class DbCore
/**
* Get Db object instance
*
* @param bool $master Decides wether the connection to be returned by the master server or the slave server
* @param bool $master Decides whether the connection to be returned by the master server or the slave server
* @return Db instance
*/
public static function getInstance($master = true)
@@ -246,86 +253,32 @@ abstract class DbCore
}
/**
* Filter SQL query within a blacklist
*
* @param string $table Table where insert/update data
* @param string $data Data to insert/update
* @param string $type INSERT or INSERT IGNORE or REPLACE or UPDATE
* @param string $where WHERE clause, only for UPDATE (optional)
* @param int $limit LIMIT clause (optional)
* @param bool $use_cache
* @param bool $use_null If true, replace empty strings and NULL by a NULL value
* @return mixed|boolean SQL query result
* @deprecated 1.5.0 use insert() or update() method instead
*/
public function autoExecute($table, $data, $type, $where = '', $limit = 0, $use_cache = true, $use_null = false)
{
if (!$data)
return true;
Tools::displayAsDeprecated();
if (substr($table, 0, strlen(_DB_PREFIX_)) == _DB_PREFIX_)
$table = substr($table, strlen(_DB_PREFIX_));
$type = strtoupper($type);
if ($type == 'INSERT' || $type == 'INSERT IGNORE' || $type == 'REPLACE')
switch ($type)
{
// Check if $data is a list of row
$current = current($data);
if (!is_array($current) || isset($current['type']))
$data = array($data);
case 'INSERT' :
return $this->insert($table, $data, $use_null, $use_cache, Db::INSERT);
$keys = array();
$values_stringified = array();
foreach ($data as $row_data)
{
$values = array();
foreach ($row_data as $key => $value)
{
if (isset($keys_stringified))
{
// Check if row array mapping are the same
if (!in_array("`$key`", $keys))
throw new PrestaShopDatabaseException('Keys form $data subarray don\'t match');
}
else
$keys[] = "`$key`";
case 'INSERT IGNORE' :
return $this->insert($table, $data, $use_null, $use_cache, Db::INSERT_IGNORE);
if (!is_array($value))
$value = array('type' => 'text', 'value' => $value);
if ($value['type'] == 'sql')
$values[] = $value['value'];
else
$values[] = $use_null && ($value['value'] === '' || is_null($value['value'])) ? 'NULL' : "'{$value['value']}'";
}
$keys_stringified = implode(', ', $keys);
$values_stringified[] = '('.implode(', ', $values).')';
}
case 'REPLACE' :
return $this->insert($table, $data, $use_null, $use_cache, Db::REPLACE);
$sql = $type.' INTO `'.$table.'` ('.$keys_stringified.') VALUES '.implode(', ', $values_stringified);
if ($limit)
$sql .= ' LIMIT '.(int)$limit;
return (bool)$this->q($sql, $use_cache);
case 'UPDATE' :
return $this->update($table, $data, $where, $limit, $use_null, $use_cache);
default :
throw new PrestaShopDatabaseException('Wrong argument (miss type) in Db::autoExecute()');
}
else if ($type == 'UPDATE')
{
$sql = 'UPDATE `'.$table.'` SET ';
foreach ($data as $key => $value)
{
if (!is_array($value))
$value = array('type' => 'text', 'value' => $value);
if ($value['type'] == 'sql')
$sql .= "`$key` = {$value['value']},";
else
$sql .= ($use_null && ($value['value'] === '' || is_null($value['value']))) ? "`$key` = NULL," : "`$key` = '{$value['value']}',";
}
$sql = rtrim($sql, ',');
if ($where)
$sql .= ' WHERE '.$where;
if ($limit)
$sql .= ' LIMIT '.(int)$limit;
return (bool)$this->q($sql, $use_cache);
}
else
throw new PrestaShopDatabaseException('Wrong argument (miss type) in Db::autoExecute()');
return false;
}
/**
@@ -360,6 +313,101 @@ abstract class DbCore
return $result;
}
/**
* Execute an INSERT query
*
* @param string $table Table name without prefix
* @param array $data Data to insert as associative array. If $data is a list of arrays, multiple insert will be done
* @param bool $null_values If we want to use NULL values instead of empty quotes
* @param bool $use_cache
* @param $type Must be Db::INSERT or Db::INSERT_IGNORE or Db::REPLACE
* @return bool
*/
public function insert($table, $data, $null_values = false, $use_cache = true, $type = Db::INSERT)
{
if (!$data)
return true;
$table = _DB_PREFIX_.$table;
if ($type == Db::INSERT)
$insert_keyword = 'INSERT';
else if ($type == Db::INSERT_IGNORE)
$insert_keyword = 'INSERT IGNORE';
else if ($type == Db::REPLACE)
$insert_keyword = 'REPLACE';
else
throw new PrestaShopDatabaseException('Bad keyword, must be Db::INSERT or Db::INSERT_IGNORE or Db::REPLACE');
// Check if $data is a list of row
$current = current($data);
if (!is_array($current) || isset($current['type']))
$data = array($data);
$keys = array();
$values_stringified = array();
foreach ($data as $row_data)
{
$values = array();
foreach ($row_data as $key => $value)
{
if (isset($keys_stringified))
{
// Check if row array mapping are the same
if (!in_array("`$key`", $keys))
throw new PrestaShopDatabaseException('Keys form $data subarray don\'t match');
}
else
$keys[] = "`$key`";
if (!is_array($value))
$value = array('type' => 'text', 'value' => $value);
if ($value['type'] == 'sql')
$values[] = $value['value'];
else
$values[] = $null_values && ($value['value'] === '' || is_null($value['value'])) ? 'NULL' : "'{$value['value']}'";
}
$keys_stringified = implode(', ', $keys);
$values_stringified[] = '('.implode(', ', $values).')';
}
$sql = $insert_keyword.' INTO `'.$table.'` ('.$keys_stringified.') VALUES '.implode(', ', $values_stringified);
return (bool)$this->q($sql, $use_cache);
}
/**
* @param string $table Table name without prefix
* @param array $data Data to insert as associative array. If $data is a list of arrays, multiple insert will be done
* @param string $where WHERE condition
* @param int $limit
* @param bool $null_values If we want to use NULL values instead of empty quotes
* @param bool $use_cache
* @return bool
*/
public function update($table, $data, $where = '', $limit = 0, $null_values = false, $use_cache = true)
{
if (!$data)
return true;
$table = _DB_PREFIX_.$table;
$sql = 'UPDATE `'.$table.'` SET ';
foreach ($data as $key => $value)
{
if (!is_array($value))
$value = array('type' => 'text', 'value' => $value);
if ($value['type'] == 'sql')
$sql .= "`$key` = {$value['value']},";
else
$sql .= ($null_values && ($value['value'] === '' || is_null($value['value']))) ? "`$key` = NULL," : "`$key` = '{$value['value']}',";
}
$sql = rtrim($sql, ',');
if ($where)
$sql .= ' WHERE '.$where;
if ($limit)
$sql .= ' LIMIT '.(int)$limit;
return (bool)$this->q($sql, $use_cache);
}
/**
* Execute a DELETE query
*
+7 -7
View File
@@ -68,15 +68,15 @@ class OrderReturnCore extends ObjectModel
{
/* Classic product return */
if ($orderDetailList)
foreach ($orderDetailList AS $key => $orderDetail)
if ($qty = (int)($productQtyList[$key]))
Db::getInstance()->AutoExecute(_DB_PREFIX_.'order_return_detail', array('id_order_return' => (int)($this->id), 'id_order_detail' => (int)($orderDetail), 'product_quantity' => $qty, 'id_customization' => 0), 'INSERT');
foreach ($orderDetailList as $key => $orderDetail)
if ($qty = (int)$productQtyList[$key])
Db::getInstance()->insert('order_return_detail', array('id_order_return' => (int)$this->id, 'id_order_detail' => (int)$orderDetail, 'product_quantity' => $qty, 'id_customization' => 0));
/* Customized product return */
if ($customizationIds)
foreach ($customizationIds AS $orderDetailId => $customizations)
foreach ($customizations AS $customizationId)
if ($quantity = (int)($customizationQtyInput[(int)($customizationId)]))
Db::getInstance()->AutoExecute(_DB_PREFIX_.'order_return_detail', array('id_order_return' => (int)($this->id), 'id_order_detail' => (int)($orderDetailId), 'product_quantity' => $quantity, 'id_customization' => (int)($customizationId)), 'INSERT');
foreach ($customizationIds as $orderDetailId => $customizations)
foreach ($customizations as $customizationId)
if ($quantity = (int)$customizationQtyInput[(int)$customizationId])
Db::getInstance()->insert('order_return_detail', array('id_order_return' => (int)$this->id, 'id_order_detail' => (int)$orderDetailId, 'product_quantity' => $quantity, 'id_customization' => (int)$customizationId));
}
public function checkEnoughProduct($orderDetailList, $productQtyList, $customizationIds, $customizationQtyInput)
+6 -2
View File
@@ -81,7 +81,11 @@ class OrderSlipCore extends ObjectModel
foreach ($orderDetailList as $key => $orderDetail)
{
if ($qty = (int)($productQtyList[$key]))
Db::getInstance()->AutoExecute(_DB_PREFIX_.'order_slip_detail', array('id_order_slip' => (int)($this->id), 'id_order_detail' => (int)($orderDetail), 'product_quantity' => $qty), 'INSERT');
Db::getInstance()->insert('order_slip_detail', array(
'id_order_slip' => (int)$this->id,
'id_order_detail' => (int)$orderDetail,
'product_quantity' => $qty,
));
}
}
@@ -227,7 +231,7 @@ class OrderSlipCore extends ObjectModel
'amount_tax_excl' => (float)($tab['amount_tax_excl']),
'amount_tax_incl' => (float)($tab['amount_tax_incl']),
);
Db::getInstance()->autoExecute(_DB_PREFIX_.'order_slip_detail', $insertOrderSlip, 'INSERT');
Db::getInstance()->insert('order_slip_detail', $insertOrderSlip);
}
}
+3 -3
View File
@@ -99,8 +99,8 @@ class ShopUrlCore extends ObjectModel
public function setMain()
{
$res = Db::getInstance()->autoExecute(_DB_PREFIX_.'shop_url', array('main' => 0), 'UPDATE', 'id_shop = '.(int)$this->id_shop);
$res &= Db::getInstance()->autoExecute(_DB_PREFIX_.'shop_url', array('main' => 1), 'UPDATE', 'id_shop_url = '.(int)$this->id);
$res = Db::getInstance()->update('shop_url', array('main' => 0), 'id_shop = '.(int)$this->id_shop);
$res &= Db::getInstance()->update('shop_url', array('main' => 1), 'id_shop_url = '.(int)$this->id);
$this->main = true;
// Reset main URL for all shops to prevent problems
@@ -112,7 +112,7 @@ class ShopUrlCore extends ObjectModel
) = 0
GROUP BY s1.id_shop';
foreach (Db::getInstance()->executeS($sql) as $row)
Db::getInstance()->autoExecute(_DB_PREFIX_.'shop_url', array('main' => 1), 'UPDATE', 'id_shop_url = '.$row['id_shop_url']);
Db::getInstance()->update('shop_url', array('main' => 1), 'id_shop_url = '.$row['id_shop_url']);
return $res;
}
+10 -22
View File
@@ -141,13 +141,12 @@ class StockAvailableCore extends ObjectModel
{
$quantity = $manager->getProductRealQuantities($id_product, $id_product_attribute, $warehouses, true);
$query = array(
'table' => _DB_PREFIX_.'stock_available',
'table' => 'stock_available',
'data' => array('quantity' => $quantity),
'type' => 'UPDATE',
'where' => 'id_product = '.(int)$id_product.' AND id_product_attribute = '.(int)$id_product_attribute.
StockAvailable::addSqlShopRestriction(null, $id_shop)
);
Db::getInstance()->autoExecute($query['table'], $query['data'], $query['type'], $query['where']);
Db::getInstance()->update($query['table'], $query['data'], $query['where']);
$product_quantity += $quantity;
}
@@ -155,13 +154,12 @@ class StockAvailableCore extends ObjectModel
// updates
// if $id_product has attributes, it also updates the sum for all attributes
$query = array(
'table' => _DB_PREFIX_.'stock_available',
'table' => 'stock_available',
'data' => array('quantity' => $product_quantity),
'type' => 'UPDATE',
'where' => 'id_product = '.(int)$id_product.' AND id_product_attribute = 0'.
StockAvailable::addSqlShopRestriction(null, $id_shop)
);
Db::getInstance()->autoExecute($query['table'], $query['data'], $query['type'], $query['where']);
Db::getInstance()->update($query['table'], $query['data'], $query['where']);
}
}
@@ -190,10 +188,9 @@ class StockAvailableCore extends ObjectModel
if ($existing_id > 0)
{
Db::getInstance()->autoExecute(
_DB_PREFIX_.'stock_available',
Db::getInstance()->update(
'stock_available',
array('depends_on_stock' => (int)(bool)$depends_on_stock),
'UPDATE',
'id_product = '.(int)$id_product.
StockAvailable::addSqlShopRestriction(null, $id_shop)
);
@@ -208,11 +205,7 @@ class StockAvailableCore extends ObjectModel
StockAvailable::addSqlShopParams($params, $id_shop);
Db::getInstance()->autoExecute(
_DB_PREFIX_.'stock_available',
$params,
'INSERT'
);
Db::getInstance()->insert('stock_available', $params);
}
// depends on stock.. hence synchronizes
@@ -236,10 +229,9 @@ class StockAvailableCore extends ObjectModel
if ($existing_id > 0)
{
Db::getInstance()->autoExecute(
_DB_PREFIX_.'stock_available',
Db::getInstance()->update(
'stock_available',
array('out_of_stock' => (int)$out_of_stock),
'UPDATE',
'id_product = '.(int)$id_product.
StockAvailable::addSqlShopRestriction(null, $id_shop)
);
@@ -254,11 +246,7 @@ class StockAvailableCore extends ObjectModel
StockAvailable::addSqlShopParams($params, $id_shop);
Db::getInstance()->autoExecute(
_DB_PREFIX_.'stock_available',
$params,
'INSERT'
);
Db::getInstance()->insert('stock_available', $params);
}
}
+3 -3
View File
@@ -145,7 +145,7 @@ class WarehouseCore extends ObjectModel
DELETE FROM '._DB_PREFIX_.'warehouse_shop
WHERE '.$this->def['primary'].' = '.(int)$this->id);
Db::getInstance()->autoExecute(_DB_PREFIX_.'warehouse_shop', $row_to_insert, 'INSERT');
Db::getInstance()->insert('warehouse_shop', $row_to_insert);
}
/**
@@ -190,7 +190,7 @@ class WarehouseCore extends ObjectModel
WHERE '.$this->def['primary'].' = '.(int)$this->id);
if ($row_to_insert)
Db::getInstance()->autoExecute(_DB_PREFIX_.'warehouse_carrier', $row_to_insert, 'INSERT');
Db::getInstance()->insert('warehouse_carrier', $row_to_insert);
}
/**
@@ -263,7 +263,7 @@ class WarehouseCore extends ObjectModel
'location' => pSQL($location),
);
return Db::getInstance()->autoExecute(_DB_PREFIX_.'warehouse_product_location', $row_to_insert, 'INSERT');
return Db::getInstance()->insert('warehouse_product_location', $row_to_insert);
}
/**