diff --git a/htdocs/admin/accountant.php b/htdocs/admin/accountant.php
index aa60a5f7def..e2168f45de4 100644
--- a/htdocs/admin/accountant.php
+++ b/htdocs/admin/accountant.php
@@ -50,6 +50,8 @@ if (!$user->admin) {
$error = 0;
+$object = new stdClass();
+
/*
* Actions
diff --git a/htdocs/admin/system/database-tables.php b/htdocs/admin/system/database-tables.php
index 5742cd16e29..44019b61de2 100644
--- a/htdocs/admin/system/database-tables.php
+++ b/htdocs/admin/system/database-tables.php
@@ -57,9 +57,13 @@ $action = GETPOST('action', 'aZ09');
* Actions
*/
+$sqllog = '';
+$resultsql = true;
+
if ($action == 'convert') { // Convert engine into innodb
$sql = "ALTER TABLE ".$db->sanitize($table)." ENGINE=INNODB";
- $db->query($sql);
+ $sqllog .= $sql.'
';
+ $resultsql = $db->query($sql);
}
if ($action == 'convertutf8') {
$collation = 'utf8_unicode_ci';
@@ -68,14 +72,18 @@ if ($action == 'convertutf8') {
$collation = 'utf8_general_ci';
}
$sql = "ALTER TABLE ".$db->sanitize($table)." CHARACTER SET utf8 COLLATE ".$db->sanitize($collation); // Set the default value on table
+ $sqllog .= $sql.'
';
$resql1 = $db->query($sql);
if (!$resql1) {
setEventMessages($db->lasterror(), null, 'warnings');
+ $resultsql = $resql1;
} else {
$sql = "ALTER TABLE ".$db->sanitize($table)." CONVERT TO CHARACTER SET utf8 COLLATE ".$db->sanitize($collation); // Switch fields (may fails due to foreign key)
+ $sqllog .= $sql.'
';
$resql2 = $db->query($sql);
if (!$resql2) {
setEventMessages($db->lasterror(), null, 'warnings');
+ $resultsql = $resql2;
}
}
}
@@ -86,20 +94,25 @@ if ($action == 'convertutf8mb4') {
$collation = 'utf8mb4_general_ci';
}
$sql = "ALTER TABLE ".$db->sanitize($table)." CHARACTER SET utf8mb4 COLLATE ".$db->sanitize($collation); // Set the default value on table
+ $sqllog .= $sql.'
';
$resql1 = $db->query($sql);
if (!$resql1) {
setEventMessages($db->lasterror(), null, 'warnings');
+ $resultsql = $resql1;
} else {
$sql = "ALTER TABLE ".$db->sanitize($table)." CONVERT TO CHARACTER SET utf8mb4 COLLATE ".$db->sanitize($collation); // Switch fields (may fails due to foreign key)
+ $sqllog .= $sql.'
';
$resql2 = $db->query($sql);
if (!$resql2) {
setEventMessages($db->lasterror(), null, 'warnings');
+ $resultsql = $resql2;
}
}
}
if ($action == 'convertdynamic') {
$sql = "ALTER TABLE ".$db->sanitize($table)." ROW_FORMAT=DYNAMIC;";
- $db->query($sql);
+ $sqllog .= $sql.'
';
+ $resultsql = $db->query($sql);
}
@@ -109,8 +122,13 @@ if ($action == 'convertdynamic') {
llxHeader('', '', '', '', 0, 0, '', '', '', 'mod-admin page-database_tables');
-print load_fiche_titre($langs->trans("Tables")." ".ucfirst($conf->db->type), '', 'title_setup');
+$linkback = ''.img_picto($langs->trans("Back"), 'back', 'class="pictofixedwidth"').''.$langs->trans("Back").'';
+print load_fiche_titre($langs->trans("Tables")." ".ucfirst($conf->db->type), $linkback, 'title_setup');
+
+if ($sqllog) {
+ print info_admin($sqllog.' '.(empty($resultsql) ? ' => KO '.$db->lasterror() : ' => OK'));
+}
// Define request to get table description
$base = 0;
@@ -216,10 +234,10 @@ if (!$base) {
if (isset($obj->Collation)) {
print '
'.$langs->trans("ConvertInto");
if (!in_array($obj->Collation, array("utf8_unicode_ci"))) {
- print ' utf8';
+ print ' utf8';
}
if (!in_array($obj->Collation, array("utf8mb4_unicode_ci"))) {
- print ' utf8mb4';
+ print ' utf8mb4';
}
print '';
}
diff --git a/htdocs/admin/system/database.php b/htdocs/admin/system/database.php
index 40e6b6c68f1..4d12a2b4005 100644
--- a/htdocs/admin/system/database.php
+++ b/htdocs/admin/system/database.php
@@ -53,21 +53,28 @@ if (!$user->admin) {
* Actions
*/
+$sqllog = '';
+$resultsql = null;
+
if ($action == 'convertutf8unicode') { // Test on permission already done.
$sql = "ALTER DATABASE ".$db->sanitize($db->database_name)." CHARACTER SET utf8 COLLATE utf8_unicode_ci";
- $db->query($sql);
+ $sqllog .= $sql.'
';
+ $resultsql = $db->query($sql);
}
if ($action == 'convertutf8mb4unicode') { // Test on permission already done.
- $sql = "ALTER DATABASE CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci";
- $db->query($sql);
+ $sql = "ALTER DATABASE ".$db->sanitize($db->database_name)." CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci";
+ $sqllog .= $sql.'
';
+ $resultsql = $db->query($sql);
}
if ($action == 'convertutf8general') { // Test on permission already done.
$sql = "ALTER DATABASE ".$db->sanitize($db->database_name)." CHARACTER SET utf8 COLLATE utf8_general_ci";
- $db->query($sql);
+ $sqllog .= $sql.'
';
+ $resultsql = $db->query($sql);
}
if ($action == 'convertutf8mb4general') { // Test on permission already done.
$sql = "ALTER DATABASE ".$db->sanitize($db->database_name)." CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci";
- $db->query($sql);
+ $sqllog .= $sql.'
';
+ $resultsql = $db->query($sql);
}
@@ -81,6 +88,10 @@ llxHeader('', '', '', '', 0, 0, '', '', '', 'mod-admin page-system_database');
print load_fiche_titre($langs->trans("InfoDatabase"), '', 'title_setup');
+if ($sqllog) {
+ print info_admin($sqllog.' '.(empty($resultsql) ? ' => KO '.$db->lasterror() : ' => OK'));
+}
+
// Database
print '
| '.$langs->trans("Password").' | '.$langs->trans("DBStoringCharset").' | '.$db->getDefaultCharacterSetDatabase();
if ($db->type == 'mysqli') {
$tooltipexample = " SHOW VARIABLES LIKE 'character_set_database' (cached) You can avoid cache effect with: SELECT DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '".$db->escape($conf->db->name)."'"; - print ' '.$form->textwithpicto('', $langs->transnoentitiesnoconv("HelpMariaDBToGetValue", $tooltipexample.' '.$langs->transnoentitiesnoconv("HelpMariaDBToGetPossibleValues", " SHOW CHARSET")." Example to change value: ALTER DATABASE ".$conf->db->name." CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;")); + print ' '.$form->textwithpicto('', $langs->transnoentitiesnoconv("HelpMariaDBToGetValue", $tooltipexample.' '.$langs->transnoentitiesnoconv("HelpMariaDBToGetPossibleValues", " SHOW CHARSET")." Example to change value: ALTER DATABASE ".$conf->db->name." CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"), 1, 'help', 'valignmiddle', 0, 3, 'tooltipcharset'); // We can use $db->getDefaultCharacterSetDatabase(), $db->getListOfCharacterSet(), } print ' |