Portions created by the Initial Developer are Copyright (C) 2008-2016 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane Raymond Chandler */ //includes files require_once __DIR__ . "/require.php"; require_once "resources/functions.php"; //set defaults if (isset($dbtype)) { $db_type = $dbtype; } if (isset($dbhost)) { $db_host = $dbhost; } if (isset($dbport)) { $db_port = $dbport; } if (isset($dbname)) { $db_name = $dbname; } if (isset($dbusername)) { $db_username = $dbusername; } if (isset($dbpassword)) { $db_password = $dbpassword; } if (isset($db_file_path)) { $db_path = $db_file_path; } if (isset($dbfilename)) { $db_name = $dbfilename; } if (isset($dbsecure)) { $db_secure = $dbsecure; } if (isset($dbcertauthority)) { $db_cert_authority = $dbcertauthority; } if (!function_exists('get_db_field_names')) { function get_db_field_names($db, $table, $db_name='fusionpbx') { $query = sprintf('SELECT * FROM %s LIMIT 1', $table); foreach ($db->query($query, PDO::FETCH_ASSOC) as $row) { return array_keys($row); } // if we're still here, we need to try something else $fields = array(); $driver = $db->getAttribute(PDO::ATTR_DRIVER_NAME); if ($driver == 'sqlite') { $query = sprintf("Pragma table_info(%s);", $table); $stmt = $db->prepare($query); $result = $stmt->execute(); $rows = $stmt->fetchAll(PDO::FETCH_NAMED); //printf('
%s
', print_r($rows, true)); $row_count = count($rows); //printf('
%s
', print_r($rows, true)); for ($i = 0; $i < $row_count; $i++) { array_push($fields, $rows[$i]['name']); } return $fields; } else { $query = sprintf("SELECT * FROM information_schema.columns WHERE table_schema='%s' AND table_name='%s';" , $db_name, $table ); $stmt = $db->prepare($query); $result = $stmt->execute(); $rows = $stmt->fetchAll(PDO::FETCH_NAMED); $row_count = count($rows); //printf('
%s
', print_r($rows, true)); for ($i = 0; $i < $row_count; $i++) { array_push($fields, $rows[$i]['COLUMN_NAME']); } return $fields; } } } if ($db_type == "sqlite") { //set the document_root if (empty($document_root)) { $document_root = $_SERVER["DOCUMENT_ROOT"]; } //prepare the database connection if (empty($db_name)) { //if (empty($_SERVER["SERVER_NAME"])) { $_SERVER["SERVER_NAME"] = "http://localhost"; } $server_name = $_SERVER["SERVER_NAME"]; $server_name = str_replace ("www.", "", $server_name); //$server_name = str_replace (".", "_", $server_name); $db_name_short = $server_name; $db_name = $server_name.'.db'; } else { $db_name_short = $db_name; } $db_path = realpath($db_path); if (file_exists($db_path.'/'.$db_name)) { //echo "database file exists
"; } else { if (is_writable($db_path.'/'.$db_name)) { //use database in current location } else { //not writable echo "The database ".$db_path."/".$db_name." does not exist or is not writable."; exit; } } if (!function_exists('php_md5')) { function php_md5($string) { return md5($string); } } if (!function_exists('php_unix_timestamp')) { function php_unix_timestamp($string) { return strtotime($string); } } if (!function_exists('php_now')) { function php_now() { return date("Y-m-d H:i:s"); } } if (!function_exists('php_left')) { function php_left($string, $num) { return substr($string, 0, $num); } } if (!function_exists('php_right')) { function php_right($string, $num) { return substr($string, (strlen($string)-$num), strlen($string)); } } if (!function_exists('php_sqlite_data_type')) { function php_sqlite_data_type($string, $field) { //get the string between the start and end characters $start = '('; $end = ')'; $ini = stripos($string,$start); if ($ini == 0) return ""; $ini += strlen($start); $len = stripos($string,$end,$ini) - $ini; $string = substr($string,$ini,$len); $str_data_type = ''; $string_array = explode(',', $string); foreach($string_array as $lnvalue) { $fieldlistarray = explode (" ", $value); unset($fieldarray, $string, $field); } return $str_data_type; } } //database connection try { //create the database connection object //$db = new PDO('sqlite2:example.db'); //sqlite 2 //$db = new PDO('sqlite::memory:'); //sqlite 3 $db = new PDO('sqlite:'.$db_path.'/'.$db_name); //sqlite 3 //enable foreign key constraints $db->query('PRAGMA foreign_keys = ON;'); //add additional functions to SQLite so that they are accessible inside SQL //bool PDO::sqliteCreateFunction ( string function_name, callback callback [, int num_args] ) $db->sqliteCreateFunction('md5', 'php_md5', 1); $db->sqliteCreateFunction('unix_timestamp', 'php_unix_timestamp', 1); $db->sqliteCreateFunction('now', 'php_now', 0); $db->sqliteCreateFunction('sqlitedatatype', 'php_sqlite_data_type', 2); $db->sqliteCreateFunction('strleft', 'php_left', 2); $db->sqliteCreateFunction('strright', 'php_right', 2); } catch (PDOException $error) { print "error: " . $error->getMessage() . "
"; die(); } } //end if db_type sqlite if ($db_type == "mysql") { //database connection try { //required for mysql_real_escape_string if (function_exists('mysql_connect')) { $mysql_connection = @mysql_connect($db_host, $db_username, $db_password); //$mysql_connection = mysqli_connect($db_host, $db_username, $db_password,$db_name) or die("Error " . mysqli_error($link)); } //mysql pdo connection if (strlen($db_host) == 0 && empty($db_port)) { //if both host and port are empty use the unix socket $db = new PDO("mysql:host=$db_host;unix_socket=/var/run/mysqld/mysqld.sock;dbname=$db_name;charset=utf8;", $db_username, $db_password); } else { if (empty($db_port)) { //leave out port if it is empty $db = new PDO("mysql:host=$db_host;dbname=$db_name;charset=utf8;", $db_username, $db_password, array( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION )); } else { $db = new PDO("mysql:host=$db_host;port=$db_port;dbname=$db_name;charset=utf8;", $db_username, $db_password, array( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION )); } } } catch (PDOException $error) { print "error: " . $error->getMessage() . "
"; die(); } } //end if db_type mysql if ($db_type == "pgsql") { //database connection try { if (!isset($db_secure)) { $db_secure = false; } if (!empty($db_host)) { if (empty($db_port)) { $db_port = "5432"; } if ($db_secure == true) { $db = new PDO("pgsql:host=$db_host port=$db_port dbname=$db_name user=$db_username password=$db_password sslmode=verify-ca sslrootcert=$db_cert_authority"); } else { $db = new PDO("pgsql:host=$db_host port=$db_port dbname=$db_name user=$db_username password=$db_password"); } } else { $db = new PDO("pgsql:dbname=$db_name user=$db_username password=$db_password"); } } catch (PDOException $error) { print "error: " . $error->getMessage() . "
"; die(); } } //end if db_type pgsql if ($db_type == "odbc") { //database connection try { $db = new PDO("odbc:".$db_name); } catch (PDOException $error) { print "error: " . $error->getMessage() . "
"; die(); } } //end if db_type pgsql ?>