Add database driver to along with type it helps distinguish which type of database is being used when using odbc. Added app_defaults to core/databases so that the script config.lua can be created when the database is saved and upgraded. Previously it only saved a new config.lua when running upgrade or upgrade schema which was not intuitive.

This commit is contained in:
Mark Crane
2012-07-17 15:56:32 +00:00
parent 39f6ff0c13
commit c344400c82
4 changed files with 279 additions and 170 deletions

View File

@@ -54,6 +54,11 @@
$apps[$x]['db'][$y]['fields'][$z]['description']['en'] = '';
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = 'true';
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = 'database_driver';
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = 'db_type';
$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
$apps[$x]['db'][$y]['fields'][$z]['description']['en'] = 'Select the database driver.';
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = 'database_type';
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = 'db_type';
$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';

View File

@@ -0,0 +1,152 @@
<?php
/*
FusionPBX
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
//set the database driver
$sql = "select * from v_databases ";
$sql .= "where database_driver is null ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$database_uuid = $row["database_uuid"];
$database_type = $row["database_type"];
$database_type_array = explode(":", $database_type);
if ($database_type_array[0] == "odbc") {
$database_driver = $database_type_array[1];
}
else {
$database_driver = $database_type_array[0];
}
$sql = "update v_databases set ";
$sql .= "database_driver = '$database_driver' ";
$sql .= "where database_uuid = '$database_uuid' ";
$db->exec(check_sql($sql));
unset($sql);
}
if (strlen($_SESSION['switch']['scripts']['dir']) > 0) {
//get the odbc information
$sql = "select count(*) as num_rows from v_databases ";
$sql .= "where database_type = 'odbc' ";
if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; }
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
if ($row['num_rows'] > 0) {
$odbc_num_rows = $row['num_rows'];
$sql = "select * from v_databases ";
$sql .= "where database_driver = 'odbc' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$dsn_name = $row["database_name"];
$dsn_username = $row["database_username"];
$dsn_password = $row["database_password"];
break; //limit to 1 row
}
unset ($prep_statement);
}
else {
$odbc_num_rows = '0';
}
}
//config.lua
$fout = fopen($_SESSION['switch']['scripts']['dir']."/resources/config.lua","w");
$tmp = "\n";
$tmp .= "--switch directories\n";
if (strlen($_SESSION['switch']['sounds']['dir']) > 0) {
$tmp .= " sounds_dir = \"".$_SESSION['switch']['sounds']['dir']."\";\n";
}
if (strlen($_SESSION['switch']['recordings']['dir']) > 0) {
$tmp .= " recordings_dir = \"".$_SESSION['switch']['recordings']['dir']."\";\n";
}
$tmp .= "\n";
$tmp .= "--database connection info\n";
if (strlen($db_type) > 0) {
$tmp .= " db_type = \"".$db_type."\";\n";
}
if (strlen($db_name) > 0) {
$tmp .= " db_name = \"".$db_name."\";\n";
}
if (strlen($db_path) > 0) {
$tmp .= " db_path = \"".$db_path."\";\n";
}
if (strlen($dsn_name) > 0) {
$tmp .= " dsn_name = \"".$dsn_name."\";\n";
}
if (strlen($dsn_username) > 0) {
$tmp .= " dsn_username = \"".$dsn_username."\";\n";
}
if (strlen($dsn_password) > 0) {
$tmp .= " dsn_password = \"".$dsn_password."\";\n";
}
$tmp .= "\n";
$tmp .= "--additional info\n";
$tmp .= " tmp_dir = \"".$tmp_dir."\";\n";
fwrite($fout, $tmp);
unset($tmp);
fclose($fout);
//config.js
$fout = fopen($_SESSION['switch']['scripts']['dir']."/resources/config.js","w");
$tmp = "\n";
$tmp .= "//switch directories\n";
$tmp .= " var admin_pin = \"".$row["admin_pin"]."\";\n";
$tmp .= " var sounds_dir = \"".$_SESSION['switch']['sounds']['dir']."\";\n";
$tmp .= " var recordings_dir = \"".$_SESSION['switch']['recordings']['dir']."\";\n";
$tmp .= "\n";
$tmp = "//database connection info\n";
if (strlen($db_type) > 0) {
$tmp .= " var db_type = \"".$db_type."\";\n";
}
if (strlen($db_name) > 0) {
$tmp .= " var db_name = \"".$db_name."\";\n";
}
if (strlen($db_path) > 0) {
$tmp .= " var db_path = \"".$db_path."\";\n";
}
if (strlen($dsn_name) > 0) {
$tmp .= " var dsn_name = \"".$dsn_name."\";\n";
}
if (strlen($dsn_username) > 0) {
$tmp .= " var dsn_username = \"".$dsn_username."\";\n";
}
if (strlen($dsn_password) > 0) {
$tmp .= " var dsn_password = \"".$dsn_password."\";\n";
}
$tmp .= "\n";
$tmp .= "//additional info\n";
$tmp .= " var tmp_dir = \"".$tmp_dir."\";\n";
fwrite($fout, $tmp);
unset($tmp);
fclose($fout);
}
?>

View File

@@ -44,6 +44,7 @@ else {
}
//clear the values
$database_driver = '';
$database_type = '';
$database_host = '';
$database_port = '';
@@ -55,6 +56,7 @@ else {
//get http post variables and set them to php variables
if (count($_POST)>0) {
$database_driver = check_str($_POST["database_driver"]);
$database_type = check_str($_POST["database_type"]);
$database_host = check_str($_POST["database_host"]);
$database_port = check_str($_POST["database_port"]);
@@ -73,6 +75,7 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
}
//check for all required data
//if (strlen($database_driver) == 0) { $msg .= "Please provide: Driver<br>\n"; }
//if (strlen($database_type) == 0) { $msg .= "Please provide: Type<br>\n"; }
//if (strlen($database_host) == 0) { $msg .= "Please provide: Host<br>\n"; }
//if (strlen($database_port) == 0) { $msg .= "Please provide: Port<br>\n"; }
@@ -97,66 +100,79 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
//add or update the database
if ($_POST["persistformvar"] != "true") {
if ($action == "add") {
$database_uuid = uuid();
$sql = "insert into v_databases ";
$sql .= "(";
//$sql .= "domain_uuid, ";
$sql .= "database_uuid, ";
$sql .= "database_type, ";
$sql .= "database_host, ";
$sql .= "database_port, ";
$sql .= "database_name, ";
$sql .= "database_username, ";
$sql .= "database_password, ";
$sql .= "database_path, ";
$sql .= "database_description ";
$sql .= ")";
$sql .= "values ";
$sql .= "(";
//$sql .= "'$domain_uuid', ";
$sql .= "'$database_uuid', ";
$sql .= "'$database_type', ";
$sql .= "'$database_host', ";
$sql .= "'$database_port', ";
$sql .= "'$database_name', ";
$sql .= "'$database_username', ";
$sql .= "'$database_password', ";
$sql .= "'$database_path', ";
$sql .= "'$database_description' ";
$sql .= ")";
$db->exec(check_sql($sql));
unset($sql);
//add the data
$database_uuid = uuid();
$sql = "insert into v_databases ";
$sql .= "(";
//$sql .= "domain_uuid, ";
$sql .= "database_uuid, ";
$sql .= "database_driver, ";
$sql .= "database_type, ";
$sql .= "database_host, ";
$sql .= "database_port, ";
$sql .= "database_name, ";
$sql .= "database_username, ";
$sql .= "database_password, ";
$sql .= "database_path, ";
$sql .= "database_description ";
$sql .= ")";
$sql .= "values ";
$sql .= "(";
//$sql .= "'$domain_uuid', ";
$sql .= "'$database_uuid', ";
$sql .= "'$database_driver', ";
$sql .= "'$database_type', ";
$sql .= "'$database_host', ";
$sql .= "'$database_port', ";
$sql .= "'$database_name', ";
$sql .= "'$database_username', ";
$sql .= "'$database_password', ";
$sql .= "'$database_path', ";
$sql .= "'$database_description' ";
$sql .= ")";
$db->exec(check_sql($sql));
unset($sql);
require_once "includes/header.php";
echo "<meta http-equiv=\"refresh\" content=\"2;url=databases.php\">\n";
echo "<div align='center'>\n";
echo "Add Complete\n";
echo "</div>\n";
require_once "includes/footer.php";
return;
//set the defaults
require_once "app_defaults.php";
//redirect the browser
require_once "includes/header.php";
echo "<meta http-equiv=\"refresh\" content=\"2;url=databases.php\">\n";
echo "<div align='center'>\n";
echo "Add Complete\n";
echo "</div>\n";
require_once "includes/footer.php";
return;
} //if ($action == "add")
if ($action == "update") {
$sql = "update v_databases set ";
$sql .= "database_type = '$database_type', ";
$sql .= "database_host = '$database_host', ";
$sql .= "database_port = '$database_port', ";
$sql .= "database_name = '$database_name', ";
$sql .= "database_username = '$database_username', ";
$sql .= "database_password = '$database_password', ";
$sql .= "database_path = '$database_path', ";
$sql .= "database_description = '$database_description' ";
$sql .= "where database_uuid = '$database_uuid' ";
$db->exec(check_sql($sql));
unset($sql);
//udpate the database
$sql = "update v_databases set ";
$sql .= "database_type = '$database_type', ";
$sql .= "database_driver = '$database_driver', ";
$sql .= "database_host = '$database_host', ";
$sql .= "database_port = '$database_port', ";
$sql .= "database_name = '$database_name', ";
$sql .= "database_username = '$database_username', ";
$sql .= "database_password = '$database_password', ";
$sql .= "database_path = '$database_path', ";
$sql .= "database_description = '$database_description' ";
$sql .= "where database_uuid = '$database_uuid' ";
$db->exec(check_sql($sql));
unset($sql);
require_once "includes/header.php";
echo "<meta http-equiv=\"refresh\" content=\"2;url=databases.php\">\n";
echo "<div align='center'>\n";
echo "Update Complete\n";
echo "</div>\n";
require_once "includes/footer.php";
return;
//set the defaults
require_once "app_defaults.php";
//redirect the browser
require_once "includes/header.php";
echo "<meta http-equiv=\"refresh\" content=\"2;url=databases.php\">\n";
echo "<div align='center'>\n";
echo "Update Complete\n";
echo "</div>\n";
require_once "includes/footer.php";
return;
} //if ($action == "update")
} //if ($_POST["persistformvar"] != "true")
} //(count($_POST)>0 && strlen($_POST["persistformvar"]) == 0)
@@ -170,6 +186,7 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$database_driver = $row["database_driver"];
$database_type = $row["database_type"];
$database_host = $row["database_host"];
$database_port = $row["database_port"];
@@ -211,6 +228,43 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " Driver:\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='database_driver'>\n";
echo " <option value=''></option>\n";
if ($database_driver == "sqlite") {
echo " &nbsp; &nbsp;<option value='sqlite' selected='selected'>sqlite</option>\n";
}
else {
echo " &nbsp; &nbsp;<option value='sqlite'>sqlite</option>\n";
}
if ($database_driver == "pgsql") {
echo " &nbsp; &nbsp;<option value='pgsql' selected='selected'>pgsql</option>\n";
}
else {
echo " &nbsp; &nbsp;<option value='pgsql'>pgsql</option>\n";
}
if ($database_driver == "mysql") {
echo " &nbsp; &nbsp;<option value='mysql' selected='selected'>mysql</option>\n";
}
else {
echo " &nbsp; &nbsp;<option value='mysql'>mysql</option>\n";
}
if ($database_driver == "odbc") {
echo " &nbsp; &nbsp;<option value='odbc' selected='selected'>odbc</option>\n";
}
else {
echo " &nbsp; &nbsp;<option value='odbc'>odbc</option>\n";
}
echo " </select>\n";
echo "<br />\n";
echo "Select the database driver.\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " Type:\n";
@@ -219,30 +273,29 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
echo " <select class='formfld' name='database_type'>\n";
echo " <option value=''></option>\n";
if ($database_type == "sqlite") {
echo " <option value='sqlite' selected='selected'>sqlite</option>\n";
echo " &nbsp; &nbsp;<option value='sqlite' selected='selected'>sqlite</option>\n";
}
else {
echo " <option value='sqlite'>sqlite</option>\n";
}
if ($database_type == "odbc") {
echo " <option value='odbc' selected='selected'>odbc</option>\n";
}
else {
echo " <option value='odbc'>odbc</option>\n";
echo " &nbsp; &nbsp;<option value='sqlite'>sqlite</option>\n";
}
if ($database_type == "pgsql") {
echo " <option value='pgsql' selected='selected'>pgsql</option>\n";
echo " &nbsp; &nbsp;<option value='pgsql' selected='selected'>pgsql</option>\n";
}
else {
echo " <option value='pgsql'>pgsql</option>\n";
echo " &nbsp; &nbsp;<option value='pgsql'>pgsql</option>\n";
}
if ($database_type == "mysql") {
echo " <option value='mysql' selected='selected'>mysql</option>\n";
echo " &nbsp; &nbsp;<option value='mysql' selected='selected'>mysql</option>\n";
}
else {
echo " <option value='mysql'>mysql</option>\n";
echo " &nbsp; &nbsp;<option value='mysql'>mysql</option>\n";
}
if ($database_type == "mssql") {
echo " &nbsp; &nbsp;<option value='mssql' selected='selected'>mssql</option>\n";
}
else {
echo " &nbsp; &nbsp;<option value='mssql'>mssql</option>\n";
}
echo " </select>\n";
echo "<br />\n";
echo "Select the database type.\n";

View File

@@ -27,108 +27,7 @@
if (strlen($_SESSION['switch']['scripts']['dir']) > 0) {
//if the resource scripts resource directory does not exist then create it
if (strlen($_SESSION['switch']['scripts']['dir']) > 0) {
if (!is_dir($_SESSION['switch']['scripts']['dir']."/resources")) { mkdir($_SESSION['switch']['scripts']['dir']."/resources",0755,true); }
}
if (!is_dir($_SESSION['switch']['scripts']['dir']."/resources")) { mkdir($_SESSION['switch']['scripts']['dir']."/resources",0755,true); }
//get odbc information
$sql = "select count(*) as num_rows from v_databases ";
$sql .= "where database_type = 'odbc' ";
if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; }
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
if ($row['num_rows'] > 0) {
$odbc_num_rows = $row['num_rows'];
$sql = "select * from v_databases ";
$sql .= "where database_type = 'odbc' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$dsn_name = $row["database_name"];
$dsn_username = $row["database_username"];
$dsn_password = $row["database_password"];
break; //limit to 1 row
}
unset ($prep_statement);
}
else {
$odbc_num_rows = '0';
}
}
//config.lua
$fout = fopen($_SESSION['switch']['scripts']['dir']."/resources/config.lua","w");
$tmp = "\n";
$tmp .= "--switch directories\n";
if (strlen($_SESSION['switch']['sounds']['dir']) > 0) {
$tmp .= " sounds_dir = \"".$_SESSION['switch']['sounds']['dir']."\";\n";
}
if (strlen($_SESSION['switch']['recordings']['dir']) > 0) {
$tmp .= " recordings_dir = \"".$_SESSION['switch']['recordings']['dir']."\";\n";
}
$tmp .= "\n";
$tmp .= "--database connection info\n";
if (strlen($db_type) > 0) {
$tmp .= " db_type = \"".$db_type."\";\n";
}
if (strlen($db_name) > 0) {
$tmp .= " db_name = \"".$db_name."\";\n";
}
if (strlen($db_path) > 0) {
$tmp .= " db_path = \"".$db_path."\";\n";
}
if (strlen($dsn_name) > 0) {
$tmp .= " dsn_name = \"".$dsn_name."\";\n";
}
if (strlen($dsn_username) > 0) {
$tmp .= " dsn_username = \"".$dsn_username."\";\n";
}
if (strlen($dsn_password) > 0) {
$tmp .= " dsn_password = \"".$dsn_password."\";\n";
}
$tmp .= "\n";
$tmp .= "--additional info\n";
$tmp .= " tmp_dir = \"".$tmp_dir."\";\n";
fwrite($fout, $tmp);
unset($tmp);
fclose($fout);
//config.js
$fout = fopen($_SESSION['switch']['scripts']['dir']."/resources/config.js","w");
$tmp = "\n";
$tmp .= "//switch directories\n";
$tmp .= " var admin_pin = \"".$row["admin_pin"]."\";\n";
$tmp .= " var sounds_dir = \"".$_SESSION['switch']['sounds']['dir']."\";\n";
$tmp .= " var recordings_dir = \"".$_SESSION['switch']['recordings']['dir']."\";\n";
$tmp .= "\n";
$tmp = "//database connection info\n";
if (strlen($db_type) > 0) {
$tmp .= " var db_type = \"".$db_type."\";\n";
}
if (strlen($db_name) > 0) {
$tmp .= " var db_name = \"".$db_name."\";\n";
}
if (strlen($db_path) > 0) {
$tmp .= " var db_path = \"".$db_path."\";\n";
}
if (strlen($dsn_name) > 0) {
$tmp .= " var dsn_name = \"".$dsn_name."\";\n";
}
if (strlen($dsn_username) > 0) {
$tmp .= " var dsn_username = \"".$dsn_username."\";\n";
}
if (strlen($dsn_password) > 0) {
$tmp .= " var dsn_password = \"".$dsn_password."\";\n";
}
$tmp .= "\n";
$tmp .= "//additional info\n";
$tmp .= " var tmp_dir = \"".$tmp_dir."\";\n";
fwrite($fout, $tmp);
unset($tmp);
fclose($fout);
}
?>