diff --git a/admin-dev/themes/default/template/controllers/groups/helpers/form/form.tpl b/admin-dev/themes/default/template/controllers/groups/helpers/form/form.tpl index acb52c2e8..7d2423cf1 100644 --- a/admin-dev/themes/default/template/controllers/groups/helpers/form/form.tpl +++ b/admin-dev/themes/default/template/controllers/groups/helpers/form/form.tpl @@ -106,63 +106,61 @@ if ($(this).attr('name') == 'category_reduction['+$('[name="id_category"]:checked').val()+']') { exist = true; - jAlert('{l s='This category already exists for this group.'}'); + jAlert('{l s='This category already exists for this group.' js='1'}'); return false; } - }); if (exist) return; $.ajax({ - type:"POST", - url: "ajax-tab.php", - async: true, - dataType: "json", - data : { - ajax: "1", - token: "{getAdminToken tab='AdminGroups'}", - controller: "AdminGroups", - action: "addCategoryReduction", - category_reduction: $('#category_reduction_fancybox').val() , - id_category: $('[name="id_category"]:checked').val() - }, - success : function(jsonData) + type:"POST", + url: "ajax-tab.php", + async: true, + dataType: "json", + data : { + ajax: "1", + token: "{getAdminToken tab='AdminGroups'}", + controller: "AdminGroups", + action: "addCategoryReduction", + category_reduction: $('#category_reduction_fancybox').val() , + id_category: $('[name="id_category"]:checked').val() + }, + success : function(jsonData) { + if (jsonData.hasError) { - if (jsonData.hasError) - { - var errors = ''; - for(error in jsonData.errors) - //IE6 bug fix - if(error != 'indexOf') - errors += jsonData.errors[error] + "\n"; - jAlert(errors); - } - else - { - $('#group_discount_category_table').append('


\ No newline at end of file
diff --git a/admin-dev/themes/default/template/controllers/supply_orders/helpers/form/form.tpl b/admin-dev/themes/default/template/controllers/supply_orders/helpers/form/form.tpl
index 79f38f94b..9372654b7 100644
--- a/admin-dev/themes/default/template/controllers/supply_orders/helpers/form/form.tpl
+++ b/admin-dev/themes/default/template/controllers/supply_orders/helpers/form/form.tpl
@@ -138,7 +138,7 @@
// check if it's possible to add the product
if (product_infos == null || $('#cur_product_name').val() == '')
{
- jAlert('{l s='Please select at least one product.'}');
+ jAlert('{l s='Please select at least one product.' js='1'}');
return false;
}
diff --git a/classes/ObjectModel.php b/classes/ObjectModel.php
index 48fe026e4..fc6a40697 100644
--- a/classes/ObjectModel.php
+++ b/classes/ObjectModel.php
@@ -977,11 +977,11 @@ abstract class ObjectModelCore
// Checking for required fields
if (isset($data['required']) && $data['required'] && ($value = Tools::getValue($field, $this->{$field})) == false && (string)$value != '0')
if (!$this->id || $field != 'passwd')
- $errors[] = ''.self::displayFieldName($field, get_class($this), $htmlentities).' '.Tools::displayError('is required.');
+ $errors[$field] = ''.self::displayFieldName($field, get_class($this), $htmlentities).' '.Tools::displayError('is required.');
// Checking for maximum fields sizes
if (isset($data['size']) && ($value = Tools::getValue($field, $this->{$field})) && Tools::strlen($value) > $data['size'])
- $errors[] = sprintf(
+ $errors[$field] = sprintf(
Tools::displayError('%1$s is too long. Maximum length: %2$d'),
self::displayFieldName($field, get_class($this), $htmlentities),
$data['size']
@@ -992,7 +992,7 @@ abstract class ObjectModelCore
if (($value = Tools::getValue($field, $this->{$field})) || ($field == 'postcode' && $value == '0'))
{
if (isset($data['validate']) && !Validate::$data['validate']($value) && (!empty($value) || $data['required']))
- $errors[] = ''.self::displayFieldName($field, get_class($this), $htmlentities).' '.Tools::displayError('is invalid.');
+ $errors[$field] = ''.self::displayFieldName($field, get_class($this), $htmlentities).' '.Tools::displayError('is invalid.');
else
{
if (isset($data['copy_post']) && !$data['copy_post'])
@@ -1136,7 +1136,7 @@ abstract class ObjectModelCore
$value = Tools::getValue($field);
if (empty($value))
- $errors[] = sprintf(Tools::displayError('The field %s is required.'), self::displayFieldName($field, get_class($this), $htmlentities));
+ $errors[$field] = sprintf(Tools::displayError('The field %s is required.'), self::displayFieldName($field, get_class($this), $htmlentities));
}
return $errors;
diff --git a/classes/controller/AdminController.php b/classes/controller/AdminController.php
index 98546450d..597e75371 100644
--- a/classes/controller/AdminController.php
+++ b/classes/controller/AdminController.php
@@ -955,7 +955,8 @@ class AdminControllerCore extends Controller
continue;
// Check if field is required
- if (isset($values['required']) && $values['required'] && !empty($_POST['multishopOverrideOption'][$field]))
+ if ((!Shop::isFeatureActive() && isset($values['required']) && $values['required'])
+ || (Shop::isFeatureActive() && isset($_POST['multishopOverrideOption'][$field]) && isset($values['required']) && $values['required']))
if (isset($values['type']) && $values['type'] == 'textLang')
{
foreach ($languages as $language)
diff --git a/classes/db/Db.php b/classes/db/Db.php
index e543f35ce..f408d3af9 100644
--- a/classes/db/Db.php
+++ b/classes/db/Db.php
@@ -169,6 +169,8 @@ abstract class DbCore
/* do not remove, useful for some modules */
abstract public function set_db($db_name);
+
+ abstract public function getBestEngine();
/**
* Get Db object instance
@@ -674,7 +676,7 @@ abstract class DbCore
return call_user_func_array(array(Db::getClass(), 'hasTableWithSamePrefix'), array($server, $user, $pwd, $db, $prefix));
}
- public static function checkCreatePrivilege($server, $user, $pwd, $db, $prefix, $engine)
+ public static function checkCreatePrivilege($server, $user, $pwd, $db, $prefix, $engine = null)
{
return call_user_func_array(array(Db::getClass(), 'checkCreatePrivilege'), array($server, $user, $pwd, $db, $prefix, $engine));
}
diff --git a/classes/db/DbMySQLi.php b/classes/db/DbMySQLi.php
index 3d5556908..e89d59ccc 100644
--- a/classes/db/DbMySQLi.php
+++ b/classes/db/DbMySQLi.php
@@ -172,21 +172,36 @@ class DbMySQLiCore extends Db
if (!$link->real_connect($server, $user, $pwd, $db))
return (mysqli_connect_errno() == 1049) ? 2 : 1;
- if (strtolower($engine) == 'innodb')
- {
- $sql = 'SHOW VARIABLES WHERE Variable_name = \'have_innodb\'';
- $result = $link->query($sql);
- if (!$result)
- return 4;
- $row = $result->fetch_assoc();
- if (!$row || strtolower($row['Value']) != 'yes')
- return 4;
- }
$link->close();
return 0;
}
- public static function checkCreatePrivilege($server, $user, $pwd, $db, $prefix, $engine)
+ public function getBestEngine()
+ {
+ $value = 'InnoDB';
+
+ $sql = 'SHOW VARIABLES WHERE Variable_name = \'have_innodb\'';
+ $result = $this->link->query($sql);
+ if (!$result)
+ $value = 'MyISAM';
+ $row = $result->fetch_assoc();
+ if (!$row || strtolower($row['Value']) != 'yes')
+ $value = 'MyISAM';
+
+ /* MySQL >= 5.6 */
+ $sql = 'SHOW ENGINES';
+ $result = $this->link->query($sql);
+ while ($row = $result->fetch_assoc())
+ if ($row['Engine'] == 'InnoDB')
+ {
+ if (in_array($row['Support'], array('DEFAULT', 'YES')))
+ $value = 'InnoDB';
+ break;
+ }
+ return $value;
+ }
+
+ public static function checkCreatePrivilege($server, $user, $pwd, $db, $prefix, $engine = null)
{
$link = @new mysqli($server, $user, $pwd, $db);
if (mysqli_connect_error())
diff --git a/classes/db/DbPDO.php b/classes/db/DbPDO.php
index ed2870a16..7c6a43977 100644
--- a/classes/db/DbPDO.php
+++ b/classes/db/DbPDO.php
@@ -174,7 +174,7 @@ class DbPDOCore extends Db
return (bool)$result->fetch();
}
- public static function checkCreatePrivilege($server, $user, $pwd, $db, $prefix, $engine)
+ public static function checkCreatePrivilege($server, $user, $pwd, $db, $prefix, $engine = null)
{
try {
$link = DbPDO::_getPDO($server, $user, $pwd, $db, 5);
@@ -206,34 +206,34 @@ class DbPDOCore extends Db
} catch (PDOException $e) {
return ($e->getCode() == 1049) ? 2 : 1;
}
-
- if (strtolower($engine) == 'innodb')
- {
- $value = 0;
-
- $sql = 'SHOW VARIABLES WHERE Variable_name = \'have_innodb\'';
- $result = $link->query($sql);
- if (!$result)
- $value = 4;
- $row = $result->fetch();
- if (!$row || strtolower($row['Value']) != 'yes')
- $value = 4;
-
- /* MySQL >= 5.6 */
- $sql = 'SHOW ENGINES';
- $result = $link->query($sql);
- while ($row = $result->fetch())
- if ($row['Engine'] == 'InnoDB')
- {
- if (in_array($row['Support'], array('DEFAULT', 'YES')))
- $value = 0;
- break;
- }
- return $value;
- }
unset($link);
return 0;
}
+
+ public function getBestEngine()
+ {
+ $value = 'InnoDB';
+
+ $sql = 'SHOW VARIABLES WHERE Variable_name = \'have_innodb\'';
+ $result = $this->link->query($sql);
+ if (!$result)
+ $value = 'MyISAM';
+ $row = $result->fetch();
+ if (!$row || strtolower($row['Value']) != 'yes')
+ $value = 'MyISAM';
+
+ /* MySQL >= 5.6 */
+ $sql = 'SHOW ENGINES';
+ $result = $this->link->query($sql);
+ while ($row = $result->fetch())
+ if ($row['Engine'] == 'InnoDB')
+ {
+ if (in_array($row['Support'], array('DEFAULT', 'YES')))
+ $value = 'InnoDB';
+ break;
+ }
+ return $value;
+ }
/**
* @see Db::checkEncoding()
diff --git a/classes/db/MySQL.php b/classes/db/MySQL.php
index ba05fd29c..d66f488da 100644
--- a/classes/db/MySQL.php
+++ b/classes/db/MySQL.php
@@ -165,36 +165,36 @@ class MySQLCore extends Db
return 1;
if (!@mysql_select_db($db, $link))
return 2;
-
- if (strtolower($engine) == 'innodb')
- {
- $value = 0;
-
- $sql = 'SHOW VARIABLES WHERE Variable_name = \'have_innodb\'';
- $result = mysql_query($sql);
- if (!$result)
- $value = 4;
- $row = mysql_fetch_assoc($result);
- if (!$row || strtolower($row['Value']) != 'yes')
- $value = 4;
-
- /* MySQL >= 5.6 */
- $sql = 'SHOW ENGINES';
- $result = mysql_query($sql);
- while ($row = mysql_fetch_assoc($result))
- if ($row['Engine'] == 'InnoDB')
- {
- if (in_array($row['Support'], array('DEFAULT', 'YES')))
- $value = 0;
- break;
- }
- return $value;
- }
@mysql_close($link);
return 0;
}
+
+ public function getBestEngine()
+ {
+ $value = 'InnoDB';
+
+ $sql = 'SHOW VARIABLES WHERE Variable_name = \'have_innodb\'';
+ $result = mysql_query($sql);
+ if (!$result)
+ $value = 'MyISAM';
+ $row = mysql_fetch_assoc($result);
+ if (!$row || strtolower($row['Value']) != 'yes')
+ $value = 'MyISAM';
+
+ /* MySQL >= 5.6 */
+ $sql = 'SHOW ENGINES';
+ $result = mysql_query($sql);
+ while ($row = mysql_fetch_assoc($result))
+ if ($row['Engine'] == 'InnoDB')
+ {
+ if (in_array($row['Support'], array('DEFAULT', 'YES')))
+ $value = 'InnoDB';
+ break;
+ }
+ return $value;
+ }
- public static function checkCreatePrivilege($server, $user, $pwd, $db, $prefix, $engine)
+ public static function checkCreatePrivilege($server, $user, $pwd, $db, $prefix, $engine = null)
{
ini_set('mysql.connect_timeout', 5);
if (!$link = @mysql_connect($server, $user, $pwd, true))
diff --git a/controllers/admin/AdminPPreferencesController.php b/controllers/admin/AdminPPreferencesController.php
index c3cb9a352..ee69e93ea 100644
--- a/controllers/admin/AdminPPreferencesController.php
+++ b/controllers/admin/AdminPPreferencesController.php
@@ -231,7 +231,7 @@ class AdminPPreferencesControllerCore extends AdminController
// if advanced stock management is disabled, updates concerned tables
if (Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT') == 1 &&
- (int)Tools::getValue('PS_ADVANCED_STOCK_MANAGEMENT') == 0)
+ (int)Tools::getValue('PS_ADVANCED_STOCK_MANAGEMENT') == 0 && Context::getContext()->shop->getContext() == Shop::CONTEXT_ALL)
{
ObjectModel::updateMultishopTable('Product', array('advanced_stock_management' => 0), 'product_shop.`advanced_stock_management` = 1');
diff --git a/controllers/front/AuthController.php b/controllers/front/AuthController.php
index 7d599ed65..08c96d058 100644
--- a/controllers/front/AuthController.php
+++ b/controllers/front/AuthController.php
@@ -414,11 +414,11 @@ class AuthControllerCore extends FrontController
if ($error_phone)
$this->errors[] = Tools::displayError('You must register at least one phone number.');
-
+
$this->errors = array_unique(array_merge($this->errors, $customer->validateController()));
// Check the requires fields which are settings in the BO
- $this->errors = array_merge($this->errors, $customer->validateFieldsRequiredDatabase());
+ $this->errors = $this->errors + $customer->validateFieldsRequiredDatabase();
if (!Configuration::get('PS_REGISTRATION_PROCESS_TYPE') && !$this->ajax && !Tools::isSubmit('submitGuestAccount'))
{
diff --git a/controllers/front/ContactController.php b/controllers/front/ContactController.php
index 8098ad0ee..f32311554 100644
--- a/controllers/front/ContactController.php
+++ b/controllers/front/ContactController.php
@@ -170,6 +170,7 @@ class ContactControllerCore extends FrontController
'{attached_file}' => '-',
'{message}' => Tools::nl2br(stripslashes($message)),
'{email}' => $from,
+ '{product_name}' => '',
);
if (isset($filename))
@@ -177,6 +178,8 @@ class ContactControllerCore extends FrontController
$id_order = (int)Tools::getValue('id_order');
+ $id_product = (int)Tools::getValue('id_product');
+
if (isset($ct) && Validate::isLoadedObject($ct))
{
if ($ct->id_order)
@@ -193,6 +196,13 @@ class ContactControllerCore extends FrontController
$var_list['{id_order}'] = $id_order;
}
+ if ($id_product)
+ {
+ $product = new Product((int)$id_product);
+ if (Validate::isLoadedObject($product) && isset($product->name[Context::getContext()->language->id]))
+ $var_list['{product_name}'] = $product->name[Context::getContext()->language->id];
+ }
+
if (empty($contact->email))
Mail::Send($this->context->language->id, 'contact_form', $subject, $var_list, $from, null, null, null, $fileAttachment);
else
diff --git a/install-dev/controllers/http/database.php b/install-dev/controllers/http/database.php
index 6ec8ece98..3a603acdc 100644
--- a/install-dev/controllers/http/database.php
+++ b/install-dev/controllers/http/database.php
@@ -56,7 +56,6 @@ class InstallControllerHttpDatabase extends InstallControllerHttp
$this->session->database_login = trim(Tools::getValue('dbLogin'));
$this->session->database_password = trim(Tools::getValue('dbPassword'));
$this->session->database_prefix = trim(Tools::getValue('db_prefix'));
- $this->session->database_engine = Tools::getValue('dbEngine');
$this->session->database_clear = Tools::getValue('database_clear');
// Save email config
@@ -81,13 +80,15 @@ class InstallControllerHttpDatabase extends InstallControllerHttp
$this->session->database_login,
$this->session->database_password,
$this->session->database_prefix,
- $this->session->database_engine,
-
// We do not want to validate table prefix if we are already in install process
($this->session->step == 'process') ? true : $this->session->database_clear
);
-
- return count($this->errors) ? false : true;
+ if (count($this->errors))
+ return false;
+
+ if (!isset($this->session->database_engine))
+ $this->session->database_engine = $this->model_database->getBestEngine($this->session->database_server, $this->session->database_name, $this->session->database_login, $this->session->database_password);
+ return true;
}
public function process()
@@ -108,10 +109,9 @@ class InstallControllerHttpDatabase extends InstallControllerHttp
$login = Tools::getValue('dbLogin');
$password = Tools::getValue('dbPassword');
$prefix = Tools::getValue('db_prefix');
- $engine = Tools::getValue('dbEngine');
$clear = Tools::getValue('clear');
- $errors = $this->model_database->testDatabaseSettings($server, $database, $login, $password, $prefix, $engine, $clear);
+ $errors = $this->model_database->testDatabaseSettings($server, $database, $login, $password, $prefix, $clear);
$this->ajaxJsonAnswer(
(count($errors)) ? false : true,
diff --git a/install-dev/fixtures/apple/data/access.xml b/install-dev/fixtures/apple/data/access.xml
index 31636ce76..45126998a 100644
--- a/install-dev/fixtures/apple/data/access.xml
+++ b/install-dev/fixtures/apple/data/access.xml
@@ -96,7 +96,7 @@
diff --git a/js/admin_order.js b/js/admin_order.js index 098d83e59..f2305948b 100644 --- a/js/admin_order.js +++ b/js/admin_order.js @@ -470,8 +470,7 @@ function init() cache: false, dataType: 'json', data : query, - success : function(data) - { + success : function(data) { if (data.result) { go = false; @@ -491,8 +490,7 @@ function init() else jAlert(data.error); }, - error : function(XMLHttpRequest, textStatus, errorThrown) - { + error : function(XMLHttpRequest, textStatus, errorThrown) { jAlert("Impossible to add the product to the cart.\n\ntextStatus: '" + textStatus + "'\nerrorThrown: '" + errorThrown + "'\nresponseText:\n" + XMLHttpRequest.responseText); } }); diff --git a/js/hookLiveEdit.js b/js/hookLiveEdit.js index b7b7b1239..1cd67129e 100644 --- a/js/hookLiveEdit.js +++ b/js/hookLiveEdit.js @@ -161,7 +161,7 @@ function getHookableList() { var errors = ''; for (error in jsonData.errors) //IE6 bug fix if (error != 'indexOf') - errors += jsonData.errors[error] + "\n"; + errors += $('
').html(jsonData.errors[error]).text() + "\n"; alert(errors); } else diff --git a/mails/en/contact_form.html b/mails/en/contact_form.html index 67ee471ca..e7c9018b2 100644 --- a/mails/en/contact_form.html +++ b/mails/en/contact_form.html @@ -20,7 +20,7 @@