Subscribe2 - Version 9.3

Version Description

Download this release

Release Info

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

Code changes from version 9.2 to 9.3

ChangeLog.txt CHANGED
@@ -1,3 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  = Version 9.2 by Matthew Robinson =
2
 
3
  * Fixed an error in the Registered User deletion code - thanks to Jay Wasack
1
+ = Version 9.3 by Matthew Robinson =
2
+
3
+ * Only add 'weekly' cron schedule interval if it does not already exist
4
+ * Add capability to add social media share buttons to HTML emails
5
+ * Update editor plugin for TinyMCE version 4 bundled with WordPress 3.9
6
+ * Rework Digest emails to collect posts based on transition status rather than time - see ticket https://plugins.trac.wordpress.org/ticket/2058
7
+ * Hide comment form subscription options if using Jetpack Comments and improve compatibility
8
+ * Fixed typos in the Help tab on the Settings page
9
+ * Improved domain name comparison for sender email check - props garypardun
10
+ * Tidied load_string() function and moved it to class-s2-frontend.php as all strings are not for user side only
11
+ * Ensure 's2_authors' keys exist on all sites and for all Registered Users as per illmasterc’s bug report
12
+ * Introduce 's2_mu_blog_list' filter to allow filter of blog list for WordPress Multisite installs - props careb
13
+ * Enable built-in widget by default - props by MadtownLems
14
+ * Use a better method for unendcoding HTML special characters for plain text emails - proposed by Dainius Kaupaitis
15
+ * Fixed a bug affecting handling of Registered users with email aliases (e.g. name+alias@gmail.com) - thanks to Alexandre (bosseal)
16
+ * Improved Character Set encoding of some email headers
17
+ * Improved user registration hooking for Multisite installs - thanks to dsl255
18
+ * Introduce a filter to allow filtering of the confirm link URL - props diddledan
19
+ * Introduce a confirmation box for Registered User deletion - props geoorgge1968
20
+ * Improved Bulk Management user experience by retaining submitted settings
21
+
22
  = Version 9.2 by Matthew Robinson =
23
 
24
  * Fixed an error in the Registered User deletion code - thanks to Jay Wasack
ReadMe.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: MattyRob, Skippy, RavanH, bhadaway
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=2387904
4
  Tags: posts, subscription, email, subscribe, notify, notification
5
  Requires at least: 3.3
6
- Tested up to: 3.8.1
7
- Stable tag: 9.2
8
  License: GPL3
9
 
10
  Sends a list of subscribers an email notification when new posts are published to your blog
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=2387904
4
  Tags: posts, subscription, email, subscribe, notify, notification
5
  Requires at least: 3.3
6
+ Tested up to: 3.9
7
+ Stable tag: 9.3
8
  License: GPL3
9
 
10
  Sends a list of subscribers an email notification when new posts are published to your blog
admin/send_email.php CHANGED
@@ -82,11 +82,11 @@ if ( isset($_POST['s2_admin']) && 'mail' == $_POST['s2_admin'] ) {
82
  if ( isset($_POST['preview']) ) {
83
  $message = "<p class=\"s2_message\">" . __('Preview message sent!', 'subscribe2') . "</p>";
84
  } else {
85
- $message = $this->mail_sent;
86
  }
87
  } else {
88
  global $phpmailer;
89
- $message = $this->mail_failed . $error_message . $phpmailer->ErrorInfo;
90
  }
91
  echo "<div id=\"message\" class=\"updated\"><strong><p>" . $message . "</p></strong></div>\r\n";
92
  }
82
  if ( isset($_POST['preview']) ) {
83
  $message = "<p class=\"s2_message\">" . __('Preview message sent!', 'subscribe2') . "</p>";
84
  } else {
85
+ $message = "<p class=\"s2_message\">" . __('Message sent!', 'subscribe2') . "</p>";
86
  }
87
  } else {
88
  global $phpmailer;
89
+ $message = "<p class=\"s2_error\">" . __('Message failed!', 'subscribe2') . "</p>" . $error_message . $phpmailer->ErrorInfo;
90
  }
91
  echo "<div id=\"message\" class=\"updated\"><strong><p>" . $message . "</p></strong></div>\r\n";
92
  }
admin/settings.php CHANGED
@@ -10,7 +10,7 @@ if ( isset( $_POST['s2_admin']) ) {
10
  check_admin_referer('subscribe2-options_subscribers' . $s2nonce);
11
  if ( isset($_POST['reset']) ) {
12
  $this->reset();
13
- echo "<div id=\"message\" class=\"updated fade\"><p><strong>$this->options_reset</strong></p></div>";
14
  } elseif ( isset($_POST['preview']) ) {
15
  global $user_email, $post;
16
  $this->preview_email = true;
@@ -85,7 +85,6 @@ if ( isset( $_POST['s2_admin']) ) {
85
  if ( $interval == 0 ) {
86
  // if we are on per-post emails remove last_cron entry
87
  unset($this->subscribe2_options['last_s2cron']);
88
- unset($this->subscribe2_options['previous_s2cron']);
89
  } else {
90
  // if we are using digest schedule the event and prime last_cron as now
91
  $time = time() + $interval;
@@ -100,9 +99,6 @@ if ( isset( $_POST['s2_admin']) ) {
100
  $timestamp += $interval;
101
  }
102
  wp_schedule_event($timestamp, $email_freq, 's2_digest_cron');
103
- if ( !isset($this->subscribe2_options['last_s2cron']) ) {
104
- $this->subscribe2_options['last_s2cron'] = current_time('mysql');
105
- }
106
  }
107
  }
108
  } else {
@@ -112,7 +108,7 @@ if ( isset( $_POST['s2_admin']) ) {
112
  }
113
  }
114
 
115
- echo "<div id=\"message\" class=\"updated fade\"><p><strong>$this->options_saved</strong></p></div>";
116
  update_option('subscribe2_options', $this->subscribe2_options);
117
  }
118
  }
@@ -121,7 +117,7 @@ if ( isset( $_POST['s2_admin']) ) {
121
  $sql = "SELECT ID FROM $wpdb->posts WHERE post_type='page' AND post_status='publish' LIMIT 1";
122
  $id = $wpdb->get_var($sql);
123
  if ( empty($id) ) {
124
- echo "<div id=\"page_message\" class=\"error\"><p class=\"s2_error\"><strong>$this->no_page</strong></p></div>";
125
  }
126
 
127
  if ( $this->subscribe2_options['email_freq'] != 'never' ) {
@@ -149,8 +145,8 @@ if ( $this->subscribe2_options['sender'] == 'blogname' ) {
149
  $sender = $userdata->user_email;
150
  }
151
  list($user, $domain) = explode('@', $sender, 2);
152
- if ( !strstr($_SERVER['SERVER_NAME'], $domain) && $this->subscribe2_options['sender'] != 'author' ) {
153
- echo "<div id=\"sender_message\" class=\"error\"><p class=\"s2_error\"><strong>" . __('You appear to be sending notifications from an email address from a different domain name to your blog, this may result in failed emails', 'subscribe2') . "</strong></p></div>";
154
  }
155
 
156
  // detect or define which tab we are in
@@ -386,18 +382,21 @@ switch ($current_tab) {
386
  echo __('Yes', 'subscribe2') . "</label>&nbsp;&nbsp;";
387
  echo "<label><input type=\"radio\" name=\"autosub_def\" value=\"no\"" . checked($this->subscribe2_options['autosub_def'], 'no', false) . " /> ";
388
  echo __('No', 'subscribe2') . "</label><br /><br />";
389
- echo __('Display checkbox to allow subscriptions from the comment form', 'subscribe2') . ": <br />\r\n";
390
- echo "<label><input type=\"radio\" name=\"comment_subs\" value=\"before\"" . checked($this->subscribe2_options['comment_subs'], 'before', false) . " /> ";
391
- echo __('Before the Comment Submit button', 'subscribe2') . "</label>&nbsp;&nbsp;";
392
- echo "<label><input type=\"radio\" name=\"comment_subs\" value=\"after\"" . checked($this->subscribe2_options['comment_subs'], 'after', false) . " /> ";
393
- echo __('After the Comment Submit button', 'subscribe2') . "</label>&nbsp;&nbsp;";
394
- echo "<label><input type=\"radio\" name=\"comment_subs\" value=\"no\"" . checked($this->subscribe2_options['comment_subs'], 'no', false) . " /> ";
395
- echo __('No', 'subscribe2') . "</label><br /><br />";
396
- echo __('Comment form checkbox is checked by default', 'subscribe2') . ": <br />\r\n";
397
- echo "<label><input type=\"radio\" name=\"comment_def\" value=\"yes\"" . checked($this->subscribe2_options['comment_def'], 'yes', false) . " /> ";
398
- echo __('Yes', 'subscribe2') . "</label>&nbsp;&nbsp;";
399
- echo "<label><input type=\"radio\" name=\"comment_def\" value=\"no\"" . checked($this->subscribe2_options['comment_def'], 'no', false) . " /> ";
400
- echo __('No', 'subscribe2') . "</label><br /><br />\r\n";
 
 
 
401
  echo __('Show one-click subscription on profile page', 'subscribe2') . ":<br />\r\n";
402
  echo "<label><input type=\"radio\" name=\"one_click_profile\" value=\"yes\"" . checked($this->subscribe2_options['one_click_profile'], 'yes', false) . " /> ";
403
  echo __('Yes', 'subscribe2') . "</label>&nbsp;&nbsp;";
10
  check_admin_referer('subscribe2-options_subscribers' . $s2nonce);
11
  if ( isset($_POST['reset']) ) {
12
  $this->reset();
13
+ echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Options reset!', 'subscribe2') . "</strong></p></div>";
14
  } elseif ( isset($_POST['preview']) ) {
15
  global $user_email, $post;
16
  $this->preview_email = true;
85
  if ( $interval == 0 ) {
86
  // if we are on per-post emails remove last_cron entry
87
  unset($this->subscribe2_options['last_s2cron']);
 
88
  } else {
89
  // if we are using digest schedule the event and prime last_cron as now
90
  $time = time() + $interval;
99
  $timestamp += $interval;
100
  }
101
  wp_schedule_event($timestamp, $email_freq, 's2_digest_cron');
 
 
 
102
  }
103
  }
104
  } else {
108
  }
109
  }
110
 
111
+ echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Options saved!', 'subscribe2') . "</strong></p></div>";
112
  update_option('subscribe2_options', $this->subscribe2_options);
113
  }
114
  }
117
  $sql = "SELECT ID FROM $wpdb->posts WHERE post_type='page' AND post_status='publish' LIMIT 1";
118
  $id = $wpdb->get_var($sql);
119
  if ( empty($id) ) {
120
+ echo "<div id=\"page_message\" class=\"error\"><p class=\"s2_error\"><strong>" . __('You must create a WordPress page for this plugin to work correctly.', 'subscribe2') . "</strong></p></div>";
121
  }
122
 
123
  if ( $this->subscribe2_options['email_freq'] != 'never' ) {
145
  $sender = $userdata->user_email;
146
  }
147
  list($user, $domain) = explode('@', $sender, 2);
148
+ if ( !stristr($_SERVER['SERVER_NAME'], $domain) && $this->subscribe2_options['sender'] != 'author' ) {
149
+ echo "<div id=\"sender_message\" class=\"error\"><p class=\"s2_error\"><strong>" . sprintf(__('You appear to be sending notifications from %1$s, which has a different domain name than your blog server %2$s. This may result in failed emails.', 'subscribe2'), $sender, $_SERVER['SERVER_NAME']) . "</strong></p></div>";
150
  }
151
 
152
  // detect or define which tab we are in
382
  echo __('Yes', 'subscribe2') . "</label>&nbsp;&nbsp;";
383
  echo "<label><input type=\"radio\" name=\"autosub_def\" value=\"no\"" . checked($this->subscribe2_options['autosub_def'], 'no', false) . " /> ";
384
  echo __('No', 'subscribe2') . "</label><br /><br />";
385
+ // Hide these options if using Jetpack Comments
386
+ if ( !class_exists('Jetpack_Comments') ) {
387
+ echo __('Display checkbox to allow subscriptions from the comment form', 'subscribe2') . ": <br />\r\n";
388
+ echo "<label><input type=\"radio\" name=\"comment_subs\" value=\"before\"" . checked($this->subscribe2_options['comment_subs'], 'before', false) . " /> ";
389
+ echo __('Before the Comment Submit button', 'subscribe2') . "</label>&nbsp;&nbsp;";
390
+ echo "<label><input type=\"radio\" name=\"comment_subs\" value=\"after\"" . checked($this->subscribe2_options['comment_subs'], 'after', false) . " /> ";
391
+ echo __('After the Comment Submit button', 'subscribe2') . "</label>&nbsp;&nbsp;";
392
+ echo "<label><input type=\"radio\" name=\"comment_subs\" value=\"no\"" . checked($this->subscribe2_options['comment_subs'], 'no', false) . " /> ";
393
+ echo __('No', 'subscribe2') . "</label><br /><br />";
394
+ echo __('Comment form checkbox is checked by default', 'subscribe2') . ": <br />\r\n";
395
+ echo "<label><input type=\"radio\" name=\"comment_def\" value=\"yes\"" . checked($this->subscribe2_options['comment_def'], 'yes', false) . " /> ";
396
+ echo __('Yes', 'subscribe2') . "</label>&nbsp;&nbsp;";
397
+ echo "<label><input type=\"radio\" name=\"comment_def\" value=\"no\"" . checked($this->subscribe2_options['comment_def'], 'no', false) . " /> ";
398
+ echo __('No', 'subscribe2') . "</label><br /><br />\r\n";
399
+ }
400
  echo __('Show one-click subscription on profile page', 'subscribe2') . ":<br />\r\n";
401
  echo "<label><input type=\"radio\" name=\"one_click_profile\" value=\"yes\"" . checked($this->subscribe2_options['one_click_profile'], 'yes', false) . " /> ";
402
  echo __('Yes', 'subscribe2') . "</label>&nbsp;&nbsp;";
admin/subscribers.php CHANGED
@@ -265,21 +265,21 @@ if ( $current_tab === 'registered' ) {
265
  echo "<br />" . __('Action to perform', 'subscribe2') . ":\r\n";
266
  echo "<label><input type=\"radio\" name=\"manage\" value=\"subscribe\" checked=\"checked\" /> " . __('Subscribe', 'subscribe2') . "</label>&nbsp;&nbsp;\r\n";
267
  echo "<label><input type=\"radio\" name=\"manage\" value=\"unsubscribe\" /> " . __('Unsubscribe', 'subscribe2') . "</label><br /><br />\r\n";
268
- $this->display_category_form();
269
  echo "<p class=\"submit\"><input type=\"submit\" class=\"button-primary\" name=\"sub_categories\" value=\"" . __('Bulk Update Categories', 'subscribe2') . "\" /></p>";
270
  echo "<br />" . __('Send email as', 'subscribe2') . ":\r\n";
271
- echo "<label><input type=\"radio\" name=\"format\" value=\"html\" /> " . __('HTML - Full', 'subscribe2') . "</label>&nbsp;&nbsp;\r\n";
272
- echo "<label><input type=\"radio\" name=\"format\" value=\"html_excerpt\" /> " . __('HTML - Excerpt', 'subscribe2') . "</label>&nbsp;&nbsp;\r\n";
273
- echo "<label><input type=\"radio\" name=\"format\" value=\"post\" /> " . __('Plain Text - Full', 'subscribe2') . "</label>&nbsp;&nbsp;\r\n";
274
- echo "<label><input type=\"radio\" name=\"format\" value=\"excerpt\" checked=\"checked\" /> " . __('Plain Text - Excerpt', 'subscribe2') . "</label>\r\n";
275
  echo "<p class=\"submit\"><input type=\"submit\" class=\"button-primary\" name=\"sub_format\" value=\"" . __('Bulk Update Format', 'subscribe2') . "\" /></p>";
276
  } else {
277
  echo __('Preferences for Registered Users selected in the filter above can be changed using this section.', 'subscribe2') . "<br />\r\n";
278
  echo "<strong><em style=\"color: red\">" . __('Consider User Privacy as changes cannot be undone', 'subscribe2') . "</em></strong><br />\r\n";
279
- echo "<br />" . __('Subscribe Selected Users to recieve a periodic digest notification', 'subscribe2') . ":\r\n";
280
- echo "<label><input type=\"radio\" name=\"sub_category\" value=\"digest\" checked=\"checked\" /> ";
281
  echo __('Yes', 'subscribe2') . "</label>&nbsp;&nbsp;\r\n";
282
- echo "<label><input type=\"radio\" name=\"sub_category\" value=\"-1\" /> ";
283
  echo __('No', 'subscribe2') . "</label>";
284
  echo "<p class=\"submit\"><input type=\"submit\" class=\"button-primary\" name=\"sub_digest\" value=\"" . __('Bulk Update Digest Subscription', 'subscribe2') . "\" /></p>";
285
  }
@@ -287,6 +287,21 @@ if ( $current_tab === 'registered' ) {
287
  }
288
  echo "</form></div>\r\n";
289
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
290
  include(ABSPATH . 'wp-admin/admin-footer.php');
291
  // just to be sure
292
  die;
265
  echo "<br />" . __('Action to perform', 'subscribe2') . ":\r\n";
266
  echo "<label><input type=\"radio\" name=\"manage\" value=\"subscribe\" checked=\"checked\" /> " . __('Subscribe', 'subscribe2') . "</label>&nbsp;&nbsp;\r\n";
267
  echo "<label><input type=\"radio\" name=\"manage\" value=\"unsubscribe\" /> " . __('Unsubscribe', 'subscribe2') . "</label><br /><br />\r\n";
268
+ $this->display_category_form($_POST['category']);
269
  echo "<p class=\"submit\"><input type=\"submit\" class=\"button-primary\" name=\"sub_categories\" value=\"" . __('Bulk Update Categories', 'subscribe2') . "\" /></p>";
270
  echo "<br />" . __('Send email as', 'subscribe2') . ":\r\n";
271
+ echo "<label><input type=\"radio\" name=\"format\" value=\"html\"" . checked($_POST['format'], 'html', false) . " /> " . __('HTML - Full', 'subscribe2') . "</label>&nbsp;&nbsp;\r\n";
272
+ echo "<label><input type=\"radio\" name=\"format\" value=\"html_excerpt\"" . checked($_POST['format'], 'html_excerpt', false) . " /> " . __('HTML - Excerpt', 'subscribe2') . "</label>&nbsp;&nbsp;\r\n";
273
+ echo "<label><input type=\"radio\" name=\"format\" value=\"post\"" . checked($_POST['format'], 'post', false) . " /> " . __('Plain Text - Full', 'subscribe2') . "</label>&nbsp;&nbsp;\r\n";
274
+ echo "<label><input type=\"radio\" name=\"format\" value=\"excerpt\"" . checked($_POST['format'], 'excerpt', false) . "/> " . __('Plain Text - Excerpt', 'subscribe2') . "</label>\r\n";
275
  echo "<p class=\"submit\"><input type=\"submit\" class=\"button-primary\" name=\"sub_format\" value=\"" . __('Bulk Update Format', 'subscribe2') . "\" /></p>";
276
  } else {
277
  echo __('Preferences for Registered Users selected in the filter above can be changed using this section.', 'subscribe2') . "<br />\r\n";
278
  echo "<strong><em style=\"color: red\">" . __('Consider User Privacy as changes cannot be undone', 'subscribe2') . "</em></strong><br />\r\n";
279
+ echo "<br />" . __('Subscribe Selected Users to receive a periodic digest notification', 'subscribe2') . ":\r\n";
280
+ echo "<label><input type=\"radio\" name=\"sub_category\" value=\"digest\"" . checked($_POST['sub_category'], 'digest', false) . " /> ";
281
  echo __('Yes', 'subscribe2') . "</label>&nbsp;&nbsp;\r\n";
282
+ echo "<label><input type=\"radio\" name=\"sub_category\" value=\"-1\"" . checked($_POST['sub_category'], '-1', false) . " /> ";
283
  echo __('No', 'subscribe2') . "</label>";
284
  echo "<p class=\"submit\"><input type=\"submit\" class=\"button-primary\" name=\"sub_digest\" value=\"" . __('Bulk Update Digest Subscription', 'subscribe2') . "\" /></p>";
285
  }
287
  }
288
  echo "</form></div>\r\n";
289
 
290
+ if ( $current_tab === 'registered' ) {
291
+ echo "<script type=\"text/javascript\">\r\n";
292
+ echo "function s2_delete_check() {\r\n";
293
+ echo " var action1 = document.getElementById('doaction');\r\n";
294
+ echo " action1.onclick = submitHandler;\r\n";
295
+ echo " var action2 = document.getElementById('doaction2');\r\n";
296
+ echo " action2.onclick = submitHandler;\r\n";
297
+ echo " function submitHandler() {\r\n";
298
+ echo " var agree=confirm('" . __('You are about to delete user account(s). Are you sure?', 'subscribe2') . "'); if (agree) return true; else return false;\r\n";
299
+ echo " }\r\n";
300
+ echo "}\r\n";
301
+ echo "window.onload=s2_delete_check;\r\n";
302
+ echo "</script>\r\n";
303
+ }
304
+
305
  include(ABSPATH . 'wp-admin/admin-footer.php');
306
  // just to be sure
307
  die;
admin/your_subscriptions.php CHANGED
@@ -7,7 +7,7 @@ global $user_ID, $s2nonce;
7
 
8
  if ( isset($_GET['email']) ) {
9
  global $wpdb;
10
- $user_ID = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->users WHERE user_email = %s", urldecode($_GET['email'])));
11
  } else {
12
  get_currentuserinfo();
13
  }
7
 
8
  if ( isset($_GET['email']) ) {
9
  global $wpdb;
10
+ $user_ID = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->users WHERE user_email = %s", $_GET['email']));
11
  } else {
12
  get_currentuserinfo();
13
  }
classes/class-s2-admin.php CHANGED
@@ -88,7 +88,7 @@ class s2_admin extends s2class {
88
  'id' => 's2-settings-help3',
89
  'title' => __('Templates', 'subscribe2'),
90
  'content' => '<p>' . __('This section allows you to customise the content of your notification emails.', 'subscribe2') .
91
- '</p><p>'. __('There are special {KEYWORDS} that are used by Subscribe2 to place content into the final email. The template also accept regular text and HTML as desired in the final emaisl.', 'subscribe2') .
92
  '</p><p>'. __('The {KEYWORDS} are listed on the right of the templates, note that some are for per post emails only and some are for digest emails only. Make sure the correct keywords are used based upon the Email Settings.', 'subscribe2') . '</p>'
93
  ));
94
  $screen->add_help_tab(array(
@@ -204,8 +204,8 @@ class s2_admin extends s2class {
204
  if ( !current_user_can('edit_posts') && !current_user_can('edit_pages') ) { return; }
205
  if ( 'true' == get_user_option('rich_editing') ) {
206
  // Hook into the rich text editor
207
- add_filter('mce_external_plugins', array(&$this, 'mce3_plugin'));
208
- add_filter('mce_buttons', array(&$this, 'mce3_button'));
209
  } else {
210
  wp_enqueue_script('subscribe2_button', S2URL . 'include/s2_button' . $this->script_debug . '.js', array('quicktags'), '2.0' );
211
  }
@@ -214,16 +214,20 @@ class s2_admin extends s2class {
214
  /**
215
  Add buttons for Rich Text Editor
216
  */
217
- function mce3_plugin($arr) {
218
- $path = S2URL . 'tinymce3/editor_plugin' . $this->script_debug . '.js';
 
 
 
 
219
  $arr['subscribe2'] = $path;
220
  return $arr;
221
- } // end mce3_plugin()
222
 
223
- function mce3_button($arr) {
224
  $arr[] = 'subscribe2';
225
  return $arr;
226
- } // end mce3_button()
227
 
228
  /* ===== widget functions ===== */
229
  /**
@@ -705,7 +709,7 @@ class s2_admin extends s2class {
705
  echo "</select>\r\n";
706
  echo "<a href=\"#\" onclick=\"s2_cron_update('cron'); return false;\">". __('Update', 'subscribe2') . "</a>\n";
707
  echo "<a href=\"#\" onclick=\"s2_cron_revert('cron'); return false;\">". __('Revert', 'subscribe2') . "</a></span>\n";
708
- if ( !empty($this->subscribe2_options['previous_s2cron']) ) {
709
  echo "<p>" . __('Attempt to resend the last Digest Notification email', 'subscribe2') . ": ";
710
  echo "<input type=\"submit\" class=\"button-secondary\" name=\"resend\" value=\"" . __('Resend Digest', 'subscribe2') . "\" /></p>\r\n";
711
  }
88
  'id' => 's2-settings-help3',
89
  'title' => __('Templates', 'subscribe2'),
90
  'content' => '<p>' . __('This section allows you to customise the content of your notification emails.', 'subscribe2') .
91
+ '</p><p>'. __('There are special {KEYWORDS} that are used by Subscribe2 to place content into the final email. The template also accepts regular text and HTML as desired in the final emails.', 'subscribe2') .
92
  '</p><p>'. __('The {KEYWORDS} are listed on the right of the templates, note that some are for per post emails only and some are for digest emails only. Make sure the correct keywords are used based upon the Email Settings.', 'subscribe2') . '</p>'
93
  ));
94
  $screen->add_help_tab(array(
204
  if ( !current_user_can('edit_posts') && !current_user_can('edit_pages') ) { return; }
205
  if ( 'true' == get_user_option('rich_editing') ) {
206
  // Hook into the rich text editor
207
+ add_filter('mce_external_plugins', array(&$this, 'mce_plugin'));
208
+ add_filter('mce_buttons', array(&$this, 'mce_button'));
209
  } else {
210
  wp_enqueue_script('subscribe2_button', S2URL . 'include/s2_button' . $this->script_debug . '.js', array('quicktags'), '2.0' );
211
  }
214
  /**
215
  Add buttons for Rich Text Editor
216
  */
217
+ function mce_plugin($arr) {
218
+ if ( version_compare($this->wp_release, '3.9', '<') ) {
219
+ $path = S2URL . 'tinymce/editor_plugin3' . $this->script_debug . '.js';
220
+ } else {
221
+ $path = S2URL . 'tinymce/editor_plugin4' . $this->script_debug . '.js';
222
+ }
223
  $arr['subscribe2'] = $path;
224
  return $arr;
225
+ } // end mce_plugin()
226
 
227
+ function mce_button($arr) {
228
  $arr[] = 'subscribe2';
229
  return $arr;
230
+ } // end mce_button()
231
 
232
  /* ===== widget functions ===== */
233
  /**
709
  echo "</select>\r\n";
710
  echo "<a href=\"#\" onclick=\"s2_cron_update('cron'); return false;\">". __('Update', 'subscribe2') . "</a>\n";
711
  echo "<a href=\"#\" onclick=\"s2_cron_revert('cron'); return false;\">". __('Revert', 'subscribe2') . "</a></span>\n";
712
+ if ( !empty($this->subscribe2_options['last_s2cron']) ) {
713
  echo "<p>" . __('Attempt to resend the last Digest Notification email', 'subscribe2') . ": ";
714
  echo "<input type=\"submit\" class=\"button-secondary\" name=\"resend\" value=\"" . __('Resend Digest', 'subscribe2') . "\" /></p>\r\n";
715
  }
classes/class-s2-core.php CHANGED
@@ -11,58 +11,6 @@ class s2class {
11
  load_textdomain('subscribe2', $mofile);
12
  } // end load_translations()
13
 
14
- /**
15
- Load all our strings
16
- */
17
- function load_strings() {
18
- // adjust the output of Subscribe2 here
19
-
20
- $this->please_log_in = "<p class=\"s2_message\">" . sprintf(__('To manage your subscription options please <a href="%1$s">login.</a>', 'subscribe2'), get_option('siteurl') . '/wp-login.php') . "</p>";
21
-
22
- $this->profile = "<p class=\"s2_message\">" . sprintf(__('You may manage your subscription options from your <a href="%1$s">profile</a>', 'subscribe2'), get_option('siteurl') . "/wp-admin/admin.php?page=s2") . "</p>";
23
- if ( $this->s2_mu === true ) {
24
- global $blog_id;
25
- $user_ID = get_current_user_id();
26
- if ( !is_user_member_of_blog($user_ID, $blog_id) ) {
27
- // if we are on multisite and the user is not a member of this blog change the link
28
- $this->profile = "<p class=\"s2_message\">" . sprintf(__('<a href="%1$s">Subscribe</a> to email notifications when this blog posts new content.', 'subscribe2'), get_option('siteurl') . "/wp-admin/?s2mu_subscribe=" . $blog_id) . "</p>";
29
- }
30
- }
31
-
32
- $this->confirmation_sent = "<p class=\"s2_message\">" . __('A confirmation message is on its way!', 'subscribe2') . "</p>";
33
-
34
- $this->already_subscribed = "<p class=\"s2_error\">" . __('That email address is already subscribed.', 'subscribe2') . "</p>";
35
-
36
- $this->not_subscribed = "<p class=\"s2_error\">" . __('That email address is not subscribed.', 'subscribe2') . "</p>";
37
-
38
- $this->not_an_email = "<p class=\"s2_error\">" . __('Sorry, but that does not look like an email address to me.', 'subscribe2') . "</p>";
39
-
40
- $this->barred_domain = "<p class=\"s2_error\">" . __('Sorry, email addresses at that domain are currently barred due to spam, please use an alternative email address.', 'subscribe2') . "</p>";
41
-
42
- $this->error = "<p class=\"s2_error\">" . __('Sorry, there seems to be an error on the server. Please try again later.', 'subscribe2') . "</p>";
43
-
44
- $this->no_page = __('You must create a WordPress page for this plugin to work correctly.', 'subscribe2');
45
-
46
- $this->mail_sent = "<p class=\"s2_message\">" . __('Message sent!', 'subscribe2') . "</p>";
47
-
48
- $this->mail_failed = "<p class=\"s2_error\">" . __('Message failed!', 'subscribe2') . "</p>";
49
-
50
- // confirmation messages
51
- $this->no_such_email = "<p class=\"s2_error\">" . __('No such email address is registered.', 'subscribe2') . "</p>";
52
-
53
- $this->added = "<p class=\"s2_message\">" . __('You have successfully subscribed!', 'subscribe2') . "</p>";
54
-
55
- $this->deleted = "<p class=\"s2_message\">" . __('You have successfully unsubscribed.', 'subscribe2') . "</p>";
56
-
57
- $this->subscribe = __('subscribe', 'subscribe2'); //ACTION replacement in subscribing confirmation email
58
-
59
- $this->unsubscribe = __('unsubscribe', 'subscribe2'); //ACTION replacement in unsubscribing in confirmation email
60
-
61
- // menu strings
62
- $this->options_saved = __('Options saved!', 'subscribe2');
63
- $this->options_reset = __('Options reset!', 'subscribe2');
64
- } // end load_strings()
65
-
66
  /* ===== Install, upgrade, reset ===== */
67
  /**
68
  Install our table
@@ -174,6 +122,10 @@ class s2class {
174
  $this->subscribe2_options['version'] = '8.8';
175
  update_option('subscribe2_options', $this->subscribe2_options);
176
  }
 
 
 
 
177
 
178
  $this->subscribe2_options['version'] = S2VERSION;
179
  update_option('subscribe2_options', $this->subscribe2_options);
@@ -227,7 +179,7 @@ class s2class {
227
  $string = str_replace("{TAGS}", $this->post_tag_names, $string);
228
  $string = str_replace("{COUNT}", $this->post_count, $string);
229
 
230
- return $string;
231
  } // end substitute()
232
 
233
  /**
@@ -249,8 +201,7 @@ class s2class {
249
  }
250
  } else {
251
  $headers = $this->headers('text', $attachments);
252
- $message = preg_replace('|&[^a][^m][^p].{0,3};|', '', $message);
253
- $message = preg_replace('|&amp;|', '&', $message);
254
  $message = wordwrap(strip_tags($message), $this->word_wrap, "\n");
255
  $mailtext = apply_filters('s2_plain_email', $message);
256
  }
@@ -352,9 +303,10 @@ class s2class {
352
  }
353
  }
354
 
 
355
  if ( function_exists('mb_encode_mimeheader') ) {
356
- $header['From'] = mb_encode_mimeheader($this->myname, 'UTF-8', 'Q') . " <" . $this->myemail . ">";
357
- $header['Reply-To'] = mb_encode_mimeheader($this->myname, 'UTF-8', 'Q') . " <" . $this->myemail . ">";
358
  } else {
359
  $header['From'] = $this->myname. " <" . $this->myemail . ">";
360
  $header['Reply-To'] = $this->myname . " <" . $this->myemail . ">";
@@ -363,9 +315,9 @@ class s2class {
363
  $header['Precedence'] = "list\nList-Id: " . html_entity_decode(get_option('blogname'), ENT_QUOTES) . "";
364
  if ( empty($attachments) && $type == 'html' ) {
365
  // To send HTML mail, the Content-Type header must be set
366
- $header['Content-Type'] = get_option('html_type') . "; charset=\"". get_option('blog_charset') . "\"";
367
  } elseif ( empty($attachments) && $type == 'text' ) {
368
- $header['Content-Type'] = "text/plain; charset=\"". get_option('blog_charset') . "\"";
369
  }
370
 
371
  // apply header filter to allow on-the-fly amendments
@@ -617,6 +569,14 @@ class s2class {
617
  }
618
  }
619
 
 
 
 
 
 
 
 
 
620
  // remove excess white space from with $excerpt and $plaintext
621
  $excerpt = preg_replace('|[ ]+|', ' ', $excerpt);
622
  $plaintext = preg_replace('|[ ]+|', ' ', $plaintext);
@@ -667,6 +627,23 @@ class s2class {
667
  }
668
  } // end publish()
669
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
670
  /**
671
  Send confirmation email to a public subscriber
672
  */
@@ -683,7 +660,7 @@ class s2class {
683
  // HASH = wp_hash of email address
684
  // ID = user's ID in the subscribe2 table
685
  // use home instead of siteurl incase index.php is not in core wordpress directory
686
- $link = get_option('home') . "/?s2=";
687
 
688
  if ( 'add' == $what ) {
689
  $link .= '1';
@@ -1124,7 +1101,7 @@ class s2class {
1124
  $all_cats = array();
1125
  $s2_taxonomies = apply_filters('s2_taxonomies', array('category'));
1126
 
1127
- foreach( $s2_taxonomies as $taxonomy ) {
1128
  if ( taxonomy_exists($taxonomy) ) {
1129
  $all_cats = array_merge($all_cats, get_categories(array('hide_empty' => false, 'orderby' => $orderby, 'taxonomy' => $taxonomy)));
1130
  }
@@ -1307,13 +1284,39 @@ class s2class {
1307
  Add a weekly event to cron
1308
  */
1309
  function add_weekly_sched($scheds) {
1310
- $scheds['weekly'] = array('interval' => 604800, 'display' => __('Weekly', 'subscribe2'));
 
 
 
 
 
 
 
 
 
1311
 
1312
  return $scheds;
1313
  } // end add_weekly_sched()
1314
 
1315
  /**
1316
- Send a digest of recent new posts
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1317
  */
1318
  function subscribe2_cron($preview = '', $resend = '') {
1319
  if ( defined('DOING_S2_CRON') && DOING_S2_CRON ) { return; }
@@ -1321,17 +1324,6 @@ class s2class {
1321
  global $wpdb, $post;
1322
 
1323
  if ( '' == $preview ) {
1324
- // update last_s2cron execution time before completing or bailing
1325
- $now = current_time('mysql');
1326
- $prev = $this->subscribe2_options['last_s2cron'];
1327
- $last = $this->subscribe2_options['previous_s2cron'];
1328
- $this->subscribe2_options['last_s2cron'] = $now;
1329
- $this->subscribe2_options['previous_s2cron'] = $prev;
1330
- if ( '' == $resend ) {
1331
- // update sending times provided this is not a resend
1332
- update_option('subscribe2_options', $this->subscribe2_options);
1333
- }
1334
-
1335
  // set up SQL query based on options
1336
  if ( $this->subscribe2_options['private'] == 'yes' ) {
1337
  $status = "'publish', 'private'";
@@ -1347,27 +1339,25 @@ class s2class {
1347
  $s2_post_types = array('post');
1348
  }
1349
  $s2_post_types = apply_filters('s2_post_types', $s2_post_types);
1350
- foreach( $s2_post_types as $post_type ) {
1351
  ('' == $type) ? $type = $wpdb->prepare("%s", $post_type) : $type .= $wpdb->prepare(", %s", $post_type);
1352
  }
1353
 
1354
  // collect posts
1355
  if ( $resend == 'resend' ) {
1356
- if ( $this->subscribe2_options['cron_order'] == 'desc' ) {
1357
- $posts = $wpdb->get_results($wpdb->prepare("SELECT ID, post_title, post_excerpt, post_content, post_type, post_password, post_date, post_author FROM $wpdb->posts WHERE post_date >= %s AND post_date < %s AND post_status IN ($status) AND post_type IN ($type) ORDER BY post_date DESC", $last, $prev));
1358
- } else {
1359
- $posts = $wpdb->get_results($wpdb->prepare("SELECT ID, post_title, post_excerpt, post_content, post_type, post_password, post_date, post_author FROM $wpdb->posts WHERE post_date >= %s AND post_date < %s AND post_status IN ($status) AND post_type IN ($type) ORDER BY post_date ASC", $last, $prev));
1360
- }
 
1361
  } else {
1362
- if ( $this->subscribe2_options['cron_order'] == 'desc' ) {
1363
- $posts = $wpdb->get_results($wpdb->prepare("SELECT ID, post_title, post_excerpt, post_content, post_type, post_password, post_date, post_author FROM $wpdb->posts WHERE post_date >= %s AND post_date < %s AND post_status IN ($status) AND post_type IN ($type) ORDER BY post_date DESC", $prev, $now));
1364
- } else {
1365
- $posts = $wpdb->get_results($wpdb->prepare("SELECT ID, post_title, post_excerpt, post_content, post_type, post_password, post_date, post_author FROM $wpdb->posts WHERE post_date >= %s AND post_date < %s AND post_status IN ($status) AND post_type IN ($type) ORDER BY post_date ASC", $prev, $now));
1366
- }
1367
  }
1368
  } else {
1369
  // we are sending a preview
1370
- $now = $prev = $last = current_time('mysql');
1371
  $posts = get_posts('numberposts=1');
1372
  }
1373
 
@@ -1393,11 +1383,11 @@ class s2class {
1393
  $tablelinks = '';
1394
  $message_post= '';
1395
  $message_posttime = '';
 
1396
  foreach ( $posts as $post ) {
1397
  // keep an array of post ids and skip if we've already done it once
1398
  if ( in_array($post->ID, $ids) ) { continue; }
1399
  $ids[] = $post->ID;
1400
- $s2_taxonomies = apply_filters('s2_taxonomies', array('category'));
1401
  $post_cats = wp_get_object_terms($post->ID, $s2_taxonomies, array('fields' => 'ids'));
1402
  $post_cats_string = implode(',', $post_cats);
1403
  $all_post_cats = array_unique(array_merge($all_post_cats, $post_cats));
@@ -1436,6 +1426,13 @@ class s2class {
1436
  if ( $check ) {
1437
  continue;
1438
  }
 
 
 
 
 
 
 
1439
  $post_title = html_entity_decode($post->post_title, ENT_QUOTES);
1440
  ('' == $table) ? $table .= "* " . $post_title : $table .= "\r\n* " . $post_title;
1441
  ('' == $tablelinks) ? $tablelinks .= "* " . $post_title : $tablelinks .= "\r\n* " . $post_title;
@@ -1506,6 +1503,12 @@ class s2class {
1506
  $message_posttime .= $excerpt . "\r\n\r\n";
1507
  }
1508
 
 
 
 
 
 
 
1509
  // we add a blank line after each post excerpt now trim white space that occurs for the last post
1510
  $message_post = trim($message_post);
1511
  $message_posttime = trim($message_posttime);
@@ -1515,9 +1518,13 @@ class s2class {
1515
  $message_post = preg_replace("|[\r\n]{3,}|", "\r\n\r\n", $message_post);
1516
  $message_posttime = preg_replace("|[\r\n]{3,}|", "\r\n\r\n", $message_posttime);
1517
 
 
 
 
 
1518
  // apply filter to allow external content to be inserted or content manipulated
1519
- $message_post = apply_filters('s2_digest_email', $message_post, $now, $prev, $last, $this->subscribe2_options['cron_order']);
1520
- $message_posttime = apply_filters('s2_digest_email', $message_posttime, $now, $prev, $last, $this->subscribe2_options['cron_order']);
1521
 
1522
  //sanity check - don't send a mail if the content is empty
1523
  if ( !$message_post && !$message_posttime && !$table && !$tablelinks ) {
@@ -1568,13 +1575,21 @@ class s2class {
1568
  if ( empty($old_unconfirmed) ) {
1569
  return;
1570
  } else {
1571
- foreach ($old_unconfirmed as $email) {
1572
  $this->delete($email);
1573
  }
1574
  }
1575
  return;
1576
  } // end s2cleaner_task()
1577
 
 
 
 
 
 
 
 
 
1578
  /* ===== Our constructor ===== */
1579
  /**
1580
  Subscribe2 constructor
@@ -1620,17 +1635,20 @@ class s2class {
1620
  }
1621
 
1622
  // add core actions
1623
- add_filter('cron_schedules', array(&$this, 'add_weekly_sched'));
1624
  // add actions for automatic subscription based on option settings
1625
- add_action('register_form', array(&$this, 'register_form'));
1626
- add_action('user_register', array(&$this, 'register_post'));
1627
  if ( $this->s2_mu ) {
 
1628
  add_action('add_user_to_blog', array(&$s2class_multisite, 'wpmu_add_user'), 10);
1629
  add_action('remove_user_from_blog', array(&$s2class_multisite, 'wpmu_remove_user'), 10);
 
 
 
1630
  }
1631
  // add actions for processing posts based on per-post or cron email settings
1632
  if ( $this->subscribe2_options['email_freq'] != 'never' ) {
1633
  add_action('s2_digest_cron', array(&$this, 'subscribe2_cron'));
 
1634
  } else {
1635
  $statuses = apply_filters('s2_post_statuses', array('new', 'draft', 'auto-draft', 'pending'));
1636
  if ( $this->subscribe2_options['private'] == 'yes' ) {
@@ -1645,6 +1663,7 @@ class s2class {
1645
  }
1646
  // add actions for comment subscribers
1647
  if ( 'no' != $this->subscribe2_options['comment_subs'] ) {
 
1648
  if ( 'before' == $this->subscribe2_options['comment_subs'] ) {
1649
  add_action('comment_form_after_fields', array(&$this, 's2_comment_meta_form'));
1650
  } else {
@@ -1669,9 +1688,6 @@ class s2class {
1669
 
1670
  // Add actions specific to admin or frontend
1671
  if ( is_admin() ) {
1672
- // load strings
1673
- add_action('init', array(&$this, 'load_strings'));
1674
-
1675
  //add menu, authoring and category admin actions
1676
  add_action('admin_menu', array(&$this, 'admin_menu'));
1677
  add_action('admin_menu', array(&$this, 's2_meta_init'));
@@ -1755,6 +1771,7 @@ class s2class {
1755
  $this->excerpt_length = apply_filters('s2_excerpt_length', 55);
1756
  $this->site_switching = apply_filters('s2_allow_site_switching', false);
1757
  $this->clean_interval = apply_filters('s2_clean_interval', 28);
 
1758
  } // end __construct()
1759
 
1760
  /* ===== our variables ===== */
@@ -1808,7 +1825,5 @@ class s2class {
1808
  var $subscribe = '';
1809
  var $unsubscribe = '';
1810
  var $confirm_subject = '';
1811
- var $options_saved = '';
1812
- var $options_reset = '';
1813
  } // end class subscribe2
1814
  ?>
11
  load_textdomain('subscribe2', $mofile);
12
  } // end load_translations()
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  /* ===== Install, upgrade, reset ===== */
15
  /**
16
  Install our table
122
  $this->subscribe2_options['version'] = '8.8';
123
  update_option('subscribe2_options', $this->subscribe2_options);
124
  }
125
+ if ( version_compare($this->subscribe2_options['version'], '10.0', '<') ) {
126
+ $s2_upgrade->upgrade100();
127
+ $this->subscribe2_options['version'] = '10.0';
128
+ }
129
 
130
  $this->subscribe2_options['version'] = S2VERSION;
131
  update_option('subscribe2_options', $this->subscribe2_options);
179
  $string = str_replace("{TAGS}", $this->post_tag_names, $string);
180
  $string = str_replace("{COUNT}", $this->post_count, $string);
181
 
182
+ return apply_filters('s2_custom_keywords', $string);
183
  } // end substitute()
184
 
185
  /**
201
  }
202
  } else {
203
  $headers = $this->headers('text', $attachments);
204
+ $message = html_entity_decode($message, ENT_NOQUOTES, 'UTF-8');
 
205
  $message = wordwrap(strip_tags($message), $this->word_wrap, "\n");
206
  $mailtext = apply_filters('s2_plain_email', $message);
207
  }
303
  }
304
  }
305
 
306
+ $char_set = get_option('blog_charset');
307
  if ( function_exists('mb_encode_mimeheader') ) {
308
+ $header['From'] = mb_encode_mimeheader($this->myname, $char_set, 'Q') . " <" . $this->myemail . ">";
309
+ $header['Reply-To'] = mb_encode_mimeheader($this->myname, $char_set, 'Q') . " <" . $this->myemail . ">";
310
  } else {
311
  $header['From'] = $this->myname. " <" . $this->myemail . ">";
312
  $header['Reply-To'] = $this->myname . " <" . $this->myemail . ">";
315
  $header['Precedence'] = "list\nList-Id: " . html_entity_decode(get_option('blogname'), ENT_QUOTES) . "";
316
  if ( empty($attachments) && $type == 'html' ) {
317
  // To send HTML mail, the Content-Type header must be set
318
+ $header['Content-Type'] = get_option('html_type') . "; charset=\"". $char_set . "\"";
319
  } elseif ( empty($attachments) && $type == 'text' ) {
320
+ $header['Content-Type'] = "text/plain; charset=\"". $char_set . "\"";
321
  }
322
 
323
  // apply header filter to allow on-the-fly amendments
569
  }
570
  }
571
 
572
+ // maybe add social media sharing buttons
573
+ $social = apply_filters('s2_social_links', array('facebook', 'twitter'));
574
+ if ( !empty($social) ) {
575
+ $social_buttons = $this->social_buttons($social);
576
+ $content .= $social_buttons;
577
+ $html_excerpt .= $social_buttons;
578
+ }
579
+
580
  // remove excess white space from with $excerpt and $plaintext
581
  $excerpt = preg_replace('|[ ]+|', ' ', $excerpt);
582
  $plaintext = preg_replace('|[ ]+|', ' ', $plaintext);
627
  }
628
  } // end publish()
629
 
630
+ /**
631
+ Function to create social network sharing buttons
632
+ */
633
+ function social_buttons($social) {
634
+ $social_buttons = '';
635
+ if ( in_array('facebook', $social) ) {
636
+ $social_buttons .= '<a href="http://api.addthis.com/oexchange/0.8/forward/facebook/offer?url=' . urlencode($this->permalink) . '" target="_blank" ><img src="http://cache.addthiscdn.com/icons/v1/thumbs/facebook.gif" border="0" style="margin: 1px;" alt="' . __('Like', 'subscribe2') . '" /></a>';
637
+ }
638
+ if ( in_array('twitter', $social) ) {
639
+ $social_buttons .= '<a href="http://api.addthis.com/oexchange/0.8/forward/twitter/offer?url=' . urlencode($this->permalink) . '&amp;title=' . urlencode(strip_tags($this->post_title)) . '" target="_blank" ><img src="http://cache.addthiscdn.com/icons/v1/thumbs/twitter.gif" border="0" style="margin: 1px;" alt="' . __('Tweet', 'subscribe2') . '" /></a>';
640
+ }
641
+ if ( in_array('google', $social) ) {
642
+ $social_buttons .= '<a href="http://api.addthis.com/oexchange/0.8/forward/google_plusone_share/offer?url=' . urlencode($this->permalink) . '&amp;title=' . urlencode(strip_tags($this->post_title)) . '" target="_blank" ><img src="http://cache.addthiscdn.com/icons/v1/thumbs/google_plusone.gif" border="0" style="margin: 1px;" alt="' . __('Google+', 'subscribe2') . '" /></a>';
643
+ }
644
+ return apply_filters('s2_social_buttons', $social_buttons);
645
+ } // end social_buttons()
646
+
647
  /**
648
  Send confirmation email to a public subscriber
649
  */
660
  // HASH = wp_hash of email address
661
  // ID = user's ID in the subscribe2 table
662
  // use home instead of siteurl incase index.php is not in core wordpress directory
663
+ $link = apply_filters('s2_confirm_link', get_option('home')) . "/?s2=";
664
 
665
  if ( 'add' == $what ) {
666
  $link .= '1';
1101
  $all_cats = array();
1102
  $s2_taxonomies = apply_filters('s2_taxonomies', array('category'));
1103
 
1104
+ foreach ( $s2_taxonomies as $taxonomy ) {
1105
  if ( taxonomy_exists($taxonomy) ) {
1106
  $all_cats = array_merge($all_cats, get_categories(array('hide_empty' => false, 'orderby' => $orderby, 'taxonomy' => $taxonomy)));
1107
  }
1284
  Add a weekly event to cron
1285
  */
1286
  function add_weekly_sched($scheds) {
1287
+ $exists = false;
1288
+ foreach ( $scheds as $sched ) {
1289
+ if ( array_search(604800, $sched) ) {
1290
+ $exists = true;
1291
+ }
1292
+ }
1293
+
1294
+ if ( !$exists ) {
1295
+ $scheds['weekly'] = array('interval' => 604800, 'display' => __('Weekly', 'subscribe2'));
1296
+ }
1297
 
1298
  return $scheds;
1299
  } // end add_weekly_sched()
1300
 
1301
  /**
1302
+ Handle post transitions for the digest email
1303
+ */
1304
+ function digest_post_transitions($new_status, $old_status, $post) {
1305
+ if ( $new_status === $old_status ) { return; }
1306
+
1307
+ if ( $this->subscribe2_options['pages'] == 'yes' ) {
1308
+ $s2_post_types = array('page', 'post');
1309
+ } else {
1310
+ $s2_post_types = array('post');
1311
+ }
1312
+ $s2_post_types = apply_filters('s2_post_types', $s2_post_types);
1313
+ if ( !in_array($post->post_type, $s2_post_types) ) { return; }
1314
+
1315
+ update_post_meta( $post->ID, '_s2_digest_post_status', ( 'publish' === $new_status ) ? 'pending' : 'draft' );
1316
+ } // end digest_post_transitions()
1317
+
1318
+ /**
1319
+ Send a daily digest of today's new posts
1320
  */
1321
  function subscribe2_cron($preview = '', $resend = '') {
1322
  if ( defined('DOING_S2_CRON') && DOING_S2_CRON ) { return; }
1324
  global $wpdb, $post;
1325
 
1326
  if ( '' == $preview ) {
 
 
 
 
 
 
 
 
 
 
 
1327
  // set up SQL query based on options
1328
  if ( $this->subscribe2_options['private'] == 'yes' ) {
1329
  $status = "'publish', 'private'";
1339
  $s2_post_types = array('post');
1340
  }
1341
  $s2_post_types = apply_filters('s2_post_types', $s2_post_types);
1342
+ foreach ( $s2_post_types as $post_type ) {
1343
  ('' == $type) ? $type = $wpdb->prepare("%s", $post_type) : $type .= $wpdb->prepare(", %s", $post_type);
1344
  }
1345
 
1346
  // collect posts
1347
  if ( $resend == 'resend' ) {
1348
+ $query = new WP_Query( array(
1349
+ 'post__in' => explode(',', $this->subscribe2_options['last_s2cron']),
1350
+ 'ignore_sticky_posts' => 1,
1351
+ 'order' => ($this->subscribe2_options['cron_order'] === 'desc') ? "DESC" : "ASC"
1352
+ ) );
1353
+ $posts = $query->posts;
1354
  } else {
1355
+ $sql = "SELECT ID, post_title, post_excerpt, post_content, post_type, post_password, post_date, post_author FROM $wpdb->posts AS a INNER JOIN $wpdb->postmeta AS b ON b.post_id = a.ID";
1356
+ $sql .= " AND b.meta_key = '_s2_digest_post_status' AND b.meta_value = 'pending' WHERE post_status IN ($status) AND post_type IN ($type) ORDER BY post_date " . (($this->subscribe2_options['cron_order'] === 'desc') ? 'DESC' : 'ASC');
1357
+ $posts = $wpdb->get_results($sql);
 
 
1358
  }
1359
  } else {
1360
  // we are sending a preview
 
1361
  $posts = get_posts('numberposts=1');
1362
  }
1363
 
1383
  $tablelinks = '';
1384
  $message_post= '';
1385
  $message_posttime = '';
1386
+ $s2_taxonomies = apply_filters('s2_taxonomies', array('category'));
1387
  foreach ( $posts as $post ) {
1388
  // keep an array of post ids and skip if we've already done it once
1389
  if ( in_array($post->ID, $ids) ) { continue; }
1390
  $ids[] = $post->ID;
 
1391
  $post_cats = wp_get_object_terms($post->ID, $s2_taxonomies, array('fields' => 'ids'));
1392
  $post_cats_string = implode(',', $post_cats);
1393
  $all_post_cats = array_unique(array_merge($all_post_cats, $post_cats));
1426
  if ( $check ) {
1427
  continue;
1428
  }
1429
+
1430
+ if ( isset($sticky_ids) && !in_array($post->ID, $sticky_ids) ) {
1431
+ $digest_post_ids[] = $post->ID;
1432
+ } else {
1433
+ $digest_post_ids[] = $post->ID;
1434
+ }
1435
+
1436
  $post_title = html_entity_decode($post->post_title, ENT_QUOTES);
1437
  ('' == $table) ? $table .= "* " . $post_title : $table .= "\r\n* " . $post_title;
1438
  ('' == $tablelinks) ? $tablelinks .= "* " . $post_title : $tablelinks .= "\r\n* " . $post_title;
1503
  $message_posttime .= $excerpt . "\r\n\r\n";
1504
  }
1505
 
1506
+ foreach ( $digest_post_ids as $digest_post_id ) {
1507
+ update_post_meta($digest_post_id, '_s2_digest_post_status', 'done');
1508
+ }
1509
+ $this->subscribe2_options['last_s2cron'] = implode(',', $digest_post_ids);
1510
+ update_option('subscribe2_options', $this->subscribe2_options);
1511
+
1512
  // we add a blank line after each post excerpt now trim white space that occurs for the last post
1513
  $message_post = trim($message_post);
1514
  $message_posttime = trim($message_posttime);
1518
  $message_post = preg_replace("|[\r\n]{3,}|", "\r\n\r\n", $message_post);
1519
  $message_posttime = preg_replace("|[\r\n]{3,}|", "\r\n\r\n", $message_posttime);
1520
 
1521
+ // apply filter to allow custom keywords
1522
+ $message_post = apply_filters('s2_custom_keywords', $message_post, $digest_post_ids);
1523
+ $message_posttime = apply_filters('s2_custom_keywords', $message_posttime, $digest_post_ids);
1524
+
1525
  // apply filter to allow external content to be inserted or content manipulated
1526
+ $message_post = apply_filters('s2_digest_email', $message_post);
1527
+ $message_posttime = apply_filters('s2_digest_email', $message_posttime);
1528
 
1529
  //sanity check - don't send a mail if the content is empty
1530
  if ( !$message_post && !$message_posttime && !$table && !$tablelinks ) {
1575
  if ( empty($old_unconfirmed) ) {
1576
  return;
1577
  } else {
1578
+ foreach ( $old_unconfirmed as $email ) {
1579
  $this->delete($email);
1580
  }
1581
  }
1582
  return;
1583
  } // end s2cleaner_task()
1584
 
1585
+ /**
1586
+ Jetpack comments doesn't play nice, this function kills that module
1587
+ */
1588
+ function s2_hide_jetpack_comments($modules) {
1589
+ unset( $modules['stats'] );
1590
+ return $modules;
1591
+ } // end s2_kill_jetpack_comments()
1592
+
1593
  /* ===== Our constructor ===== */
1594
  /**
1595
  Subscribe2 constructor
1635
  }
1636
 
1637
  // add core actions
1638
+ add_filter('cron_schedules', array(&$this, 'add_weekly_sched'), 20);
1639
  // add actions for automatic subscription based on option settings
 
 
1640
  if ( $this->s2_mu ) {
1641
+ add_action('wpmu_activate_user', array(&$s2class_multisite, 'wpmu_add_user'));
1642
  add_action('add_user_to_blog', array(&$s2class_multisite, 'wpmu_add_user'), 10);
1643
  add_action('remove_user_from_blog', array(&$s2class_multisite, 'wpmu_remove_user'), 10);
1644
+ } else {
1645
+ add_action('register_form', array(&$this, 'register_form'));
1646
+ add_action('user_register', array(&$this, 'register_post'));
1647
  }
1648
  // add actions for processing posts based on per-post or cron email settings
1649
  if ( $this->subscribe2_options['email_freq'] != 'never' ) {
1650
  add_action('s2_digest_cron', array(&$this, 'subscribe2_cron'));
1651
+ add_action('transition_post_status', array(&$this, 'digest_post_transitions'), 10, 3);
1652
  } else {
1653
  $statuses = apply_filters('s2_post_statuses', array('new', 'draft', 'auto-draft', 'pending'));
1654
  if ( $this->subscribe2_options['private'] == 'yes' ) {
1663
  }
1664
  // add actions for comment subscribers
1665
  if ( 'no' != $this->subscribe2_options['comment_subs'] ) {
1666
+ add_filter('jetpack_get_available_modules', array(&$this, 's2_hide_jetpack_comments'));
1667
  if ( 'before' == $this->subscribe2_options['comment_subs'] ) {
1668
  add_action('comment_form_after_fields', array(&$this, 's2_comment_meta_form'));
1669
  } else {
1688
 
1689
  // Add actions specific to admin or frontend
1690
  if ( is_admin() ) {
 
 
 
1691
  //add menu, authoring and category admin actions
1692
  add_action('admin_menu', array(&$this, 'admin_menu'));
1693
  add_action('admin_menu', array(&$this, 's2_meta_init'));
1771
  $this->excerpt_length = apply_filters('s2_excerpt_length', 55);
1772
  $this->site_switching = apply_filters('s2_allow_site_switching', false);
1773
  $this->clean_interval = apply_filters('s2_clean_interval', 28);
1774
+ $this->lockout = apply_filters('s2_lockout', 0);
1775
  } // end __construct()
1776
 
1777
  /* ===== our variables ===== */
1825
  var $subscribe = '';
1826
  var $unsubscribe = '';
1827
  var $confirm_subject = '';
 
 
1828
  } // end class subscribe2
1829
  ?>
classes/class-s2-frontend.php CHANGED
@@ -1,5 +1,45 @@
1
  <?php
2
  class s2_frontend extends s2class {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  /* ===== template and filter functions ===== */
4
  /**
5
  Display our form; also handles (un)subscribe requests
@@ -99,6 +139,13 @@ class s2_frontend extends s2class {
99
  $this->s2form = $this->form . $this->barred_domain;
100
  } else {
101
  $this->ip = $_POST['ip'];
 
 
 
 
 
 
 
102
  // does the supplied email belong to a registered user?
103
  $check = $wpdb->get_var($wpdb->prepare("SELECT user_email FROM $wpdb->users WHERE user_email = %s", $this->email));
104
  if ( '' != $check ) {
1
  <?php
2
  class s2_frontend extends s2class {
3
+ /**
4
+ Load all our strings
5
+ */
6
+ function load_strings() {
7
+ $this->please_log_in = "<p class=\"s2_message\">" . sprintf(__('To manage your subscription options please <a href="%1$s">login.</a>', 'subscribe2'), get_option('siteurl') . '/wp-login.php') . "</p>";
8
+
9
+ $this->profile = "<p class=\"s2_message\">" . sprintf(__('You may manage your subscription options from your <a href="%1$s">profile</a>', 'subscribe2'), get_option('siteurl') . "/wp-admin/admin.php?page=s2") . "</p>";
10
+ if ( $this->s2_mu === true ) {
11
+ global $blog_id;
12
+ $user_ID = get_current_user_id();
13
+ if ( !is_user_member_of_blog($user_ID, $blog_id) ) {
14
+ // if we are on multisite and the user is not a member of this blog change the link
15
+ $this->profile = "<p class=\"s2_message\">" . sprintf(__('<a href="%1$s">Subscribe</a> to email notifications when this blog posts new content.', 'subscribe2'), get_option('siteurl') . "/wp-admin/?s2mu_subscribe=" . $blog_id) . "</p>";
16
+ }
17
+ }
18
+
19
+ $this->confirmation_sent = "<p class=\"s2_message\">" . __('A confirmation message is on its way!', 'subscribe2') . "</p>";
20
+
21
+ $this->already_subscribed = "<p class=\"s2_error\">" . __('That email address is already subscribed.', 'subscribe2') . "</p>";
22
+
23
+ $this->not_subscribed = "<p class=\"s2_error\">" . __('That email address is not subscribed.', 'subscribe2') . "</p>";
24
+
25
+ $this->not_an_email = "<p class=\"s2_error\">" . __('Sorry, but that does not look like an email address to me.', 'subscribe2') . "</p>";
26
+
27
+ $this->barred_domain = "<p class=\"s2_error\">" . __('Sorry, email addresses at that domain are currently barred due to spam, please use an alternative email address.', 'subscribe2') . "</p>";
28
+
29
+ $this->error = "<p class=\"s2_error\">" . __('Sorry, there seems to be an error on the server. Please try again later.', 'subscribe2') . "</p>";
30
+
31
+ // confirmation messages
32
+ $this->no_such_email = "<p class=\"s2_error\">" . __('No such email address is registered.', 'subscribe2') . "</p>";
33
+
34
+ $this->added = "<p class=\"s2_message\">" . __('You have successfully subscribed!', 'subscribe2') . "</p>";
35
+
36
+ $this->deleted = "<p class=\"s2_message\">" . __('You have successfully unsubscribed.', 'subscribe2') . "</p>";
37
+
38
+ /**/$this->subscribe = __('subscribe', 'subscribe2'); //ACTION replacement in subscribing confirmation email
39
+
40
+ /**/$this->unsubscribe = __('unsubscribe', 'subscribe2'); //ACTION replacement in unsubscribing in confirmation email
41
+ } // end load_strings()
42
+
43
  /* ===== template and filter functions ===== */
44
  /**
45
  Display our form; also handles (un)subscribe requests
139
  $this->s2form = $this->form . $this->barred_domain;
140
  } else {
141
  $this->ip = $_POST['ip'];
142
+ if ( is_int($this->lockout) && $this->lockout > 0 ) {
143
+ $date = date('H:i:s.u', $this->lockout);
144
+ $ips = $wpdb->get_col($wpdb->prepare("SELECT ip FROM $this->public WHERE date = CURDATE() AND time > SUBTIME(CURTIME(), %s)", $date));
145
+ if ( in_array($this->ip, $ips) ) {
146
+ return __('Slow down, you move too fast.', 'subscribe2');
147
+ }
148
+ }
149
  // does the supplied email belong to a registered user?
150
  $check = $wpdb->get_var($wpdb->prepare("SELECT user_email FROM $wpdb->users WHERE user_email = %s", $this->email));
151
  if ( '' != $check ) {
classes/class-s2-list-table.php CHANGED
@@ -33,7 +33,7 @@ class Subscribe2_List_Table extends WP_List_Table {
33
  function column_email($item) {
34
  global $current_tab;
35
  if ( $current_tab == 'registered' ) {
36
- $actions = array('edit' => sprintf('<a href="?page=%s&amp;email=%s">%s</a>', 's2', $item['email'], __('Edit', 'subscribe2')));
37
  return sprintf('%1$s %2$s', $item['email'], $this->row_actions($actions));
38
  } else {
39
  global $mysubscribe2;
33
  function column_email($item) {
34
  global $current_tab;
35
  if ( $current_tab == 'registered' ) {
36
+ $actions = array('edit' => sprintf('<a href="?page=%s&amp;email=%s">%s</a>', 's2', urlencode($item['email']), __('Edit', 'subscribe2')));
37
  return sprintf('%1$s %2$s', $item['email'], $this->row_actions($actions));
38
  } else {
39
  global $mysubscribe2;
classes/class-s2-multisite.php CHANGED
@@ -101,7 +101,7 @@ class s2_multisite {
101
  return array();
102
  }
103
 
104
- return $blog_list;
105
  } // end get_mu_blog_list()
106
 
107
  /**
101
  return array();
102
  }
103
 
104
+ return apply_filters('s2_mu_blog_list', $blog_list);
105
  } // end get_mu_blog_list()
106
 
107
  /**
classes/class-s2-upgrade.php CHANGED
@@ -26,6 +26,8 @@ class s2class_upgrade {
26
  }
27
  }
28
  }
 
 
29
  } // end upgrade_core()
30
 
31
  function upgrade23() {
@@ -238,7 +240,7 @@ class s2class_upgrade {
238
  function upgrade70() {
239
  global $mysubscribe2;
240
  if ( version_compare($mysubscribe2->wp_release, '3.5', '<') ) {
241
- $users = $mysubscribe2->get_all_registered('ID');
242
  foreach ( $users as $user_ID ) {
243
  $check_authors = get_user_meta($user_ID, $mysubscribe2->get_usermeta_keyname('s2_authors'), true);
244
  if ( empty($check_authors) ) {
@@ -338,5 +340,13 @@ class s2class_upgrade {
338
  }
339
  maybe_add_column($mysubscribe2->public, 'time', "ALTER TABLE $mysubscribe2->public ADD time TIME DEFAULT '00:00:00' NOT NULL AFTER date");
340
  } // end upgrade88()
 
 
 
 
 
 
 
 
341
  }
342
  ?>
26
  }
27
  }
28
  }
29
+ // let's make sure that the 's2_authors' key exists on every site for all Registered Users too
30
+ $this->upgrade70();
31
  } // end upgrade_core()
32
 
33
  function upgrade23() {
240
  function upgrade70() {
241
  global $mysubscribe2;
242
  if ( version_compare($mysubscribe2->wp_release, '3.5', '<') ) {
243
+ $users = $wpdb->get_col($wpdb->prepare("SELECT ID from $wpdb->users WHERE ID NOT IN (SELECT user_id from $wpdb->usermeta WHERE meta_key=%s", $mysubscribe2->get_usermeta_keyname('s2_authors')));
244
  foreach ( $users as $user_ID ) {
245
  $check_authors = get_user_meta($user_ID, $mysubscribe2->get_usermeta_keyname('s2_authors'), true);
246
  if ( empty($check_authors) ) {
340
  }
341
  maybe_add_column($mysubscribe2->public, 'time', "ALTER TABLE $mysubscribe2->public ADD time TIME DEFAULT '00:00:00' NOT NULL AFTER date");
342
  } // end upgrade88()
343
+
344
+ function upgrade100() {
345
+ global $mysubscribe2;
346
+ if ( $mysubscribe2->subscribe2_options['email_freq'] != 'never' ) {
347
+ $mysubscribe2->subscribe2_options['last_s2cron'] = '';
348
+ unset($mysubscribe2->subscribe2_options['previous_s2cron']);
349
+ }
350
+ } // end upgrade100()
351
  }
352
  ?>
include/options.php CHANGED
@@ -111,7 +111,7 @@ if (!isset($this->subscribe2_options['ajax'])) {
111
  } // option to enable an AJAX style form
112
 
113
  if (!isset($this->subscribe2_options['widget'])) {
114
- $this->subscribe2_options['widget'] = "0";
115
  } // option to enable Subscribe2 Widget
116
 
117
  if (!isset($this->subscribe2_options['counterwidget'])) {
111
  } // option to enable an AJAX style form
112
 
113
  if (!isset($this->subscribe2_options['widget'])) {
114
+ $this->subscribe2_options['widget'] = "1";
115
  } // option to enable Subscribe2 Widget
116
 
117
  if (!isset($this->subscribe2_options['counterwidget'])) {
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: 9.2
7
  Author: Matthew Robinson
8
  Author URI: http://subscribe2.wordpress.com
9
  Licence: GPL3
@@ -12,7 +12,7 @@ Text Domain: subscribe2
12
  */
13
 
14
  /*
15
- Copyright (C) 2006-13 Matthew Robinson
16
  Based on the Original Subscribe2 plugin by
17
  Copyright (C) 2005 Scott Merrill (skippy@skippy.net)
18
 
@@ -55,7 +55,7 @@ if ( is_plugin_active_for_network(plugin_basename(__FILE__)) ) {
55
 
56
  // our version number. Don't touch this or any line below
57
  // unless you know exactly what you are doing
58
- define( 'S2VERSION', '9.2' );
59
  define( 'S2PATH', trailingslashit(dirname(__FILE__)) );
60
  define( 'S2DIR', trailingslashit(dirname(plugin_basename(__FILE__))) );
61
  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: 9.3
7
  Author: Matthew Robinson
8
  Author URI: http://subscribe2.wordpress.com
9
  Licence: GPL3
12
  */
13
 
14
  /*
15
+ Copyright (C) 2006-14 Matthew Robinson
16
  Based on the Original Subscribe2 plugin by
17
  Copyright (C) 2005 Scott Merrill (skippy@skippy.net)
18
 
55
 
56
  // our version number. Don't touch this or any line below
57
  // unless you know exactly what you are doing
58
+ define( 'S2VERSION', '9.3' );
59
  define( 'S2PATH', trailingslashit(dirname(__FILE__)) );
60
  define( 'S2DIR', trailingslashit(dirname(plugin_basename(__FILE__))) );
61
  define( 'S2URL', plugin_dir_url(dirname(__FILE__)) . S2DIR );
subscribe2.pot CHANGED
@@ -2,9 +2,9 @@
2
  # This file is distributed under the same license as the Subscribe2 package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Subscribe2 9.2\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/Subscribe2\n"
7
- "POT-Creation-Date: 2014-02-04 19:44:43+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -24,6 +24,14 @@ msgstr ""
24
  msgid "Preview message sent!"
25
  msgstr ""
26
 
 
 
 
 
 
 
 
 
27
  #: admin/send_email.php:99
28
  msgid "Send an email to subscribers"
29
  msgstr ""
@@ -52,6 +60,10 @@ msgstr ""
52
  msgid "Send"
53
  msgstr ""
54
 
 
 
 
 
55
  #: admin/settings.php:24
56
  msgid "Preview message(s) sent to logged in user"
57
  msgstr ""
@@ -66,471 +78,479 @@ msgstr ""
66
  msgid "Attempt made to resend the Digest Notification email"
67
  msgstr ""
68
 
69
- #: admin/settings.php:139
 
 
 
 
 
 
 
 
70
  msgid ""
71
  "Your chosen email type (per-post or digest) does not support the following "
72
  "keywords:"
73
  msgstr ""
74
 
75
- #: admin/settings.php:140
76
  msgid "Modify your template"
77
  msgstr ""
78
 
79
- #: admin/settings.php:153
80
  msgid ""
81
- "You appear to be sending notifications from an email address from a "
82
- "different domain name to your blog, this may result in failed emails"
83
  msgstr ""
84
 
85
- #: admin/settings.php:164 classes/class-s2-admin.php:81
86
  msgid "Email Settings"
87
  msgstr ""
88
 
89
- #: admin/settings.php:165 classes/class-s2-admin.php:89
90
  msgid "Templates"
91
  msgstr ""
92
 
93
- #: admin/settings.php:166 classes/class-s2-admin.php:96
94
  msgid "Registered Users"
95
  msgstr ""
96
 
97
- #: admin/settings.php:167 classes/class-s2-admin.php:103
98
  msgid "Appearance"
99
  msgstr ""
100
 
101
- #: admin/settings.php:168 classes/class-s2-admin.php:110
102
  msgid "Miscellaneous"
103
  msgstr ""
104
 
105
- #: admin/settings.php:189
106
  msgid ""
107
  "Restrict the number of <strong>recipients per email</strong> to (0 for "
108
  "unlimited)"
109
  msgstr ""
110
 
111
- #: admin/settings.php:191 admin/settings.php:425
112
- #: classes/class-s2-admin.php:692 classes/class-s2-list-table.php:36
113
  msgid "Edit"
114
  msgstr ""
115
 
116
- #: admin/settings.php:194 admin/settings.php:428
117
- #: classes/class-s2-admin.php:706
118
  msgid "Update"
119
  msgstr ""
120
 
121
- #: admin/settings.php:195 admin/settings.php:429
122
- #: classes/class-s2-admin.php:707
123
  msgid "Revert"
124
  msgstr ""
125
 
126
- #: admin/settings.php:197
127
  msgid "Send Admins notifications for new"
128
  msgstr ""
129
 
130
- #: admin/settings.php:199
131
  msgid "Subscriptions"
132
  msgstr ""
133
 
134
- #: admin/settings.php:201
135
  msgid "Unsubscriptions"
136
  msgstr ""
137
 
138
- #: admin/settings.php:203
139
  msgid "Both"
140
  msgstr ""
141
 
142
- #: admin/settings.php:205
143
  msgid "Neither"
144
  msgstr ""
145
 
146
- #: admin/settings.php:207
147
  msgid "Include theme CSS stylesheet in HTML notifications"
148
  msgstr ""
149
 
150
- #: admin/settings.php:209 admin/settings.php:215 admin/settings.php:229
151
- #: admin/settings.php:234 admin/settings.php:239 admin/settings.php:360
152
- #: admin/settings.php:365 admin/settings.php:379 admin/settings.php:386
153
- #: admin/settings.php:398 admin/settings.php:403 admin/subscribers.php:281
154
  #: admin/your_subscriptions.php:123 admin/your_subscriptions.php:164
155
  msgid "Yes"
156
  msgstr ""
157
 
158
- #: admin/settings.php:211 admin/settings.php:217 admin/settings.php:231
159
- #: admin/settings.php:236 admin/settings.php:241 admin/settings.php:357
160
- #: admin/settings.php:362 admin/settings.php:367 admin/settings.php:381
161
- #: admin/settings.php:388 admin/settings.php:395 admin/settings.php:400
162
- #: admin/settings.php:405 admin/subscribers.php:283
163
  #: admin/your_subscriptions.php:125 admin/your_subscriptions.php:168
164
  msgid "No"
165
  msgstr ""
166
 
167
- #: admin/settings.php:213
168
  msgid "Send Emails for Pages"
169
  msgstr ""
170
 
171
- #: admin/settings.php:221
172
  msgid ""
173
  "Subscribe2 will send email notifications for the following custom post types"
174
  msgstr ""
175
 
176
- #: admin/settings.php:227
177
  msgid "Send Emails for Password Protected Posts"
178
  msgstr ""
179
 
180
- #: admin/settings.php:232
181
  msgid "Send Emails for Private Posts"
182
  msgstr ""
183
 
184
- #: admin/settings.php:237
185
  msgid "Include Sticky Posts at the top of all Digest Notifications"
186
  msgstr ""
187
 
188
- #: admin/settings.php:242
189
  msgid "Send Email From"
190
  msgstr ""
191
 
192
- #: admin/settings.php:247
193
  msgid "Send Emails"
194
  msgstr ""
195
 
196
- #: admin/settings.php:249
197
  msgid "For digest notifications, date order for posts is"
198
  msgstr ""
199
 
200
- #: admin/settings.php:251
201
  msgid "Descending"
202
  msgstr ""
203
 
204
- #: admin/settings.php:253
205
  msgid "Ascending"
206
  msgstr ""
207
 
208
- #: admin/settings.php:255
209
  msgid "Add Tracking Parameters to the Permalink"
210
  msgstr ""
211
 
212
- #: admin/settings.php:257
213
  msgid ""
214
  "eg. utm_source=subscribe2&amp;utm_medium=email&amp;"
215
  "utm_campaign=postnotify&amp;utm_id={ID}&amp;utm_title={TITLE}"
216
  msgstr ""
217
 
218
- #: admin/settings.php:268
219
  msgid "Notification email (must not be empty)"
220
  msgstr ""
221
 
222
- #: admin/settings.php:269 admin/settings.php:300 admin/settings.php:305
223
  msgid "Subject Line"
224
  msgstr ""
225
 
226
- #: admin/settings.php:274
227
  msgid "Send Email Preview"
228
  msgstr ""
229
 
230
- #: admin/settings.php:275
231
  msgid "Message substitutions"
232
  msgstr ""
233
 
234
- #: admin/settings.php:277
235
  msgid ""
236
  "IF THE FOLLOWING KEYWORDS ARE ALSO IN YOUR POST THEY WILL BE SUBSTITUTED"
237
  msgstr ""
238
 
239
- #: admin/settings.php:280
240
  msgid "the post's title<br />(<i>for per-post emails only</i>)"
241
  msgstr ""
242
 
243
- #: admin/settings.php:281
244
  msgid ""
245
  "the excerpt or the entire post<br />(<i>based on the subscriber's "
246
  "preferences</i>)"
247
  msgstr ""
248
 
249
- #: admin/settings.php:282
250
  msgid ""
251
  "the excerpt of the post and the time it was posted<br />(<i>for digest "
252
  "emails only</i>)"
253
  msgstr ""
254
 
255
- #: admin/settings.php:283
256
  msgid "a list of post titles<br />(<i>for digest emails only</i>)"
257
  msgstr ""
258
 
259
- #: admin/settings.php:284
260
  msgid ""
261
  "a list of post titles followed by links to the articles<br />(<i>for digest "
262
  "emails only</i>)"
263
  msgstr ""
264
 
265
- #: admin/settings.php:285
266
  msgid ""
267
  "a reference style list of links at the end of the email with corresponding "
268
  "numbers in the content<br />(<i>for the full content plain text per-post "
269
  "email only</i>)"
270
  msgstr ""
271
 
272
- #: admin/settings.php:286
273
  msgid "the post's permalink<br />(<i>for per-post emails only</i>)"
274
  msgstr ""
275
 
276
- #: admin/settings.php:287
277
  msgid "the post's permalink after conversion by TinyURL"
278
  msgstr ""
279
 
280
- #: admin/settings.php:288
281
  msgid "the date the post was made<br />(<i>for per-post emails only</i>)"
282
  msgstr ""
283
 
284
- #: admin/settings.php:289
285
  msgid "the time the post was made<br />(<i>for per-post emails only</i>)"
286
  msgstr ""
287
 
288
- #: admin/settings.php:290
289
  msgid "the admin or post author's name"
290
  msgstr ""
291
 
292
- #: admin/settings.php:291
293
  msgid "the admin or post author's email"
294
  msgstr ""
295
 
296
- #: admin/settings.php:292
297
  msgid "the post author's name"
298
  msgstr ""
299
 
300
- #: admin/settings.php:293
301
  msgid ""
302
  "the generated link to confirm a request<br />(<i>only used in the "
303
  "confirmation email template</i>)"
304
  msgstr ""
305
 
306
- #: admin/settings.php:294
307
  msgid ""
308
  "Action performed by LINK in confirmation email<br />(<i>only used in the "
309
  "confirmation email template</i>)"
310
  msgstr ""
311
 
312
- #: admin/settings.php:295
313
  msgid "the post's assigned categories"
314
  msgstr ""
315
 
316
- #: admin/settings.php:296
317
  msgid "the post's assigned Tags"
318
  msgstr ""
319
 
320
- #: admin/settings.php:297
321
  msgid ""
322
  "the number of posts included in the digest email<br />(<i>for digest emails "
323
  "only</i>)"
324
  msgstr ""
325
 
326
- #: admin/settings.php:299
327
  msgid "Subscribe / Unsubscribe confirmation email"
328
  msgstr ""
329
 
330
- #: admin/settings.php:304
331
  msgid "Reminder email to Unconfirmed Subscribers"
332
  msgstr ""
333
 
334
- #: admin/settings.php:316
335
  msgid "Compulsory Categories"
336
  msgstr ""
337
 
338
- #: admin/settings.php:318
339
  msgid ""
340
  "Compulsory categories will be checked by default for Registered Subscribers"
341
  msgstr ""
342
 
343
- #: admin/settings.php:325
344
  msgid "Excluded Categories"
345
  msgstr ""
346
 
347
- #: admin/settings.php:327
348
  msgid ""
349
  "Posts assigned to any Excluded Category do not generate notifications and "
350
  "are not included in digest notifications"
351
  msgstr ""
352
 
353
- #: admin/settings.php:331
354
  msgid "Allow registered users to subscribe to excluded categories?"
355
  msgstr ""
356
 
357
- #: admin/settings.php:339
358
  msgid "Excluded Formats"
359
  msgstr ""
360
 
361
- #: admin/settings.php:341
362
  msgid ""
363
  "Posts assigned to any Excluded Format do not generate notifications and are "
364
  "not included in digest notifications"
365
  msgstr ""
366
 
367
- #: admin/settings.php:349
368
  msgid "Auto-Subscribe"
369
  msgstr ""
370
 
371
- #: admin/settings.php:351
372
  msgid "Subscribe new users registering with your blog"
373
  msgstr ""
374
 
375
- #: admin/settings.php:353
376
  msgid "Automatically"
377
  msgstr ""
378
 
379
- #: admin/settings.php:355
380
  msgid "Display option on Registration Form"
381
  msgstr ""
382
 
383
- #: admin/settings.php:358
384
  msgid "Auto-subscribe includes any excluded categories"
385
  msgstr ""
386
 
387
- #: admin/settings.php:363
388
  msgid "Registration Form option is checked by default"
389
  msgstr ""
390
 
391
- #: admin/settings.php:368
392
  msgid "Auto-subscribe users to receive email as"
393
  msgstr ""
394
 
395
- #: admin/settings.php:370 admin/subscribers.php:271
396
  #: admin/your_subscriptions.php:112
397
  msgid "HTML - Full"
398
  msgstr ""
399
 
400
- #: admin/settings.php:372 admin/subscribers.php:272
401
  #: admin/your_subscriptions.php:114
402
  msgid "HTML - Excerpt"
403
  msgstr ""
404
 
405
- #: admin/settings.php:374 admin/subscribers.php:273
406
  #: admin/your_subscriptions.php:116
407
  msgid "Plain Text - Full"
408
  msgstr ""
409
 
410
- #: admin/settings.php:376 admin/subscribers.php:274
411
  #: admin/your_subscriptions.php:118
412
  msgid "Plain Text - Excerpt"
413
  msgstr ""
414
 
415
- #: admin/settings.php:377
416
  msgid "Registered Users have the option to auto-subscribe to new categories"
417
  msgstr ""
418
 
419
- #: admin/settings.php:383
420
  msgid "New categories are immediately excluded"
421
  msgstr ""
422
 
423
- #: admin/settings.php:384
424
  msgid ""
425
  "Option for Registered Users to auto-subscribe to new categories is checked "
426
  "by default"
427
  msgstr ""
428
 
429
- #: admin/settings.php:389
430
  msgid "Display checkbox to allow subscriptions from the comment form"
431
  msgstr ""
432
 
433
- #: admin/settings.php:391
434
  msgid "Before the Comment Submit button"
435
  msgstr ""
436
 
437
- #: admin/settings.php:393
438
  msgid "After the Comment Submit button"
439
  msgstr ""
440
 
441
- #: admin/settings.php:396
442
  msgid "Comment form checkbox is checked by default"
443
  msgstr ""
444
 
445
- #: admin/settings.php:401
446
  msgid "Show one-click subscription on profile page"
447
  msgstr ""
448
 
449
- #: admin/settings.php:416
450
  msgid "Set default Subscribe2 page as"
451
  msgstr ""
452
 
453
- #: admin/settings.php:418
454
  msgid "Select a page"
455
  msgstr ""
456
 
457
- #: admin/settings.php:423
458
  msgid "Set the number of Subscribers displayed per page"
459
  msgstr ""
460
 
461
- #: admin/settings.php:433
462
  msgid "Show a link to your subscription page in \"meta\"?"
463
  msgstr ""
464
 
465
- #: admin/settings.php:437
466
  msgid "Show the Subscribe2 button on the Write toolbar?"
467
  msgstr ""
468
 
469
- #: admin/settings.php:441
470
  msgid "Enable AJAX style subscription form?"
471
  msgstr ""
472
 
473
- #: admin/settings.php:445
474
  msgid "Enable Subscribe2 Widget?"
475
  msgstr ""
476
 
477
- #: admin/settings.php:449
478
  msgid "Enable Subscribe2 Counter Widget?"
479
  msgstr ""
480
 
481
- #: admin/settings.php:453
482
  msgid "Disable email notifications is checked by default on authoring pages?"
483
  msgstr ""
484
 
485
- #: admin/settings.php:461
486
  msgid "Barred Domains"
487
  msgstr ""
488
 
489
- #: admin/settings.php:463
490
  msgid ""
491
  "Enter domains to bar from public subscriptions: <br /> (Use a new line for "
492
  "each entry and omit the \"@\" symbol, for example email.com)"
493
  msgstr ""
494
 
495
- #: admin/settings.php:466
496
  msgid "Links"
497
  msgstr ""
498
 
499
- #: admin/settings.php:467
500
  msgid "Plugin Site"
501
  msgstr ""
502
 
503
- #: admin/settings.php:468 classes/class-s2-admin.php:162
504
  msgid "Translation Files"
505
  msgstr ""
506
 
507
- #: admin/settings.php:469
508
  msgid "Plugin Forum"
509
  msgstr ""
510
 
511
- #: admin/settings.php:470
512
  msgid "Plugin Blog"
513
  msgstr ""
514
 
515
- #: admin/settings.php:471
516
  msgid "Make a donation via PayPal"
517
  msgstr ""
518
 
519
- #: admin/settings.php:477
520
  msgid "Submit"
521
  msgstr ""
522
 
523
- #: admin/settings.php:481
524
  msgid "Reset to Default Settings"
525
  msgstr ""
526
 
527
- #: admin/settings.php:482
528
  msgid ""
529
  "Use this to reset all options to their defaults. This <strong><em>will not</"
530
  "em></strong> modify your list of subscribers."
531
  msgstr ""
532
 
533
- #: admin/settings.php:484
534
  msgid "RESET"
535
  msgstr ""
536
 
@@ -594,12 +614,12 @@ msgid "Digest Subscription updated for Selected Registered Users!"
594
  msgstr ""
595
 
596
  #: admin/subscribers.php:186 classes/class-s2-admin.php:60
597
- #: classes/class-s2-admin.php:538
598
  msgid "Public Subscribers"
599
  msgstr ""
600
 
601
  #: admin/subscribers.php:186 classes/class-s2-admin.php:65
602
- #: classes/class-s2-admin.php:542
603
  msgid "Registered Subscribers"
604
  msgstr ""
605
 
@@ -612,12 +632,12 @@ msgid "Enter addresses, one per line or comma-separated"
612
  msgstr ""
613
 
614
  #: admin/subscribers.php:202 admin/subscribers.php:266
615
- #: admin/your_subscriptions.php:263 classes/class-s2-frontend.php:27
616
  msgid "Subscribe"
617
  msgstr ""
618
 
619
  #: admin/subscribers.php:203 admin/subscribers.php:267
620
- #: admin/your_subscriptions.php:242 classes/class-s2-frontend.php:26
621
  msgid "Unsubscribe"
622
  msgstr ""
623
 
@@ -676,13 +696,17 @@ msgid "Bulk Update Format"
676
  msgstr ""
677
 
678
  #: admin/subscribers.php:279
679
- msgid "Subscribe Selected Users to recieve a periodic digest notification"
680
  msgstr ""
681
 
682
  #: admin/subscribers.php:284
683
  msgid "Bulk Update Digest Subscription"
684
  msgstr ""
685
 
 
 
 
 
686
  #: admin/your_subscriptions.php:90
687
  msgid "Subscription preferences updated."
688
  msgstr ""
@@ -759,7 +783,7 @@ msgstr ""
759
  msgid "Subscribe to new blogs"
760
  msgstr ""
761
 
762
- #. #-#-#-#-# Subscribe2.pot (Subscribe2 9.1) #-#-#-#-#
763
  #. Plugin Name of the plugin/theme
764
  #: classes/class-s2-admin.php:8 include/widget.php:17
765
  msgid "Subscribe2"
@@ -882,8 +906,8 @@ msgstr ""
882
  #: classes/class-s2-admin.php:91
883
  msgid ""
884
  "There are special {KEYWORDS} that are used by Subscribe2 to place content "
885
- "into the final email. The template also accept regular text and HTML as "
886
- "desired in the final emaisl."
887
  msgstr ""
888
 
889
  #: classes/class-s2-admin.php:92
@@ -963,282 +987,278 @@ msgstr ""
963
  msgid "Donate"
964
  msgstr ""
965
 
966
- #: classes/class-s2-admin.php:247 classes/class-s2-admin.php:248
967
  msgid "Subscribe2 Notification Override"
968
  msgstr ""
969
 
970
- #: classes/class-s2-admin.php:258
971
  msgid ""
972
  "Check here to disable sending of an email notification for this post/page"
973
  msgstr ""
974
 
975
- #: classes/class-s2-admin.php:330
976
  msgctxt "Comma Separated Column Header names for CSV Export"
977
  msgid "User Email,User Type,User Name,Confirm Date,IP"
978
  msgstr ""
979
 
980
- #: classes/class-s2-admin.php:355
981
  msgid "Registered User"
982
  msgstr ""
983
 
984
- #: classes/class-s2-admin.php:360
985
  msgid "Confirmed Public Subscriber"
986
  msgstr ""
987
 
988
- #: classes/class-s2-admin.php:362
989
  msgid "Unconfirmed Public Subscriber"
990
  msgstr ""
991
 
992
- #: classes/class-s2-admin.php:388 classes/class-s2-admin.php:445
993
- #: classes/class-s2-admin.php:485
994
  msgid "Select / Unselect All"
995
  msgstr ""
996
 
997
- #: classes/class-s2-admin.php:537
998
  msgid "All Users and Subscribers"
999
  msgstr ""
1000
 
1001
- #: classes/class-s2-admin.php:539
1002
  msgid "Confirmed"
1003
  msgstr ""
1004
 
1005
- #: classes/class-s2-admin.php:540
1006
  msgid "Unconfirmed"
1007
  msgstr ""
1008
 
1009
- #: classes/class-s2-admin.php:541
1010
  msgid "All Registered Users"
1011
  msgstr ""
1012
 
1013
- #: classes/class-s2-admin.php:637
1014
  msgid "Post Author"
1015
  msgstr ""
1016
 
1017
- #: classes/class-s2-admin.php:661
1018
  msgid ""
1019
  "The WordPress cron functions may be disabled on this server. Digest "
1020
  "notifications may not work."
1021
  msgstr ""
1022
 
1023
- #: classes/class-s2-admin.php:666
1024
  msgid "For each Post"
1025
  msgstr ""
1026
 
1027
- #: classes/class-s2-admin.php:683
1028
  msgid "Current UTC time is"
1029
  msgstr ""
1030
 
1031
- #: classes/class-s2-admin.php:685
1032
  msgid "Current blog time is"
1033
  msgstr ""
1034
 
1035
- #: classes/class-s2-admin.php:687
1036
  msgid "Next email notification will be sent when your blog time is after"
1037
  msgstr ""
1038
 
1039
- #: classes/class-s2-admin.php:709
1040
  msgid "Attempt to resend the last Digest Notification email"
1041
  msgstr ""
1042
 
1043
- #: classes/class-s2-admin.php:710
1044
  msgid "Resend Digest"
1045
  msgstr ""
1046
 
1047
- #: classes/class-s2-admin.php:948
1048
  msgid "Email subscription"
1049
  msgstr ""
1050
 
1051
- #: classes/class-s2-admin.php:950
1052
  msgid "Subscribe / Unsubscribe"
1053
  msgstr ""
1054
 
1055
- #: classes/class-s2-admin.php:951
1056
  msgid "Receive notifications"
1057
  msgstr ""
1058
 
1059
- #: classes/class-s2-admin.php:952
1060
  msgid ""
1061
  "Check if you want to receive email notification when new posts are published"
1062
  msgstr ""
1063
 
1064
- #: classes/class-s2-core.php:20
1065
- msgid "To manage your subscription options please <a href=\"%1$s\">login.</a>"
1066
  msgstr ""
1067
 
1068
- #: classes/class-s2-core.php:22
1069
- msgid ""
1070
- "You may manage your subscription options from your <a href=\"%1$s\">profile</"
1071
- "a>"
1072
  msgstr ""
1073
 
1074
- #: classes/class-s2-core.php:28
1075
- msgid ""
1076
- "<a href=\"%1$s\">Subscribe</a> to email notifications when this blog posts "
1077
- "new content."
1078
  msgstr ""
1079
 
1080
- #: classes/class-s2-core.php:32
1081
- msgid "A confirmation message is on its way!"
1082
  msgstr ""
1083
 
1084
- #: classes/class-s2-core.php:34
1085
- msgid "That email address is already subscribed."
1086
  msgstr ""
1087
 
1088
- #: classes/class-s2-core.php:36
1089
- msgid "That email address is not subscribed."
1090
  msgstr ""
1091
 
1092
- #: classes/class-s2-core.php:38
1093
- msgid "Sorry, but that does not look like an email address to me."
1094
  msgstr ""
1095
 
1096
- #: classes/class-s2-core.php:40
1097
- msgid ""
1098
- "Sorry, email addresses at that domain are currently barred due to spam, "
1099
- "please use an alternative email address."
1100
  msgstr ""
1101
 
1102
- #: classes/class-s2-core.php:42
1103
  msgid ""
1104
- "Sorry, there seems to be an error on the server. Please try again later."
 
1105
  msgstr ""
1106
 
1107
- #: classes/class-s2-core.php:44
1108
- msgid "You must create a WordPress page for this plugin to work correctly."
1109
  msgstr ""
1110
 
1111
- #: classes/class-s2-core.php:46
1112
- msgid "Message sent!"
1113
  msgstr ""
1114
 
1115
- #: classes/class-s2-core.php:48
1116
- msgid "Message failed!"
1117
  msgstr ""
1118
 
1119
- #: classes/class-s2-core.php:51
1120
- msgid "No such email address is registered."
1121
  msgstr ""
1122
 
1123
- #: classes/class-s2-core.php:53
1124
- msgid "You have successfully subscribed!"
1125
  msgstr ""
1126
 
1127
- #: classes/class-s2-core.php:55
1128
- msgid "You have successfully unsubscribed."
1129
  msgstr ""
1130
 
1131
- #: classes/class-s2-core.php:57
1132
- msgid "subscribe"
1133
  msgstr ""
1134
 
1135
- #: classes/class-s2-core.php:59
1136
- msgid "unsubscribe"
1137
  msgstr ""
1138
 
1139
- #: classes/class-s2-core.php:62
1140
- msgid "Options saved!"
1141
  msgstr ""
1142
 
1143
- #: classes/class-s2-core.php:63
1144
- msgid "Options reset!"
 
 
1145
  msgstr ""
1146
 
1147
- #: classes/class-s2-core.php:634
1148
- msgid "Plain Text Excerpt Preview"
 
 
1149
  msgstr ""
1150
 
1151
- #: classes/class-s2-core.php:636
1152
- msgid "Plain Text Full Preview"
1153
  msgstr ""
1154
 
1155
- #: classes/class-s2-core.php:638
1156
- msgid "HTML Excerpt Preview"
1157
  msgstr ""
1158
 
1159
- #: classes/class-s2-core.php:640
1160
- msgid "HTML Full Preview"
1161
  msgstr ""
1162
 
1163
- #: classes/class-s2-core.php:1187
1164
- msgid "Check here to Subscribe to email notifications for new posts"
1165
  msgstr ""
1166
 
1167
- #: classes/class-s2-core.php:1193
1168
  msgid ""
1169
- "By registering with this blog you are also agreeing to receive email "
1170
- "notifications for new posts but you can unsubscribe at anytime"
1171
- msgstr ""
1172
-
1173
- #: classes/class-s2-core.php:1219
1174
- msgid "Check here to Subscribe to notifications for new posts"
1175
- msgstr ""
1176
-
1177
- #: classes/class-s2-core.php:1312
1178
- msgid "Weekly"
1179
  msgstr ""
1180
 
1181
- #: classes/class-s2-core.php:1451 classes/class-s2-core.php:1452
1182
- msgid "Author"
 
1183
  msgstr ""
1184
 
1185
- #: classes/class-s2-core.php:1458
1186
- msgid "Posted on"
1187
  msgstr ""
1188
 
1189
- #: classes/class-s2-core.php:1476 classes/class-s2-core.php:1477
1190
- msgid "Posted in"
1191
  msgstr ""
1192
 
1193
- #: classes/class-s2-core.php:1482 classes/class-s2-core.php:1483
1194
- msgid "Tagged as"
1195
  msgstr ""
1196
 
1197
- #: classes/class-s2-core.php:1545
1198
- msgid "Digest Email"
1199
  msgstr ""
1200
 
1201
- #: classes/class-s2-core.php:1555
1202
- msgid "Digest Preview"
1203
  msgstr ""
1204
 
1205
- #: classes/class-s2-frontend.php:57
1206
  msgid "Enter email address..."
1207
  msgstr ""
1208
 
1209
- #: classes/class-s2-frontend.php:77 classes/class-s2-frontend.php:79
1210
  msgid "Your email:"
1211
  msgstr ""
1212
 
1213
- #: classes/class-s2-frontend.php:198
 
 
 
 
1214
  msgid "Subscription Confirmation"
1215
  msgstr ""
1216
 
1217
- #: classes/class-s2-frontend.php:200
1218
  msgid "Unsubscription Confirmation"
1219
  msgstr ""
1220
 
1221
- #: classes/class-s2-frontend.php:239
1222
  msgid "New Subscription"
1223
  msgstr ""
1224
 
1225
- #: classes/class-s2-frontend.php:241
1226
  msgid "subscribed to email notifications!"
1227
  msgstr ""
1228
 
1229
- #: classes/class-s2-frontend.php:263
1230
  msgid "New Unsubscription"
1231
  msgstr ""
1232
 
1233
- #: classes/class-s2-frontend.php:265
1234
  msgid "unsubscribed from email notifications!"
1235
  msgstr ""
1236
 
1237
- #: classes/class-s2-frontend.php:292
1238
  msgid "[Un]Subscribe to Posts"
1239
  msgstr ""
1240
 
1241
- #: classes/class-s2-frontend.php:327 classes/class-s2-frontend.php:329
1242
  msgid "Subscribe to this blog"
1243
  msgstr ""
1244
 
@@ -1477,9 +1497,9 @@ msgid ""
1477
  "a site level"
1478
  msgstr ""
1479
 
1480
- #. #-#-#-#-# Subscribe2.pot (Subscribe2 9.1) #-#-#-#-#
1481
  #. Plugin URI of the plugin/theme
1482
- #. #-#-#-#-# Subscribe2.pot (Subscribe2 9.1) #-#-#-#-#
1483
  #. Author URI of the plugin/theme
1484
  msgid "http://subscribe2.wordpress.com"
1485
  msgstr ""
2
  # This file is distributed under the same license as the Subscribe2 package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Subscribe2 9.3\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/Subscribe2\n"
7
+ "POT-Creation-Date: 2014-04-16 20:46:57+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
24
  msgid "Preview message sent!"
25
  msgstr ""
26
 
27
+ #: admin/send_email.php:85
28
+ msgid "Message sent!"
29
+ msgstr ""
30
+
31
+ #: admin/send_email.php:89
32
+ msgid "Message failed!"
33
+ msgstr ""
34
+
35
  #: admin/send_email.php:99
36
  msgid "Send an email to subscribers"
37
  msgstr ""
60
  msgid "Send"
61
  msgstr ""
62
 
63
+ #: admin/settings.php:13
64
+ msgid "Options reset!"
65
+ msgstr ""
66
+
67
  #: admin/settings.php:24
68
  msgid "Preview message(s) sent to logged in user"
69
  msgstr ""
78
  msgid "Attempt made to resend the Digest Notification email"
79
  msgstr ""
80
 
81
+ #: admin/settings.php:111
82
+ msgid "Options saved!"
83
+ msgstr ""
84
+
85
+ #: admin/settings.php:120
86
+ msgid "You must create a WordPress page for this plugin to work correctly."
87
+ msgstr ""
88
+
89
+ #: admin/settings.php:135
90
  msgid ""
91
  "Your chosen email type (per-post or digest) does not support the following "
92
  "keywords:"
93
  msgstr ""
94
 
95
+ #: admin/settings.php:136
96
  msgid "Modify your template"
97
  msgstr ""
98
 
99
+ #: admin/settings.php:149
100
  msgid ""
101
+ "You appear to be sending notifications from %1$s, which has a different "
102
+ "domain name than your blog server %2$s. This may result in failed emails."
103
  msgstr ""
104
 
105
+ #: admin/settings.php:160 classes/class-s2-admin.php:81
106
  msgid "Email Settings"
107
  msgstr ""
108
 
109
+ #: admin/settings.php:161 classes/class-s2-admin.php:89
110
  msgid "Templates"
111
  msgstr ""
112
 
113
+ #: admin/settings.php:162 classes/class-s2-admin.php:96
114
  msgid "Registered Users"
115
  msgstr ""
116
 
117
+ #: admin/settings.php:163 classes/class-s2-admin.php:103
118
  msgid "Appearance"
119
  msgstr ""
120
 
121
+ #: admin/settings.php:164 classes/class-s2-admin.php:110
122
  msgid "Miscellaneous"
123
  msgstr ""
124
 
125
+ #: admin/settings.php:185
126
  msgid ""
127
  "Restrict the number of <strong>recipients per email</strong> to (0 for "
128
  "unlimited)"
129
  msgstr ""
130
 
131
+ #: admin/settings.php:187 admin/settings.php:424
132
+ #: classes/class-s2-admin.php:696 classes/class-s2-list-table.php:36
133
  msgid "Edit"
134
  msgstr ""
135
 
136
+ #: admin/settings.php:190 admin/settings.php:427
137
+ #: classes/class-s2-admin.php:710
138
  msgid "Update"
139
  msgstr ""
140
 
141
+ #: admin/settings.php:191 admin/settings.php:428
142
+ #: classes/class-s2-admin.php:711
143
  msgid "Revert"
144
  msgstr ""
145
 
146
+ #: admin/settings.php:193
147
  msgid "Send Admins notifications for new"
148
  msgstr ""
149
 
150
+ #: admin/settings.php:195
151
  msgid "Subscriptions"
152
  msgstr ""
153
 
154
+ #: admin/settings.php:197
155
  msgid "Unsubscriptions"
156
  msgstr ""
157
 
158
+ #: admin/settings.php:199
159
  msgid "Both"
160
  msgstr ""
161
 
162
+ #: admin/settings.php:201
163
  msgid "Neither"
164
  msgstr ""
165
 
166
+ #: admin/settings.php:203
167
  msgid "Include theme CSS stylesheet in HTML notifications"
168
  msgstr ""
169
 
170
+ #: admin/settings.php:205 admin/settings.php:211 admin/settings.php:225
171
+ #: admin/settings.php:230 admin/settings.php:235 admin/settings.php:356
172
+ #: admin/settings.php:361 admin/settings.php:375 admin/settings.php:382
173
+ #: admin/settings.php:396 admin/settings.php:402 admin/subscribers.php:281
174
  #: admin/your_subscriptions.php:123 admin/your_subscriptions.php:164
175
  msgid "Yes"
176
  msgstr ""
177
 
178
+ #: admin/settings.php:207 admin/settings.php:213 admin/settings.php:227
179
+ #: admin/settings.php:232 admin/settings.php:237 admin/settings.php:353
180
+ #: admin/settings.php:358 admin/settings.php:363 admin/settings.php:377
181
+ #: admin/settings.php:384 admin/settings.php:393 admin/settings.php:398
182
+ #: admin/settings.php:404 admin/subscribers.php:283
183
  #: admin/your_subscriptions.php:125 admin/your_subscriptions.php:168
184
  msgid "No"
185
  msgstr ""
186
 
187
+ #: admin/settings.php:209
188
  msgid "Send Emails for Pages"
189
  msgstr ""
190
 
191
+ #: admin/settings.php:217
192
  msgid ""
193
  "Subscribe2 will send email notifications for the following custom post types"
194
  msgstr ""
195
 
196
+ #: admin/settings.php:223
197
  msgid "Send Emails for Password Protected Posts"
198
  msgstr ""
199
 
200
+ #: admin/settings.php:228
201
  msgid "Send Emails for Private Posts"
202
  msgstr ""
203
 
204
+ #: admin/settings.php:233
205
  msgid "Include Sticky Posts at the top of all Digest Notifications"
206
  msgstr ""
207
 
208
+ #: admin/settings.php:238
209
  msgid "Send Email From"
210
  msgstr ""
211
 
212
+ #: admin/settings.php:243
213
  msgid "Send Emails"
214
  msgstr ""
215
 
216
+ #: admin/settings.php:245
217
  msgid "For digest notifications, date order for posts is"
218
  msgstr ""
219
 
220
+ #: admin/settings.php:247
221
  msgid "Descending"
222
  msgstr ""
223
 
224
+ #: admin/settings.php:249
225
  msgid "Ascending"
226
  msgstr ""
227
 
228
+ #: admin/settings.php:251
229
  msgid "Add Tracking Parameters to the Permalink"
230
  msgstr ""
231
 
232
+ #: admin/settings.php:253
233
  msgid ""
234
  "eg. utm_source=subscribe2&amp;utm_medium=email&amp;"
235
  "utm_campaign=postnotify&amp;utm_id={ID}&amp;utm_title={TITLE}"
236
  msgstr ""
237
 
238
+ #: admin/settings.php:264
239
  msgid "Notification email (must not be empty)"
240
  msgstr ""
241
 
242
+ #: admin/settings.php:265 admin/settings.php:296 admin/settings.php:301
243
  msgid "Subject Line"
244
  msgstr ""
245
 
246
+ #: admin/settings.php:270
247
  msgid "Send Email Preview"
248
  msgstr ""
249
 
250
+ #: admin/settings.php:271
251
  msgid "Message substitutions"
252
  msgstr ""
253
 
254
+ #: admin/settings.php:273
255
  msgid ""
256
  "IF THE FOLLOWING KEYWORDS ARE ALSO IN YOUR POST THEY WILL BE SUBSTITUTED"
257
  msgstr ""
258
 
259
+ #: admin/settings.php:276
260
  msgid "the post's title<br />(<i>for per-post emails only</i>)"
261
  msgstr ""
262
 
263
+ #: admin/settings.php:277
264
  msgid ""
265
  "the excerpt or the entire post<br />(<i>based on the subscriber's "
266
  "preferences</i>)"
267
  msgstr ""
268
 
269
+ #: admin/settings.php:278
270
  msgid ""
271
  "the excerpt of the post and the time it was posted<br />(<i>for digest "
272
  "emails only</i>)"
273
  msgstr ""
274
 
275
+ #: admin/settings.php:279
276
  msgid "a list of post titles<br />(<i>for digest emails only</i>)"
277
  msgstr ""
278
 
279
+ #: admin/settings.php:280
280
  msgid ""
281
  "a list of post titles followed by links to the articles<br />(<i>for digest "
282
  "emails only</i>)"
283
  msgstr ""
284
 
285
+ #: admin/settings.php:281
286
  msgid ""
287
  "a reference style list of links at the end of the email with corresponding "
288
  "numbers in the content<br />(<i>for the full content plain text per-post "
289
  "email only</i>)"
290
  msgstr ""
291
 
292
+ #: admin/settings.php:282
293
  msgid "the post's permalink<br />(<i>for per-post emails only</i>)"
294
  msgstr ""
295
 
296
+ #: admin/settings.php:283
297
  msgid "the post's permalink after conversion by TinyURL"
298
  msgstr ""
299
 
300
+ #: admin/settings.php:284
301
  msgid "the date the post was made<br />(<i>for per-post emails only</i>)"
302
  msgstr ""
303
 
304
+ #: admin/settings.php:285
305
  msgid "the time the post was made<br />(<i>for per-post emails only</i>)"
306
  msgstr ""
307
 
308
+ #: admin/settings.php:286
309
  msgid "the admin or post author's name"
310
  msgstr ""
311
 
312
+ #: admin/settings.php:287
313
  msgid "the admin or post author's email"
314
  msgstr ""
315
 
316
+ #: admin/settings.php:288
317
  msgid "the post author's name"
318
  msgstr ""
319
 
320
+ #: admin/settings.php:289
321
  msgid ""
322
  "the generated link to confirm a request<br />(<i>only used in the "
323
  "confirmation email template</i>)"
324
  msgstr ""
325
 
326
+ #: admin/settings.php:290
327
  msgid ""
328
  "Action performed by LINK in confirmation email<br />(<i>only used in the "
329
  "confirmation email template</i>)"
330
  msgstr ""
331
 
332
+ #: admin/settings.php:291
333
  msgid "the post's assigned categories"
334
  msgstr ""
335
 
336
+ #: admin/settings.php:292
337
  msgid "the post's assigned Tags"
338
  msgstr ""
339
 
340
+ #: admin/settings.php:293
341
  msgid ""
342
  "the number of posts included in the digest email<br />(<i>for digest emails "
343
  "only</i>)"
344
  msgstr ""
345
 
346
+ #: admin/settings.php:295
347
  msgid "Subscribe / Unsubscribe confirmation email"
348
  msgstr ""
349
 
350
+ #: admin/settings.php:300
351
  msgid "Reminder email to Unconfirmed Subscribers"
352
  msgstr ""
353
 
354
+ #: admin/settings.php:312
355
  msgid "Compulsory Categories"
356
  msgstr ""
357
 
358
+ #: admin/settings.php:314
359
  msgid ""
360
  "Compulsory categories will be checked by default for Registered Subscribers"
361
  msgstr ""
362
 
363
+ #: admin/settings.php:321
364
  msgid "Excluded Categories"
365
  msgstr ""
366
 
367
+ #: admin/settings.php:323
368
  msgid ""
369
  "Posts assigned to any Excluded Category do not generate notifications and "
370
  "are not included in digest notifications"
371
  msgstr ""
372
 
373
+ #: admin/settings.php:327
374
  msgid "Allow registered users to subscribe to excluded categories?"
375
  msgstr ""
376
 
377
+ #: admin/settings.php:335
378
  msgid "Excluded Formats"
379
  msgstr ""
380
 
381
+ #: admin/settings.php:337
382
  msgid ""
383
  "Posts assigned to any Excluded Format do not generate notifications and are "
384
  "not included in digest notifications"
385
  msgstr ""
386
 
387
+ #: admin/settings.php:345
388
  msgid "Auto-Subscribe"
389
  msgstr ""
390
 
391
+ #: admin/settings.php:347
392
  msgid "Subscribe new users registering with your blog"
393
  msgstr ""
394
 
395
+ #: admin/settings.php:349
396
  msgid "Automatically"
397
  msgstr ""
398
 
399
+ #: admin/settings.php:351
400
  msgid "Display option on Registration Form"
401
  msgstr ""
402
 
403
+ #: admin/settings.php:354
404
  msgid "Auto-subscribe includes any excluded categories"
405
  msgstr ""
406
 
407
+ #: admin/settings.php:359
408
  msgid "Registration Form option is checked by default"
409
  msgstr ""
410
 
411
+ #: admin/settings.php:364
412
  msgid "Auto-subscribe users to receive email as"
413
  msgstr ""
414
 
415
+ #: admin/settings.php:366 admin/subscribers.php:271
416
  #: admin/your_subscriptions.php:112
417
  msgid "HTML - Full"
418
  msgstr ""
419
 
420
+ #: admin/settings.php:368 admin/subscribers.php:272
421
  #: admin/your_subscriptions.php:114
422
  msgid "HTML - Excerpt"
423
  msgstr ""
424
 
425
+ #: admin/settings.php:370 admin/subscribers.php:273
426
  #: admin/your_subscriptions.php:116
427
  msgid "Plain Text - Full"
428
  msgstr ""
429
 
430
+ #: admin/settings.php:372 admin/subscribers.php:274
431
  #: admin/your_subscriptions.php:118
432
  msgid "Plain Text - Excerpt"
433
  msgstr ""
434
 
435
+ #: admin/settings.php:373
436
  msgid "Registered Users have the option to auto-subscribe to new categories"
437
  msgstr ""
438
 
439
+ #: admin/settings.php:379
440
  msgid "New categories are immediately excluded"
441
  msgstr ""
442
 
443
+ #: admin/settings.php:380
444
  msgid ""
445
  "Option for Registered Users to auto-subscribe to new categories is checked "
446
  "by default"
447
  msgstr ""
448
 
449
+ #: admin/settings.php:387
450
  msgid "Display checkbox to allow subscriptions from the comment form"
451
  msgstr ""
452
 
453
+ #: admin/settings.php:389
454
  msgid "Before the Comment Submit button"
455
  msgstr ""
456
 
457
+ #: admin/settings.php:391
458
  msgid "After the Comment Submit button"
459
  msgstr ""
460
 
461
+ #: admin/settings.php:394
462
  msgid "Comment form checkbox is checked by default"
463
  msgstr ""
464
 
465
+ #: admin/settings.php:400
466
  msgid "Show one-click subscription on profile page"
467
  msgstr ""
468
 
469
+ #: admin/settings.php:415
470
  msgid "Set default Subscribe2 page as"
471
  msgstr ""
472
 
473
+ #: admin/settings.php:417
474
  msgid "Select a page"
475
  msgstr ""
476
 
477
+ #: admin/settings.php:422
478
  msgid "Set the number of Subscribers displayed per page"
479
  msgstr ""
480
 
481
+ #: admin/settings.php:432
482
  msgid "Show a link to your subscription page in \"meta\"?"
483
  msgstr ""
484
 
485
+ #: admin/settings.php:436
486
  msgid "Show the Subscribe2 button on the Write toolbar?"
487
  msgstr ""
488
 
489
+ #: admin/settings.php:440
490
  msgid "Enable AJAX style subscription form?"
491
  msgstr ""
492
 
493
+ #: admin/settings.php:444
494
  msgid "Enable Subscribe2 Widget?"
495
  msgstr ""
496
 
497
+ #: admin/settings.php:448
498
  msgid "Enable Subscribe2 Counter Widget?"
499
  msgstr ""
500
 
501
+ #: admin/settings.php:452
502
  msgid "Disable email notifications is checked by default on authoring pages?"
503
  msgstr ""
504
 
505
+ #: admin/settings.php:460
506
  msgid "Barred Domains"
507
  msgstr ""
508
 
509
+ #: admin/settings.php:462
510
  msgid ""
511
  "Enter domains to bar from public subscriptions: <br /> (Use a new line for "
512
  "each entry and omit the \"@\" symbol, for example email.com)"
513
  msgstr ""
514
 
515
+ #: admin/settings.php:465
516
  msgid "Links"
517
  msgstr ""
518
 
519
+ #: admin/settings.php:466
520
  msgid "Plugin Site"
521
  msgstr ""
522
 
523
+ #: admin/settings.php:467 classes/class-s2-admin.php:162
524
  msgid "Translation Files"
525
  msgstr ""
526
 
527
+ #: admin/settings.php:468
528
  msgid "Plugin Forum"
529
  msgstr ""
530
 
531
+ #: admin/settings.php:469
532
  msgid "Plugin Blog"
533
  msgstr ""
534
 
535
+ #: admin/settings.php:470
536
  msgid "Make a donation via PayPal"
537
  msgstr ""
538
 
539
+ #: admin/settings.php:476
540
  msgid "Submit"
541
  msgstr ""
542
 
543
+ #: admin/settings.php:480
544
  msgid "Reset to Default Settings"
545
  msgstr ""
546
 
547
+ #: admin/settings.php:481
548
  msgid ""
549
  "Use this to reset all options to their defaults. This <strong><em>will not</"
550
  "em></strong> modify your list of subscribers."
551
  msgstr ""
552
 
553
+ #: admin/settings.php:483
554
  msgid "RESET"
555
  msgstr ""
556
 
614
  msgstr ""
615
 
616
  #: admin/subscribers.php:186 classes/class-s2-admin.php:60
617
+ #: classes/class-s2-admin.php:542
618
  msgid "Public Subscribers"
619
  msgstr ""
620
 
621
  #: admin/subscribers.php:186 classes/class-s2-admin.php:65
622
+ #: classes/class-s2-admin.php:546
623
  msgid "Registered Subscribers"
624
  msgstr ""
625
 
632
  msgstr ""
633
 
634
  #: admin/subscribers.php:202 admin/subscribers.php:266
635
+ #: admin/your_subscriptions.php:263 classes/class-s2-frontend.php:67
636
  msgid "Subscribe"
637
  msgstr ""
638
 
639
  #: admin/subscribers.php:203 admin/subscribers.php:267
640
+ #: admin/your_subscriptions.php:242 classes/class-s2-frontend.php:66
641
  msgid "Unsubscribe"
642
  msgstr ""
643
 
696
  msgstr ""
697
 
698
  #: admin/subscribers.php:279
699
+ msgid "Subscribe Selected Users to receive a periodic digest notification"
700
  msgstr ""
701
 
702
  #: admin/subscribers.php:284
703
  msgid "Bulk Update Digest Subscription"
704
  msgstr ""
705
 
706
+ #: admin/subscribers.php:298
707
+ msgid "You are about to delete user account(s). Are you sure?"
708
+ msgstr ""
709
+
710
  #: admin/your_subscriptions.php:90
711
  msgid "Subscription preferences updated."
712
  msgstr ""
783
  msgid "Subscribe to new blogs"
784
  msgstr ""
785
 
786
+ #. #-#-#-#-# Subscribe2.pot (Subscribe2 9.3) #-#-#-#-#
787
  #. Plugin Name of the plugin/theme
788
  #: classes/class-s2-admin.php:8 include/widget.php:17
789
  msgid "Subscribe2"
906
  #: classes/class-s2-admin.php:91
907
  msgid ""
908
  "There are special {KEYWORDS} that are used by Subscribe2 to place content "
909
+ "into the final email. The template also accepts regular text and HTML as "
910
+ "desired in the final emails."
911
  msgstr ""
912
 
913
  #: classes/class-s2-admin.php:92
987
  msgid "Donate"
988
  msgstr ""
989
 
990
+ #: classes/class-s2-admin.php:251 classes/class-s2-admin.php:252
991
  msgid "Subscribe2 Notification Override"
992
  msgstr ""
993
 
994
+ #: classes/class-s2-admin.php:262
995
  msgid ""
996
  "Check here to disable sending of an email notification for this post/page"
997
  msgstr ""
998
 
999
+ #: classes/class-s2-admin.php:334
1000
  msgctxt "Comma Separated Column Header names for CSV Export"
1001
  msgid "User Email,User Type,User Name,Confirm Date,IP"
1002
  msgstr ""
1003
 
1004
+ #: classes/class-s2-admin.php:359
1005
  msgid "Registered User"
1006
  msgstr ""
1007
 
1008
+ #: classes/class-s2-admin.php:364
1009
  msgid "Confirmed Public Subscriber"
1010
  msgstr ""
1011
 
1012
+ #: classes/class-s2-admin.php:366
1013
  msgid "Unconfirmed Public Subscriber"
1014
  msgstr ""
1015
 
1016
+ #: classes/class-s2-admin.php:392 classes/class-s2-admin.php:449
1017
+ #: classes/class-s2-admin.php:489
1018
  msgid "Select / Unselect All"
1019
  msgstr ""
1020
 
1021
+ #: classes/class-s2-admin.php:541
1022
  msgid "All Users and Subscribers"
1023
  msgstr ""
1024
 
1025
+ #: classes/class-s2-admin.php:543
1026
  msgid "Confirmed"
1027
  msgstr ""
1028
 
1029
+ #: classes/class-s2-admin.php:544
1030
  msgid "Unconfirmed"
1031
  msgstr ""
1032
 
1033
+ #: classes/class-s2-admin.php:545
1034
  msgid "All Registered Users"
1035
  msgstr ""
1036
 
1037
+ #: classes/class-s2-admin.php:641
1038
  msgid "Post Author"
1039
  msgstr ""
1040
 
1041
+ #: classes/class-s2-admin.php:665
1042
  msgid ""
1043
  "The WordPress cron functions may be disabled on this server. Digest "
1044
  "notifications may not work."
1045
  msgstr ""
1046
 
1047
+ #: classes/class-s2-admin.php:670
1048
  msgid "For each Post"
1049
  msgstr ""
1050
 
1051
+ #: classes/class-s2-admin.php:687
1052
  msgid "Current UTC time is"
1053
  msgstr ""
1054
 
1055
+ #: classes/class-s2-admin.php:689
1056
  msgid "Current blog time is"
1057
  msgstr ""
1058
 
1059
+ #: classes/class-s2-admin.php:691
1060
  msgid "Next email notification will be sent when your blog time is after"
1061
  msgstr ""
1062
 
1063
+ #: classes/class-s2-admin.php:713
1064
  msgid "Attempt to resend the last Digest Notification email"
1065
  msgstr ""
1066
 
1067
+ #: classes/class-s2-admin.php:714
1068
  msgid "Resend Digest"
1069
  msgstr ""
1070
 
1071
+ #: classes/class-s2-admin.php:952
1072
  msgid "Email subscription"
1073
  msgstr ""
1074
 
1075
+ #: classes/class-s2-admin.php:954
1076
  msgid "Subscribe / Unsubscribe"
1077
  msgstr ""
1078
 
1079
+ #: classes/class-s2-admin.php:955
1080
  msgid "Receive notifications"
1081
  msgstr ""
1082
 
1083
+ #: classes/class-s2-admin.php:956
1084
  msgid ""
1085
  "Check if you want to receive email notification when new posts are published"
1086
  msgstr ""
1087
 
1088
+ #: classes/class-s2-core.php:594
1089
+ msgid "Plain Text Excerpt Preview"
1090
  msgstr ""
1091
 
1092
+ #: classes/class-s2-core.php:596
1093
+ msgid "Plain Text Full Preview"
 
 
1094
  msgstr ""
1095
 
1096
+ #: classes/class-s2-core.php:598
1097
+ msgid "HTML Excerpt Preview"
 
 
1098
  msgstr ""
1099
 
1100
+ #: classes/class-s2-core.php:600
1101
+ msgid "HTML Full Preview"
1102
  msgstr ""
1103
 
1104
+ #: classes/class-s2-core.php:636
1105
+ msgid "Like"
1106
  msgstr ""
1107
 
1108
+ #: classes/class-s2-core.php:639
1109
+ msgid "Tweet"
1110
  msgstr ""
1111
 
1112
+ #: classes/class-s2-core.php:642
1113
+ msgid "Google+"
1114
  msgstr ""
1115
 
1116
+ #: classes/class-s2-core.php:1164
1117
+ msgid "Check here to Subscribe to email notifications for new posts"
 
 
1118
  msgstr ""
1119
 
1120
+ #: classes/class-s2-core.php:1170
1121
  msgid ""
1122
+ "By registering with this blog you are also agreeing to receive email "
1123
+ "notifications for new posts but you can unsubscribe at anytime"
1124
  msgstr ""
1125
 
1126
+ #: classes/class-s2-core.php:1196
1127
+ msgid "Check here to Subscribe to notifications for new posts"
1128
  msgstr ""
1129
 
1130
+ #: classes/class-s2-core.php:1295
1131
+ msgid "Weekly"
1132
  msgstr ""
1133
 
1134
+ #: classes/class-s2-core.php:1444 classes/class-s2-core.php:1445
1135
+ msgid "Author"
1136
  msgstr ""
1137
 
1138
+ #: classes/class-s2-core.php:1451
1139
+ msgid "Posted on"
1140
  msgstr ""
1141
 
1142
+ #: classes/class-s2-core.php:1469 classes/class-s2-core.php:1470
1143
+ msgid "Posted in"
1144
  msgstr ""
1145
 
1146
+ #: classes/class-s2-core.php:1475 classes/class-s2-core.php:1476
1147
+ msgid "Tagged as"
1148
  msgstr ""
1149
 
1150
+ #: classes/class-s2-core.php:1548
1151
+ msgid "Digest Email"
1152
  msgstr ""
1153
 
1154
+ #: classes/class-s2-core.php:1558
1155
+ msgid "Digest Preview"
1156
  msgstr ""
1157
 
1158
+ #: classes/class-s2-frontend.php:7
1159
+ msgid "To manage your subscription options please <a href=\"%1$s\">login.</a>"
1160
  msgstr ""
1161
 
1162
+ #: classes/class-s2-frontend.php:9
1163
+ msgid ""
1164
+ "You may manage your subscription options from your <a href=\"%1$s\">profile</"
1165
+ "a>"
1166
  msgstr ""
1167
 
1168
+ #: classes/class-s2-frontend.php:15
1169
+ msgid ""
1170
+ "<a href=\"%1$s\">Subscribe</a> to email notifications when this blog posts "
1171
+ "new content."
1172
  msgstr ""
1173
 
1174
+ #: classes/class-s2-frontend.php:19
1175
+ msgid "A confirmation message is on its way!"
1176
  msgstr ""
1177
 
1178
+ #: classes/class-s2-frontend.php:21
1179
+ msgid "That email address is already subscribed."
1180
  msgstr ""
1181
 
1182
+ #: classes/class-s2-frontend.php:23
1183
+ msgid "That email address is not subscribed."
1184
  msgstr ""
1185
 
1186
+ #: classes/class-s2-frontend.php:25
1187
+ msgid "Sorry, but that does not look like an email address to me."
1188
  msgstr ""
1189
 
1190
+ #: classes/class-s2-frontend.php:27
1191
  msgid ""
1192
+ "Sorry, email addresses at that domain are currently barred due to spam, "
1193
+ "please use an alternative email address."
 
 
 
 
 
 
 
 
1194
  msgstr ""
1195
 
1196
+ #: classes/class-s2-frontend.php:29
1197
+ msgid ""
1198
+ "Sorry, there seems to be an error on the server. Please try again later."
1199
  msgstr ""
1200
 
1201
+ #: classes/class-s2-frontend.php:32
1202
+ msgid "No such email address is registered."
1203
  msgstr ""
1204
 
1205
+ #: classes/class-s2-frontend.php:34
1206
+ msgid "You have successfully subscribed!"
1207
  msgstr ""
1208
 
1209
+ #: classes/class-s2-frontend.php:36
1210
+ msgid "You have successfully unsubscribed."
1211
  msgstr ""
1212
 
1213
+ #: classes/class-s2-frontend.php:38
1214
+ msgid "subscribe"
1215
  msgstr ""
1216
 
1217
+ #: classes/class-s2-frontend.php:40
1218
+ msgid "unsubscribe"
1219
  msgstr ""
1220
 
1221
+ #: classes/class-s2-frontend.php:97
1222
  msgid "Enter email address..."
1223
  msgstr ""
1224
 
1225
+ #: classes/class-s2-frontend.php:117 classes/class-s2-frontend.php:119
1226
  msgid "Your email:"
1227
  msgstr ""
1228
 
1229
+ #: classes/class-s2-frontend.php:146
1230
+ msgid "Slow down, you move too fast."
1231
+ msgstr ""
1232
+
1233
+ #: classes/class-s2-frontend.php:245
1234
  msgid "Subscription Confirmation"
1235
  msgstr ""
1236
 
1237
+ #: classes/class-s2-frontend.php:247
1238
  msgid "Unsubscription Confirmation"
1239
  msgstr ""
1240
 
1241
+ #: classes/class-s2-frontend.php:286
1242
  msgid "New Subscription"
1243
  msgstr ""
1244
 
1245
+ #: classes/class-s2-frontend.php:288
1246
  msgid "subscribed to email notifications!"
1247
  msgstr ""
1248
 
1249
+ #: classes/class-s2-frontend.php:310
1250
  msgid "New Unsubscription"
1251
  msgstr ""
1252
 
1253
+ #: classes/class-s2-frontend.php:312
1254
  msgid "unsubscribed from email notifications!"
1255
  msgstr ""
1256
 
1257
+ #: classes/class-s2-frontend.php:339
1258
  msgid "[Un]Subscribe to Posts"
1259
  msgstr ""
1260
 
1261
+ #: classes/class-s2-frontend.php:374 classes/class-s2-frontend.php:376
1262
  msgid "Subscribe to this blog"
1263
  msgstr ""
1264
 
1497
  "a site level"
1498
  msgstr ""
1499
 
1500
+ #. #-#-#-#-# Subscribe2.pot (Subscribe2 9.3) #-#-#-#-#
1501
  #. Plugin URI of the plugin/theme
1502
+ #. #-#-#-#-# Subscribe2.pot (Subscribe2 9.3) #-#-#-#-#
1503
  #. Author URI of the plugin/theme
1504
  msgid "http://subscribe2.wordpress.com"
1505
  msgstr ""
{tinymce3 → tinymce}/css/content.css RENAMED
File without changes
tinymce3/editor_plugin.js → tinymce/editor_plugin3.js RENAMED
@@ -7,7 +7,7 @@
7
  cls = 'mceSubscribe2',
8
  shortcode = '[subscribe2]',
9
  pbreplaced = [],
10
- pbRE = new RegExp(/(\[|<!--)subscribe2.*(\]|-->)/g),
11
  replacer = function ( str ) {
12
  if ( -1 !== str.indexOf( 'class="mceSubscribe2' ) ) {
13
  str = pbreplaced[i];
7
  cls = 'mceSubscribe2',
8
  shortcode = '[subscribe2]',
9
  pbreplaced = [],
10
+ pbRE = new RegExp(/(\[|<!--)subscribe2.*?(\]|-->)/g),
11
  replacer = function ( str ) {
12
  if ( -1 !== str.indexOf( 'class="mceSubscribe2' ) ) {
13
  str = pbreplaced[i];
tinymce/editor_plugin3.min.js ADDED
@@ -0,0 +1 @@
 
1
+ (function(){tinymce.create('tinymce.plugins.Subscribe2Plugin',{init:function(ed,url){var i=0,pb='<img src="'+url+'/../include/spacer.gif" class="mceSubscribe2 mceItemNoResize" />',cls='mceSubscribe2',shortcode='[subscribe2]',pbreplaced=[],pbRE=new RegExp(/(\[|<!--)subscribe2.*?(\]|-->)/g),replacer=function(str){if(-1!==str.indexOf('class="mceSubscribe2')){str=pbreplaced[i]}return str};ed.addCommand('mceSubscribe2',function(){ed.execCommand('mceInsertContent',0,pb)});ed.addButton('subscribe2',{title:'Insert Subscribe2 Token',image:url+'/../include/s2_button.png',cmd:cls});ed.onInit.add(function(){ed.dom.loadCSS(url+'/css/content.css');if(ed.theme.onResolveName){ed.theme.onResolveName.add(function(th,o){if(o.node.nodeName==='IMG'&&ed.dom.hasClass(o.node,cls)){o.name='subscribe2'}})}});ed.onClick.add(function(ed,e){e=e.target;if(e.nodeName==='IMG'&&ed.dom.hasClass(e,cls)){ed.selection.select(e)}});ed.onNodeChange.add(function(ed,cm,n){cm.setActive('subscribe2',n.nodeName==='IMG'&&ed.dom.hasClass(n,cls))});ed.onBeforeSetContent.add(function(ed,o){pbreplaced=o.content.match(pbRE);o.content=o.content.replace(pbRE,pb)});ed.onPostProcess.add(function(ed,o){if(o.get){if(null!==pbreplaced){for(i=0;i<pbreplaced.length;i++){o.content=o.content.replace(/<img[^>]+>/,replacer)}}o.content=o.content.replace(/<img[^>]+>/g,function(im){if(-1!==im.indexOf('class="mceSubscribe2')){im=shortcode}return im})}})},getInfo:function(){return{longname:'Insert Subscribe2 Token',author:'Matthew Robinson',authorurl:'http://subscribe2.wordpress.com',infourl:'http://subscribe2.wordpress.com',version:tinymce.majorVersion+'.'+tinymce.minorVersion}}});tinymce.PluginManager.add('subscribe2',tinymce.plugins.Subscribe2Plugin)})();
tinymce/editor_plugin4.js ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* global tinymce */
2
+ (function () {
3
+ tinymce.create( 'tinymce.plugins.Subscribe2Plugin', {
4
+ init : function ( ed, url ) {
5
+ var i = 0,
6
+ pb = '<p><img src="' + url + '/../include/spacer.gif" class="mceSubscribe2 mceItemNoResize" /></p>',
7
+ cls = 'mceSubscribe2',
8
+ shortcode = '[subscribe2]',
9
+ pbreplaced = [],
10
+ pbRE = new RegExp(/(\[|<!--)subscribe2.*?(\]|-->)/g),
11
+ replacer = function ( str ) {
12
+ if ( -1 !== str.indexOf( 'class="mceSubscribe2' ) ) {
13
+ str = pbreplaced[i];
14
+ }
15
+ return str;
16
+ };
17
+
18
+ // Register commands
19
+ ed.addCommand( 'mceSubscribe2', function () {
20
+ ed.execCommand( 'mceInsertContent', 0, pb );
21
+ });
22
+
23
+ // Register buttons
24
+ ed.addButton( 'subscribe2', {
25
+ title : 'Insert Subscribe2 Token',
26
+ image : url + '/../include/s2_button.png',
27
+ cmd : cls
28
+ });
29
+
30
+ // load the CSS and enable it on the right class
31
+ ed.on('init', function () {
32
+ ed.dom.loadCSS( url + '/css/content.css' );
33
+
34
+ if ( ed.theme.onResolveName ) {
35
+ ed.theme.onResolveName.add(function ( th, o ) {
36
+ if ( o.node.nodeName === 'IMG' && ed.dom.hasClass( o.node, cls ) ) {
37
+ o.name = 'subscribe2';
38
+ }
39
+ });
40
+ }
41
+ });
42
+
43
+ // allow selection of the image placeholder
44
+ ed.on('click', function ( ed ) {
45
+ if ( ed.toElement.nodeName === 'IMG' && ed.toElement.className === cls ) {
46
+ ed.selection.select( ed );
47
+ }
48
+ });
49
+
50
+ // create an array of replaced shortcodes so we have additional parameters
51
+ // then swap in the graphic
52
+ ed.on('BeforeSetContent', function ( ed ) {
53
+ pbreplaced = ed.content.match( pbRE );
54
+ ed.content = ed.content.replace( pbRE, pb );
55
+ });
56
+
57
+ // swap back the array of shortcodes to preserve parameters
58
+ // replace any other instances with the default shortcode
59
+ ed.on('PostProcess', function ( ed ) {
60
+ if ( ed.get ) {
61
+ if ( null !== pbreplaced ) {
62
+ for ( i = 0; i < pbreplaced.length; i++ ) {
63
+ ed.content = ed.content.replace(/<img[^>]+>/, replacer );
64
+ }
65
+ }
66
+ ed.content = ed.content.replace( /<img[^>]+>/g, function ( im ) {
67
+ if ( -1 !== im.indexOf( 'class="mceSubscribe2' ) ) {
68
+ im = shortcode;
69
+ }
70
+ return im;
71
+ });
72
+ }
73
+ });
74
+ },
75
+
76
+ getInfo : function () {
77
+ return {
78
+ longname : 'Insert Subscribe2 Token',
79
+ author : 'Matthew Robinson',
80
+ authorurl : 'http://subscribe2.wordpress.com',
81
+ infourl : 'http://subscribe2.wordpress.com',
82
+ version : tinymce.majorVersion + '.' + tinymce.minorVersion
83
+ };
84
+ }
85
+ });
86
+
87
+ // Register plugin
88
+ tinymce.PluginManager.add( 'subscribe2', tinymce.plugins.Subscribe2Plugin );
89
+ })();
tinymce/editor_plugin4.min.js ADDED
@@ -0,0 +1 @@
 
1
+ (function(){tinymce.create('tinymce.plugins.Subscribe2Plugin',{init:function(ed,url){var i=0,pb='<p><img src="'+url+'/../include/spacer.gif" class="mceSubscribe2 mceItemNoResize" /></p>',cls='mceSubscribe2',shortcode='[subscribe2]',pbreplaced=[],pbRE=new RegExp(/(\[|<!--)subscribe2.*?(\]|-->)/g),replacer=function(str){if(-1!==str.indexOf('class="mceSubscribe2')){str=pbreplaced[i]}return str};ed.addCommand('mceSubscribe2',function(){ed.execCommand('mceInsertContent',0,pb)});ed.addButton('subscribe2',{title:'Insert Subscribe2 Token',image:url+'/../include/s2_button.png',cmd:cls});ed.on('init',function(){ed.dom.loadCSS(url+'/css/content.css');if(ed.theme.onResolveName){ed.theme.onResolveName.add(function(th,o){if(o.node.nodeName==='IMG'&&ed.dom.hasClass(o.node,cls)){o.name='subscribe2'}})}});ed.on('click',function(ed){if(ed.toElement.nodeName==='IMG'&&ed.toElement.className===cls){ed.selection.select(ed)}});ed.on('BeforeSetContent',function(ed){pbreplaced=ed.content.match(pbRE);ed.content=ed.content.replace(pbRE,pb)});ed.on('PostProcess',function(ed){if(ed.get){if(null!==pbreplaced){for(i=0;i<pbreplaced.length;i++){ed.content=ed.content.replace(/<img[^>]+>/,replacer)}}ed.content=ed.content.replace(/<img[^>]+>/g,function(im){if(-1!==im.indexOf('class="mceSubscribe2')){im=shortcode}return im})}})},getInfo:function(){return{longname:'Insert Subscribe2 Token',author:'Matthew Robinson',authorurl:'http://subscribe2.wordpress.com',infourl:'http://subscribe2.wordpress.com',version:tinymce.majorVersion+'.'+tinymce.minorVersion}}});tinymce.PluginManager.add('subscribe2',tinymce.plugins.Subscribe2Plugin)})();
tinymce3/editor_plugin.min.js DELETED
@@ -1 +0,0 @@
1
- (function(){tinymce.create('tinymce.plugins.Subscribe2Plugin',{init:function(ed,url){var i=0,pb='<img src="'+url+'/../include/spacer.gif" class="mceSubscribe2 mceItemNoResize" />',cls='mceSubscribe2',shortcode='[subscribe2]',pbreplaced=[],pbRE=new RegExp(/(\[|<!--)subscribe2.*(\]|-->)/g),replacer=function(str){if(-1!==str.indexOf('class="mceSubscribe2')){str=pbreplaced[i]}return str};ed.addCommand('mceSubscribe2',function(){ed.execCommand('mceInsertContent',0,pb)});ed.addButton('subscribe2',{title:'Insert Subscribe2 Token',image:url+'/../include/s2_button.png',cmd:cls});ed.onInit.add(function(){ed.dom.loadCSS(url+'/css/content.css');if(ed.theme.onResolveName){ed.theme.onResolveName.add(function(th,o){if(o.node.nodeName==='IMG'&&ed.dom.hasClass(o.node,cls)){o.name='subscribe2'}})}});ed.onClick.add(function(ed,e){e=e.target;if(e.nodeName==='IMG'&&ed.dom.hasClass(e,cls)){ed.selection.select(e)}});ed.onNodeChange.add(function(ed,cm,n){cm.setActive('subscribe2',n.nodeName==='IMG'&&ed.dom.hasClass(n,cls))});ed.onBeforeSetContent.add(function(ed,o){pbreplaced=o.content.match(pbRE);o.content=o.content.replace(pbRE,pb)});ed.onPostProcess.add(function(ed,o){if(o.get){if(null!==pbreplaced){for(i=0;i<pbreplaced.length;i++){o.content=o.content.replace(/<img[^>]+>/,replacer)}}o.content=o.content.replace(/<img[^>]+>/g,function(im){if(-1!==im.indexOf('class="mceSubscribe2')){im=shortcode}return im})}})},getInfo:function(){return{longname:'Insert Subscribe2 Token',author:'Matthew Robinson',authorurl:'http://subscribe2.wordpress.com',infourl:'http://subscribe2.wordpress.com',version:tinymce.majorVersion+'.'+tinymce.minorVersion}}});tinymce.PluginManager.add('subscribe2',tinymce.plugins.Subscribe2Plugin)})();