is_action('remove_unconfirmed')) { $r = $wpdb->query("delete from " . NEWSLETTER_USERS_TABLE . " where status='S'"); $controls->messages = __('Subscribers not confirmed deleted: ', 'newsletter') . $r . '.'; } if ($controls->is_action('remove_unsubscribed')) { $r = $wpdb->query("delete from " . NEWSLETTER_USERS_TABLE . " where status='U'"); $controls->messages = __('Subscribers unsubscribed deleted: ', 'newsletter') . $r . '.'; } if ($controls->is_action('remove_bounced')) { $r = $wpdb->query("delete from " . NEWSLETTER_USERS_TABLE . " where status='B'"); $controls->messages = __('Subscribers bounced deleted: ', 'newsletter') . $r . '.'; } if ($controls->is_action('unconfirm_all')) { $r = $wpdb->query("update " . NEWSLETTER_USERS_TABLE . " set status='S' where status='C'"); $controls->messages = __('Subscribers changed to not confirmed: ', 'newsletter') . $r . '.'; } if ($controls->is_action('confirm_all')) { $r = $wpdb->query("update " . NEWSLETTER_USERS_TABLE . " set status='C' where status='S'"); $controls->messages = __('Subscribers changed to confirmed: ', 'newsletter') . $r . '.'; } if ($controls->is_action('remove_all')) { $r = $wpdb->query("delete from " . NEWSLETTER_USERS_TABLE); $controls->messages = __('Subscribers deleted: ', 'newsletter') . $r . '.'; } if ($controls->is_action('list_add')) { $r = $wpdb->query("update " . NEWSLETTER_USERS_TABLE . " set list_" . ((int) $controls->data['list']) . "=1"); $controls->messages = $r . ' ' . __('added to list', 'newsletter') . ' ' . $controls->data['list']; } if ($controls->is_action('list_remove')) { $r = $wpdb->query("update " . NEWSLETTER_USERS_TABLE . " set list_" . ((int) $controls->data['list']) . "=0"); $controls->messages = $r . ' ' . __('removed from list', 'newsletter') . ' ' . $controls->data['list']; } if ($controls->is_action('list_delete')) { $count = $wpdb->query("delete from " . NEWSLETTER_USERS_TABLE . " where list_" . ((int) $controls->data['list']) . "<>0"); $module->clean_sent_table(); $module->clean_stats_table(); $controls->messages = $count . ' ' . __('deleted', 'newsletter'); } if ($controls->is_action('language')) { $count = $wpdb->query($wpdb->prepare("update " . NEWSLETTER_USERS_TABLE . " set language=%s where language=''", $controls->data['language'])); $controls->add_message_done(); } if ($controls->is_action('list_manage')) { if ($controls->data['list_action'] == 'move') { $wpdb->query("update " . NEWSLETTER_USERS_TABLE . ' set list_' . ((int) $controls->data['list_1']) . '=0, list_' . ((int) $controls->data['list_2']) . '=1' . ' where list_' . $controls->data['list_1'] . '=1'); } if ($controls->data['list_action'] == 'add') { $wpdb->query("update " . NEWSLETTER_USERS_TABLE . ' set list_' . ((int) $controls->data['list_2']) . '=1' . ' where list_' . $controls->data['list_1'] . '=1'); } } if ($controls->is_action('list_none')) { $where = '1=1'; for ($i = 1; $i <= NEWSLETTER_LIST_MAX; $i++) { $where .= ' and list_' . $i . '=0'; } $count = $wpdb->query("update " . NEWSLETTER_USERS_TABLE . ' set list_' . ((int) $controls->data['list_3']) . '=1' . ' where ' . $where); $controls->messages = $count . ' subscribers updated'; } if ($controls->is_action('update_inactive')) { $wpdb->query("update `{$wpdb->prefix}newsletter` n join (select user_id, max(s.time) as max_time from `{$wpdb->prefix}newsletter_sent` s where s.open>0 group by user_id) as ss on n.id=ss.user_id set last_activity=ss.max_time"); $inactive_time = (int) $controls->data['inactive_time']; $where = 'last_activity > 0 and last_activity<' . (time() - $inactive_time * 30 * 24 * 3600); $count = $wpdb->query("update " . NEWSLETTER_USERS_TABLE . ' set list_' . ((int) $controls->data['list_inactive']) . '=1 where ' . $where); $controls->messages = $count . ' subscribers updated'; } if ($controls->is_action('bounces')) { $lines = explode("\n", $controls->data['bounced_emails']); $total = 0; $marked = 0; $error = 0; $not_found = 0; $already_bounced = 0; $results = ''; foreach ($lines as &$email) { $email = trim($email); if (empty($email)) continue; $total++; $email = NewsletterModule::normalize_email($email); if (empty($email)) { $results .= '[INVALID] ' . $email . "\n"; $error++; continue; } $user = NewsletterUsers::instance()->get_user($email); if ($user == null) { $results .= '[NOT FOUND] ' . $email . "\n"; $not_found++; continue; } if ($user->status == 'B') { $results .= '[ALREADY BOUNCED] ' . $email . "\n"; $already_bounced++; continue; } $r = $wpdb->query($wpdb->prepare('update ' . NEWSLETTER_USERS_TABLE . " set status='B' where email=%s limit 1", $email)); if ($r === 1) { $results .= '[BOUNCED] ' . $email . "\n"; $marked++; continue; } } $controls->messages .= 'Total: ' . $total . '
'; $controls->messages .= 'Bounce: ' . $marked . '
'; $controls->messages .= 'Errors: ' . $error . '
'; $controls->messages .= 'Not found: ' . $not_found . '
'; $controls->messages .= 'Already bounced: ' . $already_bounced . '
'; } ?>

Results

init(); ?>
is_multilanguage()) { ?>
get_var("select count(*) from " . NEWSLETTER_USERS_TABLE); ?> button_confirm('remove_all', __('Delete all', 'newsletter'), __('Are you sure you want to remove ALL subscribers?', 'newsletter')); ?>
get_var("select count(*) from " . NEWSLETTER_USERS_TABLE . " where status='C'"); ?> button_confirm('unconfirm_all', __('Unconfirm all', 'newsletter')); ?>
Not confirmed get_var("select count(*) from " . NEWSLETTER_USERS_TABLE . " where status='S'"); ?> button_confirm('remove_unconfirmed', __('Delete all not confirmed', 'newsletter'), __('Are you sure you want to delete ALL not confirmed subscribers?', 'newsletter')); ?> button_confirm('confirm_all', __('Confirm all', 'newsletter'), __('Are you sure you want to mark ALL subscribers as confirmed?', 'newsletter')); ?>

get_var("select count(*) from " . NEWSLETTER_USERS_TABLE . " where status='U'"); ?> button_confirm('remove_unsubscribed', __('Delete all unsubscribed', 'newsletter')); ?>
get_var("select count(*) from " . NEWSLETTER_USERS_TABLE . " where status='B'"); ?> button_confirm('remove_bounced', __('Delete all bounced', 'newsletter')); ?>
select('inactive_time', array( '6' => '6 ' . __('months', 'newsletter'), '12' => '1 ' . __('year', 'newsletter'), '24' => '2 ' . __('years', 'newsletter'), '36' => '3 ' . __('years', 'newsletter'), '48' => '4 ' . __('years', 'newsletter'), '60' => '5 ' . __('years', 'newsletter'), '72' => '6 ' . __('years', 'newsletter'), '84' => '7 ' . __('years', 'newsletter'), '96' => '8 ' . __('years', 'newsletter'), '108' => '9 ' . __('years', 'newsletter'), '120' => '10 ' . __('years', 'newsletter') )) ?> to lists_select('list_inactive'); ?> button_confirm('update_inactive', __('Update', 'newsletter')); ?>
Language language('language', false) ?> button_confirm('language', '»'); ?>
  lists_select('list') ?>: button_confirm('list_add', 'Activate for everyone'); ?> button_confirm('list_remove', 'Deactivate for everyone'); ?> button_confirm('list_delete', 'Delete everyone in that list'); ?>

select('list_action', array('move' => 'Change', 'add' => 'Add')); ?> lists_select('list_1'); ?> lists_select('list_2'); ?> button_confirm('list_manage', '»'); ?>

If you choose to delete users in a list, they will be physically deleted from the database (no way back).

  lists_select('list_3') ?> button_confirm('list_none', '»'); ?>

Import a set of bounced email addresses: they will be marked as "bounced" and no more contacted. Sending messages to bounced address (many times) can put your server in some black list.

textarea('bounced_emails'); ?>

button_confirm('bounces', 'Mark those emails as bounced'); ?>