Subscribe2 - Version 8.3

Version Description

Download this release

Release Info

Developer MattyRob
Plugin Icon 128x128 Subscribe2
Version 8.3
Comparing to
See all releases

Code changes from version 8.2 to 8.3

ReadMe.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_butt
4
  Tags: posts, subscription, email, subscribe, notify, notification
5
  Requires at least: 3.1
6
  Tested up to: 3.3.1
7
- Stable tag: 8.2
8
 
9
  Sends a list of subscribers an email notification when new posts are published to your blog
10
 
@@ -29,25 +29,25 @@ If you want to send full content HTML emails to Public Subscribers too then upgr
29
 
30
  AUTOMATIC INSTALLATION
31
  1. Log in to your WordPress blog and visit Plugins->Add New.
32
- 2. Search for Subscribe2, click "Install Now" and then Activate the Plugin
33
- 3. Click the "Settings" admin menu link, and select "Subscribe2".
34
- 4. Configure the options to taste, including the email template and any categories which should be excluded from notification
35
- 5. Click the "Tools" admin menu link, and select "Subscribers".
36
- 6. Manually subscribe people as you see fit.
37
- 7. Create a [WordPress Page](http://codex.wordpress.org/Pages) to display the subscription form. When creating the page, you may click the "S2" button on the QuickBar to automatically insert the subscribe2 token. Or, if you prefer, you may manually insert the subscribe2 shortcode or token: [subscribe2] or the HTML invisible `<!--subscribe2-->` ***Ensure the token is on a line by itself and that it has a blank line above and below.***
38
  This token will automatically be replaced by dynamic subscription information and will display all forms and messages as necessary.
39
- 8. In the WordPress "Settings" area for Subscribe2 select the page name in the "Appearance" section that of the WordPress page created in step 7.
40
 
41
  MANUAL INSTALLATION
42
  1. Copy the entire /subscribe2/ directory into your /wp-content/plugins/ directory.
43
- 2. Activate the plugin.
44
- 3. Click the "Settings" admin menu link, and select "Subscribe2".
45
- 4. Configure the options to taste, including the email template and any categories which should be excluded from notification
46
- 5. Click the "Tools" admin menu link, and select "Subscribers".
47
- 6. Manually subscribe people as you see fit.
48
- 7. Create a [WordPress Page](http://codex.wordpress.org/Pages) to display the subscription form. When creating the page, you may click the "S2" button on the QuickBar to automatically insert the subscribe2 token. Or, if you prefer, you may manually insert the subscribe2 shortcode or token: [subscribe2] or the HTML invisible `<!--subscribe2-->` ***Ensure the token is on a line by itself and that it has a blank line above and below.***
49
  This token will automatically be replaced by dynamic subscription information and will display all forms and messages as necessary.
50
- 8. In the WordPress "Settings" area for Subscribe2 select the page name in the "Appearance" section that of the WordPress page created in step 7.
51
 
52
  == Frequently Asked Questions ==
53
 
@@ -303,6 +303,19 @@ Secondly, make sure that the token ([subscribe2] or <!--subscribe2-->) is correc
303
 
304
  == Changelog ==
305
 
 
 
 
 
 
 
 
 
 
 
 
 
 
306
  = Version 8.2 by Matthew Robinson =
307
 
308
  * Implemented use of Farbtastic as colour chooser in the Counter Widget because ColorPicker has been deprecated in WordPress
4
  Tags: posts, subscription, email, subscribe, notify, notification
5
  Requires at least: 3.1
6
  Tested up to: 3.3.1
7
+ Stable tag: 8.3
8
 
9
  Sends a list of subscribers an email notification when new posts are published to your blog
10
 
29
 
30
  AUTOMATIC INSTALLATION
31
  1. Log in to your WordPress blog and visit Plugins->Add New.
32
+ 1. Search for Subscribe2, click "Install Now" and then Activate the Plugin
33
+ 1. Click the "Settings" admin menu link, and select "Subscribe2".
34
+ 1. Configure the options to taste, including the email template and any categories which should be excluded from notification
35
+ 1. Click the "Tools" admin menu link, and select "Subscribers".
36
+ 1. Manually subscribe people as you see fit.
37
+ 1. Create a [WordPress Page](http://codex.wordpress.org/Pages) to display the subscription form. When creating the page, you may click the "S2" button on the QuickBar to automatically insert the subscribe2 token. Or, if you prefer, you may manually insert the subscribe2 shortcode or token: [subscribe2] or the HTML invisible `<!--subscribe2-->` ***Ensure the token is on a line by itself and that it has a blank line above and below.***
38
  This token will automatically be replaced by dynamic subscription information and will display all forms and messages as necessary.
39
+ 1. In the WordPress "Settings" area for Subscribe2 select the page name in the "Appearance" section that of the WordPress page created in step 7.
40
 
41
  MANUAL INSTALLATION
42
  1. Copy the entire /subscribe2/ directory into your /wp-content/plugins/ directory.
43
+ 1. Activate the plugin.
44
+ 1. Click the "Settings" admin menu link, and select "Subscribe2".
45
+ 1. Configure the options to taste, including the email template and any categories which should be excluded from notification
46
+ 1. Click the "Tools" admin menu link, and select "Subscribers".
47
+ 1. Manually subscribe people as you see fit.
48
+ 1. Create a [WordPress Page](http://codex.wordpress.org/Pages) to display the subscription form. When creating the page, you may click the "S2" button on the QuickBar to automatically insert the subscribe2 token. Or, if you prefer, you may manually insert the subscribe2 shortcode or token: [subscribe2] or the HTML invisible `<!--subscribe2-->` ***Ensure the token is on a line by itself and that it has a blank line above and below.***
49
  This token will automatically be replaced by dynamic subscription information and will display all forms and messages as necessary.
50
+ 1. In the WordPress "Settings" area for Subscribe2 select the page name in the "Appearance" section that of the WordPress page created in step 7.
51
 
52
  == Frequently Asked Questions ==
53
 
303
 
304
  == Changelog ==
305
 
306
+ = Version 8.3 by Matthew Robinson =
307
+
308
+ * Fixed a bunch of PHP messages - should not show anyway unless WP_DEBUG is true or PHP error reporting is on a high setting
309
+ * Fixed bulk category management so it applies to all users and not just the first record
310
+ * Update 'autosub' to no on one-click unsubscribe instead of erasing the value
311
+ * Return empty string is get_tracking_link() is passed and empty variable
312
+ * Fixed some typographical errors
313
+ * Fixed profile page to obey 'one click' display setting
314
+ * Fixed implode error seen when sending preview emails on some configurations
315
+ * Fixed a error in the admin user dropdown on installs (particularly Multisite) where there may be no administrator level users
316
+ * Added a button text filter for the Subscribe and Unsubscribe buttons - proposed by casben79
317
+ * Use wp_hash in place of MD5 to further obfuscate confirmation links - thanks to Otto and Ipstenu
318
+
319
  = Version 8.2 by Matthew Robinson =
320
 
321
  * Implemented use of Farbtastic as colour chooser in the Counter Widget because ColorPicker has been deprecated in WordPress
admin/send_email.php CHANGED
@@ -7,7 +7,7 @@ global $wpdb, $s2nonce, $current_user;
7
 
8
  // was anything POSTed?
9
  if ( isset($_POST['s2_admin']) && 'mail' == $_POST['s2_admin'] ) {
10
- check_admin_referer('subscribe2-write_subscribers' . $s2nonce);
11
  $subject = html_entity_decode($this->substitute(stripslashes(strip_tags($_POST['subject']))), ENT_QUOTES);
12
  $body = $this->substitute(stripslashes($_POST['content']));
13
  if ( '' != $current_user->display_name || '' != $current_user->user_email ) {
@@ -38,6 +38,8 @@ if ( isset($_POST['s2_admin']) && 'mail' == $_POST['s2_admin'] ) {
38
  $status = $this->mail($recipients, $subject, $body, 'text');
39
  if ( $status ) {
40
  $message = $this->mail_sent;
 
 
41
  } else {
42
  global $phpmailer;
43
  $message = $this->mail_failed . $phpmailer->ErrorInfo;
@@ -51,7 +53,7 @@ echo "<div id=\"icon-edit\" class=\"icon32\"></div>";
51
  echo "<h2>" . __('Send an email to subscribers', 'subscribe2') . "</h2>\r\n";
52
  echo "<form method=\"post\" action=\"\">\r\n";
53
  if ( function_exists('wp_nonce_field') ) {
54
- wp_nonce_field('subscribe2-write_subscribers' . $s2nonce);
55
  }
56
  if ( isset($_POST['subject']) ) {
57
  $subject = stripslashes(esc_html($_POST['subject']));
7
 
8
  // was anything POSTed?
9
  if ( isset($_POST['s2_admin']) && 'mail' == $_POST['s2_admin'] ) {
10
+ check_admin_referer('subscribe2-write_subscribers', $s2nonce);
11
  $subject = html_entity_decode($this->substitute(stripslashes(strip_tags($_POST['subject']))), ENT_QUOTES);
12
  $body = $this->substitute(stripslashes($_POST['content']));
13
  if ( '' != $current_user->display_name || '' != $current_user->user_email ) {
38
  $status = $this->mail($recipients, $subject, $body, 'text');
39
  if ( $status ) {
40
  $message = $this->mail_sent;
41
+ } elseif ( empty($body) ) {
42
+ $message = __('Your email was empty', 'subscribe2');
43
  } else {
44
  global $phpmailer;
45
  $message = $this->mail_failed . $phpmailer->ErrorInfo;
53
  echo "<h2>" . __('Send an email to subscribers', 'subscribe2') . "</h2>\r\n";
54
  echo "<form method=\"post\" action=\"\">\r\n";
55
  if ( function_exists('wp_nonce_field') ) {
56
+ wp_nonce_field('subscribe2-write_subscribers', $s2nonce);
57
  }
58
  if ( isset($_POST['subject']) ) {
59
  $subject = stripslashes(esc_html($_POST['subject']));
admin/settings.php CHANGED
@@ -15,10 +15,10 @@ if ( empty($id) ) {
15
  // was anything POSTed?
16
  if ( isset( $_POST['s2_admin']) ) {
17
  check_admin_referer('subscribe2-options_subscribers' . $s2nonce);
18
- if ( $_POST['reset'] ) {
19
  $this->reset();
20
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>$this->options_reset</strong></p></div>";
21
- } elseif ( $_POST['preview'] ) {
22
  global $user_email;
23
  $this->preview_email = true;
24
  if ( 'never' == $this->subscribe2_options['email_freq'] ) {
@@ -28,14 +28,14 @@ if ( isset( $_POST['s2_admin']) ) {
28
  $this->subscribe2_cron($user_email);
29
  }
30
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Preview message(s) sent to logged in user', 'subscribe2') . "</strong></p></div>";
31
- } elseif ( $_POST['resend'] ) {
32
  $status = $this->subscribe2_cron('', 'resend');
33
  if ( $status === false ) {
34
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('The Digest Notification email contained no post information. No email was sent', 'subscribe2') . "</strong></p></div>";
35
  } else {
36
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Attempt made to resend the Digest Notification email', 'subscribe2') . "</strong></p></div>";
37
  }
38
- } elseif ( $_POST['submit'] ) {
39
  // BCClimit
40
  if ( is_numeric($_POST['bcc']) && $_POST['bcc'] >= 0 ) {
41
  $this->subscribe2_options['bcclimit'] = $_POST['bcc'];
@@ -159,27 +159,27 @@ if ( isset( $_POST['s2_admin']) ) {
159
  }
160
 
161
  // show meta link?
162
- ( $_POST['show_meta'] == '1' ) ? $showmeta = '1' : $showmeta = '0';
163
  $this->subscribe2_options['show_meta'] = $showmeta;
164
 
165
  // show button?
166
- ( $_POST['show_button'] == '1' ) ? $showbutton = '1' : $showbutton = '0';
167
  $this->subscribe2_options['show_button'] = $showbutton;
168
 
169
  // enable AJAX style form
170
- ( $_POST['ajax'] == '1' ) ? $ajax = '1' : $ajax = '0';
171
  $this->subscribe2_options['ajax'] = $ajax;
172
 
173
  // show widget in Presentation->Widgets
174
- ( $_POST['widget'] == '1' ) ? $showwidget = '1' : $showwidget = '0';
175
  $this->subscribe2_options['widget'] = $showwidget;
176
 
177
  // show counterwidget in Presentation->Widgets
178
- ( $_POST['counterwidget'] == '1' ) ? $showcounterwidget = '1' : $showcounterwidget = '0';
179
  $this->subscribe2_options['counterwidget'] = $showcounterwidget;
180
 
181
  // Subscribe2 over ride postmeta checked by default
182
- ( $_POST['s2meta_default'] == '1' ) ? $s2meta_default = '1' : $s2meta_default = '0';
183
  $this->subscribe2_options['s2meta_default'] = $s2meta_default;
184
 
185
  //automatic subscription
15
  // was anything POSTed?
16
  if ( isset( $_POST['s2_admin']) ) {
17
  check_admin_referer('subscribe2-options_subscribers' . $s2nonce);
18
+ if ( isset($_POST['reset']) ) {
19
  $this->reset();
20
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>$this->options_reset</strong></p></div>";
21
+ } elseif ( isset($_POST['preview']) ) {
22
  global $user_email;
23
  $this->preview_email = true;
24
  if ( 'never' == $this->subscribe2_options['email_freq'] ) {
28
  $this->subscribe2_cron($user_email);
29
  }
30
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Preview message(s) sent to logged in user', 'subscribe2') . "</strong></p></div>";
31
+ } elseif ( isset($_POST['resend']) ) {
32
  $status = $this->subscribe2_cron('', 'resend');
33
  if ( $status === false ) {
34
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('The Digest Notification email contained no post information. No email was sent', 'subscribe2') . "</strong></p></div>";
35
  } else {
36
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Attempt made to resend the Digest Notification email', 'subscribe2') . "</strong></p></div>";
37
  }
38
+ } elseif ( isset($_POST['submit']) ) {
39
  // BCClimit
40
  if ( is_numeric($_POST['bcc']) && $_POST['bcc'] >= 0 ) {
41
  $this->subscribe2_options['bcclimit'] = $_POST['bcc'];
159
  }
160
 
161
  // show meta link?
162
+ ( isset($_POST['show_meta']) && $_POST['show_meta'] == '1' ) ? $showmeta = '1' : $showmeta = '0';
163
  $this->subscribe2_options['show_meta'] = $showmeta;
164
 
165
  // show button?
166
+ ( isset($_POST['show_button']) && $_POST['show_button'] == '1' ) ? $showbutton = '1' : $showbutton = '0';
167
  $this->subscribe2_options['show_button'] = $showbutton;
168
 
169
  // enable AJAX style form
170
+ ( isset($_POST['ajax']) && $_POST['ajax'] == '1' ) ? $ajax = '1' : $ajax = '0';
171
  $this->subscribe2_options['ajax'] = $ajax;
172
 
173
  // show widget in Presentation->Widgets
174
+ ( isset($_POST['widget']) && $_POST['widget'] == '1' ) ? $showwidget = '1' : $showwidget = '0';
175
  $this->subscribe2_options['widget'] = $showwidget;
176
 
177
  // show counterwidget in Presentation->Widgets
178
+ ( isset($_POST['counterwidget']) && $_POST['counterwidget'] == '1' ) ? $showcounterwidget = '1' : $showcounterwidget = '0';
179
  $this->subscribe2_options['counterwidget'] = $showcounterwidget;
180
 
181
  // Subscribe2 over ride postmeta checked by default
182
+ ( isset($_POST['s2meta_default']) && $_POST['s2meta_default'] == '1' ) ? $s2meta_default = '1' : $s2meta_default = '0';
183
  $this->subscribe2_options['s2meta_default'] = $s2meta_default;
184
 
185
  //automatic subscription
admin/subscribers.php CHANGED
@@ -12,7 +12,7 @@ $all_users = $this->get_all_registered();
12
  // was anything POSTed ?
13
  if ( isset($_POST['s2_admin']) ) {
14
  check_admin_referer('subscribe2-manage_subscribers' . $s2nonce);
15
- if ( $_POST['addresses'] ) {
16
  $sub_error = '';
17
  $unsub_error = '';
18
  foreach ( preg_split ("|[\s,]+|", $_POST['addresses']) as $email ) {
@@ -41,27 +41,27 @@ if ( isset($_POST['s2_admin']) ) {
41
  }
42
  echo $message;
43
  $_POST['what'] = 'confirmed';
44
- } elseif ( $_POST['process'] ) {
45
- if ( $_POST['delete'] ) {
46
  foreach ( $_POST['delete'] as $address ) {
47
  $this->delete($address);
48
  }
49
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Address(es) deleted!', 'subscribe2') . "</strong></p></div>";
50
  }
51
- if ( $_POST['confirm'] ) {
52
  foreach ( $_POST['confirm'] as $address ) {
53
  $this->toggle($this->sanitize_email($address));
54
  }
55
  $message = "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Status changed!', 'subscribe2') . "</strong></p></div>";
56
  }
57
- if ( $_POST['unconfirm'] ) {
58
  foreach ( $_POST['unconfirm'] as $address ) {
59
  $this->toggle($this->sanitize_email($address));
60
  }
61
  $message = "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Status changed!', 'subscribe2') . "</strong></p></div>";
62
  }
63
  echo $message;
64
- } elseif ( $_POST['searchterm'] ) {
65
  $confirmed = $this->get_public();
66
  $unconfirmed = $this->get_public(0);
67
  $subscribers = array_merge((array)$confirmed, (array)$unconfirmed, (array)$all_users);
@@ -70,19 +70,19 @@ if ( isset($_POST['s2_admin']) ) {
70
  $result[] = $subscriber;
71
  }
72
  }
73
- } elseif ( $_POST['remind'] ) {
74
  $this->remind($_POST['reminderemails']);
75
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Reminder Email(s) Sent!', 'subscribe2') . "</strong></p></div>";
76
- } elseif ( $_POST['sub_categories'] && 'subscribe' == $_POST['manage'] ) {
77
  $this->subscribe_registered_users($_POST['exportcsv'], $_POST['category']);
78
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Registered Users Subscribed!', 'subscribe2') . "</strong></p></div>";
79
- } elseif ( $_POST['sub_categories'] && 'unsubscribe' == $_POST['manage'] ) {
80
  $this->unsubscribe_registered_users($_POST['exportcsv'], $_POST['category']);
81
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Registered Users Unsubscribed!', 'subscribe2') . "</strong></p></div>";
82
- } elseif ( $_POST['sub_format'] ) {
83
  $this->format_change( $_POST['format'], $_POST['exportcsv'] );
84
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Format updated for Selected Registered Users!', 'subscribe2') . "</strong></p></div>";
85
- } elseif ( $_POST['sub_digest'] ) {
86
  $this->digest_change( $_POST['sub_category'], $_POST['exportcsv'] );
87
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Digest Subscription updated for Selected Registered Users!', 'subscribe2') . "</strong></p></div>";
88
  }
@@ -165,7 +165,7 @@ if ( isset($_POST['what']) ) {
165
  $what = 'all';
166
  $subscribers = array_merge((array)$confirmed, (array)$unconfirmed, (array)$all_users);
167
  }
168
- if ( $_POST['searchterm'] ) {
169
  $subscribers = &$result;
170
  $what = 'public';
171
  }
@@ -229,7 +229,7 @@ echo "<br /><br />";
229
  // show the selected subscribers
230
  $alternate = 'alternate';
231
  echo "<table class=\"widefat\" cellpadding=\"2\" cellspacing=\"2\" width=\"100%\">";
232
- $searchterm = ( $_POST['searchterm'] ) ? stripslashes(esc_html($_POST['searchterm'])) : '';
233
  echo "<tr class=\"alternate\"><td colspan=\"3\"><input type=\"text\" name=\"searchterm\" value=\"" . $searchterm . "\" /></td>\r\n";
234
  echo "<td><input type=\"submit\" class=\"button-secondary\" name=\"search\" value=\"" . __('Search Subscribers', 'subscribe2') . "\" /></td>\r\n";
235
  if ( $reminderform ) {
12
  // was anything POSTed ?
13
  if ( isset($_POST['s2_admin']) ) {
14
  check_admin_referer('subscribe2-manage_subscribers' . $s2nonce);
15
+ if ( !empty($_POST['addresses']) ) {
16
  $sub_error = '';
17
  $unsub_error = '';
18
  foreach ( preg_split ("|[\s,]+|", $_POST['addresses']) as $email ) {
41
  }
42
  echo $message;
43
  $_POST['what'] = 'confirmed';
44
+ } elseif ( isset($_POST['process']) ) {
45
+ if ( isset($_POST['delete']) ) {
46
  foreach ( $_POST['delete'] as $address ) {
47
  $this->delete($address);
48
  }
49
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Address(es) deleted!', 'subscribe2') . "</strong></p></div>";
50
  }
51
+ if ( isset($_POST['confirm']) ) {
52
  foreach ( $_POST['confirm'] as $address ) {
53
  $this->toggle($this->sanitize_email($address));
54
  }
55
  $message = "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Status changed!', 'subscribe2') . "</strong></p></div>";
56
  }
57
+ if ( isset($_POST['unconfirm']) ) {
58
  foreach ( $_POST['unconfirm'] as $address ) {
59
  $this->toggle($this->sanitize_email($address));
60
  }
61
  $message = "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Status changed!', 'subscribe2') . "</strong></p></div>";
62
  }
63
  echo $message;
64
+ } elseif ( !empty($_POST['searchterm']) ) {
65
  $confirmed = $this->get_public();
66
  $unconfirmed = $this->get_public(0);
67
  $subscribers = array_merge((array)$confirmed, (array)$unconfirmed, (array)$all_users);
70
  $result[] = $subscriber;
71
  }
72
  }
73
+ } elseif ( isset($_POST['remind']) ) {
74
  $this->remind($_POST['reminderemails']);
75
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Reminder Email(s) Sent!', 'subscribe2') . "</strong></p></div>";
76
+ } elseif ( isset($_POST['sub_categories']) && 'subscribe' == $_POST['manage'] ) {
77
  $this->subscribe_registered_users($_POST['exportcsv'], $_POST['category']);
78
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Registered Users Subscribed!', 'subscribe2') . "</strong></p></div>";
79
+ } elseif ( isset($_POST['sub_categories']) && 'unsubscribe' == $_POST['manage'] ) {
80
  $this->unsubscribe_registered_users($_POST['exportcsv'], $_POST['category']);
81
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Registered Users Unsubscribed!', 'subscribe2') . "</strong></p></div>";
82
+ } elseif ( isset($_POST['sub_format']) ) {
83
  $this->format_change( $_POST['format'], $_POST['exportcsv'] );
84
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Format updated for Selected Registered Users!', 'subscribe2') . "</strong></p></div>";
85
+ } elseif ( isset($_POST['sub_digest']) ) {
86
  $this->digest_change( $_POST['sub_category'], $_POST['exportcsv'] );
87
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Digest Subscription updated for Selected Registered Users!', 'subscribe2') . "</strong></p></div>";
88
  }
165
  $what = 'all';
166
  $subscribers = array_merge((array)$confirmed, (array)$unconfirmed, (array)$all_users);
167
  }
168
+ if ( !empty($_POST['searchterm']) ) {
169
  $subscribers = &$result;
170
  $what = 'public';
171
  }
229
  // show the selected subscribers
230
  $alternate = 'alternate';
231
  echo "<table class=\"widefat\" cellpadding=\"2\" cellspacing=\"2\" width=\"100%\">";
232
+ $searchterm = ( isset($_POST['searchterm']) ) ? stripslashes(esc_html($_POST['searchterm'])) : '';
233
  echo "<tr class=\"alternate\"><td colspan=\"3\"><input type=\"text\" name=\"searchterm\" value=\"" . $searchterm . "\" /></td>\r\n";
234
  echo "<td><input type=\"submit\" class=\"button-secondary\" name=\"search\" value=\"" . __('Search Subscribers', 'subscribe2') . "\" /></td>\r\n";
235
  if ( $reminderform ) {
admin/your_subscriptions.php CHANGED
@@ -16,7 +16,7 @@ if ( isset($_GET['email']) ) {
16
  if ( isset($_POST['s2_admin']) && 'user' == $_POST['s2_admin'] ) {
17
  check_admin_referer('subscribe2-user_subscribers' . $s2nonce);
18
 
19
- if ( $_POST['submit'] ) {
20
  if ( isset($_POST['s2_format']) ) {
21
  update_user_meta($user_ID, $this->get_usermeta_keyname('s2_format'), $_POST['s2_format']);
22
  } else {
@@ -34,7 +34,7 @@ if ( isset($_POST['s2_admin']) && 'user' == $_POST['s2_admin'] ) {
34
  }
35
  }
36
 
37
- $cats = $_POST['category'];
38
 
39
  if ( empty($cats) || $cats == '-1' ) {
40
  $oldcats = explode(',', get_user_meta($user_ID, $this->get_usermeta_keyname('s2_subscribed'), true));
@@ -74,16 +74,16 @@ if ( isset($_POST['s2_admin']) && 'user' == $_POST['s2_admin'] ) {
74
  update_user_meta($user_ID, $this->get_usermeta_keyname('s2_subscribed'), implode(',', $cats));
75
  }
76
 
77
- $authors = $_POST['author'];
78
  if ( is_array($authors) ) {
79
  $authors = implode(',', $authors);
80
  update_user_meta($user_ID, $this->get_usermeta_keyname('s2_authors'), $authors);
81
  } elseif ( empty($authors) ) {
82
  update_user_meta($user_ID, $this->get_usermeta_keyname('s2_authors'), '');
83
  }
84
- } elseif ( $_POST['subscribe'] ) {
85
  $this->one_click_handler($user_ID, 'subscribe');
86
- } elseif ( $_POST['unsubscribe'] ) {
87
  $this->one_click_handler($user_ID, 'unsubscribe');
88
  }
89
 
@@ -124,10 +124,12 @@ if ( $this->subscribe2_options['email_freq'] == 'never' ) {
124
  echo "</p>";
125
  }
126
 
127
- // One-click subscribe and unsubscribe buttons
128
- echo "<h2>" . __('One Click Subscription / Unsubscription', 'subscribe2') . "</h2>\r\n";
129
- echo "<p class=\"submit\"><input type=\"submit\" class=\"button-primary\" name=\"subscribe\" value=\"" . __("Subscribe to All", 'subscribe2') . "\" />&nbsp;&nbsp;";
130
- echo "<input type=\"submit\" class=\"button-primary\" name=\"unsubscribe\" value=\"" . __("Unsubscribe from All", 'subscribe2') . "\" /></p>";
 
 
131
 
132
  // subscribed categories
133
  if ( $this->s2_mu ) {
16
  if ( isset($_POST['s2_admin']) && 'user' == $_POST['s2_admin'] ) {
17
  check_admin_referer('subscribe2-user_subscribers' . $s2nonce);
18
 
19
+ if ( isset($_POST['submit']) ) {
20
  if ( isset($_POST['s2_format']) ) {
21
  update_user_meta($user_ID, $this->get_usermeta_keyname('s2_format'), $_POST['s2_format']);
22
  } else {
34
  }
35
  }
36
 
37
+ $cats = ( isset($_POST['category']) ) ? $_POST['category'] : '';
38
 
39
  if ( empty($cats) || $cats == '-1' ) {
40
  $oldcats = explode(',', get_user_meta($user_ID, $this->get_usermeta_keyname('s2_subscribed'), true));
74
  update_user_meta($user_ID, $this->get_usermeta_keyname('s2_subscribed'), implode(',', $cats));
75
  }
76
 
77
+ $authors = ( isset($_POST['author']) ) ? $_POST['author'] : '';
78
  if ( is_array($authors) ) {
79
  $authors = implode(',', $authors);
80
  update_user_meta($user_ID, $this->get_usermeta_keyname('s2_authors'), $authors);
81
  } elseif ( empty($authors) ) {
82
  update_user_meta($user_ID, $this->get_usermeta_keyname('s2_authors'), '');
83
  }
84
+ } elseif ( isset($_POST['subscribe']) ) {
85
  $this->one_click_handler($user_ID, 'subscribe');
86
+ } elseif ( isset($_POST['unsubscribe']) ) {
87
  $this->one_click_handler($user_ID, 'unsubscribe');
88
  }
89
 
124
  echo "</p>";
125
  }
126
 
127
+ if ( $this->subscribe2_options['one_click_profile'] == 'yes' ) {
128
+ // One-click subscribe and unsubscribe buttons
129
+ echo "<h2>" . __('One Click Subscription / Unsubscription', 'subscribe2') . "</h2>\r\n";
130
+ echo "<p class=\"submit\"><input type=\"submit\" class=\"button-primary\" name=\"subscribe\" value=\"" . __("Subscribe to All", 'subscribe2') . "\" />&nbsp;&nbsp;";
131
+ echo "<input type=\"submit\" class=\"button-primary\" name=\"unsubscribe\" value=\"" . __("Unsubscribe from All", 'subscribe2') . "\" /></p>";
132
+ }
133
 
134
  // subscribed categories
135
  if ( $this->s2_mu ) {
classes/class-s2-admin.php CHANGED
@@ -21,7 +21,7 @@ class s2_admin extends s2class {
21
 
22
  add_submenu_page('s2', __('Send Email', 'subscribe2'), __('Send Email', 'subscribe2'), apply_filters('s2_capability', "publish_posts", 'send'), 's2_posts', array(&$this, 'write_menu'));
23
 
24
- $s2nonce = md5('subscribe2');
25
  } // end admin_menu()
26
 
27
  /**
@@ -154,7 +154,7 @@ class s2_admin extends s2class {
154
  function s2_meta_box() {
155
  global $post_ID;
156
  $s2mail = get_post_meta($post_ID, 's2mail', true);
157
- echo "<input type=\"hidden\" name=\"s2meta_nonce\" id=\"s2meta_nonce\" value=\"" . wp_create_nonce(md5(plugin_basename(__FILE__))) . "\" />";
158
  echo __("Check here to disable sending of an email notification for this post/page", 'subscribe2');
159
  echo "&nbsp;&nbsp;<input type=\"checkbox\" name=\"s2_meta_field\" value=\"no\"";
160
  if ( $s2mail == 'no' || ($this->subscribe2_options['s2meta_default'] == "1" && $s2mail == "") ) {
@@ -167,7 +167,7 @@ class s2_admin extends s2class {
167
  Meta box form handler
168
  */
169
  function s2_meta_handler($post_id) {
170
- if ( !isset($_POST['s2meta_nonce']) || !wp_verify_nonce($_POST['s2meta_nonce'], md5(plugin_basename(__FILE__))) ) { return $post_id; }
171
 
172
  if ( 'page' == $_POST['post_type'] ) {
173
  if ( !current_user_can('edit_page', $post_id) ) { return $post_id; }
@@ -421,8 +421,12 @@ class s2_admin extends s2class {
421
 
422
  $args = array('fields' => array('ID', 'display_name'), 'role' => 'administrator');
423
  $wp_user_query = get_users( $args );
424
- foreach ($wp_user_query as $user) {
425
- $admins[] = $user;
 
 
 
 
426
  }
427
 
428
  if ( $inc_author ) {
@@ -527,7 +531,7 @@ class s2_admin extends s2class {
527
  if ( '' == $emails || '' == $cats ) { return false; }
528
  global $wpdb;
529
 
530
- $useremails = explode(",", $emails);
531
  $useremails = implode("', '", $useremails);
532
 
533
  $sql = "SELECT ID FROM $wpdb->users WHERE user_email IN ('$useremails')";
@@ -559,7 +563,7 @@ class s2_admin extends s2class {
559
  if ( '' == $emails || '' == $cats ) { return false; }
560
  global $wpdb;
561
 
562
- $useremails = explode(",", $emails);
563
  $useremails = "'" . implode("', '", $useremails) . "'";
564
 
565
  $sql = "SELECT ID FROM $wpdb->users WHERE user_email IN ($useremails)";
@@ -597,7 +601,7 @@ class s2_admin extends s2class {
597
  $ids = $wpdb->get_col("SELECT ID FROM $wpdb->users WHERE user_email IN ($emails)");
598
  $ids = implode(',', $ids);
599
  $sql = "UPDATE $wpdb->usermeta SET meta_value='{$format}' WHERE meta_key='" . $this->get_usermeta_keyname('s2_format') . "' AND user_id IN ($ids)";
600
- $wpdb->get_results("UPDATE $wpdb->usermeta SET meta_value='{$format}' WHERE meta_key='" . $this->get_usermeta_keyname('s2_format') . "' AND user_id IN ($ids)");
601
  } // end format_change()
602
 
603
  /**
21
 
22
  add_submenu_page('s2', __('Send Email', 'subscribe2'), __('Send Email', 'subscribe2'), apply_filters('s2_capability', "publish_posts", 'send'), 's2_posts', array(&$this, 'write_menu'));
23
 
24
+ $s2nonce = wp_hash('subscribe2');
25
  } // end admin_menu()
26
 
27
  /**
154
  function s2_meta_box() {
155
  global $post_ID;
156
  $s2mail = get_post_meta($post_ID, 's2mail', true);
157
+ echo "<input type=\"hidden\" name=\"s2meta_nonce\" id=\"s2meta_nonce\" value=\"" . wp_create_nonce(wp_hash(plugin_basename(__FILE__))) . "\" />";
158
  echo __("Check here to disable sending of an email notification for this post/page", 'subscribe2');
159
  echo "&nbsp;&nbsp;<input type=\"checkbox\" name=\"s2_meta_field\" value=\"no\"";
160
  if ( $s2mail == 'no' || ($this->subscribe2_options['s2meta_default'] == "1" && $s2mail == "") ) {
167
  Meta box form handler
168
  */
169
  function s2_meta_handler($post_id) {
170
+ if ( !isset($_POST['s2meta_nonce']) || !wp_verify_nonce($_POST['s2meta_nonce'], wp_hash(plugin_basename(__FILE__))) ) { return $post_id; }
171
 
172
  if ( 'page' == $_POST['post_type'] ) {
173
  if ( !current_user_can('edit_page', $post_id) ) { return $post_id; }
421
 
422
  $args = array('fields' => array('ID', 'display_name'), 'role' => 'administrator');
423
  $wp_user_query = get_users( $args );
424
+ if ( !empty($wp_user_query) ) {
425
+ foreach ($wp_user_query as $user) {
426
+ $admins[] = $user;
427
+ }
428
+ } else {
429
+ $admins = array();
430
  }
431
 
432
  if ( $inc_author ) {
531
  if ( '' == $emails || '' == $cats ) { return false; }
532
  global $wpdb;
533
 
534
+ $useremails = explode(",\r\n", $emails);
535
  $useremails = implode("', '", $useremails);
536
 
537
  $sql = "SELECT ID FROM $wpdb->users WHERE user_email IN ('$useremails')";
563
  if ( '' == $emails || '' == $cats ) { return false; }
564
  global $wpdb;
565
 
566
+ $useremails = explode(",\r\n", $emails);
567
  $useremails = "'" . implode("', '", $useremails) . "'";
568
 
569
  $sql = "SELECT ID FROM $wpdb->users WHERE user_email IN ($useremails)";
601
  $ids = $wpdb->get_col("SELECT ID FROM $wpdb->users WHERE user_email IN ($emails)");
602
  $ids = implode(',', $ids);
603
  $sql = "UPDATE $wpdb->usermeta SET meta_value='{$format}' WHERE meta_key='" . $this->get_usermeta_keyname('s2_format') . "' AND user_id IN ($ids)";
604
+ $wpdb->get_results($sql);
605
  } // end format_change()
606
 
607
  /**
classes/class-s2-core.php CHANGED
@@ -413,6 +413,7 @@ class s2class {
413
  Function to add UTM tracking details to links
414
  */
415
  function get_tracking_link($link) {
 
416
  if ( !empty($this->subscribe2_options['tracking']) ) {
417
  $delimiter = '?';
418
  if ( strpos($link, $delimiter) > 0 ) { $delimiter = '&'; }
@@ -512,6 +513,10 @@ class s2class {
512
  // if not, no sense doing anything else
513
  return $post;
514
  }
 
 
 
 
515
  }
516
 
517
  // we set these class variables so that we can avoid
@@ -668,7 +673,7 @@ class s2class {
668
 
669
  // generate the URL "?s2=ACTION+HASH+ID"
670
  // ACTION = 1 to subscribe, 0 to unsubscribe
671
- // HASH = md5 hash of email address
672
  // ID = user's ID in the subscribe2 table
673
  // use home instead of siteurl incase index.php is not in core wordpress directory
674
  $link = get_option('home') . "/?s2=";
@@ -678,7 +683,7 @@ class s2class {
678
  } elseif ( 'del' == $what ) {
679
  $link .= '0';
680
  }
681
- $link .= md5($this->email);
682
  $link .= $id;
683
 
684
  // sort the headers now so we have all substitute information
@@ -769,14 +774,14 @@ class s2class {
769
  if ( $confirm ) {
770
  $wpdb->get_results("UPDATE $this->public SET active='1', ip='$this->ip' WHERE CAST(email as binary)='$email'");
771
  } else {
772
- $wpdb->get_results("UPDATE $this->public SET date=NOW() WHERE CAST(email as binary)='$email'");
773
  }
774
  } else {
775
  if ( $confirm ) {
776
  global $current_user;
777
- $wpdb->get_results($wpdb->prepare("INSERT INTO $this->public (email, active, date, ip) VALUES (%s, %d, NOW(), %s)", $email, 1, $current_user->user_login));
778
  } else {
779
- $wpdb->get_results($wpdb->prepare("INSERT INTO $this->public (email, active, date, ip) VALUES (%s, %d, NOW(), %s)", $email, 0, $this->ip));
780
  }
781
  }
782
  } // end add()
@@ -1134,7 +1139,7 @@ class s2class {
1134
  }
1135
 
1136
  delete_user_meta($user_ID, $this->get_usermeta_keyname('s2_subscribed'));
1137
- delete_user_meta($user_ID, $this->get_usermeta_keyname('s2_autosub'));
1138
  }
1139
  } //end one_click_handler()
1140
 
@@ -1617,7 +1622,6 @@ class s2class {
1617
  $this->load_strings();
1618
 
1619
  // Is this WordPressMU or not?
1620
- $this->s2_mu = false;
1621
  if ( isset($wpmu_version) || strpos($wp_version, 'wordpress-mu') ) {
1622
  $this->s2_mu = true;
1623
  }
@@ -1724,7 +1728,7 @@ class s2class {
1724
  }
1725
 
1726
  // capture CSV export
1727
- if ( isset($_POST['s2_admin']) && $_POST['csv'] ) {
1728
  $date = date('Y-m-d');
1729
  header("Content-Description: File Transfer");
1730
  header("Content-type: application/octet-stream");
@@ -1774,11 +1778,16 @@ class s2class {
1774
  var $post_time = '';
1775
  var $myname = '';
1776
  var $myemail = '';
 
 
 
 
1777
  var $signup_dates = array();
1778
  var $filtered = 0;
1779
  var $preview_email = false;
1780
 
1781
  // state variables used to affect processing
 
1782
  var $action = '';
1783
  var $email = '';
1784
  var $message = '';
413
  Function to add UTM tracking details to links
414
  */
415
  function get_tracking_link($link) {
416
+ if ( empty($link) ) { return; }
417
  if ( !empty($this->subscribe2_options['tracking']) ) {
418
  $delimiter = '?';
419
  if ( strpos($link, $delimiter) > 0 ) { $delimiter = '&'; }
513
  // if not, no sense doing anything else
514
  return $post;
515
  }
516
+ } else {
517
+ // make sure we prime the taxonomy variable for preview posts
518
+ $s2_taxonomies = array('category');
519
+ $s2_taxonomies = apply_filters('s2_taxonomies', $s2_taxonomies);
520
  }
521
 
522
  // we set these class variables so that we can avoid
673
 
674
  // generate the URL "?s2=ACTION+HASH+ID"
675
  // ACTION = 1 to subscribe, 0 to unsubscribe
676
+ // HASH = wp_hash of email address
677
  // ID = user's ID in the subscribe2 table
678
  // use home instead of siteurl incase index.php is not in core wordpress directory
679
  $link = get_option('home') . "/?s2=";
683
  } elseif ( 'del' == $what ) {
684
  $link .= '0';
685
  }
686
+ $link .= wp_hash($this->email);
687
  $link .= $id;
688
 
689
  // sort the headers now so we have all substitute information
774
  if ( $confirm ) {
775
  $wpdb->get_results("UPDATE $this->public SET active='1', ip='$this->ip' WHERE CAST(email as binary)='$email'");
776
  } else {
777
+ $wpdb->get_results("UPDATE $this->public SET date=CURDATE() WHERE CAST(email as binary)='$email'");
778
  }
779
  } else {
780
  if ( $confirm ) {
781
  global $current_user;
782
+ $wpdb->get_results($wpdb->prepare("INSERT INTO $this->public (email, active, date, ip) VALUES (%s, %d, CURDATE(), %s)", $email, 1, $current_user->user_login));
783
  } else {
784
+ $wpdb->get_results($wpdb->prepare("INSERT INTO $this->public (email, active, date, ip) VALUES (%s, %d, CURDATE(), %s)", $email, 0, $this->ip));
785
  }
786
  }
787
  } // end add()
1139
  }
1140
 
1141
  delete_user_meta($user_ID, $this->get_usermeta_keyname('s2_subscribed'));
1142
+ update_user_meta($user_ID, $this->get_usermeta_keyname('s2_autosub'), 'no');
1143
  }
1144
  } //end one_click_handler()
1145
 
1622
  $this->load_strings();
1623
 
1624
  // Is this WordPressMU or not?
 
1625
  if ( isset($wpmu_version) || strpos($wp_version, 'wordpress-mu') ) {
1626
  $this->s2_mu = true;
1627
  }
1728
  }
1729
 
1730
  // capture CSV export
1731
+ if ( isset($_POST['s2_admin']) && isset($_POST['csv']) ) {
1732
  $date = date('Y-m-d');
1733
  header("Content-Description: File Transfer");
1734
  header("Content-type: application/octet-stream");
1778
  var $post_time = '';
1779
  var $myname = '';
1780
  var $myemail = '';
1781
+ var $authorname = '';
1782
+ var $post_cat_names = '';
1783
+ var $post_tag_names = '';
1784
+ var $post_count = '';
1785
  var $signup_dates = array();
1786
  var $filtered = 0;
1787
  var $preview_email = false;
1788
 
1789
  // state variables used to affect processing
1790
+ var $s2_mu = false;
1791
  var $action = '';
1792
  var $email = '';
1793
  var $message = '';
classes/class-s2-frontend.php CHANGED
@@ -20,14 +20,18 @@ class s2_frontend extends s2class {
20
  return $this->s2form;
21
  }
22
 
 
 
 
 
23
  // if a button is hidden, show only other
24
  if ( $hide == 'subscribe' ) {
25
- $this->input_form_action = "<input type=\"submit\" name=\"unsubscribe\" value=\"" . __('Unsubscribe', 'subscribe2') . "\" />";
26
  } elseif ( $hide == 'unsubscribe' ) {
27
- $this->input_form_action = "<input type=\"submit\" name=\"subscribe\" value=\"" . __('Subscribe', 'subscribe2') . "\" />";
28
  } else {
29
  // both form input actions
30
- $this->input_form_action = "<input type=\"submit\" name=\"subscribe\" value=\"" . __('Subscribe', 'subscribe2') . "\" />&nbsp;<input type=\"submit\" name=\"unsubscribe\" value=\"" . __('Unsubscribe', 'subscribe2') . "\" />";
31
  }
32
  // if ID is provided, get permalink
33
  if ( $id ) {
@@ -166,7 +170,7 @@ class s2_frontend extends s2class {
166
  $id = intval(substr($code, 33));
167
  if ( $id ) {
168
  $this->email = $this->sanitize_email($this->get_email($id));
169
- if ( !$this->email || $hash !== md5($this->email) ) {
170
  return $this->no_such_email;
171
  }
172
  } else {
20
  return $this->s2form;
21
  }
22
 
23
+ // Apply filters to button text
24
+ $unsubscribe_button_value = apply_filters('s2_unsubscribe_button', __('Unsubscribe', 'subscribe2'));
25
+ $subscribe_button_value = apply_filters('s2_subscribe_button', __('Subscribe', 'subscribe2'));
26
+
27
  // if a button is hidden, show only other
28
  if ( $hide == 'subscribe' ) {
29
+ $this->input_form_action = "<input type=\"submit\" name=\"unsubscribe\" value=\"" . esc_attr($unsubscribe_button_value) . "\" />";
30
  } elseif ( $hide == 'unsubscribe' ) {
31
+ $this->input_form_action = "<input type=\"submit\" name=\"subscribe\" value=\"" . esc_attr($subscribe_button_value) . "\" />";
32
  } else {
33
  // both form input actions
34
+ $this->input_form_action = "<input type=\"submit\" name=\"subscribe\" value=\"" . esc_attr($subscribe_button_value) . "\" />&nbsp;<input type=\"submit\" name=\"unsubscribe\" value=\"" . esc_attr($unsubscribe_button_value) . "\" />";
35
  }
36
  // if ID is provided, get permalink
37
  if ( $id ) {
170
  $id = intval(substr($code, 33));
171
  if ( $id ) {
172
  $this->email = $this->sanitize_email($this->get_email($id));
173
+ if ( !$this->email || $hash !== wp_hash($this->email) ) {
174
  return $this->no_such_email;
175
  }
176
  } else {
subscribe2.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Subscribe2
4
  Plugin URI: http://subscribe2.wordpress.com
5
  Description: Notifies an email list when new entries are posted.
6
- Version: 8.2
7
  Author: Matthew Robinson
8
  Author URI: http://subscribe2.wordpress.com
9
  Licence: GPL3
@@ -43,7 +43,7 @@ if ( version_compare($GLOBALS['wp_version'], '3.1', '<') || !function_exists( 'a
43
 
44
  // our version number. Don't touch this or any line below
45
  // unless you know exactly what you are doing
46
- define( 'S2VERSION', '8.2' );
47
  define( 'S2PATH', trailingslashit(dirname(__FILE__)) );
48
  define( 'S2DIR', trailingslashit(dirname(plugin_basename(__FILE__))) );
49
  define( 'S2URL', plugin_dir_url(dirname(__FILE__)) . S2DIR );
3
  Plugin Name: Subscribe2
4
  Plugin URI: http://subscribe2.wordpress.com
5
  Description: Notifies an email list when new entries are posted.
6
+ Version: 8.3
7
  Author: Matthew Robinson
8
  Author URI: http://subscribe2.wordpress.com
9
  Licence: GPL3
43
 
44
  // our version number. Don't touch this or any line below
45
  // unless you know exactly what you are doing
46
+ define( 'S2VERSION', '8.3' );
47
  define( 'S2PATH', trailingslashit(dirname(__FILE__)) );
48
  define( 'S2DIR', trailingslashit(dirname(plugin_basename(__FILE__))) );
49
  define( 'S2URL', plugin_dir_url(dirname(__FILE__)) . S2DIR );
subscribe2.pot CHANGED
@@ -8,7 +8,7 @@ msgid ""
8
  msgstr ""
9
  "Project-Id-Version: PACKAGE VERSION\n"
10
  "Report-Msgid-Bugs-To: \n"
11
- "POT-Creation-Date: 2012-04-18 20:21+0100\n"
12
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,27 +17,31 @@ msgstr ""
17
  "Content-Type: text/plain; charset=CHARSET\n"
18
  "Content-Transfer-Encoding: 8bit\n"
19
 
20
- #: admin/send_email.php:51
 
 
 
 
21
  msgid "Send an email to subscribers"
22
  msgstr ""
23
 
24
- #: admin/send_email.php:59
25
  msgid "A message from"
26
  msgstr ""
27
 
28
- #: admin/send_email.php:64
29
  msgid "Subject"
30
  msgstr ""
31
 
32
- #: admin/send_email.php:67
33
  msgid "Recipients:"
34
  msgstr ""
35
 
36
- #: admin/send_email.php:71
37
  msgid "Preview"
38
  msgstr ""
39
 
40
- #: admin/send_email.php:71
41
  msgid "Send"
42
  msgstr ""
43
 
@@ -115,7 +119,7 @@ msgstr ""
115
  #: admin/settings.php:265 admin/settings.php:415 admin/settings.php:420
116
  #: admin/settings.php:434 admin/settings.php:441 admin/settings.php:453
117
  #: admin/subscribers.php:339 admin/your_subscriptions.php:121
118
- #: admin/your_subscriptions.php:159
119
  msgid "Yes"
120
  msgstr ""
121
 
@@ -123,7 +127,7 @@ msgstr ""
123
  #: admin/settings.php:267 admin/settings.php:412 admin/settings.php:417
124
  #: admin/settings.php:422 admin/settings.php:436 admin/settings.php:443
125
  #: admin/settings.php:450 admin/settings.php:455 admin/subscribers.php:341
126
- #: admin/your_subscriptions.php:123 admin/your_subscriptions.php:163
127
  msgid "No"
128
  msgstr ""
129
 
@@ -518,14 +522,13 @@ msgid "Enter addresses, one per line or comma-separated"
518
  msgstr ""
519
 
520
  #: admin/subscribers.php:219 admin/subscribers.php:324
521
- #: admin/your_subscriptions.php:257 classes/class-s2-core.php:17
522
- #: classes/class-s2-frontend.php:27 classes/class-s2-frontend.php:30
523
  msgid "Subscribe"
524
  msgstr ""
525
 
526
  #: admin/subscribers.php:220 admin/subscribers.php:325
527
- #: admin/your_subscriptions.php:236 classes/class-s2-frontend.php:25
528
- #: classes/class-s2-frontend.php:30
529
  msgid "Unsubscribe"
530
  msgstr ""
531
 
@@ -637,59 +640,59 @@ msgstr ""
637
  msgid "Automatically subscribe me to newly created categories"
638
  msgstr ""
639
 
640
- #: admin/your_subscriptions.php:128
641
  msgid "One Click Subscription / Unsubscription"
642
  msgstr ""
643
 
644
- #: admin/your_subscriptions.php:129
645
  msgid "Subscribe to All"
646
  msgstr ""
647
 
648
- #: admin/your_subscriptions.php:130
649
  msgid "Unsubscribe from All"
650
  msgstr ""
651
 
652
- #: admin/your_subscriptions.php:139
653
  msgid "Unsubscribe me from this blog"
654
  msgstr ""
655
 
656
- #: admin/your_subscriptions.php:143
657
  msgid "Subscribe to all categories"
658
  msgstr ""
659
 
660
- #: admin/your_subscriptions.php:145
661
  msgid "Subscribed Categories on"
662
  msgstr ""
663
 
664
- #: admin/your_subscriptions.php:147
665
  msgid "Subscribed Categories"
666
  msgstr ""
667
 
668
- #: admin/your_subscriptions.php:153
669
  msgid "Receive periodic summaries of new posts?"
670
  msgstr ""
671
 
672
- #: admin/your_subscriptions.php:169
673
  msgid "Do not send notifications for post made by these authors"
674
  msgstr ""
675
 
676
- #: admin/your_subscriptions.php:175
677
  msgid "Update Preferences"
678
  msgstr ""
679
 
680
- #: admin/your_subscriptions.php:225
681
  msgid "Subscribed Blogs"
682
  msgstr ""
683
 
684
- #: admin/your_subscriptions.php:230 admin/your_subscriptions.php:251
685
  msgid "Viewing Settings Now"
686
  msgstr ""
687
 
688
- #: admin/your_subscriptions.php:234 admin/your_subscriptions.php:255
689
  msgid "View Settings"
690
  msgstr ""
691
 
692
- #: admin/your_subscriptions.php:246
693
  msgid "Subscribe to new blogs"
694
  msgstr ""
695
 
@@ -750,63 +753,63 @@ msgstr ""
750
  msgid "Registered Subscribers"
751
  msgstr ""
752
 
753
- #: classes/class-s2-admin.php:429
754
  msgid "Post Author"
755
  msgstr ""
756
 
757
- #: classes/class-s2-admin.php:453
758
  msgid ""
759
  "The WordPress cron functions may be disabled on this server. Digest "
760
  "notifications may not work."
761
  msgstr ""
762
 
763
- #: classes/class-s2-admin.php:457
764
  msgid "For each Post"
765
  msgstr ""
766
 
767
- #: classes/class-s2-admin.php:471
768
  msgid "Send Digest Notification at"
769
  msgstr ""
770
 
771
- #: classes/class-s2-admin.php:483
772
  msgid ""
773
  "This option will be ignored if the time selected is not in the future in "
774
  "relation to the current time"
775
  msgstr ""
776
 
777
- #: classes/class-s2-admin.php:486
778
  msgid "Current UTC time is"
779
  msgstr ""
780
 
781
- #: classes/class-s2-admin.php:488
782
  msgid "Current blog time is"
783
  msgstr ""
784
 
785
- #: classes/class-s2-admin.php:490
786
  msgid "Next email notification will be sent when your blog time is after"
787
  msgstr ""
788
 
789
- #: classes/class-s2-admin.php:493
790
  msgid "Attempt to resend the last Digest Notification email"
791
  msgstr ""
792
 
793
- #: classes/class-s2-admin.php:494
794
  msgid "Resend Digest"
795
  msgstr ""
796
 
797
- #: classes/class-s2-admin.php:717
798
  msgid "Email subscription"
799
  msgstr ""
800
 
801
- #: classes/class-s2-admin.php:719
802
  msgid "Subscribe / Unsubscribe"
803
  msgstr ""
804
 
805
- #: classes/class-s2-admin.php:720
806
  msgid "Receive notifications"
807
  msgstr ""
808
 
809
- #: classes/class-s2-admin.php:721
810
  msgid ""
811
  "Check if you want to receive email notification when new posts are published"
812
  msgstr ""
@@ -899,109 +902,109 @@ msgstr ""
899
  msgid "Options reset!"
900
  msgstr ""
901
 
902
- #: classes/class-s2-core.php:620
903
  msgid "Plain Text Excerpt Preview"
904
  msgstr ""
905
 
906
- #: classes/class-s2-core.php:622
907
  msgid "Plain Text Full Preview"
908
  msgstr ""
909
 
910
- #: classes/class-s2-core.php:624
911
  msgid "HTML Excerpt Preview"
912
  msgstr ""
913
 
914
- #: classes/class-s2-core.php:626
915
  msgid "HTML Full Preview"
916
  msgstr ""
917
 
918
- #: classes/class-s2-core.php:1205
919
  msgid "Registered User"
920
  msgstr ""
921
 
922
- #: classes/class-s2-core.php:1210
923
  msgid "Confirmed Public Subscriber"
924
  msgstr ""
925
 
926
- #: classes/class-s2-core.php:1212
927
  msgid "Unconfirmed Public Subscriber"
928
  msgstr ""
929
 
930
- #: classes/class-s2-core.php:1249
931
  msgid "Check here to Subscribe to email notifications for new posts"
932
  msgstr ""
933
 
934
- #: classes/class-s2-core.php:1255
935
  msgid ""
936
  "By registering with this blog you are also agreeing to receive email "
937
  "notifications for new posts but you can unsubscribe at anytime"
938
  msgstr ""
939
 
940
- #: classes/class-s2-core.php:1281
941
  msgid "Check here to Subscribe to notifications for new posts"
942
  msgstr ""
943
 
944
- #: classes/class-s2-core.php:1371
945
  msgid "Weekly"
946
  msgstr ""
947
 
948
- #: classes/class-s2-core.php:1494 classes/class-s2-core.php:1495
949
  msgid "Author"
950
  msgstr ""
951
 
952
- #: classes/class-s2-core.php:1503
953
  msgid "Posted on"
954
  msgstr ""
955
 
956
- #: classes/class-s2-core.php:1507 classes/class-s2-core.php:1508
957
  msgid "Posted in"
958
  msgstr ""
959
 
960
- #: classes/class-s2-core.php:1513 classes/class-s2-core.php:1514
961
  msgid "Tagged as"
962
  msgstr ""
963
 
964
- #: classes/class-s2-core.php:1578
965
  msgid "Digest Email"
966
  msgstr ""
967
 
968
- #: classes/class-s2-core.php:1588
969
  msgid "Digest Preview"
970
  msgstr ""
971
 
972
- #: classes/class-s2-frontend.php:42 classes/class-s2-frontend.php:44
973
  msgid "Your email:"
974
  msgstr ""
975
 
976
- #: classes/class-s2-frontend.php:44
977
  msgid "Enter email address..."
978
  msgstr ""
979
 
980
- #: classes/class-s2-frontend.php:149
981
  msgid "Subscription Confirmation"
982
  msgstr ""
983
 
984
- #: classes/class-s2-frontend.php:187
985
  msgid "New Subscription"
986
  msgstr ""
987
 
988
- #: classes/class-s2-frontend.php:189
989
  msgid "subscribed to email notifications!"
990
  msgstr ""
991
 
992
- #: classes/class-s2-frontend.php:210
993
  msgid "New Unsubscription"
994
  msgstr ""
995
 
996
- #: classes/class-s2-frontend.php:212
997
  msgid "unsubscribed from email notifications!"
998
  msgstr ""
999
 
1000
- #: classes/class-s2-frontend.php:238
1001
  msgid "[Un]Subscribe to Posts"
1002
  msgstr ""
1003
 
1004
- #: classes/class-s2-frontend.php:262 classes/class-s2-frontend.php:264
1005
  msgid "Subscribe to this blog"
1006
  msgstr ""
1007
 
8
  msgstr ""
9
  "Project-Id-Version: PACKAGE VERSION\n"
10
  "Report-Msgid-Bugs-To: \n"
11
+ "POT-Creation-Date: 2012-06-15 08:28+0100\n"
12
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
17
  "Content-Type: text/plain; charset=CHARSET\n"
18
  "Content-Transfer-Encoding: 8bit\n"
19
 
20
+ #: admin/send_email.php:42
21
+ msgid "Your email was empty"
22
+ msgstr ""
23
+
24
+ #: admin/send_email.php:53
25
  msgid "Send an email to subscribers"
26
  msgstr ""
27
 
28
+ #: admin/send_email.php:61
29
  msgid "A message from"
30
  msgstr ""
31
 
32
+ #: admin/send_email.php:66
33
  msgid "Subject"
34
  msgstr ""
35
 
36
+ #: admin/send_email.php:69
37
  msgid "Recipients:"
38
  msgstr ""
39
 
40
+ #: admin/send_email.php:73
41
  msgid "Preview"
42
  msgstr ""
43
 
44
+ #: admin/send_email.php:73
45
  msgid "Send"
46
  msgstr ""
47
 
119
  #: admin/settings.php:265 admin/settings.php:415 admin/settings.php:420
120
  #: admin/settings.php:434 admin/settings.php:441 admin/settings.php:453
121
  #: admin/subscribers.php:339 admin/your_subscriptions.php:121
122
+ #: admin/your_subscriptions.php:161
123
  msgid "Yes"
124
  msgstr ""
125
 
127
  #: admin/settings.php:267 admin/settings.php:412 admin/settings.php:417
128
  #: admin/settings.php:422 admin/settings.php:436 admin/settings.php:443
129
  #: admin/settings.php:450 admin/settings.php:455 admin/subscribers.php:341
130
+ #: admin/your_subscriptions.php:123 admin/your_subscriptions.php:165
131
  msgid "No"
132
  msgstr ""
133
 
522
  msgstr ""
523
 
524
  #: admin/subscribers.php:219 admin/subscribers.php:324
525
+ #: admin/your_subscriptions.php:259 classes/class-s2-core.php:17
526
+ #: classes/class-s2-frontend.php:25
527
  msgid "Subscribe"
528
  msgstr ""
529
 
530
  #: admin/subscribers.php:220 admin/subscribers.php:325
531
+ #: admin/your_subscriptions.php:238 classes/class-s2-frontend.php:24
 
532
  msgid "Unsubscribe"
533
  msgstr ""
534
 
640
  msgid "Automatically subscribe me to newly created categories"
641
  msgstr ""
642
 
643
+ #: admin/your_subscriptions.php:129
644
  msgid "One Click Subscription / Unsubscription"
645
  msgstr ""
646
 
647
+ #: admin/your_subscriptions.php:130
648
  msgid "Subscribe to All"
649
  msgstr ""
650
 
651
+ #: admin/your_subscriptions.php:131
652
  msgid "Unsubscribe from All"
653
  msgstr ""
654
 
655
+ #: admin/your_subscriptions.php:141
656
  msgid "Unsubscribe me from this blog"
657
  msgstr ""
658
 
659
+ #: admin/your_subscriptions.php:145
660
  msgid "Subscribe to all categories"
661
  msgstr ""
662
 
663
+ #: admin/your_subscriptions.php:147
664
  msgid "Subscribed Categories on"
665
  msgstr ""
666
 
667
+ #: admin/your_subscriptions.php:149
668
  msgid "Subscribed Categories"
669
  msgstr ""
670
 
671
+ #: admin/your_subscriptions.php:155
672
  msgid "Receive periodic summaries of new posts?"
673
  msgstr ""
674
 
675
+ #: admin/your_subscriptions.php:171
676
  msgid "Do not send notifications for post made by these authors"
677
  msgstr ""
678
 
679
+ #: admin/your_subscriptions.php:177
680
  msgid "Update Preferences"
681
  msgstr ""
682
 
683
+ #: admin/your_subscriptions.php:227
684
  msgid "Subscribed Blogs"
685
  msgstr ""
686
 
687
+ #: admin/your_subscriptions.php:232 admin/your_subscriptions.php:253
688
  msgid "Viewing Settings Now"
689
  msgstr ""
690
 
691
+ #: admin/your_subscriptions.php:236 admin/your_subscriptions.php:257
692
  msgid "View Settings"
693
  msgstr ""
694
 
695
+ #: admin/your_subscriptions.php:248
696
  msgid "Subscribe to new blogs"
697
  msgstr ""
698
 
753
  msgid "Registered Subscribers"
754
  msgstr ""
755
 
756
+ #: classes/class-s2-admin.php:433
757
  msgid "Post Author"
758
  msgstr ""
759
 
760
+ #: classes/class-s2-admin.php:457
761
  msgid ""
762
  "The WordPress cron functions may be disabled on this server. Digest "
763
  "notifications may not work."
764
  msgstr ""
765
 
766
+ #: classes/class-s2-admin.php:461
767
  msgid "For each Post"
768
  msgstr ""
769
 
770
+ #: classes/class-s2-admin.php:475
771
  msgid "Send Digest Notification at"
772
  msgstr ""
773
 
774
+ #: classes/class-s2-admin.php:487
775
  msgid ""
776
  "This option will be ignored if the time selected is not in the future in "
777
  "relation to the current time"
778
  msgstr ""
779
 
780
+ #: classes/class-s2-admin.php:490
781
  msgid "Current UTC time is"
782
  msgstr ""
783
 
784
+ #: classes/class-s2-admin.php:492
785
  msgid "Current blog time is"
786
  msgstr ""
787
 
788
+ #: classes/class-s2-admin.php:494
789
  msgid "Next email notification will be sent when your blog time is after"
790
  msgstr ""
791
 
792
+ #: classes/class-s2-admin.php:497
793
  msgid "Attempt to resend the last Digest Notification email"
794
  msgstr ""
795
 
796
+ #: classes/class-s2-admin.php:498
797
  msgid "Resend Digest"
798
  msgstr ""
799
 
800
+ #: classes/class-s2-admin.php:721
801
  msgid "Email subscription"
802
  msgstr ""
803
 
804
+ #: classes/class-s2-admin.php:723
805
  msgid "Subscribe / Unsubscribe"
806
  msgstr ""
807
 
808
+ #: classes/class-s2-admin.php:724
809
  msgid "Receive notifications"
810
  msgstr ""
811
 
812
+ #: classes/class-s2-admin.php:725
813
  msgid ""
814
  "Check if you want to receive email notification when new posts are published"
815
  msgstr ""
902
  msgid "Options reset!"
903
  msgstr ""
904
 
905
+ #: classes/class-s2-core.php:625
906
  msgid "Plain Text Excerpt Preview"
907
  msgstr ""
908
 
909
+ #: classes/class-s2-core.php:627
910
  msgid "Plain Text Full Preview"
911
  msgstr ""
912
 
913
+ #: classes/class-s2-core.php:629
914
  msgid "HTML Excerpt Preview"
915
  msgstr ""
916
 
917
+ #: classes/class-s2-core.php:631
918
  msgid "HTML Full Preview"
919
  msgstr ""
920
 
921
+ #: classes/class-s2-core.php:1210
922
  msgid "Registered User"
923
  msgstr ""
924
 
925
+ #: classes/class-s2-core.php:1215
926
  msgid "Confirmed Public Subscriber"
927
  msgstr ""
928
 
929
+ #: classes/class-s2-core.php:1217
930
  msgid "Unconfirmed Public Subscriber"
931
  msgstr ""
932
 
933
+ #: classes/class-s2-core.php:1254
934
  msgid "Check here to Subscribe to email notifications for new posts"
935
  msgstr ""
936
 
937
+ #: classes/class-s2-core.php:1260
938
  msgid ""
939
  "By registering with this blog you are also agreeing to receive email "
940
  "notifications for new posts but you can unsubscribe at anytime"
941
  msgstr ""
942
 
943
+ #: classes/class-s2-core.php:1286
944
  msgid "Check here to Subscribe to notifications for new posts"
945
  msgstr ""
946
 
947
+ #: classes/class-s2-core.php:1376
948
  msgid "Weekly"
949
  msgstr ""
950
 
951
+ #: classes/class-s2-core.php:1499 classes/class-s2-core.php:1500
952
  msgid "Author"
953
  msgstr ""
954
 
955
+ #: classes/class-s2-core.php:1508
956
  msgid "Posted on"
957
  msgstr ""
958
 
959
+ #: classes/class-s2-core.php:1512 classes/class-s2-core.php:1513
960
  msgid "Posted in"
961
  msgstr ""
962
 
963
+ #: classes/class-s2-core.php:1518 classes/class-s2-core.php:1519
964
  msgid "Tagged as"
965
  msgstr ""
966
 
967
+ #: classes/class-s2-core.php:1583
968
  msgid "Digest Email"
969
  msgstr ""
970
 
971
+ #: classes/class-s2-core.php:1593
972
  msgid "Digest Preview"
973
  msgstr ""
974
 
975
+ #: classes/class-s2-frontend.php:46 classes/class-s2-frontend.php:48
976
  msgid "Your email:"
977
  msgstr ""
978
 
979
+ #: classes/class-s2-frontend.php:48
980
  msgid "Enter email address..."
981
  msgstr ""
982
 
983
+ #: classes/class-s2-frontend.php:153
984
  msgid "Subscription Confirmation"
985
  msgstr ""
986
 
987
+ #: classes/class-s2-frontend.php:191
988
  msgid "New Subscription"
989
  msgstr ""
990
 
991
+ #: classes/class-s2-frontend.php:193
992
  msgid "subscribed to email notifications!"
993
  msgstr ""
994
 
995
+ #: classes/class-s2-frontend.php:214
996
  msgid "New Unsubscription"
997
  msgstr ""
998
 
999
+ #: classes/class-s2-frontend.php:216
1000
  msgid "unsubscribed from email notifications!"
1001
  msgstr ""
1002
 
1003
+ #: classes/class-s2-frontend.php:242
1004
  msgid "[Un]Subscribe to Posts"
1005
  msgstr ""
1006
 
1007
+ #: classes/class-s2-frontend.php:266 classes/class-s2-frontend.php:268
1008
  msgid "Subscribe to this blog"
1009
  msgstr ""
1010