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