mirror of
https://github.com/fusionpbx/fusionpbx.git
synced 2026-01-04 02:43:48 +00:00
Add odbc support to the database class and modify some of the parameters.
This commit is contained in:
@@ -30,8 +30,11 @@ include "root.php";
|
||||
class database {
|
||||
public $db;
|
||||
public $name; //database name
|
||||
public $username;
|
||||
public $password;
|
||||
public $result;
|
||||
public $type;
|
||||
public $driver;
|
||||
public $table;
|
||||
public $where; //array
|
||||
public $order_by; //array
|
||||
@@ -43,43 +46,50 @@ include "root.php";
|
||||
public $sql;
|
||||
|
||||
public function connect() {
|
||||
//include config.php
|
||||
include "root.php";
|
||||
include "includes/config.php";
|
||||
|
||||
//set defaults
|
||||
if (isset($db_type) > 0) { $this->db_type = $db_type; }
|
||||
if (isset($db_host) > 0) { $this->db_host = $db_host; }
|
||||
if (isset($db_port) > 0) { $this->db_port = $db_port; }
|
||||
if (isset($db_name) > 0) { $this->db_name = $db_name; }
|
||||
if (isset($db_username) > 0) { $this->db_username = $db_username; }
|
||||
if (isset($db_password) > 0) { $this->db_password = $db_password; }
|
||||
if (isset($db_path) > 0) { $this->db_path = $db_path; }
|
||||
if (isset($db_name) > 0) { $this->db_name = $db_name; }
|
||||
if (strlen($this->type) == 0 && strlen($this->name) == 0) {
|
||||
//include config.php
|
||||
include "root.php";
|
||||
include "includes/config.php";
|
||||
|
||||
//backwards compatibility
|
||||
if (isset($dbtype) > 0) { $db_type = $dbtype; }
|
||||
if (isset($dbhost) > 0) { $db_host = $dbhost; }
|
||||
if (isset($dbport) > 0) { $db_port = $dbport; }
|
||||
if (isset($dbname) > 0) { $db_name = $dbname; }
|
||||
if (isset($dbusername) > 0) { $db_username = $dbusername; }
|
||||
if (isset($dbpassword) > 0) { $db_password = $dbpassword; }
|
||||
if (isset($dbfilepath) > 0) { $db_path = $db_file_path; }
|
||||
if (isset($dbfilename) > 0) { $db_name = $dbfilename; }
|
||||
//backwards compatibility
|
||||
if (strlen($dbtype) > 0) { $db_type = $dbtype; }
|
||||
if (strlen($dbhost) > 0) { $db_host = $dbhost; }
|
||||
if (strlen($dbport) > 0) { $db_port = $dbport; }
|
||||
if (strlen($dbname) > 0) { $db_name = $dbname; }
|
||||
if (strlen($dbusername) > 0) { $db_username = $dbusername; }
|
||||
if (strlen($dbpassword) > 0) { $db_password = $dbpassword; }
|
||||
if (strlen($dbfilepath) > 0) { $db_path = $db_file_path; }
|
||||
if (strlen($dbfilename) > 0) { $db_name = $dbfilename; }
|
||||
|
||||
if ($this->db_type == "sqlite") {
|
||||
if (strlen($this->db_name) == 0) {
|
||||
//set defaults
|
||||
if (strlen($db_type) > 0) { $this->driver = $db_type; }
|
||||
if (strlen($db_type) > 0) { $this->type = $db_type; }
|
||||
if (strlen($db_host) > 0) { $this->host = $db_host; }
|
||||
if (strlen($db_port) > 0) { $this->port = $db_port; }
|
||||
if (strlen($db_name) > 0) { $this->name = $db_name; }
|
||||
if (strlen($db_username) > 0) { $this->username = $db_username; }
|
||||
if (strlen($db_password) > 0) { $this->password = $db_password; }
|
||||
if (strlen($db_path) > 0) { $this->path = $db_path; }
|
||||
if (strlen($db_name) > 0) { $this->name = $db_name; }
|
||||
}
|
||||
if (strlen($this->driver) == 0) {
|
||||
$this->driver = $this->type;
|
||||
}
|
||||
|
||||
if ($this->driver == "sqlite") {
|
||||
if (strlen($this->name) == 0) {
|
||||
$server_name = $_SERVER["SERVER_NAME"];
|
||||
$server_name = str_replace ("www.", "", $server_name);
|
||||
$db_name_short = $server_name;
|
||||
$this->db_name = $server_name.'.db';
|
||||
$this->name = $server_name.'.db';
|
||||
}
|
||||
else {
|
||||
$db_name_short = $this->db_name;
|
||||
$db_name_short = $this->name;
|
||||
}
|
||||
$this->db_path = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/secure';
|
||||
$this->db_path = realpath($this->db_path);
|
||||
if (file_exists($this->db_path.'/'.$this->db_name)) {
|
||||
$this->path = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/secure';
|
||||
$this->path = realpath($this->path);
|
||||
if (file_exists($this->path.'/'.$this->name)) {
|
||||
//echo "main file exists<br>";
|
||||
}
|
||||
else {
|
||||
@@ -88,7 +98,7 @@ include "root.php";
|
||||
try {
|
||||
//$db = new PDO('sqlite2:example.db'); //sqlite 2
|
||||
//$db = new PDO('sqlite::memory:'); //sqlite 3
|
||||
$db = new PDO('sqlite:'.$this->db_path.'/'.$this->db_name); //sqlite 3
|
||||
$db = new PDO('sqlite:'.$this->path.'/'.$this->name); //sqlite 3
|
||||
$db->beginTransaction();
|
||||
}
|
||||
catch (PDOException $error) {
|
||||
@@ -114,19 +124,19 @@ include "root.php";
|
||||
unset ($file_contents, $sql);
|
||||
$db->commit();
|
||||
|
||||
if (is_writable($this->db_path.'/'.$this->db_name)) {
|
||||
if (is_writable($this->path.'/'.$this->name)) {
|
||||
//is writable - use database in current location
|
||||
}
|
||||
else {
|
||||
//not writable
|
||||
echo "The database ".$this->db_path."/".$this->db_name." is not writeable.";
|
||||
echo "The database ".$this->path."/".$this->name." is not writeable.";
|
||||
exit;
|
||||
}
|
||||
}
|
||||
try {
|
||||
//$db = new PDO('sqlite2:example.db'); //sqlite 2
|
||||
//$db = new PDO('sqlite::memory:'); //sqlite 3
|
||||
$this->db = new PDO('sqlite:'.$this->db_path.'/'.$this->db_name); //sqlite 3
|
||||
$this->db = new PDO('sqlite:'.$this->path.'/'.$this->name); //sqlite 3
|
||||
|
||||
//add additional functions to SQLite so that they are accessible inside SQL
|
||||
//bool PDO::sqliteCreateFunction ( string function_name, callback callback [, int num_args] )
|
||||
@@ -142,27 +152,27 @@ include "root.php";
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->db_type == "mysql") {
|
||||
if ($this->driver == "mysql") {
|
||||
try {
|
||||
//required for mysql_real_escape_string
|
||||
if (function_exists(mysql_connect)) {
|
||||
$mysql_connection = mysql_connect($this->db_host, $this->db_username, $this->db_password);
|
||||
$mysql_connection = mysql_connect($this->host, $this->username, $this->password);
|
||||
}
|
||||
//mysql pdo connection
|
||||
if (strlen($this->db_host) == 0 && strlen($this->db_port) == 0) {
|
||||
if (strlen($this->host) == 0 && strlen($this->port) == 0) {
|
||||
//if both host and port are empty use the unix socket
|
||||
$this->db = new PDO("mysql:host=$this->db_host;unix_socket=/var/run/mysqld/mysqld.sock;dbname=$this->db_name", $this->db_username, $this->db_password);
|
||||
$this->db = new PDO("mysql:host=$this->host;unix_socket=/var/run/mysqld/mysqld.sock;dbname=$this->name", $this->username, $this->password);
|
||||
}
|
||||
else {
|
||||
if (strlen($this->db_port) == 0) {
|
||||
if (strlen($this->port) == 0) {
|
||||
//leave out port if it is empty
|
||||
$this->db = new PDO("mysql:host=$this->db_host;dbname=$this->db_name;", $this->db_username, $this->db_password, array(
|
||||
$this->db = new PDO("mysql:host=$this->host;dbname=$this->name;", $this->username, $this->password, array(
|
||||
PDO::ATTR_ERRMODE,
|
||||
PDO::ERRMODE_EXCEPTION
|
||||
));
|
||||
}
|
||||
else {
|
||||
$this->db = new PDO("mysql:host=$this->db_host;port=$this->db_port;dbname=$this->db_name;", $this->db_username, $this->db_password, array(
|
||||
$this->db = new PDO("mysql:host=$this->host;port=$this->port;dbname=$this->name;", $this->username, $this->password, array(
|
||||
PDO::ATTR_ERRMODE,
|
||||
PDO::ERRMODE_EXCEPTION
|
||||
));
|
||||
@@ -175,15 +185,15 @@ include "root.php";
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->db_type == "pgsql") {
|
||||
if ($this->driver == "pgsql") {
|
||||
//database connection
|
||||
try {
|
||||
if (strlen($this->db_host) > 0) {
|
||||
if (strlen($this->db_port) == 0) { $this->db_port = "5432"; }
|
||||
$this->db = new PDO("pgsql:host=$this->db_host port=$this->db_port dbname=$this->db_name user=$this->db_username password=$this->db_password");
|
||||
if (strlen($this->host) > 0) {
|
||||
if (strlen($this->port) == 0) { $this->port = "5432"; }
|
||||
$this->db = new PDO("pgsql:host=$this->host port=$this->port dbname=$this->name user=$this->username password=$this->password");
|
||||
}
|
||||
else {
|
||||
$this->db = new PDO("pgsql:dbname=$this->db_name user=$this->db_username password=$this->db_password");
|
||||
$this->db = new PDO("pgsql:dbname=$this->name user=$this->username password=$this->password");
|
||||
}
|
||||
}
|
||||
catch (PDOException $error) {
|
||||
@@ -191,6 +201,16 @@ include "root.php";
|
||||
die();
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->driver == "odbc") {
|
||||
//database connection
|
||||
try {
|
||||
$this->db = new PDO("odbc:".$this->name, $this->username, $this->password);
|
||||
}
|
||||
catch (PDOException $e) {
|
||||
echo 'Connection failed: ' . $e->getMessage();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function tables() {
|
||||
@@ -213,10 +233,13 @@ include "root.php";
|
||||
if ($this->type == "mysql") {
|
||||
$sql = "show tables";
|
||||
}
|
||||
if ($this->type == "mssql") {
|
||||
$sql = "SELECT * FROM sys.Tables";
|
||||
}
|
||||
$prep_statement = $this->db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$tmp = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
if ($this->type == "pgsql" || $this->type == "sqlite") {
|
||||
if ($this->type == "pgsql" || $this->type == "sqlite" || $this->type == "mssql") {
|
||||
foreach ($tmp as &$row) {
|
||||
$result['name'][] = $row['name'];
|
||||
}
|
||||
@@ -259,7 +282,10 @@ include "root.php";
|
||||
$sql .= "ORDER BY ordinal_position; ";
|
||||
}
|
||||
if ($this->type == "mysql") {
|
||||
$sql = "describe ".$this->table.";";
|
||||
$sql = "DESCRIBE ".$this->table.";";
|
||||
}
|
||||
if ($this->type == "mssql") {
|
||||
$sql = "SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '".$this->table."'";
|
||||
}
|
||||
$prep_statement = $this->db->prepare($sql);
|
||||
$prep_statement->execute();
|
||||
@@ -292,6 +318,11 @@ include "root.php";
|
||||
$result['name'][] = $row['Field'];
|
||||
}
|
||||
}
|
||||
if ($this->type == "mssql") {
|
||||
foreach($table_info as $row) {
|
||||
$result['name'][] = $row['COLUMN_NAME'];
|
||||
}
|
||||
}
|
||||
|
||||
//return the result array
|
||||
return $result;
|
||||
|
||||
Reference in New Issue
Block a user