Index: ecard.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/ecard/ecard.module,v
retrieving revision 1.1.4.10
diff -u -p -r1.1.4.10 ecard.module
--- ecard.module	19 Oct 2009 13:48:41 -0000	1.1.4.10
+++ ecard.module	19 Oct 2009 17:05:20 -0000
@@ -375,13 +375,43 @@ function ecard_form_validate($form_id, &
  * Submit handler for ecard_form.
  */
 function ecard_form_submit($form_id, &$form_state) {
-  unset($random);
+  // Set up the ecard record.
+  $ecard = new stdClass;
+  $ecard->nid = $form_state['values']['nid'];
+  $ecard->sender_name = $form_state['values']['name'];
+  $ecard->sender_email = $form_state['values']['from_email'];
+  $ecard->valid_emails = $form_state['values']['valid_emails'];
+  $ecard->message = $form_state['values']['message'];
+  $ecard->send_time = time();
+  $ecard->send = 'y';
+  $ecard->notify = $form_state['values']['notify'];
+  $ecard->format = $form_state['values']['format'];
+ 
+  // Send the e-cards, including copies.
+  ecard_send_card($ecard); 
+
+  // Display a message.
+  drupal_set_message(format_plural(count($form_state['values']['valid_emails']), 'Your e-card has been sent.', 'Your e-cards have been sent.'));
+
+  // Redirect to thank you page if necessary.
+  $thank_you_page = variable_get('ecard_thank_you_page', 'ecard/thanks');
+  if (!empty($thank_you_page)) {
+    $form_state['redirect'] = $thank_you_page;
+  }
+
+  $form_state['nid'] = $node->nid;
+}
+
+/**
+ * Send e-cards, including copies if necessary.
+ */
+function ecard_send_card($ecard) {
   global $base_url;
   global $language;
+
+  unset($random);
   $start = 0;
-  $timestamp = time();
-  $send = "y";
-  $notify = "n";
+
   // Set the base variable from the clean url value.
   if (variable_get('clean_url', 0)) {
     $base = $base_url .'/';
@@ -400,56 +430,50 @@ function ecard_form_submit($form_id, &$f
       unset($random);
     }
   }
-  $card_copy_url = $base .'ecard/view/'. $random;
-
-  // Making a copy for you else if you click any other recp link it will mail
-  // notification also there is some problem while we produce random.
-  $record = new stdClass;
-  $record->random = $random;
-  $record->nid = $form_state['values']['nid'];
-  $record->sender_name = $form_state['values']['name'];
-  $record->sender_email = $form_state['values']['from_email'];
-  $record->recp_mail = $form_state['values']['from_email'];
-  $record->message = $form_state['values']['message'];
-  $record->send_time = $timestamp;
-  $record->send = $send;
-  $record->notify = $notify;
-  $record->format = $form_state['values']['format'];
-  drupal_write_record('ecard', $record);
 
   $cardid = $random;
 
   // Iterate through each emails and send them and store a random number for
   // each.
-  foreach ($form_state['values']['valid_emails'] as $email) {
-    if (variable_get('ecard_notify_enabled', TRUE) && $form_state['values']['notify'] == 1) {
-      $notify = "y";
-      // Append start value to random number to get cardid.
-      $cardid = $random . $start;
-      // Making some number in increment order.
-      $start = $start + 1;
-
-      $record->random = $cardid;
-      $record->recp_mail = $email;
-      drupal_write_record('ecard', $record);
+  foreach ($ecard->valid_emails as $email) {
+    // Append start value to random number to get cardid.
+    $cardid = $random . $start;
+    // Making some number in increment order.
+    $start = $start + 1;
+
+    if (variable_get('ecard_notify_enabled', TRUE) && $ecard->notify == 1) {
+      // Save record to the database.
+      $ecard->notify = 'y';
+    }
+    else {
+      $ecard->notify = 'n';
     }
+    $ecard->random = $cardid;
+    $ecard->recp_mail = $email;
+    drupal_write_record('ecard', $ecard);
+
     $params['card'] = $base .'ecard/view/'. $cardid;
-    $params['sender'] = $form_state['values']['name'];
-    $params['sendermail'] = $form_state['values']['from_email'];
+    $params['sender'] = $ecard->sender_name;
+    $params['sendermail'] = $ecard->sender_email;
     $params['recipient'] = $email;
-    drupal_mail('ecard', 'ecard-mail', $email, $language, $params, $form_state['values']['from_email']);
+    drupal_mail('ecard', 'ecard-mail', $email, $language, $params, $ecard->sender_email);
   }
-  drupal_set_message(format_plural(count($form_state['values']['valid_emails']), 'Your e-card has been sent.', 'Your e-cards have been sent.'));
+
   if (variable_get('ecard_copy_enabled', TRUE)) {
+    // Making a copy for you else if you click any other recp link it will mail
+    // notification also there is some problem while we produce random.
+    $ecard->send = 'y';
+    $ecard->notify = 'n';
+    $ecard->random = $random;
+    $ecard->recp_mail = $ecard->sender_email;
+    drupal_write_record('ecard', $ecard);
+
+    $card_copy_url = $base .'ecard/view/'. $random;
     drupal_set_message(t('You can view the e-card at <a href="') . $card_copy_url . t('">here</a>.'));
+
     $params['card_copy'] = $card_copy_url;
-    drupal_mail('ecard', 'ecard-copy', $form_state['values']['from_email'], $language, $params, variable_get('site_mail', ini_get('sendmail_from')));
+    drupal_mail('ecard', 'ecard-copy', $ecard->sender_email, $language, $params, variable_get('site_mail', ini_get('sendmail_from')));
   }
-  $thank_you_page = variable_get('ecard_thank_you_page', 'ecard/thanks');
-  if (!empty($thank_you_page)) {
-    $form_state['redirect'] = $thank_you_page;
-  }
-  $form_state['nid'] = $node->nid;
 }
 
 /**
