### Eclipse Workspace Patch 1.0
#P CVS simplenews HEAD
Index: simplenews.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/simplenews/simplenews.module,v
retrieving revision 1.56
diff -u -r1.56 simplenews.module
--- simplenews.module	20 Feb 2007 18:47:01 -0000	1.56
+++ simplenews.module	17 Mar 2007 15:23:20 -0000
@@ -395,7 +395,7 @@
   //since simplenews_cron() also calls _simplenews_send().
   $s_status = ($node->send == 1 && user_access('send newsletter')) ? 1 : 0;
   db_query("INSERT INTO {simplenews_newsletters} (nid, tid, s_status, s_format, priority, receipt)
-		  VALUES (%d, %d, %d, '%s', %d, %d)", $node->nid, $node->simplenews_tid, $s_status, $node->s_format, $node->priority, $node->receipt);
+      VALUES (%d, %d, %d, '%s', %d, %d)", $node->nid, $node->simplenews_tid, $s_status, $node->s_format, $node->priority, $node->receipt);
 }
 
 /**
@@ -407,7 +407,7 @@
   $node->simplenews_tid = $tid ? $tid[0] : 0;
   $s_status = ($node->send == 1 && user_access('send newsletter')) ? 1 : 0;
   db_query("UPDATE {simplenews_newsletters} SET tid = %d, s_status = %d, s_format = '%s', priority = %d, receipt = %d
-		  WHERE nid = %d", $node->simplenews_tid, $s_status, $node->s_format, $node->priority, $node->receipt, $node->nid);
+      WHERE nid = %d", $node->simplenews_tid, $s_status, $node->s_format, $node->priority, $node->receipt, $node->nid);
 }
 
 /**
@@ -480,12 +480,22 @@
   switch ($op) {
     case 'insert':
       if ($edit['mail']) {
+        $mail = $edit['mail'];
+        if (is_array($edit['newsletters'])) {
+          foreach ($edit['newsletters'] as $tid) {
+            if ($tid > 0) {
+              db_query("INSERT INTO {simplenews_subscriptions} (mail, uid, a_status) VALUES ('%s', %d, %d)", $mail, $account->uid, 1);
+              $snid = db_result(db_query("SELECT snid FROM {simplenews_subscriptions} WHERE mail = '%s'", $mail));
+              db_query("INSERT INTO {simplenews_snid_tid} (snid, tid) VALUES (%d, %d)", $snid, $tid);
+            }
+          }
+        }
         $query = "SELECT snid FROM {simplenews_subscriptions} WHERE mail = '%s'";
         if ($result = db_fetch_object(db_query($query, $edit['mail']))) {
           db_query("UPDATE {simplenews_subscriptions} SET uid = %d WHERE snid = %d", $edit['uid'], $result->snid);
         }
       }
-      break;
+    break;
     case 'update':
       if ($category == 'account' && $edit['mail']) {
         $query = "SELECT snid FROM {simplenews_subscriptions} WHERE uid = %d";
@@ -525,7 +535,7 @@
       break;
     case 'categories':
       if (user_access('subscribe to newsletters')) {
-        $output[] = array('name' => 'newsletter', 'title' => t('my newsletters'), 'weight' => 10);
+        $output[] = array('name' => 'newsletter', 'title' => t('My newsletters'), 'weight' => 10);
       }
       return $output;
     case 'view':
@@ -549,11 +559,37 @@
         );
         $items[] = array('class' => 'item',
           'title' => t('Manage subscriptions'),
-          'value' => l(t('my newsletters'), 'user/'. $account->uid .'/edit/newsletter'),
+          'value' => l(t('My newsletters'), 'user/'. $account->uid .'/edit/newsletter'),
         );
         return array(t('Newsletters') => $items);
       }
-      break;
+    break;
+    case 'register':
+      if (variable_get('simplenews_user_subscription', 0) && user_access('subscribe to newsletters')) {
+      $tree = taxonomy_get_tree(_simplenews_get_vid());
+      if ($tree) {
+        $default = variable_get('simplenews_user_subscription_default', array());
+        $form['simplenews'] = array(
+          '#type' => 'fieldset',
+          '#title' => t('Newsletters'),
+          '#weight' => 1,
+        );
+        $form['simplenews']['newsletters'] = array('#tree' => true,);
+
+        foreach( $tree as $newsletter ) {
+          $options[$newsletter->tid] = $newsletter->name;
+        }
+        $form['simplenews']['newsletters'] = array(
+          '#type' => 'checkboxes',
+          '#title' => t('You can subscribe to these newsletters'),
+          '#default_value' => variable_get('simplenews_user_subscription_default', array()),
+          '#options' => $options,
+          '#description' => t('You always have the possibility to unsubscribe later.'),
+        );
+      }
+      return $form;
+      }
+    break;
   }
 }
 
@@ -1853,6 +1889,25 @@
       '#options' => array(0 => t("Don't send now"), 2 => t('Send one test newsletter to the test address'), 1 => t('Send newsletter')),
       '#default_value' => variable_get('simplenews_send', 0),
     );
+    $form['simplenews_subscription_options'] = array('#type' => 'fieldset',
+      '#title' => t('Default subscription options'),
+      '#collapsible' => TRUE,
+      '#collapsed' => TRUE,
+      '#description' => t('This is the default newsletter where a new user is subscribed to.'),
+    );
+    $form['simplenews_subscription_options']['simplenews_user_subscription'] = array('#type' => 'checkbox',
+      '#title' => t('Allow new users to subscribe to a newsletter on the subscription page'),
+      '#return_value' => 1,
+      '#default_value' => variable_get('simplenews_user_subscription', 0),
+    );
+    foreach (taxonomy_get_tree(_simplenews_get_vid()) as $newsletter) {
+      $options[$newsletter->tid] = $newsletter->name;
+    }
+    $form['simplenews_subscription_options']['simplenews_user_subscription_default'] = array('#type' => 'checkboxes',
+     '#title' => t('Default subscription newsletter'),
+     '#default_value' => variable_get('simplenews_user_subscription_default', array()),
+     '#options' => $options,
+    );
     $form['simplenews_test_address'] = array('#type' => 'fieldset',
       '#title' => t('Test addresses options'),
       '#collapsible' => TRUE,
