Subscribe2 - Version 4.17

Version Description

Download this release

Release Info

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

Code changes from version 4.16 to 4.17

Files changed (5) hide show
  1. ReadMe.txt +15 -2
  2. counterwidget.php +1 -1
  3. include/s2_user_admin.css +1 -1
  4. subscribe2.php +265 -224
  5. subscribe2.pot +175 -159
ReadMe.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: MattyRob, Skippy, RavanH
3
Donate link: http://subscribe2.wordpress.com/donate/
4
Tags: posts, subscription, email, subscribe, notify, notification
5
Requires at least: 2.0.x
6
- Tested up to: 2.7.1
7
- Stable tag: 4.16
8
9
Sends a list of subscribers an email notification when new posts are published to your blog
10
@@ -100,6 +100,19 @@ Registered Users have registered with your WorPress blog (provided you have enab
100
101
== Version History ==
102
103
Version 4.16 by Matthew Robinson
104
105
* Correct minor layout issue in Settings->Subscribe2
3
Donate link: http://subscribe2.wordpress.com/donate/
4
Tags: posts, subscription, email, subscribe, notify, notification
5
Requires at least: 2.0.x
6
+ Tested up to: 2.8.1beta2
7
+ Stable tag: 4.17
8
9
Sends a list of subscribers an email notification when new posts are published to your blog
10
100
101
== Version History ==
102
103
+ Version 4.17 by Matthew Robinson
104
+
105
+ * Tested for compatibility with WordPress 2.8.x
106
+ * Added TAGS and CATS keyword for per-post notification templates
107
+ * Fixed bug where confirmation emails may have an empty sender field if notifications come from post author
108
+ * Fixed a bug in WPMU CSS
109
+ * Added option to exclude new categories by default
110
+ * Fixed a bug where emails may not be sent to subscribers when a user subscribes or unsubscribes
111
+ * Improved accessing of 'Admin' level users on blogs where user_level is set below 10
112
+ * Added ability to send email previews to currently logged in user from Settings->Subscribe2
113
+ * Styled admin menu form buttons to fit with WordPress theme
114
+ * Improved handling of confirmation sending to reduce errors
115
+
116
Version 4.16 by Matthew Robinson
117
118
* Correct minor layout issue in Settings->Subscribe2
counterwidget.php CHANGED
@@ -1,7 +1,7 @@
1
<?php
2
/*
3
Plugin Name: Subscribe2 Counter Widget
4
- Version: 4.16
5
Plugin URI: http://subscribe2.wordpress.com
6
Description: Adds a sidebar widget to easily customize and display your Subscribe2 subscribers stats.
7
Author: Matthew Robinson
1
<?php
2
/*
3
Plugin Name: Subscribe2 Counter Widget
4
+ Version: 4.17
5
Plugin URI: http://subscribe2.wordpress.com
6
Description: Adds a sidebar widget to easily customize and display your Subscribe2 subscribers stats.
7
Author: Matthew Robinson
include/s2_user_admin.css CHANGED
@@ -41,7 +41,7 @@ ul.s2_blogs li .buttons a {
41
margin: 0 0 0 1em;
42
}
43
44
- ul.s2_blogs li .buttons a: hover {
45
background-color: whitesmoke;
46
color: #666;
47
}
41
margin: 0 0 0 1em;
42
}
43
44
+ ul.s2_blogs li .buttons a:hover {
45
background-color: whitesmoke;
46
color: #666;
47
}
subscribe2.php CHANGED
@@ -3,7 +3,7 @@
3
Plugin Name: Subscribe2
4
Plugin URI: http://subscribe2.wordpress.com
5
Description: Notifies an email list when new entries are posted.
6
- Version: 4.16
7
Author: Matthew Robinson
8
Author URI: http://subscribe2.wordpress.com
9
*/
@@ -31,7 +31,7 @@ along with Subscribe2. If not, see <http://www.gnu.org/licenses/>.
31
32
// our version number. Don't touch this or any line below
33
// unless you know exacly what you are doing
34
- define('S2VERSION', '4.16');
35
define('S2PATH', trailingslashit(dirname(__FILE__)));
36
37
// Pre-2.6 compatibility
@@ -139,7 +139,7 @@ class s2class {
139
function checkbox_form_js() {
140
wp_enqueue_script('s2_checkbox', WP_CONTENT_URL . '/plugins/' . dirname( plugin_basename( __FILE__ ) ) . '/include/s2_checkbox.js', array('jquery'), '1.0');
141
} //end checkbox_form_js()
142
-
143
function user_admin_css() {
144
wp_enqueue_style('s2_user_admin', WP_CONTENT_URL . '/plugins/ '. dirname( plugin_basename( __FILE__ ) ) . '/include/s2_user_admin.css', array(), '1.0');
145
}
@@ -205,7 +205,7 @@ class s2class {
205
//double check that the options are in the database
206
require(S2PATH . "include/options.php");
207
update_option('subscribe2_options', $this->subscribe2_options);
208
-
209
// upgrade old wpmu user meta data to new
210
if ( (isset($wpmu_version)) || (strpos($wp_version, 'wordpress-mu')) ) {
211
$this->namechange_subscribe2_widget();
@@ -269,7 +269,7 @@ class s2class {
269
$string = str_replace("PERMALINK", $this->permalink, $string);
270
if (strstr($string, "TINYLINK")) {
271
$tinylink = file_get_contents('http://tinyurl.com/api-create.php?url=' . urlencode($this->permalink));
272
- if ( ($tinylink !== 'Error') || ($tinylink != FALSE) ) {
273
$string = str_replace("TINYLINK", $tinylink, $string);
274
} else {
275
$string = str_replace("TINYLINK", $this->permalink, $string);
@@ -278,6 +278,9 @@ class s2class {
278
$string = str_replace("MYNAME", stripslashes($this->myname), $string);
279
$string = str_replace("EMAIL", $this->myemail, $string);
280
$string = str_replace("AUTHORNAME", $this->authorname, $string);
281
return $string;
282
} // end substitute()
283
@@ -287,30 +290,15 @@ class s2class {
287
function mail($recipients = array(), $subject = '', $message = '', $type='text') {
288
if ( (empty($recipients)) || ('' == $message) ) { return; }
289
290
- // Set sender details
291
- if ('' == $this->myname) {
292
- $admin = $this->get_userdata($this->subscribe2_options['sender']);
293
- $this->myname = html_entity_decode($admin->display_name);
294
- $this->myemail = $admin->user_email;
295
- }
296
- $headers = "From: \"" . $this->myname . "\" <" . $this->myemail . ">\n";
297
- $headers .= "Return-path: <" . $this->myemail . ">\n";
298
- $headers .= "Reply-To: \"" . $this->myname . "\" <" . $this->myemail . ">\n";
299
- $headers .= "X-Mailer:PHP" . phpversion() . "\n";
300
- $headers .= "Precedence: list\nList-Id: " . get_option('blogname') . "\n";
301
-
302
if ('html' == $type) {
303
- // To send HTML mail, the Content-Type header must be set
304
- $headers .= "MIME-Version: 1.0\n";
305
- $headers .= "Content-Type: " . get_bloginfo('html_type') . "; charset=\"". get_bloginfo('charset') . "\"\n";
306
if ('yes' == $this->subscribe2_options['stylesheet']) {
307
$mailtext = apply_filters('s2_html_email', "<html><head><title>" . $subject . "</title><link rel=\"stylesheet\" href=\"" . get_bloginfo('stylesheet_url') . "\" type=\"text/css\" media=\"screen\" /></head><body>" . $message . "</body></html>");
308
} else {
309
$mailtext = apply_filters('s2_html_email', "<html><head><title>" . $subject . "</title></head><body>" . $message . "</body></html>");
310
}
311
} else {
312
- $headers .= "MIME-Version: 1.0\n";
313
- $headers .= "Content-Type: text/plain; charset=\"". get_bloginfo('charset') . "\"\n";
314
$message = preg_replace('|&[^a][^m][^p].{0,3};|', '', $message);
315
$message = preg_replace('|&amp;|', '&', $message);
316
$message = wordwrap(strip_tags($message), 80, "\n");
@@ -386,87 +374,116 @@ class s2class {
386
return $status;
387
} // end mail()
388
389
/**
390
Sends an email notification of a new post
391
*/
392
- function publish($post = 0) {
393
if (!$post) { return $post; }
394
395
- $s2mail = get_post_meta($post->ID, 's2mail', true);
396
- if ( ($_POST['s2_meta_field'] == 'no') || (strtolower(trim($s2mail)) == 'no') ) { return $post; }
397
-
398
- // are we doing daily digests? If so, don't send anything now
399
- if ($this->subscribe2_options['email_freq'] != 'never') { return $post; }
400
401
- // is the current post a page
402
- // and should this not generate a notification email?
403
- if ( ($this->subscribe2_options['pages'] == 'no') && ($post->post_type == 'page') ) {
404
- return $post;
405
- }
406
407
- // is this post set in the future?
408
- if ($post->post_date > current_time('mysql')) {
409
- // bail out
410
- return $post;
411
- }
412
413
- //Are we sending notifications for password protected posts?
414
- if ( ($this->subscribe2_options['password'] == "no") && ($post->post_password != '') ) {
415
return $post;
416
- }
417
418
- $post_cats = wp_get_post_categories($post->ID);
419
- $post_cats_string = implode(',', $post_cats);
420
- $check = false;
421
- // is the current post assigned to any categories
422
- // which should not generate a notification email?
423
- foreach (explode(',', $this->subscribe2_options['exclude']) as $cat) {
424
- if (in_array($cat, $post_cats)) {
425
- $check = true;
426
}
427
- }
428
429
- if ($check) {
430
- // hang on -- can registered users subscribe to
431
- // excluded categories?
432
- if ('0' == $this->subscribe2_options['reg_override']) {
433
- // nope? okay, let's leave
434
- return $post;
435
}
436
- }
437
438
- // Are we sending notifications for Private posts?
439
- // Action is added if we are, but double check option and post status
440
- if ( ($this->subscribe2_options['private'] == "yes") && ($post->post_status == 'private') ) {
441
- // don't send notification to public users
442
- $check = true;
443
- }
444
445
- // lets collect our subscribers
446
- if (!$check) {
447
- // if this post is assigned to an excluded
448
- // category, or is a private post then
449
- // don't send public subscribers a notification
450
- $public = $this->get_public();
451
- }
452
- $registered = $this->get_registered("cats=$post_cats_string");
453
454
- // do we have subscribers?
455
- if ( (empty($public)) && (empty($registered)) ) {
456
- // if not, no sense doing anything else
457
- return $post;
458
}
459
// we set these class variables so that we can avoid
460
// passing them in function calls a little later
461
$this->post_title = "<a href=\"" . get_permalink($post->ID) . "\">" . $post->post_title . "</a>";
462
$this->permalink = "<a href=\"" . get_permalink($post->ID) . "\">" . get_permalink($post->ID) . "</a>";
463
-
464
$author = get_userdata($post->post_author);
465
$this->authorname = $author->display_name;
466
467
// do we send as admin, or post author?
468
if ('author' == $this->subscribe2_options['sender']) {
469
- // get author details
470
$user = &$author;
471
} else {
472
// get admin details
@@ -480,6 +497,9 @@ class s2class {
480
$mailtext = apply_filters('s2_email_template', $this->subscribe2_options['mailtext']);
481
$mailtext = stripslashes($this->substitute($mailtext));
482
483
$plaintext = $post->post_content;
484
if (function_exists('strip_shortcodes')) {
485
$plaintext = strip_shortcodes($plaintext);
@@ -509,25 +529,35 @@ class s2class {
509
}
510
}
511
512
- // first we send plaintext summary emails
513
- $body = str_replace("POST", $excerpt, $mailtext);
514
- $registered = $this->get_registered("cats=$post_cats_string&format=text&amount=excerpt");
515
- if (empty($registered)) {
516
- $recipients = (array)$public;
517
- }
518
- elseif (empty($public)) {
519
- $recipients = (array)$registered;
520
} else {
521
- $recipients = array_merge((array)$public, (array)$registered);
522
}
523
- $this->mail($recipients, $subject, $body);
524
- // next we send plaintext full content emails
525
- $body = str_replace("POST", strip_tags($plaintext), $mailtext);
526
- $this->mail($this->get_registered("cats=$post_cats_string&format=text&amount=post"), $subject, $body);
527
- // finally we send html full content emails
528
- $body = str_replace("\r\n", "<br />\r\n", $mailtext);
529
- $body = str_replace("POST", $content, $body);
530
- $this->mail($this->get_registered("cats=$post_cats_string&format=html"), $subject, $body, 'html');
531
} // end publish()
532
533
/**
@@ -544,8 +574,8 @@ class s2class {
544
/**
545
Send confirmation email to the user
546
*/
547
- function send_confirm($what = '', $is_remind = FALSE) {
548
- if ($this->filtered == 1) { return; }
549
if ( (!$this->email) || (!$what) ) {
550
return false;
551
}
@@ -569,10 +599,7 @@ class s2class {
569
$link .= md5($this->email);
570
$link .= $id;
571
572
- $admin = $this->get_userdata($this->subscribe2_options['sender']);
573
- $this->myname = html_entity_decode($admin->display_name);
574
-
575
- if ($is_remind == TRUE) {
576
$body = $this->substitute(stripslashes($this->subscribe2_options['remind_email']));
577
$subject = $this->substitute(stripslashes($this->subscribe2_options['remind_subject']));
578
} else {
@@ -587,13 +614,7 @@ class s2class {
587
588
$body = str_replace("LINK", $link, $body);
589
590
- $mailheaders .= "From: \"" . $admin->display_name . "\" <" . $admin->user_email . ">\n";
591
- $mailheaders .= "Reply-To: \"" . $admin->display_name . "\" <" . $admin->user_email . ">\n";
592
- $mailheaders .= "Return-path: <" . $admin->user_email . ">\n";
593
- $mailheaders .= "X-Mailer:PHP" . phpversion() . "\n";
594
- $mailheaders .= "Precedence: list\nList-Id: " . get_option('blogname') . "\n";
595
- $mailheaders .= "MIME-Version: 1.0\n";
596
- $mailheaders .= "Content-Type: text/plain; charset=\"". get_bloginfo('charset') . "\"\n";
597
598
return @wp_mail($this->email, $subject, $body, $mailheaders);
599
} // end send_confirm()
@@ -713,12 +734,12 @@ class s2class {
713
*/
714
function remind($emails = '') {
715
if ('' == $emails) { return false; }
716
-
717
$recipients = explode(",", $emails);
718
if (!is_array($recipients)) { $recipients = (array)$recipients; }
719
foreach ($recipients as $recipient) {
720
$this->email = $recipient;
721
- $this->send_confirm('add', TRUE);
722
}
723
} //end remind()
724
@@ -729,14 +750,14 @@ class s2class {
729
$barred_option = $this->subscribe2_options['barred'];
730
list($user, $domain) = split('@', $email);
731
$bar_check = stristr($barred_option, $domain);
732
-
733
if (!empty($bar_check)) {
734
return true;
735
} else {
736
return false;
737
}
738
} //end is_barred()
739
-
740
/**
741
Confirm request from the link emailed to the user and email the admin
742
*/
@@ -771,7 +792,10 @@ class s2class {
771
$subject = '[' . get_option('blogname') . '] ' . __('New subscription', 'subscribe2');
772
$message = $this->email . " " . __('subscribed to email notifications!', 'subscribe2');
773
$recipients = $wpdb->get_col("SELECT DISTINCT(user_email) FROM $wpdb->users INNER JOIN $wpdb->usermeta ON $wpdb->users.ID = $wpdb->usermeta.user_id WHERE $wpdb->usermeta.meta_key='" . $wpdb->prefix . "user_level' AND $wpdb->usermeta.meta_value='10'");
774
- $this->mail($recipients, $subject, $message);
775
}
776
}
777
$this->filtered = 1;
@@ -784,7 +808,10 @@ class s2class {
784
$subject = '[' . get_option('blogname') . '] ' . __('New Unsubscription', 'subscribe2');
785
$message = $this->email . " " . __('unsubscribed from email notifications!', 'subscribe2');
786
$recipients = $wpdb->get_col("SELECT DISTINCT(user_email) FROM $wpdb->users INNER JOIN $wpdb->usermeta ON $wpdb->users.ID = $wpdb->usermeta.user_id WHERE $wpdb->usermeta.meta_key='" . $wpdb->prefix . "user_level' AND $wpdb->usermeta.meta_value='10'");
787
- $this->mail($recipients, $subject, $message);
788
}
789
}
790
$this->filtered = 1;
@@ -914,6 +941,7 @@ class s2class {
914
// specific category subscribers
915
if ('' != $r['cats']) {
916
$JOIN .= "INNER JOIN $wpdb->usermeta AS d ON a.user_id = d.user_id ";
917
foreach (explode(',', $r['cats']) as $cat) {
918
('' == $and) ? $and = "d.meta_key='" . $this->get_usermeta_keyname('s2_cat') . "$cat'" : $and .= " OR d.meta_key='" . $this->get_usermeta_keyname('s2_cat') . "$cat'";
919
}
@@ -954,11 +982,11 @@ class s2class {
954
Create the appropriate usermeta values when a user registers
955
If the registering user had previously subscribed to notifications, this function will delete them from the public subscriber list first
956
*/
957
- function register($user_id = 0) {
958
global $wpdb;
959
960
- if (0 == $user_id) { return $user_id; }
961
- $user = get_userdata($user_id);
962
$all_cats = get_categories(array('hide_empty' => false));
963
964
// Are registered users are allowed to subscribe to excluded categories?
@@ -978,55 +1006,55 @@ class s2class {
978
979
if ('' == $cats) {
980
// sanity check, might occur if all cats excluded and reg_override = 0
981
- return $user_id;
982
}
983
984
// has this user previously signed up for email notification?
985
if (false !== $this->is_public($user->user_email)) {
986
// delete this user from the public table, and subscribe them to all the categories
987
$this->delete($user->user_email);
988
- update_usermeta($user_id, $this->get_usermeta_keyname('s2_subscribed'), $cats);
989
foreach (explode(',', $cats) as $cat) {
990
- update_usermeta($user_id, $this->get_usermeta_keyname('s2_cat') . $cat, "$cat");
991
}
992
- update_usermeta($user_id, 's2_format', 'text');
993
- update_usermeta($user_id, 's2_excerpt', 'excerpt');
994
- update_usermeta($user_id, 's2_autosub', $this->subscribe2_options['autosub_def']);
995
} else {
996
// create post format entries for all users
997
- $check_format = get_usermeta($user_id, 's2_format');
998
if (empty($check_format)) {
999
// ensure existing subscription options are not overwritten on upgrade
1000
if ('html' == $this->subscribe2_options['autoformat']) {
1001
- update_usermeta($user_id, 's2_format', 'html');
1002
- update_usermeta($user_id, 's2_excerpt', 'post');
1003
} elseif ('fulltext' == $this->subscribe2_options['autoformat']) {
1004
- update_usermeta($user_id, 's2_format', 'text');
1005
- update_usermeta($user_id, 's2_excerpt', 'post');
1006
} else {
1007
- update_usermeta($user_id, 's2_format', 'text');
1008
- update_usermeta($user_id, 's2_excerpt', 'excerpt');
1009
}
1010
- update_usermeta($user_id, 's2_autosub', $this->subscribe2_options['autosub_def']);
1011
// if the are no existing subscriptions, create them if, by default if autosub is on
1012
if ( ('yes' == $this->subscribe2_options['autosub']) || (('wpreg' == $this->subscribe2_options['autosub']) && ('on' == $_POST['subscribe'])) ) {
1013
- update_usermeta($user_id, $this->get_usermeta_keyname('s2_subscribed'), $cats);
1014
foreach (explode(',', $cats) as $cat) {
1015
- update_usermeta($user_id, $this->get_usermeta_keyname('s2_cat') . $cat, "$cat");
1016
}
1017
}
1018
}
1019
- $subscribed = get_usermeta($user_id, $this->get_usermeta_keyname('s2_subscribed'));
1020
if (strstr($subscribed, '-1')) {
1021
// make sure we remove '-1' from any settings
1022
$old_cats = explode(',', $subscribed);
1023
$pos = array_search('-1', $old_cats);
1024
unset($old_cats[$pos]);
1025
$cats = implode(',', $old_cats);
1026
- update_usermeta($user_id, $this->get_usermeta_keyname('s2_subscribed'), $cats);
1027
}
1028
}
1029
- return $user_id;
1030
} // end register()
1031
1032
/**
@@ -1035,7 +1063,7 @@ class s2class {
1035
function subscribe_registered_users($emails = '', $cats = '') {
1036
if ( ('' == $emails) || ('' == $cats) ) { return false; }
1037
global $wpdb;
1038
-
1039
$useremails = explode(",", $emails);
1040
$useremails = implode("', '", $useremails);
1041
@@ -1044,8 +1072,8 @@ class s2class {
1044
if (!is_array($cats)) {
1045
$cats = array($cats);
1046
}
1047
-
1048
- foreach ($user_IDs as $user_ID) {
1049
$old_cats = get_usermeta($user_ID, $this->get_usermeta_keyname('s2_subscribed'));
1050
$old_cats = explode(',', $old_cats);
1051
if (!is_array($old_cats)) {
@@ -1069,7 +1097,7 @@ class s2class {
1069
function unsubscribe_registered_users($emails = '', $cats = '') {
1070
if ( ('' == $emails) || ('' == $cats) ) { return false; }
1071
global $wpdb;
1072
-
1073
$useremails = explode(",", $emails);
1074
$useremails = implode("', '", $useremails);
1075
@@ -1078,8 +1106,8 @@ class s2class {
1078
if (!is_array($cats)) {
1079
$cats = array($cats);
1080
}
1081
-
1082
- foreach ($user_IDs as $user_ID) {
1083
$old_cats = explode(',', get_usermeta($user_ID, $this->get_usermeta_keyname('s2_subscribed')));
1084
if (!is_array($old_cats)) {
1085
$old_cats = array($old_cats);
@@ -1113,12 +1141,14 @@ class s2class {
1113
if ($blog_id >= 0) {
1114
switch_to_blog($blog_id);
1115
1116
- $user_id = get_current_user_id();
1117
1118
// if user is not a user of the current blog
1119
if (!is_blog_user($blog_id)) {
1120
// add user to current blog as subscriber
1121
- add_user_to_blog($blog_id, $user_id, 'subscriber');
1122
}
1123
1124
// subscribe to all categories by default
@@ -1139,12 +1169,12 @@ class s2class {
1139
foreach ($all_cats as $cat => $term) {
1140
$term_id = $term->term_id;
1141
$cats[] = $term_id;
1142
- update_usermeta($user_id, $this->get_usermeta_keyname('s2_cat') . $term_id, $term_id);
1143
}
1144
if (empty($cats)) {
1145
- update_usermeta($user_id, $this->get_usermeta_keyname('s2_subscribed'), '');
1146
} else {
1147
- update_usermeta($user_id, $this->get_usermeta_keyname('s2_subscribed'), implode(',', $cats));
1148
}
1149
1150
// don't restore_current_blog(); -> redirect to new subscription page
@@ -1156,43 +1186,37 @@ class s2class {
1156
if ($blog_id >= 0) {
1157
switch_to_blog($blog_id);
1158
1159
- $user_id = get_current_user_id();
1160
1161
// delete subscription to all categories on that blog
1162
- $cats = get_usermeta($user_id, $this->get_usermeta_keyname('s2_subscribed'));
1163
$cats = explode(',', $cats);
1164
if (!is_array($cats)) {
1165
$cats = array($cats);
1166
}
1167
1168
foreach ($cats as $id) {
1169
- delete_usermeta($user_id, $this->get_usermeta_keyname('s2_cat') . $id);
1170
- }
1171
- update_usermeta($user_id, $this->get_usermeta_keyname('s2_subscribed'), '');
1172
-
1173
- // remove level_0 users
1174
- if (!current_user_can(1)) {
1175
- $blogs = get_blogs_of_user($user_id, true);
1176
- // if user only has one blog left
1177
- if (count($blogs) == 1) {
1178
- wp_delete_user($user_id, 1); // delete posts and reassign any existing posts to root user
1179
- wp_redirect(get_option('siteurl')); // redirect to front page
1180
- exit();
1181
- } else {
1182
- remove_user_from_blog($user_id, $blog_id);
1183
- delete_usermeta($user_id, $this->get_usermeta_keyname('s2_subscribed'));
1184
- }
1185
}
1186
restore_current_blog();
1187
$redirect_to_subscriptionpage = true;
1188
}
1189
}
1190
1191
if ($redirect_to_subscriptionpage == true) {
1192
- if (!is_user_member_of_blog($user_id)) {
1193
- $user_blogs = get_active_blog_for_user($user_id);
1194
if (is_array($user_blogs)) {
1195
switch_to_blog(key($user_blogs));
1196
}
1197
}
1198
@@ -1213,24 +1237,32 @@ class s2class {
1213
Autosubscribe registered users to newly created categories
1214
if registered user has selected this option
1215
*/
1216
- function autosub_new_category($new_category='') {
1217
global $wpdb;
1218
1219
- $sql = "SELECT DISTINCT user_id FROM $wpdb->usermeta WHERE $wpdb->usermeta.meta_key='s2_autosub' AND $wpdb->usermeta.meta_value='yes'";
1220
- $user_IDs = $wpdb->get_col($sql);
1221
- if ('' == $user_IDs) { return; }
1222
1223
- foreach ($user_IDs as $user_ID) {
1224
- $old_cats = explode(',', get_usermeta($user_ID, $this->get_usermeta_keyname('s2_subscribed')));
1225
- if (!is_array($old_cats)) {
1226
- $old_cats = array($old_cats);
1227
}
1228
- // add subscription to these cat IDs
1229
- update_usermeta($user_ID, $this->get_usermeta_keyname('s2_cat') . $new_category, "$new_category");
1230
- $newcats = array_merge($old_cats, (array)$new_category);
1231
- update_usermeta($user_ID, $this->get_usermeta_keyname('s2_subscribed'), implode(',', $newcats));
1232
}
1233
- } // end autosub_new_category()
1234
1235
function delete_category($deleted_category='') {
1236
global $wpdb;
@@ -1239,7 +1271,7 @@ class s2class {
1239
$user_IDs = $wpdb->get_col($sql);
1240
if ('' == $user_IDs) { return; }
1241
1242
- foreach ($user_IDs as $user_ID) {
1243
$old_cats = explode(',', get_usermeta($user_ID, $this->get_usermeta_keyname('s2_subscribed')));
1244
if (!is_array($old_cats)) {
1245
$old_cats = array($old_cats);
@@ -1249,7 +1281,6 @@ class s2class {
1249
$remain = array_diff($old_cats, (array)$deleted_category);
1250
update_usermeta($user_ID, $this->get_usermeta_keyname('s2_subscribed'), implode(',', $remain));
1251
}
1252
-
1253
}
1254
1255
/**
@@ -1258,8 +1289,8 @@ class s2class {
1258
function get_userdata($admin_id) {
1259
global $wpdb, $userdata;
1260
1261
- // ensure compatability with Subscribe2 < 4.16
1262
- if ($admin_id == 'admin') {
1263
$admin_id = 1;
1264
}
1265
@@ -1271,13 +1302,13 @@ class s2class {
1271
1272
// if user record is empty grab the first admin from the database
1273
if (empty($admin)) {
1274
- $sql = "SELECT DISTINCT(ID) FROM $wpdb->users INNER JOIN $wpdb->usermeta ON $wpdb->users.ID = $wpdb->usermeta.user_id WHERE $wpdb->usermeta.meta_key='" . $wpdb->prefix . "user_level' AND $wpdb->usermeta.meta_value='10' LIMIT 1";
1275
$admin = get_userdata($wpdb->get_var($sql));
1276
}
1277
1278
return $admin;
1279
} //end get_userdata()
1280
-
1281
/* ===== Menus ===== */
1282
/**
1283
Our management page
@@ -1474,8 +1505,8 @@ class s2class {
1474
echo "<p>" . __('Enter addresses, one per line or comma-separated', 'subscribe2') . "<br />\r\n";
1475
echo "<textarea rows=\"2\" cols=\"80\" name=\"addresses\"></textarea></p>\r\n";
1476
echo "<input type=\"hidden\" name=\"s2_admin\" />\r\n";
1477
- echo "<p class=\"submit\" style=\"border-top: none;\"><input type=\"submit\" name=\"subscribe\" value=\"" . __('Subscribe', 'subscribe2') . "\" />";
1478
- echo "&nbsp;<input type=\"submit\" name=\"unsubscribe\" value=\"" . __('Unsubscribe', 'subscribe2') . "\" /></p>\r\n";
1479
1480
// subscriber lists
1481
echo "<h2>" . __('Current Subscribers', 'subscribe2') . "</h2>\r\n";
@@ -1487,21 +1518,21 @@ class s2class {
1487
$exportcsv = implode(",\r\n", $subscribers);
1488
echo "<table cellpadding=\"2\" cellspacing=\"2\" width=\"100%\">";
1489
echo "<tr class=\"alternate\"><td width=\"50%\"><input type=\"text\" name=\"searchterm\" value=\"\" />&nbsp;\r\n";
1490
- echo "<input type=\"submit\" name=\"search\" value=\"" . __('Search Subscribers', 'subscribe2') . "\" class=\"button\" /></td>\r\n";
1491
if ($reminderform) {
1492
echo "<td width=\"25%\" align=\"right\"><input type=\"hidden\" name=\"reminderemails\" value=\"" . $reminderemails . "\" />\r\n";
1493
- echo "<input type=\"submit\" name=\"remind\" value=\"" . __('Send Reminder Email', 'subscribe2') . "\" class=\"button\" /></td>\r\n";
1494
} else {
1495
echo "<td width=\"25%\"></td>";
1496
}
1497
echo "<td width=\"25%\" align=\"right\"><input type=\"hidden\" name=\"exportcsv\" value=\"" . $exportcsv . "\" />\r\n";
1498
- echo "<input type=\"submit\" name=\"csv\" value=\"" . __('Save Emails to CSV File', 'subscribe2') . "\" class=\"button\" /></td></tr>\r\n";
1499
echo "</table>";
1500
}
1501
1502
echo "<table class=\"widefat\" cellpadding=\"2\" cellspacing=\"2\">";
1503
if (!empty($subscribers)) {
1504
- echo "<tr><td colspan=\"3\" align=\"center\"><input type=\"submit\" name=\"process\" value=\"" . __('Process', 'subscribe2') . "\" class=\"button\" /></td>\r\n";
1505
echo "<td align=\"right\">" . $strip . "</td></tr>\r\n";
1506
}
1507
if (!empty($subscribers)) {
@@ -1555,7 +1586,7 @@ class s2class {
1555
}
1556
}
1557
if (!empty($subscribers)) {
1558
- echo "<tr><td colspan=\"3\" align=\"center\"><input type=\"submit\" name=\"process\" value=\"" . __('Process', 'subscribe2') . "\" class=\"button\" /></td>\r\n";
1559
echo "<td align=\"right\">" . $strip . "</td></tr>\r\n";
1560
}
1561
echo "</table>\r\n";
@@ -1571,7 +1602,7 @@ class s2class {
1571
echo "<label><input type=\"radio\" name=\"manage\" value=\"unsubscribe\" />" . __('Unsubscribe', 'subscribe2') . "</label><br /><br />\r\n";
1572
echo "<input type=\"hidden\" name=\"emails\" value=\"$emails\" />\r\n";
1573
$this->display_category_form();
1574
- echo "<p class=\"submit\"><input type=\"submit\" id=\"deletepost\" name=\"register\" value=\"" . __('Submit', 'subscribe2') . "\" /></p>";
1575
echo "</form></div>\r\n";
1576
1577
include(ABSPATH . 'wp-admin/admin-footer.php');
@@ -1591,6 +1622,10 @@ class s2class {
1591
if ($_POST['reset']) {
1592
$this->reset();
1593
echo "<div id=\"message\" class=\"updated fade\"><p><strong>$this->options_reset</strong></p></div>";
1594
} elseif ($_POST['submit']) {
1595
// BCClimit
1596
if ( (is_numeric($_POST['bcc'])) && ($_POST['bcc'] >= 0) ) {
@@ -1701,7 +1736,7 @@ class s2class {
1701
$this->subscribe2_options['autoformat'] = $_POST['autoformat'];
1702
$this->subscribe2_options['show_autosub'] = $_POST['show_autosub'];
1703
$this->subscribe2_options['autosub_def'] = $_POST['autosub_def'];
1704
-
1705
//barred domains
1706
$this->subscribe2_options['barred'] = $_POST['barred'];
1707
@@ -1764,7 +1799,7 @@ class s2class {
1764
echo " checked=\"checked\"";
1765
}
1766
echo " /> " . __('No', 'subscribe2') . "</label><br /><br />\r\n";
1767
-
1768
echo __('Send Emails for Pages', 'subscribe2') . ': ';
1769
echo "<label><input type=\"radio\" name=\"pages\" value=\"yes\"";
1770
if ('yes' == $this->subscribe2_options['pages']) {
@@ -1800,7 +1835,7 @@ class s2class {
1800
echo " /> " . __('No', 'subscribe2') . "</label><br /><br />\r\n";
1801
echo __('Send Email From', 'subscribe2') . ': ';
1802
echo "<label>\r\n";
1803
- $this->admin_dropdown(1);
1804
echo "</label><br /><br />\r\n";
1805
if (function_exists('wp_schedule_event')) {
1806
echo __('Send Emails', 'subscribe2') . ": <br /><br />\r\n";
@@ -1818,6 +1853,7 @@ class s2class {
1818
echo "<br />\r\n";
1819
echo "<textarea rows=\"9\" cols=\"60\" name=\"mailtext\">" . stripslashes($this->subscribe2_options['mailtext']) . "</textarea><br /><br />\r\n";
1820
echo "</td><td valign=\"top\" rowspan=\"3\">";
1821
echo "<h3>" . __('Message substitions', 'subscribe2') . "</h3>\r\n";
1822
echo "<dl>";
1823
echo "<dt><b>BLOGNAME</b></dt><dd>" . get_bloginfo('name') . "</dd>\r\n";
@@ -1833,6 +1869,8 @@ class s2class {
1833
echo "<dt><b>AUTHORNAME</b></dt><dd>" . __("the post author's name", 'subscribe2') . "</dd>\r\n";
1834
echo "<dt><b>LINK</b></dt><dd>" . __("the generated link to confirm a request<br />(<i>only used in the confirmation email template</i>)", 'subscribe2') . "</dd>\r\n";
1835
echo "<dt><b>ACTION</b></dt><dd>" . __("Action performed by LINK in confirmation email<br />(<i>only used in the confirmation email template</i>)", 'subscribe2') . "</dd>\r\n";
1836
echo "</dl></td></tr><tr><td>";
1837
echo __('Subscribe / Unsubscribe confirmation email', 'subscribe2') . ":<br />\r\n";
1838
echo __('Subject Line', 'subscribe2') . ": ";
@@ -1856,11 +1894,11 @@ class s2class {
1856
echo " checked=\"checked\"";
1857
}
1858
echo " /> " . __('Allow registered users to subscribe to excluded categories?', 'subscribe2') . "</label></center><br />\r\n";
1859
-
1860
// Appearance options
1861
echo "<h2>" . __('Appearance', 'subscribe2') . "</h2>\r\n";
1862
echo"<p>";
1863
-
1864
// WordPress page ID where subscribe2 token is used
1865
echo __('Set default Subscribe2 page as ID', 'subscribe2') . ': ';
1866
echo "<span id=\"s2page_1\"><span id=\"s2page\" style=\"background-color: #FFFBCC\">" . $this->subscribe2_options['s2page'] . "</span> ";
@@ -1958,7 +1996,7 @@ class s2class {
1958
echo "checked=\"checked\" ";
1959
}
1960
echo "/> " . __('Plain Text - Excerpt', 'subscribe2') . "</label><br /><br />";
1961
- echo __('Display option for Register Users to auto-subscribe to new categories', 'subscribe2') . ": <br />\r\n";
1962
echo "<label><input type=\"radio\" name=\"show_autosub\" value=\"yes\"";
1963
if ('yes' == $this->subscribe2_options['show_autosub']) {
1964
echo " checked=\"checked\"";
@@ -1968,8 +2006,13 @@ class s2class {
1968
if ('no' == $this->subscribe2_options['show_autosub']) {
1969
echo " checked=\"checked\"";
1970
}
1971
- echo " />" . __('No', 'subscribe2') . "</label><br /><br />";
1972
- echo __('Option for Register Users to auto-subscribe to new categories is checked by default', 'subscribe2') . ": <br />\r\n";
1973
echo "<label><input type=\"radio\" name=\"autosub_def\" value=\"yes\"";
1974
if ('yes' == $this->subscribe2_options['autosub_def']) {
1975
echo " checked=\"checked\"";
@@ -1990,7 +2033,7 @@ class s2class {
1990
echo"</p>";
1991
1992
// submit
1993
- echo "<p class=\"submit\" align=\"center\"><input type=\"submit\" id=\"save\" name=\"submit\" value=\"" . __('Submit', 'subscribe2') . "\" /></p>";
1994
1995
// reset
1996
echo "<h2>" . __('Reset Default', 'subscribe2') . "</h2>\r\n";
@@ -2162,10 +2205,9 @@ class s2class {
2162
}
2163
2164
// submit
2165
- echo "<p class=\"submit\"><input type=\"submit\" name=\"submit\" value=\"" . __("Update Preferences", 'subscribe2') . " &raquo;\" /></p>";
2166
echo "</form>\r\n";
2167
-
2168
-
2169
// list of subscribed blogs on wordpress mu
2170
if ($this->s2_mu) {
2171
global $blog_id;
@@ -2174,7 +2216,7 @@ class s2class {
2174
$blogs_subscribed = array();
2175
$blogs_notsubscribed = array();
2176
2177
- foreach ($blogs as $key => $blog) {
2178
// switch to blog
2179
switch_to_blog($blog['blog_id']);
2180
@@ -2330,7 +2372,7 @@ class s2class {
2330
$this->display_subscriber_dropdown('registered', false, array('all'));
2331
echo "<input type=\"hidden\" name=\"s2_admin\" value=\"mail\" />";
2332
echo "</p>";
2333
- echo "<p class=\"submit\"><input type=\"submit\" name=\"submit\" value=\"" . __('Send', 'subscribe2') . "\" /></p>";
2334
echo "</form></div>\r\n";
2335
echo "<div style=\"clear: both;\"><p>&nbsp;</p></div>";
2336
@@ -2360,7 +2402,7 @@ class s2class {
2360
}
2361
}
2362
}
2363
-
2364
$half = (count($all_cats) / 2);
2365
$i = 0;
2366
$j = 0;
@@ -2468,7 +2510,7 @@ class s2class {
2468
}
2469
echo "</select>";
2470
if (false !== $submit) {
2471
- echo "&nbsp;<input type=\"submit\" value=\"$submit\" class=\"button\"/>\r\n";
2472
}
2473
} // end display_subscriber_dropdown()
2474
@@ -2476,13 +2518,12 @@ class s2class {
2476
Display a drop down lisy of administrator level users and
2477
optionally include a choice for Post Author
2478
*/
2479
- function admin_dropdown($inc_author) {
2480
global $wpdb;
2481
2482
- $sql = "SELECT ID,display_name FROM $wpdb->users INNER JOIN $wpdb->usermeta ON $wpdb->users.ID = $wpdb->usermeta.user_id WHERE $wpdb->usermeta.meta_key='" . $wpdb->prefix . "user_level' AND $wpdb->usermeta.meta_value='10'";
2483
$admins = $wpdb->get_results($sql);
2484
-
2485
-
2486
if ($inc_author) {
2487
$author[] = (object)array('ID' => 'author', 'display_name' => 'Post Author');
2488
$admins = array_merge($author, $admins);
@@ -2599,9 +2640,9 @@ class s2class {
2599
*/
2600
function register_post() {
2601
if ('on' == $_POST['subscribe']) {
2602
- $user_id = get_userdatabylogin($_POST['user_login']);
2603
- if (0 == $user_id->ID) { return; }
2604
- $this->register($user_id->ID);
2605
}
2606
}
2607
@@ -2649,7 +2690,7 @@ class s2class {
2649
Meta box form handler
2650
*/
2651
function s2_meta_handler($post_id) {
2652
- if (!wp_verify_nonce($_POST['s2meta_nonce'], md5(plugin_basename(__FILE__)))) { return $post_id; }
2653
2654
if ('page' == $_POST['post_type']) {
2655
if (!current_user_can('edit_page', $post_id)) { return $post_id; }
@@ -2657,7 +2698,7 @@ class s2class {
2657
if (!current_user_can('edit_post', $post_id)) { return $post_id; }
2658
}
2659
2660
- if ($_POST['s2_meta_field'] == 'no') {
2661
update_post_meta($post_id, 's2mail', $_POST['s2_meta_field']);
2662
} else {
2663
delete_post_meta($post_id, 's2mail');
@@ -2897,7 +2938,7 @@ class s2class {
2897
$arr['subscribe2'] = $path;
2898
return $arr;
2899
}
2900
-
2901
function mce3_button($arr) {
2902
$arr[] = 'subscribe2';
2903
return $arr;
@@ -3107,7 +3148,7 @@ class s2class {
3107
add_filter('the_title', array(&$this, 'title_filter'));
3108
add_filter('the_content', array(&$this, 'confirm'));
3109
}
3110
-
3111
if ( (isset($_POST['s2_admin'])) && ($_POST['csv']) ) {
3112
$date = date('Y-m-d');
3113
header("Content-Description: File Transfer");
@@ -3119,12 +3160,12 @@ class s2class {
3119
3120
exit(0);
3121
}
3122
-
3123
//add regular actions and filters
3124
add_action('admin_menu', array(&$this, 'admin_menu'));
3125
add_action('admin_menu', array(&$this, 's2_meta_init'));
3126
add_action('save_post', array(&$this, 's2_meta_handler'));
3127
- add_action('create_category', array(&$this, 'autosub_new_category'));
3128
add_action('delete_category', array(&$this, 'delete_category'));
3129
add_filter('the_content', array(&$this, 'filter'), 10);
3130
add_filter('cron_schedules', array(&$this, 'add_weekly_sched'));
@@ -3145,8 +3186,8 @@ class s2class {
3145
add_action('register_form', array(&$this, 'register_form'));
3146
add_action('user_register', array(&$this, 'register'));
3147
add_action('add_user_to_blog', array(&$this, 'register'), 10, 1);
3148
-
3149
- if ($this->s2_mu) {
3150
add_action('admin_init', array(&$this, 'wpmu_subscribe'));
3151
}
3152
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.17
7
Author: Matthew Robinson
8
Author URI: http://subscribe2.wordpress.com
9
*/
31
32
// our version number. Don't touch this or any line below
33
// unless you know exacly what you are doing
34
+ define('S2VERSION', '4.17');
35
define('S2PATH', trailingslashit(dirname(__FILE__)));
36
37
// Pre-2.6 compatibility
139
function checkbox_form_js() {
140
wp_enqueue_script('s2_checkbox', WP_CONTENT_URL . '/plugins/' . dirname( plugin_basename( __FILE__ ) ) . '/include/s2_checkbox.js', array('jquery'), '1.0');
141
} //end checkbox_form_js()
142
+
143
function user_admin_css() {
144
wp_enqueue_style('s2_user_admin', WP_CONTENT_URL . '/plugins/ '. dirname( plugin_basename( __FILE__ ) ) . '/include/s2_user_admin.css', array(), '1.0');
145
}
205
//double check that the options are in the database
206
require(S2PATH . "include/options.php");
207
update_option('subscribe2_options', $this->subscribe2_options);
208
+
209
// upgrade old wpmu user meta data to new
210
if ( (isset($wpmu_version)) || (strpos($wp_version, 'wordpress-mu')) ) {
211
$this->namechange_subscribe2_widget();
269
$string = str_replace("PERMALINK", $this->permalink, $string);
270
if (strstr($string, "TINYLINK")) {
271
$tinylink = file_get_contents('http://tinyurl.com/api-create.php?url=' . urlencode($this->permalink));
272
+ if ( ($tinylink !== 'Error') || ($tinylink != false) ) {
273
$string = str_replace("TINYLINK", $tinylink, $string);
274
} else {
275
$string = str_replace("TINYLINK", $this->permalink, $string);
278
$string = str_replace("MYNAME", stripslashes($this->myname), $string);
279
$string = str_replace("EMAIL", $this->myemail, $string);
280
$string = str_replace("AUTHORNAME", $this->authorname, $string);
281
+ $string = str_replace("CATS", $this->post_cats_names, $string);
282
+ $string = str_replace("TAGS", $this->post_tags_names, $string);
283
+
284
return $string;
285
} // end substitute()
286
290
function mail($recipients = array(), $subject = '', $message = '', $type='text') {
291
if ( (empty($recipients)) || ('' == $message) ) { return; }
292
293
if ('html' == $type) {
294
+ $headers = $this->headers('html');
295
if ('yes' == $this->subscribe2_options['stylesheet']) {
296
$mailtext = apply_filters('s2_html_email', "<html><head><title>" . $subject . "</title><link rel=\"stylesheet\" href=\"" . get_bloginfo('stylesheet_url') . "\" type=\"text/css\" media=\"screen\" /></head><body>" . $message . "</body></html>");
297
} else {
298
$mailtext = apply_filters('s2_html_email', "<html><head><title>" . $subject . "</title></head><body>" . $message . "</body></html>");
299
}
300
} else {
301
+ $headers = $this->headers();
302
$message = preg_replace('|&[^a][^m][^p].{0,3};|', '', $message);
303
$message = preg_replace('|&amp;|', '&', $message);
304
$message = wordwrap(strip_tags($message), 80, "\n");
374
return $status;
375
} // end mail()
376
377
+
378
+ /**
379
+ Construct standard set of email headers
380
+ */
381
+ function headers($type='text') {
382
+ $admin = $this->get_userdata($this->subscribe2_options['sender']);
383
+ $this->myname = html_entity_decode($admin->display_name);
384
+ $this->myemail = $admin->user_email;
385
+
386
+ $headers = "From: \"" . $this->myname . "\" <" . $this->myemail . ">\n";
387
+ $headers .= "Reply-To: \"" . $this->myname . "\" <" . $this->myemail . ">\n";
388
+ $headers .= "Return-path: <" . $this->myemail . ">\n";
389
+ $headers .= "Precedence: list\nList-Id: " . get_option('blogname') . "\n";
390
+ $headers .= "MIME-Version: 1.0\n";
391
+ $headers .= "X-Mailer: PHP" . phpversion() . "\n";
392
+ if ($type == 'html') {
393
+ // To send HTML mail, the Content-Type header must be set
394
+ $headers .= "Content-Type: " . get_bloginfo('html_type') . "; charset=\"". get_bloginfo('charset') . "\"\n";
395
+ } else {
396
+ $headers .= "Content-Type: text/plain; charset=\"". get_bloginfo('charset') . "\"\n";
397
+ }
398
+
399
+ return $headers;
400
+ } // end headers()
401
+
402
/**
403
Sends an email notification of a new post
404
*/
405
+ function publish($post = 0, $preview = '') {
406
if (!$post) { return $post; }
407
408
+ if ($preview == '') {
409
+ // we aren't sending a Preview to the current user so carry out checks
410
+ $s2mail = get_post_meta($post->ID, 's2mail', true);
411
+ if ( (isset($_POST['s2_meta_field']) && ($_POST['s2_meta_field'] == 'no')) || (strtolower(trim($s2mail)) == 'no') ) { return $post; }
412
413
+ // are we doing daily digests? If so, don't send anything now
414
+ if ($this->subscribe2_options['email_freq'] != 'never') { return $post; }
415
416
+ // is the current post a page
417
+ // and should this not generate a notification email?
418
+ if ( ($this->subscribe2_options['pages'] == 'no') && ($post->post_type == 'page') ) {
419
+ return $post;
420
+ }
421
422
+ // is this post set in the future?
423
+ if ($post->post_date > current_time('mysql')) {
424
+ // bail out
425
return $post;
426
+ }
427
428
+ //Are we sending notifications for password protected posts?
429
+ if ( ($this->subscribe2_options['password'] == "no") && ($post->post_password != '') ) {
430
+ return $post;
431
}
432
433
+ $post_cats = wp_get_post_categories($post->ID);
434
+ $check = false;
435
+ // is the current post assigned to any categories
436
+ // which should not generate a notification email?
437
+ foreach (explode(',', $this->subscribe2_options['exclude']) as $cat) {
438
+ if (in_array($cat, $post_cats)) {
439
+ $check = true;
440
+ }
441
}
442
443
+ if ($check) {
444
+ // hang on -- can registered users subscribe to
445
+ // excluded categories?
446
+ if ('0' == $this->subscribe2_options['reg_override']) {
447
+ // nope? okay, let's leave
448
+ return $post;
449
+ }
450
+ }
451
452
+ // Are we sending notifications for Private posts?
453
+ // Action is added if we are, but double check option and post status
454
+ if ( ($this->subscribe2_options['private'] == "yes") && ($post->post_status == 'private') ) {
455
+ // don't send notification to public users
456
+ $check = true;
457
+ }
458
+
459
+ // lets collect our subscribers
460
+ if (!$check) {
461
+ // if this post is assigned to an excluded
462
+ // category, or is a private post then
463
+ // don't send public subscribers a notification
464
+ $public = $this->get_public();
465
+ }
466
+ $post_cats_string = implode(',', $post_cats);
467
+ $registered = $this->get_registered("cats=$post_cats_string");
468
469
+ // do we have subscribers?
470
+ if ( (empty($public)) && (empty($registered)) ) {
471
+ // if not, no sense doing anything else
472
+ return $post;
473
+ }
474
}
475
+
476
// we set these class variables so that we can avoid
477
// passing them in function calls a little later
478
$this->post_title = "<a href=\"" . get_permalink($post->ID) . "\">" . $post->post_title . "</a>";
479
$this->permalink = "<a href=\"" . get_permalink($post->ID) . "\">" . get_permalink($post->ID) . "</a>";
480
+
481
$author = get_userdata($post->post_author);
482
$this->authorname = $author->display_name;
483
484
// do we send as admin, or post author?
485
if ('author' == $this->subscribe2_options['sender']) {
486
+ // get author details
487
$user = &$author;
488
} else {
489
// get admin details
497
$mailtext = apply_filters('s2_email_template', $this->subscribe2_options['mailtext']);
498
$mailtext = stripslashes($this->substitute($mailtext));
499
500
+ $this->post_cat_names = implode(', ', wp_get_post_categories($post->ID, array('fields' => 'names')));
501
+ $this->post_tag_names = implode(', ', wp_get_post_tags($post->ID, array('fields' => 'names')));
502
+
503
$plaintext = $post->post_content;
504
if (function_exists('strip_shortcodes')) {
505
$plaintext = strip_shortcodes($plaintext);
529
}
530
}
531
532
+ // prepare mail body texts
533
+ $excerpt_body = str_replace("POST", $excerpt, $mailtext);
534
+ $full_body = str_replace("POST", strip_tags($plaintext), $mailtext);
535
+ $html_body = str_replace("\r\n", "<br />\r\n", $mailtext);
536
+ $html_body = str_replace("POST", $content, $html_body);
537
+
538
+ if ($preview != '') {
539
+ $this->mail(array($preview), $subject, $excerpt_body);
540
+ $this->mail(array($preview), $subject, $full_body);
541
+ $this->mail(array($preview), $subject, $html_body, 'html');
542
} else {
543
+ // first we send plaintext summary emails
544
+ $registered = $this->get_registered("cats=$post_cats_string&format=text&amount=excerpt");
545
+ if (empty($registered)) {
546
+ $recipients = (array)$public;
547
+ }
548
+ elseif (empty($public)) {
549
+ $recipients = (array)$registered;
550
+ } else {
551
+ $recipients = array_merge((array)$public, (array)$registered);
552
+ }
553
+ $this->mail($recipients, $subject, $excerpt_body);
554
+
555
+ // next we send plaintext full content emails
556
+ $this->mail($this->get_registered("cats=$post_cats_string&format=text&amount=post"), $subject, $full_body);
557
+
558
+ // finally we send html full content emails
559
+ $this->mail($this->get_registered("cats=$post_cats_string&format=html"), $subject, $html_body, 'html');
560
}
561
} // end publish()
562
563
/**
574
/**
575
Send confirmation email to the user
576
*/
577
+ function send_confirm($what = '', $is_remind = false) {
578
+ if ($this->filtered == 1) { return true; }
579
if ( (!$this->email) || (!$what) ) {
580
return false;
581
}
599
$link .= md5($this->email);
600
$link .= $id;
601
602
+ if ($is_remind == true) {
603
$body = $this->substitute(stripslashes($this->subscribe2_options['remind_email']));
604
$subject = $this->substitute(stripslashes($this->subscribe2_options['remind_subject']));
605
} else {
614
615
$body = str_replace("LINK", $link, $body);
616
617
+ $mailheaders = $this->headers();
618
619
return @wp_mail($this->email, $subject, $body, $mailheaders);
620
} // end send_confirm()
734
*/
735
function remind($emails = '') {
736
if ('' == $emails) { return false; }
737
+
738
$recipients = explode(",", $emails);
739
if (!is_array($recipients)) { $recipients = (array)$recipients; }
740
foreach ($recipients as $recipient) {
741
$this->email = $recipient;
742
+ $this->send_confirm('add', true);
743
}
744
} //end remind()
745
750
$barred_option = $this->subscribe2_options['barred'];
751
list($user, $domain) = split('@', $email);
752
$bar_check = stristr($barred_option, $domain);
753
+
754
if (!empty($bar_check)) {
755
return true;
756
} else {
757
return false;
758
}
759
} //end is_barred()
760
+
761
/**
762
Confirm request from the link emailed to the user and email the admin
763
*/
792
$subject = '[' . get_option('blogname') . '] ' . __('New subscription', 'subscribe2');
793
$message = $this->email . " " . __('subscribed to email notifications!', 'subscribe2');
794
$recipients = $wpdb->get_col("SELECT DISTINCT(user_email) FROM $wpdb->users INNER JOIN $wpdb->usermeta ON $wpdb->users.ID = $wpdb->usermeta.user_id WHERE $wpdb->usermeta.meta_key='" . $wpdb->prefix . "user_level' AND $wpdb->usermeta.meta_value='10'");
795
+ $headers = $this->headers();
796
+ foreach ($recipients as $recipient) {
797
+ @wp_mail($recipient, $subject, $message, $headers);
798
+ }
799
}
800
}
801
$this->filtered = 1;
808
$subject = '[' . get_option('blogname') . '] ' . __('New Unsubscription', 'subscribe2');
809
$message = $this->email . " " . __('unsubscribed from email notifications!', 'subscribe2');
810
$recipients = $wpdb->get_col("SELECT DISTINCT(user_email) FROM $wpdb->users INNER JOIN $wpdb->usermeta ON $wpdb->users.ID = $wpdb->usermeta.user_id WHERE $wpdb->usermeta.meta_key='" . $wpdb->prefix . "user_level' AND $wpdb->usermeta.meta_value='10'");
811
+ $headers = $this->headers();
812
+ foreach ($recipients as $recipient) {
813
+ @wp_mail($recipient, $subject, $message, $headers);
814
+ }
815
}
816
}
817
$this->filtered = 1;
941
// specific category subscribers
942
if ('' != $r['cats']) {
943
$JOIN .= "INNER JOIN $wpdb->usermeta AS d ON a.user_id = d.user_id ";
944
+ $all = '';
945
foreach (explode(',', $r['cats']) as $cat) {
946
('' == $and) ? $and = "d.meta_key='" . $this->get_usermeta_keyname('s2_cat') . "$cat'" : $and .= " OR d.meta_key='" . $this->get_usermeta_keyname('s2_cat') . "$cat'";
947
}
982
Create the appropriate usermeta values when a user registers
983
If the registering user had previously subscribed to notifications, this function will delete them from the public subscriber list first
984
*/
985
+ function register($user_ID = 0) {
986
global $wpdb;
987
988
+ if (0 == $user_ID) { return $user_ID; }
989
+ $user = get_userdata($user_ID);
990
$all_cats = get_categories(array('hide_empty' => false));
991
992
// Are registered users are allowed to subscribe to excluded categories?
1006
1007
if ('' == $cats) {
1008
// sanity check, might occur if all cats excluded and reg_override = 0
1009
+ return $user_ID;
1010
}
1011
1012
// has this user previously signed up for email notification?
1013
if (false !== $this->is_public($user->user_email)) {
1014
// delete this user from the public table, and subscribe them to all the categories
1015
$this->delete($user->user_email);
1016
+ update_usermeta($user_ID, $this->get_usermeta_keyname('s2_subscribed'), $cats);
1017
foreach (explode(',', $cats) as $cat) {
1018
+ update_usermeta($user_ID, $this->get_usermeta_keyname('s2_cat') . $cat, "$cat");
1019
}
1020
+ update_usermeta($user_ID, 's2_format', 'text');
1021
+ update_usermeta($user_ID, 's2_excerpt', 'excerpt');
1022
+ update_usermeta($user_ID, 's2_autosub', $this->subscribe2_options['autosub_def']);
1023
} else {
1024
// create post format entries for all users
1025
+ $check_format = get_usermeta($user_ID, 's2_format');
1026
if (empty($check_format)) {
1027
// ensure existing subscription options are not overwritten on upgrade
1028
if ('html' == $this->subscribe2_options['autoformat']) {
1029
+ update_usermeta($user_ID, 's2_format', 'html');
1030
+ update_usermeta($user_ID, 's2_excerpt', 'post');
1031
} elseif ('fulltext' == $this->subscribe2_options['autoformat']) {
1032
+ update_usermeta($user_ID, 's2_format', 'text');
1033
+ update_usermeta($user_ID, 's2_excerpt', 'post');
1034
} else {
1035
+ update_usermeta($user_ID, 's2_format', 'text');
1036
+ update_usermeta($user_ID, 's2_excerpt', 'excerpt');
1037
}
1038
+ update_usermeta($user_ID, 's2_autosub', $this->subscribe2_options['autosub_def']);
1039
// if the are no existing subscriptions, create them if, by default if autosub is on
1040
if ( ('yes' == $this->subscribe2_options['autosub']) || (('wpreg' == $this->subscribe2_options['autosub']) && ('on' == $_POST['subscribe'])) ) {
1041
+ update_usermeta($user_ID, $this->get_usermeta_keyname('s2_subscribed'), $cats);
1042
foreach (explode(',', $cats) as $cat) {
1043
+ update_usermeta($user_ID, $this->get_usermeta_keyname('s2_cat') . $cat, "$cat");
1044
}
1045
}
1046
}
1047
+ $subscribed = get_usermeta($user_ID, $this->get_usermeta_keyname('s2_subscribed'));
1048
if (strstr($subscribed, '-1')) {
1049
// make sure we remove '-1' from any settings
1050
$old_cats = explode(',', $subscribed);
1051
$pos = array_search('-1', $old_cats);
1052
unset($old_cats[$pos]);
1053
$cats = implode(',', $old_cats);
1054
+ update_usermeta($user_ID, $this->get_usermeta_keyname('s2_subscribed'), $cats);
1055
}
1056
}
1057
+ return $user_ID;
1058
} // end register()
1059
1060
/**
1063
function subscribe_registered_users($emails = '', $cats = '') {
1064
if ( ('' == $emails) || ('' == $cats) ) { return false; }
1065
global $wpdb;
1066
+
1067
$useremails = explode(",", $emails);
1068
$useremails = implode("', '", $useremails);
1069
1072
if (!is_array($cats)) {
1073
$cats = array($cats);
1074
}
1075
+
1076
+ foreach ($user_IDs as $user_ID) {
1077
$old_cats = get_usermeta($user_ID, $this->get_usermeta_keyname('s2_subscribed'));
1078
$old_cats = explode(',', $old_cats);
1079
if (!is_array($old_cats)) {
1097
function unsubscribe_registered_users($emails = '', $cats = '') {
1098
if ( ('' == $emails) || ('' == $cats) ) { return false; }
1099
global $wpdb;
1100
+
1101
$useremails = explode(",", $emails);
1102
$useremails = implode("', '", $useremails);
1103
1106
if (!is_array($cats)) {
1107
$cats = array($cats);
1108
}
1109
+
1110
+ foreach ($user_IDs as $user_ID) {
1111
$old_cats = explode(',', get_usermeta($user_ID, $this->get_usermeta_keyname('s2_subscribed')));
1112
if (!is_array($old_cats)) {
1113
$old_cats = array($old_cats);
1141
if ($blog_id >= 0) {
1142
switch_to_blog($blog_id);
1143
1144
+ $user_ID = get_current_user_id();
1145
1146
// if user is not a user of the current blog
1147
if (!is_blog_user($blog_id)) {
1148
// add user to current blog as subscriber
1149
+ add_user_to_blog($blog_id, $user_ID, 'subscriber');
1150
+ // add an action hook for external manipulation of blog and user data
1151
+ do_action_ref_array('subscribe2_wpmu_subscribe', array($user_ID, $blog_id));
1152
}
1153
1154
// subscribe to all categories by default
1169
foreach ($all_cats as $cat => $term) {
1170
$term_id = $term->term_id;
1171
$cats[] = $term_id;
1172
+ update_usermeta($user_ID, $this->get_usermeta_keyname('s2_cat') . $term_id, $term_id);
1173
}
1174
if (empty($cats)) {
1175
+ update_usermeta($user_ID, $this->get_usermeta_keyname('s2_subscribed'), '');
1176
} else {
1177
+ update_usermeta($user_ID, $this->get_usermeta_keyname('s2_subscribed'), implode(',', $cats));
1178
}
1179
1180
// don't restore_current_blog(); -> redirect to new subscription page
1186
if ($blog_id >= 0) {
1187
switch_to_blog($blog_id);
1188
1189
+ $user_ID = get_current_user_id();
1190
1191
// delete subscription to all categories on that blog
1192
+ $cats = get_usermeta($user_ID, $this->get_usermeta_keyname('s2_subscribed'));
1193
$cats = explode(',', $cats);
1194
if (!is_array($cats)) {
1195
$cats = array($cats);
1196
}
1197
1198
foreach ($cats as $id) {
1199
+ delete_usermeta($user_ID, $this->get_usermeta_keyname('s2_cat') . $id);
1200
}
1201
+ update_usermeta($user_ID, $this->get_usermeta_keyname('s2_subscribed'), '');
1202
+
1203
+ // add an action hook for external manipulation of blog and user data
1204
+ do_action_ref_array('subscribe2_wpmu_unsubscribe', array($user_ID, $blog_id));
1205
+
1206
restore_current_blog();
1207
$redirect_to_subscriptionpage = true;
1208
}
1209
}
1210
1211
if ($redirect_to_subscriptionpage == true) {
1212
+ if (!is_user_member_of_blog($user_ID)) {
1213
+ $user_blogs = get_active_blog_for_user($user_ID);
1214
if (is_array($user_blogs)) {
1215
switch_to_blog(key($user_blogs));
1216
+ } else {
1217
+ // no longer a member of a blog
1218
+ wp_redirect(get_option('siteurl')); // redirect to front page
1219
+ exit();
1220
}
1221
}
1222
1237
Autosubscribe registered users to newly created categories
1238
if registered user has selected this option
1239
*/
1240
+ function new_category($new_category='') {
1241
+ if ('no' == $this->subscribe2_options['show_autosub']) { return; }
1242
global $wpdb;
1243
1244
+ if ('yes' == $this->subscribe2_options['show_autosub']) {
1245
+ $sql = "SELECT DISTINCT user_id FROM $wpdb->usermeta WHERE $wpdb->usermeta.meta_key='s2_autosub' AND $wpdb->usermeta.meta_value='yes'";
1246
+ $user_IDs = $wpdb->get_col($sql);
1247
+ if ('' == $user_IDs) { return; }
1248
1249
+ foreach ($user_IDs as $user_ID) {
1250
+ $old_cats = explode(',', get_usermeta($user_ID, $this->get_usermeta_keyname('s2_subscribed')));
1251
+ if (!is_array($old_cats)) {
1252
+ $old_cats = array($old_cats);
1253
+ }
1254
+ // add subscription to these cat IDs
1255
+ update_usermeta($user_ID, $this->get_usermeta_keyname('s2_cat') . $new_category, "$new_category");
1256
+ $newcats = array_merge($old_cats, (array)$new_category);
1257
+ update_usermeta($user_ID, $this->get_usermeta_keyname('s2_subscribed'), implode(',', $newcats));
1258
}
1259
+ } elseif ('exclude' == $this->subscribe2_options['show_autosub']) {
1260
+ $excluded_cats = explode(',', $this->subscribe2_options['exclude']);
1261
+ $excluded_cats[] = $new_category;
1262
+ $this->subscribe2_options['exclude'] = implode(',', $excluded_cats);
1263
+ update_option('subscribe2_options', $this->subscribe2_options);
1264
}
1265
+ } // end new_category()
1266
1267
function delete_category($deleted_category='') {
1268
global $wpdb;
1271
$user_IDs = $wpdb->get_col($sql);
1272
if ('' == $user_IDs) { return; }
1273
1274
+ foreach ($user_IDs as $user_ID) {
1275
$old_cats = explode(',', get_usermeta($user_ID, $this->get_usermeta_keyname('s2_subscribed')));
1276
if (!is_array($old_cats)) {
1277
$old_cats = array($old_cats);
1281
$remain = array_diff($old_cats, (array)$deleted_category);
1282
update_usermeta($user_ID, $this->get_usermeta_keyname('s2_subscribed'), implode(',', $remain));
1283
}
1284
}
1285
1286
/**
1289
function get_userdata($admin_id) {
1290
global $wpdb, $userdata;
1291
1292
+ // ensure compatability with possible 'sender' settings
1293
+ if ( ($admin_id == 'admin') || ($admin_id == 'author') ) {
1294
$admin_id = 1;
1295
}
1296
1302
1303
// if user record is empty grab the first admin from the database
1304
if (empty($admin)) {
1305
+ $sql = "SELECT DISTINCT(ID) FROM $wpdb->users INNER JOIN $wpdb->usermeta ON $wpdb->users.ID = $wpdb->usermeta.user_id WHERE $wpdb->usermeta.meta_key='" . $wpdb->prefix . "user_level' AND $wpdb->usermeta.meta_value IN (8, 9, 10) LIMIT 1";
1306
$admin = get_userdata($wpdb->get_var($sql));
1307
}
1308
1309
return $admin;
1310
} //end get_userdata()
1311
+
1312
/* ===== Menus ===== */
1313
/**
1314
Our management page
1505
echo "<p>" . __('Enter addresses, one per line or comma-separated', 'subscribe2') . "<br />\r\n";
1506
echo "<textarea rows=\"2\" cols=\"80\" name=\"addresses\"></textarea></p>\r\n";
1507
echo "<input type=\"hidden\" name=\"s2_admin\" />\r\n";
1508
+ echo "<p class=\"submit\" style=\"border-top: none;\"><input type=\"submit\" class=\"button-primary\" name=\"subscribe\" value=\"" . __('Subscribe', 'subscribe2') . "\" />";
1509
+ echo "&nbsp;<input type=\"submit\" class=\"button-primary\" name=\"unsubscribe\" value=\"" . __('Unsubscribe', 'subscribe2') . "\" /></p>\r\n";
1510
1511
// subscriber lists
1512
echo "<h2>" . __('Current Subscribers', 'subscribe2') . "</h2>\r\n";
1518
$exportcsv = implode(",\r\n", $subscribers);
1519
echo "<table cellpadding=\"2\" cellspacing=\"2\" width=\"100%\">";
1520
echo "<tr class=\"alternate\"><td width=\"50%\"><input type=\"text\" name=\"searchterm\" value=\"\" />&nbsp;\r\n";
1521
+ echo "<input type=\"submit\" class=\"button-secondary\" name=\"search\" value=\"" . __('Search Subscribers', 'subscribe2') . "\" /></td>\r\n";
1522
if ($reminderform) {
1523
echo "<td width=\"25%\" align=\"right\"><input type=\"hidden\" name=\"reminderemails\" value=\"" . $reminderemails . "\" />\r\n";
1524
+ echo "<input type=\"submit\" class=\"button-secondary\" name=\"remind\" value=\"" . __('Send Reminder Email', 'subscribe2') . "\" /></td>\r\n";
1525
} else {
1526
echo "<td width=\"25%\"></td>";
1527
}
1528
echo "<td width=\"25%\" align=\"right\"><input type=\"hidden\" name=\"exportcsv\" value=\"" . $exportcsv . "\" />\r\n";
1529
+ echo "<input type=\"submit\" class=\"button-secondary\" name=\"csv\" value=\"" . __('Save Emails to CSV File', 'subscribe2') . "\" /></td></tr>\r\n";
1530
echo "</table>";
1531
}
1532
1533
echo "<table class=\"widefat\" cellpadding=\"2\" cellspacing=\"2\">";
1534
if (!empty($subscribers)) {
1535
+ echo "<tr><td colspan=\"3\" align=\"center\"><input type=\"submit\" class=\"button-secondary\" name=\"process\" value=\"" . __('Process', 'subscribe2') . "\" /></td>\r\n";
1536
echo "<td align=\"right\">" . $strip . "</td></tr>\r\n";
1537
}
1538
if (!empty($subscribers)) {
1586
}
1587
}
1588
if (!empty($subscribers)) {
1589
+ echo "<tr><td colspan=\"3\" align=\"center\"><input type=\"submit\" class=\"button-secondary\" name=\"process\" value=\"" . __('Process', 'subscribe2') . "\" /></td>\r\n";
1590
echo "<td align=\"right\">" . $strip . "</td></tr>\r\n";
1591
}
1592
echo "</table>\r\n";
1602
echo "<label><input type=\"radio\" name=\"manage\" value=\"unsubscribe\" />" . __('Unsubscribe', 'subscribe2') . "</label><br /><br />\r\n";
1603
echo "<input type=\"hidden\" name=\"emails\" value=\"$emails\" />\r\n";
1604
$this->display_category_form();
1605
+ echo "<p class=\"submit\"><input type=\"submit\" class=\"button-primary\" name=\"register\" value=\"" . __('Submit', 'subscribe2') . "\" /></p>";
1606
echo "</form></div>\r\n";
1607
1608
include(ABSPATH . 'wp-admin/admin-footer.php');
1622
if ($_POST['reset']) {
1623
$this->reset();
1624
echo "<div id=\"message\" class=\"updated fade\"><p><strong>$this->options_reset</strong></p></div>";
1625
+ } elseif ($_POST['preview']) {
1626
+ global $user_email;
1627
+ $post = get_posts('numberposts=1');
1628
+ $this->publish($post[0], $user_email);
1629
} elseif ($_POST['submit']) {
1630
// BCClimit
1631
if ( (is_numeric($_POST['bcc'])) && ($_POST['bcc'] >= 0) ) {
1736
$this->subscribe2_options['autoformat'] = $_POST['autoformat'];
1737
$this->subscribe2_options['show_autosub'] = $_POST['show_autosub'];
1738
$this->subscribe2_options['autosub_def'] = $_POST['autosub_def'];
1739
+
1740
//barred domains
1741
$this->subscribe2_options['barred'] = $_POST['barred'];
1742
1799
echo " checked=\"checked\"";
1800
}
1801
echo " /> " . __('No', 'subscribe2') . "</label><br /><br />\r\n";
1802
+
1803
echo __('Send Emails for Pages', 'subscribe2') . ': ';
1804
echo "<label><input type=\"radio\" name=\"pages\" value=\"yes\"";
1805
if ('yes' == $this->subscribe2_options['pages']) {
1835
echo " /> " . __('No', 'subscribe2') . "</label><br /><br />\r\n";
1836
echo __('Send Email From', 'subscribe2') . ': ';
1837
echo "<label>\r\n";
1838
+ $this->admin_dropdown(true);
1839
echo "</label><br /><br />\r\n";
1840
if (function_exists('wp_schedule_event')) {
1841
echo __('Send Emails', 'subscribe2') . ": <br /><br />\r\n";
1853
echo "<br />\r\n";
1854
echo "<textarea rows=\"9\" cols=\"60\" name=\"mailtext\">" . stripslashes($this->subscribe2_options['mailtext']) . "</textarea><br /><br />\r\n";
1855
echo "</td><td valign=\"top\" rowspan=\"3\">";
1856
+ echo "<p class=\"submit\"><input type=\"submit\" class=\"button-secondary\" name=\"preview\" value=\"" . __('Send Email Preview', 'subscribe2') . "\" /></p>\r\n";
1857
echo "<h3>" . __('Message substitions', 'subscribe2') . "</h3>\r\n";
1858
echo "<dl>";
1859
echo "<dt><b>BLOGNAME</b></dt><dd>" . get_bloginfo('name') . "</dd>\r\n";
1869
echo "<dt><b>AUTHORNAME</b></dt><dd>" . __("the post author's name", 'subscribe2') . "</dd>\r\n";
1870
echo "<dt><b>LINK</b></dt><dd>" . __("the generated link to confirm a request<br />(<i>only used in the confirmation email template</i>)", 'subscribe2') . "</dd>\r\n";
1871
echo "<dt><b>ACTION</b></dt><dd>" . __("Action performed by LINK in confirmation email<br />(<i>only used in the confirmation email template</i>)", 'subscribe2') . "</dd>\r\n";
1872
+ echo "<dt><b>CATS</b></dt><dd>" . __("the post's assigned categories", 'subscribe2') . "</dd>\r\n";
1873
+ echo "<dt><b>TAGS</b></dt><dd>" . __("the post's assigned Tags", 'subscribe2') . "</dd>\r\n";
1874
echo "</dl></td></tr><tr><td>";
1875
echo __('Subscribe / Unsubscribe confirmation email', 'subscribe2') . ":<br />\r\n";
1876
echo __('Subject Line', 'subscribe2') . ": ";
1894
echo " checked=\"checked\"";
1895
}
1896
echo " /> " . __('Allow registered users to subscribe to excluded categories?', 'subscribe2') . "</label></center><br />\r\n";
1897
+
1898
// Appearance options
1899
echo "<h2>" . __('Appearance', 'subscribe2') . "</h2>\r\n";
1900
echo"<p>";
1901
+
1902
// WordPress page ID where subscribe2 token is used
1903
echo __('Set default Subscribe2 page as ID', 'subscribe2') . ': ';
1904
echo "<span id=\"s2page_1\"><span id=\"s2page\" style=\"background-color: #FFFBCC\">" . $this->subscribe2_options['s2page'] . "</span> ";
1996
echo "checked=\"checked\" ";
1997
}
1998
echo "/> " . __('Plain Text - Excerpt', 'subscribe2') . "</label><br /><br />";
1999
+ echo __('Registered Users have the option to auto-subscribe to new categories', 'subscribe2') . ": <br />\r\n";
2000
echo "<label><input type=\"radio\" name=\"show_autosub\" value=\"yes\"";
2001
if ('yes' == $this->subscribe2_options['show_autosub']) {
2002
echo " checked=\"checked\"";
2006
if ('no' == $this->subscribe2_options['show_autosub']) {
2007
echo " checked=\"checked\"";
2008
}
2009
+ echo " />" . __('No', 'subscribe2') . "</label>&nbsp;&nbsp;";
2010
+ echo "<label><input type=\"radio\" name=\"show_autosub\" value=\"exclude\"";
2011
+ if ('exclude' == $this->subscribe2_options['show_autosub']) {
2012
+ echo " checked=\"checked\"";
2013
+ }
2014
+ echo " />" .__('New categories are immediately excluded', 'subscribe2') . "</label><br /><br />";
2015
+ echo __('Option for Registered Users to auto-subscribe to new categories is checked by default', 'subscribe2') . ": <br />\r\n";
2016
echo "<label><input type=\"radio\" name=\"autosub_def\" value=\"yes\"";
2017
if ('yes' == $this->subscribe2_options['autosub_def']) {
2018
echo " checked=\"checked\"";
2033
echo"</p>";
2034
2035
// submit
2036
+ echo "<p class=\"submit\" align=\"center\"><input type=\"submit\" class=\"button-primary\" name=\"submit\" value=\"" . __('Submit', 'subscribe2') . "\" /></p>";
2037
2038
// reset
2039
echo "<h2>" . __('Reset Default', 'subscribe2') . "</h2>\r\n";
2205
}
2206
2207
// submit
2208
+ echo "<p class=\"submit\"><input type=\"submit\" class=\"button-primary\" name=\"submit\" value=\"" . __("Update Preferences", 'subscribe2') . " &raquo;\" /></p>";
2209
echo "</form>\r\n";
2210
+
2211
// list of subscribed blogs on wordpress mu
2212
if ($this->s2_mu) {
2213
global $blog_id;
2216
$blogs_subscribed = array();
2217
$blogs_notsubscribed = array();
2218
2219
+ foreach ($blogs as $key => $blog) {
2220
// switch to blog
2221
switch_to_blog($blog['blog_id']);
2222
2372
$this->display_subscriber_dropdown('registered', false, array('all'));
2373
echo "<input type=\"hidden\" name=\"s2_admin\" value=\"mail\" />";
2374
echo "</p>";
2375
+ echo "<p class=\"submit\"><input type=\"submit\" class=\"button-primary\" name=\"submit\" value=\"" . __('Send', 'subscribe2') . "\" /></p>";
2376
echo "</form></div>\r\n";
2377
echo "<div style=\"clear: both;\"><p>&nbsp;</p></div>";
2378
2402
}
2403
}
2404
}
2405
+
2406
$half = (count($all_cats) / 2);
2407
$i = 0;
2408
$j = 0;
2510
}
2511
echo "</select>";
2512
if (false !== $submit) {
2513
+ echo "&nbsp;<input type=\"submit\" class=\"button-secondary\" value=\"$submit\" />\r\n";
2514
}
2515
} // end display_subscriber_dropdown()
2516
2518
Display a drop down lisy of administrator level users and
2519
optionally include a choice for Post Author
2520
*/
2521
+ function admin_dropdown($inc_author = false) {
2522
global $wpdb;
2523
2524
+ $sql = "SELECT ID,display_name FROM $wpdb->users INNER JOIN $wpdb->usermeta ON $wpdb->users.ID = $wpdb->usermeta.user_id WHERE $wpdb->usermeta.meta_key='" . $wpdb->prefix . "user_level' AND $wpdb->usermeta.meta_value IN (8, 9, 10)";
2525
$admins = $wpdb->get_results($sql);
2526
+
2527
if ($inc_author) {
2528
$author[] = (object)array('ID' => 'author', 'display_name' => 'Post Author');
2529
$admins = array_merge($author, $admins);
2640
*/
2641
function register_post() {
2642
if ('on' == $_POST['subscribe']) {
2643
+ $user = get_userdatabylogin($_POST['user_login']);
2644
+ if (0 == $user->ID) { return; }
2645
+ $this->register($user->ID);
2646
}
2647
}
2648
2690
Meta box form handler
2691
*/
2692
function s2_meta_handler($post_id) {
2693
+ if ( (!isset($_POST['s2meta_nonce'])) || (!wp_verify_nonce($_POST['s2meta_nonce'], md5(plugin_basename(__FILE__)))) ) { return $post_id; }
2694
2695
if ('page' == $_POST['post_type']) {
2696
if (!current_user_can('edit_page', $post_id)) { return $post_id; }
2698
if (!current_user_can('edit_post', $post_id)) { return $post_id; }
2699
}
2700
2701
+ if ( (isset($_POST['s2_meta_field'])) && ($_POST['s2_meta_field'] == 'no') ) {
2702
update_post_meta($post_id, 's2mail', $_POST['s2_meta_field']);
2703
} else {
2704
delete_post_meta($post_id, 's2mail');
2938
$arr['subscribe2'] = $path;
2939
return $arr;
2940
}
2941
+
2942
function mce3_button($arr) {
2943
$arr[] = 'subscribe2';
2944
return $arr;
3148
add_filter('the_title', array(&$this, 'title_filter'));
3149
add_filter('the_content', array(&$this, 'confirm'));
3150
}
3151
+
3152
if ( (isset($_POST['s2_admin'])) && ($_POST['csv']) ) {
3153
$date = date('Y-m-d');
3154
header("Content-Description: File Transfer");
3160
3161
exit(0);
3162
}
3163
+
3164
//add regular actions and filters
3165
add_action('admin_menu', array(&$this, 'admin_menu'));
3166
add_action('admin_menu', array(&$this, 's2_meta_init'));
3167
add_action('save_post', array(&$this, 's2_meta_handler'));
3168
+ add_action('create_category', array(&$this, 'new_category'));
3169
add_action('delete_category', array(&$this, 'delete_category'));
3170
add_filter('the_content', array(&$this, 'filter'), 10);
3171
add_filter('cron_schedules', array(&$this, 'add_weekly_sched'));
3186
add_action('register_form', array(&$this, 'register_form'));
3187
add_action('user_register', array(&$this, 'register'));
3188
add_action('add_user_to_blog', array(&$this, 'register'), 10, 1);
3189
+
3190
+ if ( ($this->s2_mu) && ((isset($_GET['s2mu_subscribe'])) || (isset($_GET['s2mu_unsubscribe']))) ) {
3191
add_action('admin_init', array(&$this, 'wpmu_subscribe'));
3192
}
3193
subscribe2.pot CHANGED
@@ -8,7 +8,7 @@ msgid ""
8
msgstr ""
9
"Project-Id-Version: PACKAGE VERSION\n"
10
"Report-Msgid-Bugs-To: \n"
11
- "POT-Creation-Date: 2009-05-24 20:26+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"
@@ -76,13 +76,13 @@ msgstr ""
76
msgid "Enter email address..."
77
msgstr ""
78
79
- #: subscribe2.php:85 subscribe2.php:1477 subscribe2.php:1570
80
- #: subscribe2.php:2256
81
msgid "Subscribe"
82
msgstr ""
83
84
- #: subscribe2.php:85 subscribe2.php:1478 subscribe2.php:1571
85
- #: subscribe2.php:2235
86
msgid "Unsubscribe"
87
msgstr ""
88
@@ -122,11 +122,11 @@ msgstr ""
122
msgid "Subscribe2 Options"
123
msgstr ""
124
125
- #: subscribe2.php:111 subscribe2.php:2784 subscribe2.php:2888
126
msgid "Subscribe2"
127
msgstr ""
128
129
- #: subscribe2.php:116 subscribe2.php:1739
130
msgid "Subscriptions"
131
msgstr ""
132
@@ -134,605 +134,621 @@ msgstr ""
134
msgid "Mail Subscribers"
135
msgstr ""
136
137
- #: subscribe2.php:771
138
msgid "New subscription"
139
msgstr ""
140
141
- #: subscribe2.php:772
142
msgid "subscribed to email notifications!"
143
msgstr ""
144
145
- #: subscribe2.php:784
146
msgid "New Unsubscription"
147
msgstr ""
148
149
- #: subscribe2.php:785
150
msgid "unsubscribed from email notifications!"
151
msgstr ""
152
153
- #: subscribe2.php:1302
154
msgid "Address(es) subscribed!"
155
msgstr ""
156
157
- #: subscribe2.php:1305
158
msgid "Address(es) unsubscribed!"
159
msgstr ""
160
161
- #: subscribe2.php:1315
162
msgid "Address(es) deleted!"
163
msgstr ""
164
165
- #: subscribe2.php:1321 subscribe2.php:1327
166
msgid "Status changed!"
167
msgstr ""
168
169
- #: subscribe2.php:1341
170
msgid "Reminder Email(s) Sent!"
171
msgstr ""
172
173
- #: subscribe2.php:1344
174
msgid "Registered Users Subscribed!"
175
msgstr ""
176
177
- #: subscribe2.php:1347
178
msgid "Registered Users Unsubscribed!"
179
msgstr ""
180
181
- #: subscribe2.php:1442
182
msgid "Previous Page"
183
msgstr ""
184
185
- #: subscribe2.php:1462
186
msgid "Next Page"
187
msgstr ""
188
189
- #: subscribe2.php:1468
190
msgid "Manage Subscribers"
191
msgstr ""
192
193
- #: subscribe2.php:1473
194
msgid "Add/Remove Subscribers"
195
msgstr ""
196
197
- #: subscribe2.php:1474
198
msgid "Enter addresses, one per line or comma-separated"
199
msgstr ""
200
201
- #: subscribe2.php:1481
202
msgid "Current Subscribers"
203
msgstr ""
204
205
- #: subscribe2.php:1483
206
msgid "Filter"
207
msgstr ""
208
209
- #: subscribe2.php:1490
210
msgid "Search Subscribers"
211
msgstr ""
212
213
- #: subscribe2.php:1493
214
msgid "Send Reminder Email"
215
msgstr ""
216
217
- #: subscribe2.php:1498
218
msgid "Save Emails to CSV File"
219
msgstr ""
220
221
- #: subscribe2.php:1504 subscribe2.php:1558
222
msgid "Process"
223
msgstr ""
224
225
- #: subscribe2.php:1513 subscribe2.php:1535
226
msgid "Confirm this email address"
227
msgstr ""
228
229
- #: subscribe2.php:1515 subscribe2.php:1528
230
msgid "Unconfirm this email address"
231
msgstr ""
232
233
- #: subscribe2.php:1517 subscribe2.php:1530 subscribe2.php:1538
234
msgid "Delete this email address"
235
msgstr ""
236
237
- #: subscribe2.php:1521 subscribe2.php:2392
238
msgid "Select / Unselect All"
239
msgstr ""
240
241
- #: subscribe2.php:1545
242
msgid "edit"
243
msgstr ""
244
245
- #: subscribe2.php:1552
246
msgid "No matching subscribers found"
247
msgstr ""
248
249
- #: subscribe2.php:1554
250
msgid "NONE"
251
msgstr ""
252
253
- #: subscribe2.php:1564
254
msgid "Categories"
255
msgstr ""
256
257
- #: subscribe2.php:1566
258
msgid ""
259
"Existing Registered Users can be automatically (un)subscribed to categories "
260
"using this section."
261
msgstr ""
262
263
- #: subscribe2.php:1567
264
msgid "Consider User Privacy as changes cannot be undone"
265
msgstr ""
266
267
- #: subscribe2.php:1569
268
msgid "Action to perform"
269
msgstr ""
270
271
- #: subscribe2.php:1574 subscribe2.php:1993
272
msgid "Submit"
273
msgstr ""
274
275
- #: subscribe2.php:1714
276
msgid "Subscribe2 Settings"
277
msgstr ""
278
279
- #: subscribe2.php:1725 subscribe2.php:2080
280
msgid "Notification Settings"
281
msgstr ""
282
283
- #: subscribe2.php:1726
284
msgid "Restrict the number of recipients per email to (0 for unlimited)"
285
msgstr ""
286
287
- #: subscribe2.php:1728 subscribe2.php:1867 subscribe2.php:1876
288
msgid "Edit"
289
msgstr ""
290
291
- #: subscribe2.php:1731 subscribe2.php:1870 subscribe2.php:1879
292
msgid "Update"
293
msgstr ""
294
295
- #: subscribe2.php:1732 subscribe2.php:1871 subscribe2.php:1880
296
msgid "Revert"
297
msgstr ""
298
299
- #: subscribe2.php:1734
300
msgid "Send Admins notifications for new"
301
msgstr ""
302
303
- #: subscribe2.php:1744
304
msgid "Unsubscriptions"
305
msgstr ""
306
307
- #: subscribe2.php:1749
308
msgid "Both"
309
msgstr ""
310
311
- #: subscribe2.php:1754
312
msgid "Neither"
313
msgstr ""
314
315
- #: subscribe2.php:1756
316
msgid "Include theme CSS stylesheet in HTML notifications"
317
msgstr ""
318
319
- #: subscribe2.php:1761 subscribe2.php:1773 subscribe2.php:1784
320
- #: subscribe2.php:1795 subscribe2.php:1928 subscribe2.php:1939
321
- #: subscribe2.php:1966 subscribe2.php:1977 subscribe2.php:2120
322
- #: subscribe2.php:2156
323
msgid "Yes"
324
msgstr ""
325
326
- #: subscribe2.php:1766 subscribe2.php:1778 subscribe2.php:1789
327
- #: subscribe2.php:1800 subscribe2.php:1922 subscribe2.php:1933
328
- #: subscribe2.php:1944 subscribe2.php:1971 subscribe2.php:1982
329
- #: subscribe2.php:2125 subscribe2.php:2160
330
msgid "No"
331
msgstr ""
332
333
- #: subscribe2.php:1768
334
msgid "Send Emails for Pages"
335
msgstr ""
336
337
- #: subscribe2.php:1779
338
msgid "Send Emails for Password Protected Posts"
339
msgstr ""
340
341
- #: subscribe2.php:1790
342
msgid "Send Emails for Private Posts"
343
msgstr ""
344
345
- #: subscribe2.php:1801
346
msgid "Send Email From"
347
msgstr ""
348
349
- #: subscribe2.php:1806
350
msgid "Send Emails"
351
msgstr ""
352
353
- #: subscribe2.php:1811
354
msgid "Email Templates"
355
msgstr ""
356
357
- #: subscribe2.php:1815
358
msgid "New Post email (must not be empty)"
359
msgstr ""
360
361
- #: subscribe2.php:1816 subscribe2.php:1838 subscribe2.php:1843
362
msgid "Subject Line"
363
msgstr ""
364
365
- #: subscribe2.php:1821
366
msgid "Message substitions"
367
msgstr ""
368
369
- #: subscribe2.php:1825
370
msgid "the post's title<br />(<i>for per-post emails only</i>)"
371
msgstr ""
372
373
- #: subscribe2.php:1826
374
msgid ""
375
"the excerpt or the entire post<br />(<i>based on the subscriber's "
376
"preferences</i>)"
377
msgstr ""
378
379
- #: subscribe2.php:1827
380
msgid ""
381
"the excerpt of the post and the time it was posted<br />(<i>for digest "
382
"emails only</i>)"
383
msgstr ""
384
385
- #: subscribe2.php:1828
386
msgid "a list of post titles<br />(<i>for digest emails only</i>)"
387
msgstr ""
388
389
- #: subscribe2.php:1829
390
msgid "the post's permalink<br />(<i>for per-post emails only</i>)"
391
msgstr ""
392
393
- #: subscribe2.php:1830
394
msgid ""
395
"the post's permalink after conversion by TinyURL<br />(<i>for per-post "
396
"emails only</i>)"
397
msgstr ""
398
399
- #: subscribe2.php:1831
400
msgid "the admin or post author's name"
401
msgstr ""
402
403
- #: subscribe2.php:1832
404
msgid "the admin or post author's email"
405
msgstr ""
406
407
- #: subscribe2.php:1833
408
msgid "the post author's name"
409
msgstr ""
410
411
- #: subscribe2.php:1834
412
msgid ""
413
"the generated link to confirm a request<br />(<i>only used in the "
414
"confirmation email template</i>)"
415
msgstr ""
416
417
- #: subscribe2.php:1835
418
msgid ""
419
"Action performed by LINK in confirmation email<br />(<i>only used in the "
420
"confirmation email template</i>)"
421
msgstr ""
422
423
- #: subscribe2.php:1837
424
msgid "Subscribe / Unsubscribe confirmation email"
425
msgstr ""
426
427
- #: subscribe2.php:1842
428
msgid "Reminder email to Unconfirmed Subscribers"
429
msgstr ""
430
431
- #: subscribe2.php:1849
432
msgid "Excluded Categories"
433
msgstr ""
434
435
- #: subscribe2.php:1851
436
msgid ""
437
"Posts assigned to any Excluded Category do not generate notifications and "
438
"are not included in digest notifications"
439
msgstr ""
440
441
- #: subscribe2.php:1858
442
msgid "Allow registered users to subscribe to excluded categories?"
443
msgstr ""
444
445
- #: subscribe2.php:1861
446
msgid "Appearance"
447
msgstr ""
448
449
- #: subscribe2.php:1865
450
msgid "Set default Subscribe2 page as ID"
451
msgstr ""
452
453
- #: subscribe2.php:1874
454
msgid "Set the number of Subscribers displayed per page"
455
msgstr ""
456
457
- #: subscribe2.php:1887
458
msgid "Show a link to your subscription page in \"meta\"?"
459
msgstr ""
460
461
- #: subscribe2.php:1894
462
msgid "Show the Subscribe2 button on the Write toolbar?"
463
msgstr ""
464
465
- #: subscribe2.php:1901
466
msgid "Enable Subscribe2 Widget?"
467
msgstr ""
468
469
- #: subscribe2.php:1905
470
msgid "Auto Subscribe"
471
msgstr ""
472
473
- #: subscribe2.php:1907
474
msgid "Subscribe new users registering with your blog"
475
msgstr ""
476
477
- #: subscribe2.php:1912
478
msgid "Automatically"
479
msgstr ""
480
481
- #: subscribe2.php:1917
482
msgid "Display option on Registration Form"
483
msgstr ""
484
485
- #: subscribe2.php:1923
486
msgid "Auto-subscribe includes any excluded categories"
487
msgstr ""
488
489
- #: subscribe2.php:1934
490
msgid "Registration Form option is checked by default"
491
msgstr ""
492
493
- #: subscribe2.php:1945
494
msgid "Auto-subscribe users to receive email as"
495
msgstr ""
496
497
- #: subscribe2.php:1950 subscribe2.php:2097
498
msgid "HTML"
499
msgstr ""
500
501
- #: subscribe2.php:1955
502
msgid "Plain Text - Full"
503
msgstr ""
504
505
- #: subscribe2.php:1960
506
msgid "Plain Text - Excerpt"
507
msgstr ""
508
509
- #: subscribe2.php:1961
510
- msgid "Display option for Register Users to auto-subscribe to new categories"
511
msgstr ""
512
513
- #: subscribe2.php:1972
514
msgid ""
515
- "Option for Register Users to auto-subscribe to new categories is checked by "
516
- "default"
517
msgstr ""
518
519
- #: subscribe2.php:1986
520
msgid "Barred Domains"
521
msgstr ""
522
523
- #: subscribe2.php:1988
524
msgid ""
525
"Enter domains to bar from public subscriptions: <br /> (Use a new line for "
526
"each entry and omit the \"@\" symbol, for example email.com)"
527
msgstr ""
528
529
- #: subscribe2.php:1996
530
msgid "Reset Default"
531
msgstr ""
532
533
- #: subscribe2.php:1997
534
msgid ""
535
"Use this to reset all options to their defaults. This <strong><em>will not</"
536
"em></strong> modify your list of subscribers."
537
msgstr ""
538
539
- #: subscribe2.php:1999
540
msgid "RESET"
541
msgstr ""
542
543
- #: subscribe2.php:2025
544
msgid "Subscription preferences updated."
545
msgstr ""
546
547
- #: subscribe2.php:2083
548
msgid "Editing Subscribe2 preferences for user"
549
msgstr ""
550
551
- #: subscribe2.php:2092
552
msgid "Receive email as"
553
msgstr ""
554
555
- #: subscribe2.php:2102
556
msgid "Plain Text"
557
msgstr ""
558
559
- #: subscribe2.php:2104
560
msgid "Email contains"
561
msgstr ""
562
563
- #: subscribe2.php:2105
564
msgid "Excerpt Only"
565
msgstr ""
566
567
- #: subscribe2.php:2105
568
msgid "Full Post"
569
msgstr ""
570
571
- #: subscribe2.php:2113
572
msgid "Note: HTML format will always deliver the full post"
573
msgstr ""
574
575
- #: subscribe2.php:2115
576
msgid "Automatically subscribe me to newly created categories"
577
msgstr ""
578
579
- #: subscribe2.php:2136
580
msgid "Unsubscribe me from this blog"
581
msgstr ""
582
583
- #: subscribe2.php:2140
584
msgid "Subscribe to all categories"
585
msgstr ""
586
587
- #: subscribe2.php:2142
588
msgid "Subscribed Categories on"
589
msgstr ""
590
591
- #: subscribe2.php:2144
592
msgid "Subscribed Categories"
593
msgstr ""
594
595
- #: subscribe2.php:2150
596
msgid "Receive periodic summaries of new posts?"
597
msgstr ""
598
599
- #: subscribe2.php:2165
600
msgid "Update Preferences"
601
msgstr ""
602
603
- #: subscribe2.php:2224
604
msgid "Subscribed Blogs"
605
msgstr ""
606
607
- #: subscribe2.php:2229 subscribe2.php:2250
608
msgid "Viewing Settings Now"
609
msgstr ""
610
611
- #: subscribe2.php:2233 subscribe2.php:2254
612
msgid "View Settings"
613
msgstr ""
614
615
- #: subscribe2.php:2245
616
msgid "Subscribe to new blogs"
617
msgstr ""
618
619
- #: subscribe2.php:2316
620
msgid "Send an email to subscribers"
621
msgstr ""
622
623
- #: subscribe2.php:2324
624
msgid "A message from "
625
msgstr ""
626
627
- #: subscribe2.php:2326
628
msgid "Subject"
629
msgstr ""
630
631
- #: subscribe2.php:2329
632
msgid "Recipients: "
633
msgstr ""
634
635
- #: subscribe2.php:2333
636
msgid "Send"
637
msgstr ""
638
639
- #: subscribe2.php:2405
640
msgid "All Users and Subscribers"
641
msgstr ""
642
643
- #: subscribe2.php:2406
644
msgid "Public Subscribers"
645
msgstr ""
646
647
- #: subscribe2.php:2407
648
msgid "Confirmed"
649
msgstr ""
650
651
- #: subscribe2.php:2408
652
msgid "Unconfirmed"
653
msgstr ""
654
655
- #: subscribe2.php:2409
656
msgid "All Registered Users"
657
msgstr ""
658
659
- #: subscribe2.php:2410
660
msgid "Registered Subscribers"
661
msgstr ""
662
663
- #: subscribe2.php:2506
664
msgid "For each Post"
665
msgstr ""
666
667
- #: subscribe2.php:2521
668
msgid "Send Digest Notification at"
669
msgstr ""
670
671
- #: subscribe2.php:2533
672
msgid ""
673
"This option will work for digest notification sent daily or less frequently"
674
msgstr ""
675
676
- #: subscribe2.php:2536
677
msgid "Current UTC time is"
678
msgstr ""
679
680
- #: subscribe2.php:2538
681
msgid "Current blog time is"
682
msgstr ""
683
684
- #: subscribe2.php:2540
685
msgid "Next email notification will be sent when your blog time is after"
686
msgstr ""
687
688
- #: subscribe2.php:2571
689
msgid "Settings"
690
msgstr ""
691
692
- #: subscribe2.php:2583
693
msgid "Check here to Subscribe to email notifications for new posts"
694
msgstr ""
695
696
- #: subscribe2.php:2592
697
msgid ""
698
"By registering with this blog you are also agreeing to receive email "
699
"notifications for new posts but you can unsubscribe at anytime"
700
msgstr ""
701
702
- #: subscribe2.php:2613 subscribe2.php:2614 subscribe2.php:2642
703
msgid "Subscribe2 Notification Override"
704
msgstr ""
705
706
- #: subscribe2.php:2628
707
msgid ""
708
"Check here to disable sending of an email notification for this post/page"
709
msgstr ""
710
711
- #: subscribe2.php:2770
712
msgid "Subscription Confirmation"
713
msgstr ""
714
715
- #: subscribe2.php:2810
716
msgid "Title:"
717
msgstr ""
718
719
- #: subscribe2.php:2812
720
msgid "Div class name:"
721
msgstr ""
722
723
- #: subscribe2.php:2862
724
msgid "[Un]Subscribe to Posts"
725
msgstr ""
726
727
- #: subscribe2.php:2940
728
msgid "Weekly"
729
msgstr ""
730
731
- #: subscribe2.php:3008
732
msgid "Posted on"
733
msgstr ""
734
735
- #: subscribe2.php:3053
736
msgid "Digest Email"
737
msgstr ""
738
8
msgstr ""
9
"Project-Id-Version: PACKAGE VERSION\n"
10
"Report-Msgid-Bugs-To: \n"
11
+ "POT-Creation-Date: 2009-07-02 19:52+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"
76
msgid "Enter email address..."
77
msgstr ""
78
79
+ #: subscribe2.php:85 subscribe2.php:1508 subscribe2.php:1601
80
+ #: subscribe2.php:2298
81
msgid "Subscribe"
82
msgstr ""
83
84
+ #: subscribe2.php:85 subscribe2.php:1509 subscribe2.php:1602
85
+ #: subscribe2.php:2277
86
msgid "Unsubscribe"
87
msgstr ""
88
122
msgid "Subscribe2 Options"
123
msgstr ""
124
125
+ #: subscribe2.php:111 subscribe2.php:2825 subscribe2.php:2929
126
msgid "Subscribe2"
127
msgstr ""
128
129
+ #: subscribe2.php:116 subscribe2.php:1774
130
msgid "Subscriptions"
131
msgstr ""
132
134
msgid "Mail Subscribers"
135
msgstr ""
136
137
+ #: subscribe2.php:792
138
msgid "New subscription"
139
msgstr ""
140
141
+ #: subscribe2.php:793
142
msgid "subscribed to email notifications!"
143
msgstr ""
144
145
+ #: subscribe2.php:808
146
msgid "New Unsubscription"
147
msgstr ""
148
149
+ #: subscribe2.php:809
150
msgid "unsubscribed from email notifications!"
151
msgstr ""
152
153
+ #: subscribe2.php:1333
154
msgid "Address(es) subscribed!"
155
msgstr ""
156
157
+ #: subscribe2.php:1336
158
msgid "Address(es) unsubscribed!"
159
msgstr ""
160
161
+ #: subscribe2.php:1346
162
msgid "Address(es) deleted!"
163
msgstr ""
164
165
+ #: subscribe2.php:1352 subscribe2.php:1358
166
msgid "Status changed!"
167
msgstr ""
168
169
+ #: subscribe2.php:1372
170
msgid "Reminder Email(s) Sent!"
171
msgstr ""
172
173
+ #: subscribe2.php:1375
174
msgid "Registered Users Subscribed!"
175
msgstr ""
176
177
+ #: subscribe2.php:1378
178
msgid "Registered Users Unsubscribed!"
179
msgstr ""
180
181
+ #: subscribe2.php:1473
182
msgid "Previous Page"
183
msgstr ""
184
185
+ #: subscribe2.php:1493
186
msgid "Next Page"
187
msgstr ""
188
189
+ #: subscribe2.php:1499
190
msgid "Manage Subscribers"
191
msgstr ""
192
193
+ #: subscribe2.php:1504
194
msgid "Add/Remove Subscribers"
195
msgstr ""
196
197
+ #: subscribe2.php:1505
198
msgid "Enter addresses, one per line or comma-separated"
199
msgstr ""
200
201
+ #: subscribe2.php:1512
202
msgid "Current Subscribers"
203
msgstr ""
204
205
+ #: subscribe2.php:1514
206
msgid "Filter"
207
msgstr ""
208
209
+ #: subscribe2.php:1521
210
msgid "Search Subscribers"
211
msgstr ""
212
213
+ #: subscribe2.php:1524
214
msgid "Send Reminder Email"
215
msgstr ""
216
217
+ #: subscribe2.php:1529
218
msgid "Save Emails to CSV File"
219
msgstr ""
220
221
+ #: subscribe2.php:1535 subscribe2.php:1589
222
msgid "Process"
223
msgstr ""
224
225
+ #: subscribe2.php:1544 subscribe2.php:1566
226
msgid "Confirm this email address"
227
msgstr ""
228
229
+ #: subscribe2.php:1546 subscribe2.php:1559
230
msgid "Unconfirm this email address"
231
msgstr ""
232
233
+ #: subscribe2.php:1548 subscribe2.php:1561 subscribe2.php:1569
234
msgid "Delete this email address"
235
msgstr ""
236
237
+ #: subscribe2.php:1552 subscribe2.php:2434
238
msgid "Select / Unselect All"
239
msgstr ""
240
241
+ #: subscribe2.php:1576
242
msgid "edit"
243
msgstr ""
244
245
+ #: subscribe2.php:1583
246
msgid "No matching subscribers found"
247
msgstr ""
248
249
+ #: subscribe2.php:1585
250
msgid "NONE"
251
msgstr ""
252
253
+ #: subscribe2.php:1595
254
msgid "Categories"
255
msgstr ""
256
257
+ #: subscribe2.php:1597
258
msgid ""
259
"Existing Registered Users can be automatically (un)subscribed to categories "
260
"using this section."
261
msgstr ""
262
263
+ #: subscribe2.php:1598
264
msgid "Consider User Privacy as changes cannot be undone"
265
msgstr ""
266
267
+ #: subscribe2.php:1600
268
msgid "Action to perform"
269
msgstr ""
270
271
+ #: subscribe2.php:1605 subscribe2.php:2036
272
msgid "Submit"
273
msgstr ""
274
275
+ #: subscribe2.php:1749
276
msgid "Subscribe2 Settings"
277
msgstr ""
278
279
+ #: subscribe2.php:1760 subscribe2.php:2123
280
msgid "Notification Settings"
281
msgstr ""
282
283
+ #: subscribe2.php:1761
284
msgid "Restrict the number of recipients per email to (0 for unlimited)"
285
msgstr ""
286
287
+ #: subscribe2.php:1763 subscribe2.php:1905 subscribe2.php:1914
288
msgid "Edit"
289
msgstr ""
290
291
+ #: subscribe2.php:1766 subscribe2.php:1908 subscribe2.php:1917
292
msgid "Update"
293
msgstr ""
294
295
+ #: subscribe2.php:1767 subscribe2.php:1909 subscribe2.php:1918
296
msgid "Revert"
297
msgstr ""
298
299
+ #: subscribe2.php:1769
300
msgid "Send Admins notifications for new"
301
msgstr ""
302
303
+ #: subscribe2.php:1779
304
msgid "Unsubscriptions"
305
msgstr ""
306
307
+ #: subscribe2.php:1784
308
msgid "Both"
309
msgstr ""
310
311
+ #: subscribe2.php:1789
312
msgid "Neither"
313
msgstr ""
314
315
+ #: subscribe2.php:1791
316
msgid "Include theme CSS stylesheet in HTML notifications"
317
msgstr ""
318
319
+ #: subscribe2.php:1796 subscribe2.php:1808 subscribe2.php:1819
320
+ #: subscribe2.php:1830 subscribe2.php:1966 subscribe2.php:1977
321
+ #: subscribe2.php:2004 subscribe2.php:2020 subscribe2.php:2163
322
+ #: subscribe2.php:2199
323
msgid "Yes"
324
msgstr ""
325
326
+ #: subscribe2.php:1801 subscribe2.php:1813 subscribe2.php:1824
327
+ #: subscribe2.php:1835 subscribe2.php:1960 subscribe2.php:1971
328
+ #: subscribe2.php:1982 subscribe2.php:2009 subscribe2.php:2025
329
+ #: subscribe2.php:2168 subscribe2.php:2203
330
msgid "No"
331
msgstr ""
332
333
+ #: subscribe2.php:1803
334
msgid "Send Emails for Pages"
335
msgstr ""
336
337
+ #: subscribe2.php:1814
338
msgid "Send Emails for Password Protected Posts"
339
msgstr ""
340
341
+ #: subscribe2.php:1825
342
msgid "Send Emails for Private Posts"
343
msgstr ""
344
345
+ #: subscribe2.php:1836
346
msgid "Send Email From"
347
msgstr ""
348
349
+ #: subscribe2.php:1841
350
msgid "Send Emails"
351
msgstr ""
352
353
+ #: subscribe2.php:1846
354
msgid "Email Templates"
355
msgstr ""
356
357
+ #: subscribe2.php:1850
358
msgid "New Post email (must not be empty)"
359
msgstr ""
360
361
+ #: subscribe2.php:1851 subscribe2.php:1876 subscribe2.php:1881
362
msgid "Subject Line"
363
msgstr ""
364
365
+ #: subscribe2.php:1856
366
+ msgid "Send Email Preview"
367
+ msgstr ""
368
+
369
+ #: subscribe2.php:1857
370
msgid "Message substitions"
371
msgstr ""
372
373
+ #: subscribe2.php:1861
374
msgid "the post's title<br />(<i>for per-post emails only</i>)"
375
msgstr ""
376
377
+ #: subscribe2.php:1862
378
msgid ""
379
"the excerpt or the entire post<br />(<i>based on the subscriber's "
380
"preferences</i>)"
381
msgstr ""
382
383
+ #: subscribe2.php:1863
384
msgid ""
385
"the excerpt of the post and the time it was posted<br />(<i>for digest "
386
"emails only</i>)"
387
msgstr ""
388
389
+ #: subscribe2.php:1864
390
msgid "a list of post titles<br />(<i>for digest emails only</i>)"
391
msgstr ""
392
393
+ #: subscribe2.php:1865
394
msgid "the post's permalink<br />(<i>for per-post emails only</i>)"
395
msgstr ""
396
397
+ #: subscribe2.php:1866
398
msgid ""
399
"the post's permalink after conversion by TinyURL<br />(<i>for per-post "
400
"emails only</i>)"
401
msgstr ""
402
403
+ #: subscribe2.php:1867
404
msgid "the admin or post author's name"
405
msgstr ""
406
407
+ #: subscribe2.php:1868
408
msgid "the admin or post author's email"
409
msgstr ""
410
411
+ #: subscribe2.php:1869
412
msgid "the post author's name"
413
msgstr ""
414
415
+ #: subscribe2.php:1870
416
msgid ""
417
"the generated link to confirm a request<br />(<i>only used in the "
418
"confirmation email template</i>)"
419
msgstr ""
420
421
+ #: subscribe2.php:1871
422
msgid ""
423
"Action performed by LINK in confirmation email<br />(<i>only used in the "
424
"confirmation email template</i>)"
425
msgstr ""
426
427
+ #: subscribe2.php:1872
428
+ msgid "the post's assigned categories"
429
+ msgstr ""
430
+
431
+ #: subscribe2.php:1873
432
+ msgid "the post's assigned Tags"
433
+ msgstr ""
434
+
435
+ #: subscribe2.php:1875
436
msgid "Subscribe / Unsubscribe confirmation email"
437
msgstr ""
438
439
+ #: subscribe2.php:1880
440
msgid "Reminder email to Unconfirmed Subscribers"
441
msgstr ""
442
443
+ #: subscribe2.php:1887
444
msgid "Excluded Categories"
445
msgstr ""
446
447
+ #: subscribe2.php:1889
448
msgid ""
449
"Posts assigned to any Excluded Category do not generate notifications and "
450
"are not included in digest notifications"
451
msgstr ""
452
453
+ #: subscribe2.php:1896
454
msgid "Allow registered users to subscribe to excluded categories?"
455
msgstr ""
456
457
+ #: subscribe2.php:1899
458
msgid "Appearance"
459
msgstr ""
460
461
+ #: subscribe2.php:1903
462
msgid "Set default Subscribe2 page as ID"
463
msgstr ""
464
465
+ #: subscribe2.php:1912
466
msgid "Set the number of Subscribers displayed per page"
467
msgstr ""
468
469
+ #: subscribe2.php:1925
470
msgid "Show a link to your subscription page in \"meta\"?"
471
msgstr ""
472
473
+ #: subscribe2.php:1932
474
msgid "Show the Subscribe2 button on the Write toolbar?"
475
msgstr ""
476
477
+ #: subscribe2.php:1939
478
msgid "Enable Subscribe2 Widget?"
479
msgstr ""
480
481
+ #: subscribe2.php:1943
482
msgid "Auto Subscribe"
483
msgstr ""
484
485
+ #: subscribe2.php:1945
486
msgid "Subscribe new users registering with your blog"
487
msgstr ""
488
489
+ #: subscribe2.php:1950
490
msgid "Automatically"
491
msgstr ""
492
493
+ #: subscribe2.php:1955
494
msgid "Display option on Registration Form"
495
msgstr ""
496
497
+ #: subscribe2.php:1961
498
msgid "Auto-subscribe includes any excluded categories"
499
msgstr ""
500
501
+ #: subscribe2.php:1972
502
msgid "Registration Form option is checked by default"
503
msgstr ""
504
505
+ #: subscribe2.php:1983
506
msgid "Auto-subscribe users to receive email as"
507
msgstr ""
508
509
+ #: subscribe2.php:1988 subscribe2.php:2140
510
msgid "HTML"
511
msgstr ""
512
513
+ #: subscribe2.php:1993
514
msgid "Plain Text - Full"
515
msgstr ""
516
517
+ #: subscribe2.php:1998
518
msgid "Plain Text - Excerpt"
519
msgstr ""
520
521
+ #: subscribe2.php:1999
522
+ msgid "Registered Users have the option to auto-subscribe to new categories"
523
msgstr ""
524
525
+ #: subscribe2.php:2014
526
+ msgid "New categories are immediately excluded"
527
+ msgstr ""
528
+
529
+ #: subscribe2.php:2015
530
msgid ""
531
+ "Option for Registered Users to auto-subscribe to new categories is checked "
532
+ "by default"
533
msgstr ""
534
535
+ #: subscribe2.php:2029
536
msgid "Barred Domains"
537
msgstr ""
538
539
+ #: subscribe2.php:2031
540
msgid ""
541
"Enter domains to bar from public subscriptions: <br /> (Use a new line for "
542
"each entry and omit the \"@\" symbol, for example email.com)"
543
msgstr ""
544
545
+ #: subscribe2.php:2039
546
msgid "Reset Default"
547
msgstr ""
548
549
+ #: subscribe2.php:2040
550
msgid ""
551
"Use this to reset all options to their defaults. This <strong><em>will not</"
552
"em></strong> modify your list of subscribers."
553
msgstr ""
554
555
+ #: subscribe2.php:2042
556
msgid "RESET"
557
msgstr ""
558
559
+ #: subscribe2.php:2068
560
msgid "Subscription preferences updated."
561
msgstr ""
562
563
+ #: subscribe2.php:2126
564
msgid "Editing Subscribe2 preferences for user"
565
msgstr ""
566
567
+ #: subscribe2.php:2135
568
msgid "Receive email as"
569
msgstr ""
570
571
+ #: subscribe2.php:2145
572
msgid "Plain Text"
573
msgstr ""
574
575
+ #: subscribe2.php:2147
576
msgid "Email contains"
577
msgstr ""
578
579
+ #: subscribe2.php:2148
580
msgid "Excerpt Only"
581
msgstr ""
582
583
+ #: subscribe2.php:2148
584
msgid "Full Post"
585
msgstr ""
586
587
+ #: subscribe2.php:2156
588
msgid "Note: HTML format will always deliver the full post"
589
msgstr ""
590
591
+ #: subscribe2.php:2158
592
msgid "Automatically subscribe me to newly created categories"
593
msgstr ""
594
595
+ #: subscribe2.php:2179
596
msgid "Unsubscribe me from this blog"
597
msgstr ""
598
599
+ #: subscribe2.php:2183
600
msgid "Subscribe to all categories"
601
msgstr ""
602
603
+ #: subscribe2.php:2185
604
msgid "Subscribed Categories on"
605
msgstr ""
606
607
+ #: subscribe2.php:2187
608
msgid "Subscribed Categories"
609
msgstr ""
610
611
+ #: subscribe2.php:2193
612
msgid "Receive periodic summaries of new posts?"
613
msgstr ""
614
615
+ #: subscribe2.php:2208
616
msgid "Update Preferences"
617
msgstr ""
618
619
+ #: subscribe2.php:2266
620
msgid "Subscribed Blogs"
621
msgstr ""
622
623
+ #: subscribe2.php:2271 subscribe2.php:2292
624
msgid "Viewing Settings Now"
625
msgstr ""
626
627
+ #: subscribe2.php:2275 subscribe2.php:2296
628
msgid "View Settings"
629
msgstr ""
630
631
+ #: subscribe2.php:2287
632
msgid "Subscribe to new blogs"
633
msgstr ""
634
635
+ #: subscribe2.php:2358
636
msgid "Send an email to subscribers"
637
msgstr ""
638
639
+ #: subscribe2.php:2366
640
msgid "A message from "
641
msgstr ""
642
643
+ #: subscribe2.php:2368
644
msgid "Subject"
645
msgstr ""
646
647
+ #: subscribe2.php:2371
648
msgid "Recipients: "
649
msgstr ""
650
651
+ #: subscribe2.php:2375
652
msgid "Send"
653
msgstr ""
654
655
+ #: subscribe2.php:2447
656
msgid "All Users and Subscribers"
657
msgstr ""
658
659
+ #: subscribe2.php:2448
660
msgid "Public Subscribers"
661
msgstr ""
662
663
+ #: subscribe2.php:2449
664
msgid "Confirmed"
665
msgstr ""
666
667
+ #: subscribe2.php:2450
668
msgid "Unconfirmed"
669
msgstr ""
670
671
+ #: subscribe2.php:2451
672
msgid "All Registered Users"
673
msgstr ""
674
675
+ #: subscribe2.php:2452
676
msgid "Registered Subscribers"
677
msgstr ""
678
679
+ #: subscribe2.php:2547
680
msgid "For each Post"
681
msgstr ""
682
683
+ #: subscribe2.php:2562
684
msgid "Send Digest Notification at"
685
msgstr ""
686
687
+ #: subscribe2.php:2574
688
msgid ""
689
"This option will work for digest notification sent daily or less frequently"
690
msgstr ""
691
692
+ #: subscribe2.php:2577
693
msgid "Current UTC time is"
694
msgstr ""
695
696
+ #: subscribe2.php:2579
697
msgid "Current blog time is"
698
msgstr ""
699
700
+ #: subscribe2.php:2581
701
msgid "Next email notification will be sent when your blog time is after"
702
msgstr ""
703
704
+ #: subscribe2.php:2612
705
msgid "Settings"
706
msgstr ""
707
708
+ #: subscribe2.php:2624
709
msgid "Check here to Subscribe to email notifications for new posts"
710
msgstr ""
711
712
+ #: subscribe2.php:2633
713
msgid ""
714
"By registering with this blog you are also agreeing to receive email "
715
"notifications for new posts but you can unsubscribe at anytime"
716
msgstr ""
717
718
+ #: subscribe2.php:2654 subscribe2.php:2655 subscribe2.php:2683
719
msgid "Subscribe2 Notification Override"
720
msgstr ""
721
722
+ #: subscribe2.php:2669
723
msgid ""
724
"Check here to disable sending of an email notification for this post/page"
725
msgstr ""
726
727
+ #: subscribe2.php:2811
728
msgid "Subscription Confirmation"
729
msgstr ""
730
731
+ #: subscribe2.php:2851
732
msgid "Title:"
733
msgstr ""
734
735
+ #: subscribe2.php:2853
736
msgid "Div class name:"
737
msgstr ""
738
739
+ #: subscribe2.php:2903
740
msgid "[Un]Subscribe to Posts"
741
msgstr ""
742
743
+ #: subscribe2.php:2981
744
msgid "Weekly"
745
msgstr ""
746
747
+ #: subscribe2.php:3049
748
msgid "Posted on"
749
msgstr ""
750
751
+ #: subscribe2.php:3094
752
msgid "Digest Email"
753
msgstr ""
754