2021-07-25 23:28:47 +00:00
< ? php
if ( ! function_exists ( 'add_action' ) ) {
exit ();
}
global $subscribers , $what , $current_tab ;
// detect or define which tab we are in
$current_tab = isset ( $_GET [ 'tab' ] ) ? esc_attr ( $_GET [ 'tab' ] ) : 'public' ;
// Access function to allow display for form elements
require_once S2PATH . 'classes/class-s2-forms.php' ;
$s2_forms = new s2_forms ();
// Instantiate and prepare our table data - this also runs the bulk actions
if ( ! class_exists ( 'WP_List_Table' ) ) {
require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php' ;
}
if ( ! class_exists ( 'Subscribe2_List_Table' ) ) {
require_once S2PATH . 'classes/class-s2-list-table.php' ;
$s2_list_table = new S2_List_Table ();
}
// was anything POSTed ?
if ( isset ( $_POST [ 's2_admin' ] ) ) {
2021-09-30 14:54:06 +00:00
$s2_request_category = '' ;
if ( isset ( $_REQUEST [ 'category' ]) && $_REQUEST [ 'category' ]) {
$s2_request_category = $_REQUEST [ 'category' ];
}
2021-07-25 23:28:47 +00:00
if ( false === wp_verify_nonce ( $_REQUEST [ '_wpnonce' ], 'bulk-' . $s2_list_table -> _args [ 'plural' ] ) ) {
die ( '<p>' . esc_html__ ( 'Security error! Your request cannot be completed.' , 'subscribe2' ) . '</p>' );
}
if ( ! empty ( $_POST [ 'addresses' ] ) ) {
$reg_sub_error = '' ;
$pub_sub_error = '' ;
$unsub_error = '' ;
$email_error = '' ;
$message = '' ;
foreach ( preg_split ( '/[\s,]+/' , $_POST [ 'addresses' ] ) as $email ) {
$clean_email = $this -> sanitize_email ( $email );
if ( false === $this -> validate_email ( $clean_email ) ) {
( '' === $email_error ) ? $email_error = " $email " : $email_error .= " , $email " ;
continue ;
} else {
if ( isset ( $_POST [ 'subscribe' ] ) ) {
if ( false !== $this -> is_public ( $clean_email ) ) {
( '' === $pub_sub_error ) ? $pub_sub_error = " $clean_email " : $pub_sub_error .= " , $clean_email " ;
continue ;
}
if ( $this -> is_registered ( $clean_email ) ) {
( '' === $reg_sub_error ) ? $reg_sub_error = " $clean_email " : $reg_sub_error .= " , $clean_email " ;
continue ;
}
$this -> add ( $clean_email , true );
$message = __ ( 'Address(es) subscribed!' , 'subscribe2' );
} elseif ( isset ( $_POST [ 'unsubscribe' ] ) ) {
if ( false === $this -> is_public ( $clean_email ) || $this -> is_registered ( $clean_email ) ) {
( '' === $unsub_error ) ? $unsub_error = " $clean_email " : $unsub_error .= " , $clean_email " ;
continue ;
}
$this -> delete ( $clean_email );
$message = __ ( 'Address(es) unsubscribed!' , 'subscribe2' );
}
}
}
if ( '' !== $reg_sub_error ) {
echo '<div id="message" class="error"><p><strong>' . esc_html__ ( 'Some emails were not processed, the following are already Registered Subscribers' , 'subscribe2' ) . ':<br>' . esc_html ( $reg_sub_error ) . '</strong></p></div>' ;
}
if ( '' !== $pub_sub_error ) {
echo '<div id="message" class="error"><p><strong>' . esc_html__ ( 'Some emails were not processed, the following are already Public Subscribers' , 'subscribe2' ) . ':<br>' . esc_html ( $pub_sub_error ) . '</strong></p></div>' ;
}
if ( '' !== $unsub_error ) {
echo '<div id="message" class="error"><p><strong>' . esc_html__ ( 'Some emails were not processed, the following were not in the database' , 'subscribe2' ) . ':<br> ' . esc_html ( $unsub_error ) . '</strong></p></div>' ;
}
if ( '' !== $email_error ) {
echo '<div id="message" class="error"><p><strong>' . esc_html__ ( 'Some emails were not processed, the following were invalid email addresses' , 'subscribe2' ) . ':<br> ' . esc_html ( $email_error ) . '</strong></p></div>' ;
}
if ( '' !== $message ) {
echo '<div id="message" class="updated fade"><p><strong>' . esc_html ( $message ) . '</strong></p></div>' ;
}
$_POST [ 'what' ] = 'confirmed' ;
} elseif ( isset ( $_POST [ 'remind' ] ) ) {
$this -> remind ( $_POST [ 'reminderemails' ] );
echo '<div id="message" class="updated fade"><p><strong>' . esc_html__ ( 'Reminder Email(s) Sent!' , 'subscribe2' ) . '</strong></p></div>' ;
} elseif ( isset ( $_POST [ 'sub_categories' ] ) && 'subscribe' === $_POST [ 'manage' ] ) {
if ( isset ( $_REQUEST [ 'subscriber' ] ) ) {
2021-09-30 14:54:06 +00:00
$this -> subscribe_registered_users ( implode ( " , \r \n " , $_REQUEST [ 'subscriber' ] ), $s2_request_category );
2021-07-25 23:28:47 +00:00
} else {
2021-09-30 14:54:06 +00:00
$this -> subscribe_registered_users ( $_POST [ 'exportcsv' ], $s2_request_category );
2021-07-25 23:28:47 +00:00
}
echo '<div id="message" class="updated fade"><p><strong>' . esc_html__ ( 'Registered Users Subscribed!' , 'subscribe2' ) . '</strong></p></div>' ;
} elseif ( isset ( $_POST [ 'sub_categories' ] ) && 'unsubscribe' === $_POST [ 'manage' ] ) {
if ( isset ( $_REQUEST [ 'subscriber' ] ) ) {
2021-09-30 14:54:06 +00:00
$this -> unsubscribe_registered_users ( implode ( " , \r \n " , $_REQUEST [ 'subscriber' ] ), $s2_request_category );
2021-07-25 23:28:47 +00:00
} else {
2021-09-30 14:54:06 +00:00
$this -> unsubscribe_registered_users ( $_POST [ 'exportcsv' ], $s2_request_category );
2021-07-25 23:28:47 +00:00
}
echo '<div id="message" class="updated fade"><p><strong>' . esc_html__ ( 'Registered Users Unsubscribed!' , 'subscribe2' ) . '</strong></p></div>' ;
} elseif ( isset ( $_POST [ 'sub_format' ] ) ) {
if ( isset ( $_REQUEST [ 'subscriber' ] ) ) {
$this -> format_change ( implode ( " , \r \n " , $_REQUEST [ 'subscriber' ] ), $_POST [ 'format' ] );
} else {
$this -> format_change ( $_POST [ 'exportcsv' ], $_POST [ 'format' ] );
}
echo '<div id="message" class="updated fade"><p><strong>' . esc_html__ ( 'Format updated for Selected Registered Users!' , 'subscribe2' ) . '</strong></p></div>' ;
} elseif ( isset ( $_POST [ 'sub_digest' ] ) ) {
if ( isset ( $_REQUEST [ 'subscriber' ] ) ) {
$this -> digest_change ( implode ( " , \r \n " , $_REQUEST [ 'subscriber' ] ), $_POST [ 'sub_category' ] );
} else {
$this -> digest_change ( $_POST [ 'exportcsv' ], $_POST [ 'sub_category' ] );
}
echo '<div id="message" class="updated fade"><p><strong>' . esc_html__ ( 'Digest Subscription updated for Selected Registered Users!' , 'subscribe2' ) . '</strong></p></div>' ;
}
}
if ( 'registered' === $current_tab ) {
// Get Registered Subscribers
$registered = $this -> get_registered ( 'return=emailid' );
$all_users = $this -> get_all_registered ( 'emailid' );
// safety check for our arrays
if ( '' === $registered ) {
$registered = array ();
}
if ( '' === $all_users ) {
$all_users = array ();
}
} else {
//Get Public Subscribers
$confirmed = $this -> get_public ();
$unconfirmed = $this -> get_public ( 0 );
// safety check for our arrays
if ( '' === $confirmed ) {
$confirmed = array ();
}
if ( '' === $unconfirmed ) {
$unconfirmed = array ();
}
}
$reminderform = false ;
if ( isset ( $_REQUEST [ 'what' ] ) ) {
if ( 'public' === $_REQUEST [ 'what' ] ) {
$what = 'public' ;
$subscribers = array_merge ( ( array ) $confirmed , ( array ) $unconfirmed );
} elseif ( 'confirmed' === $_REQUEST [ 'what' ] ) {
$what = 'confirmed' ;
$subscribers = $confirmed ;
} elseif ( 'unconfirmed' === $_REQUEST [ 'what' ] ) {
$what = 'unconfirmed' ;
$subscribers = $unconfirmed ;
if ( ! empty ( $subscribers ) ) {
$reminderemails = implode ( ',' , $subscribers );
$reminderform = true ;
}
} elseif ( is_numeric ( $_REQUEST [ 'what' ] ) ) {
$what = intval ( $_REQUEST [ 'what' ] );
$subscribers = $this -> get_registered ( " cats= $what &return=emailid " );
} elseif ( 'registered' === $_REQUEST [ 'what' ] ) {
$what = 'registered' ;
$subscribers = $registered ;
} elseif ( 'all_users' === $_REQUEST [ 'what' ] ) {
$what = 'all_users' ;
$subscribers = $all_users ;
}
} else {
if ( 'public' === $current_tab ) {
$what = 'public' ;
$subscribers = array_merge ( ( array ) $confirmed , ( array ) $unconfirmed );
} else {
$what = 'all_users' ;
$subscribers = $all_users ;
}
}
if ( ! empty ( $_POST [ 's' ] ) ) {
if ( 'registered' === $current_tab ) {
foreach ( $subscribers as $subscriber ) {
if ( is_numeric ( stripos ( $subscriber [ 'user_email' ], $_POST [ 's' ] ) ) ) {
$result [] = $subscriber ;
}
}
} else {
foreach ( $subscribers as $subscriber ) {
if ( is_numeric ( stripos ( $subscriber , $_POST [ 's' ] ) ) ) {
$result [] = $subscriber ;
}
}
}
$subscribers = $result ;
}
$s2_list_table -> prepare_items ();
// show our form
echo '<div class="wrap">' ;
echo '<h1>' . esc_html__ ( 'Subscribers' , 'subscribe2' ) . '</h1>' . " \r \n " ;
$s2tabs = array (
'public' => __ ( 'Public Subscribers' , 'subscribe2' ),
'registered' => __ ( 'Registered Subscribers' , 'subscribe2' ),
);
echo '<h2 class="nav-tab-wrapper">' ;
foreach ( $s2tabs as $tab_key => $tab_caption ) {
$active = ( $current_tab === $tab_key ) ? 'nav-tab-active' : '' ;
echo '<a class="nav-tab ' . esc_attr ( $active ) . '" href="' . esc_url ( '?page=s2_tools&tab=' . $tab_key ) . '">' . esc_html ( $tab_caption ) . '</a>' ;
}
echo '</h2>' ;
echo '<form method="post">' . " \r \n " ;
echo '<input type="hidden" name="s2_admin" />' . " \r \n " ;
switch ( $current_tab ) {
case 'public' :
echo '<input type="hidden" id="s2_location" name="s2_location" value="public" />' . " \r \n " ;
echo '<div class="s2_admin" id="s2_add_subscribers">' . " \r \n " ;
echo '<h2>' . esc_html__ ( 'Add/Remove Subscribers' , 'subscribe2' ) . '</h2>' . " \r \n " ;
echo '<p>' . esc_html__ ( 'Enter addresses, one per line or comma-separated' , 'subscribe2' ) . '<br>' . " \r \n " ;
echo '<textarea rows="2" cols="80" name="addresses"></textarea></p>' . " \r \n " ;
echo '<input type="hidden" name="s2_admin" />' . " \r \n " ;
echo '<p class="submit" style="border-top: none;"><input type="submit" class="button-primary" name="subscribe" value="' . esc_attr ( __ ( 'Subscribe' , 'subscribe2' ) ) . '" />' ;
echo ' <input type="submit" class="button-primary" name="unsubscribe" value="' . esc_attr ( __ ( 'Unsubscribe' , 'subscribe2' ) ) . '" /></p>' . " \r \n " ;
echo '</div>' . " \r \n " ;
// subscriber lists
echo '<div class="s2_admin" id="s2_current_subscribers">' . " \r \n " ;
echo '<h2>' . esc_html__ ( 'Current Subscribers' , 'subscribe2' ) . '</h2>' . " \r \n " ;
echo '<br>' ;
$cats = $this -> all_cats ();
$cat_ids = array ();
foreach ( $cats as $category ) {
$cat_ids [] = $category -> term_id ;
}
$exclude = array_merge ( array ( 'all' , 'all_users' , 'registered' ), $cat_ids );
break ;
case 'registered' :
echo '<input type="hidden" id="s2_location" name="s2_location" value="registered" />' . " \r \n " ;
echo '<div class="s2_admin" id="s2_add_subscribers">' . " \r \n " ;
echo '<h2>' . esc_html__ ( 'Add/Remove Subscribers' , 'subscribe2' ) . '</h2>' . " \r \n " ;
echo '<p class="submit" style="border-top: none;"><a class="button-primary" href="' . esc_url ( admin_url ( 'user-new.php' ) ) . '">' . esc_html__ ( 'Add Registered User' , 'subscribe2' ) . '</a></p>' . " \r \n " ;
echo " </div> \r \n " ;
// subscriber lists
echo '<div class="s2_admin" id="s2_current_subscribers">' . " \r \n " ;
echo '<h2>' . esc_html__ ( 'Current Subscribers' , 'subscribe2' ) . '</h2>' . " \r \n " ;
echo '<br>' ;
$exclude = array ( 'all' , 'public' , 'confirmed' , 'unconfirmed' );
break ;
}
// show the selected subscribers
echo '<table style="width: 100%; border-collapse: separate; border-spacing: 0px; *border-collapse: expression("separate", cellSpacing = "0px");"><tr>' ;
echo '<td style="width: 50%; text-align: left;">' ;
$this -> display_subscriber_dropdown ( $what , __ ( 'Filter' , 'subscribe2' ), $exclude );
echo '</td>' . " \r \n " ;
if ( $reminderform ) {
echo '<td style="width: 25%; text-align: right;"><input type="hidden" name="reminderemails" value="' . esc_attr ( $reminderemails ) . '" />' . " \r \n " ;
echo '<input type="submit" class="button-secondary" name="remind" value="' . esc_attr ( __ ( 'Send Reminder Email' , 'subscribe2' ) ) . '" /></td>' . " \r \n " ;
} else {
echo '<td style="width: 25%;"></td>' ;
}
if ( ! empty ( $subscribers ) ) {
if ( 'public' === $current_tab ) {
$exportcsv = implode ( " , \r \n " , $subscribers );
} else {
$exportcsv = '' ;
foreach ( $subscribers as $subscriber ) {
( '' === $exportcsv ) ? $exportcsv = $subscriber [ 'user_email' ] : $exportcsv .= " , \r \n " . $subscriber [ 'user_email' ];
}
}
echo '<td style="width: 25%; text-align: right;"><input type="hidden" name="exportcsv" value="' . esc_attr ( $exportcsv ) . '" />' . " \r \n " ;
echo '<input type="submit" class="button-secondary" name="csv" value="' . esc_attr ( __ ( 'Save Emails to CSV File' , 'subscribe2' ) ) . '" /></td>' . " \r \n " ;
} else {
echo '<td style="width: 25%;"></td>' ;
}
echo '</tr></table>' ;
// output our subscriber table
$s2_list_table -> search_box ( __ ( 'Search' , 'subscribe2' ), 'search_id' );
$s2_list_table -> display ();
echo '</div>' . " \r \n " ;
// show bulk management form if filtered in some Registered Users
if ( 'registered' === $current_tab ) {
echo '<div class="s2_admin" id="s2_bulk_manage">' . " \r \n " ;
echo '<h2>' . esc_html__ ( 'Bulk Management' , 'subscribe2' ) . '</h2>' . " \r \n " ;
if ( 'never' === $this -> subscribe2_options [ 'email_freq' ] ) {
$categories = array ();
if ( isset ( $_POST [ 'category' ] ) ) {
$categories = $_POST [ 'category' ];
}
$manage = '' ;
if ( isset ( $_POST [ 'manage' ] ) ) {
$manage = $_POST [ 'manage' ];
}
$format = '' ;
if ( isset ( $_POST [ 'format' ] ) ) {
$format = $_POST [ 'format' ];
}
echo esc_html__ ( 'Preferences for Registered Users selected above can be changed using this section.' , 'subscribe2' ) . '<br>' . " \r \n " ;
echo '<strong><em style="color: red">' . esc_html__ ( 'Consider User Privacy as changes cannot be undone' , 'subscribe2' ) . '</em></strong><br>' . " \r \n " ;
echo '<br>' . esc_html__ ( 'Action to perform' , 'subscribe2' ) . ':' . " \r \n " ;
echo '<label><input type="radio" name="manage" value="subscribe"' . checked ( $manage , 'subscribe' , false ) . ' /> ' . esc_html__ ( 'Subscribe' , 'subscribe2' ) . '</label> ' . " \r \n " ;
echo '<label><input type="radio" name="manage" value="unsubscribe"' . checked ( $manage , 'unsubscribe' , false ) . ' /> ' . esc_html__ ( 'Unsubscribe' , 'subscribe2' ) . '</label><br><br>' . " \r \n " ;
if ( '1' === $this -> subscribe2_options [ 'reg_override' ] ) {
$s2_forms -> display_category_form ( $categories , 1 );
} else {
$s2_forms -> display_category_form ( $categories , 0 );
}
echo '<p class="submit"><button class="button-primary" name="sub_categories" onclick="return bmCheck();">' . esc_html__ ( 'Bulk Update Categories' , 'subscribe2' ) . '</button></p>' ;
echo '<br>' . esc_html__ ( 'Send email as' , 'subscribe2' ) . ':' . " \r \n " ;
echo '<label><input type="radio" name="format" value="html"' . checked ( $format , 'html' , false ) . ' /> ' . esc_html__ ( 'HTML - Full' , 'subscribe2' ) . '</label> ' . " \r \n " ;
echo '<label><input type="radio" name="format" value="html_excerpt"' . checked ( $format , 'html_excerpt' , false ) . ' /> ' . esc_html__ ( 'HTML - Excerpt' , 'subscribe2' ) . '</label> ' . " \r \n " ;
echo '<label><input type="radio" name="format" value="post"' . checked ( $format , 'post' , false ) . ' /> ' . esc_html__ ( 'Plain Text - Full' , 'subscribe2' ) . '</label> ' . " \r \n " ;
echo '<label><input type="radio" name="format" value="excerpt"' . checked ( $format , 'excerpt' , false ) . '/> ' . esc_html__ ( 'Plain Text - Excerpt' , 'subscribe2' ) . '</label>' . " \r \n " ;
echo '<p class="submit"><button class="button-primary" name="sub_format" onclick="return bmCheck();">' . esc_html__ ( 'Bulk Update Format' , 'subscribe2' ) . '</button></p>' ;
} else {
$sub_cats = '' ;
if ( isset ( $_POST [ 'sub_category' ] ) ) {
$sub_cats = $_POST [ 'sub_category' ];
}
echo esc_html__ ( 'Preferences for Registered Users selected above can be changed using this section.' , 'subscribe2' ) . " <br> \r \n " ;
echo '<strong><em style="color: red">' . esc_html__ ( 'Consider User Privacy as changes cannot be undone.' , 'subscribe2' ) . '</em></strong><br>' . " \r \n " ;
echo '<br>' . esc_html__ ( 'Subscribe Selected Users to receive a periodic digest notification' , 'subscribe2' ) . ':' . " \r \n " ;
echo '<label><input type="radio" name="sub_category" value="digest"' . checked ( $sub_cats , 'digest' , false ) . ' /> ' ;
echo esc_html__ ( 'Yes' , 'subscribe2' ) . '</label> ' . " \r \n " ;
echo '<label><input type="radio" name="sub_category" value="-1"' . checked ( $sub_cats , '-1' , false ) . ' /> ' ;
echo esc_html__ ( 'No' , 'subscribe2' ) . '</label>' ;
echo '<p class="submit"><button class="button-primary" name="sub_digest" onclick="return bmCheck();">' . esc_html__ ( 'Bulk Update Digest Subscription' , 'subscribe2' ) . '</button></p>' ;
}
echo '</div>' . " \r \n " ;
}
echo '</form></div>' . " \r \n " ;
require ABSPATH . 'wp-admin/admin-footer.php' ;
// just to be sure
die ;