Quellcode durchsuchen

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.

Mark Crane vor 13 Jahren
Ursprung
Commit
daea71d155

+ 5 - 0
core/databases/app_config.php

@@ -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';

+ 152 - 0
core/databases/app_defaults.php

@@ -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 <[email protected]>
+	Portions created by the Initial Developer are Copyright (C) 2008-2012
+	the Initial Developer. All Rights Reserved.
+
+	Contributor(s):
+	Mark J Crane <[email protected]>
+*/
+
+//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);
+}
+?>

+ 120 - 67
core/databases/database_edit.php

@@ -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";
+		echo "	&nbsp; &nbsp;<option value='sqlite'>sqlite</option>\n";
 	}
-	if ($database_type == "odbc") {
-		echo "	<option value='odbc' selected='selected'>odbc</option>\n";
+	if ($database_type == "pgsql") {
+		echo "	&nbsp; &nbsp;<option value='pgsql' selected='selected'>pgsql</option>\n";
 	}
 	else {
-		echo "	<option value='odbc'>odbc</option>\n";
+		echo "	&nbsp; &nbsp;<option value='pgsql'>pgsql</option>\n";
 	}
-	if ($database_type == "pgsql") {
-		echo "	<option value='pgsql' selected='selected'>pgsql</option>\n";
+	if ($database_type == "mysql") {
+		echo "	&nbsp; &nbsp;<option value='mysql' selected='selected'>mysql</option>\n";
 	}
 	else {
-		echo "	<option value='pgsql'>pgsql</option>\n";
+		echo "	&nbsp; &nbsp;<option value='mysql'>mysql</option>\n";
 	}
-	if ($database_type == "mysql") {
-		echo "	<option value='mysql' selected='selected'>mysql</option>\n";
+	if ($database_type == "mssql") {
+		echo "	&nbsp; &nbsp;<option value='mssql' selected='selected'>mssql</option>\n";
 	}
 	else {
-		echo "	<option value='mysql'>mysql</option>\n";
+		echo "	&nbsp; &nbsp;<option value='mssql'>mssql</option>\n";
 	}
-
 	echo "	</select>\n";
 	echo "<br />\n";
 	echo "Select the database type.\n";

+ 1 - 102
core/upgrade/app_defaults.php

@@ -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);
 }
 ?>