From 9026856a911e63950b0f0b69f1f65fdf8ccb66f3 Mon Sep 17 00:00:00 2001 From: shish <shish@7f39781d-f577-437e-ae19-be835c7a54ca> Date: Sun, 18 May 2008 02:17:16 +0000 Subject: [PATCH] backing off of xmldb D: git-svn-id: file:///home/shish/svn/shimmie2/trunk@852 7f39781d-f577-437e-ae19-be835c7a54ca --- contrib/ipban/main.php | 64 ++++++++++++++++++++++++++++++---------- contrib/ipban/schema.xml | 19 ------------ 2 files changed, 49 insertions(+), 34 deletions(-) delete mode 100644 contrib/ipban/schema.xml diff --git a/contrib/ipban/main.php b/contrib/ipban/main.php index 58e624bd..6dc3a5b6 100644 --- a/contrib/ipban/main.php +++ b/contrib/ipban/main.php @@ -37,7 +37,7 @@ class IPBan extends Extension { if(is_a($event, 'InitExtEvent')) { global $config; - if($config->get_int("ext_ipban_version") < 5) { + if($config->get_int("ext_ipban_version") < 3) { $this->install(); } @@ -95,8 +95,46 @@ class IPBan extends Extension { global $database; global $config; - if($config->get_int("ext_ipban_version") < 3) { - $database->upgrade_schema("ext/ipban/schema.xml"); + // shortcut to latest + if($config->get_int("ext_ipban_version") < 1) { + $database->execute(" + CREATE TABLE bans ( + id {$database->engine->auto_increment}, + banner_id INTEGER NOT NULL, + ip CHAR(15) NOT NULL, + end DATETIME NOT NULL, + reason TEXT NOT NULL, + INDEX (end) + ) {$database->engine->create_table_extras}; + "); + $config->set_int("ext_ipban_version", 3); + } + + // === + + 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") == 1) { + $database->execute("ALTER TABLE bans ADD COLUMN banner_id INTEGER NOT NULL AFTER id"); + $config->set_int("ext_ipban_version", 2); + } + + if($config->get_int("ext_ipban_version") == 2) { + $database->execute("ALTER TABLE bans DROP COLUMN date"); + $database->execute("ALTER TABLE bans CHANGE ip ip CHAR(20) NOT NULL"); + $database->execute("ALTER TABLE bans CHANGE reason reason TEXT NOT NULL"); + $database->execute("CREATE INDEX bans__end ON bans(end)"); + $config->set_int("ext_ipban_version", 3); } } // }}} @@ -127,33 +165,29 @@ class IPBan extends Extension { // database {{{ private function get_bans() { global $database; - $bans = $database->get_all("SELECT * FROM bans ORDER BY date"); + $bans = $database->get_all("SELECT * FROM bans ORDER BY end, id"); if($bans) {return $bans;} else {return array();} } private function get_active_bans() { global $database; - $bans = $database->get_all("SELECT * FROM bans WHERE (date < now()) AND (end > now() OR isnull(end))"); + $bans = $database->get_all("SELECT * FROM bans WHERE (end > now() OR isnull(end))"); if($bans) {return $bans;} else {return array();} } - private function get_ip_ban($ip) { - global $database; - return $database->db->GetRow("SELECT * FROM bans WHERE ip = ? AND date < now() AND (end > now() OR isnull(end))", array($ip)); - } - private function add_ip_ban($ip, $reason, $end, $user) { global $database; - if(preg_match("/^\d+ (day|week|month)$/i", $end)) { - $sql = "INSERT INTO bans (ip, reason, date, end, banner_id) - VALUES (?, ?, now(), now() + interval $end, ?)"; + $parts = array(); + if(preg_match("/^(\d+) (day|week|month)s?$/i", $end, $parts)) { + $sql = "INSERT INTO bans (ip, reason, end, banner_id) + VALUES (?, ?, now() + interval {$parts[1]} {$parts[2]}, ?)"; $database->Execute($sql, array($ip, $reason, $user->id)); } else { - $sql = "INSERT INTO bans (ip, reason, date, end, banner_id) - VALUES (?, ?, now(), ?, ?)"; + $sql = "INSERT INTO bans (ip, reason, end, banner_id) + VALUES (?, ?, ?, ?)"; $database->Execute($sql, array($ip, $reason, $end, $user->id)); } } diff --git a/contrib/ipban/schema.xml b/contrib/ipban/schema.xml deleted file mode 100644 index 168b1cb4..00000000 --- a/contrib/ipban/schema.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0"?> -<schema version="0.3"> - <!-- FIXME: mysql utf8ness --> - <table name="bans"> - <field name="id" type="I"><key/><autoincrement/></field> - <field name="banner_id" type="I"><notnull/></field> - <field name="ip" type="C" size="20"><notnull/></field> - <field name="date" type="D"><notnull/></field> - <field name="end" type="D"><notnull/></field> - <field name="reason" type="C" size="255"><notnull/></field> - <index name="bans__ip"><col>ip</col></index> - <opt platform="mysql">DEFAULT CHARSET='utf8'</opt> - </table> - - <sql> - <query>DELETE FROM config WHERE name='ext_ipban_version'</query> - <query>INSERT INTO config(name, value) VALUES('ext_ipban_version', 5)</query> - </sql> -</schema>