diff --git a/interface/lib/classes/validate_mail_transport.inc.php b/interface/lib/classes/validate_mail_transport.inc.php index 6b47d953030cb2274ed34ed598231336f940fbc9..3396df65cf695411b23990cc0ac7dd07b6efc73e 100644 --- a/interface/lib/classes/validate_mail_transport.inc.php +++ b/interface/lib/classes/validate_mail_transport.inc.php @@ -41,6 +41,40 @@ class validate_mail_transport { } } + /* Validator function for checking that the 'domain' is not already set as mail_domain */ + function validate_isnot_maildomain($field_name, $field_value, $validator) { + global $app, $conf; + + if(isset($app->remoting_lib->primary_id)) { + $id = $app->remoting_lib->primary_id; + } else { + $id = $app->tform->primary_id; + } + + $sql = "SELECT domain_id, domain FROM mail_domain WHERE domain = ? AND domain_id != ?"; + $domain_check = $app->db->queryOneRecord($sql, $field_value, $id); + + if($domain_check) return $this->get_error('domain_is_maildomain'); + + } + + /* Validator function for checking that the 'domain' is not already set as mail_transport */ + function validate_isnot_mailtransport($field_name, $field_value, $validator) { + global $app, $conf; + + if(isset($app->remoting_lib->primary_id)) { + $id = $app->remoting_lib->primary_id; + } else { + $id = $app->tform->primary_id; + } + + $sql = "SELECT transport_id, domain FROM mail_transport WHERE domain = ? AND transport_id != ?"; + $domain_check = $app->db->queryOneRecord($sql, $field_value, $id); + + if($domain_check) return $this->get_error('domain_is_transport'); + + } + /* Validator function for checking the 'domain' of a mail transport */ function validate_domain($field_name, $field_value, $validator) { global $app, $conf; @@ -52,8 +86,8 @@ class validate_mail_transport { } // mail_transport.domain (could also be an email address) must be unique per server - $sql = "SELECT transport_id, domain FROM mail_transport WHERE domain = ? AND server_id = ? AND transport_id != ?"; - $domain_check = $app->db->queryOneRecord($sql, $field_value, $app->tform_actions->dataRecord['server_id'], $id); + $sql = "SELECT transport_id, domain FROM mail_transport WHERE domain = ? AND transport_id != ?"; + $domain_check = $app->db->queryOneRecord($sql, $field_value, $id); if($domain_check) return $this->get_error('domain_error_unique'); } diff --git a/interface/web/mail/form/mail_domain.tform.php b/interface/web/mail/form/mail_domain.tform.php index df1088f883ecb737217932080064268275d56891..2c48e598e68de855f200495a8c21d781cf62da91 100644 --- a/interface/web/mail/form/mail_domain.tform.php +++ b/interface/web/mail/form/mail_domain.tform.php @@ -89,6 +89,12 @@ $form["tabs"]['domain'] = array ( 'errmsg'=> 'domain_error_empty'), 1 => array ( 'type' => 'ISDOMAIN', 'errmsg'=> 'domain_error_regex'), + 3 => array( + 'type' => 'CUSTOM', + 'class' => 'validate_mail_transport', + 'function' => 'validate_isnot_mailtransport', + 'errmsg'=> 'domain_is_transport', + ), ), 'default' => '', 'value' => '', diff --git a/interface/web/mail/form/mail_transport.tform.php b/interface/web/mail/form/mail_transport.tform.php index deb83d629d9d8aa276e45f85f29d8bc57235050d..0adbfadee022e57826fc843b5659ef5ac51ca233 100644 --- a/interface/web/mail/form/mail_transport.tform.php +++ b/interface/web/mail/form/mail_transport.tform.php @@ -94,6 +94,12 @@ $form["tabs"]['transport'] = array ( 'class' => 'validate_mail_transport', 'function' => 'validate_domain', 'errmsg'=> 'domain_error_unique', + ), + 1 => array( + 'type' => 'CUSTOM', + 'class' => 'validate_mail_transport', + 'function' => 'validate_isnot_maildomain', + 'errmsg' => 'domain_is_maildomain', ) ), 'default' => '', diff --git a/interface/web/mail/lib/lang/en_mail_domain.lng b/interface/web/mail/lib/lang/en_mail_domain.lng index 75d0375986374b49404f37710a51dccd92c7988c..77eae0e66568fb4e3ea1ed034e59c96e52effe19 100644 --- a/interface/web/mail/lib/lang/en_mail_domain.lng +++ b/interface/web/mail/lib/lang/en_mail_domain.lng @@ -25,3 +25,4 @@ $wb['dkim_auto_dns_txt'] = 'Managed zone, dns updated automatically'; $wb['relayhost_txt'] = 'Relayhost'; $wb['relayhost_user_txt'] = 'Relayhost User'; $wb['relayhost_password_txt'] = 'Relayhost Password'; +$wb['domain_is_transport'] = 'The Domain is already set as E-Mail Transport.'; diff --git a/interface/web/mail/lib/lang/en_mail_transport.lng b/interface/web/mail/lib/lang/en_mail_transport.lng index 16c33c02011d4bec352ffdde12a70234d51aeab7..c841cd2132fab8b0798b2a38b9fef18c90fba608 100644 --- a/interface/web/mail/lib/lang/en_mail_transport.lng +++ b/interface/web/mail/lib/lang/en_mail_transport.lng @@ -9,3 +9,4 @@ $wb['active_txt'] = 'Active'; $wb['limit_mailrouting_txt'] = 'The max. number of routes for your account is reached.'; $wb['transport_txt'] = 'Transport'; $wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.'; +$wb['domain_is_maildomain'] = 'The Domain is already set as a E-Mail Domain.';