diff --git a/ext/comment/main.php b/ext/comment/main.php
index 154b205d..6a35fe80 100644
--- a/ext/comment/main.php
+++ b/ext/comment/main.php
@@ -145,23 +145,7 @@ class CommentList extends Extension {
global $config;
if($config->get_int("ext_comments_version") < 1) {
- $database->Execute("CREATE TABLE `comments` (
- `id` int(11) NOT NULL auto_increment,
- `image_id` int(11) NOT NULL,
- `owner_id` int(11) NOT NULL,
- `owner_ip` char(16) NOT NULL,
- `posted` datetime default NULL,
- `comment` text NOT NULL,
- PRIMARY KEY (`id`),
- KEY `comments_image_id` (`image_id`)
- )");
- $config->set_int("ext_comments_version", 1);
- }
-
- if($config->get_int("ext_comments_version") == 1) {
- $database->Execute("CREATE INDEX comments_owner_ip ON comments(owner_ip)");
- $database->Execute("CREATE INDEX comments_posted ON comments(posted)");
- $config->set_int("ext_comments_version", 2);
+ $database->upgrade_schema("ext/comment/schema.xml");
}
}
// }}}
diff --git a/ext/comment/schema.xml b/ext/comment/schema.xml
new file mode 100644
index 00000000..f6749bcb
--- /dev/null
+++ b/ext/comment/schema.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+ image_id
+ owner_ip
+ posted
+ DEFAULT CHARSET='utf8'
+
+
+
+ DELETE FROM config WHERE name='ext_comments_version'
+ INSERT INTO config(name, value) VALUES('ext_comments_version', 3)
+
+
diff --git a/ext/ipban/main.php b/ext/ipban/main.php
index f6668171..0bf157f5 100644
--- a/ext/ipban/main.php
+++ b/ext/ipban/main.php
@@ -84,21 +84,8 @@ class IPBan extends Extension {
global $database;
global $config;
- if($config->get_int("ext_ipban_version") < 1) {
- $database->Execute("CREATE TABLE bans (
- id int(11) NOT NULL auto_increment,
- ip char(15) default NULL,
- date datetime default NULL,
- end datetime default NULL,
- reason varchar(255) default NULL,
- PRIMARY KEY (id)
- )");
- $config->set_int("ext_ipban_version", 1);
- }
- if($config->get_int("ext_ipban_version") < 2) {
- $database->execute("ALTER TABLE bans CHANGE ip ip CHAR(15) NOT NULL");
- $database->execute("ALTER TABLE bans ADD COLUMN banner_id INTEGER NOT NULL");
- $config->set_int("ext_ipban_version", 2);
+ if($config->get_int("ext_ipban_version") < 3) {
+ $database->upgrade_schema("ext/ipban/schema.xml");
}
}
// }}}
diff --git a/ext/ipban/schema.xml b/ext/ipban/schema.xml
new file mode 100644
index 00000000..7b68487a
--- /dev/null
+++ b/ext/ipban/schema.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+ ip
+ DEFAULT CHARSET='utf8'
+
+
+
+ DELETE FROM config WHERE name='ext_ipban_version'
+ INSERT INTO config(name, value) VALUES('ext_ipban_version', 3)
+
+
diff --git a/ext/upgrade/main.php b/ext/upgrade/main.php
index c4ad4e9d..3ffdce51 100644
--- a/ext/upgrade/main.php
+++ b/ext/upgrade/main.php
@@ -11,83 +11,13 @@ class Upgrade extends Extension {
global $config;
global $database;
- if($config->get_bool("in_upgrade")) {
- return;
- }
-
-
if(!is_numeric($config->get_string("db_version"))) {
$config->set_int("db_version", 2);
}
-
- if($config->get_int("db_version") <= 2) {
- $database->Execute("CREATE TABLE layout (
- title varchar(64) primary key not null,
- section varchar(32) not null default \"left\",
- position int not null default 50,
- visible enum('Y', 'N') default 'Y' not null
- )");
- $config->set_int("db_version", 3);
- }
-
- if($config->get_int("db_version") == 3) {
- $config->set_bool("in_upgrade", true);
- $database->Execute("RENAME TABLE tags TO old_tags");
- $database->Execute("CREATE TABLE tags (
- id int not null auto_increment primary key,
- tag varchar(64) not null unique,
- count int not null default 0,
- KEY tags_count(count)
- )");
- $database->Execute("CREATE TABLE image_tags (
- image_id int NOT NULL default 0,
- tag_id int NOT NULL default 0,
- UNIQUE KEY image_id_tag_id (image_id,tag_id),
- KEY tags_tag_id (tag_id),
- KEY tags_image_id (image_id)
- )");
- $config->set_int("db_version", 4);
- $config->set_bool("in_upgrade", false);
- }
- if($config->get_int("db_version") == 4) {
- $config->set_bool("in_upgrade", true);
- $database->Execute("DELETE FROM tags");
- $database->Execute("INSERT INTO tags(tag) SELECT DISTINCT tag FROM old_tags");
- $database->Execute("DELETE FROM image_tags");
- $database->Execute("INSERT INTO image_tags(image_id, tag_id) SELECT old_tags.image_id, tags.id FROM old_tags JOIN tags ON old_tags.tag = tags.tag");
- $database->Execute("UPDATE tags SET count=(SELECT COUNT(image_id) FROM image_tags WHERE tag_id=tags.id GROUP BY tag_id)");
- $config->set_int("db_version", 5);
- $config->set_bool("in_upgrade", false);
+ if($config->get_int("db_version") < 6) {
+ $database->upgrade_schema("ext/upgrade/schema.xml");
}
-
- if($config->get_int("db_version") == 5) {
- $config->set_bool("in_upgrade", true);
- $tables = $database->db->GetCol("SHOW TABLES");
- foreach($tables as $table) {
- $database->Execute("ALTER TABLE $table CONVERT TO CHARACTER SET utf8");
- }
- $config->set_int("db_version", 6);
- $config->set_bool("in_upgrade", false);
- }
-
-/*
- if($config->get_int("db_version") == -1) {
- $database->Execute("ALTER TABLE users ADD COLUMN parent INTEGER");
- $database->Execute("ALTER TABLE users ADD COLUMN is_template ENUM('Y','N') DEFAULT 'N'");
- $database->Execute("INSERT INTO users(name, is_template) VALUES(?, 'Y')", array("[Anonymous]"));
- $database->Execute("INSERT INTO users(name, is_template) VALUES(?, 'Y')", array("[User]"));
- $database->Execute("INSERT INTO users(name, is_template) VALUES(?, 'Y')", array("[Moderator]"));
- $database->Execute("INSERT INTO users(name, is_template) VALUES(?, 'Y')", array("[Admin]"));
- $anon_id = $database->db->GetOne("SELECT id FROM users WHERE name=?", array("[Anonymous]"));
- $user_id = $database->db->GetOne("SELECT id FROM users WHERE name=?", array("[User]"));
- $admin_id = $database->db->GetOne("SELECT id FROM users WHERE name=?", array("[Admin]"));
- $database->Execute("UPDATE users SET parent=?", array($user_id));
- $database->Execute("UPDATE users SET parent=? WHERE password IS NULL", array($anon_id));
- $database->Execute("UPDATE users SET parent=? WHERE is_admin='Y'", array($admin_id));
- $config->set_int("db_version", 7);
- }
-*/
}
}
add_event_listener(new Upgrade(), 5);
diff --git a/ext/upgrade/schema.xml b/ext/upgrade/schema.xml
new file mode 100644
index 00000000..23db4206
--- /dev/null
+++ b/ext/upgrade/schema.xml
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+ oldtagnewtag
+ DEFAULT CHARSET='utf8'
+
+
+
+
+
+ DEFAULT CHARSET='utf8'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ owner_id
+ hash
+ width
+ height
+ DEFAULT CHARSET='utf8'
+
+
+
+
+
+
+
+
+
+
+ name
+ DEFAULT CHARSET='utf8'
+
+
+
+
+
+
+ tag
+ DEFAULT CHARSET='utf8'
+
+
+
+
+
+ image_id
+ tag_id
+ image_idtag_id
+ DEFAULT CHARSET='utf8'
+
+
+
+ DELETE FROM config WHERE name='db_version'
+ INSERT INTO config(name, value) VALUES('db_version', 6)
+
+