? d5_webform.patch
? latest.patch
? webform.inc
Index: webform.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/webform/webform.module,v
retrieving revision 1.113.2.70.2.98
diff -u -p -r1.113.2.70.2.98 webform.module
--- webform.module	14 Feb 2009 08:18:17 -0000	1.113.2.70.2.98
+++ webform.module	20 Feb 2009 02:07:50 -0000
@@ -603,11 +603,26 @@ function webform_form(&$node, &$param) {
         $description = t('After adding components to this form any textfield, select, or hidden form element may be selected as the subject for e-mails.');
         break;
     }
-
+    $field_default_value = 'default';
+    if (is_numeric($node->webform['email_'. $field])) {
+      $field_default_value = 'component';
+    }
+    else {
+      switch ($node->webform['email_'. $field]) {
+         case 'default':
+           $field_default_value = 'default';
+           break;
+         case 'submitter':
+           $field_default_value = 'submitter';
+           break;
+         default:
+           $field_default_value =  isset($node->webform['email_'. $field]) ? 'custom' : 'default';
+      }
+    }
     $form['webform']['mail_settings']['email_'. $field .'_option'] = array(
       '#title' => $title,
       '#type' => 'radios',
-      '#default_value' => is_numeric($node->webform['email_'. $field]) ? 'component' : ((empty($default_value) || ($node->webform['email_'. $field] != 'default' && isset($node->webform['email_'. $field]))) ? 'custom' : 'default'),
+      '#default_value' => $field_default_value,
       '#description' => $description,
     );
     if (!empty($default_value)) {
@@ -615,12 +630,16 @@ function webform_form(&$node, &$param) {
     }
     $form['webform']['mail_settings']['email_'. $field .'_option']['#options']['custom'] = 'custom';
     $form['webform']['mail_settings']['email_'. $field .'_option']['#options']['component'] = 'component';
+    if ($field != 'subject') {
+      $form['webform']['mail_settings']['email_'. $field .'_option']['#options']['submitter'] = 'submitter';
+    }
 
     $form['webform']['mail_settings']['email_'. $field .'_custom'] = array(
       '#type' => 'textfield',
       '#size' => 40,
-      '#default_value' => (!is_numeric($node->webform['email_'. $field]) && $node->webform['email_'. $field] != 'default') ? $node->webform['email_'. $field] : NULL,
+      '#default_value' => (!is_numeric($node->webform['email_'. $field]) && $node->webform['email_'. $field] != 'default' && $node->webform['email_'. $field] != 'submitter') ? $node->webform['email_'. $field] : NULL,
     );
+
     $options = _webform_component_options($node->webform['components'], $field == 'from_address' ? 'email' : 'string');
     $form['webform']['mail_settings']['email_'. $field .'_component'] = array(
       '#type' => 'select',
@@ -629,6 +648,10 @@ function webform_form(&$node, &$param) {
       '#disabled' => empty($options) ? TRUE : FALSE,
       '#weight' => 6,
     );
+    $form['webform']['mail_settings']['email_'. $field .'_submitter'] = array(
+      '#value' => t('Use submitter\'s information if anonymous users use default.'),
+    );
+
   }
   /* End mail settings form */
 
@@ -754,7 +777,7 @@ function theme_webform_mail_settings_for
 
   // Loop through fields, rendering them into radio button options.
   foreach (array('from_name', 'from_address', 'subject') as $field) {
-    foreach (array('custom' => t('Custom'), 'component' => t('Component')) as $option => $title) {
+    foreach (array('custom' => t('Custom'), 'component' => t('Component'), 'submitter' => t('Submitters')) as $option => $title) {
       $form['email_'. $field .'_'. $option]['#attributes']['class'] = 'webform-set-active';
       $form['email_'. $field .'_option'][$option]['#title'] = $title .': '. drupal_render($form['email_'. $field .'_'. $option]);
     }
@@ -833,15 +856,22 @@ function webform_submit(&$node) {
   // Merge the e-mail name, address, and subject options into single values.
   foreach (array('from_name', 'from_address', 'subject') as $field) {
     $option = $node->webform['email_'. $field .'_option'];
-    if ($option == 'default') {
-      $node->webform['email_'. $field] = 'default';
-    }
-    else {
-      $node->webform['email_'. $field] = $node->webform['email_'. $field .'_'. $option];
+
+    switch ($option) {
+      case 'default':
+        $node->webform['email_'. $field] = 'default';
+        break;
+      case 'submitter':
+        $node->webform['email_'. $field] = 'submitter';
+        break;
+      default:
+        $node->webform['email_'. $field] = $node->webform['email_'. $field .'_'. $option];
+        break;
     }
     unset($node->webform['email_'. $field .'_option']);
     unset($node->webform['email_'. $field .'_component']);
     unset($node->webform['email_'. $field .'_custom']);
+    unset($node->webform['email_'. $field .'_submitter']);
   }
 
   // Set the submit limit to -1 if set to unlimited.
@@ -1573,7 +1603,25 @@ function webform_client_form_submit($for
     $email_from_address = $node->webform['email_from_address'];
     $email_subject = $node->webform['email_subject'];
     foreach (array('from_name', 'from_address', 'subject') as $field) {
-      if ($node->webform['email_'. $field] == 'default') {
+      if ($node->webform['email_'. $field] == 'submitter') {
+        if ($field == 'from_name') {
+         if ($user->uid) {
+           ${'email_'. $field} = $user->name;
+         }
+         else {
+           ${'email_'. $field} = _webform_filter_values(webform_variable_get('webform_default_'. $field), $node, $form_values['submitted']);
+         }
+        }
+        if ($field == 'from_address') {
+         if (!empty($user->mail)) {
+           ${'email_'. $field} = $user->mail;
+         }
+         else {
+          ${'email_'. $field} = _webform_filter_values(webform_variable_get('webform_default_'. $field), $node, $form_values['submitted']);
+         }
+        }
+     }
+     else if ($node->webform['email_'. $field] == 'default') {
         ${'email_'. $field} = _webform_filter_values(webform_variable_get('webform_default_'. $field), $node, $form_values['submitted']);
       }
       elseif (is_numeric($node->webform['email_'. $field])) {
