|
From: Markus P. <mar...@us...> - 2005-04-06 06:35:09
|
Update of /cvsroot/mxbb/core/install/db In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25583/install/db Added Files: mysql.php mysql4.php postgres7.php Log Message: The installer is now able to detect and deal with more that one phpBB board installed on the target system (it was already, but...) even if they're *using different DB engines*. The upgrade cache code is now able to deal with 2.8.0 and previous versions. Added references to the mxBB-News mailing list (a new message in last install/upgrade panels) and a link to the new Welcome Package in page footer. --- NEW FILE: mysql.php --- <?php /*************************************************************************** * mysql.php * ------------------- * begin : Saturday, Feb 13, 2001 * copyright : (C) 2001 The phpBB Group * email : su...@ph... * * $Id: mysql.php,v 1.1 2005/04/06 06:35:00 markus_petrux Exp $ * ***************************************************************************/ /*************************************************************************** * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * ***************************************************************************/ if(!defined("SQL_LAYER_mysql")) { define("SQL_LAYER_mysql","mysql"); class sql_db_mysql { var $db_connect_id; var $query_result; var $row = array(); var $rowset = array(); var $num_queries = 0; // // Constructor // function sql_db_mysql($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true) { $this->persistency = $persistency; $this->user = $sqluser; $this->password = $sqlpassword; $this->server = $sqlserver; $this->dbname = $database; if($this->persistency) { $this->db_connect_id = @mysql_pconnect($this->server, $this->user, $this->password); } else { $this->db_connect_id = @mysql_connect($this->server, $this->user, $this->password); } if($this->db_connect_id) { if($database != "") { $this->dbname = $database; $dbselect = @mysql_select_db($this->dbname); if(!$dbselect) { @mysql_close($this->db_connect_id); $this->db_connect_id = $dbselect; } } return $this->db_connect_id; } else { return false; } } // // Other base methods // function sql_close() { if($this->db_connect_id) { if($this->query_result) { @mysql_free_result($this->query_result); } $result = @mysql_close($this->db_connect_id); return $result; } else { return false; } } // // Base query method // function sql_query($query = "", $transaction = FALSE) { // Remove any pre-existing queries unset($this->query_result); if($query != "") { $this->num_queries++; $this->query_result = @mysql_query($query, $this->db_connect_id); } if($this->query_result) { unset($this->row[$this->query_result]); unset($this->rowset[$this->query_result]); return $this->query_result; } else { return ( $transaction == END_TRANSACTION ) ? true : false; } } // // Other query methods // function sql_numrows($query_id = 0) { if(!$query_id) { $query_id = $this->query_result; } if($query_id) { $result = @mysql_num_rows($query_id); return $result; } else { return false; } } function sql_affectedrows() { if($this->db_connect_id) { $result = @mysql_affected_rows($this->db_connect_id); return $result; } else { return false; } } function sql_numfields($query_id = 0) { if(!$query_id) { $query_id = $this->query_result; } if($query_id) { $result = @mysql_num_fields($query_id); return $result; } else { return false; } } function sql_fieldname($offset, $query_id = 0) { if(!$query_id) { $query_id = $this->query_result; } if($query_id) { $result = @mysql_field_name($query_id, $offset); return $result; } else { return false; } } function sql_fieldtype($offset, $query_id = 0) { if(!$query_id) { $query_id = $this->query_result; } if($query_id) { $result = @mysql_field_type($query_id, $offset); return $result; } else { return false; } } function sql_fetchrow($query_id = 0) { if(!$query_id) { $query_id = $this->query_result; } if($query_id) { $this->row[$query_id] = @mysql_fetch_array($query_id); return $this->row[$query_id]; } else { return false; } } function sql_fetchrowset($query_id = 0) { if(!$query_id) { $query_id = $this->query_result; } if($query_id) { unset($this->rowset[$query_id]); unset($this->row[$query_id]); while($this->rowset[$query_id] = @mysql_fetch_array($query_id)) { $result[] = $this->rowset[$query_id]; } return $result; } else { return false; } } function sql_fetchfield($field, $rownum = -1, $query_id = 0) { if(!$query_id) { $query_id = $this->query_result; } if($query_id) { if($rownum > -1) { $result = @mysql_result($query_id, $rownum, $field); } else { if(empty($this->row[$query_id]) && empty($this->rowset[$query_id])) { if($this->sql_fetchrow()) { $result = $this->row[$query_id][$field]; } } else { if($this->rowset[$query_id]) { $result = $this->rowset[$query_id][$field]; } else if($this->row[$query_id]) { $result = $this->row[$query_id][$field]; } } } return $result; } else { return false; } } function sql_rowseek($rownum, $query_id = 0){ if(!$query_id) { $query_id = $this->query_result; } if($query_id) { $result = @mysql_data_seek($query_id, $rownum); return $result; } else { return false; } } function sql_nextid(){ if($this->db_connect_id) { $result = @mysql_insert_id($this->db_connect_id); return $result; } else { return false; } } function sql_freeresult($query_id = 0){ if(!$query_id) { $query_id = $this->query_result; } if ( $query_id ) { unset($this->row[$query_id]); unset($this->rowset[$query_id]); @mysql_free_result($query_id); return true; } else { return false; } } function sql_error($query_id = 0) { $result["message"] = @mysql_error($this->db_connect_id); $result["code"] = @mysql_errno($this->db_connect_id); return $result; } } // class sql_db } // if ... define ?> --- NEW FILE: mysql4.php --- <?php /*************************************************************************** * mysql4.php * ------------------- * begin : Saturday, Feb 13, 2001 * copyright : (C) 2001 The phpBB Group * email : supportphpbb.com * * $Id: mysql4.php,v 1.1 2005/04/06 06:35:00 markus_petrux Exp $ * ***************************************************************************/ /*************************************************************************** * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * ***************************************************************************/ if(!defined("SQL_LAYER_mysql4")) { define("SQL_LAYER_mysql4","mysql4"); class sql_db_mysql4 { var $db_connect_id; var $query_result; var $row = array(); var $rowset = array(); var $num_queries = 0; var $in_transaction = 0; // // Constructor // function sql_db_mysql4($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true) { $this->persistency = $persistency; $this->user = $sqluser; $this->password = $sqlpassword; $this->server = $sqlserver; $this->dbname = $database; $this->db_connect_id = ($this->persistency) ? mysql_pconnect($this->server, $this->user, $this->password) : mysql_connect($this->server, $this->user, $this->password); if( $this->db_connect_id ) { if( $database != "" ) { $this->dbname = $database; $dbselect = mysql_select_db($this->dbname); if( !$dbselect ) { mysql_close($this->db_connect_id); $this->db_connect_id = $dbselect; } } return $this->db_connect_id; } else { return false; } } // // Other base methods // function sql_close() { if( $this->db_connect_id ) { // // Commit any remaining transactions // if( $this->in_transaction ) { mysql_query("COMMIT", $this->db_connect_id); } return mysql_close($this->db_connect_id); } else { return false; } } // // Base query method // function sql_query($query = "", $transaction = FALSE) { // // Remove any pre-existing queries // unset($this->query_result); if( $query != "" ) { $this->num_queries++; if( $transaction == BEGIN_TRANSACTION && !$this->in_transaction ) { $result = mysql_query("BEGIN", $this->db_connect_id); if(!$result) { return false; } $this->in_transaction = TRUE; } $this->query_result = mysql_query($query, $this->db_connect_id); } else { if( $transaction == END_TRANSACTION && $this->in_transaction ) { $result = mysql_query("COMMIT", $this->db_connect_id); } } if( $this->query_result ) { unset($this->row[$this->query_result]); unset($this->rowset[$this->query_result]); if( $transaction == END_TRANSACTION && $this->in_transaction ) { $this->in_transaction = FALSE; if ( !mysql_query("COMMIT", $this->db_connect_id) ) { mysql_query("ROLLBACK", $this->db_connect_id); return false; } } return $this->query_result; } else { if( $this->in_transaction ) { mysql_query("ROLLBACK", $this->db_connect_id); $this->in_transaction = FALSE; } return false; } } // // Other query methods // function sql_numrows($query_id = 0) { if( !$query_id ) { $query_id = $this->query_result; } return ( $query_id ) ? mysql_num_rows($query_id) : false; } function sql_affectedrows() { return ( $this->db_connect_id ) ? mysql_affected_rows($this->db_connect_id) : false; } function sql_numfields($query_id = 0) { if( !$query_id ) { $query_id = $this->query_result; } return ( $query_id ) ? mysql_num_fields($query_id) : false; } function sql_fieldname($offset, $query_id = 0) { if( !$query_id ) { $query_id = $this->query_result; } return ( $query_id ) ? mysql_field_name($query_id, $offset) : false; } function sql_fieldtype($offset, $query_id = 0) { if( !$query_id ) { $query_id = $this->query_result; } return ( $query_id ) ? mysql_field_type($query_id, $offset) : false; } function sql_fetchrow($query_id = 0) { if( !$query_id ) { $query_id = $this->query_result; } if( $query_id ) { $this->row[$query_id] = mysql_fetch_array($query_id, MYSQL_ASSOC); return $this->row[$query_id]; } else { return false; } } function sql_fetchrowset($query_id = 0) { if( !$query_id ) { $query_id = $this->query_result; } if( $query_id ) { unset($this->rowset[$query_id]); unset($this->row[$query_id]); while($this->rowset[$query_id] = mysql_fetch_array($query_id, MYSQL_ASSOC)) { $result[] = $this->rowset[$query_id]; } return $result; } else { return false; } } function sql_fetchfield($field, $rownum = -1, $query_id = 0) { if( !$query_id ) { $query_id = $this->query_result; } if( $query_id ) { if( $rownum > -1 ) { $result = mysql_result($query_id, $rownum, $field); } else { if( empty($this->row[$query_id]) && empty($this->rowset[$query_id]) ) { if( $this->sql_fetchrow() ) { $result = $this->row[$query_id][$field]; } } else { if( $this->rowset[$query_id] ) { $result = $this->rowset[$query_id][$field]; } else if( $this->row[$query_id] ) { $result = $this->row[$query_id][$field]; } } } return $result; } else { return false; } } function sql_rowseek($rownum, $query_id = 0) { if( !$query_id ) { $query_id = $this->query_result; } return ( $query_id ) ? mysql_data_seek($query_id, $rownum) : false; } function sql_nextid() { return ( $this->db_connect_id ) ? mysql_insert_id($this->db_connect_id) : false; } function sql_freeresult($query_id = 0) { if( !$query_id ) { $query_id = $this->query_result; } if ( $query_id ) { unset($this->row[$query_id]); unset($this->rowset[$query_id]); mysql_free_result($query_id); return true; } else { return false; } } function sql_error() { $result['message'] = mysql_error($this->db_connect_id); $result['code'] = mysql_errno($this->db_connect_id); return $result; } } // class sql_db } // if ... define ?> --- NEW FILE: postgres7.php --- <?php /*************************************************************************** * postgres7.php * ------------------- * begin : Saturday, Feb 13, 2001 * copyright : (C) 2001 The phpBB Group * email : supportphpbb.com * * $Id: postgres7.php,v 1.1 2005/04/06 06:35:00 markus_petrux Exp $ * ***************************************************************************/ /*************************************************************************** * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * ***************************************************************************/ if(!defined("SQL_LAYER_postgres")) { define("SQL_LAYER_postgres","postgresql"); class sql_db_postgres { var $db_connect_id; var $query_result; var $in_transaction = 0; var $row = array(); var $rowset = array(); var $rownum = array(); var $num_queries = 0; // // Constructor // function sql_db_postgres($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true) { $this->connect_string = ""; if( $sqluser ) { $this->connect_string .= "user=$sqluser "; } if( $sqlpassword ) { $this->connect_string .= "password=$sqlpassword "; } if( $sqlserver ) { if( ereg(":", $sqlserver) ) { list($sqlserver, $sqlport) = split(":", $sqlserver); $this->connect_string .= "host=$sqlserver port=$sqlport "; } else { if( $sqlserver != "localhost" ) { $this->connect_string .= "host=$sqlserver "; } } } if( $database ) { $this->dbname = $database; $this->connect_string .= "dbname=$database"; } $this->persistency = $persistency; $this->db_connect_id = ( $this->persistency ) ? pg_pconnect($this->connect_string) : pg_connect($this->connect_string); return ( $this->db_connect_id ) ? $this->db_connect_id : false; } // // Other base methods // function sql_close() { if( $this->db_connect_id ) { // // Commit any remaining transactions // if( $this->in_transaction ) { @pg_exec($this->db_connect_id, "COMMIT"); } if( $this->query_result ) { @pg_freeresult($this->query_result); } return @pg_close($this->db_connect_id); } else { return false; } } // // Query method // function sql_query($query = "", $transaction = false) { // // Remove any pre-existing queries // unset($this->query_result); if( $query != "" ) { $this->num_queries++; $query = preg_replace("/LIMIT ([0-9]+),([ 0-9]+)/", "LIMIT \\2 OFFSET \\1", $query); if( $transaction == BEGIN_TRANSACTION && !$this->in_transaction ) { $this->in_transaction = TRUE; if( !@pg_exec($this->db_connect_id, "BEGIN") ) { return false; } } $this->query_result = @pg_exec($this->db_connect_id, $query); if( $this->query_result ) { if( $transaction == END_TRANSACTION ) { $this->in_transaction = FALSE; if( !@pg_exec($this->db_connect_id, "COMMIT") ) { @pg_exec($this->db_connect_id, "ROLLBACK"); return false; } } $this->last_query_text[$this->query_result] = $query; $this->rownum[$this->query_result] = 0; unset($this->row[$this->query_result]); unset($this->rowset[$this->query_result]); return $this->query_result; } else { if( $this->in_transaction ) { @pg_exec($this->db_connect_id, "ROLLBACK"); } $this->in_transaction = FALSE; return false; } } else { if( $transaction == END_TRANSACTION && $this->in_transaction ) { $this->in_transaction = FALSE; if( !@pg_exec($this->db_connect_id, "COMMIT") ) { @pg_exec($this->db_connect_id, "ROLLBACK"); return false; } } return true; } } // // Other query methods // function sql_numrows($query_id = 0) { if( !$query_id ) { $query_id = $this->query_result; } return ( $query_id ) ? @pg_numrows($query_id) : false; } function sql_numfields($query_id = 0) { if( !$query_id ) { $query_id = $this->query_result; } return ( $query_id ) ? @pg_numfields($query_id) : false; } function sql_fieldname($offset, $query_id = 0) { if( !$query_id ) { $query_id = $this->query_result; } return ( $query_id ) ? @pg_fieldname($query_id, $offset) : false; } function sql_fieldtype($offset, $query_id = 0) { if( !$query_id ) { $query_id = $this->query_result; } return ( $query_id ) ? @pg_fieldtype($query_id, $offset) : false; } function sql_fetchrow($query_id = 0) { if( !$query_id ) { $query_id = $this->query_result; } if($query_id) { $this->row = @pg_fetch_array($query_id, $this->rownum[$query_id]); if( $this->row ) { $this->rownum[$query_id]++; return $this->row; } } return false; } function sql_fetchrowset($query_id = 0) { if( !$query_id ) { $query_id = $this->query_result; } if( $query_id ) { unset($this->rowset[$query_id]); unset($this->row[$query_id]); $this->rownum[$query_id] = 0; while( $this->rowset = @pg_fetch_array($query_id, $this->rownum[$query_id], PGSQL_ASSOC) ) { $result[] = $this->rowset; $this->rownum[$query_id]++; } return $result; } return false; } function sql_fetchfield($field, $row_offset=-1, $query_id = 0) { if( !$query_id ) { $query_id = $this->query_result; } if( $query_id ) { if( $row_offset != -1 ) { $this->row = @pg_fetch_array($query_id, $row_offset, PGSQL_ASSOC); } else { if( $this->rownum[$query_id] ) { $this->row = @pg_fetch_array($query_id, $this->rownum[$query_id]-1, PGSQL_ASSOC); } else { $this->row = @pg_fetch_array($query_id, $this->rownum[$query_id], PGSQL_ASSOC); if( $this->row ) { $this->rownum[$query_id]++; } } } return $this->row[$field]; } return false; } function sql_rowseek($offset, $query_id = 0) { if(!$query_id) { $query_id = $this->query_result; } if( $query_id ) { if( $offset > -1 ) { $this->rownum[$query_id] = $offset; return true; } else { return false; } } return false; } function sql_nextid() { $query_id = $this->query_result; if($query_id && $this->last_query_text[$query_id] != "") { if( preg_match("/^INSERT[\t\n ]+INTO[\t\n ]+([a-z0-9\_\-]+)/is", $this->last_query_text[$query_id], $tablename) ) { $query = "SELECT currval('" . $tablename[1] . "_id_seq') AS last_value"; $temp_q_id = @pg_exec($this->db_connect_id, $query); if( !$temp_q_id ) { return false; } $temp_result = @pg_fetch_array($temp_q_id, 0, PGSQL_ASSOC); return ( $temp_result ) ? $temp_result['last_value'] : false; } } return false; } function sql_affectedrows($query_id = 0) { if( !$query_id ) { $query_id = $this->query_result; } return ( $query_id ) ? @pg_cmdtuples($query_id) : false; } function sql_freeresult($query_id = 0) { if( !$query_id ) { $query_id = $this->query_result; } return ( $query_id ) ? @pg_freeresult($query_id) : false; } function sql_error($query_id = 0) { if( !$query_id ) { $query_id = $this->query_result; } $result['message'] = @pg_errormessage($this->db_connect_id); $result['code'] = -1; return $result; } } // class ... db_sql } // if ... defined ?> |