Merge branch 'development' of https://github.com/PrestaShop/PrestaShop into development
This commit is contained in:
@@ -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('<tr class="alt_row" id="'+jsonData.id_category+'"><td>'+jsonData.catPath+'</td><td>{l s='Discount:'}'+jsonData.discount+'{l s='%'}</td><td><a href="#" onclick="deleteCategoryReduction('+jsonData.id_category+');"><img src="../img/admin/delete.gif"></a></td></tr>');
|
||||
|
||||
var input_hidden = document.createElement("input");
|
||||
input_hidden.setAttribute('type', 'hidden');
|
||||
input_hidden.setAttribute('value', jsonData.discount);
|
||||
input_hidden.setAttribute('name', 'category_reduction['+jsonData.id_category+']');
|
||||
input_hidden.setAttribute('class', 'category_reduction');
|
||||
|
||||
$('#group_discount_category_table tr#'+jsonData.id_category+' > td:last').append(input_hidden);
|
||||
$.fancybox.close();
|
||||
}
|
||||
var errors = '';
|
||||
for (error in jsonData.errors)
|
||||
//IE6 bug fix
|
||||
if (error != 'indexOf')
|
||||
errors += $('<div />').html(jsonData.errors[error]).text() + "\n";
|
||||
jAlert(errors);
|
||||
}
|
||||
});
|
||||
else
|
||||
{
|
||||
$('#group_discount_category_table').append('<tr class="alt_row" id="'+jsonData.id_category+'"><td>'+jsonData.catPath+'</td><td>{l s='Discount:'}'+jsonData.discount+'{l s='%'}</td><td><a href="#" onclick="deleteCategoryReduction('+jsonData.id_category+');"><img src="../img/admin/delete.gif"></a></td></tr>');
|
||||
|
||||
var input_hidden = document.createElement("input");
|
||||
input_hidden.setAttribute('type', 'hidden');
|
||||
input_hidden.setAttribute('value', jsonData.discount);
|
||||
input_hidden.setAttribute('name', 'category_reduction['+jsonData.id_category+']');
|
||||
input_hidden.setAttribute('class', 'category_reduction');
|
||||
|
||||
$('#group_discount_category_table tr#'+jsonData.id_category+' > td:last').append(input_hidden);
|
||||
$.fancybox.close();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function initFancyBox()
|
||||
{
|
||||
$('[name="id_category"]:checked').removeAttr('checked');
|
||||
collapseAllCategories();
|
||||
$('#category_reduction_fancybox').val('0.00');
|
||||
}
|
||||
function initFancyBox()
|
||||
{
|
||||
$('[name="id_category"]:checked').removeAttr('checked');
|
||||
collapseAllCategories();
|
||||
$('#category_reduction_fancybox').val('0.00');
|
||||
}
|
||||
</script>
|
||||
<div class="margin-form">
|
||||
<a class="button" href="#group_discount_category_fancybox" id="group_discount_category">{l s='Add a category discount'}</a>
|
||||
|
||||
@@ -50,14 +50,14 @@
|
||||
console.log(truncateAuthorized);
|
||||
if (truncateAuthorized)
|
||||
{
|
||||
if (!confirm('{l s='Are you sure that you would like to delete this' js=1}' + ' ' + $.trim($('#entity > option:selected').text().toLowerCase()) + '{l s='?' js=1}'))
|
||||
if (!confirm('{l s='Are you sure that you would like to delete this' js=1}' + ' ' + $.trim($('#entity > option:selected').text().toLowerCase()) + '?'))
|
||||
{
|
||||
e.preventDefault();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
jAlert('{l s='You do not have permission to delete here. When the multistore is enabled, only a SuperAdmin can delete all items before an import.'}');
|
||||
jAlert('{l s='You do not have permission to delete here. When the multistore is enabled, only a SuperAdmin can delete all items before an import.' js='1'}');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
var table = $('#selectTables select').val();
|
||||
|
||||
if (!table)
|
||||
jAlert("{l s='Please choose a table.'}");
|
||||
jAlert("{l s='Please choose a table.' js='1'}");
|
||||
else
|
||||
AddRequestSql(table);
|
||||
});
|
||||
|
||||
+2
-2
@@ -24,9 +24,9 @@
|
||||
*}
|
||||
<a href="{$href}" class="delete"
|
||||
{if in_array($id_shop, $shops_having_dependencies)}
|
||||
onclick="jAlert('{l s='You cannot delete this shop\'s (customer and/or order dependency)'}'); return false;"
|
||||
onclick="jAlert('{l s='You cannot delete this shop\'s (customer and/or order dependency)' js='1'}'); return false;"
|
||||
{elseif isset($confirm)}
|
||||
onclick="if (confirm('{$confirm}')){ return true; }else{ event.stopPropagation(); event.preventDefault();};"
|
||||
onclick="if (confirm('{$confirm}')){ return true; } else { event.stopPropagation(); event.preventDefault();};"
|
||||
{/if} title="{$action}">
|
||||
<img src="../img/admin/delete.gif" alt="{$action}" />
|
||||
</a>
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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[] = '<b>'.self::displayFieldName($field, get_class($this), $htmlentities).'</b> '.Tools::displayError('is required.');
|
||||
$errors[$field] = '<b>'.self::displayFieldName($field, get_class($this), $htmlentities).'</b> '.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[] = '<b>'.self::displayFieldName($field, get_class($this), $htmlentities).'</b> '.Tools::displayError('is invalid.');
|
||||
$errors[$field] = '<b>'.self::displayFieldName($field, get_class($this), $htmlentities).'</b> '.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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
+3
-1
@@ -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));
|
||||
}
|
||||
|
||||
+26
-11
@@ -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())
|
||||
|
||||
+26
-26
@@ -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()
|
||||
|
||||
+26
-26
@@ -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))
|
||||
|
||||
@@ -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');
|
||||
|
||||
|
||||
@@ -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'))
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
<access id="access_2_85" id_profile="Administrator" id_tab="Webservice" view="1" add="1" edit="1" delete="1"/>
|
||||
<access id="access_2_86" id_profile="Administrator" id_tab="Preferences_1" view="1" add="1" edit="1" delete="1"/>
|
||||
<access id="access_2_87" id_profile="Administrator" id_tab="Quick_Access" view="1" add="1" edit="1" delete="1"/>
|
||||
<access id="access_2_88" id_profile="Administrator" id_tab="Employees" view="1" add="1" edit="1" delete="1"/>
|
||||
<access id="access_2_88" id_profile="Administrator" id_tab="Employees" view="1" add="0" edit="0" delete="0"/>
|
||||
<access id="access_2_89" id_profile="Administrator" id_tab="Profiles" view="1" add="1" edit="1" delete="1"/>
|
||||
<access id="access_2_90" id_profile="Administrator" id_tab="Permissions" view="1" add="1" edit="1" delete="1"/>
|
||||
<access id="access_2_91" id_profile="Administrator" id_tab="Tabs" view="1" add="1" edit="1" delete="1"/>
|
||||
|
||||
@@ -38,7 +38,7 @@ class InstallModelDatabase extends InstallAbstractModel
|
||||
* @param bool $clear
|
||||
* @return array List of errors
|
||||
*/
|
||||
public function testDatabaseSettings($server, $database, $login, $password, $prefix, $engine, $clear = false)
|
||||
public function testDatabaseSettings($server, $database, $login, $password, $prefix, $clear = false)
|
||||
{
|
||||
$errors = array();
|
||||
|
||||
@@ -55,14 +55,11 @@ class InstallModelDatabase extends InstallAbstractModel
|
||||
if ($prefix && !Validate::isTablePrefix($prefix))
|
||||
$errors[] = $this->language->l('Tables prefix is invalid');
|
||||
|
||||
if (!Validate::isMySQLEngine($engine))
|
||||
$errors[] = $this->language->l('Wrong engine chosen for MySQL');
|
||||
|
||||
if (!$errors)
|
||||
{
|
||||
$dbtype = ' ('.Db::getClass().')';
|
||||
// Try to connect to database
|
||||
switch (Db::checkConnection($server, $login, $password, $database, true, $engine))
|
||||
switch (Db::checkConnection($server, $login, $password, $database, true))
|
||||
{
|
||||
case 0:
|
||||
if (!Db::checkEncoding($server, $login, $password))
|
||||
@@ -71,28 +68,33 @@ class InstallModelDatabase extends InstallAbstractModel
|
||||
// Check if a table with same prefix already exists
|
||||
if (!$clear && Db::hasTableWithSamePrefix($server, $login, $password, $database, $prefix))
|
||||
$errors[] = $this->language->l('At least one table with same prefix was already found, please change your prefix or drop your database');
|
||||
if (($create_error = Db::checkCreatePrivilege($server, $login, $password, $database, $prefix, $engine)) !== true)
|
||||
if (($create_error = Db::checkCreatePrivilege($server, $login, $password, $database, $prefix)) !== true)
|
||||
{
|
||||
$errors[] = $this->language->l(sprintf('Your database login don\'t have the privileges to create table on the database "%s". Ask your hosting provider:', $database));
|
||||
if ($create_error != false)
|
||||
$errors[] = $create_error;
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
$errors[] = $this->language->l('Database Server is not found. Please verify the login, password and server fields').$dbtype;
|
||||
break;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
$errors[] = $this->language->l('Connection to MySQL server succeeded, but database "%s" not found', $database).$dbtype;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
$errors[] = $this->language->l('Engine innoDB is not supported by your MySQL server, please use MyISAM').$dbtype;
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return $errors;
|
||||
}
|
||||
|
||||
public function getBestEngine($server, $database, $login, $password)
|
||||
{
|
||||
$class = Db::getClass();
|
||||
$instance = new $class($server, $login, $password, $database, true);
|
||||
$engine = $instance->getBestEngine();
|
||||
unset($instance);
|
||||
return $engine;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,13 +27,14 @@
|
||||
<label for="dbPassword"><?php echo $this->l('Database password:') ?> </label>
|
||||
<input class="text" size="10" type="password" id="dbPassword" name="dbPassword" value="<?php echo htmlspecialchars($this->database_password) ?>" />
|
||||
</p>
|
||||
<!--
|
||||
<p>
|
||||
<label for="dbEngine"><?php echo $this->l('Database Engine:') ?></label>
|
||||
<select id="dbEngine" name="dbEngine">
|
||||
<option value="InnoDB" <?php if ($this->database_engine == 'InnoDB'): ?>selected="selected"<?php endif; ?>>InnoDB</option>
|
||||
<option value="MyISAM" <?php if ($this->database_engine == 'MyISAM'): ?>selected="selected"<?php endif; ?>>MyISAM</option>
|
||||
</select>
|
||||
</p>
|
||||
</p>-->
|
||||
<p>
|
||||
<label for="db_prefix"><?php echo $this->l('Tables prefix:')?></label>
|
||||
<input class="text" type="text" id="db_prefix" name="db_prefix" value="<?php echo htmlspecialchars($this->database_prefix) ?>" />
|
||||
|
||||
+2
-4
@@ -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);
|
||||
}
|
||||
});
|
||||
|
||||
+1
-1
@@ -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 += $('<div />').html(jsonData.errors[error]).text() + "\n";
|
||||
alert(errors);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left">Your message has been sent successfully.<br /><br /> Message: {message}<br /><br /> Order ID : {order_name}<br /><br /> Attached file : {attached_file}</td>
|
||||
<td align="left">Your message has been sent successfully.<br /><br /> Message: {message}<br /><br /> Order ID : {order_name}<br /><br /> Product : {product_name}<br /><br /> Attached file : {attached_file}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
|
||||
@@ -446,7 +446,7 @@ var ajaxCart = {
|
||||
var name = (this.name.length > 12 ? this.name.substring(0, 10) + '...' : this.name);
|
||||
content += '<a href="' + this.link + '" title="' + this.name + '" class="cart_block_product_name">' + name + '</a>';
|
||||
|
||||
if (parseFloat(this.price_float) > 0)
|
||||
if (this.is_gift != undefined && this.is_gift == 1)
|
||||
content += '<span class="remove_link"><a rel="nofollow" class="ajax_cart_block_remove_link" href="' + baseUri + '?controller=cart&delete=1&id_product=' + productId + '&token=' + static_token + (this.hasAttributes ? '&ipa=' + parseInt(this.idCombination) : '') + '"> </a></span>';
|
||||
else
|
||||
content += '<span class="remove_link"></span>';
|
||||
@@ -568,10 +568,10 @@ var ajaxCart = {
|
||||
if (jsonData.hasError)
|
||||
{
|
||||
var errors = '';
|
||||
for(error in jsonData.errors)
|
||||
for (error in jsonData.errors)
|
||||
//IE6 bug fix
|
||||
if(error != 'indexOf')
|
||||
errors += jsonData.errors[error] + "\n";
|
||||
if (error != 'indexOf')
|
||||
errors += $('<div />').html(jsonData.errors[error]).text() + "\n";
|
||||
alert(errors);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -740,10 +740,38 @@ class BlockCms extends Module
|
||||
|
||||
public function hookActionShopDataDuplication($params)
|
||||
{
|
||||
Db::getInstance()->execute('
|
||||
INSERT IGNORE INTO '._DB_PREFIX_.'cms_block_shop (id_cms_block, id_shop)
|
||||
SELECT id_cms_block, '.(int)$params['new_id_shop'].'
|
||||
FROM '._DB_PREFIX_.'cms_block_shop
|
||||
WHERE id_shop = '.(int)$params['old_id_shop']);
|
||||
//get all cmd block to duplicate in new shop
|
||||
$cms_blocks = Db::getInstance()->executeS('
|
||||
SELECT * FROM `'._DB_PREFIX_.'cms_block` cb
|
||||
LEFT JOIN `'._DB_PREFIX_.'cms_block_shop` cbf
|
||||
ON (cb.`id_cms_block` = cbf.`id_cms_block` AND cbf.`id_shop` = '.(int)$params['old_id_shop'].') ');
|
||||
|
||||
if (count($cms_blocks))
|
||||
{
|
||||
foreach ($cms_blocks as $cms_block)
|
||||
{
|
||||
Db::getInstance()->execute('
|
||||
INSERT IGNORE INTO '._DB_PREFIX_.'cms_block (`id_cms_block`, `id_cms_category`, `location`, `position`, `display_store`)
|
||||
VALUES (NULL, '.(int)$cms_block['id_cms_category'].', '.(int)$cms_block['location'].', '.(int)$cms_block['position'].', '.(int)$cms_block['display_store'].');');
|
||||
|
||||
$id_block_cms = Db::getInstance()->Insert_ID();
|
||||
|
||||
Db::getInstance()->execute('INSERT IGNORE INTO '._DB_PREFIX_.'cms_block_shop (`id_cms_block`, `id_shop`) VALUES ('.(int)$id_block_cms.', '.(int)$params['new_id_shop'].');');
|
||||
|
||||
$langs = Db::getInstance()->executeS('SELECT * FROM `'._DB_PREFIX_.'cms_block_lang` WHERE `id_cms_block` = '.(int)$cms_block['id_cms_block']);
|
||||
|
||||
foreach($langs as $lang)
|
||||
Db::getInstance()->execute('
|
||||
INSERT IGNORE INTO `'._DB_PREFIX_.'cms_block_lang` (`id_cms_block`, `id_lang`, `name`)
|
||||
VALUES ('.(int)$id_block_cms.', '.(int)$lang['id_lang'].', \''.pSQL($lang['name']).'\');');
|
||||
|
||||
$pages = Db::getInstance()->executeS('SELECT * FROM `'._DB_PREFIX_.'cms_block_page` WHERE `id_cms_block` = '.(int)$cms_block['id_cms_block']);
|
||||
|
||||
foreach($pages as $page)
|
||||
Db::getInstance()->execute('
|
||||
INSERT IGNORE INTO `'._DB_PREFIX_.'cms_block_page` (`id_cms_block_page`, `id_cms_block`, `id_cms`, `is_category`)
|
||||
VALUES (NULL, '.(int)$id_block_cms.', '.(int)$page['id_cms'].', '.(int)$page['is_category'].');');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -454,7 +454,7 @@ function upQuantity(id, qty)
|
||||
for(var error in jsonData.errors)
|
||||
//IE6 bug fix
|
||||
if(error !== 'indexOf')
|
||||
errors += jsonData.errors[error] + "\n";
|
||||
errors += $('<div />').html(jsonData.errors[error]).text() + "\n";
|
||||
alert(errors);
|
||||
$('input[name=quantity_'+ id +']').val($('input[name=quantity_'+ id +'_hidden]').val());
|
||||
}
|
||||
@@ -539,7 +539,7 @@ function downQuantity(id, qty)
|
||||
for(var error in jsonData.errors)
|
||||
//IE6 bug fix
|
||||
if(error !== 'indexOf')
|
||||
errors += jsonData.errors[error] + "\n";
|
||||
errors += $('<div />').html(jsonData.errors[error]).text() + "\n";
|
||||
alert(errors);
|
||||
$('input[name=quantity_'+ id +']').val($('input[name=quantity_'+ id +'_hidden]').val());
|
||||
}
|
||||
|
||||
@@ -121,7 +121,7 @@ function updateAddresses()
|
||||
for(var error in jsonData.errors)
|
||||
//IE6 bug fix
|
||||
if(error !== 'indexOf')
|
||||
errors += jsonData.errors[error] + "\n";
|
||||
errors += $('<div />').html(jsonData.errors[error]).text() + "\n";
|
||||
alert(errors);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -93,7 +93,7 @@ function updateAddressSelection()
|
||||
for(var error in jsonData.errors)
|
||||
//IE6 bug fix
|
||||
if(error !== 'indexOf')
|
||||
errors += jsonData.errors[error] + "\n";
|
||||
errors += $('<div />').html(jsonData.errors[error]).text() + "\n";
|
||||
alert(errors);
|
||||
}
|
||||
else
|
||||
@@ -186,7 +186,7 @@ function getCarrierListAndUpdate()
|
||||
for(var error in jsonData.errors)
|
||||
//IE6 bug fix
|
||||
if(error !== 'indexOf')
|
||||
errors += jsonData.errors[error] + "\n";
|
||||
errors += $('<div />').html(jsonData.errors[error]).text() + "\n";
|
||||
alert(errors);
|
||||
}
|
||||
else
|
||||
@@ -236,7 +236,7 @@ function updateCarrierSelectionAndGift()
|
||||
for(var error in jsonData.errors)
|
||||
//IE6 bug fix
|
||||
if(error !== 'indexOf')
|
||||
errors += jsonData.errors[error] + "\n";
|
||||
errors += $('<div />').html(jsonData.errors[error]).text() + "\n";
|
||||
alert(errors);
|
||||
}
|
||||
else
|
||||
@@ -703,7 +703,7 @@ function bindInputs()
|
||||
for(var error in jsonData.errors)
|
||||
//IE6 bug fix
|
||||
if(error !== 'indexOf')
|
||||
errors += jsonData.errors[error] + "\n";
|
||||
errors += $('<div />').html(jsonData.errors[error]).text() + "\n";
|
||||
alert(errors);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -170,7 +170,7 @@ function bindInputs()
|
||||
for(var error in jsonData.errors)
|
||||
//IE6 bug fix
|
||||
if(error !== 'indexOf')
|
||||
errors += jsonData.errors[error] + "\n";
|
||||
errors += $('<div />').html(jsonData.errors[error]).text() + "\n";
|
||||
alert(errors);
|
||||
}
|
||||
else
|
||||
@@ -254,7 +254,7 @@ function updateCarrierSelectionAndGift()
|
||||
for(var error in jsonData.errors)
|
||||
//IE6 bug fix
|
||||
if(error !== 'indexOf')
|
||||
errors += jsonData.errors[error] + "\n";
|
||||
errors += $('<div />').html(jsonData.errors[error]).text() + "\n";
|
||||
alert(errors);
|
||||
}
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user