Index: simplenews.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/simplenews/simplenews.module,v
retrieving revision 1.48.2.39
diff -u -p -r1.48.2.39 simplenews.module
--- simplenews.module	4 Jun 2008 11:51:31 -0000	1.48.2.39
+++ simplenews.module	23 Jun 2008 14:33:01 -0000
@@ -168,6 +168,14 @@ function simplenews_menu($may_cache) {
       'callback' => 'drupal_get_form',
       'callback arguments' => array('simplenews_subscription_list_export'),
     );
+    $items[] = array('path' => 'admin/content/newsletters/users/massdelete',
+      'title' => t('Mass Delete'),
+      'access' => $administer,
+      'type' => MENU_LOCAL_TASK,
+      'weight' => -8,
+      'callback' => 'drupal_get_form',
+      'callback arguments' => array('simplenews_subscription_mass_delete'),
+    );
 
     $items[] = array('path' => 'admin/content/newsletters/settings',
       'title' => t('Settings'),
@@ -2144,6 +2152,53 @@ function simplenews_admin_export_after_b
   return $form;
 }
 
+function simplenews_subscription_mass_delete() {
+  $form = array();
+  $form['emails'] = array(
+    '#type' => 'textarea',
+    '#title' => t('E-mail addresses'),
+    '#cols' => 60,
+    '#rows' => 5,
+    '#required' => TRUE,
+  );
+  $form['snids'] = array(
+    '#type' => 'value',
+  );
+  $form['submit'] = array(
+    '#type' => 'submit',
+    '#value' => 'Delete',
+  );
+  return $form;
+}
+
+function simplenews_subscription_mass_delete_validate($form_id, $form_values, $form) {
+  $emails = preg_split("/[\n\r\s]+/m", $form_values['emails']);
+  $snids = array();
+  foreach ($emails as $email) {
+    $email = trim($email);
+    if (empty($email)) {
+      continue;
+    }
+    $subscription = simplenews_get_user_subscription($email);
+    if (!$subscription) {
+      drupal_set_message(t('Cannot find %email as a aubscriber.', array('%email' => $email)), 'error');
+    }
+    else {
+      $snids[$subscription->snid] = $subscription->snid;
+    }
+  }
+  if (empty($snids)) {
+    form_set_error('emails', t('No emails in your list can be found as newsletter subscribers.'));
+    return;
+  }
+  form_set_value($form['snids'], $snids);
+}
+
+function simplenews_subscription_mass_delete_submit($form_id, $form_values) {
+  $_SESSION['simplenews_subscriptions_delete'] = $form_values['snids'];
+  drupal_goto("admin/content/newsletters/subscriptions/delete", $destination);  
+}
+
 /**
  * Generate settings form.
  */
