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 . '
';
}
?>