xmldb removal changes to 2.2
git-svn-id: file:///home/shish/svn/shimmie2/branches/branch_2.2@855 7f39781d-f577-437e-ae19-be835c7a54ca
This commit is contained in:
		
							parent
							
								
									3f0d6562ef
								
							
						
					
					
						commit
						c2ab5e5fcd
					
				@ -37,7 +37,7 @@ class IPBan extends Extension {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		if(is_a($event, 'InitExtEvent')) {
 | 
							if(is_a($event, 'InitExtEvent')) {
 | 
				
			||||||
			global $config;
 | 
								global $config;
 | 
				
			||||||
			if($config->get_int("ext_ipban_version") < 5) {
 | 
								if($config->get_int("ext_ipban_version") < 3) {
 | 
				
			||||||
				$this->install();
 | 
									$this->install();
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
@ -95,8 +95,46 @@ class IPBan extends Extension {
 | 
				
			|||||||
		global $database;
 | 
							global $database;
 | 
				
			||||||
		global $config;
 | 
							global $config;
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		if($config->get_int("ext_ipban_version") < 3) {
 | 
							// shortcut to latest
 | 
				
			||||||
			$database->upgrade_schema("ext/ipban/schema.xml");
 | 
							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 {{{
 | 
					// database {{{
 | 
				
			||||||
	private function get_bans() {
 | 
						private function get_bans() {
 | 
				
			||||||
		global $database;
 | 
							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;}
 | 
							if($bans) {return $bans;}
 | 
				
			||||||
		else {return array();}
 | 
							else {return array();}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private function get_active_bans() {
 | 
						private function get_active_bans() {
 | 
				
			||||||
		global $database;
 | 
							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;}
 | 
							if($bans) {return $bans;}
 | 
				
			||||||
		else {return array();}
 | 
							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) {
 | 
						private function add_ip_ban($ip, $reason, $end, $user) {
 | 
				
			||||||
		global $database;
 | 
							global $database;
 | 
				
			||||||
		if(preg_match("/^\d+ (day|week|month)$/i", $end)) {
 | 
							$parts = array();
 | 
				
			||||||
			$sql = "INSERT INTO bans (ip, reason, date, end, banner_id)
 | 
							if(preg_match("/^(\d+) (day|week|month)s?$/i", $end, $parts)) {
 | 
				
			||||||
			        VALUES (?, ?, now(), now() + interval $end, ?)";
 | 
								$sql = "INSERT INTO bans (ip, reason, end, banner_id)
 | 
				
			||||||
 | 
								        VALUES (?, ?, now() + interval {$parts[1]} {$parts[2]}, ?)";
 | 
				
			||||||
			$database->Execute($sql, array($ip, $reason, $user->id));
 | 
								$database->Execute($sql, array($ip, $reason, $user->id));
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		else {
 | 
							else {
 | 
				
			||||||
			$sql = "INSERT INTO bans (ip, reason, date, end, banner_id)
 | 
								$sql = "INSERT INTO bans (ip, reason, end, banner_id)
 | 
				
			||||||
			        VALUES (?, ?, now(), ?, ?)";
 | 
								        VALUES (?, ?, ?, ?)";
 | 
				
			||||||
			$database->Execute($sql, array($ip, $reason, $end, $user->id));
 | 
								$database->Execute($sql, array($ip, $reason, $end, $user->id));
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
				
			|||||||
@ -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>
 | 
					 | 
				
			||||||
@ -29,6 +29,22 @@ class Querylet {
 | 
				
			|||||||
		$this->variables[] = $var;
 | 
							$this->variables[] = $var;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
} // }}}
 | 
					} // }}}
 | 
				
			||||||
 | 
					// {{{ dbengines
 | 
				
			||||||
 | 
					class DBEngine {
 | 
				
			||||||
 | 
						var $name = null;
 | 
				
			||||||
 | 
						var $auto_increment = null;
 | 
				
			||||||
 | 
						var $create_table_extras = "";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					class MySQL extends DBEngine {
 | 
				
			||||||
 | 
						var $name = "mysql";
 | 
				
			||||||
 | 
						var $auto_increment = "INTEGER PRIMARY KEY auto_increment";
 | 
				
			||||||
 | 
						var $create_table_extras = "TYPE=INNODB DEFAULT CHARSET='utf8'";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					class PostgreSQL extends DBEngine {
 | 
				
			||||||
 | 
						var $name = "pgsql";
 | 
				
			||||||
 | 
						var $auto_increment = "SERIAL PRIMARY KEY";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					//}}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * A class for controlled database access, available through "global $database"
 | 
					 * A class for controlled database access, available through "global $database"
 | 
				
			||||||
@ -37,6 +53,7 @@ class Database {
 | 
				
			|||||||
	var $db;
 | 
						var $db;
 | 
				
			||||||
	var $extensions;
 | 
						var $extensions;
 | 
				
			||||||
	var $get_images = "SELECT images.*,UNIX_TIMESTAMP(posted) AS posted_timestamp FROM images ";
 | 
						var $get_images = "SELECT images.*,UNIX_TIMESTAMP(posted) AS posted_timestamp FROM images ";
 | 
				
			||||||
 | 
						var $engine = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/*
 | 
						/*
 | 
				
			||||||
	 * Create a new database object using connection info
 | 
						 * Create a new database object using connection info
 | 
				
			||||||
@ -45,6 +62,7 @@ class Database {
 | 
				
			|||||||
	public function Database() {
 | 
						public function Database() {
 | 
				
			||||||
		if(is_readable("config.php")) {
 | 
							if(is_readable("config.php")) {
 | 
				
			||||||
			require_once "config.php";
 | 
								require_once "config.php";
 | 
				
			||||||
 | 
								$this->engine = new MySQL();
 | 
				
			||||||
			$this->db = @NewADOConnection($database_dsn);
 | 
								$this->db = @NewADOConnection($database_dsn);
 | 
				
			||||||
			if($this->db) {
 | 
								if($this->db) {
 | 
				
			||||||
				$this->db->SetFetchMode(ADODB_FETCH_ASSOC);
 | 
									$this->db->SetFetchMode(ADODB_FETCH_ASSOC);
 | 
				
			||||||
@ -108,6 +126,10 @@ class Database {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public function upgrade_schema($filename) {
 | 
						public function upgrade_schema($filename) {
 | 
				
			||||||
 | 
							$this->install_schema($filename);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public function install_schema($filename) {
 | 
				
			||||||
		//print "<br>upgrading $filename";
 | 
							//print "<br>upgrading $filename";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		global $config;
 | 
							global $config;
 | 
				
			||||||
 | 
				
			|||||||
@ -144,8 +144,40 @@ class CommentList extends Extension {
 | 
				
			|||||||
		global $database;
 | 
							global $database;
 | 
				
			||||||
		global $config;
 | 
							global $config;
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
 | 
							// shortcut to latest
 | 
				
			||||||
		if($config->get_int("ext_comments_version") < 1) {
 | 
							if($config->get_int("ext_comments_version") < 1) {
 | 
				
			||||||
			$database->upgrade_schema("ext/comment/schema.xml");
 | 
								$database->Execute("CREATE TABLE comments (
 | 
				
			||||||
 | 
									id {$database->engine->auto_increment},
 | 
				
			||||||
 | 
									image_id INTEGER NOT NULL,
 | 
				
			||||||
 | 
									owner_id INTEGER NOT NULL,
 | 
				
			||||||
 | 
									owner_ip CHAR(16) NOT NULL,
 | 
				
			||||||
 | 
									posted DATETIME DEFAULT NULL,
 | 
				
			||||||
 | 
									comment TEXT NOT NULL,
 | 
				
			||||||
 | 
									INDEX (image_id),
 | 
				
			||||||
 | 
									INDEX (owner_ip),
 | 
				
			||||||
 | 
									INDEX (posted)
 | 
				
			||||||
 | 
								) {$database->engine->create_table_extras}");
 | 
				
			||||||
 | 
								$config->set_int("ext_comments_version", 2);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// ===
 | 
				
			||||||
 | 
							if($config->get_int("ext_comments_version") < 1) {
 | 
				
			||||||
 | 
								$database->Execute("CREATE TABLE comments (
 | 
				
			||||||
 | 
									id {$database->engine->auto_increment},
 | 
				
			||||||
 | 
									image_id INTEGER NOT NULL,
 | 
				
			||||||
 | 
									owner_id INTEGER NOT NULL,
 | 
				
			||||||
 | 
									owner_ip CHAR(16) NOT NULL,
 | 
				
			||||||
 | 
									posted DATETIME DEFAULT NULL,
 | 
				
			||||||
 | 
									comment TEXT NOT NULL,
 | 
				
			||||||
 | 
									INDEX (image_id)
 | 
				
			||||||
 | 
								) {$database->engine->create_table_extras}");
 | 
				
			||||||
 | 
								$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);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
// }}}
 | 
					// }}}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,21 +0,0 @@
 | 
				
			|||||||
<?xml version="1.0"?>
 | 
					 | 
				
			||||||
<schema version="0.3">
 | 
					 | 
				
			||||||
	<!-- FIXME: mysql utf8ness -->
 | 
					 | 
				
			||||||
	<table name="comments">
 | 
					 | 
				
			||||||
		<field name="id" type="I"><key/><autoincrement/></field>
 | 
					 | 
				
			||||||
		<field name="image_id" type="I"><notnull/></field><!-- references -->
 | 
					 | 
				
			||||||
		<field name="owner_id" type="I"><notnull/></field><!-- references -->
 | 
					 | 
				
			||||||
		<field name="owner_ip" type="C" size="15"><notnull/></field>
 | 
					 | 
				
			||||||
		<field name="posted" type="T"><notnull/></field>
 | 
					 | 
				
			||||||
		<field name="comment" type="X" size="4000"><notnull/></field>
 | 
					 | 
				
			||||||
		<index name="comments__image_id"><col>image_id</col></index>
 | 
					 | 
				
			||||||
		<index name="comments__owner_ip"><col>owner_ip</col></index>
 | 
					 | 
				
			||||||
		<index name="comments__posted"><col>posted</col></index>
 | 
					 | 
				
			||||||
		<opt platform="mysql">DEFAULT CHARSET='utf8'</opt>
 | 
					 | 
				
			||||||
	</table>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	<sql>
 | 
					 | 
				
			||||||
		<query>DELETE FROM config WHERE name='ext_comments_version'</query>
 | 
					 | 
				
			||||||
		<query>INSERT INTO config(name, value) VALUES('ext_comments_version', 3)</query>
 | 
					 | 
				
			||||||
	</sql>
 | 
					 | 
				
			||||||
</schema>
 | 
					 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user