/**
* The required files
*/
require_once(HTML_BASIC_UTIL_PATH.'/Message.php');
if (defined('HTML_LOG_UTIL_PATH')) {
require_once (HTML_LOG_UTIL_PATH.'/Log.php');
}
/**
* The connection interface towards the mysql database
* <code>
* Usage:
* $connection = new Connection($hostname,$username,$password,$database,$persistent);
* $connection->open(); // Conect to the host and select the database to use
* : // Use the connection to operate on table data
* : // Free the resources
* $connection->close(); // Remember to release the connection
*
* NOTE: The username/password are defined in an external file
* </code>
* @package db
* @todo Register function, when closing page
*/
class Connection {
var $hostname = '';
var $username = '';
var $password = '';
var $database = '';
var $persistent = '';
var $portname = '';
var $connection = NULL; // The database connection
var $message = ''; // Debug/Error/info messages
var $anyerrors = false; // Flag, to indicate errors have occured
/**
* Constructor
* @param String $hostname The server name to connect to
* @param String $username The username
* @param String $password The password (secret, don't look)
* @param String $database The database to use
* @param boolean $persistent Use persistent connection (true) or not (false)
* @param String $portname The server port name to connect to
*/
function Connection($hostname='',$username='',$password='',$database='',$persistent='',$portname='') {
$this->hostname = $hostname;
$this->username = $username;
$this->password = $password;
$this->database = $database;
$this->persistent = $persistent != '' ? $persistent : false;
$this->portname = $portname;
}
/**
* Set the host name for the server to connect to
* @param String $hostname The server name to connect to
*/
function setHostname($hostname) {
$this->hostname = $hostname;
}
/**
* Set the username
* @param String $username The username
*/
function setUsername($username) {
$this->username = $username;
}
/**
* Set the password
* @param String $password The password (secret, don't look)
*/
function setPassword($password) {
$this->password = $password;
}
/**
* Set the name of the database to use
* @param String $database The database to use
*/
function setDatabase($database) {
$this->database = $database;
}
/**
* Set the flag, if the connection use persistent connection (true)
* @param boolean $persistent Use persistent connection (true) or not (false)
*/
function setPersistent($persistent) {
$this->persistent = $persistent;
}
/**
* Set the host port name for the server to connect to
* @param String $portname The server port name to connect to
*/
function setPortname($portname) {
$this->portname = $portname;
}
/**
* Connect to the host, and select the database to use
* @return boolean Returns TRUE on success or FALSE if failure
*/
function open() {
$rc = false;
$func = 'mysql_'. ($this->persistent ? 'p' : '').'connect';
$this->connection = $func($this->host, $this->username, $this->password);
if (!$this->connection) {
$msg = 'Connection->open() '.$this->getError();
if (defined('HTML_LOG_UTIL_PATH')) {
Log::fatal(__FILE__, __LINE__, $msg);
}
if (defined('DEBUG_LEVEL') && DEBUG_LEVEL & DEBUG_LEVEL_SHOW_SQL) {
Message::add($msg,__FILE__,__LINE__);
}
} else {
if (!mysql_select_db($this->database, $this->connection)) {
$msg = 'Connection->open() '.$this->getError();
if (defined('HTML_LOG_UTIL_PATH')) {
Log::fatal(__FILE__, __LINE__, $msg);
}
if (defined('DEBUG_LEVEL') && DEBUG_LEVEL & DEBUG_LEVEL_SHOW_SQL) {
Message::add($msg,__FILE__,__LINE__);
}
} else {
$rc = true;
}
}
return $rc;
}
/**
* Get the connection to the database
* @return resource The connection to the database or NULL
*/
function getConnection() {
if ($this->connection==NULL) {
$this->open();
$msg = 'Connection->getConnection() $this->connection was NULL';
$this->setMessage($msg);
if (defined('HTML_LOG_UTIL_PATH')) {
Log::debug(__FILE__, __LINE__, $msg);
}
if (defined('DEBUG_LEVEL') && DEBUG_LEVEL & DEBUG_LEVEL_SHOW_SQL) {
Message::add($msg,__FILE__,__LINE__);
}
} else {
}
return $this->connection;
}
/**
* Get the name of the database
* @return String The name of the database, specified in the constructor
*/
function getDatabase() {
return $this->database;
}
/**
* Close the connection to the database
* @return boolean Returns TRUE on success or FALSE on failure
*/
function close() {
$rc = false;
if ($this->connection!=NULL) {
$rc = mysql_close($this->connection);
$this->connection = NULL;
} else {
$msg = 'Connection->close() $this->connection is NULL';
$this->setMessage($msg);
if (defined('HTML_LOG_UTIL_PATH')) {
Log::debug(__FILE__, __LINE__, $msg);
}
if (defined('DEBUG_LEVEL') && DEBUG_LEVEL & DEBUG_LEVEL_SHOW_SQL) {
Message::add($msg,__FILE__,__LINE__);
}
}
return $rc;
}
/**
* Get the error message
* @return String The resulting error message from the last mysql call
*/
function getError() {
$error = mysql_error();
if ($error != '') {
$this->anyerrors = true; // Dump error info later
}
$this->setMessage($error);
return $error;
}
/**
* Get all message
* @return String All messages from this scenario
*/
function getMessage() {
return $this->message;
}
/**
* Set next message in this scenario
* @param String $message The message to store
*/
function setMessage($message) {
$this->message .= "<br />\r\n".$message;
}
}
?>