From b8fe562e6d1ac21bc380951dab006b6374afe50e Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Fri, 17 Aug 2012 08:48:02 -0400
Subject: [PATCH] - Implemented new range validator for form fields in tform.inc.php - Implemented: FS#1935 - Add minimum allowed seconds Value for DNS zone records

---
 interface/web/dns/lib/lang/en_dns_soa.lng  |    5 ++
 interface/web/dns/form/dns_soa.tform.php   |   20 ++++++++++
 interface/lib/classes/tform.inc.php        |   21 ++++++++++
 interface/lib/classes/remoting_lib.inc.php |   21 ++++++++++
 4 files changed, 67 insertions(+), 0 deletions(-)

diff --git a/interface/lib/classes/remoting_lib.inc.php b/interface/lib/classes/remoting_lib.inc.php
index 784b9c4..fcde405 100644
--- a/interface/lib/classes/remoting_lib.inc.php
+++ b/interface/lib/classes/remoting_lib.inc.php
@@ -552,6 +552,27 @@
 									}
 								}
                                 break;
+								case 'RANGE':
+                                        //* Checks if the value is within the given range or above / below a value
+										//* Range examples: < 10 = ":10", between 2 and 10 = "2:10", above 5 = "5:".
+										$range_parts = explode(':',trim($validator['range']));
+										$ok = true;
+                                        if($range_parts[0] != '' && $field_value < $range_parts[0]) {
+											$ok = false;
+										}
+										if($range_parts[1] != '' && $field_value > $range_parts[1]) {
+											$ok = false;
+										}
+										if($ok != true) {
+											$errmsg = $validator['errmsg'];
+											if(isset($this->wordbook[$errmsg])) {
+												$this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
+											} else {
+												$this->errorMessage .= $errmsg."<br />\r\n";
+											}
+                                        }
+										unset($range_parts);
+                                break;
                                 case 'CUSTOM':
                                         // Calls a custom class to validate this record
                                         if($validator['class'] != '' and $validator['function'] != '') {
diff --git a/interface/lib/classes/tform.inc.php b/interface/lib/classes/tform.inc.php
index c1d1201..b01ea91 100644
--- a/interface/lib/classes/tform.inc.php
+++ b/interface/lib/classes/tform.inc.php
@@ -932,6 +932,27 @@
 									}
 								}
                                 break;
+								case 'RANGE':
+                                        //* Checks if the value is within the given range or above / below a value
+										//* Range examples: < 10 = ":10", between 2 and 10 = "2:10", above 5 = "5:".
+										$range_parts = explode(':',trim($validator['range']));
+										$ok = true;
+                                        if($range_parts[0] != '' && $field_value < $range_parts[0]) {
+											$ok = false;
+										}
+										if($range_parts[1] != '' && $field_value > $range_parts[1]) {
+											$ok = false;
+										}
+										if($ok != true) {
+											$errmsg = $validator['errmsg'];
+											if(isset($this->wordbook[$errmsg])) {
+												$this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
+											} else {
+												$this->errorMessage .= $errmsg."<br />\r\n";
+											}
+                                        }
+										unset($range_parts);
+                                break;
                                 case 'CUSTOM':
                                         // Calls a custom class to validate this record
                                         if($validator['class'] != '' and $validator['function'] != '') {
diff --git a/interface/web/dns/form/dns_soa.tform.php b/interface/web/dns/form/dns_soa.tform.php
index c102e12..16e9b11 100644
--- a/interface/web/dns/form/dns_soa.tform.php
+++ b/interface/web/dns/form/dns_soa.tform.php
@@ -135,6 +135,10 @@
 		'refresh' => array (
 			'datatype'	=> 'INTEGER',
 			'formtype'	=> 'TEXT',
+			'validators'	=> array ( 	0 => array (	'type'	=> 'RANGE',
+														'range' => '60:',
+														'errmsg'=> 'refresh_range_error'),
+									),
 			'default'	=> '7200',
 			'value'		=> '',
 			'width'		=> '10',
@@ -143,6 +147,10 @@
 		'retry' => array (
 			'datatype'	=> 'INTEGER',
 			'formtype'	=> 'TEXT',
+			'validators'	=> array ( 	0 => array (	'type'	=> 'RANGE',
+														'range' => '60:',
+														'errmsg'=> 'retry_range_error'),
+									),
 			'default'	=> '540',
 			'value'		=> '',
 			'width'		=> '10',
@@ -151,6 +159,10 @@
 		'expire' => array (
 			'datatype'	=> 'INTEGER',
 			'formtype'	=> 'TEXT',
+			'validators'	=> array ( 	0 => array (	'type'	=> 'RANGE',
+														'range' => '60:',
+														'errmsg'=> 'expire_range_error'),
+									),
 			'default'	=> '604800',
 			'value'		=> '',
 			'width'		=> '10',
@@ -159,6 +171,10 @@
 		'minimum' => array (
 			'datatype'	=> 'INTEGER',
 			'formtype'	=> 'TEXT',
+			'validators'	=> array ( 	0 => array (	'type'	=> 'RANGE',
+														'range' => '60:',
+														'errmsg'=> 'minimum_range_error'),
+									),
 			'default'	=> '86400',
 			'value'		=> '',
 			'width'		=> '10',
@@ -167,6 +183,10 @@
 		'ttl' => array (
 			'datatype'	=> 'INTEGER',
 			'formtype'	=> 'TEXT',
+			'validators'	=> array ( 	0 => array (	'type'	=> 'RANGE',
+														'range' => '60:',
+														'errmsg'=> 'ttl_range_error'),
+									),
 			'default'	=> '3600',
 			'value'		=> '',
 			'width'		=> '10',
diff --git a/interface/web/dns/lib/lang/en_dns_soa.lng b/interface/web/dns/lib/lang/en_dns_soa.lng
index 95afad4..d526093 100644
--- a/interface/web/dns/lib/lang/en_dns_soa.lng
+++ b/interface/web/dns/lib/lang/en_dns_soa.lng
@@ -29,4 +29,9 @@
 $wb['eg_ns1_domain_tld'] = 'e.g. ns1.domain.tld';
 $wb['eg_webmaster_domain_tld'] = 'e.g. webmaster@domain.tld';
 $wb['The Domain can not be changed. Please ask your Administrator if you want to change the domain name.'] = 'The Domain can not be changed. Please ask your Administrator if you want to change the domain name.';
+$wb['refresh_range_error'] = 'Min. Refresh time is 60 seconds.';
+$wb['retry_range_error'] = 'Min. Retry time is 60 seconds.';
+$wb['expire_range_error'] = 'Min. Expire time is 60 seconds.';
+$wb['minimum_range_error'] = 'Min. Minimum time is 60 seconds.';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>

--
Gitblit v1.9.1