Index: simplenews.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/simplenews/simplenews.module,v retrieving revision 1.43 diff -u -F^f -r1.43 simplenews.module --- simplenews.module 31 Mar 2006 16:54:34 -0000 1.43 +++ simplenews.module 7 Apr 2006 00:03:48 -0000 @@ -445,8 +445,9 @@ function simplenews_user($op, &$edit, &$ } break; case 'form': - if ($category == 'newsletter' && user_access('subscribe to newsletters')) { - $form['newsletters'] = _simplenews_subscription_manager($account); + case 'register': + if (($category == 'newsletter' || ($op == 'register' && variable_get('simplenews_registration', FALSE))) && user_access('subscribe to newsletters')) { + $form['newsletters'] = _simplenews_subscription_manager($account ? $account : new StdClass()); $form['newsletters']['#title'] = t('Current newsletter subscriptions'); $form['newsletters']['sn_email'] = array( '#type' => 'hidden', @@ -653,7 +654,7 @@ function simplenews_subscription_manager if (user_access('subscribe to newsletters')) { global $user; if ($user->uid == 0) { - return _simplenews_subscription_manager(); + return drupal_get_form('_simplenews_subscription_manager', _simplenews_subscription_manager()); } else { drupal_goto('user/'.$user->uid.'/edit/newsletter'); @@ -686,6 +687,10 @@ function _simplenews_subscription_manage } elseif ($_POST['sn_update'] || $edit['sn_update']) { if ($tree) { + if (isset($edit['mail'])) { + // The user registration form has mail, but sn_email is blank. + $edit['sn_email'] = $edit['mail']; + } foreach ($tree as $newsletter) { if ($edit['sn_'.$newsletter->tid] == 1) { simplenews_process_subscription($newsletter->tid, $edit['sn_email'], 'Subscribe'); @@ -698,7 +703,6 @@ function _simplenews_subscription_manage } if ($pre_process_only) return; if ($snid && $_POST['sn_update']) drupal_goto('admin/newsletter/users'); - $output = '
'; if ($tree) { foreach ($tree as $newsletter) { if ($user->uid == 0) { @@ -775,12 +779,10 @@ function _simplenews_subscription_manage ); } } - $output .= drupal_get_form('_simplenews_subscription_manager', $form); - $output .= '
'; - return $output; + return $form; } else { - return ''; + return array(); } } @@ -1300,7 +1302,7 @@ function simplenews_admin($op = NULL, $o } elseif ($op2 == 'edit' && is_numeric($op3)) { $snid = $op3; - $output .= _simplenews_subscription_manager(FALSE, $snid); + $output .= drupal_get_form('_simplenews_subscription_manager', _simplenews_subscription_manager(FALSE, $snid)); } elseif ($op2 == 'add') { $output .= simplenews_admin_list_add(); @@ -1798,6 +1800,7 @@ function simplenews_admin_settings($term variable_set('simplenews_test_address_override', $edit['test_address_override']); variable_set('simplenews_throttle', $edit['throttle']); variable_set('simplenews_from_name', $edit['from_name']); + variable_set('simplenews_registration', $edit['registration']); //valid_email_address() allows empty address, so check this first if ($edit['from_address'] == '') { form_set_error('from_address', t("You have to supply a sender's e-mail address.")); @@ -1919,6 +1922,17 @@ function simplenews_admin_settings($term '#options' => $throttle, '#default_value' => variable_get('simplenews_throttle', 20), ); + $form['sn_registration'] = array( + '#type' => 'fieldset', + '#title' => t('User registration'), + '#collapsible' => TRUE, + '#collapsed' => TRUE, + ); + $form['sn_registration']['registration'] = array( + '#type' => 'checkbox', + '#title' => t('Show mailing list subscription options at user registration.'), + '#default_value' => variable_get('simplenews_registration', FALSE), + ); } $form['submit'] = array( '#type' => 'submit',