From be9816ee7cd57321d4097c8bc890ce37b87a7ead Mon Sep 17 00:00:00 2001
From: redray <redray@ispconfig3>
Date: Fri, 03 Oct 2008 09:25:48 -0400
Subject: [PATCH] 

---
 interface/web/sites/lib/lang/de_database.lng           |    2 ++
 interface/web/sites/lib/lang/en_database.lng           |    2 ++
 server/plugins-available/mysql_clientdb_plugin.inc.php |   11 +++++++++--
 interface/web/sites/lib/lang/ru_database.lng           |    2 ++
 install/sql/ispconfig3.sql                             |    1 +
 interface/web/sites/templates/database_edit.htm        |    8 ++++++++
 interface/web/sites/form/database.tform.php            |    6 ++++++
 interface/web/sites/database_edit.php                  |    5 ++++-
 interface/web/sites/lib/lang/nl_database.lng           |    2 ++
 9 files changed, 36 insertions(+), 3 deletions(-)

diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql
index dcf65d9..dca5ba2 100644
--- a/install/sql/ispconfig3.sql
+++ b/install/sql/ispconfig3.sql
@@ -1041,6 +1041,7 @@
   `database_name` varchar(255) default NULL,
   `database_user` varchar(255) default NULL,
   `database_password` varchar(255) default NULL,
+  `database_charset` varchar(64) default NULL,
   `remote_access` varchar(255) NOT NULL default 'y',
   `active` varchar(255) NOT NULL default 'y',
   PRIMARY KEY  (`database_id`)
diff --git a/interface/web/sites/database_edit.php b/interface/web/sites/database_edit.php
index 3dbaff8..d9b0181 100644
--- a/interface/web/sites/database_edit.php
+++ b/interface/web/sites/database_edit.php
@@ -192,11 +192,14 @@
 	function onUpdate() {
 		global $app, $conf;
 		
-		//* Prevent that the database name is changed
+		//* Prevent that the database name and charset is changed
 		$old_record = $app->tform->getDataRecord($this->id);
 		if($old_record["database_name"] != $this->dataRecord["database_name"]) {
 			$app->tform->errorMessage .= $app->tform->wordbook["database_name_change_txt"].'<br />';
 		}
+		if($old_record["database_charset"] != $this->dataRecord["database_charset"]) {
+			$app->tform->errorMessage .= $app->tform->wordbook["database_charset_change_txt"].'<br />';
+		}
 		unset($old_record);
 		
 		parent::onUpdate();
diff --git a/interface/web/sites/form/database.tform.php b/interface/web/sites/form/database.tform.php
index d28971c..8e50ca9 100644
--- a/interface/web/sites/form/database.tform.php
+++ b/interface/web/sites/form/database.tform.php
@@ -115,6 +115,12 @@
 			'width'		=> '30',
 			'maxlength'	=> '255'
 		),
+		'database_charset' => array (
+			'datatype'	=> 'VARCHAR',
+			'formtype'	=> 'SELECT',
+			'default'	=> 'y',
+			'value'		=> array('' => 'MySQL Default','latin1' => 'Latin 1','utf8' => 'UTF-8')
+		),
 		'remote_access' => array (
 			'datatype'	=> 'VARCHAR',
 			'formtype'	=> 'CHECKBOX',
diff --git a/interface/web/sites/lib/lang/de_database.lng b/interface/web/sites/lib/lang/de_database.lng
index 856abcb..a7f7a5a 100644
--- a/interface/web/sites/lib/lang/de_database.lng
+++ b/interface/web/sites/lib/lang/de_database.lng
@@ -4,6 +4,7 @@
 $wb['database_name_txt'] = 'Database name';
 $wb['database_user_txt'] = 'Database user';
 $wb['database_password_txt'] = 'Database password';
+$wb["database_charset_txt"] = 'Database charset';
 $wb['remote_access_txt'] = 'Remote Access';
 $wb['client_txt'] = 'Client';
 $wb['active_txt'] = 'Active';
@@ -17,4 +18,5 @@
 $wb['database_user_error_regex'] = 'Invalid database user name. The username may contain these characters: a-z, A-Z, 0-9 and the underscore. Length: 2 - 64 characters.';
 $wb['limit_database_txt'] = 'The max. number of databases is reached.';
 $wb['database_name_change_txt'] = 'The database name can not be changed';
+$wb["database_charset_change_txt"] = 'The database charset can not be changed';
 ?>
diff --git a/interface/web/sites/lib/lang/en_database.lng b/interface/web/sites/lib/lang/en_database.lng
index fa9d1f8..69926fb 100644
--- a/interface/web/sites/lib/lang/en_database.lng
+++ b/interface/web/sites/lib/lang/en_database.lng
@@ -4,6 +4,7 @@
 $wb["database_name_txt"] = 'Database name';
 $wb["database_user_txt"] = 'Database user';
 $wb["database_password_txt"] = 'Database password';
+$wb["database_charset_txt"] = 'Database charset';
 $wb["remote_access_txt"] = 'Remote Access';
 $wb["client_txt"] = 'Client';
 $wb["active_txt"] = 'Active';
@@ -17,4 +18,5 @@
 $wb["database_user_error_regex"] = 'Invalid database user name. The username may contain these characters: a-z, A-Z, 0-9 and the underscore. Length: 2 - 64 characters.';
 $wb["limit_database_txt"] = 'The max. number of databases is reached.';
 $wb["database_name_change_txt"] = 'The database name can not be changed';
+$wb["database_charset_change_txt"] = 'The database charset can not be changed';
 ?>
\ No newline at end of file
diff --git a/interface/web/sites/lib/lang/nl_database.lng b/interface/web/sites/lib/lang/nl_database.lng
index 6effa08..68a52d2 100644
--- a/interface/web/sites/lib/lang/nl_database.lng
+++ b/interface/web/sites/lib/lang/nl_database.lng
@@ -4,6 +4,7 @@
 $wb["database_name_txt"] = 'Databasenaam';
 $wb["database_user_txt"] = 'Database gebruiker';
 $wb["database_password_txt"] = 'Database wachtwoord';
+$wb["database_charset_txt"] = 'Database charset';
 $wb["remote_access_txt"] = 'Remote Access';
 $wb["client_txt"] = 'Klant';
 $wb["active_txt"] = 'Actief';
@@ -17,4 +18,5 @@
 $wb["database_user_error_regex"] = 'Ongeldige database gebruikersnaam. De gebruikersnaam bevat deze karakters: a-z, A-Z, 0-9 en de underscore. Lengte: 2 - 64 karakters.';
 $wb["limit_database_txt"] = 'The max. aantal databases is bereikt.';
 $wb["database_name_change_txt"] = 'De databasenaam kan niet worden gewijzigd.';
+$wb["database_charset_change_txt"] = 'The database charset can not be changed';
 ?>
diff --git a/interface/web/sites/lib/lang/ru_database.lng b/interface/web/sites/lib/lang/ru_database.lng
index bef29f9..a9f09e3 100644
--- a/interface/web/sites/lib/lang/ru_database.lng
+++ b/interface/web/sites/lib/lang/ru_database.lng
@@ -4,6 +4,7 @@
 $wb["database_name_txt"] = 'Database name';
 $wb["database_user_txt"] = 'Database user';
 $wb["database_password_txt"] = 'Database password';
+$wb["database_charset_txt"] = 'Database charset';
 $wb["remote_access_txt"] = 'Remote Access';
 $wb["client_txt"] = 'Client';
 $wb["active_txt"] = 'Активный';
@@ -17,4 +18,5 @@
 $wb["database_user_error_regex"] = 'Invalid database user name. The username may contain these characters: a-z, A-Z, 0-9 and the underscore. Length: 2 - 64 characters.';
 $wb["limit_database_txt"] = 'The max. number of databases is reached.';
 $wb["database_name_change_txt"] = 'The database name can not be changed';
+$wb["database_charset_change_txt"] = 'The database charset can not be changed';
 ?>
diff --git a/interface/web/sites/templates/database_edit.htm b/interface/web/sites/templates/database_edit.htm
index b68b47d..82129f6 100644
--- a/interface/web/sites/templates/database_edit.htm
+++ b/interface/web/sites/templates/database_edit.htm
@@ -48,6 +48,14 @@
     <td class="frmText11"><input name="database_password" type="password" class="text" value="{tmpl_var name='database_password'}" size="30" maxlength="255"></td>
   </tr>
   <tr>
+    <td class="frmText11">{tmpl_var name='database_charset_txt'}:</td>
+    <td class="frmText11">
+		<select name="database_charset" class="text">
+			{tmpl_var name='database_charset'}
+		</select>
+	</td>
+  </tr>
+  <tr>
     <td class="frmText11">{tmpl_var name='remote_access_txt'}:</td>
     <td class="frmText11">{tmpl_var name='remote_access'}</td>
   </tr>
diff --git a/server/plugins-available/mysql_clientdb_plugin.inc.php b/server/plugins-available/mysql_clientdb_plugin.inc.php
index e9c3400..24e4ba2 100644
--- a/server/plugins-available/mysql_clientdb_plugin.inc.php
+++ b/server/plugins-available/mysql_clientdb_plugin.inc.php
@@ -69,9 +69,16 @@
 				$app->log('Unable to connect to the database'.mysql_error($link),LOGLEVEL_ERROR);
 				return;
 			}
-		
+
+			// Charset for the new table
+			if($data["new"]["database_charset"] != '') {
+        $query_charset_table = ' DEFAULT CHARACTER SET '.$data["new"]["database_charset"];
+			} else {
+        $query_charset_table = '';
+			}
+
 			//* Create the new database
-			if (mysql_query('CREATE DATABASE '.mysql_real_escape_string($data["new"]["database_name"]),$link)) {
+			if (mysql_query('CREATE DATABASE '.mysql_real_escape_string($data["new"]["database_name"]).$query_charset_table,$link)) {
 				$app->log('Created MySQL database: '.$data["new"]["database_name"],LOGLEVEL_DEBUG);
 			} else {
 				$app->log('Unable to connect to the database'.mysql_error($link),LOGLEVEL_ERROR);

--
Gitblit v1.9.1