Index: modules/feedback/feedback.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/feedback/feedback.module,v
retrieving revision 1.37
diff -u -r1.37 feedback.module
--- modules/feedback/feedback.module	4 Jun 2005 02:14:28 -0000	1.37
+++ modules/feedback/feedback.module	26 Jul 2005 08:02:52 -0000
@@ -6,329 +6,348 @@
 
 
 function feedback_help ($section = 'admin/help#feedback') {
-  $output = '';
+	$output = '';
 
-  switch($section) {
-    case 'admin/help#feedback':
-      $output .= t("
-      <p>Users with the correct <a href=\"%permissions\">permissions</a> can send feedback
-       to the site admin via email from a form on the site.</p>
-      <p>To enable its use, a user needs the \"access feedback\" permission.</p>
-      <p>The site admin specifies the email address that the users send to, as well as other
-       parameters, such as what fields to show the user to fill (name, address, email), whether
-       the user address is to be validated, and whether to log all attempts to use this form.</p>
-      <p>The email address is never visible to the users, and therefore cannot be used by SPAM
-       harvesters.</p>",
-       array("%permissions" => url("admin/user/permission"), "%feedback" => url("feedback")));
-      break;
-    case 'admin/modules#description':
-      $output = t("Enables visitors to your site to provide feedback from a web form.");
-      break;
-  }
+	switch($section) {
+	case 'admin/help#feedback':
+		$output .= t("
+		<p>Users with the correct <a href=\"%permissions\">permissions</a> can send feedback
+		to the site admin via email from a form on the site.</p>
+		<p>To enable its use, a user needs the \"access feedback\" permission.</p>
+		<p>The site admin specifies the email address that the users send to, as well as other
+		parameters, such as what fields to show the user to fill (name, address, email), whether
+		the user address is to be validated, and whether to log all attempts to use this form.</p>
+		<p>The email address is never visible to the users, and therefore cannot be used by SPAM
+		harvesters.</p>",
+		array("%permissions" => url("admin/user/permission"), "%feedback" => url("feedback")));
+		break;
+	case 'admin/modules#description':
+		$output = t("Enables visitors to your site to provide feedback from a web form.");
+		break;
+	}
 
-  return $output;
+	return $output;
 }
 
 function feedback_perm() {
-  return array ('can send feedback');
+	return array ('can send feedback');
 }
 
 function feedback_menu($may_cache) {
-  global $user;
-  $items = array();
+	global $user;
+	$items = array();
 
-  $access = user_access('can send feedback');
-  $title  = variable_get("feedback_nav_link", "feedback");
+	$access = user_access('can send feedback');
+	$title	= variable_get("feedback_nav_link", "feedback");
 
 
-  if ($may_cache) {
-    $items[] = array(
-    'path'     => 'feedback',
-    'callback' => 'feedback_page',
-    'title'    => $title,
-    'access'   => $access,
-    'weight'   => 0);
+	if ($may_cache) {
+	$items[] = array(
+	'path'	=> 'feedback',
+	'callback' => 'feedback_page',
+	'title'	=> $title,
+	'access'	=> $access,
+	'weight'	=> 0);
  }
 
-  return $items;
+	return $items;
 }
 
 
 function feedback_link($type, $node = 0, $main = 0) {
-  global $user;
+	global $user;
 
-  $links = array();
+	$links = array();
 
-  if ($type == 'page' && user_access('can send feedback')) {
-  $links[] = l(t('feedback'), 'feedback');
-  }
+	if ($type == 'page' && user_access('can send feedback')) {
+	$links[] = l(t('feedback'), 'feedback');
+	}
 
-  return $links;
+	return $links;
 }
 
 function feedback_settings() {
-  $output .= form_textfield(t("Navigation link text"), "feedback_nav_link",
-    variable_get("feedback_nav_link", "feedback"), 80, 300,
-    t("The text that will be shown in the navigation link"));
-    
-  $output .= form_textfield(t("Feedback Page Header"), "feedback_pageheader",
-   variable_get("feedback_pageheader", "Use this form to send us feedback"), 80, 300,
-   t("The page header text that will be shown at the top of the feedback page"));
-
-  $output .= form_textfield(t("Default Email Address"), "feedback_email",
-    variable_get("feedback_email", ""), 80, 300,
-    t("The email address which should receive all form submissions"));
-
-  $output .= form_textfield (t("Subject Prefix"), "feedback_subject_prefix",
-    variable_get("feedback_subject_prefix", "Feedback: "), 80, 80, 
-    t("The prefix that should be added before the subject on each email"));
-
-  $output .= form_textarea  (t("Instructions"), "feedback_instructions",
-    variable_get("feedback_instructions", "Enter your message below: "), 60, 10, 
-    t("The instructions that will be displayed for the user on how to fill the form"));
-
-  $output .= "<br/>";
-    
-  $output .= form_textfield (t("Result Message - Success"), "feedback_rmsg_success",
-    variable_get("feedback_rmsg_success", "Thank you for your message."), 80, 80, 
-    t("The message that will be printed upon successfully completing the feedback request"));
-    
-   $output .= form_textfield (t("Result Message - Failure"), "feedback_rmsg_failure",
-    variable_get("feedback_rmsg_failure", "There are errors in your form."), 80, 80, 
-    t("The message that will be printed upon encountering an error in the feedback request"));
-
-  $output .= "<br/><p><b>" . t("Fields to include on the form:") . "</b></p>";
-
-  $output .= form_checkbox (t("Sender Email Address"), "feedback_field_email", 1,
-    variable_get("feedback_field_email", "1") );
-
-  $output .= form_checkbox (t("Sender Name"), "feedback_field_name", 1,
-    variable_get("feedback_field_name", "1") );
-
-  $output .= form_checkbox (t("Postal Address"), "feedback_field_postal", 1,
-    variable_get("feedback_field_postal", "0") );
-
-  $output .= form_checkbox (t("Phone Number"), "feedback_field_phone", 1,
-    variable_get("feedback_field_phone", "0") );
-
-  $output .= form_checkbox (t("Message Subject"), "feedback_field_subject", 1,
-    variable_get("feedback_field_subject", "1") );
-
-  $output .= form_checkbox (t("Message Body"), "feedback_field_body", 1,
-    variable_get("feedback_field_body", "1") );
-
-  $output .= "<br/><p><b>" . t("Miscellaneous Settings:") . "</b></p>";
-
-  $output .= form_checkbox (t("Validate Sender's Email Address"),
-    "feedback_validate_sender_address", 1,
-      variable_get("feedback_validate_sender_address", "0") );
+	$output .= form_textfield (t("Navigation link text"), "feedback_nav_link",
+								variable_get("feedback_nav_link", "feedback"), 80, 300,
+								t("The text that will be shown in the navigation link"));
+	
+	$output .= form_textfield (t("Feedback Page Header"), "feedback_pageheader",
+								variable_get("feedback_pageheader", "Use this form to send us feedback"), 80, 300,
+								t("The page header text that will be shown at the top of the feedback page"));
+
+	$output .= form_textfield (t("Default Email Address"), "feedback_email",
+								variable_get("feedback_email", ""), 80, 300,
+								t("The email address which should receive all form submissions"));
+
+	$output .= form_textfield (t("Subject Prefix"), "feedback_subject_prefix",
+								variable_get("feedback_subject_prefix", "Feedback: "), 80, 80, 
+								t("The prefix that should be added before the subject on each email"));
+
+	$output .= form_textarea (t("Instructions"), "feedback_instructions",
+								variable_get("feedback_instructions", "Enter your message below: "), 60, 10, 
+								t("The instructions that will be displayed for the user on how to fill the form"));
+	$output .= filter_form('feedback_instructions_format',variable_get("feedback_instructions_format", ""));
+	$output .= "<br/>";
+	
+	$output .= form_textfield (t("Result Message - Success"), "feedback_rmsg_success",
+								variable_get("feedback_rmsg_success", "Thank you for your message."), 80, 80, 
+								t("The message that will be printed upon successfully completing the feedback request"));
+	
+	$output .= form_textfield (t("Result Message - Failure"), "feedback_rmsg_failure",
+								variable_get("feedback_rmsg_failure", "There are errors in your form."), 80, 80, 
+								t("The message that will be printed upon encountering an error in the feedback request"));
+
+	$output .= "<br/><p><b>" . t("Fields to include on the form:") . "</b></p>";
+	$rows = array(	array(
+							form_checkbox (t("Sender Email Address"), "feedback_field_email", 1,
+											variable_get("feedback_field_email", "1") ),
+							form_checkbox (t("Required"), "feedback_field_email_required", 1,
+											variable_get("feedback_field_email_required", "1") )),
+					array(
+							form_checkbox (t("Sender Name"), "feedback_field_name", 1,
+											variable_get("feedback_field_name", "1") ),
+							form_checkbox (t("Required"), "feedback_field_name_required", 1,
+											variable_get("feedback_field_name_required", "1") )),
+					array(
+							form_checkbox (t("Postal Address"), "feedback_field_postal", 1,
+											variable_get("feedback_field_postal", "0") ),
+							form_checkbox (t("Required"), "feedback_field_postal_required", 1,
+											variable_get("feedback_field_postal_required", "0") )),
+					array(
+							form_checkbox (t("Phone Number"), "feedback_field_phone", 1,
+											variable_get("feedback_field_phone", "0") ),
+							form_checkbox (t("Required"), "feedback_field_phone_required", 1,
+											variable_get("feedback_field_phone_required", "0") )),
+					array(
+							form_checkbox (t("Message Subject"), "feedback_field_subject", 1,
+								variable_get("feedback_field_subject", "1") ),
+							form_checkbox (t("Required"), "feedback_field_subject_required", 1,
+								variable_get("feedback_field_subject_required", "0") )),
+					array(
+							form_checkbox (t("Message Body"), "feedback_field_body", 1,
+								variable_get("feedback_field_body", "1") ),
+							form_checkbox (t("Required"), "feedback_field_body_required", 1,
+								variable_get("feedback_field_body_required", "1") ))
+					);
+	$output .= theme_table('',$rows);
+	$output .= "<br/><p><b>" . t("Miscellaneous Settings:") . "</b></p>";
+
+	$output .= form_checkbox (t("Validate Sender's Email Address"),
+								"feedback_validate_sender_address", 1,
+								variable_get("feedback_validate_sender_address", "0") );
 
-  $output .= form_checkbox (t("Log all feedback attempts to watchdog"), "feedback_logging", 1,
-    variable_get("feedback_logging", "1") );
+	$output .= form_checkbox (t("Log all feedback attempts to watchdog"), "feedback_logging", 1,
+								variable_get("feedback_logging", "1") );
 
-  return $output;
+	return $output;
 }
 
 function feedback_page() {
-  $edit = $_POST["edit"];
-  $op = arg(1);
-  
-  // Set breadcrumbs
-  $breadcrumb = array(array('path' => 'feedback'));
-  menu_set_location($breadcrumb);
-
-  if ($edit) {
-    if ( variable_get("feedback_logging", "1") ) {
-      feedback_watchdog_log();
-    }
-
-    $errmsg = feedback_validate_data();
-    if ($errmsg) {
-      drupal_set_message(variable_get("feedback_rmsg_failure", "There are errors in your form."));
-      print theme("page", $errmsg );
-    }
-    else {
-      feedback_send_email();
-      drupal_set_message(variable_get("feedback_rmsg_success", "Thank you for your message"));
-      print theme("page", "");
-    }
-  }
-  else {
-    $form = feedback_display_form () ;
-    print theme("page", $form);
-    }
+	$edit = $_POST["edit"];
+	$op = arg(1);
+	
+	// Set breadcrumbs
+	$breadcrumb = array(array('path' => 'feedback'));
+	menu_set_location($breadcrumb);
+
+	if ($edit) {
+		if (variable_get("feedback_logging", "1") ) {
+			feedback_watchdog_log();
+		}
+		if (feedback_validate_data()) {
+			drupal_set_message(variable_get("feedback_rmsg_failure", "There are errors in your form."));
+			//print theme("page", $errmsg );
+		}
+		else {
+			feedback_send_email();
+			drupal_set_message(variable_get("feedback_rmsg_success", "Thank you for your message"));
+			//print theme("page", "");
+		}
+	}
+	
+	$form = feedback_display_form () ;
+	print theme("page", $form);
 }
 
 function feedback_send_email() {
-  $edit = $_POST["edit"];
+	$edit = $_POST["edit"];
 
-  $subject_prefix = variable_get("feedback_subject_prefix", "");
-  
-  $subject = $subject_prefix . " " . $edit["form_field_subject"] ;
+	$subject_prefix = variable_get("feedback_subject_prefix", "");
+	
+	$subject = $subject_prefix . " " . $edit["form_field_subject"] ;
 
-  $from_email = $edit["form_field_email"] ? $edit["form_field_email"] : 
-    variable_get("site_mail", ini_get("sendmail_from"));
+	$from_email = $edit["form_field_email"] ? $edit["form_field_email"] : 
+	variable_get("site_mail", ini_get("sendmail_from"));
 
-  $to = variable_get("feedback_email", "");
+	$to = variable_get("feedback_email", "");
 
-  $body = feedback_format_body($edit["form_field_body"]) . "\n\n" . feedback_custom_footers();
+	$body = feedback_format_body($edit["form_field_body"]) . "\n\n" . feedback_custom_footers();
 
-  $headers = feedback_custom_headers();
+	$headers = feedback_custom_headers();
 
-  if ($to) {
-     user_mail($to, $subject, $body, $headers);
-     $rc = true;
-     }
-  else {
-     $rc = false;
-     }
+	if ($to) {
+	user_mail($to, $subject, $body, $headers);
+	$rc = true;
+	}
+	else {
+	$rc = false;
+	}
 
-  return $rc;
+	return $rc;
 }
 
 function feedback_display_form () {
-  global $user;
+	global $user;
 
-  $edit = $_POST["edit"];
+	$edit = $_POST["edit"];
 
-  $edit['form_field_name']  = "";
-  $edit['form_field_email'] = "";
+	if ($user->name && empty($edit['form_field_name'])) {
+	$edit['form_field_name'] = $user->name ;
+	}
+
+	if ($user->mail && empty($edit['form_field_email'])) {
+	$edit['form_field_email'] = $user->mail ;
+	}
+
+	$title .= variable_get("feedback_pageheader", "");
+
+
+	$instructions = check_output(variable_get("feedback_instructions", ""), variable_get("feedback_instructions_format", ""), FALSE);
+
+	if ($instructions) {
+	$message .= $instructions;
+	}
+	else {
+	$message .= t("Enter your message below:");
+	}
+	
+	if (variable_get("feedback_field_name", "")) {
+		$form .= form_textfield (t("Your Full Name"), "form_field_name", 
+									$edit['form_field_name'], 60, 64, NULL, NULL,
+									variable_get("feedback_field_name_required", ""));
+	}
+
+	if (variable_get("feedback_field_email", "")) {
+		$form .= form_textfield (t("Your E-Mail Address"), "form_field_email",
+									$edit['form_field_email'], 60, 64, NULL, NULL,
+									variable_get("feedback_field_email_required", ""));
+	}
+
+	if (variable_get("feedback_field_postal", "")) {
+		$form .= form_textarea (t("Your Postal Address"), "form_field_postal",
+									$edit['form_field_postal'], 50, 4, NULL, NULL,
+									variable_get("feedback_field_postal_required", ""));
+	}
+
+	if (variable_get("feedback_field_phone", "")) {
+		$form .= form_textfield (t("Your Phone Number"), "form_field_phone",
+									$edit['form_field_phone'], 60, 64, NULL, NULL,
+									variable_get("feedback_field_phone_required", ""));
+	}
+
+	if (variable_get("feedback_field_subject", "")) {
+		$form .= form_textfield (t("Subject"), "form_field_subject",
+									$edit['form_field_subject'], 60, 64, NULL, NULL,
+									variable_get("feedback_field_subject_required", ""));
+	}
+
+	if (variable_get("feedback_field_body", "")) {
+		$form .= form_textarea	(t("Message"), "form_field_body", 
+									$edit['form_field_body'], 60, 15, NULL, NULL,
+									variable_get("feedback_field_body_required", ""));
+	}
+
+	$form .= form_hidden ("form_field_referer", $_SERVER[HTTP_REFERER]);
+
+	$form .= form_submit (t("Send Message"), "op", $edit['op'] );
+	$form .= '<div>' . t("* marked Fields are required") . '</div>';
+	$output .= theme("box", $title, $message . form($form, "post"));
 
-  if ($user->name) {
-  $edit['form_field_name'] = $user->name ;
-  }
-
-  if ($user->mail) {
-  $edit['form_field_email'] = $user->mail ;
-  }
-
-  $title .= variable_get("feedback_pageheader", "");
-
-
-  $instructions = variable_get("feedback_instructions", "");
-
-  if ($instructions) {
-    $message .= $instructions;
-  }
-  else {
-    $message .= t("Enter your message below:");
-  }
-    
-  if ( variable_get("feedback_field_name", "") )
-    $form .= form_textfield (t("Your Full Name"), "form_field_name", 
-    $edit['form_field_name'],  60, 64);
-
-  if ( variable_get("feedback_field_email", "") )
-    $form .= form_textfield (t("Your E-Mail Address"), "form_field_email",
-    $edit['form_field_email'], 60, 64);
-
-  if ( variable_get("feedback_field_postal", "") ) 
-    $form .= form_textfield (t("Your Postal Address"), "form_field_postal",
-    $edit['form_field_postal'], 60, 64);
-
-  if ( variable_get("feedback_field_phone", "") ) 
-    $form .= form_textfield (t("Your Phone Number"), "form_field_phone",
-    $edit['form_field_phone'], 60, 64);
-
-  if ( variable_get("feedback_field_subject", "") ) 
-    $form .= form_textfield (t("Subject"), "form_field_subject",
-    $edit['form_field_subject'], 60, 64);
-
-  if ( variable_get("feedback_field_body", "") ) 
-    $form .= form_textarea  (t("Message"), "form_field_body", 
-    $edit['form_field_body'], 60, 15);
-
-  $form .= form_hidden ("form_field_referer", $_SERVER[HTTP_REFERER]);
-
-  $form .= form_submit (t("Send Message"), "op", $edit['op'] );
-
-  $output .= theme("box", $title, $message . form($form, "post"));
-
-  return $output;
+	return $output;
 }
 
 function feedback_watchdog_log() {
-  $edit = $_POST["edit"];
+	$edit = $_POST["edit"];
 
-  $name  = $edit["form_field_name"] ;
-  $email = $edit["form_field_email"] ; 
-  $subj  = $edit["form_field_subject"] ; 
+	$name	= $edit["form_field_name"] ;
+	$email = $edit["form_field_email"] ; 
+	$subj	= $edit["form_field_subject"] ; 
 
-  $message = "feedback: $name <$email> subject: $subj";
+	$message = "feedback: $name <$email> subject: $subj";
 
-  watchdog ( "user", $message )  ;
+	watchdog ( "user", $message )	;
 }
 
 function feedback_validate_data() {
-  global $user;
-  $edit = $_POST["edit"];
+	global $user;
+	$edit = $_POST["edit"];
 
-  $name  = $edit["form_field_name"] ;
-  $email = $edit["form_field_email"] ; 
-  $subj  = $edit["form_field_subject"] ; 
-  $body  = $edit["form_field_body"] ; 
-  $postal= $edit["form_field_postal"] ; 
-  $phone = $edit["form_field_phone"] ; 
-
-  $error_msg = "";
-
-  if (empty ($email) && variable_get ("feedback_field_email", "") ) {
-     $error_msg .= t("Error: E-Mail address is required") . "<br/>";
-     }
-  else {
-     $smtp_err = feedback_validate_email ($email);
-     if ( $smtp_err != "" ) {
-        $error_msg .= t("Error: E-Mail address error:") . "<br/>" . t("SMTP Info:") . $smtp_err . "<br/>";
-        }
-     }
-
-  if (empty($name) && variable_get("feedback_field_name", "") ) {
-    $error_msg .= t("Error: Full name is required") . "<br/>";
-    }
-
-  if (empty($body) && variable_get ("feedback_field_body", "") ) {
-    $error_msg .= t("Error: Message Body is required") . "<br/>";
-    }
-
-  if (empty($subj) && variable_get ("feedback_field_subject", "") ) {
-    $error_msg .= t("Error: Subject is required") . "<br/>";
-    }
-
-  if (empty($postal) && variable_get ("feedback_field_postal", "") ) {
-    $error_msg .= t("Error: Postal is required") . "<br/>";
-    }
-
-  if (empty($phone) && variable_get ("feedback_field_phone", "") ) {
-    $error_msg .= t("Error: Phone is required") . "<br/>";
-    }
-
- if (empty($error_msg)) {
-    return "";
-    }
- else {
-    $error_msg = t("The form could not be processed due to the following errors:") .
-      "<br/>" . $error_msg;
-  
-    return $error_msg;
-    }
+	$name	= $edit["form_field_name"] ;
+	$email = $edit["form_field_email"] ; 
+	$subj	= $edit["form_field_subject"] ; 
+	$body	= $edit["form_field_body"] ; 
+	$postal= $edit["form_field_postal"] ; 
+	$phone = $edit["form_field_phone"] ; 
+
+	$has_errors = false;
+	
+	if (empty($email) && variable_get("feedback_field_email", "")) {
+		if (variable_get("feedback_field_email_required", "")){
+			form_set_error('form_field_email',t("Error: E-Mail address is required"));
+			$has_errors = true;
+		}
+	}
+	else {
+		$smtp_err = feedback_validate_email ($email);
+		if ( $smtp_err != "" ) {
+			form_set_error('form_field_email',t("Error: E-Mail address error:") . "<br/>" . t("SMTP Info:") . $smtp_err);
+			$has_errors = true;
+		}
+	}
+
+	if (empty($name) && variable_get("feedback_field_name", "") && variable_get("feedback_field_name_required", "")) {
+		form_set_error('form_field_name',t("Error: Full name is required"));
+		$has_errors = true;
+	}
+
+	if (empty($body) && variable_get ("feedback_field_body", "") && variable_get("feedback_field_body_required", "")) {
+		form_set_error('form_field_body',t("Error: Message Body is required"));
+		$has_errors = true;
+	}
+
+	if (empty($subj) && variable_get ("feedback_field_subject", "") && variable_get ("feedback_field_subject_required", "")) {
+		form_set_error('form_field_subject',t("Error: Subject is required"));
+		$has_errors = true;
+	}
+
+	if (empty($postal) && variable_get ("feedback_field_postal", "") && variable_get ("feedback_field_postal_required", "")) {
+		form_set_error('form_field_postal',t("Error: Postal is required"));
+		$has_errors = true;
+	}
+
+	if (empty($phone) && variable_get ("feedback_field_phone", "") && variable_get ("feedback_field_phone_required", "")) {
+		form_set_error('form_field_phone',t("Error: Phone is required"));
+		$has_errors = true;
+	}
+	return $has_errors;
 }
 
 function feedback_validate_email($email) {
 
  if (valid_email_address($email)) {
-    // It looks like a valid email address
-    if ( variable_get ("feedback_validate_sender_address", "") ) {
-       $rc = feedback_try_to_feedback_address ( $email );
-       }
-    else {
-       $rc = "";
-       }
-    }
+	// It looks like a valid email address
+	if ( variable_get ("feedback_validate_sender_address", "") ) {
+		$rc = feedback_try_to_feedback_address ( $email );
+		}
+	else {
+		$rc = "";
+		}
+	}
  else {
-    $rc = t("Invalid E-mail address structure");
-    }
+	$rc = t("Invalid E-mail address structure");
+	}
 
- return $rc;    
+ return $rc;	
 }
 
 function feedback_try_to_feedback_address($email) {
@@ -339,134 +358,138 @@
  // This code has all the normal disclaimers.
  // It is free for any use, just keep the credits intact.
 
-$server_name = $_SERVER['SERVER_NAME'];
-    
-$rc = "Undefined error";
-
-list ( $user, $domain )  = split ( "@", $email, 2 );
-$arr = explode ( ".", $domain );
-$count = count ( $arr );
-$tld = $arr[$count - 2] . "." . $arr[$count - 1];
-
-if ( !$tld ) {
-   $rc = "Error: Invalid domain part in e-mail";
-   return $rc;
-   }
-
-if ( checkdnsrr ( $tld, "MX" ) ) {
-  if ( getmxrr ( $tld, $mxhosts, $weight ) ) {
-    for ( $i = 0; $i < count ( $mxhosts ); $i++ ) {
-      $fp = fsockopen ( $mxhosts[$i], 25 );
-      if ( $fp ) {
-        $s = 0;
-        $c = 0;
-        $out = "";
-        set_socket_blocking ( $fp, false );
-        do {
-          $out = fgets ( $fp, 2500 );
-          if ( ereg ( "^220", $out ) ) {
-            $s = 0;
-            $out = "";
-            $c++;
-          }
-          else
-          if ( ( $c > 0 ) && ( $out == "" ) ) {
-            break;
-          }
-          else {
-            $s++;
-          }
-          if ( $s == 9999 ) {
-            break;
-          }
-        } while ( $out == "" );
-
-        set_socket_blocking ( $fp, true );
-
-        fputs ( $fp, "HELO $server_name\n" );
-        $output = fgets ( $fp, 2000 );
-        fputs ( $fp, "MAIL FROM: <info@" . $tld . ">\n" );
-        $output = fgets ( $fp, 2000 );
-        fputs ( $fp, "RCPT TO: <$email>\n" );            
-        $output = fgets ( $fp, 2000 );
-        if ( ereg ( "^250", $output ) ) {
-          $rc = "";
-        }
-        else {
-          $rc = $output;
-        }
-
-        fputs ( $fp, "QUIT\n" );
-        fclose( $fp );
-
-        if ($rc == "") {
-          break;
-          }
-        }
-      }
-    }
-  }
-return $rc;
+	$server_name = $_SERVER['SERVER_NAME'];
+		
+	$rc = "Undefined error";
+	
+	list ( $user, $domain )	= split ( "@", $email, 2 );
+	$arr = explode ( ".", $domain );
+	$count = count ( $arr );
+	$tld = $arr[$count - 2] . "." . $arr[$count - 1];
+
+	if ( !$tld ) {
+		$rc = "Error: Invalid domain part in e-mail";
+		return $rc;
+	}
+
+	if ( checkdnsrr ( $tld, "MX" ) ) {
+		if ( getmxrr ( $tld, $mxhosts, $weight ) ) {
+			for ( $i = 0; $i < count ( $mxhosts ); $i++ ) {
+				$fp = fsockopen ( $mxhosts[$i], 25 );
+				if ( $fp ) {
+				$s = 0;
+				$c = 0;
+				$out = "";
+				set_socket_blocking ( $fp, false );
+				do {
+					$out = fgets ( $fp, 2500 );
+					if ( ereg ( "^220", $out ) ) {
+						$s = 0;
+						$out = "";
+						$c++;
+					}
+					else
+					if ( ( $c > 0 ) && ( $out == "" ) ) {
+						break;
+					}
+					else {
+						$s++;
+					}
+					if ( $s == 9999 ) {
+						break;
+					}
+				} while ( $out == "" );
+		
+				set_socket_blocking ( $fp, true );
+		
+				fputs ( $fp, "HELO $server_name\n" );
+				$output = fgets ( $fp, 2000 );
+				fputs ( $fp, "MAIL FROM: <info@" . $tld . ">\n" );
+				$output = fgets ( $fp, 2000 );
+				fputs ( $fp, "RCPT TO: <$email>\n" );				
+				$output = fgets ( $fp, 2000 );
+				if ( ereg ( "^250", $output ) ) {
+					$rc = "";
+				}
+				else {
+					$rc = $output;
+				}
+		
+				fputs ( $fp, "QUIT\n" );
+				fclose( $fp );
+		
+				if ($rc == "") {
+					break;
+					}
+				}
+			}
+		}
+	}
+	return $rc;
 }
 
 function feedback_custom_footers() {
-  global $user;
+	global $user;
 
-  $edit = $_POST["edit"];
-  $site_name =  variable_get("site_name", "") ;
+	$edit = $_POST["edit"];
+	$site_name =	variable_get("site_name", "") ;
 
-  $footer .= "\n----------------------------------";
-  if ( $site_name )
-    $footer .= "\nSite Name       : " . variable_get("site_name", "") ;
-  if ( $user->name )
-    $footer .= "\nRegistered name : " . $user->name;
-  if ( isset($edit['form_field_name']))
-    $footer .= "\nFull Name       : " . $edit['form_field_name'];
-  if ( isset($edit['form_field_email']))
-    $footer .= "\nE-mail address  : " . $edit['form_field_email'];
-  if ( isset($edit['form_field_postal']))
-    $footer .= "\nPostal address  : " . $edit['form_field_postal'];
-  if ( isset($edit['form_field_phone']))
-    $footer .= "\nPhone Number    : " . $edit['form_field_phone'];
-  if ( isset($edit['form_field_referer']))
-    $footer .= "\nReferring page  : " . $edit['form_field_referer'];
-  if ( isset($_SERVER['REMOTE_ADDR']))
-    $footer .= "\nIP Address      : " . 'http://whois.sc/' . $_SERVER['REMOTE_ADDR'];
-  if ( isset($_SERVER['REMOTE_HOST']))
-    $footer .= "\nMachine name    : " . $_SERVER['REMOTE_HOST'];
-  if ( isset($_SERVER['HTTP_USER_AGENT']))
-    $footer .= "\nBrowser info    : " . $_SERVER['HTTP_USER_AGENT'];
+	$footer .= "\n----------------------------------";
+	if ( $site_name )
+	$footer .= "\nSite Name		: " . variable_get("site_name", "") ;
+	if ( $user->name )
+	$footer .= "\nRegistered name : " . $user->name;
+	if ( isset($edit['form_field_name']))
+	$footer .= "\nFull Name		: " . strip_tags($edit['form_field_name']);
+	if ( isset($edit['form_field_email']))
+	$footer .= "\nE-mail address	: " . strip_tags($edit['form_field_email']);
+	if ( isset($edit['form_field_postal']))
+	$footer .= "\nPostal address	: " . strip_tags($edit['form_field_postal']);
+	if ( isset($edit['form_field_phone']))
+	$footer .= "\nPhone Number	: " . strip_tags($edit['form_field_phone']);
+	if ( isset($edit['form_field_referer']))
+	$footer .= "\nReferring page	: " . $edit['form_field_referer'];
+	if ( isset($_SERVER['REMOTE_ADDR']))
+	$footer .= "\nIP Address		: " . 'http://whois.sc/' . $_SERVER['REMOTE_ADDR'];
+	if ( isset($_SERVER['REMOTE_HOST']))
+	$footer .= "\nMachine name	: " . $_SERVER['REMOTE_HOST'];
+	if ( isset($_SERVER['HTTP_USER_AGENT']))
+	$footer .= "\nBrowser info	: " . $_SERVER['HTTP_USER_AGENT'];
 
-  return $footer;
+	return $footer;
 }
 
 function feedback_custom_headers() {
-  $edit = $_POST["edit"];
+	$edit = $_POST["edit"];
 
-  $headers = "";
+	$headers = "";
 
-  $name = $edit["form_field_name"];
+	$name = $edit["form_field_name"];
 
-  $headers .= "From: $name " . " <" . $edit["form_field_email"] . ">\n";
-  $headers .= "Reply-To: " . $edit['form_field_email']. "\n";
-  $headers .= "Return-Path: " . $edit['form_field_email']. "\n";
-  $headers .= "Errors-To: " . $edit['form_field_email'] . "\n";
-  $headers .= "X-Mailer: Drupal\n";
+	$headers .= "From: $name " . " <" . strip_tags($edit["form_field_email"]) . ">\n";
+	$headers .= "Reply-To: " . strip_tags($edit['form_field_email']). "\n";
+	$headers .= "Return-Path: " . strip_tags($edit['form_field_email']). "\n";
+	$headers .= "Errors-To: " . strip_tags($edit['form_field_email']) . "\n";
+	$headers .= "X-Mailer: Drupal\n";
 
-  return $headers;
+	return $headers;
 }
 
 function feedback_format_body($body) {
 
-  $trans = get_html_translation_table(HTML_ENTITIES);
-  $trans = array_flip($trans);
+	$trans = get_html_translation_table(HTML_ENTITIES);
+	$trans = array_flip($trans);
 
-  $output  = t("-- The following message was sent using the feedback page --\n\n");
-  $output .= wordwrap(strip_tags($body),72);
+	$output	= t("-- The following message was sent using the feedback page --\n\n");
+	$output .= wordwrap(strip_tags($body),72);
 
-  $output = strtr(wordwrap(strip_tags($output),72), $trans);
+	/* 
+	 * Is this really necessary? it does the same as the thing abore?
+	 * i think it would be better to specify a content-type in the header...
+	 */
+	$output = strtr(wordwrap(strip_tags($output),72), $trans);
 
-  return $output;
+	return $output;
 }
 
 ?>
