Subscribe2 - Version 4.6

Version Description

Download this release

Release Info

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

Code changes from version 4.4 to 4.6

ReadMe.txt CHANGED
@@ -3,18 +3,20 @@ Contributors: MattyRob, Skippy, RavanH
3
  Donate link: http://subscribe2.wordpress.com/donate/
4
  Tags: posts, subscription, email
5
  Requires at least: 2.0.x
6
- Tested up to: 2.3.2
7
- Stable tag: 4.4
8
 
9
  Sends a list of subscribers an email notification when new posts are published to your blog
10
 
11
  == Description ==
12
 
13
- Subscribe2 provides a comprehensive subscription management system for WordPress blogs that sends email notifications on a per-post or periodical basis to a list of subscribers when you publish new content to your blog. The plugin also handles subscription requests allowing users to publically subscribe by submitting their email address in an easy to use form or to register with your blog which enables greater flexibility for email content for the subscriber. Admins are given control over the presentation of the email notifications, can bulk manage subscriptions for users and manually send email notices to subscribers.
14
 
15
- Subscribe2 supports two classes of subscribers: the general public, and registered users of the blog. The general public may subscribe and unsubscribe. They will receive an email notification whenever a new post is made (unless that post is assigned to one of the excluded categories you defined). The general public will receive a plaintext email with an excerpt of the post: either the excerpt you created when making the post, the portion of text before a <!--more--> tag (if present), or the first 55 words of the post.
16
 
17
- Registered users of the blog can elect to receive email notifications for specific categories. The Users->Subscription menu item will allow them to select the delivery format (plaintext or HTML), amount of message (excerpt or full post), and the categories to which they want to subscribe. You, the blog owner, have the option (Options->Subscribe2) to allow registered users to subscribe to your excluded categories or not.
 
 
18
 
19
  When you post a new item, subscribe2 will generate (at least) one email for each of the following combinations of subscribers:
20
 
@@ -26,18 +28,17 @@ So for each new post you make, you may receive up to three emails.
26
 
27
  == Installation ==
28
 
29
- 1. Copy buttonsnap.php into your /wp-content/plugins directory.
30
- 2. Copy the entire /subscribe2/ directory into your /wp-content/plugins/ directory.
31
- 3. Activate the plugin.
32
- 4. Click the "Options" admin menu link, and select "Subscribe2".
33
- 5. Configure the options to taste, including the email template and any categories which should be excluded from notification
34
- 6. Click the "Manage" admin menu link, and select "Subscribers".
35
- 7. Manually subscribe people as you see fit.
36
- 8. Create a WordPress Page (http://codex.wordpress.org/Pages) to display the subscription form. When creating the page, you may click the "S2" button on the QuickBar to automatically insert the subscribe2 token. Or, if you prefer, you may manually insert the subscribe2 token:
37
  <!--subscribe2-->
38
  ***Ensure the token is on a line by itself and that it has a blank line above and below.***
39
  This token will automatically be replaced by the subscription form, and will display all messages as necessary.
40
- 9. In the subscribe2.php file define S2PAGE to point at your WordPress page created in step 8.
41
 
42
  == Frequently Asked Questions ==
43
 
@@ -46,7 +47,7 @@ WordPress 2.0.x will be supported until 2010. Subscribe2 will remain supported (
46
 
47
  WordPress 2.1.x and 2.2.x are supported. For the latest information visit http://subscribe2.wordpress.com. For these versions of WordPress use Subscribe2 code from the 3.x stable.
48
 
49
- Finally, WordPress 2.3 is supported. Again, for the latest information visit http://subscribe2.wordpress.com. For this versions of WordPress use Subscribe2 code from the 4.x stable.
50
 
51
  = How do I upgrade from a previous version? =
52
  If you are upgrading from any 2.1.x version of subscribe2, please delete both the /subscribe.php and /wp-content/plugins/subscribe2.php files before copying the new files into place. Your subscriber list will remain intact, and your options should be preserved. Now create a WordPress Page as described above.
@@ -65,7 +66,7 @@ Subscribe2 provides a facility to work around this restriction by sending batche
65
  define('BCCLIMIT', 0);
66
  Change the 0 to the number of allowed outgoing email recipients as set by your host.
67
 
68
- Reminder: because subscribe2 places all recipients in BCC fields, and places the blog admin in the TO field, the blog admin will receive one email per batched delivery. So if you have 90 subscribers, the blog admin should receive three post notification emails, one for eah set of 30 BCC recipients.
69
 
70
  Batches will occur for each group of message as described above. A site on Dreamhost with many public and registered subscribers could conceivably generate a lot of email for your own inbox.
71
 
@@ -78,6 +79,34 @@ Batches will occur for each group of message as described above. A site on Drea
78
 
79
  == Version History ==
80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
  Version 4.4 by Matthew Robinson
82
 
83
  * Fixed non-substitution of TABLE keyword
3
  Donate link: http://subscribe2.wordpress.com/donate/
4
  Tags: posts, subscription, email
5
  Requires at least: 2.0.x
6
+ Tested up to: 2.5
7
+ Stable tag: 4.6
8
 
9
  Sends a list of subscribers an email notification when new posts are published to your blog
10
 
11
  == Description ==
12
 
13
+ Subscribe2 provides a comprehensive subscription management system for WordPress blogs that sends email notifications to a list of subscribers when you publish new content to your blog. The plugin also handles subscription requests allowing users to publically subscribe by submitting their email address in an easy to use form or to register with your blog which enables greater flexibility for email content for the subscriber. Admins are given control over the presentation of the email notifications, can bulk manage subscriptions for users and manually send email notices to subscribers.
14
 
15
+ Email Notifications can be sent on a per-post basis or periodically in a Digest email. Additionally, certain categories can be excluded from inclusion in the notification and post can be excluded on an individual basis by setting a custom field of 's2mail' to 'no'.
16
 
17
+ Subscribe2 supports two classes of subscribers: the general public, and registered users of the blog. The general public may subscribe and unsubscribe. They will receive a limited email notification when new post is made or periodically (unless that post is assigned to one of the excluded categories you defined). The general public will receive a plaintext email with an excerpt of the post: either the excerpt you created when making the post, the portion of text before a <!--more--> tag (if present), or the first 55 words of the post.
18
+
19
+ Registered users of the blog can elect to receive email notifications for specific categories (unless Digest email are select, then it is an opt in or out decision). The Users->Subscription menu item will allow them to select the delivery format (plaintext or HTML), amount of message (excerpt or full post), and the categories to which they want to subscribe. You, the blog owner, have the option (Options->Subscribe2) to allow registered users to subscribe to your excluded categories or not.
20
 
21
  When you post a new item, subscribe2 will generate (at least) one email for each of the following combinations of subscribers:
22
 
28
 
29
  == Installation ==
30
 
31
+ 1. Copy the entire /subscribe2/ directory into your /wp-content/plugins/ directory.
32
+ 2. Activate the plugin.
33
+ 3. Click the "Options" admin menu link, and select "Subscribe2".
34
+ 4. Configure the options to taste, including the email template and any categories which should be excluded from notification
35
+ 5. Click the "Manage" admin menu link, and select "Subscribers".
36
+ 6. Manually subscribe people as you see fit.
37
+ 7. Create a WordPress Page (http://codex.wordpress.org/Pages) to display the subscription form. When creating the page, you may click the "S2" button on the QuickBar to automatically insert the subscribe2 token. Or, if you prefer, you may manually insert the subscribe2 token:
 
38
  <!--subscribe2-->
39
  ***Ensure the token is on a line by itself and that it has a blank line above and below.***
40
  This token will automatically be replaced by the subscription form, and will display all messages as necessary.
41
+ 8. In the subscribe2.php file define S2PAGE to point at your WordPress page created in step 8.
42
 
43
  == Frequently Asked Questions ==
44
 
47
 
48
  WordPress 2.1.x and 2.2.x are supported. For the latest information visit http://subscribe2.wordpress.com. For these versions of WordPress use Subscribe2 code from the 3.x stable.
49
 
50
+ Finally, WordPress 2.3 and 2.5 are supported. Again, for the latest information visit http://subscribe2.wordpress.com. For this versions of WordPress use Subscribe2 code from the 4.x stable.
51
 
52
  = How do I upgrade from a previous version? =
53
  If you are upgrading from any 2.1.x version of subscribe2, please delete both the /subscribe.php and /wp-content/plugins/subscribe2.php files before copying the new files into place. Your subscriber list will remain intact, and your options should be preserved. Now create a WordPress Page as described above.
66
  define('BCCLIMIT', 0);
67
  Change the 0 to the number of allowed outgoing email recipients as set by your host.
68
 
69
+ Reminder: because subscribe2 places all recipients in BCC fields, and places the blog admin in the TO field, the blog admin will receive one email per batched delivery. So if you have 90 subscribers, the blog admin should receive three post notification emails, one for each set of 30 BCC recipients.
70
 
71
  Batches will occur for each group of message as described above. A site on Dreamhost with many public and registered subscribers could conceivably generate a lot of email for your own inbox.
72
 
79
 
80
  == Version History ==
81
 
82
+ Version 4.6 by Matthew Robinson
83
+
84
+ * Fixed mis-reporting of server error when unsubscribing
85
+ * Fixed fatal errors involving buttonsnap library
86
+ * Improved database entry management for new subscribers
87
+ * Fixed issue where Subscribe2 grabbed the first page from the database even if it wasn't published
88
+ * Fixed upgrade reporting for Debug and Uninstaller plugins
89
+
90
+ Version 4.5 by Matthew Robinson
91
+
92
+ * Added Support for WordPress 2.5!
93
+ * Fixed HTML typo in admin submission message
94
+ * Fixed time display for cron jobs in Options->Subscribe2 when displayed on blogs using a time offset
95
+ * Added Debug plugin to the download package
96
+ * Improved descriptions of email template keywords in Options->Subscribe2
97
+ * Display subscribers in batches of 50 in Manage->Subscribers
98
+ * Fixed some XHTML validation errors
99
+ * Improved admin menu layout for compliance with WordPress 2.5
100
+ * Reverted to using wp_mail instead of mail to ensure proper header encoding
101
+ * Improved mail header formatting - thanks to Chris Carlson
102
+ * Add ability to skip email notification using a Custom Field (s2mail set as "no")
103
+ * Improved CSV export - thanks to Aaron Axelsen
104
+ * Added some compatibility for WPMU - thanks to Aaron Axelsen
105
+ * Added some error feedback to blog users if mails fail to send
106
+ * Moved Buttonsnap due to far to many fatal error complaints
107
+ * Added option to send notifications for Private posts
108
+ * Improved handling of notification for Password Protected Posts
109
+
110
  Version 4.4 by Matthew Robinson
111
 
112
  * Fixed non-substitution of TABLE keyword
{subscribe2/include → include}/arrow_left.png RENAMED
File without changes
{subscribe2/include → include}/arrow_right.png RENAMED
File without changes
buttonsnap.php → include/buttonsnap.php RENAMED
File without changes
{subscribe2/include → include}/cross.png RENAMED
File without changes
{subscribe2/include → include}/options.php RENAMED
@@ -1,5 +1,5 @@
1
  <?php
2
- // include.php - Handles options and common functions for subscribe2
3
  // DO NOT EDIT THIS FILE AS IT IS SET BY THE OPTIONS PAGE
4
 
5
  if (!isset($this->subscribe2_options['autosub'])) {
@@ -22,6 +22,10 @@ if (!isset($this->subscribe2_options['password'])) {
22
  $this->subscribe2_options['password'] = "no";
23
  } // option for sending notifications for posts that are password protected
24
 
 
 
 
 
25
  if (!isset($this->subscribe2_options['email_freq'])) {
26
  $this->subscribe2_options['email_freq'] = "never";
27
  } // option for sending emails per-post or as a digest email on a cron schedule
1
  <?php
2
+ // include.php - Handles options for subscribe2
3
  // DO NOT EDIT THIS FILE AS IT IS SET BY THE OPTIONS PAGE
4
 
5
  if (!isset($this->subscribe2_options['autosub'])) {
22
  $this->subscribe2_options['password'] = "no";
23
  } // option for sending notifications for posts that are password protected
24
 
25
+ if (!isset($this->subscribe2_options['private'])) {
26
+ $this->subscribe2_options['private'] = "no";
27
+ } // option for sending notifications for posts that are private
28
+
29
  if (!isset($this->subscribe2_options['email_freq'])) {
30
  $this->subscribe2_options['email_freq'] = "never";
31
  } // option for sending emails per-post or as a digest email on a cron schedule
{subscribe2/include → include}/s2_button.png RENAMED
File without changes
{subscribe2/include → include}/s2_marker.png RENAMED
File without changes
{subscribe2/include → include}/spacer.gif RENAMED
File without changes
subscribe2/subscribe2.php → subscribe2.php RENAMED
@@ -3,13 +3,13 @@
3
  Plugin Name: Subscribe2
4
  Plugin URI: http://subscribe2.wordpress.com
5
  Description: Notifies an email list when new entries are posted.
6
- Version: 4.4
7
  Author: Matthew Robinson
8
  Author URI: http://subscribe2.wordpress.com
9
  */
10
 
11
  /*
12
- Copyright (C) 2006-7 Matthew Robinson
13
  Based on the Original Subscribe2 plugin by
14
  Copyright (C) 2005 Scott Merrill (skippy@skippy.net)
15
 
@@ -41,11 +41,16 @@ define('S2PAGE', '0');
41
 
42
  // our version number. Don't touch this or any line below
43
  // unless you know exacly what you are doing
44
- define('S2VERSION', '4.4');
45
  define ('S2PATH', trailingslashit(dirname(__FILE__)));
46
 
 
 
 
47
  // use Owen's excellent ButtonSnap library
48
- require(ABSPATH . 'wp-content/plugins/buttonsnap.php');
 
 
49
 
50
  $mysubscribe2 = new s2class;
51
  $mysubscribe2->s2init();
@@ -76,6 +81,8 @@ class s2class {
76
 
77
  $this->barred_domain = "<p>" . __('Sorry, email addresses at that domain are currently barred due to spam, please use an alternative email address.', 'subscribe2') . "</p>";
78
 
 
 
79
  $this->mail_sent = "<p>" . __('Message sent!', 'subscribe2') . "</p>";
80
 
81
  $this->form = "<form method=\"post\" action=\"\">" . __('Your email:', 'subscribe2') . "&#160;<input type=\"text\" name=\"email\" value=\"\" size=\"20\" />&#160;<br /><input type=\"radio\" name=\"s2_action\" value=\"subscribe\" checked=\"checked\" /> " . __('Subscribe', 'subscribe2') . " <input type=\"radio\" name=\"s2_action\" value=\"unsubscribe\" /> " . __('Unsubscribe', 'subscribe2') . " &#160;<input type=\"submit\" value=\"" . __('Send', 'subscribe2') . "\" /></form>\r\n";
@@ -107,11 +114,7 @@ class s2class {
107
  function admin_menu() {
108
  add_management_page(__('Subscribers', 'subscribe2'), __('Subscribers', 'subscribe2'), "manage_options", __FILE__, array(&$this, 'manage_menu'));
109
  add_options_page(__('Subscribe2 Options', 'subscribe2'), __('Subscribe2','subscribe2'), "manage_options", __FILE__, array(&$this, 'options_menu'));
110
- if (current_user_can('manage_options')) {
111
- add_submenu_page('users.php', __('Subscriptions', 'subscribe2'), __('Subscriptions', 'subscribe2'), "read", __FILE__, array(&$this, 'user_menu'));
112
- } else {
113
- add_submenu_page('profile.php', __('Subscriptions', 'subscribe2'), __('Subscriptions', 'subscribe2'), "read", __FILE__, array(&$this, 'user_menu'));
114
- }
115
  add_submenu_page('post-new.php', __('Mail Subscribers','subscribe2'), __('Mail Subscribers', 'subscribe2'),"manage_options", __FILE__, array(&$this, 'write_menu'));
116
  $s2nonce = md5('subscribe2');
117
  }
@@ -240,9 +243,9 @@ class s2class {
240
  $this->myname = $admin->display_name;
241
  $this->myemail = $admin->user_email;
242
  }
243
- $headers = "From: " . $this->myname . " <" . $this->myemail . ">\n";
244
- $headers .= "Return-Path: <" . $this->myemail . ">\n";
245
- $headers .= "Reply-To: " . $this->myemail . "\n";
246
  $headers .= "X-Mailer:PHP" . phpversion() . "\n";
247
  $headers .= "Precedence: list\nList-Id: " . get_option('blogname') . "\n";
248
 
@@ -315,10 +318,10 @@ class s2class {
315
  if ( (defined('BCCLIMIT')) && (BCCLIMIT > 0) && (isset($batch)) ) {
316
  foreach ($batch as $bcc) {
317
  $newheaders = $headers . "$bcc\r\n";
318
- @mail($this->myemail, $subject, $mailtext, $newheaders);
319
  }
320
  } else {
321
- @mail($this->myemail, $subject, $mailtext, $headers);
322
  }
323
  return;
324
  } // end mail()
@@ -328,6 +331,8 @@ class s2class {
328
  */
329
  function publish($post = 0) {
330
  if (!$post) { return $post; }
 
 
331
 
332
  // are we doing daily digests? If so, don't send anything now
333
  if ($this->subscribe2_options['email_freq'] != 'never') { return $post; }
@@ -338,6 +343,17 @@ class s2class {
338
  return $post;
339
  }
340
 
 
 
 
 
 
 
 
 
 
 
 
341
  $post_cats = wp_get_post_categories($post->ID);
342
  $post_cats_string = implode(',', $post_cats);
343
  $check = false;
@@ -358,10 +374,10 @@ class s2class {
358
  }
359
  }
360
 
361
- // is this post set in the future?
362
- if ($post->post_date > current_time('mysql')) {
363
- // bail out
364
- return $post;
365
  }
366
 
367
  // lets collect our public subscribers
@@ -495,14 +511,15 @@ class s2class {
495
 
496
  $body = str_replace("LINK", $link, $body);
497
 
498
- $mailheaders .= "From: " . $admin->display_name . " <" . $admin->user_email . ">\n";
499
- $mailheaders .= "Return-Path: <" . $admin->user_email . ">\n";
 
500
  $mailheaders .= "X-Mailer:PHP" . phpversion() . "\n";
501
  $mailheaders .= "Precedence: list\nList-Id: " . get_option('blogname') . "\n";
502
  $mailheaders .= "MIME-Version: 1.0\n";
503
  $mailheaders .= "Content-Type: text/plain; charset=\"". get_bloginfo('charset') . "\"\n";
504
 
505
- @mail($this->email, $subject, $body, $mailheaders);
506
  } // end send_confirm()
507
 
508
  /* ===== Subscriber functions ===== */
@@ -632,17 +649,6 @@ class s2class {
632
  }
633
  } //end remind()
634
 
635
- /**
636
- Export email list to CSV download
637
- */
638
- function exportcsv($emails = '') {
639
- if ('' == $emails) {return false; }
640
-
641
- $f = fopen(ABSPATH . 'wp-content/email.csv', 'w');
642
- fwrite($f, $emails);
643
- fclose($f);
644
- } //end exportcsv
645
-
646
  /**
647
  Check email is not from a barred domain
648
  */
@@ -803,7 +809,11 @@ class s2class {
803
  $AND .= "AND ($and)";
804
  }
805
 
806
- $sql = "SELECT a.user_id FROM $wpdb->usermeta AS a " . $JOIN . " WHERE a.meta_key='s2_subscribed'" . $AND;
 
 
 
 
807
  $result = $wpdb->get_col($sql);
808
  if ($result) {
809
  $ids = implode(',', $result);
@@ -872,9 +882,23 @@ class s2class {
872
  update_usermeta($user_id, 's2_format', 'text');
873
  update_usermeta($user_id, 's2_excerpt', 'excerpt');
874
  } else {
875
- // add the usermeta for new registrations, but don't subscribe them
876
- $check = get_usermeta($user_id, 's2_subscribed');
 
 
 
 
 
 
 
 
 
 
 
 
877
  // ensure existing subscriptions are not overwritten on upgrade
 
 
878
  if (empty($check)) {
879
  if ( ('yes' == $this->subscribe2_options['autosub']) || (('wpreg' == $this->subscribe2_options['autosub']) && (1 == $wpreg)) ) {
880
  // don't add entries by default if autosub is off, messes up daily digests
@@ -882,16 +906,6 @@ class s2class {
882
  foreach(explode(',', $cats) as $cat) {
883
  update_usermeta($user_id, 's2_cat' . $cat, "$cat");
884
  }
885
- if ('html' == $this->subscribe2_options['autoformat']) {
886
- update_usermeta($user_id, 's2_format', 'html');
887
- update_usermeta($user_id, 's2_excerpt', 'post');
888
- } elseif ('fulltext' == $this->subscribe2_options['autoformat']) {
889
- update_usermeta($user_id, 's2_format', 'text');
890
- update_usermeta($user_id, 's2_excerpt', 'post');
891
- } else {
892
- update_usermeta($user_id, 's2_format', 'text');
893
- update_usermeta($user_id, 's2_excerpt', 'excerpt');
894
- }
895
  } else {
896
  update_usermeta($user_id, 's2_subscribed', '-1');
897
  }
@@ -1022,8 +1036,15 @@ class s2class {
1022
 
1023
  $what = '';
1024
  $reminderform = false;
 
 
1025
  $urlpath = str_replace("\\","/",S2PATH);
1026
  $urlpath = trailingslashit(get_option('siteurl')) . substr($urlpath,strpos($urlpath,"wp-content/"));
 
 
 
 
 
1027
 
1028
  // was anything POSTed ?
1029
  if (isset($_POST['s2_admin'])) {
@@ -1038,16 +1059,13 @@ class s2class {
1038
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Address(es) subscribed!', 'subscribe2') . "</strong></p></div>";
1039
  } elseif ('delete' == $_POST['s2_admin']) {
1040
  $this->delete($_POST['email']);
1041
- echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . $_POST['email'] . ' ' . __('deleted!', 'subscribe2') . "</strong</p>></div>";
1042
  } elseif ('toggle' == $_POST['s2_admin']) {
1043
  $this->toggle($_POST['email']);
1044
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . $_POST['email'] . ' ' . __('status changed!', 'subscribe2') . "</strong></p></div>";
1045
  } elseif ('remind' == $_POST['s2_admin']) {
1046
  $this->remind($_POST['reminderemails']);
1047
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Reminder Email(s) Sent!','subscribe2') . "</strong></p></div>";
1048
- } elseif ('exportcsv' == $_POST['s2_admin']) {
1049
- $this->exportcsv($_POST['exportcsv']);
1050
- echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('CSV File Created in wp-content','subscribe2') . "</strong></p></div>";
1051
  } elseif ( ('register' == $_POST['s2_admin']) && ('subscribe' == $_POST['manage']) ) {
1052
  $this->subscribe_registered_users($_POST['emails'], $_POST['category']);
1053
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Registered Users Subscribed!','subscribe2') . "</strong></p></div>";
@@ -1058,6 +1076,7 @@ class s2class {
1058
  }
1059
 
1060
  if (isset($_POST['what'])) {
 
1061
  if ('all' == $_POST['what']) {
1062
  $what = 'all';
1063
  $confirmed = $this->get_public();
@@ -1070,14 +1089,14 @@ class s2class {
1070
  $subscribers = array_merge((array)$confirmed, (array)$unconfirmed);
1071
  } elseif ('confirmed' == $_POST['what']) {
1072
  $what = 'confirmed';
1073
- $confirmed = $this->get_public();
1074
  $subscribers = $confirmed;
1075
  } elseif ('unconfirmed' == $_POST['what']) {
1076
  $what = 'unconfirmed';
1077
- $unconfirmed = $this->get_public(0);
1078
  $subscribers = $unconfirmed;
1079
- if (!empty($unconfirmed)) {
1080
- $reminderemails = implode(",", $unconfirmed);
1081
  $reminderform = true;
1082
  }
1083
  } elseif (is_numeric($_POST['what'])) {
@@ -1087,6 +1106,36 @@ class s2class {
1087
  $what = 'registered';
1088
  $subscribers = $registered;
1089
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1090
  } elseif ('' == $what) {
1091
  $what = 'registered';
1092
  $subscribers = $registered;
@@ -1107,6 +1156,35 @@ class s2class {
1107
  }
1108
  if (!empty($subscribers)) {
1109
  natcasesort($subscribers);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1110
  }
1111
  // safety check for our arrays
1112
  if ('' == $confirmed) { $confirmed = array(); }
@@ -1116,38 +1194,41 @@ class s2class {
1116
  // show our form
1117
  echo "<div class=\"wrap\">";
1118
  echo "<h2>" . __('Subscribe Addresses', 'subscribe2') . "</h2>\r\n";
1119
- echo "<form method=\"post\" action=\"\">\r\n";
 
1120
  if (function_exists('wp_nonce_field')) {
1121
  wp_nonce_field('subscribe2-manage_subscribers' . $s2nonce);
1122
  }
1123
  echo __('Enter addresses, one per line or comma-seperated', 'subscribe2') . "<br />\r\n";
1124
- echo "<textarea rows=\"2\" cols=\"80\" name=\"addresses\"></textarea><br />\r\n";
1125
- echo "<span class=\"submit\"><input type=\"submit\" name=\"submit\" value=\"" . __('Subscribe', 'subscribe2') . "\"/>\r\n";
1126
- echo "<input type=\"hidden\" name=\"s2_admin\" value=\"subscribe\" /></span>";
1127
  echo "</form></div>";
1128
 
1129
  // subscriber lists
1130
  echo "<div class=\"wrap\"><h2>" . __('Subscribers', 'subscribe2') . "</h2>\r\n";
1131
-
1132
  $this->display_subscriber_dropdown($what, __('Filter', 'subscribe2'));
1133
  // show the selected subscribers
1134
  $alternate = 'alternate';
1135
  if (!empty($subscribers)) {
1136
  echo "<p align=\"center\"><b>" . __('Registered on the left, confirmed in the middle, unconfirmed on the right', 'subscribe2') . "</b></p>\r\n";
1137
- if (is_writable(ABSPATH . 'wp-content')) {
1138
- $exportcsv = implode(",", $subscribers);
1139
- echo "<form method=\"post\" action=\"\">\r\n";
1140
- if (function_exists('wp_nonce_field')) {
1141
- wp_nonce_field('subscribe2-manage_subscribers' . $s2nonce);
1142
- }
1143
- echo "<input type=\"hidden\" name=\"exportcsv\" value=\"$exportcsv\" />\r\n";
1144
- echo "<input type=\"hidden\" name=\"s2_admin\" value=\"exportcsv\" />\r\n";
1145
- echo "<p class=\"submit\"><input type=\"submit\" name=\"submit\" value=\"" . __('Save Emails to CSV File','subscribe2') . "\" /></p>\r\n";
1146
- echo "</form>\r\n";
1147
  }
 
 
 
 
1148
  }
 
1149
  echo "<table cellpadding=\"2\" cellspacing=\"2\">";
1150
  if (!empty($subscribers)) {
 
 
 
1151
  foreach ($subscribers as $subscriber) {
1152
  echo "<tr class=\"$alternate\">";
1153
  echo "<td width=\"75%\"";
@@ -1162,7 +1243,7 @@ class s2class {
1162
  if (in_array($subscriber, $unconfirmed) || in_array($subscriber, $confirmed) ) {
1163
  echo "(" . $this->signup_date($subscriber) . ")</td>\r\n";
1164
  echo "<td width=\"5%\" align=\"center\">\r\n";
1165
- echo "<form method=\"post\" action=\"\">";
1166
  if (function_exists('wp_nonce_field')) {
1167
  wp_nonce_field('subscribe2-manage_subscribers' . $s2nonce);
1168
  }
@@ -1182,12 +1263,12 @@ class s2class {
1182
  if (function_exists('wp_nonce_field')) {
1183
  wp_nonce_field('subscribe2-manage_subscribers' . $s2nonce);
1184
  }
1185
- echo "<span class=\"delete\">\r\n";
1186
  echo "<input type=\"hidden\" name=\"email\" value=\"$subscriber\" />\r\n";
1187
  echo "<input type=\"hidden\" name=\"s2_admin\" value=\"delete\" />\r\n";
1188
  echo "<input type=\"hidden\" name=\"what\" value=\"$what\" />\r\n";
1189
- echo "<input type=\"image\" src=\"" . $urlpath . "include/cross.png\"name=\"submit\" value=\"X\" />\r\n";
1190
- echo "</span></form>";
 
1191
  }
1192
  echo "</td></tr>\r\n";
1193
  ('alternate' == $alternate) ? $alternate = '' : $alternate = 'alternate';
@@ -1196,8 +1277,9 @@ class s2class {
1196
  echo "<tr><td align=\"center\"><b>" . __('NONE', 'subscribe2') . "</b></td></tr>\r\n";
1197
  }
1198
  echo "</table>";
 
1199
  if ($reminderform) {
1200
- echo "<form method=\"post\" action=\"\">\r\n";
1201
  if (function_exists('wp_nonce_field')) {
1202
  wp_nonce_field('subscribe2-manage_subscribers' . $s2nonce);
1203
  }
@@ -1211,8 +1293,10 @@ class s2class {
1211
  //show bulk managment form
1212
  echo "<div class=\"wrap\">";
1213
  echo "<h2>" . __('Categories', 'subscribe2') . "</h2>\r\n";
 
1214
  echo __('Existing Registered Users can be automatically (un)subscribed to categories using this section.', 'subscribe2') . "<br />\r\n";
1215
  echo "<strong><em style=\"color: red\">" . __('Consider User Privacy as changes cannot be undone', 'subscribe2') . "</em></strong><br />\r\n";
 
1216
  echo "<form method=\"post\" action=\"\">\r\n";
1217
  if (function_exists('wp_nonce_field')) {
1218
  wp_nonce_field('subscribe2-manage_subscribers' . $s2nonce);
@@ -1271,11 +1355,13 @@ class s2class {
1271
  }
1272
  $this->subscribe2_options['sender'] = $sender;
1273
 
1274
- // send email for pages and password protected posts
1275
  $pages_option = $_POST['pages'];
1276
  $this->subscribe2_options['pages']= $pages_option;
1277
  $password_option = $_POST['password'];
1278
  $this->subscribe2_options['password']= $password_option;
 
 
1279
 
1280
  // send per-post or digest emails
1281
  $email_freq = $_POST['email_freq'];
@@ -1294,7 +1380,7 @@ class s2class {
1294
  } else {
1295
  if (!wp_next_scheduled('s2_digest_cron')) {
1296
  // if we are using digest schedule the event and prime last_cron as now
1297
- $time = time() + $interval;
1298
  if ($interval < 86400) {
1299
  // Schedule CRON events occurring less than daily starting now and periodically thereafter
1300
  $timestamp = &$time;
@@ -1343,6 +1429,7 @@ class s2class {
1343
  }
1344
  echo "<input type=\"hidden\" name=\"s2_admin\" value=\"options\" />\r\n";
1345
  echo "<h2>" . __('Delivery Options', 'subscribe2') . ":</h2>\r\n";
 
1346
  echo __('Send Emails for Pages', 'subscribe2') . ': ';
1347
  echo "<input type=\"radio\" name=\"pages\" value=\"yes\"";
1348
  if ('yes' == $this->subscribe2_options['pages']) {
@@ -1365,6 +1452,17 @@ class s2class {
1365
  echo " checked=\"checked\"";
1366
  }
1367
  echo " /> " . __('No', 'subscribe2') . "<br /><br />\r\n";
 
 
 
 
 
 
 
 
 
 
 
1368
  echo __('Send Email From', 'subscribe2') . ': ';
1369
  echo "<input type=\"radio\" name=\"sender\" value=\"author\"";
1370
  if ('author' == $this->subscribe2_options['sender']) {
@@ -1380,7 +1478,9 @@ class s2class {
1380
  echo __('Send Email as Digest', 'subscribe2') . ": <br /><br />\r\n";
1381
  $this->display_digest_choices();
1382
  }
 
1383
  echo "<h2>" . __('Email Templates', 'subscribe2') . "</h2>\r\n";
 
1384
  echo "<table width=\"100%\" cellspacing=\"2\" cellpadding=\"1\" class=\"editform\">\r\n";
1385
  echo "<tr><td>";
1386
  echo __('New Post email (must not be empty)', 'subscribe2') . ":";
@@ -1391,10 +1491,10 @@ class s2class {
1391
  echo "<dl>";
1392
  echo "<dt><b>BLOGNAME</b></dt><dd>" . get_bloginfo('name') . "</dd>\r\n";
1393
  echo "<dt><b>BLOGLINK</b></dt><dd>" . get_bloginfo('url') . "</dd>\r\n";
1394
- echo "<dt><b>TITLE</b></dt><dd>" . __("the post's title", 'subscribe2') . "</dd>\r\n";
1395
  echo "<dt><b>POST</b></dt><dd>" . __("the excerpt or the entire post<br />(<i>based on the subscriber's preferences</i>)", 'subscribe2') . "</dd>\r\n";
1396
- echo "<dt><b>TABLE</b></dt><dd>" . __("a list of post titles (for digest emails)", 'subscribe2') . "</dd>\r\n";
1397
- echo "<dt><b>PERMALINK</b></dt><dd>" . __("the post's permalink", 'subscribe2') . "</dd>\r\n";
1398
  echo "<dt><b>MYNAME</b></dt><dd>" . __("the admin or post author's name", 'subscribe2') . "</dd>\r\n";
1399
  echo "<dt><b>EMAIL</b></dt><dd>" . __("the admin or post author's email", 'subscribe2') . "</dd>\r\n";
1400
  echo "<dt><b>AUTHORNAME</b></dt><dd>" . __("the post author's name", 'subscribe2') . "</dd>\r\n";
@@ -1410,7 +1510,9 @@ class s2class {
1410
 
1411
  // excluded categories
1412
  echo "<h2>" . __('Excluded Categories', 'subscribe2') . "</h2>\r\n";
 
1413
  echo "<strong><em style=\"color: red\">" . __('Posts assigned to any Excluded Category do not generate notifications and are not included in digest notifications', 'subscribe2') . "</em></strong><br />\r\n";
 
1414
  $this->display_category_form(explode(',', $this->subscribe2_options['exclude']));
1415
  echo "<center><input type=\"checkbox\" name=\"reg_override\" value=\"1\"";
1416
  if ('1' == $this->subscribe2_options['reg_override']) {
@@ -1420,6 +1522,7 @@ class s2class {
1420
 
1421
  // show button in QuickTags
1422
  echo "<h2>" . __('Writing Options', 'subscribe2') . "</h2>\r\n";
 
1423
  echo "<input type=\"checkbox\" name=\"show_button\" value=\"1\"";
1424
  if ('1' == $this->subscribe2_options['show_button']) {
1425
  echo " checked=\"checked\"";
@@ -1432,9 +1535,11 @@ class s2class {
1432
  echo " checked=\"checked\"";
1433
  }
1434
  echo " /> " . __('Enable Subscribe2 Widget?', 'subscribe2') . "<br /><br />\r\n";
 
1435
 
1436
  //Auto Subscription for new registrations
1437
  echo "<h2>" . __('Auto Subscribe', 'subscribe2') . "</h2>\r\n";
 
1438
  echo __('Subscribe new users registering with your blog', 'subscribe2') . ":<br />\r\n";
1439
  echo "<input type=\"radio\" name=\"autosub\" value=\"yes\"";
1440
  if ('yes' == $this->subscribe2_options['autosub']) {
@@ -1478,14 +1583,17 @@ class s2class {
1478
  echo "checked=\"checked\" ";
1479
  }
1480
  echo "/> " . __('Plain Text - Excerpt', 'subscribe2') . " <br /><br />";
 
1481
 
1482
  //barred domains
1483
  echo "<h2>" . __('Barred Domains', 'subscribe2') . "</h2>\r\n";
 
1484
  echo __('Enter domains to bar from public subscriptions: <br /> (Use a new line for each entry and omit the "@" symbol, for example email.com)', 'subscribe2');
1485
  echo "<br />\r\n<textarea style=\"width: 98%;\" rows=\"4\" cols=\"60\" name=\"barred\">" . $this->subscribe2_options['barred'] . "</textarea>";
 
1486
 
1487
  // submit
1488
- echo "<p align=\"center\"><span class=\"submit\"><input type=\"submit\" id=\"save\" name=\"submit\" value=\"" . __('Submit', 'subscribe2') . "\" /></span></p>";
1489
  echo "</form>\r\n";
1490
  echo "</div><div class=\"wrap\">";
1491
 
@@ -1496,11 +1604,11 @@ class s2class {
1496
  if (function_exists('wp_nonce_field')) {
1497
  wp_nonce_field('subscribe2-options_subscribers' . $s2nonce);
1498
  }
1499
- echo "<p align=\"center\"><span class=\"submit\">";
1500
  echo "<input type=\"hidden\" name=\"s2_admin\" value=\"RESET\" />";
1501
  echo "<input type=\"submit\" id=\"deletepost\" name=\"submit\" value=\"" . __('RESET', 'subscribe2') .
1502
  "\" />";
1503
- echo "</span></p></form></div>\r\n";
1504
 
1505
  include(ABSPATH . 'wp-admin/admin-footer.php');
1506
  // just to be sure
@@ -1574,6 +1682,7 @@ class s2class {
1574
  echo "<div class=\"wrap\">";
1575
  echo "<h2>" . __('Notification Settings', 'subscribe2') . "</h2>\r\n";
1576
  echo "<form method=\"post\" action=\"\">";
 
1577
  if (function_exists('wp_nonce_field')) {
1578
  wp_nonce_field('subscribe2-user_subscribers' . $s2nonce);
1579
  }
@@ -1600,7 +1709,7 @@ class s2class {
1600
  }
1601
  echo " /> " . $value . "&nbsp;&nbsp;";
1602
  }
1603
- echo "<p style=\"color: red\">" . __('Note: HTML format will always deliver the full post', 'subscribe2') . ".</p>\r\n";
1604
  echo __('Automatically subscribe me to newly created categories', 'subscribe2') . ': &nbsp;&nbsp;';
1605
  echo "<input type=\"radio\" name=\"new_category\" value=\"yes\" ";
1606
  if ('yes' == get_usermeta($user_ID, 's2_autosub')) {
@@ -1612,6 +1721,7 @@ class s2class {
1612
  echo "checked=\"checked\" ";
1613
  }
1614
  echo "/> " . __('No', 'subscribe2') . "<br /><br />";
 
1615
 
1616
  // subscribed categories
1617
  echo "<h2>" . __('Subscribed Categories', 'subscribe2') . "</h2>\r\n";
@@ -1620,6 +1730,7 @@ class s2class {
1620
  // we're doing daily digests, so just show
1621
  // subscribe / unnsubscribe
1622
  echo __('Receive daily summary of new posts?', 'subscribe2') . ': &nbsp;&nbsp;';
 
1623
  echo "<input type=\"radio\" name=\"category\" value=\"digest\" ";
1624
  if (get_usermeta($user_ID, 's2_subscribed') != '-1') {
1625
  echo "checked=\"yes\" ";
@@ -1629,8 +1740,10 @@ class s2class {
1629
  echo "checked=\"yes\" ";
1630
  }
1631
  echo "/> " . __('No', 'subscribe2');
 
1632
  }
1633
 
 
1634
  // submit
1635
  echo "<p class=\"submit\"><input type=\"submit\" name=\"submit\" value=\"" . __("Update Preferences", 'subscribe2') . " &raquo;\" /></p>";
1636
  echo "</form></div>\r\n";
@@ -1679,16 +1792,18 @@ class s2class {
1679
  // show our form
1680
  echo "<div class=\"wrap\"><h2>" . __('Send email to all subscribers', 'subscribe2') . "</h2>\r\n";
1681
  echo "<form method=\"post\" action=\"\">\r\n";
 
1682
  if (function_exists('wp_nonce_field')) {
1683
  wp_nonce_field('subscribe2-write_subscribers' . $s2nonce);
1684
  }
1685
- echo __('Subject', 'subscribe2') . ": <input type=\"text\" size=\"69\" name=\"subject\" value=\"" . __('A message from ', 'subscribe2') . get_option('blogname') . "\" /> <br />";
1686
  echo "<textarea rows=\"12\" cols=\"75\" name=\"message\"></textarea>";
1687
- echo "<br />\r\n";
1688
  echo __('Recipients: ', 'subscribe2');
1689
  $this->display_subscriber_dropdown('registered', false, array('all'));
1690
  echo "<input type=\"hidden\" name=\"s2_admin\" value=\"mail\" />";
1691
- echo "&nbsp;&nbsp;<span class=\"submit\"><input type=\"submit\" name=\"submit\" value=\"" . __('Send', 'subscribe2') . "\" /></span>&nbsp;";
 
1692
  echo "</form></div>\r\n";
1693
  echo "<div style=\"clear: both;\"><p>&nbsp;</p></div>";
1694
 
@@ -1791,7 +1906,7 @@ class s2class {
1791
  }
1792
 
1793
  if (false !== $submit) {
1794
- echo "<form method=\"post\" action=\"\">";
1795
  }
1796
  echo "<select name=\"what\">\r\n";
1797
  foreach ($who as $whom => $display) {
@@ -1813,7 +1928,7 @@ class s2class {
1813
  }
1814
  echo "</select>";
1815
  if (false !== $submit) {
1816
- echo "<span class=\"submit\"><input type=\"submit\" value=\"$submit\" /></span></form>\r\n";
1817
  }
1818
  } // end display_subscriber_dropdown()
1819
 
@@ -1852,11 +1967,12 @@ class s2class {
1852
  if ($scheduled_time) {
1853
  echo "<p><input type=\"checkbox\" name=\"reset_cron\" /> " . __('Reset the schedule time and date for periodic email notifications', 'subscribe2') . "</p>\r\n";
1854
  $datetime = get_option('date_format') . ' @ ' . get_option('time_format');
1855
- $now = time();
1856
  echo "<p>" . __('Current server time is', 'subscribe2') . ": \r\n";
1857
- echo "<strong>" . gmdate($datetime, $now+ (get_option('gmt_offset') * 3600)) . "</strong></p>\r\n";
1858
- echo "<p>" . __('Next email notification will be sent', 'subscribe2') . ": \r\n";
1859
- echo "<strong>" . gmdate($datetime, wp_next_scheduled('s2_digest_cron') + (get_option('gmt_offset') * 3600)) . "</strong></p>\r\n";
 
 
1860
  } else {
1861
  echo "<br />";
1862
  }
@@ -1904,7 +2020,7 @@ class s2class {
1904
  Display our form; also handles (un)subscribe requests
1905
  */
1906
  function filter($content = '') {
1907
- if ( ('' == $content) || (! preg_match('|<!--subscribe2-->|', $content)) ) { return $content; }
1908
  $this->s2form = $this->form;
1909
 
1910
  global $user_ID;
@@ -1938,10 +2054,14 @@ class s2class {
1938
  if ('1' !== $this->is_public($this->email)) {
1939
  // the user is unknown or inactive
1940
  $this->add();
1941
- $this->send_confirm('add');
1942
  // set a variable to denote that we've already run, and shouldn't run again
1943
  $this->filtered = 1; //set this to not send duplicate emails
1944
- $this->s2form = $this->confirmation_sent;
 
 
 
 
1945
  } else {
1946
  // they're already subscribed
1947
  $this->s2form = $this->already_subscribed;
@@ -1952,18 +2072,21 @@ class s2class {
1952
  if (false == $this->is_public($this->email)) {
1953
  $this->s2form = $this->form . $this->not_subscribed;
1954
  } else {
1955
- $this->send_confirm('del');
1956
  // set a variable to denote that we've already run, and shouldn't run again
1957
  $this->filtered = 1;
1958
- $this->s2form = $this->confirmation_sent;
 
 
 
 
1959
  }
1960
  $this->action='unsubscribe';
1961
  }
1962
  }
1963
  }
1964
  }
1965
- $content = preg_replace('|<!--subscribe2-->|', $this->s2form, $content);
1966
- return $content;
1967
  } // end filter()
1968
 
1969
  /**
@@ -1980,7 +2103,7 @@ class s2class {
1980
  if ( (defined('S2PAGE')) && (0 != S2PAGE) ) {
1981
  return "page_id=" . S2PAGE;
1982
  } else {
1983
- $id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_type='page' LIMIT 1");
1984
  if ($id) {
1985
  return "page_id=$id";
1986
  } else {
@@ -2047,6 +2170,75 @@ class s2class {
2047
  }
2048
  }
2049
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2050
  /* ===== wp-cron functions ===== */
2051
  /**
2052
  Send a daily digest of today's new posts
@@ -2055,7 +2247,7 @@ class s2class {
2055
  global $wpdb;
2056
 
2057
  // collect posts
2058
- $now = date('Y-m-d H:i:s', time());
2059
  $prev = $this->subscribe2_options['last_s2cron'];
2060
  $posts = $wpdb->get_results("SELECT ID, post_title, post_excerpt, post_content, post_type, post_password FROM $wpdb->posts WHERE post_date >= '$prev' AND post_date < '$now' AND post_status IN ('publish', 'private') AND post_type IN ('post', 'page')");
2061
 
@@ -2080,6 +2272,12 @@ class s2class {
2080
  $check = true;
2081
  }
2082
  }
 
 
 
 
 
 
2083
  // is the current post private
2084
  // and should this not generate a notification email?
2085
  if ( ($this->subscribe2_options['password'] == "no") && ($post->post_password != '') ) {
@@ -2118,17 +2316,8 @@ class s2class {
2118
  $message .= $excerpt . "\r\n\r\n";
2119
  }
2120
 
2121
- $author = get_userdata($post->post_author);
2122
- $this->authorname = $author->display_name;
2123
-
2124
- // do we send as admin, or post author?
2125
- if ('author' == $this->subscribe2_options['sender']) {
2126
- // get author details
2127
- $user =& $author;
2128
- } else {
2129
- // get admin detailts
2130
- $user = $this->get_userdata();
2131
- }
2132
  $this->myemail = $user->user_email;
2133
  $this->myname = $user->display_name;
2134
 
@@ -2183,7 +2372,19 @@ class s2class {
2183
  add_filter('the_title', array(&$this, 'title_filter'));
2184
  add_filter('the_content', array(&$this, 'confirm'));
2185
  }
 
 
 
 
 
 
 
 
 
2186
 
 
 
 
2187
  //add regular actions and filters
2188
  add_action('admin_head', array(&$this, 'admin_head'));
2189
  add_action('admin_menu', array(&$this, 'admin_menu'));
@@ -2214,7 +2415,7 @@ class s2class {
2214
  add_action('pending_to_publish', array(&$this, 'publish'));
2215
  add_action('private_to_publish', array(&$this, 'publish'));
2216
  add_action('future_to_publish', array(&$this, 'publish'));
2217
- if ($this->subscribe2_options['password'] == "yes") {
2218
  add_action('new_to_private', array(&$this, 'publish'));
2219
  add_action('draft_to_private', array(&$this, 'publish'));
2220
  add_action('pending_to_private', array(&$this, 'publish'));
@@ -2225,75 +2426,8 @@ class s2class {
2225
  $this->load_strings();
2226
  } // end subscribe2()
2227
 
2228
- /* ===== ButtonSnap configuration ===== */
2229
- /**
2230
- Register our button in the QuickTags bar
2231
- */
2232
- function button_init() {
2233
- if ( !current_user_can('edit_posts') && !current_user_can('edit_pages') ) return;
2234
- if ( 'true' == get_user_option('rich_editing') ) {
2235
- // Load and append our TinyMCE external plugin
2236
- add_filter('mce_plugins', array(&$this, 'mce_plugins'));
2237
- add_filter('mce_buttons', array(&$this, 'mce_buttons'));
2238
- add_action('tinymce_before_init', array(&$this, 'tinymce_before_init'));
2239
- add_action('marker_css', array(&$this, 'button_css'));
2240
- } else {
2241
- buttonsnap_separator();
2242
- buttonsnap_jsbutton(get_option('siteurl') . '/wp-content/plugins/subscribe2/include/s2_button.png', __('Subscribe2', 'subscribe2'), 's2_insert_token();');
2243
- }
2244
- }
2245
-
2246
- /**
2247
- Style a marker in the Rich Text Editor for our tag
2248
- By default, the RTE suppresses output of HTML comments, so this
2249
- places a CSS style on our token in order to make it display
2250
- */
2251
- function button_css() {
2252
- $marker_url = get_option('siteurl') . '/wp-content/plugins/subscribe2/include/s2_marker.png';
2253
- echo "
2254
- .s2_marker {
2255
- display: block;
2256
- height: 45px;
2257
- margin-top: 5px;
2258
- background-image: url({$marker_url});
2259
- background-repeat: no-repeat;
2260
- background-position: center;
2261
- }
2262
- ";
2263
- }
2264
-
2265
- // Add buttons in WordPress v2.1+, thanks to An-archos
2266
- function mce_plugins($plugins) {
2267
- array_push($plugins, '-subscribe2quicktags');
2268
- return $plugins;
2269
- }
2270
-
2271
- function mce_buttons($buttons) {
2272
- array_push($buttons, 'separator');
2273
- array_push($buttons, 'subscribe2quicktags');
2274
- return $buttons;
2275
- }
2276
-
2277
- function tinymce_before_init() {
2278
- $this->fullpath = get_option('siteurl') . '/wp-content/plugins/subscribe2/tinymce/';
2279
- echo "tinyMCE.loadPlugin('subscribe2quicktags', '" . $this->fullpath . "');\n";
2280
- }
2281
-
2282
- function s2_edit_form() {
2283
- echo "<!-- Start Subscribe2 Quicktags Javascript -->\r\n";
2284
- echo "<script type=\"text/javascript\">\r\n";
2285
- echo "//<![CDATA[\r\n";
2286
- echo "function s2_insert_token() {
2287
- buttonsnap_settext('<!--subscribe2-->');
2288
- }\r\n";
2289
- echo "//]]>\r\n";
2290
- echo "</script>\r\n";
2291
- echo "<!-- End Subscribe2 Quicktags Javascript -->\r\n";
2292
- }
2293
-
2294
  /* ===== our variables ===== */
2295
  // cache variables
2296
- var $version = '';
2297
  var $subscribe2_options = array();
2298
  var $all_public = '';
2299
  var $all_unconfirmed = '';
3
  Plugin Name: Subscribe2
4
  Plugin URI: http://subscribe2.wordpress.com
5
  Description: Notifies an email list when new entries are posted.
6
+ Version: 4.6
7
  Author: Matthew Robinson
8
  Author URI: http://subscribe2.wordpress.com
9
  */
10
 
11
  /*
12
+ Copyright (C) 2006-8 Matthew Robinson
13
  Based on the Original Subscribe2 plugin by
14
  Copyright (C) 2005 Scott Merrill (skippy@skippy.net)
15
 
41
 
42
  // our version number. Don't touch this or any line below
43
  // unless you know exacly what you are doing
44
+ define('S2VERSION', '4.6');
45
  define ('S2PATH', trailingslashit(dirname(__FILE__)));
46
 
47
+ // Is this WordPressMU or not?
48
+ define('S2_MU', (isset($wpmu_version) || (strpos($wp_version, 'wordpress-mu') !== false)));
49
+
50
  // use Owen's excellent ButtonSnap library
51
+ if (!function_exists(buttonsnap_textbutton)) {
52
+ require(ABSPATH . 'wp-content/plugins/subscribe2/include/buttonsnap.php');
53
+ }
54
 
55
  $mysubscribe2 = new s2class;
56
  $mysubscribe2->s2init();
81
 
82
  $this->barred_domain = "<p>" . __('Sorry, email addresses at that domain are currently barred due to spam, please use an alternative email address.', 'subscribe2') . "</p>";
83
 
84
+ $this->error = "<p>" . __('Sorry, there seems to be an error on the server. Please try again later.', 'subscribe2') . "</p>";
85
+
86
  $this->mail_sent = "<p>" . __('Message sent!', 'subscribe2') . "</p>";
87
 
88
  $this->form = "<form method=\"post\" action=\"\">" . __('Your email:', 'subscribe2') . "&#160;<input type=\"text\" name=\"email\" value=\"\" size=\"20\" />&#160;<br /><input type=\"radio\" name=\"s2_action\" value=\"subscribe\" checked=\"checked\" /> " . __('Subscribe', 'subscribe2') . " <input type=\"radio\" name=\"s2_action\" value=\"unsubscribe\" /> " . __('Unsubscribe', 'subscribe2') . " &#160;<input type=\"submit\" value=\"" . __('Send', 'subscribe2') . "\" /></form>\r\n";
114
  function admin_menu() {
115
  add_management_page(__('Subscribers', 'subscribe2'), __('Subscribers', 'subscribe2'), "manage_options", __FILE__, array(&$this, 'manage_menu'));
116
  add_options_page(__('Subscribe2 Options', 'subscribe2'), __('Subscribe2','subscribe2'), "manage_options", __FILE__, array(&$this, 'options_menu'));
117
+ add_users_page(__('Subscriptions', 'subscribe2'), __('Subscriptions', 'subscribe2'), "read", __FILE__, array(&$this, 'user_menu'));
 
 
 
 
118
  add_submenu_page('post-new.php', __('Mail Subscribers','subscribe2'), __('Mail Subscribers', 'subscribe2'),"manage_options", __FILE__, array(&$this, 'write_menu'));
119
  $s2nonce = md5('subscribe2');
120
  }
243
  $this->myname = $admin->display_name;
244
  $this->myemail = $admin->user_email;
245
  }
246
+ $headers = "From: \"" . $this->myname . "\" <" . $this->myemail . ">\n";
247
+ $headers .= "Return-path: <" . $this->myemail . ">\n";
248
+ $headers .= "Reply-To: \"" . $this->myname . "\" <" . $this->myemail . ">\n";
249
  $headers .= "X-Mailer:PHP" . phpversion() . "\n";
250
  $headers .= "Precedence: list\nList-Id: " . get_option('blogname') . "\n";
251
 
318
  if ( (defined('BCCLIMIT')) && (BCCLIMIT > 0) && (isset($batch)) ) {
319
  foreach ($batch as $bcc) {
320
  $newheaders = $headers . "$bcc\r\n";
321
+ @wp_mail($this->myemail, $subject, $mailtext, $newheaders);
322
  }
323
  } else {
324
+ @wp_mail($this->myemail, $subject, $mailtext, $headers);
325
  }
326
  return;
327
  } // end mail()
331
  */
332
  function publish($post = 0) {
333
  if (!$post) { return $post; }
334
+ $s2mail = get_post_meta($post->ID, 's2mail', true);
335
+ if (strtolower(trim($s2mail)) == 'no') { return $post; }
336
 
337
  // are we doing daily digests? If so, don't send anything now
338
  if ($this->subscribe2_options['email_freq'] != 'never') { return $post; }
343
  return $post;
344
  }
345
 
346
+ // is this post set in the future?
347
+ if ($post->post_date > current_time('mysql')) {
348
+ // bail out
349
+ return $post;
350
+ }
351
+
352
+ //Are we sending notifications for password protected posts?
353
+ if ( ($this->subscribe2_options['password'] == "no") && ($post->post_password != '') ) {
354
+ return $post;
355
+ }
356
+
357
  $post_cats = wp_get_post_categories($post->ID);
358
  $post_cats_string = implode(',', $post_cats);
359
  $check = false;
374
  }
375
  }
376
 
377
+ // Are we sending notifications for Private posts?
378
+ if ($this->subscribe2_options['private'] == "yes") {
379
+ // don't send notification to public users
380
+ $check = true;
381
  }
382
 
383
  // lets collect our public subscribers
511
 
512
  $body = str_replace("LINK", $link, $body);
513
 
514
+ $mailheaders .= "From: \"" . $admin->display_name . "\" <" . $admin->user_email . ">\n";
515
+ $mailheaders .= "Reply-To: \"" . $admin->display_name . "\" <" . $admin->user_email . ">\n";
516
+ $mailheaders .= "Return-path: <" . $admin->user_email . ">\n";
517
  $mailheaders .= "X-Mailer:PHP" . phpversion() . "\n";
518
  $mailheaders .= "Precedence: list\nList-Id: " . get_option('blogname') . "\n";
519
  $mailheaders .= "MIME-Version: 1.0\n";
520
  $mailheaders .= "Content-Type: text/plain; charset=\"". get_bloginfo('charset') . "\"\n";
521
 
522
+ return @wp_mail($this->email, $subject, $body, $mailheaders);
523
  } // end send_confirm()
524
 
525
  /* ===== Subscriber functions ===== */
649
  }
650
  } //end remind()
651
 
 
 
 
 
 
 
 
 
 
 
 
652
  /**
653
  Check email is not from a barred domain
654
  */
809
  $AND .= "AND ($and)";
810
  }
811
 
812
+ if ((defined(S2_MU)) && S2_MU) {
813
+ $sql = "SELECT a.user_id FROM $wpdb->usermeta AS a " . $JOIN . " WHERE a.meta_key='".$wpdb->prefix."capabilities'" . $AND;
814
+ } else {
815
+ $sql = "SELECT a.user_id FROM $wpdb->usermeta AS a " . $JOIN . " WHERE a.meta_key='s2_subscribed'" . $AND;
816
+ }
817
  $result = $wpdb->get_col($sql);
818
  if ($result) {
819
  $ids = implode(',', $result);
882
  update_usermeta($user_id, 's2_format', 'text');
883
  update_usermeta($user_id, 's2_excerpt', 'excerpt');
884
  } else {
885
+ // create post format entries for all users
886
+ $check = get_usermeta($user_id, 's2_format');
887
+ if (empty($check)) {
888
+ if ('html' == $this->subscribe2_options['autoformat']) {
889
+ update_usermeta($user_id, 's2_format', 'html');
890
+ update_usermeta($user_id, 's2_excerpt', 'post');
891
+ } elseif ('fulltext' == $this->subscribe2_options['autoformat']) {
892
+ update_usermeta($user_id, 's2_format', 'text');
893
+ update_usermeta($user_id, 's2_excerpt', 'post');
894
+ } else {
895
+ update_usermeta($user_id, 's2_format', 'text');
896
+ update_usermeta($user_id, 's2_excerpt', 'excerpt');
897
+ }
898
+ }
899
  // ensure existing subscriptions are not overwritten on upgrade
900
+ $check = get_usermeta($user_id, 's2_subscribed');
901
+ // if the are no existing subscriptions, create them based on admin options
902
  if (empty($check)) {
903
  if ( ('yes' == $this->subscribe2_options['autosub']) || (('wpreg' == $this->subscribe2_options['autosub']) && (1 == $wpreg)) ) {
904
  // don't add entries by default if autosub is off, messes up daily digests
906
  foreach(explode(',', $cats) as $cat) {
907
  update_usermeta($user_id, 's2_cat' . $cat, "$cat");
908
  }
 
 
 
 
 
 
 
 
 
 
909
  } else {
910
  update_usermeta($user_id, 's2_subscribed', '-1');
911
  }
1036
 
1037
  $what = '';
1038
  $reminderform = false;
1039
+ $action = remove_query_arg(array('what', 's2page'));
1040
+ $this->action = attribute_escape($action);
1041
  $urlpath = str_replace("\\","/",S2PATH);
1042
  $urlpath = trailingslashit(get_option('siteurl')) . substr($urlpath,strpos($urlpath,"wp-content/"));
1043
+ if ( isset( $_GET['s2page'] ) ) {
1044
+ $page = (int) $_GET['s2page'];
1045
+ } else {
1046
+ $page = 1;
1047
+ }
1048
 
1049
  // was anything POSTed ?
1050
  if (isset($_POST['s2_admin'])) {
1059
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Address(es) subscribed!', 'subscribe2') . "</strong></p></div>";
1060
  } elseif ('delete' == $_POST['s2_admin']) {
1061
  $this->delete($_POST['email']);
1062
+ echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . $_POST['email'] . ' ' . __('deleted!', 'subscribe2') . "</strong></p></div>";
1063
  } elseif ('toggle' == $_POST['s2_admin']) {
1064
  $this->toggle($_POST['email']);
1065
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . $_POST['email'] . ' ' . __('status changed!', 'subscribe2') . "</strong></p></div>";
1066
  } elseif ('remind' == $_POST['s2_admin']) {
1067
  $this->remind($_POST['reminderemails']);
1068
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Reminder Email(s) Sent!','subscribe2') . "</strong></p></div>";
 
 
 
1069
  } elseif ( ('register' == $_POST['s2_admin']) && ('subscribe' == $_POST['manage']) ) {
1070
  $this->subscribe_registered_users($_POST['emails'], $_POST['category']);
1071
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Registered Users Subscribed!','subscribe2') . "</strong></p></div>";
1076
  }
1077
 
1078
  if (isset($_POST['what'])) {
1079
+ $page = 1;
1080
  if ('all' == $_POST['what']) {
1081
  $what = 'all';
1082
  $confirmed = $this->get_public();
1089
  $subscribers = array_merge((array)$confirmed, (array)$unconfirmed);
1090
  } elseif ('confirmed' == $_POST['what']) {
1091
  $what = 'confirmed';
1092
+ $confirmed = $this->get_public();
1093
  $subscribers = $confirmed;
1094
  } elseif ('unconfirmed' == $_POST['what']) {
1095
  $what = 'unconfirmed';
1096
+ $unconfirmed = $this->get_public(0);
1097
  $subscribers = $unconfirmed;
1098
+ if (!empty($subscribers)) {
1099
+ $reminderemails = implode(",", $subscribers);
1100
  $reminderform = true;
1101
  }
1102
  } elseif (is_numeric($_POST['what'])) {
1106
  $what = 'registered';
1107
  $subscribers = $registered;
1108
  }
1109
+ } elseif (isset($_GET['what'])) {
1110
+ if ('all' == $_GET['what']) {
1111
+ $what = 'all';
1112
+ $confirmed = $this->get_public();
1113
+ $unconfirmed = $this->get_public(0);
1114
+ $subscribers = array_merge((array)$confirmed, (array)$unconfirmed, (array)$registered);
1115
+ } elseif ('public' == $_GET['what']) {
1116
+ $what = 'public';
1117
+ $confirmed = $this->get_public();
1118
+ $unconfirmed = $this->get_public(0);
1119
+ $subscribers = array_merge((array)$confirmed, (array)$unconfirmed);
1120
+ } elseif ('confirmed' == $_GET['what']) {
1121
+ $what = 'confirmed';
1122
+ $confirmed = $this->get_public();
1123
+ $subscribers = $confirmed;
1124
+ } elseif ('unconfirmed' == $_GET['what']) {
1125
+ $what = 'unconfirmed';
1126
+ $unconfirmed = $this->get_public(0);
1127
+ $subscribers = $unconfirmed;
1128
+ if (!empty($subscribers)) {
1129
+ $reminderemails = implode(",", $subscribers);
1130
+ $reminderform = true;
1131
+ }
1132
+ } elseif (is_numeric($_GET['what'])) {
1133
+ $what = intval($_GET['what']);
1134
+ $subscribers = $this->get_registered("cats=$what");
1135
+ } elseif ('registered' == $_GET['what']) {
1136
+ $what = 'registered';
1137
+ $subscribers = $registered;
1138
+ }
1139
  } elseif ('' == $what) {
1140
  $what = 'registered';
1141
  $subscribers = $registered;
1156
  }
1157
  if (!empty($subscribers)) {
1158
  natcasesort($subscribers);
1159
+ // Displays a page number strip - adapted from code in Akismet
1160
+ $args['what'] = $what;
1161
+ $total_subscribers = count($subscribers);
1162
+ $total_pages = ceil($total_subscribers / 50);
1163
+ $strip = '';
1164
+ if ( $page > 1 ) {
1165
+ $args['s2page'] = $page - 1;
1166
+ $strip .= '<a class="prev" href="' . clean_url(add_query_arg( $args )) . '">&laquo; '. __('Previous Page', 'subscribe2') .'</a>' . "\n";
1167
+ }
1168
+ if ( $total_pages > 1 ) {
1169
+ for ( $page_num = 1; $page_num <= $total_pages; $page_num++ ) {
1170
+ if ( $page == $page_num ) {
1171
+ $strip .= "<strong>" . $page_num . "</strong>\n";
1172
+ } else {
1173
+ if ( $page_num < 3 || ( $page_num >= $page - 2 && $page_num <= $page + 2 ) || $page_num > $total_pages - 2 ) {
1174
+ $args['s2page'] = $page_num;
1175
+ $strip .= "<a class=\"page-numbers\" href=\"" . clean_url(add_query_arg($args)) . "\">" . $page_num . "</a>\n";
1176
+ $trunc = true;
1177
+ } elseif ( $trunc == true ) {
1178
+ $strip .= "...\n";
1179
+ $trunc = false;
1180
+ }
1181
+ }
1182
+ }
1183
+ }
1184
+ if ( ( $page ) * 50 < $total_subscribers ) {
1185
+ $args['s2page'] = $page + 1;
1186
+ $strip .= "<a class=\"next\" href=\"" . clean_url(add_query_arg($args)) . "\">". __('Next Page', 'subscribe2') . " &raquo;</a>\n";
1187
+ }
1188
  }
1189
  // safety check for our arrays
1190
  if ('' == $confirmed) { $confirmed = array(); }
1194
  // show our form
1195
  echo "<div class=\"wrap\">";
1196
  echo "<h2>" . __('Subscribe Addresses', 'subscribe2') . "</h2>\r\n";
1197
+ echo "<form method=\"post\" action=\"$this->action\">\r\n";
1198
+ echo "<p>";
1199
  if (function_exists('wp_nonce_field')) {
1200
  wp_nonce_field('subscribe2-manage_subscribers' . $s2nonce);
1201
  }
1202
  echo __('Enter addresses, one per line or comma-seperated', 'subscribe2') . "<br />\r\n";
1203
+ echo "<textarea rows=\"2\" cols=\"80\" name=\"addresses\"></textarea></p>\r\n";
1204
+ echo "<p class=\"submit\"><input type=\"submit\" name=\"submit\" value=\"" . __('Subscribe', 'subscribe2') . "\"/>\r\n";
1205
+ echo "<input type=\"hidden\" name=\"s2_admin\" value=\"subscribe\" /></p>";
1206
  echo "</form></div>";
1207
 
1208
  // subscriber lists
1209
  echo "<div class=\"wrap\"><h2>" . __('Subscribers', 'subscribe2') . "</h2>\r\n";
1210
+ echo "<br />";
1211
  $this->display_subscriber_dropdown($what, __('Filter', 'subscribe2'));
1212
  // show the selected subscribers
1213
  $alternate = 'alternate';
1214
  if (!empty($subscribers)) {
1215
  echo "<p align=\"center\"><b>" . __('Registered on the left, confirmed in the middle, unconfirmed on the right', 'subscribe2') . "</b></p>\r\n";
1216
+ $exportcsv = implode(",", $subscribers);
1217
+ echo "<form method=\"post\" action=\"\">\r\n";
1218
+ if (function_exists('wp_nonce_field')) {
1219
+ wp_nonce_field('subscribe2-manage_subscribers' . $s2nonce);
 
 
 
 
 
 
1220
  }
1221
+ echo "<input type=\"hidden\" name=\"exportcsv\" value=\"$exportcsv\" />\r\n";
1222
+ echo "<input type=\"hidden\" name=\"s2_admin\" value=\"exportcsv\" />\r\n";
1223
+ echo "<p class=\"submit\"><input type=\"submit\" name=\"submit\" value=\"" . __('Save Emails to CSV File','subscribe2') . "\" /></p>\r\n";
1224
+ echo "</form>\r\n";
1225
  }
1226
+ echo "<p>" . $strip . "</p>";
1227
  echo "<table cellpadding=\"2\" cellspacing=\"2\">";
1228
  if (!empty($subscribers)) {
1229
+ $subscriber_chunks = array_chunk($subscribers, 50);
1230
+ $chunk = $page - 1;
1231
+ $subscribers = $subscriber_chunks[$chunk];
1232
  foreach ($subscribers as $subscriber) {
1233
  echo "<tr class=\"$alternate\">";
1234
  echo "<td width=\"75%\"";
1243
  if (in_array($subscriber, $unconfirmed) || in_array($subscriber, $confirmed) ) {
1244
  echo "(" . $this->signup_date($subscriber) . ")</td>\r\n";
1245
  echo "<td width=\"5%\" align=\"center\">\r\n";
1246
+ echo "<form method=\"post\" action=\"$this->action\">";
1247
  if (function_exists('wp_nonce_field')) {
1248
  wp_nonce_field('subscribe2-manage_subscribers' . $s2nonce);
1249
  }
1263
  if (function_exists('wp_nonce_field')) {
1264
  wp_nonce_field('subscribe2-manage_subscribers' . $s2nonce);
1265
  }
 
1266
  echo "<input type=\"hidden\" name=\"email\" value=\"$subscriber\" />\r\n";
1267
  echo "<input type=\"hidden\" name=\"s2_admin\" value=\"delete\" />\r\n";
1268
  echo "<input type=\"hidden\" name=\"what\" value=\"$what\" />\r\n";
1269
+ echo "<p class=\"delete\">\r\n";
1270
+ echo "<input type=\"image\" src=\"" . $urlpath . "include/cross.png\" name=\"submit\" value=\"X\" />\r\n";
1271
+ echo "</p></form>";
1272
  }
1273
  echo "</td></tr>\r\n";
1274
  ('alternate' == $alternate) ? $alternate = '' : $alternate = 'alternate';
1277
  echo "<tr><td align=\"center\"><b>" . __('NONE', 'subscribe2') . "</b></td></tr>\r\n";
1278
  }
1279
  echo "</table>";
1280
+ echo "<p>" . $strip . "</p>";
1281
  if ($reminderform) {
1282
+ echo "<form method=\"post\" action=\"$this->action\">\r\n";
1283
  if (function_exists('wp_nonce_field')) {
1284
  wp_nonce_field('subscribe2-manage_subscribers' . $s2nonce);
1285
  }
1293
  //show bulk managment form
1294
  echo "<div class=\"wrap\">";
1295
  echo "<h2>" . __('Categories', 'subscribe2') . "</h2>\r\n";
1296
+ echo "<p>";
1297
  echo __('Existing Registered Users can be automatically (un)subscribed to categories using this section.', 'subscribe2') . "<br />\r\n";
1298
  echo "<strong><em style=\"color: red\">" . __('Consider User Privacy as changes cannot be undone', 'subscribe2') . "</em></strong><br />\r\n";
1299
+ echo "</p>";
1300
  echo "<form method=\"post\" action=\"\">\r\n";
1301
  if (function_exists('wp_nonce_field')) {
1302
  wp_nonce_field('subscribe2-manage_subscribers' . $s2nonce);
1355
  }
1356
  $this->subscribe2_options['sender'] = $sender;
1357
 
1358
+ // send email for pages, private and password protected posts
1359
  $pages_option = $_POST['pages'];
1360
  $this->subscribe2_options['pages']= $pages_option;
1361
  $password_option = $_POST['password'];
1362
  $this->subscribe2_options['password']= $password_option;
1363
+ $private_option = $_POST['private'];
1364
+ $this->subscribe2_options['private'] = $private_option;
1365
 
1366
  // send per-post or digest emails
1367
  $email_freq = $_POST['email_freq'];
1380
  } else {
1381
  if (!wp_next_scheduled('s2_digest_cron')) {
1382
  // if we are using digest schedule the event and prime last_cron as now
1383
+ $time = current_time('timestamp') + $interval;
1384
  if ($interval < 86400) {
1385
  // Schedule CRON events occurring less than daily starting now and periodically thereafter
1386
  $timestamp = &$time;
1429
  }
1430
  echo "<input type=\"hidden\" name=\"s2_admin\" value=\"options\" />\r\n";
1431
  echo "<h2>" . __('Delivery Options', 'subscribe2') . ":</h2>\r\n";
1432
+ echo "<p>";
1433
  echo __('Send Emails for Pages', 'subscribe2') . ': ';
1434
  echo "<input type=\"radio\" name=\"pages\" value=\"yes\"";
1435
  if ('yes' == $this->subscribe2_options['pages']) {
1452
  echo " checked=\"checked\"";
1453
  }
1454
  echo " /> " . __('No', 'subscribe2') . "<br /><br />\r\n";
1455
+ echo __('Send Emails for Private Posts', 'subscribe2') . ': ';
1456
+ echo "<input type=\"radio\" name=\"private\" value=\"yes\"";
1457
+ if ('yes' == $this->subscribe2_options['private']) {
1458
+ echo " checked=\"checked\"";
1459
+ }
1460
+ echo " /> " . __('Yes', 'subscribe2') . " &nbsp;&nbsp;";
1461
+ echo "<input type=\"radio\" name=\"private\" value=\"no\"";
1462
+ if ('no' == $this->subscribe2_options['private']) {
1463
+ echo " checked=\"checked\"";
1464
+ }
1465
+ echo " /> " . __('No', 'subscribe2') . "<br /><br />\r\n";
1466
  echo __('Send Email From', 'subscribe2') . ': ';
1467
  echo "<input type=\"radio\" name=\"sender\" value=\"author\"";
1468
  if ('author' == $this->subscribe2_options['sender']) {
1478
  echo __('Send Email as Digest', 'subscribe2') . ": <br /><br />\r\n";
1479
  $this->display_digest_choices();
1480
  }
1481
+ echo "</p>";
1482
  echo "<h2>" . __('Email Templates', 'subscribe2') . "</h2>\r\n";
1483
+ echo"<br />";
1484
  echo "<table width=\"100%\" cellspacing=\"2\" cellpadding=\"1\" class=\"editform\">\r\n";
1485
  echo "<tr><td>";
1486
  echo __('New Post email (must not be empty)', 'subscribe2') . ":";
1491
  echo "<dl>";
1492
  echo "<dt><b>BLOGNAME</b></dt><dd>" . get_bloginfo('name') . "</dd>\r\n";
1493
  echo "<dt><b>BLOGLINK</b></dt><dd>" . get_bloginfo('url') . "</dd>\r\n";
1494
+ echo "<dt><b>TITLE</b></dt><dd>" . __("the post's title<br />(<i>for per-post emails only</i>)", 'subscribe2') . "</dd>\r\n";
1495
  echo "<dt><b>POST</b></dt><dd>" . __("the excerpt or the entire post<br />(<i>based on the subscriber's preferences</i>)", 'subscribe2') . "</dd>\r\n";
1496
+ echo "<dt><b>TABLE</b></dt><dd>" . __("a list of post titles<br />(<i>for digest emails only</i>)", 'subscribe2') . "</dd>\r\n";
1497
+ echo "<dt><b>PERMALINK</b></dt><dd>" . __("the post's permalink<br />(<i>for per-post emails only</i>)", 'subscribe2') . "</dd>\r\n";
1498
  echo "<dt><b>MYNAME</b></dt><dd>" . __("the admin or post author's name", 'subscribe2') . "</dd>\r\n";
1499
  echo "<dt><b>EMAIL</b></dt><dd>" . __("the admin or post author's email", 'subscribe2') . "</dd>\r\n";
1500
  echo "<dt><b>AUTHORNAME</b></dt><dd>" . __("the post author's name", 'subscribe2') . "</dd>\r\n";
1510
 
1511
  // excluded categories
1512
  echo "<h2>" . __('Excluded Categories', 'subscribe2') . "</h2>\r\n";
1513
+ echo"<p>";
1514
  echo "<strong><em style=\"color: red\">" . __('Posts assigned to any Excluded Category do not generate notifications and are not included in digest notifications', 'subscribe2') . "</em></strong><br />\r\n";
1515
+ echo"</p>";
1516
  $this->display_category_form(explode(',', $this->subscribe2_options['exclude']));
1517
  echo "<center><input type=\"checkbox\" name=\"reg_override\" value=\"1\"";
1518
  if ('1' == $this->subscribe2_options['reg_override']) {
1522
 
1523
  // show button in QuickTags
1524
  echo "<h2>" . __('Writing Options', 'subscribe2') . "</h2>\r\n";
1525
+ echo"<p>";
1526
  echo "<input type=\"checkbox\" name=\"show_button\" value=\"1\"";
1527
  if ('1' == $this->subscribe2_options['show_button']) {
1528
  echo " checked=\"checked\"";
1535
  echo " checked=\"checked\"";
1536
  }
1537
  echo " /> " . __('Enable Subscribe2 Widget?', 'subscribe2') . "<br /><br />\r\n";
1538
+ echo"</p>";
1539
 
1540
  //Auto Subscription for new registrations
1541
  echo "<h2>" . __('Auto Subscribe', 'subscribe2') . "</h2>\r\n";
1542
+ echo"<p>";
1543
  echo __('Subscribe new users registering with your blog', 'subscribe2') . ":<br />\r\n";
1544
  echo "<input type=\"radio\" name=\"autosub\" value=\"yes\"";
1545
  if ('yes' == $this->subscribe2_options['autosub']) {
1583
  echo "checked=\"checked\" ";
1584
  }
1585
  echo "/> " . __('Plain Text - Excerpt', 'subscribe2') . " <br /><br />";
1586
+ echo"</p>";
1587
 
1588
  //barred domains
1589
  echo "<h2>" . __('Barred Domains', 'subscribe2') . "</h2>\r\n";
1590
+ echo"<p>";
1591
  echo __('Enter domains to bar from public subscriptions: <br /> (Use a new line for each entry and omit the "@" symbol, for example email.com)', 'subscribe2');
1592
  echo "<br />\r\n<textarea style=\"width: 98%;\" rows=\"4\" cols=\"60\" name=\"barred\">" . $this->subscribe2_options['barred'] . "</textarea>";
1593
+ echo"</p>";
1594
 
1595
  // submit
1596
+ echo "<p class=\"submit\" align=\"center\"><input type=\"submit\" id=\"save\" name=\"submit\" value=\"" . __('Submit', 'subscribe2') . "\" /></p>";
1597
  echo "</form>\r\n";
1598
  echo "</div><div class=\"wrap\">";
1599
 
1604
  if (function_exists('wp_nonce_field')) {
1605
  wp_nonce_field('subscribe2-options_subscribers' . $s2nonce);
1606
  }
1607
+ echo "<p class=\"submit\" align=\"center\">";
1608
  echo "<input type=\"hidden\" name=\"s2_admin\" value=\"RESET\" />";
1609
  echo "<input type=\"submit\" id=\"deletepost\" name=\"submit\" value=\"" . __('RESET', 'subscribe2') .
1610
  "\" />";
1611
+ echo "</p></form></div>\r\n";
1612
 
1613
  include(ABSPATH . 'wp-admin/admin-footer.php');
1614
  // just to be sure
1682
  echo "<div class=\"wrap\">";
1683
  echo "<h2>" . __('Notification Settings', 'subscribe2') . "</h2>\r\n";
1684
  echo "<form method=\"post\" action=\"\">";
1685
+ echo "<p>";
1686
  if (function_exists('wp_nonce_field')) {
1687
  wp_nonce_field('subscribe2-user_subscribers' . $s2nonce);
1688
  }
1709
  }
1710
  echo " /> " . $value . "&nbsp;&nbsp;";
1711
  }
1712
+ echo "<br /><span style=\"color: red;line-height: 300%;\">" . __('Note: HTML format will always deliver the full post', 'subscribe2') . ".</span><br />\r\n";
1713
  echo __('Automatically subscribe me to newly created categories', 'subscribe2') . ': &nbsp;&nbsp;';
1714
  echo "<input type=\"radio\" name=\"new_category\" value=\"yes\" ";
1715
  if ('yes' == get_usermeta($user_ID, 's2_autosub')) {
1721
  echo "checked=\"checked\" ";
1722
  }
1723
  echo "/> " . __('No', 'subscribe2') . "<br /><br />";
1724
+ echo "</p>";
1725
 
1726
  // subscribed categories
1727
  echo "<h2>" . __('Subscribed Categories', 'subscribe2') . "</h2>\r\n";
1730
  // we're doing daily digests, so just show
1731
  // subscribe / unnsubscribe
1732
  echo __('Receive daily summary of new posts?', 'subscribe2') . ': &nbsp;&nbsp;';
1733
+ echo "<p>";
1734
  echo "<input type=\"radio\" name=\"category\" value=\"digest\" ";
1735
  if (get_usermeta($user_ID, 's2_subscribed') != '-1') {
1736
  echo "checked=\"yes\" ";
1740
  echo "checked=\"yes\" ";
1741
  }
1742
  echo "/> " . __('No', 'subscribe2');
1743
+ echo "</p>";
1744
  }
1745
 
1746
+
1747
  // submit
1748
  echo "<p class=\"submit\"><input type=\"submit\" name=\"submit\" value=\"" . __("Update Preferences", 'subscribe2') . " &raquo;\" /></p>";
1749
  echo "</form></div>\r\n";
1792
  // show our form
1793
  echo "<div class=\"wrap\"><h2>" . __('Send email to all subscribers', 'subscribe2') . "</h2>\r\n";
1794
  echo "<form method=\"post\" action=\"\">\r\n";
1795
+ echo "<p>";
1796
  if (function_exists('wp_nonce_field')) {
1797
  wp_nonce_field('subscribe2-write_subscribers' . $s2nonce);
1798
  }
1799
+ echo __('Subject', 'subscribe2') . ": <input type=\"text\" size=\"69\" name=\"subject\" value=\"" . __('A message from ', 'subscribe2') . get_option('blogname') . "\" /> <br /><br />";
1800
  echo "<textarea rows=\"12\" cols=\"75\" name=\"message\"></textarea>";
1801
+ echo "<br /><br />\r\n";
1802
  echo __('Recipients: ', 'subscribe2');
1803
  $this->display_subscriber_dropdown('registered', false, array('all'));
1804
  echo "<input type=\"hidden\" name=\"s2_admin\" value=\"mail\" />";
1805
+ echo "</p>";
1806
+ echo "<p class=\"submit\"><input type=\"submit\" name=\"submit\" value=\"" . __('Send', 'subscribe2') . "\" /></p>";
1807
  echo "</form></div>\r\n";
1808
  echo "<div style=\"clear: both;\"><p>&nbsp;</p></div>";
1809
 
1906
  }
1907
 
1908
  if (false !== $submit) {
1909
+ echo "<form method=\"post\" action=\"$this->action\">";
1910
  }
1911
  echo "<select name=\"what\">\r\n";
1912
  foreach ($who as $whom => $display) {
1928
  }
1929
  echo "</select>";
1930
  if (false !== $submit) {
1931
+ echo "<p class=\"submit\"><input type=\"submit\" value=\"$submit\" /></p></form>\r\n";
1932
  }
1933
  } // end display_subscriber_dropdown()
1934
 
1967
  if ($scheduled_time) {
1968
  echo "<p><input type=\"checkbox\" name=\"reset_cron\" /> " . __('Reset the schedule time and date for periodic email notifications', 'subscribe2') . "</p>\r\n";
1969
  $datetime = get_option('date_format') . ' @ ' . get_option('time_format');
 
1970
  echo "<p>" . __('Current server time is', 'subscribe2') . ": \r\n";
1971
+ echo "<strong>" . date($datetime, current_time('timestamp', 1)) . "</strong></p>\r\n";
1972
+ echo "<p>" . __('Current blog time is', 'subscribe2') . ": \r\n";
1973
+ echo "<strong>" . date($datetime, current_time('timestamp')) . "</strong></p>\r\n";
1974
+ echo "<p>" . __('Next email notification will be sent when your blog time is after', 'subscribe2') . ": \r\n";
1975
+ echo "<strong>" . date($datetime, wp_next_scheduled('s2_digest_cron')) . "</strong></p>\r\n";
1976
  } else {
1977
  echo "<br />";
1978
  }
2020
  Display our form; also handles (un)subscribe requests
2021
  */
2022
  function filter($content = '') {
2023
+ if ( ('' == $content) || (! strstr($content, '<!--subscribe2-->')) ) { return $content; }
2024
  $this->s2form = $this->form;
2025
 
2026
  global $user_ID;
2054
  if ('1' !== $this->is_public($this->email)) {
2055
  // the user is unknown or inactive
2056
  $this->add();
2057
+ $status = $this->send_confirm('add');
2058
  // set a variable to denote that we've already run, and shouldn't run again
2059
  $this->filtered = 1; //set this to not send duplicate emails
2060
+ if ($status) {
2061
+ $this->s2form = $this->confirmation_sent;
2062
+ } else {
2063
+ $this->s2form = $this->error;
2064
+ }
2065
  } else {
2066
  // they're already subscribed
2067
  $this->s2form = $this->already_subscribed;
2072
  if (false == $this->is_public($this->email)) {
2073
  $this->s2form = $this->form . $this->not_subscribed;
2074
  } else {
2075
+ $status = $this->send_confirm('del');
2076
  // set a variable to denote that we've already run, and shouldn't run again
2077
  $this->filtered = 1;
2078
+ if ($status) {
2079
+ $this->s2form = $this->confirmation_sent;
2080
+ } else {
2081
+ $this->s2form = $this->error;
2082
+ }
2083
  }
2084
  $this->action='unsubscribe';
2085
  }
2086
  }
2087
  }
2088
  }
2089
+ return preg_replace('|(<p>)?(\n)*<!--subscribe2-->(\n)*(</p>)?|', $this->s2form, $content);
 
2090
  } // end filter()
2091
 
2092
  /**
2103
  if ( (defined('S2PAGE')) && (0 != S2PAGE) ) {
2104
  return "page_id=" . S2PAGE;
2105
  } else {
2106
+ $id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_type='page' AND post_status='publish' LIMIT 1");
2107
  if ($id) {
2108
  return "page_id=$id";
2109
  } else {
2170
  }
2171
  }
2172
 
2173
+ /* ===== Write Toolbar Button Functions ===== */
2174
+
2175
+ /**
2176
+ Register our button in the QuickTags bar
2177
+ */
2178
+ function button_init() {
2179
+ if ( !current_user_can('edit_posts') && !current_user_can('edit_pages') ) return;
2180
+ if ( 'true' == get_user_option('rich_editing') ) {
2181
+ global $wp_db_version;
2182
+ if ($wp_db_version >= 7098) {
2183
+ //check if we are using WordPress 2.5+
2184
+ add_filter('mce_external_plugins', array(&$this, 'mce3_plugin'));
2185
+ add_filter('mce_buttons', array(&$this, 'mce3_button'));
2186
+ } else {
2187
+ // Load and append our TinyMCE external plugin
2188
+ add_filter('mce_plugins', array(&$this, 'mce2_plugin'));
2189
+ add_filter('mce_buttons', array(&$this, 'mce2_button'));
2190
+ add_filter('tinymce_before_init', array(&$this, 'tinymce2_before_init'));
2191
+ }
2192
+ } else {
2193
+ //use buttonsnap to add button is not using RTE
2194
+ buttonsnap_separator();
2195
+ buttonsnap_jsbutton(get_option('siteurl') . '/wp-content/plugins/subscribe2/include/s2_button.png', __('Subscribe2', 'subscribe2'), 's2_insert_token();');
2196
+ }
2197
+ }
2198
+
2199
+ /**
2200
+ Add buttons for WordPress 2.5+ using built in hooks
2201
+ */
2202
+ function mce3_plugin($arr) {
2203
+ $path = get_option('siteurl') . '/wp-content/plugins/subscribe2/tinymce3/editor_plugin.js';
2204
+ $arr['subscribe2'] = $path;
2205
+ return $arr;
2206
+ }
2207
+
2208
+ function mce3_button($arr) {
2209
+ $arr[] = 'subscribe2';
2210
+ return $arr;
2211
+ }
2212
+
2213
+ // Add buttons in WordPress v2.1+, thanks to An-archos
2214
+ function mce2_plugin($plugins) {
2215
+ array_push($plugins, '-subscribe2quicktags');
2216
+ return $plugins;
2217
+ }
2218
+
2219
+ function mce2_button($buttons) {
2220
+ array_push($buttons, 'separator');
2221
+ array_push($buttons, 'subscribe2quicktags');
2222
+ return $buttons;
2223
+ }
2224
+
2225
+ function tinymce2_before_init() {
2226
+ $this->fullpath = get_option('siteurl') . '/wp-content/plugins/subscribe2/tinymce/';
2227
+ echo "tinyMCE.loadPlugin('subscribe2quicktags', '" . $this->fullpath . "');\n";
2228
+ }
2229
+
2230
+ function s2_edit_form() {
2231
+ echo "<!-- Start Subscribe2 Quicktags Javascript -->\r\n";
2232
+ echo "<script type=\"text/javascript\">\r\n";
2233
+ echo "//<![CDATA[\r\n";
2234
+ echo "function s2_insert_token() {
2235
+ buttonsnap_settext('<!--subscribe2-->');
2236
+ }\r\n";
2237
+ echo "//]]>\r\n";
2238
+ echo "</script>\r\n";
2239
+ echo "<!-- End Subscribe2 Quicktags Javascript -->\r\n";
2240
+ }
2241
+
2242
  /* ===== wp-cron functions ===== */
2243
  /**
2244
  Send a daily digest of today's new posts
2247
  global $wpdb;
2248
 
2249
  // collect posts
2250
+ $now = current_time('mysql');
2251
  $prev = $this->subscribe2_options['last_s2cron'];
2252
  $posts = $wpdb->get_results("SELECT ID, post_title, post_excerpt, post_content, post_type, post_password FROM $wpdb->posts WHERE post_date >= '$prev' AND post_date < '$now' AND post_status IN ('publish', 'private') AND post_type IN ('post', 'page')");
2253
 
2272
  $check = true;
2273
  }
2274
  }
2275
+ //is the current post set by the user to
2276
+ // not generate a notification email?
2277
+ $s2mail = get_post_meta($post->ID, 's2mail', true);
2278
+ if (strtolower(trim($s2mail)) == 'no') {
2279
+ $check = true;
2280
+ }
2281
  // is the current post private
2282
  // and should this not generate a notification email?
2283
  if ( ($this->subscribe2_options['password'] == "no") && ($post->post_password != '') ) {
2316
  $message .= $excerpt . "\r\n\r\n";
2317
  }
2318
 
2319
+ // get admin detailts
2320
+ $user = $this->get_userdata();
 
 
 
 
 
 
 
 
 
2321
  $this->myemail = $user->user_email;
2322
  $this->myname = $user->display_name;
2323
 
2372
  add_filter('the_title', array(&$this, 'title_filter'));
2373
  add_filter('the_content', array(&$this, 'confirm'));
2374
  }
2375
+
2376
+ if ( (isset($_POST['s2_admin'])) && ('exportcsv' == $_POST['s2_admin']) ) {
2377
+ $date = date('Y-m-d');
2378
+ header('Content-Description: File Transfer');
2379
+ header("Content-type: application/octet-stream");
2380
+ header("Content-Disposition: attachment; filename=subscribe2_users_$date.csv");
2381
+ header("Pragma: no-cache");
2382
+ header("Expires: 0");
2383
+ echo $_POST['exportcsv'];
2384
 
2385
+ exit(0);
2386
+ }
2387
+
2388
  //add regular actions and filters
2389
  add_action('admin_head', array(&$this, 'admin_head'));
2390
  add_action('admin_menu', array(&$this, 'admin_menu'));
2415
  add_action('pending_to_publish', array(&$this, 'publish'));
2416
  add_action('private_to_publish', array(&$this, 'publish'));
2417
  add_action('future_to_publish', array(&$this, 'publish'));
2418
+ if ($this->subscribe2_options['private'] == "yes") {
2419
  add_action('new_to_private', array(&$this, 'publish'));
2420
  add_action('draft_to_private', array(&$this, 'publish'));
2421
  add_action('pending_to_private', array(&$this, 'publish'));
2426
  $this->load_strings();
2427
  } // end subscribe2()
2428
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2429
  /* ===== our variables ===== */
2430
  // cache variables
 
2431
  var $subscribe2_options = array();
2432
  var $all_public = '';
2433
  var $all_unconfirmed = '';
subscribe2/subscribe2.pot → subscribe2.pot RENAMED
@@ -8,7 +8,7 @@ msgid ""
8
  msgstr ""
9
  "Project-Id-Version: PACKAGE VERSION\n"
10
  "Report-Msgid-Bugs-To: \n"
11
- "POT-Creation-Date: 2008-01-16 19:40+0000\n"
12
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,533 +16,551 @@ msgstr ""
16
  "Content-Type: text/plain; charset=CHARSET\n"
17
  "Content-Transfer-Encoding: 8bit\n"
18
 
19
- #: subscribe2.php:63
20
  msgid "To manage your subscription options please "
21
  msgstr ""
22
 
23
- #: subscribe2.php:63
24
  msgid "login"
25
  msgstr ""
26
 
27
- #: subscribe2.php:65 subscribe2.php:67
28
  msgid "You may manage your subscription options from your "
29
  msgstr ""
30
 
31
- #: subscribe2.php:65 subscribe2.php:67
32
  msgid "profile"
33
  msgstr ""
34
 
35
- #: subscribe2.php:69
36
  msgid "A confirmation message is on its way!"
37
  msgstr ""
38
 
39
- #: subscribe2.php:71
40
  msgid "That email address is already subscribed."
41
  msgstr ""
42
 
43
- #: subscribe2.php:73
44
  msgid "That email address is not subscribed."
45
  msgstr ""
46
 
47
- #: subscribe2.php:75
48
  msgid "Sorry, but that does not look like an email address to me."
49
  msgstr ""
50
 
51
- #: subscribe2.php:77
52
  msgid ""
53
  "Sorry, email addresses at that domain are currently barred due to spam, "
54
  "please use an alternative email address."
55
  msgstr ""
56
 
57
- #: subscribe2.php:79
 
 
 
 
 
58
  msgid "Message sent!"
59
  msgstr ""
60
 
61
- #: subscribe2.php:81
62
  msgid "Your email:"
63
  msgstr ""
64
 
65
- #: subscribe2.php:81 subscribe2.php:1125 subscribe2.php:1221
66
  msgid "Subscribe"
67
  msgstr ""
68
 
69
- #: subscribe2.php:81 subscribe2.php:1222
70
  msgid "Unsubscribe"
71
  msgstr ""
72
 
73
- #: subscribe2.php:81 subscribe2.php:1691
74
  msgid "Send"
75
  msgstr ""
76
 
77
- #: subscribe2.php:84
78
  msgid "No such email address is registered."
79
  msgstr ""
80
 
81
- #: subscribe2.php:86
82
  msgid "You have successfully subscribed!"
83
  msgstr ""
84
 
85
- #: subscribe2.php:88
86
  msgid "You have successfully unsubscribed."
87
  msgstr ""
88
 
89
- #: subscribe2.php:90
90
  msgid "Please confirm your request"
91
  msgstr ""
92
 
93
- #: subscribe2.php:92
94
  msgid "Subscription Reminder"
95
  msgstr ""
96
 
97
- #: subscribe2.php:94
98
  msgid "subscribe"
99
  msgstr ""
100
 
101
- #: subscribe2.php:96
102
  msgid "unsubscribe"
103
  msgstr ""
104
 
105
- #: subscribe2.php:99
106
  msgid "Options saved!"
107
  msgstr ""
108
 
109
- #: subscribe2.php:100
110
  msgid "Options reset!"
111
  msgstr ""
112
 
113
- #: subscribe2.php:108 subscribe2.php:1130
114
  msgid "Subscribers"
115
  msgstr ""
116
 
117
- #: subscribe2.php:109
118
  msgid "Subscribe2 Options"
119
  msgstr ""
120
 
121
- #: subscribe2.php:109 subscribe2.php:2009 subscribe2.php:2242
122
  msgid "Subscribe2"
123
  msgstr ""
124
 
125
- #: subscribe2.php:111 subscribe2.php:113
126
  msgid "Subscriptions"
127
  msgstr ""
128
 
129
- #: subscribe2.php:115
130
  msgid "Mail Subscribers"
131
  msgstr ""
132
 
133
- #: subscribe2.php:138
134
  msgid "Once Weekly"
135
  msgstr ""
136
 
137
- #: subscribe2.php:687
138
  msgid "New subscriber"
139
  msgstr ""
140
 
141
- #: subscribe2.php:688
142
  msgid "subscribed to email notifications!"
143
  msgstr ""
144
 
145
- #: subscribe2.php:1038
146
  msgid "Address(es) subscribed!"
147
  msgstr ""
148
 
149
- #: subscribe2.php:1041
150
  msgid "deleted!"
151
  msgstr ""
152
 
153
- #: subscribe2.php:1044
154
  msgid "status changed!"
155
  msgstr ""
156
 
157
- #: subscribe2.php:1047
158
  msgid "Reminder Email(s) Sent!"
159
  msgstr ""
160
 
161
- #: subscribe2.php:1050
162
- msgid "CSV File Created in wp-content"
163
- msgstr ""
164
-
165
- #: subscribe2.php:1053
166
  msgid "Registered Users Subscribed!"
167
  msgstr ""
168
 
169
- #: subscribe2.php:1056
170
  msgid "Registered Users Unsubscribed!"
171
  msgstr ""
172
 
173
- #: subscribe2.php:1118
 
 
 
 
 
 
 
 
174
  msgid "Subscribe Addresses"
175
  msgstr ""
176
 
177
- #: subscribe2.php:1123
178
  msgid "Enter addresses, one per line or comma-seperated"
179
  msgstr ""
180
 
181
- #: subscribe2.php:1132
182
  msgid "Filter"
183
  msgstr ""
184
 
185
- #: subscribe2.php:1136
186
  msgid ""
187
  "Registered on the left, confirmed in the middle, unconfirmed on the right"
188
  msgstr ""
189
 
190
- #: subscribe2.php:1145
191
  msgid "Save Emails to CSV File"
192
  msgstr ""
193
 
194
- #: subscribe2.php:1196
195
  msgid "NONE"
196
  msgstr ""
197
 
198
- #: subscribe2.php:1206
199
  msgid "Send Reminder Email"
200
  msgstr ""
201
 
202
- #: subscribe2.php:1213
203
  msgid "Categories"
204
  msgstr ""
205
 
206
- #: subscribe2.php:1214
207
  msgid ""
208
  "Existing Registered Users can be automatically (un)subscribed to categories "
209
  "using this section."
210
  msgstr ""
211
 
212
- #: subscribe2.php:1215
213
  msgid "Consider User Privacy as changes cannot be undone"
214
  msgstr ""
215
 
216
- #: subscribe2.php:1220
217
  msgid "Action to perform"
218
  msgstr ""
219
 
220
- #: subscribe2.php:1225 subscribe2.php:1488
221
  msgid "Submit"
222
  msgstr ""
223
 
224
- #: subscribe2.php:1345
225
  msgid "Delivery Options"
226
  msgstr ""
227
 
228
- #: subscribe2.php:1346
229
  msgid "Send Emails for Pages"
230
  msgstr ""
231
 
232
- #: subscribe2.php:1351 subscribe2.php:1362 subscribe2.php:1459
233
- #: subscribe2.php:1609 subscribe2.php:1627
234
  msgid "Yes"
235
  msgstr ""
236
 
237
- #: subscribe2.php:1356 subscribe2.php:1367 subscribe2.php:1453
238
- #: subscribe2.php:1464 subscribe2.php:1614 subscribe2.php:1631
 
239
  msgid "No"
240
  msgstr ""
241
 
242
- #: subscribe2.php:1357
243
  msgid "Send Emails for Password Protected Posts"
244
  msgstr ""
245
 
246
- #: subscribe2.php:1368
 
 
 
 
247
  msgid "Send Email From"
248
  msgstr ""
249
 
250
- #: subscribe2.php:1373
251
  msgid "Author of the post"
252
  msgstr ""
253
 
254
- #: subscribe2.php:1378
255
  msgid "Blog Admin"
256
  msgstr ""
257
 
258
- #: subscribe2.php:1380
259
  msgid "Send Email as Digest"
260
  msgstr ""
261
 
262
- #: subscribe2.php:1383
263
  msgid "Email Templates"
264
  msgstr ""
265
 
266
- #: subscribe2.php:1386
267
  msgid "New Post email (must not be empty)"
268
  msgstr ""
269
 
270
- #: subscribe2.php:1390
271
  msgid "Message substitions"
272
  msgstr ""
273
 
274
- #: subscribe2.php:1394
275
- msgid "the post's title"
276
  msgstr ""
277
 
278
- #: subscribe2.php:1395
279
  msgid ""
280
  "the excerpt or the entire post<br />(<i>based on the subscriber's "
281
  "preferences</i>)"
282
  msgstr ""
283
 
284
- #: subscribe2.php:1396
285
- msgid "a list of post titles (for digest emails)"
286
  msgstr ""
287
 
288
- #: subscribe2.php:1397
289
- msgid "the post's permalink"
290
  msgstr ""
291
 
292
- #: subscribe2.php:1398
293
  msgid "the admin or post author's name"
294
  msgstr ""
295
 
296
- #: subscribe2.php:1399
297
  msgid "the admin or post author's email"
298
  msgstr ""
299
 
300
- #: subscribe2.php:1400
301
  msgid "the post author's name"
302
  msgstr ""
303
 
304
- #: subscribe2.php:1401
305
  msgid ""
306
  "the generated link to confirm a request<br />(<i>only used in the "
307
  "confirmation email template</i>)"
308
  msgstr ""
309
 
310
- #: subscribe2.php:1402
311
  msgid ""
312
  "Action performed by LINK in confirmation email<br />(<i>only used in the "
313
  "confirmation email template</i>)"
314
  msgstr ""
315
 
316
- #: subscribe2.php:1404
317
  msgid "Subscribe / Unsubscribe confirmation email"
318
  msgstr ""
319
 
320
- #: subscribe2.php:1407
321
  msgid "Reminder email to Unconfirmed Subscribers"
322
  msgstr ""
323
 
324
- #: subscribe2.php:1412
325
  msgid "Excluded Categories"
326
  msgstr ""
327
 
328
- #: subscribe2.php:1413
329
  msgid ""
330
  "Posts assigned to any Excluded Category do not generate notifications and "
331
  "are not included in digest notifications"
332
  msgstr ""
333
 
334
- #: subscribe2.php:1419
335
  msgid "Allow registered users to subscribe to excluded categories?"
336
  msgstr ""
337
 
338
- #: subscribe2.php:1422
339
  msgid "Writing Options"
340
  msgstr ""
341
 
342
- #: subscribe2.php:1427
343
  msgid "Show the Subscribe2 button on the Write toolbar?"
344
  msgstr ""
345
 
346
- #: subscribe2.php:1434
347
  msgid "Enable Subscribe2 Widget?"
348
  msgstr ""
349
 
350
- #: subscribe2.php:1437
351
  msgid "Auto Subscribe"
352
  msgstr ""
353
 
354
- #: subscribe2.php:1438
355
  msgid "Subscribe new users registering with your blog"
356
  msgstr ""
357
 
358
- #: subscribe2.php:1443
359
  msgid "Automatically"
360
  msgstr ""
361
 
362
- #: subscribe2.php:1448
363
  msgid "Display option on Registration Form"
364
  msgstr ""
365
 
366
- #: subscribe2.php:1454
367
  msgid "Registration Form option is checked by default"
368
  msgstr ""
369
 
370
- #: subscribe2.php:1465
371
  msgid "Auto-subscribe users to receive email as"
372
  msgstr ""
373
 
374
- #: subscribe2.php:1470 subscribe2.php:1587
375
  msgid "HTML"
376
  msgstr ""
377
 
378
- #: subscribe2.php:1475
379
  msgid "Plain Text - Full"
380
  msgstr ""
381
 
382
- #: subscribe2.php:1480
383
  msgid "Plain Text - Excerpt"
384
  msgstr ""
385
 
386
- #: subscribe2.php:1483
387
  msgid "Barred Domains"
388
  msgstr ""
389
 
390
- #: subscribe2.php:1484
391
  msgid ""
392
  "Enter domains to bar from public subscriptions: <br /> (Use a new line for "
393
  "each entry and omit the \"@\" symbol, for example email.com)"
394
  msgstr ""
395
 
396
- #: subscribe2.php:1493
397
  msgid "Reset Default"
398
  msgstr ""
399
 
400
- #: subscribe2.php:1494
401
  msgid ""
402
  "Use this to reset all options to their defaults. This <strong><em>will not</"
403
  "em></strong> modify your list of subscribers."
404
  msgstr ""
405
 
406
- #: subscribe2.php:1501
407
  msgid "RESET"
408
  msgstr ""
409
 
410
- #: subscribe2.php:1521
411
  msgid "Subscription preferences updated."
412
  msgstr ""
413
 
414
- #: subscribe2.php:1575
415
  msgid "Notification Settings"
416
  msgstr ""
417
 
418
- #: subscribe2.php:1582
419
  msgid "Receive email as"
420
  msgstr ""
421
 
422
- #: subscribe2.php:1592
423
  msgid "Plain Text"
424
  msgstr ""
425
 
426
- #: subscribe2.php:1594
427
  msgid "Email contains"
428
  msgstr ""
429
 
430
- #: subscribe2.php:1595
431
  msgid "Excerpt Only"
432
  msgstr ""
433
 
434
- #: subscribe2.php:1595
435
  msgid "Full Post"
436
  msgstr ""
437
 
438
- #: subscribe2.php:1603
439
  msgid "Note: HTML format will always deliver the full post"
440
  msgstr ""
441
 
442
- #: subscribe2.php:1604
443
  msgid "Automatically subscribe me to newly created categories"
444
  msgstr ""
445
 
446
- #: subscribe2.php:1617
447
  msgid "Subscribed Categories"
448
  msgstr ""
449
 
450
- #: subscribe2.php:1622
451
  msgid "Receive daily summary of new posts?"
452
  msgstr ""
453
 
454
- #: subscribe2.php:1635
455
  msgid "Update Preferences"
456
  msgstr ""
457
 
458
- #: subscribe2.php:1680
459
  msgid "Send email to all subscribers"
460
  msgstr ""
461
 
462
- #: subscribe2.php:1685
463
  msgid "Subject"
464
  msgstr ""
465
 
466
- #: subscribe2.php:1685
467
  msgid "A message from "
468
  msgstr ""
469
 
470
- #: subscribe2.php:1688
471
  msgid "Recipients: "
472
  msgstr ""
473
 
474
- #: subscribe2.php:1750
475
  msgid "Select / Unselect All"
476
  msgstr ""
477
 
478
- #: subscribe2.php:1763
479
  msgid "All Subscribers"
480
  msgstr ""
481
 
482
- #: subscribe2.php:1764
483
  msgid "Public Subscribers"
484
  msgstr ""
485
 
486
- #: subscribe2.php:1765
487
  msgid "Confirmed"
488
  msgstr ""
489
 
490
- #: subscribe2.php:1766
491
  msgid "Unconfirmed"
492
  msgstr ""
493
 
494
- #: subscribe2.php:1767
495
  msgid "Registered Users"
496
  msgstr ""
497
 
498
- #: subscribe2.php:1824
499
  msgid "Per Post Email"
500
  msgstr ""
501
 
502
- #: subscribe2.php:1839
503
  msgid "Send Digest Notification at"
504
  msgstr ""
505
 
506
- #: subscribe2.php:1851
507
  msgid ""
508
  "This option will work for digest notification sent daily or less frequently"
509
  msgstr ""
510
 
511
- #: subscribe2.php:1853
512
  msgid "Reset the schedule time and date for periodic email notifications"
513
  msgstr ""
514
 
515
- #: subscribe2.php:1856
516
  msgid "Current server time is"
517
  msgstr ""
518
 
519
- #: subscribe2.php:1858
520
- msgid "Next email notification will be sent"
521
  msgstr ""
522
 
523
- #: subscribe2.php:1871
 
 
 
 
524
  msgid "Check here to Subscribe to email notifications for new posts"
525
  msgstr ""
526
 
527
- #: subscribe2.php:1880
528
  msgid ""
529
  "By Registering with this blog you are also agreeing to recieve email "
530
  "notifications for new posts"
531
  msgstr ""
532
 
533
- #: subscribe2.php:1998
534
  msgid "Subscription Confirmation"
535
  msgstr ""
536
 
537
- #: subscribe2.php:2032
538
  msgid "Title:"
539
  msgstr ""
540
 
541
- #: subscribe2.php:2138
542
  msgid "Digest Email"
543
  msgstr ""
544
 
545
- #: include/options.php:55
546
  msgid ""
547
  "BLOGNAME has posted a new item, 'TITLE'\n"
548
  "\n"
@@ -558,7 +576,7 @@ msgid ""
558
  "EMAIL"
559
  msgstr ""
560
 
561
- #: include/options.php:59
562
  msgid ""
563
  "BLOGNAME has received a request to ACTION for this email address. To "
564
  "complete your request please click on the link below:\n"
@@ -571,7 +589,7 @@ msgid ""
571
  "MYNAME."
572
  msgstr ""
573
 
574
- #: include/options.php:63
575
  msgid ""
576
  "This email address was subscribed for notifications at BLOGNAME (BLOGLINK) "
577
  "but the subscription remains incomplete.\n"
8
  msgstr ""
9
  "Project-Id-Version: PACKAGE VERSION\n"
10
  "Report-Msgid-Bugs-To: \n"
11
+ "POT-Creation-Date: 2008-04-22 19:17+0100\n"
12
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
16
  "Content-Type: text/plain; charset=CHARSET\n"
17
  "Content-Transfer-Encoding: 8bit\n"
18
 
19
+ #: subscribe2.php:68
20
  msgid "To manage your subscription options please "
21
  msgstr ""
22
 
23
+ #: subscribe2.php:68
24
  msgid "login"
25
  msgstr ""
26
 
27
+ #: subscribe2.php:70 subscribe2.php:72
28
  msgid "You may manage your subscription options from your "
29
  msgstr ""
30
 
31
+ #: subscribe2.php:70 subscribe2.php:72
32
  msgid "profile"
33
  msgstr ""
34
 
35
+ #: subscribe2.php:74
36
  msgid "A confirmation message is on its way!"
37
  msgstr ""
38
 
39
+ #: subscribe2.php:76
40
  msgid "That email address is already subscribed."
41
  msgstr ""
42
 
43
+ #: subscribe2.php:78
44
  msgid "That email address is not subscribed."
45
  msgstr ""
46
 
47
+ #: subscribe2.php:80
48
  msgid "Sorry, but that does not look like an email address to me."
49
  msgstr ""
50
 
51
+ #: subscribe2.php:82
52
  msgid ""
53
  "Sorry, email addresses at that domain are currently barred due to spam, "
54
  "please use an alternative email address."
55
  msgstr ""
56
 
57
+ #: subscribe2.php:84
58
+ msgid ""
59
+ "Sorry, there seems to be an error on the server. Please try again later."
60
+ msgstr ""
61
+
62
+ #: subscribe2.php:86
63
  msgid "Message sent!"
64
  msgstr ""
65
 
66
+ #: subscribe2.php:88
67
  msgid "Your email:"
68
  msgstr ""
69
 
70
+ #: subscribe2.php:88 subscribe2.php:1204 subscribe2.php:1305
71
  msgid "Subscribe"
72
  msgstr ""
73
 
74
+ #: subscribe2.php:88 subscribe2.php:1306
75
  msgid "Unsubscribe"
76
  msgstr ""
77
 
78
+ #: subscribe2.php:88 subscribe2.php:1806
79
  msgid "Send"
80
  msgstr ""
81
 
82
+ #: subscribe2.php:91
83
  msgid "No such email address is registered."
84
  msgstr ""
85
 
86
+ #: subscribe2.php:93
87
  msgid "You have successfully subscribed!"
88
  msgstr ""
89
 
90
+ #: subscribe2.php:95
91
  msgid "You have successfully unsubscribed."
92
  msgstr ""
93
 
94
+ #: subscribe2.php:97
95
  msgid "Please confirm your request"
96
  msgstr ""
97
 
98
+ #: subscribe2.php:99
99
  msgid "Subscription Reminder"
100
  msgstr ""
101
 
102
+ #: subscribe2.php:101
103
  msgid "subscribe"
104
  msgstr ""
105
 
106
+ #: subscribe2.php:103
107
  msgid "unsubscribe"
108
  msgstr ""
109
 
110
+ #: subscribe2.php:106
111
  msgid "Options saved!"
112
  msgstr ""
113
 
114
+ #: subscribe2.php:107
115
  msgid "Options reset!"
116
  msgstr ""
117
 
118
+ #: subscribe2.php:115 subscribe2.php:1209
119
  msgid "Subscribers"
120
  msgstr ""
121
 
122
+ #: subscribe2.php:116
123
  msgid "Subscribe2 Options"
124
  msgstr ""
125
 
126
+ #: subscribe2.php:116 subscribe2.php:2132 subscribe2.php:2195
127
  msgid "Subscribe2"
128
  msgstr ""
129
 
130
+ #: subscribe2.php:117
131
  msgid "Subscriptions"
132
  msgstr ""
133
 
134
+ #: subscribe2.php:118
135
  msgid "Mail Subscribers"
136
  msgstr ""
137
 
138
+ #: subscribe2.php:141
139
  msgid "Once Weekly"
140
  msgstr ""
141
 
142
+ #: subscribe2.php:693
143
  msgid "New subscriber"
144
  msgstr ""
145
 
146
+ #: subscribe2.php:694
147
  msgid "subscribed to email notifications!"
148
  msgstr ""
149
 
150
+ #: subscribe2.php:1059
151
  msgid "Address(es) subscribed!"
152
  msgstr ""
153
 
154
+ #: subscribe2.php:1062
155
  msgid "deleted!"
156
  msgstr ""
157
 
158
+ #: subscribe2.php:1065
159
  msgid "status changed!"
160
  msgstr ""
161
 
162
+ #: subscribe2.php:1068
163
  msgid "Reminder Email(s) Sent!"
164
  msgstr ""
165
 
166
+ #: subscribe2.php:1071
 
 
 
 
167
  msgid "Registered Users Subscribed!"
168
  msgstr ""
169
 
170
+ #: subscribe2.php:1074
171
  msgid "Registered Users Unsubscribed!"
172
  msgstr ""
173
 
174
+ #: subscribe2.php:1166
175
+ msgid "Previous Page"
176
+ msgstr ""
177
+
178
+ #: subscribe2.php:1186
179
+ msgid "Next Page"
180
+ msgstr ""
181
+
182
+ #: subscribe2.php:1196
183
  msgid "Subscribe Addresses"
184
  msgstr ""
185
 
186
+ #: subscribe2.php:1202
187
  msgid "Enter addresses, one per line or comma-seperated"
188
  msgstr ""
189
 
190
+ #: subscribe2.php:1211
191
  msgid "Filter"
192
  msgstr ""
193
 
194
+ #: subscribe2.php:1215
195
  msgid ""
196
  "Registered on the left, confirmed in the middle, unconfirmed on the right"
197
  msgstr ""
198
 
199
+ #: subscribe2.php:1223
200
  msgid "Save Emails to CSV File"
201
  msgstr ""
202
 
203
+ #: subscribe2.php:1277
204
  msgid "NONE"
205
  msgstr ""
206
 
207
+ #: subscribe2.php:1288
208
  msgid "Send Reminder Email"
209
  msgstr ""
210
 
211
+ #: subscribe2.php:1295
212
  msgid "Categories"
213
  msgstr ""
214
 
215
+ #: subscribe2.php:1297
216
  msgid ""
217
  "Existing Registered Users can be automatically (un)subscribed to categories "
218
  "using this section."
219
  msgstr ""
220
 
221
+ #: subscribe2.php:1298
222
  msgid "Consider User Privacy as changes cannot be undone"
223
  msgstr ""
224
 
225
+ #: subscribe2.php:1304
226
  msgid "Action to perform"
227
  msgstr ""
228
 
229
+ #: subscribe2.php:1309 subscribe2.php:1596
230
  msgid "Submit"
231
  msgstr ""
232
 
233
+ #: subscribe2.php:1431
234
  msgid "Delivery Options"
235
  msgstr ""
236
 
237
+ #: subscribe2.php:1433
238
  msgid "Send Emails for Pages"
239
  msgstr ""
240
 
241
+ #: subscribe2.php:1438 subscribe2.php:1449 subscribe2.php:1460
242
+ #: subscribe2.php:1564 subscribe2.php:1718 subscribe2.php:1738
243
  msgid "Yes"
244
  msgstr ""
245
 
246
+ #: subscribe2.php:1443 subscribe2.php:1454 subscribe2.php:1465
247
+ #: subscribe2.php:1558 subscribe2.php:1569 subscribe2.php:1723
248
+ #: subscribe2.php:1742
249
  msgid "No"
250
  msgstr ""
251
 
252
+ #: subscribe2.php:1444
253
  msgid "Send Emails for Password Protected Posts"
254
  msgstr ""
255
 
256
+ #: subscribe2.php:1455
257
+ msgid "Send Emails for Private Posts"
258
+ msgstr ""
259
+
260
+ #: subscribe2.php:1466
261
  msgid "Send Email From"
262
  msgstr ""
263
 
264
+ #: subscribe2.php:1471
265
  msgid "Author of the post"
266
  msgstr ""
267
 
268
+ #: subscribe2.php:1476
269
  msgid "Blog Admin"
270
  msgstr ""
271
 
272
+ #: subscribe2.php:1478
273
  msgid "Send Email as Digest"
274
  msgstr ""
275
 
276
+ #: subscribe2.php:1482
277
  msgid "Email Templates"
278
  msgstr ""
279
 
280
+ #: subscribe2.php:1486
281
  msgid "New Post email (must not be empty)"
282
  msgstr ""
283
 
284
+ #: subscribe2.php:1490
285
  msgid "Message substitions"
286
  msgstr ""
287
 
288
+ #: subscribe2.php:1494
289
+ msgid "the post's title<br />(<i>for per-post emails only</i>)"
290
  msgstr ""
291
 
292
+ #: subscribe2.php:1495
293
  msgid ""
294
  "the excerpt or the entire post<br />(<i>based on the subscriber's "
295
  "preferences</i>)"
296
  msgstr ""
297
 
298
+ #: subscribe2.php:1496
299
+ msgid "a list of post titles<br />(<i>for digest emails only</i>)"
300
  msgstr ""
301
 
302
+ #: subscribe2.php:1497
303
+ msgid "the post's permalink<br />(<i>for per-post emails only</i>)"
304
  msgstr ""
305
 
306
+ #: subscribe2.php:1498
307
  msgid "the admin or post author's name"
308
  msgstr ""
309
 
310
+ #: subscribe2.php:1499
311
  msgid "the admin or post author's email"
312
  msgstr ""
313
 
314
+ #: subscribe2.php:1500
315
  msgid "the post author's name"
316
  msgstr ""
317
 
318
+ #: subscribe2.php:1501
319
  msgid ""
320
  "the generated link to confirm a request<br />(<i>only used in the "
321
  "confirmation email template</i>)"
322
  msgstr ""
323
 
324
+ #: subscribe2.php:1502
325
  msgid ""
326
  "Action performed by LINK in confirmation email<br />(<i>only used in the "
327
  "confirmation email template</i>)"
328
  msgstr ""
329
 
330
+ #: subscribe2.php:1504
331
  msgid "Subscribe / Unsubscribe confirmation email"
332
  msgstr ""
333
 
334
+ #: subscribe2.php:1507
335
  msgid "Reminder email to Unconfirmed Subscribers"
336
  msgstr ""
337
 
338
+ #: subscribe2.php:1512
339
  msgid "Excluded Categories"
340
  msgstr ""
341
 
342
+ #: subscribe2.php:1514
343
  msgid ""
344
  "Posts assigned to any Excluded Category do not generate notifications and "
345
  "are not included in digest notifications"
346
  msgstr ""
347
 
348
+ #: subscribe2.php:1521
349
  msgid "Allow registered users to subscribe to excluded categories?"
350
  msgstr ""
351
 
352
+ #: subscribe2.php:1524
353
  msgid "Writing Options"
354
  msgstr ""
355
 
356
+ #: subscribe2.php:1530
357
  msgid "Show the Subscribe2 button on the Write toolbar?"
358
  msgstr ""
359
 
360
+ #: subscribe2.php:1537
361
  msgid "Enable Subscribe2 Widget?"
362
  msgstr ""
363
 
364
+ #: subscribe2.php:1541
365
  msgid "Auto Subscribe"
366
  msgstr ""
367
 
368
+ #: subscribe2.php:1543
369
  msgid "Subscribe new users registering with your blog"
370
  msgstr ""
371
 
372
+ #: subscribe2.php:1548
373
  msgid "Automatically"
374
  msgstr ""
375
 
376
+ #: subscribe2.php:1553
377
  msgid "Display option on Registration Form"
378
  msgstr ""
379
 
380
+ #: subscribe2.php:1559
381
  msgid "Registration Form option is checked by default"
382
  msgstr ""
383
 
384
+ #: subscribe2.php:1570
385
  msgid "Auto-subscribe users to receive email as"
386
  msgstr ""
387
 
388
+ #: subscribe2.php:1575 subscribe2.php:1696
389
  msgid "HTML"
390
  msgstr ""
391
 
392
+ #: subscribe2.php:1580
393
  msgid "Plain Text - Full"
394
  msgstr ""
395
 
396
+ #: subscribe2.php:1585
397
  msgid "Plain Text - Excerpt"
398
  msgstr ""
399
 
400
+ #: subscribe2.php:1589
401
  msgid "Barred Domains"
402
  msgstr ""
403
 
404
+ #: subscribe2.php:1591
405
  msgid ""
406
  "Enter domains to bar from public subscriptions: <br /> (Use a new line for "
407
  "each entry and omit the \"@\" symbol, for example email.com)"
408
  msgstr ""
409
 
410
+ #: subscribe2.php:1601
411
  msgid "Reset Default"
412
  msgstr ""
413
 
414
+ #: subscribe2.php:1602
415
  msgid ""
416
  "Use this to reset all options to their defaults. This <strong><em>will not</"
417
  "em></strong> modify your list of subscribers."
418
  msgstr ""
419
 
420
+ #: subscribe2.php:1609
421
  msgid "RESET"
422
  msgstr ""
423
 
424
+ #: subscribe2.php:1629
425
  msgid "Subscription preferences updated."
426
  msgstr ""
427
 
428
+ #: subscribe2.php:1683
429
  msgid "Notification Settings"
430
  msgstr ""
431
 
432
+ #: subscribe2.php:1691
433
  msgid "Receive email as"
434
  msgstr ""
435
 
436
+ #: subscribe2.php:1701
437
  msgid "Plain Text"
438
  msgstr ""
439
 
440
+ #: subscribe2.php:1703
441
  msgid "Email contains"
442
  msgstr ""
443
 
444
+ #: subscribe2.php:1704
445
  msgid "Excerpt Only"
446
  msgstr ""
447
 
448
+ #: subscribe2.php:1704
449
  msgid "Full Post"
450
  msgstr ""
451
 
452
+ #: subscribe2.php:1712
453
  msgid "Note: HTML format will always deliver the full post"
454
  msgstr ""
455
 
456
+ #: subscribe2.php:1713
457
  msgid "Automatically subscribe me to newly created categories"
458
  msgstr ""
459
 
460
+ #: subscribe2.php:1727
461
  msgid "Subscribed Categories"
462
  msgstr ""
463
 
464
+ #: subscribe2.php:1732
465
  msgid "Receive daily summary of new posts?"
466
  msgstr ""
467
 
468
+ #: subscribe2.php:1748
469
  msgid "Update Preferences"
470
  msgstr ""
471
 
472
+ #: subscribe2.php:1793
473
  msgid "Send email to all subscribers"
474
  msgstr ""
475
 
476
+ #: subscribe2.php:1799
477
  msgid "Subject"
478
  msgstr ""
479
 
480
+ #: subscribe2.php:1799
481
  msgid "A message from "
482
  msgstr ""
483
 
484
+ #: subscribe2.php:1802
485
  msgid "Recipients: "
486
  msgstr ""
487
 
488
+ #: subscribe2.php:1865
489
  msgid "Select / Unselect All"
490
  msgstr ""
491
 
492
+ #: subscribe2.php:1878
493
  msgid "All Subscribers"
494
  msgstr ""
495
 
496
+ #: subscribe2.php:1879
497
  msgid "Public Subscribers"
498
  msgstr ""
499
 
500
+ #: subscribe2.php:1880
501
  msgid "Confirmed"
502
  msgstr ""
503
 
504
+ #: subscribe2.php:1881
505
  msgid "Unconfirmed"
506
  msgstr ""
507
 
508
+ #: subscribe2.php:1882
509
  msgid "Registered Users"
510
  msgstr ""
511
 
512
+ #: subscribe2.php:1939
513
  msgid "Per Post Email"
514
  msgstr ""
515
 
516
+ #: subscribe2.php:1954
517
  msgid "Send Digest Notification at"
518
  msgstr ""
519
 
520
+ #: subscribe2.php:1966
521
  msgid ""
522
  "This option will work for digest notification sent daily or less frequently"
523
  msgstr ""
524
 
525
+ #: subscribe2.php:1968
526
  msgid "Reset the schedule time and date for periodic email notifications"
527
  msgstr ""
528
 
529
+ #: subscribe2.php:1970
530
  msgid "Current server time is"
531
  msgstr ""
532
 
533
+ #: subscribe2.php:1972
534
+ msgid "Current blog time is"
535
  msgstr ""
536
 
537
+ #: subscribe2.php:1974
538
+ msgid "Next email notification will be sent when your blog time is after"
539
+ msgstr ""
540
+
541
+ #: subscribe2.php:1987
542
  msgid "Check here to Subscribe to email notifications for new posts"
543
  msgstr ""
544
 
545
+ #: subscribe2.php:1996
546
  msgid ""
547
  "By Registering with this blog you are also agreeing to recieve email "
548
  "notifications for new posts"
549
  msgstr ""
550
 
551
+ #: subscribe2.php:2121
552
  msgid "Subscription Confirmation"
553
  msgstr ""
554
 
555
+ #: subscribe2.php:2155
556
  msgid "Title:"
557
  msgstr ""
558
 
559
+ #: subscribe2.php:2327
560
  msgid "Digest Email"
561
  msgstr ""
562
 
563
+ #: include/options.php:59
564
  msgid ""
565
  "BLOGNAME has posted a new item, 'TITLE'\n"
566
  "\n"
576
  "EMAIL"
577
  msgstr ""
578
 
579
+ #: include/options.php:63
580
  msgid ""
581
  "BLOGNAME has received a request to ACTION for this email address. To "
582
  "complete your request please click on the link below:\n"
589
  "MYNAME."
590
  msgstr ""
591
 
592
+ #: include/options.php:67
593
  msgid ""
594
  "This email address was subscribed for notifications at BLOGNAME (BLOGLINK) "
595
  "but the subscription remains incomplete.\n"
subscribe2/s2uninstaller.pot DELETED
@@ -1,69 +0,0 @@
1
- # SOME DESCRIPTIVE TITLE.
2
- # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
- # This file is distributed under the same license as the PACKAGE package.
4
- # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
- #
6
- #, fuzzy
7
- msgid ""
8
- msgstr ""
9
- "Project-Id-Version: PACKAGE VERSION\n"
10
- "Report-Msgid-Bugs-To: \n"
11
- "POT-Creation-Date: 2008-01-16 20:13+0000\n"
12
- "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
- "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
- "Language-Team: LANGUAGE <LL@li.org>\n"
15
- "MIME-Version: 1.0\n"
16
- "Content-Type: text/plain; charset=CHARSET\n"
17
- "Content-Transfer-Encoding: 8bit\n"
18
-
19
- #: s2uninstaller.php:39
20
- msgid "Subscribe2 has been uninstalled."
21
- msgstr ""
22
-
23
- #: s2uninstaller.php:44
24
- msgid "Subscribe2 Uninstaller"
25
- msgstr ""
26
-
27
- #: s2uninstaller.php:46
28
- msgid ""
29
- "The Subscribe2 plugin is still active on your system. Please deactivate the "
30
- "plugin before completing the uninstall process."
31
- msgstr ""
32
-
33
- #: s2uninstaller.php:47
34
- msgid "You can deactivate the plugin by using the "
35
- msgstr ""
36
-
37
- #: s2uninstaller.php:47
38
- msgid "WordPress Plugin Page"
39
- msgstr ""
40
-
41
- #: s2uninstaller.php:57
42
- msgid ""
43
- "Clicking on UNINSTALL will remove the following items from your WordPress "
44
- "install (these were installed by Subscribe2)."
45
- msgstr ""
46
-
47
- #: s2uninstaller.php:59
48
- msgid "Options Table Entries"
49
- msgstr ""
50
-
51
- #: s2uninstaller.php:60
52
- msgid "Usermeta Table Entries"
53
- msgstr ""
54
-
55
- #: s2uninstaller.php:61
56
- msgid "Subscribe2 Table"
57
- msgstr ""
58
-
59
- #: s2uninstaller.php:62
60
- msgid "Events Schedules by Subscribe2"
61
- msgstr ""
62
-
63
- #: s2uninstaller.php:66
64
- msgid "UNINSTALL"
65
- msgstr ""
66
-
67
- #: s2uninstaller.php:108
68
- msgid "S2 Uninstaller"
69
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
subscribe2debug.php ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ Plugin Name: Subscribe2 Debug
4
+ Plugin URI: http://subscribe2.wordpress.com
5
+ Description: Produces Debug Information for the Subscribe2 plugin.
6
+ Version: 4.6
7
+ Author: Matthew Robinson
8
+ Author URI: http://subscribe2.wordpress.com
9
+ */
10
+
11
+ /*
12
+ Copyright (C) 2006-7 Matthew Robinson
13
+
14
+ This program is free software; you can redistribute it and/or
15
+ modify it under the terms of the GNU General Public License
16
+ as published by the Free Software Foundation; either version 2
17
+ of the License, or (at your option) any later version.
18
+
19
+ This program is distributed in the hope that it will be useful,
20
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
21
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22
+ GNU General Public License for more details.
23
+
24
+ You should have received a copy of the GNU General Public License
25
+ along with this program; if not, write to the Free Software
26
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
27
+ http://www.gnu.org/licenses/gpl.html
28
+ */
29
+
30
+ function add_debug_page() {
31
+ add_menu_page('Subscribe2 Debug', 'Subscribe2 Debug', 1, __FILE__, 'debug_menu');
32
+ }
33
+ add_action('admin_menu', 'add_debug_page');
34
+
35
+ function debug_menu() {
36
+ global $wp_filter;
37
+ echo "<div class=\"wrap\">";
38
+ $datetime = get_option('date_format') . ' @ ' . get_option('time_format');
39
+ echo "<p>Current Server time is: \r\n";
40
+ echo "<strong>" . gmdate($datetime, current_time('timestamp', 1)) . "</strong></p>\r\n";
41
+ echo "<p>Current Blog time is: \r\n";
42
+ echo "<strong>" . gmdate($datetime, current_time('timestamp')) . "</strong></p>\r\n";
43
+ echo "<p>Current Blog offset is: \r\n";
44
+ echo get_option('gmt_offset') . "\r\n";
45
+ echo "<pre>";
46
+ cron_jobs();
47
+ echo "</pre>";
48
+ echo "Current Subscribe 2 Options are:";
49
+ echo "<pre>";
50
+ print_r(get_option('subscribe2_options'));
51
+ echo "</pre>";
52
+ echo "</div>";
53
+ include(ABSPATH . 'wp-admin/admin-footer.php');
54
+ // just to be sure
55
+ die;
56
+ }
57
+
58
+ function cron_jobs() {
59
+ $datetime = get_option('date_format') . ' @ ' . get_option('time_format');
60
+ $jobs = _get_cron_array();
61
+ if (empty($jobs)) {
62
+ echo "No cron jobs scheduled";
63
+ } else {
64
+ foreach ( $jobs as $job => $tasks ) {
65
+ echo "Anytime after " . gmdate($datetime,$job) . " ";
66
+ foreach ($tasks as $procname => $task) {
67
+ echo $procname . " will execute\r\n";
68
+ }
69
+ }
70
+ }
71
+ return;
72
+ }
73
+ ?>
subscribe2/subscribe2uninstaller.php → subscribe2uninstaller.php RENAMED
@@ -3,7 +3,7 @@
3
  Plugin Name: Subscribe2 Uninstaller
4
  Plugin URI: http://subscribe2.wordpress.com
5
  Description: Uninstalls the Subscribe2 plugin from Manage->S2 Uninstaller.
6
- Version: 1.0
7
  Author: Matthew Robinson
8
  Author URI: http://subscribe2.wordpress.com
9
  */
3
  Plugin Name: Subscribe2 Uninstaller
4
  Plugin URI: http://subscribe2.wordpress.com
5
  Description: Uninstalls the Subscribe2 plugin from Manage->S2 Uninstaller.
6
+ Version: 4.6
7
  Author: Matthew Robinson
8
  Author URI: http://subscribe2.wordpress.com
9
  */
{subscribe2/tinymce → tinymce}/editor_plugin.js RENAMED
File without changes
{subscribe2/tinymce → tinymce}/langs/en.js RENAMED
File without changes
{subscribe2/tinymce → tinymce}/langs/en_us.js RENAMED
File without changes
{subscribe2/tinymce → tinymce}/langs/nl_nl.js RENAMED
File without changes
tinymce3/css/content.css ADDED
@@ -0,0 +1 @@
 
1
+ .mceSubscribe2 {display:block;border:0;width:100%;height:12px;border-top:1px;margin-top:15px;background:#fff url(../../include/s2_marker.png) no-repeat center top;}
tinymce3/editor_plugin.js ADDED
@@ -0,0 +1 @@
 
1
+ eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(3(){6.1p(\'6.s.r\',{1o:3(2,f){1n k=\'<A 1m="\'+f+\'/../../G/1l.1k" z="c 1j" />\',9=\'c\',i=2.1i(\'1h\',\'<!--4-->\'),l;l=1g 1f(i.j(/[\\?\\.\\*\\[\\]\\(\\)\\{\\}\\+\\^\\$\\:]/g,3(a){h\'\\\\\'+a}),\'g\');2.1e(\'c\',3(){2.1d(\'1c\',0,k)});2.1b(\'4\',{1a:\'y x w\',19:f+\'/../G/18.17\',16:9});2.15.5(3(){2.d.14(f+"/F/8.F");7(2.E.D){2.E.D.5(3(13,o){7(o.C.q==\'p\'&&2.d.m(o.C,9))o.12=\'4\'})}});2.11.5(3(2,e){e=e.10;7(e.q===\'p\'&&2.d.m(e,9))2.Z.Y(e)});2.X.5(3(2,B,n){B.W(\'4\',n.q===\'p\'&&2.d.m(n,9))});2.V.5(3(2,o){o.8=o.8.j(l,k)});2.U.5(3(2,o){7(o.T)o.8=o.8.j(/<A[^>]+>/g,3(b){7(b.S(\'z="c\')!==-1)b=i;h b})})},R:3(){h{Q:\'y x w\',P:\'O N\',M:\'v://4.u.t\',L:\'v://4.u.t\',K:6.J+"."+6.I}}});6.H.5(\'4\',6.s.r)})();',62,88,'||ed|function|subscribe2|add|tinymce|if|content|cls||im|mceSubscribe2|dom||url||return|sep|replace|pb|pbRE|hasClass|||IMG|nodeName|Subscribe2Plugin|plugins|com|wordpress|http|Token|Subscribe2|Insert|class|img|cm|node|onResolveName|theme|css|include|PluginManager|minorVersion|majorVersion|version|infourl|authorurl|Robinson|Matthew|author|longname|getInfo|indexOf|get|onPostProcess|onBeforeSetContent|setActive|onNodeChange|select|selection|target|onClick|name|th|loadCSS|onInit|cmd|png|s2_button|image|title|addButton|mceInsertContent|execCommand|addCommand|RegExp|new|subscribe2_separator|getParam|mceItemNoResize|gif|trans|src|var|init|create'.split('|'),0,{}))
tinymce3/editor_plugin_src.js ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function() {
2
+ tinymce.create('tinymce.plugins.Subscribe2Plugin', {
3
+ init : function(ed, url) {
4
+ var pb = '<img src="' + url + '/../../include/trans.gif" class="mceSubscribe2 mceItemNoResize" />', cls = 'mceSubscribe2', sep = ed.getParam('subscribe2_separator', '<!--subscribe2-->'), pbRE;
5
+
6
+ pbRE = new RegExp(sep.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g, function(a) {return '\\' + a;}), 'g');
7
+
8
+ // Register commands
9
+ ed.addCommand('mceSubscribe2', function() {
10
+ ed.execCommand('mceInsertContent', 0, pb);
11
+ });
12
+
13
+ // Register buttons
14
+ ed.addButton('subscribe2', {title : 'Insert Subscribe2 Token', image : url + '/../include/s2_button.png', cmd : cls});
15
+
16
+ ed.onInit.add(function() {
17
+ ed.dom.loadCSS(url + "/css/content.css");
18
+
19
+ if (ed.theme.onResolveName) {
20
+ ed.theme.onResolveName.add(function(th, o) {
21
+ if (o.node.nodeName == 'IMG' && ed.dom.hasClass(o.node, cls))
22
+ o.name = 'subscribe2';
23
+ });
24
+ }
25
+ });
26
+
27
+ ed.onClick.add(function(ed, e) {
28
+ e = e.target;
29
+
30
+ if (e.nodeName === 'IMG' && ed.dom.hasClass(e, cls))
31
+ ed.selection.select(e);
32
+ });
33
+
34
+ ed.onNodeChange.add(function(ed, cm, n) {
35
+ cm.setActive('subscribe2', n.nodeName === 'IMG' && ed.dom.hasClass(n, cls));
36
+ });
37
+
38
+ ed.onBeforeSetContent.add(function(ed, o) {
39
+ o.content = o.content.replace(pbRE, pb);
40
+ });
41
+
42
+ ed.onPostProcess.add(function(ed, o) {
43
+ if (o.get)
44
+ o.content = o.content.replace(/<img[^>]+>/g, function(im) {
45
+ if (im.indexOf('class="mceSubscribe2') !== -1)
46
+ im = sep;
47
+
48
+ return im;
49
+ });
50
+ });
51
+ },
52
+
53
+ getInfo : function() {
54
+ return {
55
+ longname : 'Insert Subscribe2 Token',
56
+ author : 'Matthew Robinson',
57
+ authorurl : 'http://subscribe2.wordpress.com',
58
+ infourl : 'http://subscribe2.wordpress.com',
59
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
60
+ };
61
+ }
62
+ });
63
+
64
+ // Register plugin
65
+ tinymce.PluginManager.add('subscribe2', tinymce.plugins.Subscribe2Plugin);
66
+ })();