From 1ffbe066325aa8241c5362e4b3292e6da2694e26 Mon Sep 17 00:00:00 2001
From: Erin Marchak <erin@myplanetdigital.com>
Date: Mon, 9 Sep 2013 19:15:47 -0400
Subject: [PATCH] email-verification_field-234682-3

---
 email.module | 40 ++++++++++++++++++++++++++++++++++++----
 1 file changed, 36 insertions(+), 4 deletions(-)

diff --git a/email.module b/email.module
index dd92fdf..942f5c5 100644
--- a/email.module
+++ b/email.module
@@ -28,8 +28,11 @@ function email_migrate_api() {
  *
  * Possible error codes:
  * - 'email_invalid': The email address is not valid
+ * - 'email_unverified': The email address doesn't match the verified field.
  */
 function email_field_validate($obj_type, $object, $field, $instance, $langcode, $items, &$errors) {
+  $settings = $instance['widget']['settings'];
+
   foreach ($items as $delta => $item) {
     if ($item['email'] != '' && !valid_email_address(trim($item['email']))) {
       $message = t('"%mail" is not a valid email address', array('%mail' => $item['email']));
@@ -38,6 +41,14 @@ function email_field_validate($obj_type, $object, $field, $instance, $langcode,
         'message' => $message,
       );
     }
+    if ($settings['verify'] && $item['email'] !== $item['email_verify']) {
+      $message = t('Emails do not match');
+      $errors[$field['field_name']][$langcode][$delta][] = array(
+        'error' => "email_unverified",
+        'message' => $message,
+      );
+    }
+
   }
 }
 
@@ -143,7 +154,10 @@ function email_field_widget_info() {
     'email_textfield' => array(
       'label' => t('Text field'),
       'field types' => array('email'),
-      'settings' => array('size' => 60),
+      'settings' => array(
+        'size' => 60,
+        'verify' => 0,
+      ),
     ),
   );
 }
@@ -162,6 +176,13 @@ function email_field_widget_settings_form($field, $instance) {
     '#required' => TRUE,
     '#element_validate' => array('_element_validate_integer_positive'),
   );
+
+  $form['verify'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Verify Email Address'),
+    '#default_value' => $settings['verify'],
+  );
+
   return $form;
 }
 
@@ -170,13 +191,24 @@ function email_field_widget_settings_form($field, $instance) {
  */
 function email_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $base) {
   $element = $base;
+  $settings = $instance['widget']['settings'];
+
   $element['email'] = $base + array(
     '#type' => 'textfield',
     '#default_value' => isset($items[$delta]['email']) ? $items[$delta]['email'] : NULL,
-    '#size' => $instance['widget']['settings']['size'],
-    '#prefix' => '<div class="text-full-wrapper">',
-    '#suffix' => '</div>',
+    '#size' => $settings['size'],
   );
+
+  if ($settings['verify']) {
+    $element['email_verify'] = $base + array(
+      '#type' => 'textfield',
+      '#default_value' => isset($items[$delta]['email']) ? $items[$delta]['email'] : NULL,
+      '#size' => $settings['size'],
+    );
+    $element['email_verify']['#title'] = t('Verify') . ' ' . $base['#title'];
+    $element['email_verify']['#weight'] = $base['#weight'] + 1;
+
+  }
   return $element;
 }
 
-- 
1.7.12.4 (Apple Git-37)

