From ba196265aaad30c1cb46ec5cce3067f4857b506c Mon Sep 17 00:00:00 2001
From: ftimme <ft@falkotimme.com>
Date: Tue, 11 Jun 2013 13:07:59 -0400
Subject: [PATCH] - Fixed FS#2888 - Clients cannot add secondary DNS.

---
 interface/web/client/reseller_edit.php                  |    2 
 interface/web/client/templates/client_edit_limits.htm   |    6 +++
 interface/web/client/form/client.tform.php              |   35 +++++++++++------
 interface/web/dns/dns_slave_edit.php                    |    4 +-
 interface/web/client/lib/lang/de_reseller.lng           |    5 +-
 interface/web/client/lib/lang/en_reseller.lng           |    1 
 interface/web/client/lib/lang/de_client.lng             |    5 +-
 interface/web/client/lib/lang/en_client.lng             |    1 
 interface/web/client/client_edit.php                    |    2 
 install/sql/ispconfig3.sql                              |    1 
 interface/web/client/templates/reseller_edit_limits.htm |    6 +++
 install/sql/incremental/upd_0052.sql                    |    1 
 interface/web/client/form/reseller.tform.php            |   11 +++++
 13 files changed, 60 insertions(+), 20 deletions(-)

diff --git a/install/sql/incremental/upd_0052.sql b/install/sql/incremental/upd_0052.sql
new file mode 100644
index 0000000..7ad62b2
--- /dev/null
+++ b/install/sql/incremental/upd_0052.sql
@@ -0,0 +1 @@
+ALTER TABLE `client` ADD `default_slave_dnsserver` INT( 11 ) UNSIGNED NOT NULL DEFAULT '1' AFTER `limit_dns_zone`;
\ No newline at end of file
diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql
index 524dc60..2150aa1 100644
--- a/install/sql/ispconfig3.sql
+++ b/install/sql/ispconfig3.sql
@@ -204,6 +204,7 @@
   `limit_aps` int(11) NOT NULL DEFAULT '-1',
   `default_dnsserver` int(11) unsigned NOT NULL DEFAULT '1',
   `limit_dns_zone` int(11) NOT NULL DEFAULT '-1',
+  `default_slave_dnsserver` int(11) unsigned NOT NULL DEFAULT '1',
   `limit_dns_slave_zone` int(11) NOT NULL DEFAULT '-1',
   `limit_dns_record` int(11) NOT NULL DEFAULT '-1',
   `default_dbserver` int(11) NOT NULL DEFAULT '1',
diff --git a/interface/web/client/client_edit.php b/interface/web/client/client_edit.php
index 6f7cf53..2b72d81 100644
--- a/interface/web/client/client_edit.php
+++ b/interface/web/client/client_edit.php
@@ -177,7 +177,7 @@
 		$tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE db_server = 1 AND mirror_server_id = 0 LIMIT 0,1');
 		$default_dbserver = $app->functions->intval($tmp['server_id']);
 		
-		$sql = "UPDATE client SET default_mailserver = $default_mailserver, default_webserver = $default_webserver, default_dnsserver = $default_dnsserver, default_dbserver = $default_dbserver WHERE client_id = ".$this->id;
+		$sql = "UPDATE client SET default_mailserver = $default_mailserver, default_webserver = $default_webserver, default_dnsserver = $default_dnsserver, default_slave_dnsserver = $default_dnsserver, default_dbserver = $default_dbserver WHERE client_id = ".$this->id;
 		$app->db->query($sql);
 		
 
diff --git a/interface/web/client/form/client.tform.php b/interface/web/client/form/client.tform.php
index 7d7bf45..b29a831 100644
--- a/interface/web/client/form/client.tform.php
+++ b/interface/web/client/form/client.tform.php
@@ -899,20 +899,31 @@
 			'rows'		=> '',
 			'cols'		=> ''
 		),
-                'limit_dns_slave_zone' => array (
-                        'datatype'      => 'INTEGER',
-                        'formtype'      => 'TEXT',
-                        'validators'    => array (      0 => array (    'type'  => 'ISINT',
+		'default_slave_dnsserver' => array (
+			'datatype'	=> 'INTEGER',
+			'formtype'	=> 'SELECT',
+			'default'	=> '1',
+			'datasource'	=> array ( 	'type'	=> 'CUSTOM',
+										'class'=> 'custom_datasource',
+										'function'=> 'client_servers'
+									 ),
+			'value'		=> '',
+			'name'		=> 'default_slave_dnsserver'
+		),
+		'limit_dns_slave_zone' => array (
+            'datatype'      => 'INTEGER',
+            'formtype'      => 'TEXT',
+            'validators'    => array (      0 => array (    'type'  => 'ISINT',
                                                                                                                 'errmsg'=> 'limit_dns_slave_zone_error_notint'),
                                                                         ),
-                        'default'       => '-1',
-                        'value'         => '',
-                        'separator'     => '',
-                        'width'         => '10',
-                        'maxlength'     => '10',
-                        'rows'          => '',
-                        'cols'          => ''
-                ),
+            'default'       => '-1',
+            'value'         => '',
+            'separator'     => '',
+            'width'         => '10',
+            'maxlength'     => '10',
+            'rows'          => '',
+            'cols'          => ''
+        ),
 		'limit_dns_record' => array (
 			'datatype'	=> 'INTEGER',
 			'formtype'	=> 'TEXT',
diff --git a/interface/web/client/form/reseller.tform.php b/interface/web/client/form/reseller.tform.php
index df240e5..a6c4bd9 100644
--- a/interface/web/client/form/reseller.tform.php
+++ b/interface/web/client/form/reseller.tform.php
@@ -894,6 +894,17 @@
 			'rows'		=> '',
 			'cols'		=> ''
 		),
+		'default_slave_dnsserver' => array (
+			'datatype'	=> 'INTEGER',
+			'formtype'	=> 'SELECT',
+			'default'	=> '1',
+			'datasource'	=> array ( 	'type'	=> 'SQL',
+										'querystring' => 'SELECT server_id,server_name FROM server WHERE dns_server = 1 AND {AUTHSQL} ORDER BY server_name',
+										'keyfield'=> 'server_id',
+										'valuefield'=> 'server_name'
+									 ),
+			'value'		=> ''
+		),
                 'limit_dns_slave_zone' => array (
                         'datatype'      => 'INTEGER',
                         'formtype'      => 'TEXT',
diff --git a/interface/web/client/lib/lang/de_client.lng b/interface/web/client/lib/lang/de_client.lng
index 46afed5..0c89739 100644
--- a/interface/web/client/lib/lang/de_client.lng
+++ b/interface/web/client/lib/lang/de_client.lng
@@ -103,10 +103,10 @@
 $wb['limit_web_quota_txt'] = 'Webbeschränkung';
 $wb['limit_traffic_quota_txt'] = 'Trafficbeschränkung';
 $wb['limit_trafficquota_error_notint'] = 'Trafficbeschränkung muss eine Zahl sein.';
-$wb['limit_dns_slave_zone_txt'] = 'Max. Anzahl an Zweiter DNS Zonen';
+$wb['limit_dns_slave_zone_txt'] = 'Max. Anzahl an Secondary DNS Zonen';
 $wb['limit_webdav_user_txt'] = 'Max. Anzahl an WebDAV Benutzern';
 $wb['limit_webdav_user_error_notint'] = 'Das WebDAV Benutzer Limit muss eine Zahl sein.';
-$wb['limit_dns_slave_zone_error_notint'] = 'Das Zweiter DNS Zonen Limit muss eine Zahl sein.';
+$wb['limit_dns_slave_zone_error_notint'] = 'Das Secondary DNS Zonen Limit muss eine Zahl sein.';
 $wb['customer_no_txt'] = 'Kundennummer';
 $wb['vat_id_txt'] = 'USt-ID';
 $wb['required_fields_txt'] = '* Benötigte Felder';
@@ -143,4 +143,5 @@
 $wb['aps_limits_txt'] = 'APS Installationsassistent Limits';
 $wb['limit_aps_txt'] = 'Max. Anzahl an APS-Instanzen';
 $wb['limit_aps_error_notint'] = 'Das APS Instanzen Limit muss eine Zahl sein.';
+$wb["default_slave_dnsserver_txt"] = 'Standard Secondary DNS Server';
 ?>
diff --git a/interface/web/client/lib/lang/de_reseller.lng b/interface/web/client/lib/lang/de_reseller.lng
index 14cd58a..3b06329 100644
--- a/interface/web/client/lib/lang/de_reseller.lng
+++ b/interface/web/client/lib/lang/de_reseller.lng
@@ -101,8 +101,8 @@
 $wb['limit_web_quota_txt'] = 'Speicherplatzbeschränkung';
 $wb['limit_traffic_quota_txt'] = 'Transfervolumenbeschränkung';
 $wb['limit_trafficquota_error_notint'] = 'Transfervolumenbeschränkung muss eine Zahl sein.';
-$wb['limit_dns_slave_zone_txt'] = 'Max. Anzahl an Zweiter DNS Zonen';
-$wb['limit_dns_slave_zone_error_notint'] = 'Das Zweiter DNS Zonen Limit muss eine Zahl sein.';
+$wb['limit_dns_slave_zone_txt'] = 'Max. Anzahl an Secondary DNS Zonen';
+$wb['limit_dns_slave_zone_error_notint'] = 'Das Secondary DNS Zonen Limit muss eine Zahl sein.';
 $wb['limit_dns_record_error_notint'] = 'Das DNS Eintrag Limit muss eine Zahl sein.';
 $wb['customer_no_txt'] = 'Kundennummer';
 $wb['vat_id_txt'] = 'USt-ID';
@@ -142,4 +142,5 @@
 $wb['aps_limits_txt'] = 'APS Installationsassistent Limits';
 $wb['limit_aps_txt'] = 'Max. Anzahl an APS-Instanzen';
 $wb['limit_aps_error_notint'] = 'Das APS Instanzen Limit muss eine Zahl sein.';
+$wb["default_slave_dnsserver_txt"] = 'Standard Secondary DNS Server';
 ?>
diff --git a/interface/web/client/lib/lang/en_client.lng b/interface/web/client/lib/lang/en_client.lng
index 61a38a1..69574d8 100644
--- a/interface/web/client/lib/lang/en_client.lng
+++ b/interface/web/client/lib/lang/en_client.lng
@@ -146,4 +146,5 @@
 $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
+$wb["default_slave_dnsserver_txt"] = 'Default Secondary DNS Server';
 ?>
diff --git a/interface/web/client/lib/lang/en_reseller.lng b/interface/web/client/lib/lang/en_reseller.lng
index ccde71c..d936ddb 100644
--- a/interface/web/client/lib/lang/en_reseller.lng
+++ b/interface/web/client/lib/lang/en_reseller.lng
@@ -144,4 +144,5 @@
 $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
+$wb["default_slave_dnsserver_txt"] = 'Default Secondary DNS Server';
 ?>
diff --git a/interface/web/client/reseller_edit.php b/interface/web/client/reseller_edit.php
index 83754f3..1d02237 100644
--- a/interface/web/client/reseller_edit.php
+++ b/interface/web/client/reseller_edit.php
@@ -175,7 +175,7 @@
 		$tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE db_server = 1 LIMIT 0,1');
 		$default_dbserver = $app->functions->intval($tmp['server_id']);
 		
-		$sql = "UPDATE client SET default_mailserver = $default_mailserver, default_webserver = $default_webserver, default_dnsserver = $default_dnsserver, default_dbserver = $default_dbserver WHERE client_id = ".$this->id;
+		$sql = "UPDATE client SET default_mailserver = $default_mailserver, default_webserver = $default_webserver, default_dnsserver = $default_dnsserver, default_slave_dnsserver = $default_dnsserver, default_dbserver = $default_dbserver WHERE client_id = ".$this->id;
 		$app->db->query($sql);
 
 		parent::onAfterInsert();
diff --git a/interface/web/client/templates/client_edit_limits.htm b/interface/web/client/templates/client_edit_limits.htm
index 3ad6c9d..94d5d5e 100644
--- a/interface/web/client/templates/client_edit_limits.htm
+++ b/interface/web/client/templates/client_edit_limits.htm
@@ -256,6 +256,12 @@
                     <label for="limit_dns_zone">{tmpl_var name='limit_dns_zone_txt'}</label>
                     <input name="limit_dns_zone" id="limit_dns_zone" value="{tmpl_var name='limit_dns_zone'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
                 </div>
+				<div class="ctrlHolder">
+                    <label for="default_slave_dnsserver">{tmpl_var name='default_slave_dnsserver_txt'}</label>
+                    <select name="default_slave_dnsserver" id="default_slave_dnsserver" class="selectInput">
+                        {tmpl_var name='default_slave_dnsserver'}
+                    </select>
+                </div>
                 <div class="ctrlHolder">
                     <label for="limit_dns_slave_zone">{tmpl_var name='limit_dns_slave_zone_txt'}</label>
                     <input name="limit_dns_slave_zone" id="limit_dns_slave_zone" value="{tmpl_var name='limit_dns_slave_zone'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
diff --git a/interface/web/client/templates/reseller_edit_limits.htm b/interface/web/client/templates/reseller_edit_limits.htm
index 468a680..6a93369 100644
--- a/interface/web/client/templates/reseller_edit_limits.htm
+++ b/interface/web/client/templates/reseller_edit_limits.htm
@@ -244,6 +244,12 @@
                     <label for="limit_dns_zone">{tmpl_var name='limit_dns_zone_txt'}</label>
                     <input name="limit_dns_zone" id="limit_dns_zone" value="{tmpl_var name='limit_dns_zone'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
                 </div>
+				<div class="ctrlHolder">
+                    <label for="default_slave_dnsserver">{tmpl_var name='default_slave_dnsserver_txt'}</label>
+                    <select name="default_slave_dnsserver" id="default_slave_dnsserver" class="selectInput">
+                        {tmpl_var name='default_slave_dnsserver'}
+                    </select>
+                </div>
                 <div class="ctrlHolder">
                     <label for="limit_dns_slave_zone">{tmpl_var name='limit_dns_slave_zone_txt'}</label>
                     <input name="limit_dns_slave_zone" id="limit_dns_slave_zone" value="{tmpl_var name='limit_dns_slave_zone'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
diff --git a/interface/web/dns/dns_slave_edit.php b/interface/web/dns/dns_slave_edit.php
index 2a5247a..d969165 100644
--- a/interface/web/dns/dns_slave_edit.php
+++ b/interface/web/dns/dns_slave_edit.php
@@ -123,7 +123,7 @@
 		if($_SESSION["s"]["user"]["typ"] != 'admin') {
 			// Get the limits of the client
 			$client_group_id = $_SESSION["s"]["user"]["default_group"];
-			$client = $app->db->queryOneRecord("SELECT limit_dns_slave_zone, default_dnsserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
+			$client = $app->db->queryOneRecord("SELECT limit_dns_slave_zone, default_slave_dnsserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
 		
 			// When the record is updated
 			if($this->id > 0) {
@@ -134,7 +134,7 @@
 			// When the record is inserted
 			} else {
 				// set the server ID to the default dnsserver of the client
-				$this->dataRecord["server_id"] = $client["default_dnsserver"];
+				$this->dataRecord["server_id"] = $client["default_slave_dnsserver"];
 				
 				// Check if the user may add anoter secondary domain.
 				if(!$app->tform->checkClientLimit('limit_dns_slave_zone')) {

--
Gitblit v1.9.1