diff --git a/ext/admin/main.php b/ext/admin/main.php
index 6548c325..83779d98 100644
--- a/ext/admin/main.php
+++ b/ext/admin/main.php
@@ -57,6 +57,10 @@ class AdminPage implements Extension {
$this->purge_unused_tags();
$redirect = true;
break;
+ case 'convert to innodb':
+ $this->convert_to_innodb();
+ $redirect = true;
+ break;
case 'database dump':
$this->dbdump($page);
break;
@@ -142,6 +146,17 @@ class AdminPage implements Extension {
}
}
}
+
+ private function convert_to_innodb() {
+ global $database;
+ if($database->engine->name == "mysql") {
+ $tables = $database->db->MetaTables();
+ foreach($tables as $table) {
+ log_info("upgrade", "converting $table to innodb");
+ $database->execute("ALTER TABLE $table TYPE=INNODB");
+ }
+ }
+ }
}
add_event_listener(new AdminPage());
?>
diff --git a/ext/admin/theme.php b/ext/admin/theme.php
index 986ba11b..c3d3dab8 100644
--- a/ext/admin/theme.php
+++ b/ext/admin/theme.php
@@ -40,6 +40,7 @@ class AdminPageTheme extends Themelet {
+
diff --git a/ext/upgrade/main.php b/ext/upgrade/main.php
index 6be6e92a..d4847cf8 100644
--- a/ext/upgrade/main.php
+++ b/ext/upgrade/main.php
@@ -18,9 +18,20 @@ class Upgrade implements Extension {
// cry :S
}
- if($config->get_int("db_version") < 6) { // 7
- // add column image->locked
+ if($config->get_int("db_version") < 7) {
+ if($database->engine->name == "mysql") {
+ $tables = $database->db->MetaTables();
+ foreach($tables as $table) {
+ log_info("upgrade", "converting $table to innodb");
+ $database->execute("ALTER TABLE $table TYPE=INNODB");
+ }
+ }
+ $config->set_int("db_version", 7);
+ log_info("Database at version 7");
}
+
+ // TODO:
+ // add column image->locked
}
}
add_event_listener(new Upgrade(), 5);