From 0e509a3e29baf9dcb9f730af58f765becacf8f5f Mon Sep 17 00:00:00 2001
From: ftimme <ft@falkotimme.com>
Date: Mon, 22 Oct 2012 10:48:59 -0400
Subject: [PATCH] - Added check for unique customer numbers (empty customer numbers are allowed as well). - Extended UNIQUE validator to allow empty values if "allowempty" option is set to "y".

---
 interface/lib/classes/tform.inc.php           |    9 ++++++---
 interface/web/client/form/client.tform.php    |    4 ++++
 interface/web/client/lib/lang/de_reseller.lng |    1 +
 interface/web/client/lib/lang/en_reseller.lng |    1 +
 interface/web/client/form/reseller.tform.php  |    4 ++++
 interface/web/client/lib/lang/de_client.lng   |    1 +
 interface/web/client/lib/lang/en_client.lng   |    1 +
 7 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/interface/lib/classes/tform.inc.php b/interface/lib/classes/tform.inc.php
index 7789a81..66615d0 100644
--- a/interface/lib/classes/tform.inc.php
+++ b/interface/lib/classes/tform.inc.php
@@ -799,7 +799,9 @@
                                         }
                                 break;
                                 case 'UNIQUE':
-                                        if($this->action == 'NEW') {
+										if($validator['allowempty'] != 'y') $validator['allowempty'] = 'n';
+										if($validator['allowempty'] == 'n' || ($validator['allowempty'] == 'y' && $field_value != '')){
+											if($this->action == 'NEW') {
                                                 $num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM ".$escape.$this->formDef['db_table'].$escape. " WHERE $field_name = '".$app->db->quote($field_value)."'");
                                                 if($num_rec["number"] > 0) {
                                                         $errmsg = $validator['errmsg'];
@@ -809,7 +811,7 @@
 															$this->errorMessage .= $errmsg."<br />\r\n";
 														}
                                                 }
-                                        } else {
+											} else {
                                                 $num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM ".$escape.$this->formDef['db_table'].$escape. " WHERE $field_name = '".$app->db->quote($field_value)."' AND ".$this->formDef['db_table_idx']." != ".$this->primary_id);
                                                 if($num_rec["number"] > 0) {
                                                         $errmsg = $validator['errmsg'];
@@ -819,7 +821,8 @@
 															$this->errorMessage .= $errmsg."<br />\r\n";
 														}
                                                 }
-                                        }
+											}
+										}
                                 break;
                                 case 'NOTEMPTY':
                                         if(empty($field_value)) {
diff --git a/interface/web/client/form/client.tform.php b/interface/web/client/form/client.tform.php
index ad95413..1b66ac7 100644
--- a/interface/web/client/form/client.tform.php
+++ b/interface/web/client/form/client.tform.php
@@ -118,6 +118,10 @@
 		'customer_no' => array (
 			'datatype'	=> 'VARCHAR',
 			'formtype'	=> 'TEXT',
+			'validators'	=> array ( 	0 => array (	'type'	=> 'UNIQUE',
+														'errmsg'=> 'customer_no_error_unique',
+														'allowempty' => 'y'),
+									),
 			'default'	=> '',
 			'value'		=> '',
 			'separator'	=> '',
diff --git a/interface/web/client/form/reseller.tform.php b/interface/web/client/form/reseller.tform.php
index 6163c72..c9079ec 100644
--- a/interface/web/client/form/reseller.tform.php
+++ b/interface/web/client/form/reseller.tform.php
@@ -118,6 +118,10 @@
 		'customer_no' => array (
 			'datatype'	=> 'VARCHAR',
 			'formtype'	=> 'TEXT',
+			'validators'	=> array ( 	0 => array (	'type'	=> 'UNIQUE',
+														'errmsg'=> 'customer_no_error_unique',
+														'allowempty' => 'y'),
+									),
 			'default'	=> '',
 			'value'		=> '',
 			'separator'	=> '',
diff --git a/interface/web/client/lib/lang/de_client.lng b/interface/web/client/lib/lang/de_client.lng
index 88ebdfe..d43c98a 100644
--- a/interface/web/client/lib/lang/de_client.lng
+++ b/interface/web/client/lib/lang/de_client.lng
@@ -135,5 +135,6 @@
 $wb['repeat_password_txt'] = "Passwort wiederholen";
 $wb['password_mismatch_txt'] = "Die Passwörter stimmen nicht überein.";
 $wb['password_match_txt'] = "Die Passwörter stimmen überein.";
+$wb["customer_no_error_unique"] = 'Die Kundennummer muß einzigartig sein (oder leer).';
 ?>
 
diff --git a/interface/web/client/lib/lang/de_reseller.lng b/interface/web/client/lib/lang/de_reseller.lng
index 26e6c74..90d45e3 100644
--- a/interface/web/client/lib/lang/de_reseller.lng
+++ b/interface/web/client/lib/lang/de_reseller.lng
@@ -128,5 +128,6 @@
 $wb['repeat_password_txt'] = "Passwort wiederholen";
 $wb['password_mismatch_txt'] = "Die Passwörter stimmen nicht überein.";
 $wb['password_match_txt'] = "Die Passwörter stimmen überein.";
+$wb["customer_no_error_unique"] = 'Die Kundennummer muß einzigartig sein (oder leer).';
 ?>
 
diff --git a/interface/web/client/lib/lang/en_client.lng b/interface/web/client/lib/lang/en_client.lng
index 38946a4..1334dc4 100644
--- a/interface/web/client/lib/lang/en_client.lng
+++ b/interface/web/client/lib/lang/en_client.lng
@@ -139,4 +139,5 @@
 $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
 $wb['email_error_isemail'] = 'Please enter a valid email address.';
+$wb["customer_no_error_unique"] = 'The customer no. must be unique (or empty).';
 ?>
diff --git a/interface/web/client/lib/lang/en_reseller.lng b/interface/web/client/lib/lang/en_reseller.lng
index bc26515..f23cd18 100644
--- a/interface/web/client/lib/lang/en_reseller.lng
+++ b/interface/web/client/lib/lang/en_reseller.lng
@@ -131,4 +131,5 @@
 $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
 $wb['email_error_isemail'] = 'Please enter a valid email address.';
+$wb["customer_no_error_unique"] = 'The customer no. must be unique (or empty).';
 ?>

--
Gitblit v1.9.1