From 0e509a3e29baf9dcb9f730af58f765becacf8f5f Mon Sep 17 00:00:00 2001 From: ftimme Date: Mon, 22 Oct 2012 14:48:59 +0000 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/form/reseller.tform.php | 4 ++++ interface/web/client/lib/lang/de_client.lng | 1 + interface/web/client/lib/lang/de_reseller.lng | 1 + interface/web/client/lib/lang/en_client.lng | 1 + interface/web/client/lib/lang/en_reseller.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 7789a81e36..66615d0eac 100644 --- a/interface/lib/classes/tform.inc.php +++ b/interface/lib/classes/tform.inc.php @@ -799,7 +799,9 @@ class tform { } 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 @@ class tform { $this->errorMessage .= $errmsg."
\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 @@ class tform { $this->errorMessage .= $errmsg."
\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 ad95413cd4..1b66ac7540 100644 --- a/interface/web/client/form/client.tform.php +++ b/interface/web/client/form/client.tform.php @@ -118,6 +118,10 @@ $form["tabs"]['address'] = array ( '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 6163c7293a..c9079ec6a2 100644 --- a/interface/web/client/form/reseller.tform.php +++ b/interface/web/client/form/reseller.tform.php @@ -118,6 +118,10 @@ $form["tabs"]['address'] = array ( '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 88ebdfecaf..d43c98a591 100644 --- a/interface/web/client/lib/lang/de_client.lng +++ b/interface/web/client/lib/lang/de_client.lng @@ -135,5 +135,6 @@ $wb['generate_password_txt'] = "Passwort erzeugen"; $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 26e6c745ce..90d45e3cfc 100644 --- a/interface/web/client/lib/lang/de_reseller.lng +++ b/interface/web/client/lib/lang/de_reseller.lng @@ -128,5 +128,6 @@ $wb['generate_password_txt'] = "Passwort erzeugen"; $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 38946a48c0..1334dc4ca2 100644 --- a/interface/web/client/lib/lang/en_client.lng +++ b/interface/web/client/lib/lang/en_client.lng @@ -139,4 +139,5 @@ $wb['repeat_password_txt'] = 'Repeat Password'; $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 bc26515501..f23cd1896c 100644 --- a/interface/web/client/lib/lang/en_reseller.lng +++ b/interface/web/client/lib/lang/en_reseller.lng @@ -131,4 +131,5 @@ $wb['repeat_password_txt'] = 'Repeat Password'; $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).'; ?> -- GitLab