Skip to content

Commit ce33319

Browse files
authored
Merge pull request #1595 from Marc-pi/develop
Add InnoDB migration tool
2 parents 2607fbf + e63e2ed commit ce33319

File tree

3 files changed

+35
-4
lines changed

3 files changed

+35
-4
lines changed

usr/module/system/src/Controller/Admin/DatabaseController.php

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public function checkAction()
3232

3333
$tablesError = [];
3434
$columnsError = [];
35+
$innodbError = [];
3536

3637
foreach ($results->toArray() as $result) {
3738
$tableName = array_shift($result);
@@ -44,10 +45,13 @@ public function checkAction()
4445

4546

4647
foreach ($res->toArray() as $params) {
47-
4848
if ($params['Collation'] && $params['Collation'] != 'utf8_general_ci') {
4949
$tablesError[$tableName] = $params['Collation'];
5050
}
51+
52+
if ($params['Engine'] && $params['Engine'] != 'InnoDB') {
53+
$innodbError[$tableName] = $params['Engine'];
54+
}
5155
}
5256

5357
$sql
@@ -66,5 +70,18 @@ public function checkAction()
6670

6771
$this->view()->assign('columnsError', $columnsError);
6872
$this->view()->assign('tablesError', $tablesError);
73+
$this->view()->assign('innodbError', $innodbError);
74+
}
75+
76+
public function migrateAction()
77+
{
78+
$table = $this->params('table');
79+
80+
if($table){
81+
$sql = "ALTER TABLE $table ENGINE=InnoDB;";
82+
Pi::db()->getAdapter()->query($sql, 'execute');
83+
}
84+
85+
$this->redirect()->toRoute('', ['action' => 'check']);
6986
}
7087
}

usr/module/system/template/admin/database-check.phtml

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
</a>
1616
</div>
1717
<div class="row">
18-
<div class="col-md-6">
18+
<div class="col-md-4">
1919
<div class="panel panel-default">
2020
<div class="panel-heading">
2121
<?php echo _a('Results for tables'); ?>
@@ -25,7 +25,7 @@
2525
</div>
2626
</div>
2727
</div>
28-
<div class="col-md-6">
28+
<div class="col-md-4">
2929
<div class="panel panel-default">
3030
<div class="panel-heading">
3131
<?php echo _a('Results for columns'); ?>
@@ -35,5 +35,19 @@
3535
</div>
3636
</div>
3737
</div>
38+
<div class="col-md-4">
39+
<div class="panel panel-default">
40+
<div class="panel-heading">
41+
<?php echo _a('Results for InnoDB check'); ?>
42+
</div>
43+
<div class="panel-body">
44+
<ul>
45+
<?php foreach($innodbError as $tableName => $tableType) : ?>
46+
<li><?php echo $tableName ?> (<?php echo $tableType ?>) => <a href="<?php echo $this->url('', ['action' => 'migrate']); ?>?table=<?php echo $tableName ?>">InnoDB</a></li>
47+
<?php endforeach; ?>
48+
</ul>
49+
</div>
50+
</div>
51+
</div>
3852
</div>
3953
</div>

usr/module/system/template/admin/database-index.phtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<div class="col-md-3 text-right">
2222
<a href="<?php echo $this->url('', ['action' => 'check']); ?>" class="btn btn-primary btn-sm">
2323
<i class="fa fa-cog" aria-hidden="true"></i>
24-
<?php echo _a('Check UTF8'); ?>
24+
<?php echo _a('Check UTF8 and Innodb'); ?>
2525
</a>
2626
</div>
2727
</div>

0 commit comments

Comments
 (0)