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);