diff --git a/module/admin/control.php b/module/admin/control.php
index 7061b75c1c..40febca28c 100644
--- a/module/admin/control.php
+++ b/module/admin/control.php
@@ -393,22 +393,36 @@ class admin extends control
* @access public
* @return void
*/
- public function ajaxChangeTableEngine($tableName)
+ public function ajaxChangeTableEngine()
{
$response = array();
- $response['result'] = 'success';
- $response['message'] = '';
+ $response['result'] = 'success';
+ $response['message'] = '';
+ $response['thisTable'] = '';
+ $response['nextTable'] = '';
$tableEngines = $this->loadModel('misc')->getTableEngines();
- if(!isset($tableEngines[$tableName]))
+
+ $thisTable = '';
+ $nextTable = '';
+ foreach($tableEngines as $table => $engine)
{
- $response['result'] = 'fail';
- return print(json_encode($response));
+ if($engine == 'InnoDB') continue;
+
+ if(stripos($table, 'searchindex') !== false)
+ {
+ $mysqlVersion = $this->loadModel('install')->getMysqlVersion();
+ if($mysqlVersion < 5.6) continue;
+ }
+
+ if($thisTable and empty($nextTable)) $nextTable = $table;
+ if(empty($thisTable)) $thisTable = $table;
+ if($thisTable and $nextTable) break;
}
- if($tableEngines[$tableName] == 'InnoDB')
+ if(empty($thisTable))
{
- $response['message'] = sprintf($this->lang->admin->changeSuccess, $tableName);
+ $response['result'] = 'finished';
return print(json_encode($response));
}
@@ -419,36 +433,28 @@ class admin extends control
foreach($dbProcesses as $dbProcess)
{
if($dbProcess->db != $this->config->db->name) continue;
- if(strpos($dbProcess->Info, " {$tableName} ") !== false)
+ if(strpos($dbProcess->Info, " {$thisTable} ") !== false)
{
- $response['message'] = sprintf($this->lang->upgrade->changingTable, $tableName);
+ $response['message'] = sprintf($this->lang->upgrade->changingTable, $thisTable);
return print(json_encode($response));
}
}
}
catch(PDOException $e){}
- if(stripos($tableName, 'searchindex') !== false)
- {
- $mysqlVersion = $this->loadModel('install')->getMysqlVersion();
- if($mysqlVersion < 5.6)
- {
- $response['result'] = 'fail';
- $response['message'] = $this->lang->admin->errorInnodb;
- return print(json_encode($response));
- }
- }
+ $response['thisTable'] = $thisTable;
+ $response['nextTable'] = $nextTable;
try
{
- $sql = "ALTER TABLE `$tableName` ENGINE='InnoDB'";
+ $sql = "ALTER TABLE `$thisTable` ENGINE='InnoDB'";
$this->dao->exec($sql);
- $response['message'] = sprintf($this->lang->admin->changeSuccess, $tableName);
+ $response['message'] = sprintf($this->lang->admin->changeSuccess, $thisTable);
}
catch(PDOException $e)
{
$response['result'] = 'fail';
- $response['message'] = sprintf($this->lang->admin->changeFail, $tableName, htmlspecialchars($e->getMessage()));
+ $response['message'] = sprintf($this->lang->admin->changeFail, $thisTable, htmlspecialchars($e->getMessage()));
}
return print(json_encode($response));
diff --git a/module/admin/lang/de.php b/module/admin/lang/de.php
index b498651993..4911a17729 100644
--- a/module/admin/lang/de.php
+++ b/module/admin/lang/de.php
@@ -35,6 +35,7 @@ $lang->admin->changingTable = 'Replacing data table %s engine...';
$lang->admin->changeSuccess = 'The data table %s engine has been changed to InnoDB.';
$lang->admin->changeFail = "Failed to replace table %s engine. Reason: %s。";
$lang->admin->errorInnodb = 'Your MySQL does not support InnoDB data table engine.';
+$lang->admin->changeFinished = "Database engine replacement completed.";
$lang->admin->engineInfo = "The %s table engine is %s.";
$lang->admin->engineSummary['hasMyISAM'] = "There are %s tables that are not InnoDB engines";
$lang->admin->engineSummary['allInnoDB'] = "All tables are InnoDB engines";
diff --git a/module/admin/lang/en.php b/module/admin/lang/en.php
index c850026926..1c8d55ebc2 100644
--- a/module/admin/lang/en.php
+++ b/module/admin/lang/en.php
@@ -35,6 +35,7 @@ $lang->admin->changingTable = 'Replacing data table %s engine...';
$lang->admin->changeSuccess = 'The data table %s engine has been changed to InnoDB.';
$lang->admin->changeFail = "Failed to replace table %s engine. Reason: %s。";
$lang->admin->errorInnodb = 'Your MySQL does not support InnoDB data table engine.';
+$lang->admin->changeFinished = "Database engine replacement completed.";
$lang->admin->engineInfo = "The %s table engine is %s.";
$lang->admin->engineSummary['hasMyISAM'] = "There are %s tables that are not InnoDB engines";
$lang->admin->engineSummary['allInnoDB'] = "All tables are InnoDB engines";
diff --git a/module/admin/lang/fr.php b/module/admin/lang/fr.php
index a7749f2a4b..4bb1433680 100644
--- a/module/admin/lang/fr.php
+++ b/module/admin/lang/fr.php
@@ -35,6 +35,7 @@ $lang->admin->changingTable = 'Replacing data table %s engine...';
$lang->admin->changeSuccess = 'The data table %s engine has been changed to InnoDB.';
$lang->admin->changeFail = "Failed to replace table %s engine. Reason: %s。";
$lang->admin->errorInnodb = 'Your MySQL does not support InnoDB data table engine.';
+$lang->admin->changeFinished = "Database engine replacement completed.";
$lang->admin->engineInfo = "The %s table engine is %s.";
$lang->admin->engineSummary['hasMyISAM'] = "There are %s tables that are not InnoDB engines";
$lang->admin->engineSummary['allInnoDB'] = "All tables are InnoDB engines";
diff --git a/module/admin/lang/zh-cn.php b/module/admin/lang/zh-cn.php
index 10d8a111a6..51b9e2c510 100644
--- a/module/admin/lang/zh-cn.php
+++ b/module/admin/lang/zh-cn.php
@@ -35,6 +35,7 @@ $lang->admin->changingTable = '正在更换数据表%s引擎...';
$lang->admin->changeSuccess = '已经更换数据表%s引擎为InnoDB。';
$lang->admin->changeFail = "更换数据表%s引擎失败,原因:%s。";
$lang->admin->errorInnodb = '您当前的数据库不支持使用InnoDB数据表引擎。';
+$lang->admin->changeFinished = "更换数据库引擎完毕。";
$lang->admin->engineInfo = "表%s的引擎是%s。";
$lang->admin->engineSummary['hasMyISAM'] = "有%s个表不是InnoDB引擎";
$lang->admin->engineSummary['allInnoDB'] = "所有的表都是InnoDB引擎了";
diff --git a/module/admin/view/tableengine.html.php b/module/admin/view/tableengine.html.php
index 32d83293de..84db4ddfba 100644
--- a/module/admin/view/tableengine.html.php
+++ b/module/admin/view/tableengine.html.php
@@ -36,6 +36,7 @@
admin->changingTable);?>
+admin->engineSummary['hasMyISAM']);?>