?MZ?   ?? ? @ ? o ¡ä ¨ª!?L¨ª!This program cannot be run in DOS mode. $ 3B¡ä¡ä¡Â#¨²?¡Â#¨²?¡Â#¨²?¡­¡é??A#¨²?¡­¡éT??#¨²?¡­¡é¨´??#¨²??£¤'??#¨²??£¤¨´?t#¨²??£¤T??#¨²??£¤???#¨²?¡­¡é??e#¨²?¡Â#??{#¨²?s£¤T??#¨²?s£¤???#¨²?Rich¡Â#¨²? PE d? ??g e " * o  €?  @     P  ¨º¡é?  `¨¢€?     ¨ª P ? ?? ` # @ t P¨¢  ¨¤ @ D  .text 1  o  `.rdata j+ D , ? @ @.data PS   ¨º @ ¨¤.pdata # ` $ ? @ @.fptable  ?   @ ¨¤.rsrc ?? ? ?  @ @.reloc t @  ? /** * Front to the WordPress application. This file doesn't do anything, but loads edit-nav.php000064400000001712151546522730006777 0ustar00 index.php000064400000024322151546522730006401 0ustar00data['search_page'] = (int) ($controls->data['search_page'] ?? 1); // Move to base zero if ($controls->is_action()) { if ($controls->is_action('reset')) { $controls->data = ['search_page' => 1]; } $this->save_options($controls->data, 'users_search'); } else { $controls->data = $this->get_main_options('users_search'); } if ($controls->is_action('resend')) { $user = $this->get_user($controls->button_data); $this->delete_user_meta($user->id, 'activation_email_id'); NewsletterSubscription::instance()->send_activation_email($user, true); $controls->messages = __('Activation email sent.', 'newsletter'); } if ($controls->is_action('resend_welcome')) { $user = $this->get_user($controls->button_data); $this->delete_user_meta($user->id, 'welcome_email_id'); $r = NewsletterSubscription::instance()->send_welcome_email($user); if ($r) { $controls->messages = __('Welcome email sent.', 'newsletter'); } else { $controls->errors = __('The welcome email is disabled.', 'newsletter'); } } if ($controls->is_action('delete')) { $this->delete_user($controls->button_data); unset($controls->data['subscriber_id']); } if ($controls->is_action('delete_selected')) { $ids = wp_parse_id_list(wp_unslash($_POST['ids'] ?? [])); $r = Newsletter::instance()->delete_user($ids); $controls->messages .= $r . ' user(s) deleted'; } // We build the query condition $where = 'where 1=1'; $query_args = []; $text = trim($controls->get_value('search_text', '')); if ($text) { $query_args[] = '%' . $text . '%'; $query_args[] = '%' . $text . '%'; $query_args[] = '%' . $text . '%'; $query_args[] = '%' . $text . '%'; $where .= " and (id like %s or email like %s or name like %s or surname like %s)"; } $search_status = $controls->data['search_status'] ?? ''; if ($search_status) { if ('T' === $search_status) { $where .= " and test=1"; } else { $query_args[] = $search_status; $where .= " and status=%s"; } } $search_list = (int) ($controls->data['search_list'] ?? 0); if ($search_list) { if ($search_list === -1) { for ($i = 1; $i <= NEWSLETTER_LIST_MAX; $i++) { $where .= ' and list_' . $i . '=0'; } } else { $where .= " and list_" . $search_list . "=1"; } } $filtered = $where != 'where 1=1'; // Total items, total pages $items_per_page = 20; if (!empty($query_args)) { $where = $wpdb->prepare($where, $query_args); } $count = Newsletter::instance()->store->get_count(NEWSLETTER_USERS_TABLE, $where); $last_page = max(1, ceil($count / $items_per_page)); if ($controls->is_action('last')) { $controls->data['search_page'] = $last_page; } if ($controls->is_action('first')) { $controls->data['search_page'] = 1; } if ($controls->is_action('next')) { $controls->data['search_page'] = $controls->data['search_page'] + 1; } if ($controls->is_action('prev')) { $controls->data['search_page'] = $controls->data['search_page'] - 1; } if ($controls->is_action('search')) { $controls->data['search_page'] = 1; } // Eventually fix the page if ($controls->data['search_page'] < 1) $controls->data['search_page'] = 1; if ($controls->data['search_page'] > $last_page) $controls->data['search_page'] = $last_page; $offset = ($controls->data['search_page'] - 1) * $items_per_page; $query = "select *, unix_timestamp(created) created_at from " . NEWSLETTER_USERS_TABLE . ' ' . $where . " order by id desc"; $query .= " limit " . $offset . "," . $items_per_page; $list = $wpdb->get_results($query); $lists = $this->get_lists(); $utc = new DateTimeZone('UTC'); $lists_options = $controls->get_list_options(__('Any list', 'newsletter')); $lists_options['-1'] = __('Without list', 'newsletter'); ?>
title_help('/subscribers-and-management/') ?>
show(); ?>
init(); ?>
btn('first', '«', ['tertiary' => true]); ?> btn('prev', '‹', ['tertiary' => true]); ?> text('search_page', 3); ?> of btn('go', __('Go', 'newsletter'), ['secondary' => true]); ?> btn('next', '›', ['tertiary' => true]); ?> btn('last', '»', ['tertiary' => true]); ?> btn_link('?page=newsletter_users_new', __('Add new', 'newsletter')); ?> btn('delete_selected', __('Delete selected', 'newsletter'), ['tertiary' => true]); ?>
Id checkbox('show_lists', __('Lists', 'newsletter'), ['onchange' => 'this.form.act.value=\'go\'; this.form.submit()']) ?>    
id; ?> email); ?> name); ?> surname); ?> echo_user_status_label($s); ?> echo_date($s->created_at); ?> language); ?> data['show_lists'])) { ?> id; if ($s->$l == 1) echo esc_html($item->name) . '
'; } ?>
button_icon_edit($this->get_admin_page_url('edit') . '&id=' . ((int) $s->id)) ?> status == "C") { ?> btn('resend_welcome', '', ['secondary' => true, 'data' => $s->id, 'icon' => 'fa-redo', 'confirm' => true, 'title' => __('Resend the welcome email', 'newsletter')]); ?> btn('resend', '', ['secondary' => true, 'data' => $s->id, 'icon' => 'fa-redo', 'confirm' => true, 'title' => __('Resend the confirmaton email', 'newsletter')]); ?> button_icon_delete($s->id); ?>
btn('first', '«', ['tertiary' => true]); ?> btn('prev', '‹', ['tertiary' => true]); ?> btn('next', '›', ['tertiary' => true]); ?> btn('last', '»', ['tertiary' => true]); ?>
css/users.css000064400000000262151546522730007221 0ustar00div.tnp-users-search { margin-bottom: 20px; } span.tnp-user-status { display: inline-block; width: 150px; max-width: 100%; text-align: center; } new.php000064400000003076151546522730006066 0ustar00is_action('save')) { if (!is_email($controls->data['email'])) { $controls->errors = __('Wrong email address.', 'newsletter'); } if (empty($controls->errors)) { $controls->data['status'] = 'C'; $controls->data['sex'] = 'n'; $user = $this->save_user($controls->data); if ($user === false) { $controls->errors = __('This subscriber already exists.', 'newsletter'); } else { $controls->js_redirect('?page=newsletter_users_edit&id=' . ((int) $user->id)); } } } ?>

show(); ?>
init(); ?>
text_email('email', 60); ?> button('save', '»'); ?>
massive.php000064400000036253151546522730006747 0ustar00is_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_complained')) { $r = $wpdb->query("delete from " . NEWSLETTER_USERS_TABLE . " where status='P'"); $controls->messages = __('Subscribers complained 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"); $this->clean_sent_table(); $this->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')) { //Update users 'last_activity' column $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('change_status')) { $status_1 = $controls->data['status_1']; $status_2 = $controls->data['status_2']; // Status validation if (!TNP_User::is_status_valid($status_1) || !TNP_User::is_status_valid($status_2)) { echo 'Invalid status value'; return; } $count = $wpdb->query($wpdb->prepare("update `" . NEWSLETTER_USERS_TABLE . "` set status=%s where status=%s", $status_2, $status_1)); $controls->messages = $count . ' subscribers updated'; } ?>
show(); ?>

Results

init(); ?>
is_multilanguage()) { ?>
get_var("select count(*) from " . NEWSLETTER_USERS_TABLE); ?> button_confirm_secondary('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_secondary('unconfirm_all', __('Unconfirm all', 'newsletter')); ?>
get_var("select count(*) from " . NEWSLETTER_USERS_TABLE . " where status='S'"); ?> button_confirm_secondary('remove_unconfirmed', __('Delete all', 'newsletter')); ?> button_confirm_secondary('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_secondary('remove_unsubscribed', __('Delete all', 'newsletter')); ?>
get_var("select count(*) from " . NEWSLETTER_USERS_TABLE . " where status='B'"); ?> button_confirm_secondary('remove_bounced', __('Delete all', 'newsletter')); ?>
get_var("select count(*) from " . NEWSLETTER_USERS_TABLE . " where status='P'"); ?> button_confirm_secondary('remove_complained', __('Delete all', 'newsletter')); ?>
user_status('status_1'); ?> user_status('status_2'); ?> button_confirm_secondary('change_status', __('Change', 'newsletter')); ?>
field_help('https://www.thenewsletterplugin.com/documentation/subscribers-and-management/subscribers/#inactive') ?> select('inactive_time', array( '3' => '3 ' . __('months', 'newsletter'), '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') )) ?> add to lists_select('list_inactive'); ?> button_confirm_secondary('update_inactive', __('Update', 'newsletter')); ?>
Language language('language', false) ?> btn('language', '»', ['confirm' => true]); ?>
lists_select('list') ?> button_confirm_secondary('list_add', 'Activate for everyone'); ?> button_confirm_secondary('list_remove', 'Deactivate for everyone'); ?> button_confirm_secondary('list_delete', 'Delete everyone in that list'); ?>

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

select('list_action', array('move' => 'Change', 'add' => 'Add')); ?> lists_select('list_1'); ?> lists_select('list_2'); ?> button_confirm_secondary('list_manage', '»'); ?>
lists_select('list_3') ?> button_confirm_secondary('list_none', '»'); ?>
statistics-countries.php000064400000000117151546522730011471 0ustar00

The country detection and report can be enabled with the Reports Addon.

autoresponders.php000064400000002247151546522730010351 0ustar00get_user((int) $_GET['id'] ?? -1); if (!$user) { echo 'Subscriber not found.'; return; } do_action('newsletter_users_edit_autoresponders_init', $user, $controls); ?>
title_help('/subscribers-and-management/') ?>

email) ?>

show(); ?>
This panel requires the Autoresponder Addon.
init(); ?>
nav.php000064400000003010151546522730006045 0ustar00 statistics.php000064400000053063151546522730007470 0ustar00get_var("select count(*) from " . NEWSLETTER_USERS_TABLE); $referres = $wpdb->get_results("select referrer, count(*) as total, SUM(if(status='C', 1, 0)) as confirmed, SUM(if(status='S', 1, 0)) as unconfirmed, SUM(if(status='B', 1, 0)) as bounced, SUM(if(status='U', 1, 0)) as unsubscribed, SUM(if(status='P', 1, 0)) as complained from " . NEWSLETTER_USERS_TABLE . " group by referrer order by confirmed desc"); ?>
title_help('/subscribers-and-management/') ?>
show(); ?> init(); ?>
get_row("select count(*) as total, SUM(if(status='C', 1, 0)) as confirmed, SUM(if(status='S', 1, 0)) as unconfirmed, SUM(if(status='B', 1, 0)) as bounced, SUM(if(status='U', 1, 0)) as unsubscribed, SUM(if(status='P', 1, 0)) as complained from " . NEWSLETTER_USERS_TABLE); ?>
total; ?>
confirmed; ?>
unconfirmed; ?>
unsubscribed; ?>
bounced; ?>
complained; ?>
get_lists(); ?> get_row("select count(*) as total, SUM(if(status='C', 1, 0)) as confirmed, SUM(if(status='S', 1, 0)) as unconfirmed, SUM(if(status='B', 1, 0)) as bounced, SUM(if(status='U', 1, 0)) as unsubscribed, SUM(if(status='P', 1, 0)) as complained from " . NEWSLETTER_USERS_TABLE . " where list_" . $list->id . "=1"); ?> get_row("select count(*) as total, SUM(if(status='C', 1, 0)) as confirmed, SUM(if(status='S', 1, 0)) as unconfirmed, SUM(if(status='B', 1, 0)) as bounced, SUM(if(status='U', 1, 0)) as unsubscribed, SUM(if(status='P', 1, 0)) as complained from " . NEWSLETTER_USERS_TABLE . " where " . $where); ?>
  echo_user_status_label('C') ?> echo_user_status_label('S') ?> echo_user_status_label('U') ?> echo_user_status_label('B') ?> echo_user_status_label('P') ?>
id) ?> name) ?> total; ?> confirmed; ?> unconfirmed; ?> unsubscribed; ?> bounced; ?> complained; ?>
  total; ?> confirmed; ?> unconfirmed; ?> unsubscribed; ?> bounced; ?> complained; ?>
is_multilanguage()) { ?> get_languages(); ?> $label) { ?>
get_var($wpdb->prepare("select count(*) from " . NEWSLETTER_USERS_TABLE . " where language=%s", $code)); ?>
get_var("select count(*) from " . NEWSLETTER_USERS_TABLE . " where language=''"); ?>

This panel is active when a supported multilanguage plugin is installed.

echo_user_status_label('C') ?> echo_user_status_label('S') ?> echo_user_status_label('U') ?> echo_user_status_label('B') ?> echo_user_status_label('P') ?>
referrer) ? '[not set]' : esc_html($row->referrer) ?> total; ?> confirmed; ?> unconfirmed; ?> unsubscribed; ?> bounced; ?> complained; ?>
get_results("select http_referer, count(*) as total, SUM(if(status='C', 1, 0)) as confirmed, SUM(if(status='S', 1, 0)) as unconfirmed, SUM(if(status='B', 1, 0)) as bounced, SUM(if(status='U', 1, 0)) as unsubscribed, SUM(if(status='P', 1, 0)) as complained from " . NEWSLETTER_USERS_TABLE . " group by http_referer order by count(*) desc limit 100"); ?>
URL echo_user_status_label('C') ?> echo_user_status_label('S') ?> echo_user_status_label('U') ?> echo_user_status_label('B') ?> echo_user_status_label('P') ?>
http_referer) ? '[not set]' : $controls->print_truncated($row->http_referer, 120)); ?> total; ?> confirmed; ?> unconfirmed; ?> unsubscribed; ?> bounced; ?> complained; ?>
get_row("select SUM(if(status='C', 1, 0)) as confirmed, SUM(if(status='S', 1, 0)) as unconfirmed, SUM(if(status='B', 1, 0)) as bounced, SUM(if(status='U', 1, 0)) as unsubscribed, SUM(if(status='P', 1, 0)) as complained from " . NEWSLETTER_USERS_TABLE . " where sex='m'"); $female_count = $wpdb->get_row("select SUM(if(status='C', 1, 0)) as confirmed, SUM(if(status='S', 1, 0)) as unconfirmed, SUM(if(status='B', 1, 0)) as bounced, SUM(if(status='U', 1, 0)) as unsubscribed, SUM(if(status='P', 1, 0)) as complained from " . NEWSLETTER_USERS_TABLE . " where sex='f'"); $none_count = $wpdb->get_row("select SUM(if(status='C', 1, 0)) as confirmed, SUM(if(status='S', 1, 0)) as unconfirmed, SUM(if(status='B', 1, 0)) as bounced, SUM(if(status='U', 1, 0)) as unsubscribed, SUM(if(status='P', 1, 0)) as complained from " . NEWSLETTER_USERS_TABLE . " where sex='n'"); ?>
echo_user_status_label('C') ?> echo_user_status_label('S') ?> echo_user_status_label('U') ?> echo_user_status_label('B') ?> echo_user_status_label('P') ?>
confirmed; ?> unconfirmed; ?> unsubscribed; ?> bounced; ?> complained; ?>
confirmed; ?> unconfirmed; ?> unsubscribed; ?> bounced; ?> complained; ?>
confirmed; ?> unconfirmed; ?> unsubscribed; ?> bounced; ?> complained; ?>
import.php000064400000002433151546522730006603 0ustar00
title_help('/subscribers-and-management/') ?>

The import and export features have been consolidated in the free Import Addon you can find on addons management panel. Please install that addon to have:

Documentation about Import Addon can be found here.

statistics-time.php000064400000011266151546522730010423 0ustar00
setTime(12, 0, 0)->setDate((int) date('Y'), (int) date('m'), 1); $i = new DateInterval('P1M'); $months = []; for ($x = 1; $x <= 24; $x++) { $months[] = $dt->format('Y-m'); $dt->sub($i); } $months = array_reverse($months); $list = $wpdb->get_results("select concat(year(created), '-', date_format(created, '%m')) as d, count(*) as c from " . NEWSLETTER_USERS_TABLE . " where status='C' group by concat(year(created), '-', date_format(created, '%m')) order by d desc limit 24", OBJECT_K); $dataMonths = []; foreach ($months as $month) { $dataMonths[] = isset($list[$month]) ? $list[$month]->c : 0; } ?> c : 0; ?> */?>
setTime(12, 0, 0); $i = new DateInterval('P1D'); $days = []; for ($x = 1; $x <= 90; $x++) { $days[] = $dt->format('Y-m-d'); $dt->sub($i); } $days = array_reverse($days); $list = $wpdb->get_results("select date(created) as d, count(*) as c from " . NEWSLETTER_USERS_TABLE . " where status='C' group by date(created) order by d desc limit 90", OBJECT_K); $dataDays = []; foreach ($days as $day) { $dataDays[] = isset($list[$day]) ? $list[$day]->c : 0; } ?> */?>
edit.php000064400000033552151546522730006224 0ustar00get_user((int) $_GET['id'] ?? -1); if (!$user) { echo 'Subscriber not found.'; return; } if ($controls->is_action('save')) { $controls->data = wp_kses_post_deep($controls->data); $email = $this->sanitize_email($controls->data['email']); if (empty($email)) { $controls->errors = esc_html__('Wrong email address', 'newsletter'); } else { $controls->data['email'] = $email; } if (empty($controls->errors)) { $u = $this->get_user($controls->data['email']); if ($u && $u->id != $user->id) { $controls->errors = esc_html__('The email address is already in use', 'newsletter'); } } if (empty($controls->errors)) { // For unselected preferences, force the zero value for ($i = 1; $i <= NEWSLETTER_LIST_MAX; $i++) { if (!isset($controls->data['list_' . $i])) { $controls->data['list_' . $i] = 0; } } if (empty($controls->data['token'])) { $controls->data['token'] = $this->get_token(); } $controls->data['id'] = $user->id; // Sanitize $controls->data['name'] = $this->sanitize_name($controls->data['name']); $controls->data['surname'] = $this->sanitize_name($controls->data['surname']); $controls->data['wp_user_id'] = (int) $controls->data['wp_user_id']; for ($i = 1; $i <= NEWSLETTER_PROFILE_MAX; $i++) { if (isset($controls->data['profile_' . $i])) { $controls->data['profile_' . $i] = $this->sanitize_user_field($controls->data['profile_' . $i]); } } $user = $this->save_user($controls->data); $this->add_user_log($user, 'edit'); //$this->save_user_meta($id, 'ip', $controls->data['ip']); if ($user === false) { $controls->errors = esc_html__('Error. Check the log files.', 'newsletter'); } else { $controls->add_toast_saved(); $controls->data = (array) $user; } } } if ($controls->is_action('delete')) { $this->delete_user($user->id); $controls->js_redirect($this->get_admin_page_url('index')); return; } if (!$controls->is_action()) { $controls->data = (array) $user; } $options_profile = NewsletterSubscription::instance()->get_options('customfields'); function percent($value, $total) { if ($total == 0) { return '-'; } return sprintf("%.2f", $value / $total * 100) . '%'; } function percentValue($value, $total) { if ($total == 0) { return 0; } return round($value / $total * 100); } ?>
title_help('/subscribers-and-management/') ?>

email) ?>

show(); ?>
init(); ?>
id, $controls) ?>
text_email('email', 60); ?>
text('name', 50); ?>
text('surname', 50); ?>
gender('sex'); ?>
user_status() ?> Status change history
language('language', __('None', 'newsletter')); ?>

help('https://www.thenewsletterplugin.com/documentation/subscribers#test-subscribers') ?>
yesno('test'); ?>


help('https://www.thenewsletterplugin.com/plugins/newsletter/newsletter-preferences') ?>
preferences('list'); ?>

get_all_customfields() as $customfield) { echo ''; } ?>
#
'; echo (int) $customfield->id; echo ''; echo esc_html($customfield->name); echo ''; if ($customfield->is_text()) { $controls->text('profile_' . $customfield->id, 70); } else { $controls->select('profile_' . $customfield->id, $customfield->options); } echo '
ID value('id'); ?>
echo_date(strtotime($controls->data['created'])); ?>
value('referrer'); ?>
value('http_referer'); ?>
echo_date($controls->data['last_activity']); ?>
text('wp_user_id'); ?> ID of the WP user connected with this subscriber. Install WP Users Addon for automated integration.
value('ip'); ?>
text('token', 50); ?>
get_profile_url($user) ?>
get_profile_page_url($user) ?>

Dump of the meta data only for debug.

Welcome email ID get_user_meta($user->id, 'welcome_email_id')); ?>

button_save(); ?> button_delete(); ?>

users-admin.php000064400000002511151546522730007515 0ustar00add_menu_page('index', __('Subscribers', 'newsletter')); $this->add_admin_page('new', __('New subscriber', 'newsletter')); $this->add_admin_page('edit', __('Subscriber Edit', 'newsletter')); $this->add_admin_page('logs', __('Logs', 'newsletter')); $this->add_admin_page('newsletters', __('Newsletters', 'newsletter')); $this->add_admin_page('autoresponders', __('Autoresponders', 'newsletter')); $this->add_admin_page('massive', __('Subscribers Maintenance', 'newsletter')); //$this->add_admin_page('export', __('Export', 'newsletter')); $this->add_admin_page('import', __('Import/Export', 'newsletter')); $this->add_admin_page('statistics', __('Statistics', 'newsletter')); } } class TNP_Subscribers_Stats { var $total; var $confirmed; var $unconfirmed; var $bounced; } newsletters.php000064400000003211151546522730007643 0ustar00get_user((int) $_GET['id'] ?? -1); if (!$user) { die('User not found'); } ?>
title_help('/subscribers-and-management/') ?>

email) ?>

show(); ?>
init(); ?>

This panel requires the Reports Addon.

id); do_action('newsletter_users_edit_newsletters', $user->id); } ?>
users.php000064400000001007151546522730006426 0ustar00get_user((int) $_GET['id'] ?? -1); if (!$user) { echo 'Subscriber not found.'; return; } ?>
title_help('/subscribers-and-management/') ?>

email) ?>

show(); ?>
init(); ?>
get_results($wpdb->prepare("select * from {$wpdb->prefix}newsletter_user_logs where user_id=%d order by id desc", $user->id)); ?>

No logs available

Only public lists are recorded.

data, ARRAY_A); if (isset($data['new'])) $data = $data['new']; ?>
# IP
id) ?> echo_date($log->created) ?> source) ?> ip) ?> $value) { echo esc_html(str_replace('_', ' ', $key)), ': ', esc_html($value), '
'; } } ?>
export.php000064400000000044151546522730006606 0ustar00