Browse Source

Added the better create database support

Matthew Vale 9 năm trước cách đây
mục cha
commit
e5bc992b6a

+ 1 - 0
core/install/install_first_time.php

@@ -45,6 +45,7 @@ require_once "resources/classes/text.php";
 	$db_name = '';
 	$db_username = '';
 	$db_password = '';
+	$db_create_option = 'none';
 	$db_create_username = '';
 	$db_create_password = '';
 

+ 30 - 30
core/install/resources/classes/install_fusionpbx.php

@@ -54,6 +54,9 @@ include "root.php";
 		public $db_name;
 		public $db_username;
 		public $db_password;
+		public $db_create_option = 'none';
+		public $db_create_username;
+		public $db_create_password;
 
 	 	function __construct($domain_name, $domain_uuid, $detect_switch) {
 			if(!is_a($detect_switch, 'detect_switch')){
@@ -200,6 +203,12 @@ include "root.php";
 		protected function create_database() {
 			require $this->config_php;
 			$this->write_progress("Creating database as " . $this->db_type);
+			if($this->create_db_option == 'same')
+			{
+				$this->create_db_option = 'user';
+				$this->create_db_username = $this->db_username;
+				$this->create_db_password = $this->db_username_password;
+			}
 			$function = "create_database_" . $this->db_type;
 			$this->$function();
 			global $db;
@@ -270,17 +279,17 @@ include "root.php";
 
 		protected function create_database_pgsql() {
 
-				//if $this->db_create_username provided, attempt to create new PG role and database
-					if (strlen($this->db_create_username) > 0) {
+					if ($this->db_create_option == 'user') {
+					//Attempt to create new PG role and database
 						try {
 							if (strlen($this->db_port) == 0) { $this->db_port = "5432"; }
 							if (strlen($this->db_host) > 0) {
-								$this->dbh = new PDO("pgsql:host={$this->db_host} port={$this->db_port} user={".$this->db_create_username."} password={".$this->db_create_password."} dbname=template1");
+								$this->dbh = new PDO("pgsql:host={$this->db_host} port={$this->db_port} user={$this->db_create_username} password={$this->db_create_password} dbname=template1");
 							} else {
-								$this->dbh = new PDO("pgsql:host=localhost port={$this->db_port} user={".$this->db_create_username."} password={".$this->db_create_password."} dbname=template1");
+								$this->dbh = new PDO("pgsql:host=localhost port={$this->db_port} user={$this->db_create_username} password={$this->db_create_password} dbname=template1");
 							}
 						} catch (PDOException $error) {
-							throw new Exception("error connecting to database: " . $error->getMessage());
+							throw new Exception("error connecting to database in order to create: " . $error->getMessage());
 						}
 
 						//create the database, user, grant perms
@@ -344,50 +353,41 @@ include "root.php";
 
 		protected function create_database_mysql() {
 				//database connection
+					$connect_string = '';
+					$connect_username = $this->db_username;
+					$connect_password = $this->db_password;
+					if ($this->db_create_option == 'user') {
+						$connect_username = $this->db_create_username;
+						$connect_password = $this->db_create_password;
+					}
 					try {
 						if (strlen($this->db_host) == 0 && strlen($this->db_port) == 0) {
 							//if both host and port are empty use the unix socket
-							if (strlen($this->db_create_username) == 0) {
-								$this->dbh = new PDO("mysql:host=$this->db_host;unix_socket=/var/run/mysqld/mysqld.sock;", $this->db_username, $this->db_password, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
-							}
-							else {
-								$this->dbh = new PDO("mysql:host=$this->db_host;unix_socket=/var/run/mysqld/mysqld.sock;", $this->db_create_username, $this->db_create_password, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
-							}
+							$this->dbh = new PDO("mysql:host=$this->db_host;unix_socket=/var/run/mysqld/mysqld.sock;", $connect_username, $connect_password, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
+						}
+						elseif (strlen($this->db_port) == 0) {
+							//leave out port if it is empty
+							$this->dbh = new PDO("mysql:host=$this->db_host;", $connect_username, $connect_password, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));							}
 						}
 						else {
-							if (strlen($this->db_port) == 0) {
-								//leave out port if it is empty
-								if (strlen($this->db_create_username) == 0) {
-									$this->dbh = new PDO("mysql:host=$this->db_host;", $this->db_username, $this->db_password, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
-								}
-								else {
-									$this->dbh = new PDO("mysql:host=$this->db_host;", $this->db_create_username, $this->db_create_password, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));							}
-							}
-							else {
-								if (strlen($this->db_create_username) == 0) {
-									$this->dbh = new PDO("mysql:host=$this->db_host;port=$this->db_port;", $this->db_username, $this->db_password, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
-								}
-								else {
-									$this->dbh = new PDO("mysql:host=$this->db_host;port=$this->db_port;", $this->db_create_username, $this->db_create_password, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
-								}
-							}
+							$this->dbh = new PDO("mysql:host=$this->db_host;port=$this->db_port;", $connect_username, $connect_password, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
 						}
 						$this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 						$this->dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
 					}
 					catch (PDOException $error) {
-								throw new Exception("error creating database: " . $error->getMessage() . "\n" . $sql );
+						throw new Exception("error connecting to database: " . $error->getMessage() . "\n" . $sql );
 					}
 
 				//create the table, user and set the permissions only if the db_create_username was provided
-					if (strlen($this->db_create_username) > 0) {
+					if ($this->db_create_option == 'user') {
 						//select the mysql database
 							try {
 								$this->dbh->query("USE mysql;");
 							}
 							catch (PDOException $error) {
 								if ($this->debug) {
-									throw new Exception("error conencting to database: " . $error->getMessage());
+									throw new Exception("error connecting to database in order to create: " . $error->getMessage());
 								}
 							}
 

+ 38 - 0
core/install/resources/page_parts/install_config_database.php

@@ -134,6 +134,25 @@
 		echo "</td>\n";
 		echo "</tr>\n";
 
+		echo "<tr>\n";
+		echo "<td class='vncell' valign='top' align='left' nowrap>\n";
+		echo "		Create Database Options\n";
+		echo "</td>\n";
+		echo "<td class='vtable' align='left'>\n";
+		echo "	<label class='radio'><input type='radio' name='create_db_option' value='none'";
+		if($db_create_option=='none') { echo " checked='checked'"; }
+		echo "/>Do not create database</label>\n";
+		echo "	<label class='radio'><input type='radio' name='create_db_option' value='same'";
+		if($db_create_option=='same') { echo " checked='checked'"; }
+		echo "/>Create database using above username/password</label>\n";
+		echo "	<label class='radio'><input type='radio' name='create_db_option' value='user'";
+		if($db_create_option=='user') { echo " checked='checked'"; }
+		echo "/>Create database using below username/password</label>\n";
+		echo "<br />\n";
+		echo "Choose whether to create the database\n";
+		echo "</td>\n";
+		echo "</tr>\n";
+
 		echo "<tr>\n";
 		echo "<td class='vncell' valign='top' align='left' nowrap>\n";
 		echo "		Create Database Username\n";
@@ -218,6 +237,25 @@
 		echo "</td>\n";
 		echo "</tr>\n";
 
+		echo "<tr>\n";
+		echo "<td class='vncell' valign='top' align='left' nowrap>\n";
+		echo "		Create Database Options\n";
+		echo "</td>\n";
+		echo "<td class='vtable' align='left'>\n";
+		echo "	<label class='radio'><input type='radio' name='create_db_option' value='none'";
+		if($db_create_option=='none') { echo " checked='checked'"; }
+		echo "/>Do not create database</label>\n";
+		echo "	<label class='radio'><input type='radio' name='create_db_option' value='same'";
+		if($db_create_option=='same') { echo " checked='checked'"; }
+		echo "/>Create database using above username/password</label>\n";
+		echo "	<label class='radio'><input type='radio' name='create_db_option' value='user'";
+		if($db_create_option=='user') { echo " checked='checked'"; }
+		echo "/>Create database using below username/password</label>\n";
+		echo "<br />\n";
+		echo "Choose whether to create the database\n";
+		echo "</td>\n";
+		echo "</tr>\n";
+
 		echo "<tr>\n";
 		echo "<td class='vncell' valign='top' align='left' nowrap>\n";
 		echo "		Create Database Username\n";