<?php
/***
* Database Access (MySQL)
*
* Provides default database access values, and functions used to
* access data in both newbb and phpBB.
*
* --
* Alain Reguera Delgado <alain.reguera@gmail.com>
***/
class DB_MYSQL
{
public $db_conn;
public $db_host;
public $db_user;
public $db_pass;
public $db_xoops_db;
public $db_xoops_tbl;
public $db_phpbb_db;
public $db_phpbb_tbl;
/***
* Class Construct
***/
function __construct()
{
// Initialize configuration values
$this->db_host = 'localhost';
$this->db_user = 'root';
$this->db_pass = '';
$this->db_xoops_db = 'xoops';
$this->db_xoops_tbl = 'xoops_';
$this->db_phpbb_db = 'phpBB';
$this->db_phpbb_tbl = 'phpbb_';
// Reinitialize configuration values
$config = array('db_host', 'db_user', 'db_pass', 'db_xoops_db',
'db_xoops_tbl', 'db_phpbb_db', 'db_phpbb_tbl');
foreach ( $config as $param )
{
if ( ! isset( $_SESSION[$param] ) )
{
$_SESSION[$param] = $this->$param;
}
$_SESSION[$param] = isset($_POST[$param])?$_POST[$param]:$_SESSION[$param];
$this->$param = $_SESSION[$param];
}
}
/***
* Connect
*/
function connect()
{
// Connect to MySQL database
$this->db_conn = mysql_connect( $this->db_host,
$this->db_user,
$this->db_pass );
if ( $this->db_conn )
{
return true;
}
else
{
return false;
}
}
/***
* DB Configuration
*/
function get_configForm( $disabled = '' )
{
$htmlblock = array();
array_push( $htmlblock,
// Common DB Configuration
'<h2>Common DB configuration:</h2>',
'<dl>',
'<dt>Server: </dt>',
'<dd><input type="text" name="db_host" value="'.$this->db_host.'" '.$disabled.' /></dd>',
'<dt>Username:</dt>',
'<dd><input type="text" name="db_user" value="'.$this->db_user.'" '.$disabled.' /></dd>',
'<dt>Password:</dt>',
'<dd><input type="password" name="db_pass" value="'.$this->db_pass.'" '.$disabled.' /></dd>',
'</dl>',
// Xoops Configuration
'<h2>Xoops configuration:</h2>',
'<dl>',
'<dt>Xoops database name:</dt>',
'<dd><input type="text" name="db_xoops_db" value="'.$this->db_xoops_db.'" '.$disabled.' /></dd>',
'<dt>Xoops table prefix:</dt>',
'<dd><input type="text" name="db_xoops_tbl" value="'.$this->db_xoops_tbl.'" '.$disabled.' /></dd>',
'</dl>',
// phpBB Configuration
'<h2>phpBB configuration:</h2>',
'<dl>',
'<dt>Phpbb database name:</dt>',
'<dd><input type="text" name="db_phpbb_db" value="'.$this->db_phpbb_db.'" '.$disabled.' /></dd>',
'<dt>Phpbb table prefix:</dt>',
'<dd><input type="text" name="db_phpbb_tbl" value="'.$this->db_phpbb_tbl.'" '.$disabled.' /></dd>',
'</dl>');
return $htmlblock;
}
/***
* Query
*/
function query( $sql )
{
$this->connect();
$result = mysql_query( $sql, $this->db_conn );
if ( $result )
{
return $result;
}
else
{
return false;
}
}
/***
* Check existance
*/
function check_existance( $name )
{
switch ( $name )
{
case 'phpbb':
$check_dbname = $this->db_phpbb_db;
$check_suffix = $this->db_phpbb_tbl;
$check_tables = array('users', 'forums', 'topics', 'posts');
break;
case 'xoops':
$check_dbname = $this->db_xoops_db;
$check_suffix = $this->db_xoops_tbl;
$check_tables = array('users', 'bb_forums', 'bb_topics', 'bb_posts', 'bb_posts_text');
break;
}
$error = 0;
$table_list = array();
// Check database existance
if ( ! mysql_select_db( $check_dbname ) )
{
$error++;
}
// Check tables existance
else
{
$sql = 'SHOW TABLES FROM ' . $check_dbname . ';';
$result = $this->query( $sql );
while ( $row = mysql_fetch_row ($result) )
{
array_push($table_list, $row[0]);
}
foreach ($check_tables as $tablename)
{
$tablename = $check_suffix . $tablename;
if (in_array($tablename, $table_list) === false )
{
$error++;
}
}
}
if ( $error == 0 )
{
return true;
}
else
{
return false;
}
}
/***
* Class Destruct
***/
function disconnect()
{
mysql_close( $this->db_conn );
}
}
$db = new DB_MYSQL;
?>