Subscribe2 - Version 4.12

Version Description

Download this release

Release Info

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

Code changes from version 4.11 to 4.12

ReadMe.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: MattyRob, Skippy, RavanH
3
  Donate link: http://subscribe2.wordpress.com/donate/
4
  Tags: posts, subscription, email
5
  Requires at least: 2.0.x
6
- Tested up to: 2.6.2
7
- Stable tag: 4.11
8
 
9
  Sends a list of subscribers an email notification when new posts are published to your blog
10
 
@@ -28,15 +28,15 @@ Registered users of the blog can elect to receive email notifications for specif
28
 
29
  1. Copy the entire /subscribe2/ directory into your /wp-content/plugins/ directory.
30
  2. Activate the plugin.
31
- 3. Click the "Options" admin menu link, and select "Subscribe2".
32
  4. Configure the options to taste, including the email template and any categories which should be excluded from notification
33
  5. Click the "Manage" admin menu link, and select "Subscribers".
34
  6. Manually subscribe people as you see fit.
35
  7. Create a WordPress Page (http://codex.wordpress.org/Pages) to display the subscription form. When creating the page, you may click the "S2" button on the QuickBar to automatically insert the subscribe2 token. Or, if you prefer, you may manually insert the subscribe2 token:
36
  <!--subscribe2-->
37
  ***Ensure the token is on a line by itself and that it has a blank line above and below.***
38
- This token will automatically be replaced by the subscription form, and will display all messages as necessary.
39
- 8. In the Subscribe2 "Options" admin link set the default page ID to the ID of the WordPress page created in step 8.
40
 
41
  == Frequently Asked Questions ==
42
 
@@ -60,9 +60,7 @@ In the first instance check this with your hosting provider, they have access to
60
 
61
  Some hosting providers place a restriction on the maximum number of recipients in any one email message. For example, the venerable Dreamhost (http://www.dreamhost.com/) does not allow any message to contain more than 30 recipients.
62
 
63
- Subscribe2 provides a facility to work around this restriction by sending batches of emails. To enable this feature, edit subscribe2.php in a text editor and go to line 35:
64
- define('BCCLIMIT', 0);
65
- Change the 0 to the number of allowed outgoing email recipients as set by your host.
66
 
67
  Reminder: because subscribe2 places all recipients in BCC fields, and places the blog admin in the TO field, the blog admin will receive one email per batched delivery. So if you have 90 subscribers, the blog admin should receive three post notification emails, one for each set of 30 BCC recipients.
68
 
@@ -85,6 +83,23 @@ If, for some reason the Subscribe2 button does not appear in your browser window
85
 
86
  == Version History ==
87
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  Version 4.11 by Matthew Robinson
89
 
90
  * Works in WordPress 2.7-almost-beta!
3
  Donate link: http://subscribe2.wordpress.com/donate/
4
  Tags: posts, subscription, email
5
  Requires at least: 2.0.x
6
+ Tested up to: 2.7
7
+ Stable tag: 4.12
8
 
9
  Sends a list of subscribers an email notification when new posts are published to your blog
10
 
28
 
29
  1. Copy the entire /subscribe2/ directory into your /wp-content/plugins/ directory.
30
  2. Activate the plugin.
31
+ 3. Click the "Settings" admin menu link, and select "Subscribe2".
32
  4. Configure the options to taste, including the email template and any categories which should be excluded from notification
33
  5. Click the "Manage" admin menu link, and select "Subscribers".
34
  6. Manually subscribe people as you see fit.
35
  7. Create a WordPress Page (http://codex.wordpress.org/Pages) to display the subscription form. When creating the page, you may click the "S2" button on the QuickBar to automatically insert the subscribe2 token. Or, if you prefer, you may manually insert the subscribe2 token:
36
  <!--subscribe2-->
37
  ***Ensure the token is on a line by itself and that it has a blank line above and below.***
38
+ This token will automatically be replaced by dynamic subscription information and will display all forms and messages as necessary.
39
+ 8. In the WordPress "Settings" area for Subscribe2 define the default page ID in the "Appearance" section to the ID of the WordPress page created in step 8.
40
 
41
  == Frequently Asked Questions ==
42
 
60
 
61
  Some hosting providers place a restriction on the maximum number of recipients in any one email message. For example, the venerable Dreamhost (http://www.dreamhost.com/) does not allow any message to contain more than 30 recipients.
62
 
63
+ Subscribe2 provides a facility to work around this restriction by sending batches of emails. To enable this feature, go to Settings->Subscribe2 and located the setting to restrict the number of recipients per email. If this is set to 30 then each outgoing email notification will only contain addresses for 30 recipients.
 
 
64
 
65
  Reminder: because subscribe2 places all recipients in BCC fields, and places the blog admin in the TO field, the blog admin will receive one email per batched delivery. So if you have 90 subscribers, the blog admin should receive three post notification emails, one for each set of 30 BCC recipients.
66
 
83
 
84
  == Version History ==
85
 
86
+ Version 4.12 by Matthew Robinson
87
+
88
+ * Added new option to remove Auto Subscribe option from Users->Your Subscriptions
89
+ * New POSTTIME token for digest email notifications
90
+ * Preserve mail after sending from Write->Mail Subscribers
91
+ * Introduced the Subscriber Counter Widget
92
+ * Use Rich Text Editor in Write->Mail Subscribers for the Paid HTML version
93
+ * Per User management in Admin
94
+ * Added support Uninstall API in WordPress 2.7
95
+ * Add support for 'Meta Widget' links
96
+ * Subscribers are sorted alphabetically before sending notifications
97
+ * Added ability to bulk unsubscribe a list of emails pasted into manage window
98
+ * Define number of subscribers in Manage window
99
+ * Added options for admin emails when public users subscribe or unsubscribe
100
+ * Fixed bug that prevented sending of Reminder emails from Manage->Subscribers
101
+ * Amended confirmation code so that only one email is sent no matter how many times users click on (un)subscribe links
102
+
103
  Version 4.11 by Matthew Robinson
104
 
105
  * Works in WordPress 2.7-almost-beta!
The WordPress Subscriber User Guide.pdf ADDED
Binary file
counterwidget.php ADDED
@@ -0,0 +1,407 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ Plugin Name: Subscribe2 Counter Widget
4
+ Version: 4.12
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
8
+ Author URI: http://subscribe2.wordpress.com
9
+ */
10
+
11
+ // Put functions into one big function we'll call at the plugins_loaded
12
+ // action. This ensures that all required plugin functions are defined.
13
+ function widget_s2counter_init() {
14
+
15
+ if ( !function_exists('register_sidebar_widget') )
16
+ return;
17
+
18
+ /**
19
+ Register the Widget
20
+ */
21
+ function widget_s2counter($args) {
22
+ extract($args);
23
+ $options = get_option('widget_s2counter');
24
+ $title = empty($options['title']) ? 'Subscriber Count' : $options['title'];
25
+ $s2w_bg = $options['s2w_bg'];
26
+ $s2w_fg = $options['s2w_fg'];
27
+ $s2w_width = $options['s2w_width'];
28
+ $s2w_height = $options['s2w_height'];
29
+ $s2w_font = $options['s2w_font'];
30
+ echo $before_widget;
31
+ echo $before_title . $title . $after_title;
32
+ global $wpdb, $table;
33
+ if ($s2_mu) {
34
+ $count['registered'] = $wpdb->get_var("SELECT COUNT(meta_key) FROM $wpdb->usermeta WHERE meta_key='" . $wpdb->prefix . "capabilities'");
35
+ } else {
36
+ $count['registered'] = $wpdb->get_var("SELECT COUNT(meta_key) FROM $wpdb->usermeta WHERE meta_key='s2_subscribed'");
37
+ }
38
+ $count['confirmed'] = $wpdb->get_var("SELECT COUNT(id) FROM " . $wpdb->prefix . "subscribe2 WHERE active='1'");
39
+ $count['all'] = ($count['registered'] + $count['confirmed']);
40
+ echo "<center><div style=\"text-align:center; background-color:" . $s2w_bg . "; color:" . $s2w_fg . "; width:" . $s2w_width . "px; height:" . $s2w_height . "px; font:" . $s2w_font . "pt Verdana, Arial, Helvetica, sans-serif; vertical-align:middle; padding:3px; border:1px solid #444;\">";
41
+ echo $count['all'];
42
+ echo "</div></center>";
43
+ echo $after_widget;
44
+ }
45
+
46
+ /**
47
+ Register the optional widget control form
48
+ */
49
+ function widget_s2counter_control() {
50
+ $options = get_option('widget_s2counter');
51
+ if ( !is_array($options) )
52
+ $options = array('title'=>'Subscriber Count',
53
+ 's2w_bg'=>'#E3DACF',
54
+ 's2w_fg'=>'#345797',
55
+ 's2w_width'=>'82',
56
+ 's2w_height'=>'16',
57
+ 's2w_font'=>'11');
58
+
59
+ if ( $_POST['s2counter'] ) {
60
+ // Remember to sanitize and format use input appropriately.
61
+ $options['title'] = strip_tags(stripslashes($_POST['title']));
62
+ $options['s2w_bg'] = strip_tags(stripslashes($_POST['s2w_bodyColor']));
63
+ $options['s2w_fg'] = strip_tags(stripslashes($_POST['s2w_textColor']));
64
+ $options['s2w_width'] = strip_tags(stripslashes($_POST['width']));
65
+ $options['s2w_height'] = strip_tags(stripslashes($_POST['height']));
66
+ $options['s2w_font'] = strip_tags(stripslashes($_POST['font']));
67
+ update_option('widget_s2counter', $options);
68
+ }
69
+
70
+ // Be sure you format your options to be valid HTML attributes.
71
+ $s2w_title = htmlspecialchars($options['title'], ENT_QUOTES);
72
+ $s2w_bg = htmlspecialchars($options['s2w_bg'], ENT_QUOTES);
73
+ $s2w_fg = htmlspecialchars($options['s2w_fg'], ENT_QUOTES);
74
+ $s2w_width = htmlspecialchars($options['s2w_width'], ENT_QUOTES);
75
+ $s2w_height = htmlspecialchars($options['s2w_height'], ENT_QUOTES);
76
+ $s2w_font = htmlspecialchars($options['s2w_font'], ENT_QUOTES);
77
+ ?>
78
+
79
+ <style type="text/css">
80
+ div.csq { border:none; width:10px; height:10px; background-color:transparent; cursor:pointer; }
81
+ div#countPreviewDiv { text-align:center; background-color:<?php echo $s2w_bg; ?>; color:<?php echo $s2w_fg; ?>; width:<?php echo $s2w_width; ?>px; height:<?php echo $s2w_height; ?>px; font:<?php echo $s2w_font; ?>pt Verdana, Arial, Helvetica, sans-serif; vertical-align:middle; padding:3px; border:1px solid #444; }
82
+ </style>
83
+
84
+ <script type="text/javascript">
85
+ function assignColor(theColor) {
86
+ if (document.getElementById) {
87
+ var circForm = document.forms['widget-controls'];
88
+ var re6 = /#[0-9A-Za-z]{6}/;
89
+ if (!re6.test(theColor)) {
90
+ return;
91
+ }
92
+ bodyFld = circForm.s2w_radioColor[0];
93
+ txtFld = circForm.s2w_radioColor[1];
94
+ pv = document.getElementById("countPreviewDiv");
95
+ if (bodyFld.checked) {
96
+ circForm.elements['s2w_bodyColor'].value = theColor;
97
+ pv.style.backgroundColor = theColor;
98
+ } else {
99
+ circForm.elements['s2w_textColor'].value = theColor;
100
+ pv.style.color = theColor;
101
+ }
102
+ }
103
+ }
104
+ function assignSize(theSize, theStyle) {
105
+ if (document.getElementById) {
106
+ var circForm = document.forms['widget-controls'];
107
+ pv = document.getElementById("countPreviewDiv");
108
+ if (theStyle == 'width') {
109
+ pv.style.width = theSize+"px";
110
+ }
111
+ if (theStyle == 'height') {
112
+ pv.style.height = theSize+"px";
113
+ }
114
+ if (theStyle == 'font') {
115
+ pv.style.fontSize = theSize+"pt";
116
+ }
117
+ }
118
+ }
119
+ </script>
120
+
121
+ <div>
122
+ <fieldset>
123
+ <legend>Widget Title</legend>
124
+ <input type="text" name="title" id="title" value="<?php echo $s2w_title; ?>" class="widefat" />
125
+ </fieldset>
126
+
127
+ <fieldset>
128
+ <legend>Color Scheme:</legend>
129
+ <table style="border:0; padding:0; margin:0 0 12px 0; border-collapse:collapse;" align="center">
130
+ <tr>
131
+ <td style="background-color:#000000;margin:0;padding:0"><a href="javascript:assignColor('#000000')"><div class="csq"></div></a></td>
132
+ <td style="background-color:#000033;margin:0;padding:0"><a href="javascript:assignColor('#000033')"><div class="csq"></div></a></td>
133
+ <td style="background-color:#000066;margin:0;padding:0"><a href="javascript:assignColor('#000066')"><div class="csq"></div></a></td>
134
+ <td style="background-color:#000099;margin:0;padding:0"><a href="javascript:assignColor('#000099')"><div class="csq"></div></a></td>
135
+ <td style="background-color:#0000CC;margin:0;padding:0"><a href="javascript:assignColor('#0000CC')"><div class="csq"></div></a></td>
136
+ <td style="background-color:#0000FF;margin:0;padding:0"><a href="javascript:assignColor('#0000FF')"><div class="csq"></div></a></td>
137
+ <td style="background-color:#006600;margin:0;padding:0"><a href="javascript:assignColor('#006600')"><div class="csq"></div></a></td>
138
+ <td style="background-color:#006633;margin:0;padding:0"><a href="javascript:assignColor('#006633')"><div class="csq"></div></a></td>
139
+ <td style="background-color:#006666;margin:0;padding:0"><a href="javascript:assignColor('#006666')"><div class="csq"></div></a></td>
140
+ <td style="background-color:#006699;margin:0;padding:0"><a href="javascript:assignColor('#006699')"><div class="csq"></div></a></td>
141
+ <td style="background-color:#0066CC;margin:0;padding:0"><a href="javascript:assignColor('#0066CC')"><div class="csq"></div></a></td>
142
+ <td style="background-color:#0066FF;margin:0;padding:0"><a href="javascript:assignColor('#0066FF')"><div class="csq"></div></a></td>
143
+ <td style="background-color:#00CC00;margin:0;padding:0"><a href="javascript:assignColor('#00CC00')"><div class="csq"></div></a></td>
144
+ <td style="background-color:#00CC33;margin:0;padding:0"><a href="javascript:assignColor('#00CC33')"><div class="csq"></div></a></td>
145
+ <td style="background-color:#00CC66;margin:0;padding:0"><a href="javascript:assignColor('#00CC66')"><div class="csq"></div></a></td>
146
+ <td style="background-color:#00CC99;margin:0;padding:0"><a href="javascript:assignColor('#00CC99')"><div class="csq"></div></a></td>
147
+ <td style="background-color:#00CCCC;margin:0;padding:0"><a href="javascript:assignColor('#00CCCC')"><div class="csq"></div></a></td>
148
+ <td style="background-color:#00CCFF;margin:0;padding:0"><a href="javascript:assignColor('#00CCFF')"><div class="csq"></div></a></td>
149
+ </tr>
150
+ <tr>
151
+ <td style="background-color:#003300;margin:0;padding:0"><a href="javascript:assignColor('#003300')"><div class="csq"></div></a></td>
152
+ <td style="background-color:#003333;margin:0;padding:0"><a href="javascript:assignColor('#003333')"><div class="csq"></div></a></td>
153
+ <td style="background-color:#003366;margin:0;padding:0"><a href="javascript:assignColor('#003366')"><div class="csq"></div></a></td>
154
+ <td style="background-color:#003399;margin:0;padding:0"><a href="javascript:assignColor('#003399')"><div class="csq"></div></a></td>
155
+ <td style="background-color:#0033CC;margin:0;padding:0"><a href="javascript:assignColor('#0033CC')"><div class="csq"></div></a></td>
156
+ <td style="background-color:#0033FF;margin:0;padding:0"><a href="javascript:assignColor('#0033FF')"><div class="csq"></div></a></td>
157
+ <td style="background-color:#009900;margin:0;padding:0"><a href="javascript:assignColor('#009900')"><div class="csq"></div></a></td>
158
+ <td style="background-color:#009933;margin:0;padding:0"><a href="javascript:assignColor('#009933')"><div class="csq"></div></a></td>
159
+ <td style="background-color:#009966;margin:0;padding:0"><a href="javascript:assignColor('#009966')"><div class="csq"></div></a></td>
160
+ <td style="background-color:#009999;margin:0;padding:0"><a href="javascript:assignColor('#009999')"><div class="csq"></div></a></td>
161
+ <td style="background-color:#0099CC;margin:0;padding:0"><a href="javascript:assignColor('#0099CC')"><div class="csq"></div></a></td>
162
+ <td style="background-color:#0099FF;margin:0;padding:0"><a href="javascript:assignColor('#0099FF')"><div class="csq"></div></a></td>
163
+ <td style="background-color:#00FF00;margin:0;padding:0"><a href="javascript:assignColor('#00FF00')"><div class="csq"></div></a></td>
164
+ <td style="background-color:#00FF33;margin:0;padding:0"><a href="javascript:assignColor('#00FF33')"><div class="csq"></div></a></td>
165
+ <td style="background-color:#00FF66;margin:0;padding:0"><a href="javascript:assignColor('#00FF66')"><div class="csq"></div></a></td>
166
+ <td style="background-color:#00FF99;margin:0;padding:0"><a href="javascript:assignColor('#00FF99')"><div class="csq"></div></a></td>
167
+ <td style="background-color:#00FFCC;margin:0;padding:0"><a href="javascript:assignColor('#00FFCC')"><div class="csq"></div></a></td>
168
+ <td style="background-color:#00FFFF;margin:0;padding:0"><a href="javascript:assignColor('#00FFFF')"><div class="csq"></div></a></td>
169
+ </tr>
170
+ <tr>
171
+ <td style="background-color:#330000;margin:0;padding:0"><a href="javascript:assignColor('#330000')"><div class="csq"></div></a></td>
172
+ <td style="background-color:#330033;margin:0;padding:0"><a href="javascript:assignColor('#330033')"><div class="csq"></div></a></td>
173
+ <td style="background-color:#330066;margin:0;padding:0"><a href="javascript:assignColor('#330066')"><div class="csq"></div></a></td>
174
+ <td style="background-color:#330099;margin:0;padding:0"><a href="javascript:assignColor('#330099')"><div class="csq"></div></a></td>
175
+ <td style="background-color:#3300CC;margin:0;padding:0"><a href="javascript:assignColor('#3300CC')"><div class="csq"></div></a></td>
176
+ <td style="background-color:#3300FF;margin:0;padding:0"><a href="javascript:assignColor('#3300FF')"><div class="csq"></div></a></td>
177
+ <td style="background-color:#336600;margin:0;padding:0"><a href="javascript:assignColor('#336600')"><div class="csq"></div></a></td>
178
+ <td style="background-color:#336633;margin:0;padding:0"><a href="javascript:assignColor('#336633')"><div class="csq"></div></a></td>
179
+ <td style="background-color:#336666;margin:0;padding:0"><a href="javascript:assignColor('#336666')"><div class="csq"></div></a></td>
180
+ <td style="background-color:#336699;margin:0;padding:0"><a href="javascript:assignColor('#336699')"><div class="csq"></div></a></td>
181
+ <td style="background-color:#3366CC;margin:0;padding:0"><a href="javascript:assignColor('#3366CC')"><div class="csq"></div></a></td>
182
+ <td style="background-color:#3366FF;margin:0;padding:0"><a href="javascript:assignColor('#3366FF')"><div class="csq"></div></a></td>
183
+ <td style="background-color:#33CC00;margin:0;padding:0"><a href="javascript:assignColor('#33CC00')"><div class="csq"></div></a></td>
184
+ <td style="background-color:#33CC33;margin:0;padding:0"><a href="javascript:assignColor('#33CC33')"><div class="csq"></div></a></td>
185
+ <td style="background-color:#33CC66;margin:0;padding:0"><a href="javascript:assignColor('#33CC66')"><div class="csq"></div></a></td>
186
+ <td style="background-color:#33CC99;margin:0;padding:0"><a href="javascript:assignColor('#33CC99')"><div class="csq"></div></a></td>
187
+ <td style="background-color:#33CCCC;margin:0;padding:0"><a href="javascript:assignColor('#33CCCC')"><div class="csq"></div></a></td>
188
+ <td style="background-color:#33CCFF;margin:0;padding:0"><a href="javascript:assignColor('#33CCFF')"><div class="csq"></div></a></td>
189
+ </tr>
190
+ <tr>
191
+ <td style="background-color:#333300;margin:0;padding:0"><a href="javascript:assignColor('#333300')"><div class="csq"></div></a></td>
192
+ <td style="background-color:#333333;margin:0;padding:0"><a href="javascript:assignColor('#333333')"><div class="csq"></div></a></td>
193
+ <td style="background-color:#333366;margin:0;padding:0"><a href="javascript:assignColor('#333366')"><div class="csq"></div></a></td>
194
+ <td style="background-color:#333399;margin:0;padding:0"><a href="javascript:assignColor('#333399')"><div class="csq"></div></a></td>
195
+ <td style="background-color:#3333CC;margin:0;padding:0"><a href="javascript:assignColor('#3333CC')"><div class="csq"></div></a></td>
196
+ <td style="background-color:#3333FF;margin:0;padding:0"><a href="javascript:assignColor('#3333FF')"><div class="csq"></div></a></td>
197
+ <td style="background-color:#339900;margin:0;padding:0"><a href="javascript:assignColor('#339900')"><div class="csq"></div></a></td>
198
+ <td style="background-color:#339933;margin:0;padding:0"><a href="javascript:assignColor('#339933')"><div class="csq"></div></a></td>
199
+ <td style="background-color:#339966;margin:0;padding:0"><a href="javascript:assignColor('#339966')"><div class="csq"></div></a></td>
200
+ <td style="background-color:#339999;margin:0;padding:0"><a href="javascript:assignColor('#339999')"><div class="csq"></div></a></td>
201
+ <td style="background-color:#3399CC;margin:0;padding:0"><a href="javascript:assignColor('#3399CC')"><div class="csq"></div></a></td>
202
+ <td style="background-color:#3399FF;margin:0;padding:0"><a href="javascript:assignColor('#3399FF')"><div class="csq"></div></a></td>
203
+ <td style="background-color:#33FF00;margin:0;padding:0"><a href="javascript:assignColor('#33FF00')"><div class="csq"></div></a></td>
204
+ <td style="background-color:#33FF33;margin:0;padding:0"><a href="javascript:assignColor('#33FF33')"><div class="csq"></div></a></td>
205
+ <td style="background-color:#33FF66;margin:0;padding:0"><a href="javascript:assignColor('#33FF66')"><div class="csq"></div></a></td>
206
+ <td style="background-color:#33FF99;margin:0;padding:0"><a href="javascript:assignColor('#33FF99')"><div class="csq"></div></a></td>
207
+ <td style="background-color:#33FFCC;margin:0;padding:0"><a href="javascript:assignColor('#33FFCC')"><div class="csq"></div></a></td>
208
+ <td style="background-color:#33FFFF;margin:0;padding:0"><a href="javascript:assignColor('#33FFFF')"><div class="csq"></div></a></td>
209
+ </tr>
210
+ <tr>
211
+ <td style="background-color:#660000;margin:0;padding:0"><a href="javascript:assignColor('#660000')"><div class="csq"></div></a></td>
212
+ <td style="background-color:#660033;margin:0;padding:0"><a href="javascript:assignColor('#660033')"><div class="csq"></div></a></td>
213
+ <td style="background-color:#660066;margin:0;padding:0"><a href="javascript:assignColor('#660066')"><div class="csq"></div></a></td>
214
+ <td style="background-color:#660099;margin:0;padding:0"><a href="javascript:assignColor('#660099')"><div class="csq"></div></a></td>
215
+ <td style="background-color:#6600CC;margin:0;padding:0"><a href="javascript:assignColor('#6600CC')"><div class="csq"></div></a></td>
216
+ <td style="background-color:#6600FF;margin:0;padding:0"><a href="javascript:assignColor('#6600FF')"><div class="csq"></div></a></td>
217
+ <td style="background-color:#666600;margin:0;padding:0"><a href="javascript:assignColor('#666600')"><div class="csq"></div></a></td>
218
+ <td style="background-color:#666633;margin:0;padding:0"><a href="javascript:assignColor('#666633')"><div class="csq"></div></a></td>
219
+ <td style="background-color:#666666;margin:0;padding:0"><a href="javascript:assignColor('#666666')"><div class="csq"></div></a></td>
220
+ <td style="background-color:#666699;margin:0;padding:0"><a href="javascript:assignColor('#666699')"><div class="csq"></div></a></td>
221
+ <td style="background-color:#6666CC;margin:0;padding:0"><a href="javascript:assignColor('#6666CC')"><div class="csq"></div></a></td>
222
+ <td style="background-color:#6666FF;margin:0;padding:0"><a href="javascript:assignColor('#6666FF')"><div class="csq"></div></a></td>
223
+ <td style="background-color:#66CC00;margin:0;padding:0"><a href="javascript:assignColor('#66CC00')"><div class="csq"></div></a></td>
224
+ <td style="background-color:#66CC33;margin:0;padding:0"><a href="javascript:assignColor('#66CC33')"><div class="csq"></div></a></td>
225
+ <td style="background-color:#66CC66;margin:0;padding:0"><a href="javascript:assignColor('#66CC66')"><div class="csq"></div></a></td>
226
+ <td style="background-color:#66CC99;margin:0;padding:0"><a href="javascript:assignColor('#66CC99')"><div class="csq"></div></a></td>
227
+ <td style="background-color:#66CCCC;margin:0;padding:0"><a href="javascript:assignColor('#66CCCC')"><div class="csq"></div></a></td>
228
+ <td style="background-color:#66CCFF;margin:0;padding:0"><a href="javascript:assignColor('#66CCFF')"><div class="csq"></div></a></td>
229
+ </tr>
230
+ <tr>
231
+ <td style="background-color:#663300;margin:0;padding:0"><a href="javascript:assignColor('#663300')"><div class="csq"></div></a></td>
232
+ <td style="background-color:#663333;margin:0;padding:0"><a href="javascript:assignColor('#663333')"><div class="csq"></div></a></td>
233
+ <td style="background-color:#663366;margin:0;padding:0"><a href="javascript:assignColor('#663366')"><div class="csq"></div></a></td>
234
+ <td style="background-color:#663399;margin:0;padding:0"><a href="javascript:assignColor('#663399')"><div class="csq"></div></a></td>
235
+ <td style="background-color:#6633CC;margin:0;padding:0"><a href="javascript:assignColor('#6633CC')"><div class="csq"></div></a></td>
236
+ <td style="background-color:#6633FF;margin:0;padding:0"><a href="javascript:assignColor('#6633FF')"><div class="csq"></div></a></td>
237
+ <td style="background-color:#669900;margin:0;padding:0"><a href="javascript:assignColor('#669900')"><div class="csq"></div></a></td>
238
+ <td style="background-color:#669933;margin:0;padding:0"><a href="javascript:assignColor('#669933')"><div class="csq"></div></a></td>
239
+ <td style="background-color:#669966;margin:0;padding:0"><a href="javascript:assignColor('#669966')"><div class="csq"></div></a></td>
240
+ <td style="background-color:#669999;margin:0;padding:0"><a href="javascript:assignColor('#669999')"><div class="csq"></div></a></td>
241
+ <td style="background-color:#6699CC;margin:0;padding:0"><a href="javascript:assignColor('#6699CC')"><div class="csq"></div></a></td>
242
+ <td style="background-color:#6699FF;margin:0;padding:0"><a href="javascript:assignColor('#6699FF')"><div class="csq"></div></a></td>
243
+ <td style="background-color:#66FF00;margin:0;padding:0"><a href="javascript:assignColor('#66FF00')"><div class="csq"></div></a></td>
244
+ <td style="background-color:#66FF33;margin:0;padding:0"><a href="javascript:assignColor('#66FF33')"><div class="csq"></div></a></td>
245
+ <td style="background-color:#66FF66;margin:0;padding:0"><a href="javascript:assignColor('#66FF66')"><div class="csq"></div></a></td>
246
+ <td style="background-color:#66FF99;margin:0;padding:0"><a href="javascript:assignColor('#66FF99')"><div class="csq"></div></a></td>
247
+ <td style="background-color:#66FFCC;margin:0;padding:0"><a href="javascript:assignColor('#66FFCC')"><div class="csq"></div></a></td>
248
+ <td style="background-color:#66FFFF;margin:0;padding:0"><a href="javascript:assignColor('#66FFFF')"><div class="csq"></div></a></td>
249
+ </tr>
250
+ <tr>
251
+ <td style="background-color:#990000;margin:0;padding:0"><a href="javascript:assignColor('#990000')"><div class="csq"></div></a></td>
252
+ <td style="background-color:#990033;margin:0;padding:0"><a href="javascript:assignColor('#990033')"><div class="csq"></div></a></td>
253
+ <td style="background-color:#990066;margin:0;padding:0"><a href="javascript:assignColor('#990066')"><div class="csq"></div></a></td>
254
+ <td style="background-color:#990099;margin:0;padding:0"><a href="javascript:assignColor('#990099')"><div class="csq"></div></a></td>
255
+ <td style="background-color:#9900CC;margin:0;padding:0"><a href="javascript:assignColor('#9900CC')"><div class="csq"></div></a></td>
256
+ <td style="background-color:#9900FF;margin:0;padding:0"><a href="javascript:assignColor('#9900FF')"><div class="csq"></div></a></td>
257
+ <td style="background-color:#996600;margin:0;padding:0"><a href="javascript:assignColor('#996600')"><div class="csq"></div></a></td>
258
+ <td style="background-color:#996633;margin:0;padding:0"><a href="javascript:assignColor('#996633')"><div class="csq"></div></a></td>
259
+ <td style="background-color:#996666;margin:0;padding:0"><a href="javascript:assignColor('#996666')"><div class="csq"></div></a></td>
260
+ <td style="background-color:#996699;margin:0;padding:0"><a href="javascript:assignColor('#996699')"><div class="csq"></div></a></td>
261
+ <td style="background-color:#9966CC;margin:0;padding:0"><a href="javascript:assignColor('#9966CC')"><div class="csq"></div></a></td>
262
+ <td style="background-color:#9966FF;margin:0;padding:0"><a href="javascript:assignColor('#9966FF')"><div class="csq"></div></a></td>
263
+ <td style="background-color:#99CC00;margin:0;padding:0"><a href="javascript:assignColor('#99CC00')"><div class="csq"></div></a></td>
264
+ <td style="background-color:#99CC33;margin:0;padding:0"><a href="javascript:assignColor('#99CC33')"><div class="csq"></div></a></td>
265
+ <td style="background-color:#99CC66;margin:0;padding:0"><a href="javascript:assignColor('#99CC66')"><div class="csq"></div></a></td>
266
+ <td style="background-color:#99CC99;margin:0;padding:0"><a href="javascript:assignColor('#99CC99')"><div class="csq"></div></a></td>
267
+ <td style="background-color:#99CCCC;margin:0;padding:0"><a href="javascript:assignColor('#99CCCC')"><div class="csq"></div></a></td>
268
+ <td style="background-color:#99CCFF;margin:0;padding:0"><a href="javascript:assignColor('#99CCFF')"><div class="csq"></div></a></td>
269
+ </tr>
270
+ <tr>
271
+ <td style="background-color:#993300;margin:0;padding:0"><a href="javascript:assignColor('#993300')"><div class="csq"></div></a></td>
272
+ <td style="background-color:#993333;margin:0;padding:0"><a href="javascript:assignColor('#993333')"><div class="csq"></div></a></td>
273
+ <td style="background-color:#993366;margin:0;padding:0"><a href="javascript:assignColor('#993366')"><div class="csq"></div></a></td>
274
+ <td style="background-color:#993399;margin:0;padding:0"><a href="javascript:assignColor('#993399')"><div class="csq"></div></a></td>
275
+ <td style="background-color:#9933CC;margin:0;padding:0"><a href="javascript:assignColor('#9933CC')"><div class="csq"></div></a></td>
276
+ <td style="background-color:#9933FF;margin:0;padding:0"><a href="javascript:assignColor('#9933FF')"><div class="csq"></div></a></td>
277
+ <td style="background-color:#999900;margin:0;padding:0"><a href="javascript:assignColor('#999900')"><div class="csq"></div></a></td>
278
+ <td style="background-color:#999933;margin:0;padding:0"><a href="javascript:assignColor('#999933')"><div class="csq"></div></a></td>
279
+ <td style="background-color:#999966;margin:0;padding:0"><a href="javascript:assignColor('#999966')"><div class="csq"></div></a></td>
280
+ <td style="background-color:#999999;margin:0;padding:0"><a href="javascript:assignColor('#999999')"><div class="csq"></div></a></td>
281
+ <td style="background-color:#9999CC;margin:0;padding:0"><a href="javascript:assignColor('#9999CC')"><div class="csq"></div></a></td>
282
+ <td style="background-color:#9999FF;margin:0;padding:0"><a href="javascript:assignColor('#9999FF')"><div class="csq"></div></a></td>
283
+ <td style="background-color:#99FF00;margin:0;padding:0"><a href="javascript:assignColor('#99FF00')"><div class="csq"></div></a></td>
284
+ <td style="background-color:#99FF33;margin:0;padding:0"><a href="javascript:assignColor('#99FF33')"><div class="csq"></div></a></td>
285
+ <td style="background-color:#99FF66;margin:0;padding:0"><a href="javascript:assignColor('#99FF66')"><div class="csq"></div></a></td>
286
+ <td style="background-color:#99FF99;margin:0;padding:0"><a href="javascript:assignColor('#99FF99')"><div class="csq"></div></a></td>
287
+ <td style="background-color:#99FFCC;margin:0;padding:0"><a href="javascript:assignColor('#99FFCC')"><div class="csq"></div></a></td>
288
+ <td style="background-color:#99FFFF;margin:0;padding:0"><a href="javascript:assignColor('#99FFFF')"><div class="csq"></div></a></td>
289
+ </tr>
290
+ <tr>
291
+ <td style="background-color:#CC0000;margin:0;padding:0"><a href="javascript:assignColor('#CC0000')"><div class="csq"></div></a></td>
292
+ <td style="background-color:#CC0033;margin:0;padding:0"><a href="javascript:assignColor('#CC0033')"><div class="csq"></div></a></td>
293
+ <td style="background-color:#CC0066;margin:0;padding:0"><a href="javascript:assignColor('#CC0066')"><div class="csq"></div></a></td>
294
+ <td style="background-color:#CC0099;margin:0;padding:0"><a href="javascript:assignColor('#CC0099')"><div class="csq"></div></a></td>
295
+ <td style="background-color:#CC00CC;margin:0;padding:0"><a href="javascript:assignColor('#CC00CC')"><div class="csq"></div></a></td>
296
+ <td style="background-color:#CC00FF;margin:0;padding:0"><a href="javascript:assignColor('#CC00FF')"><div class="csq"></div></a></td>
297
+ <td style="background-color:#CC6600;margin:0;padding:0"><a href="javascript:assignColor('#CC6600')"><div class="csq"></div></a></td>
298
+ <td style="background-color:#CC6633;margin:0;padding:0"><a href="javascript:assignColor('#CC6633')"><div class="csq"></div></a></td>
299
+ <td style="background-color:#CC6666;margin:0;padding:0"><a href="javascript:assignColor('#CC6666')"><div class="csq"></div></a></td>
300
+ <td style="background-color:#CC6699;margin:0;padding:0"><a href="javascript:assignColor('#CC6699')"><div class="csq"></div></a></td>
301
+ <td style="background-color:#CC66CC;margin:0;padding:0"><a href="javascript:assignColor('#CC66CC')"><div class="csq"></div></a></td>
302
+ <td style="background-color:#CC66FF;margin:0;padding:0"><a href="javascript:assignColor('#CC66FF')"><div class="csq"></div></a></td>
303
+ <td style="background-color:#CCCC00;margin:0;padding:0"><a href="javascript:assignColor('#CCCC00')"><div class="csq"></div></a></td>
304
+ <td style="background-color:#CCCC33;margin:0;padding:0"><a href="javascript:assignColor('#CCCC33')"><div class="csq"></div></a></td>
305
+ <td style="background-color:#CCCC66;margin:0;padding:0"><a href="javascript:assignColor('#CCCC66')"><div class="csq"></div></a></td>
306
+ <td style="background-color:#CCCC99;margin:0;padding:0"><a href="javascript:assignColor('#CCCC99')"><div class="csq"></div></a></td>
307
+ <td style="background-color:#CCCCCC;margin:0;padding:0"><a href="javascript:assignColor('#CCCCCC')"><div class="csq"></div></a></td>
308
+ <td style="background-color:#CCCCFF;margin:0;padding:0"><a href="javascript:assignColor('#CCCCFF')"><div class="csq"></div></a></td>
309
+ </tr>
310
+ <tr>
311
+ <td style="background-color:#CC3300;margin:0;padding:0"><a href="javascript:assignColor('#CC3300')"><div class="csq"></div></a></td>
312
+ <td style="background-color:#CC3333;margin:0;padding:0"><a href="javascript:assignColor('#CC3333')"><div class="csq"></div></a></td>
313
+ <td style="background-color:#CC3366;margin:0;padding:0"><a href="javascript:assignColor('#CC3366')"><div class="csq"></div></a></td>
314
+ <td style="background-color:#CC3399;margin:0;padding:0"><a href="javascript:assignColor('#CC3399')"><div class="csq"></div></a></td>
315
+ <td style="background-color:#CC33CC;margin:0;padding:0"><a href="javascript:assignColor('#CC33CC')"><div class="csq"></div></a></td>
316
+ <td style="background-color:#CC33FF;margin:0;padding:0"><a href="javascript:assignColor('#CC33FF')"><div class="csq"></div></a></td>
317
+ <td style="background-color:#CC9900;margin:0;padding:0"><a href="javascript:assignColor('#CC9900')"><div class="csq"></div></a></td>
318
+ <td style="background-color:#CC9933;margin:0;padding:0"><a href="javascript:assignColor('#CC9933')"><div class="csq"></div></a></td>
319
+ <td style="background-color:#CC9966;margin:0;padding:0"><a href="javascript:assignColor('#CC9966')"><div class="csq"></div></a></td>
320
+ <td style="background-color:#CC9999;margin:0;padding:0"><a href="javascript:assignColor('#CC9999')"><div class="csq"></div></a></td>
321
+ <td style="background-color:#CC99CC;margin:0;padding:0"><a href="javascript:assignColor('#CC99CC')"><div class="csq"></div></a></td>
322
+ <td style="background-color:#CC99FF;margin:0;padding:0"><a href="javascript:assignColor('#CC99FF')"><div class="csq"></div></a></td>
323
+ <td style="background-color:#CCFF00;margin:0;padding:0"><a href="javascript:assignColor('#CCFF00')"><div class="csq"></div></a></td>
324
+ <td style="background-color:#CCFF33;margin:0;padding:0"><a href="javascript:assignColor('#CCFF33')"><div class="csq"></div></a></td>
325
+ <td style="background-color:#CCFF66;margin:0;padding:0"><a href="javascript:assignColor('#CCFF66')"><div class="csq"></div></a></td>
326
+ <td style="background-color:#CCFF99;margin:0;padding:0"><a href="javascript:assignColor('#CCFF99')"><div class="csq"></div></a></td>
327
+ <td style="background-color:#CCFFCC;margin:0;padding:0"><a href="javascript:assignColor('#CCFFCC')"><div class="csq"></div></a></td>
328
+ <td style="background-color:#CCFFFF;margin:0;padding:0"><a href="javascript:assignColor('#CCFFFF')"><div class="csq"></div></a></td>
329
+ </tr>
330
+ <tr>
331
+ <td style="background-color:#FF0000;margin:0;padding:0"><a href="javascript:assignColor('#FF0000')"><div class="csq"></div></a></td>
332
+ <td style="background-color:#FF0033;margin:0;padding:0"><a href="javascript:assignColor('#FF0033')"><div class="csq"></div></a></td>
333
+ <td style="background-color:#FF0066;margin:0;padding:0"><a href="javascript:assignColor('#FF0066')"><div class="csq"></div></a></td>
334
+ <td style="background-color:#FF0099;margin:0;padding:0"><a href="javascript:assignColor('#FF0099')"><div class="csq"></div></a></td>
335
+ <td style="background-color:#FF00CC;margin:0;padding:0"><a href="javascript:assignColor('#FF00CC')"><div class="csq"></div></a></td>
336
+ <td style="background-color:#FF00FF;margin:0;padding:0"><a href="javascript:assignColor('#FF00FF')"><div class="csq"></div></a></td>
337
+ <td style="background-color:#FF6600;margin:0;padding:0"><a href="javascript:assignColor('#FF6600')"><div class="csq"></div></a></td>
338
+ <td style="background-color:#FF6633;margin:0;padding:0"><a href="javascript:assignColor('#FF6633')"><div class="csq"></div></a></td>
339
+ <td style="background-color:#FF6666;margin:0;padding:0"><a href="javascript:assignColor('#FF6666')"><div class="csq"></div></a></td>
340
+ <td style="background-color:#FF6699;margin:0;padding:0"><a href="javascript:assignColor('#FF6699')"><div class="csq"></div></a></td>
341
+ <td style="background-color:#FF66CC;margin:0;padding:0"><a href="javascript:assignColor('#FF66CC')"><div class="csq"></div></a></td>
342
+ <td style="background-color:#FF66FF;margin:0;padding:0"><a href="javascript:assignColor('#FF66FF')"><div class="csq"></div></a></td>
343
+ <td style="background-color:#FFCC00;margin:0;padding:0"><a href="javascript:assignColor('#FFCC00')"><div class="csq"></div></a></td>
344
+ <td style="background-color:#FFCC33;margin:0;padding:0"><a href="javascript:assignColor('#FFCC33')"><div class="csq"></div></a></td>
345
+ <td style="background-color:#FFCC66;margin:0;padding:0"><a href="javascript:assignColor('#FFCC66')"><div class="csq"></div></a></td>
346
+ <td style="background-color:#FFCC99;margin:0;padding:0"><a href="javascript:assignColor('#FFCC99')"><div class="csq"></div></a></td>
347
+ <td style="background-color:#FFCCCC;margin:0;padding:0"><a href="javascript:assignColor('#FFCCCC')"><div class="csq"></div></a></td>
348
+ <td style="background-color:#FFCCFF;margin:0;padding:0"><a href="javascript:assignColor('#FFCCFF')"><div class="csq"></div></a></td>
349
+ </tr>
350
+ <tr>
351
+ <td style="background-color:#FF3300;margin:0;padding:0"><a href="javascript:assignColor('#FF3300')"><div class="csq"></div></a></td>
352
+ <td style="background-color:#FF3333;margin:0;padding:0"><a href="javascript:assignColor('#FF3333')"><div class="csq"></div></a></td>
353
+ <td style="background-color:#FF3366;margin:0;padding:0"><a href="javascript:assignColor('#FF3366')"><div class="csq"></div></a></td>
354
+ <td style="background-color:#FF3399;margin:0;padding:0"><a href="javascript:assignColor('#FF3399')"><div class="csq"></div></a></td>
355
+ <td style="background-color:#FF33CC;margin:0;padding:0"><a href="javascript:assignColor('#FF33CC')"><div class="csq"></div></a></td>
356
+ <td style="background-color:#FF33FF;margin:0;padding:0"><a href="javascript:assignColor('#FF33FF')"><div class="csq"></div></a></td>
357
+ <td style="background-color:#FF9900;margin:0;padding:0"><a href="javascript:assignColor('#FF9900')"><div class="csq"></div></a></td>
358
+ <td style="background-color:#FF9933;margin:0;padding:0"><a href="javascript:assignColor('#FF9933')"><div class="csq"></div></a></td>
359
+ <td style="background-color:#FF9966;margin:0;padding:0"><a href="javascript:assignColor('#FF9966')"><div class="csq"></div></a></td>
360
+ <td style="background-color:#FF9999;margin:0;padding:0"><a href="javascript:assignColor('#FF9999')"><div class="csq"></div></a></td>
361
+ <td style="background-color:#FF99CC;margin:0;padding:0"><a href="javascript:assignColor('#FF99CC')"><div class="csq"></div></a></td>
362
+ <td style="background-color:#FF99FF;margin:0;padding:0"><a href="javascript:assignColor('#FF99FF')"><div class="csq"></div></a></td>
363
+ <td style="background-color:#FFFF00;margin:0;padding:0"><a href="javascript:assignColor('#FFFF00')"><div class="csq"></div></a></td>
364
+ <td style="background-color:#FFFF33;margin:0;padding:0"><a href="javascript:assignColor('#FFFF33')"><div class="csq"></div></a></td>
365
+ <td style="background-color:#FFFF66;margin:0;padding:0"><a href="javascript:assignColor('#FFFF66')"><div class="csq"></div></a></td>
366
+ <td style="background-color:#FFFF99;margin:0;padding:0"><a href="javascript:assignColor('#FFFF99')"><div class="csq"></div></a></td>
367
+ <td style="background-color:#FFFFCC;margin:0;padding:0"><a href="javascript:assignColor('#FFFFCC')"><div class="csq"></div></a></td>
368
+ <td style="background-color:#FFFFFF;margin:0;padding:0"><a href="javascript:assignColor('#FFFFFF')"><div class="csq"></div></a></td>
369
+ </tr>
370
+ </table>
371
+ <label for="s2w_radioColor1"><input type="radio" name="s2w_radioColor" value="body" id="s2w_radioColor1" checked="checked" /><input type="text" name="s2w_bodyColor" maxlength="7" value="<?php echo $s2w_bg; ?>" onkeyup="document.forms['widget-controls'].s2w_radioColor[0].checked=true;assignColor(this.value)" style="width:60px;" /> Body</label><br /><br />
372
+ <label for="s2w_radioColor2"><input type="radio" name="s2w_radioColor" value="text" id="s2w_radioColor2" /><input type="text" name="s2w_textColor" maxlength="7" value="<?php echo $s2w_fg; ?>" onkeyup="document.forms['widget-controls'].s2w_radioColor[1].checked=true;assignColor(this.value)" style="width:60px;" /> Text</label><br />
373
+ </fieldset>
374
+
375
+ <fieldset>
376
+ <legend>Width, Height and Font Size</legend>
377
+ <table style="border:0; padding:0; margin:0 0 12px 0; border-collapse:collapse;" align="center">
378
+ <tr><td>Width</td>
379
+ <td><input type="text" name="width" id="width" value="<?php echo $s2w_width; ?>" onkeyup="assignSize(this.value, this.name)" /></td></tr>
380
+ <tr><td>Height</td>
381
+ <td><input type="text" name="height" id="height" value="<?php echo $s2w_height; ?>" onkeyup="assignSize(this.value, this.name)" /></td></tr>
382
+ <tr><td>Font</td>
383
+ <td><input type="text" name="font" id="font" value="<?php echo $s2w_font; ?>" onkeyup="assignSize(this.value, this.name)" /></td></tr>
384
+ </table>
385
+ </fieldset>
386
+
387
+ <fieldset style="text-align:center;">
388
+ <legend>Subscriber Counter Button Preview</legend>
389
+ <center><div id="countPreviewDiv">30</div></center>
390
+ </fieldset>
391
+
392
+ <input type="hidden" id="s2counter" name="s2counter" value="1" />
393
+
394
+ </div>
395
+ <?php
396
+ }
397
+
398
+ /**
399
+ Actually register the Widget into the WordPress Widget API
400
+ */
401
+ register_sidebar_widget('Subscribe2 Counter', 'widget_s2counter');
402
+ register_widget_control('Subscribe2 Counter', 'widget_s2counter_control');
403
+ }
404
+
405
+ // Run our code later in case this loads prior to any required plugins.
406
+ add_action('plugins_loaded', 'widget_s2counter_init');
407
+ ?>
include/options.php CHANGED
@@ -14,6 +14,10 @@ if (!isset($this->subscribe2_options['autoformat'])) {
14
  $this->subscribe2_options['autoformat'] = "text";
15
  } // option for default auto-subscription email format
16
 
 
 
 
 
17
  if (!isset($this->subscribe2_options['autosub_def'])) {
18
  $this->subscribe2_options['autosub_def'] = "yes";
19
  } // option for user default auto-subscription to new categories
@@ -22,10 +26,18 @@ if(!isset($this->subscribe2_options['bcclimit'])) {
22
  $this->subscribe2_options['bcclimit'] = 0;
23
  } // option for default bcc limit on email notifications
24
 
 
 
 
 
25
  if(!isset($this->subscribe2_options['s2page'])) {
26
  $this->subscribe2_options['s2page'] = 0;
27
  } // option for default WordPress page for Subscribe2 to use
28
 
 
 
 
 
29
  if (!isset($this->subscribe2_options['pages'])) {
30
  $this->subscribe2_options['pages'] = "no";
31
  } // option for sending notifications for WordPress pages
@@ -50,11 +62,14 @@ if (!isset($this->subscribe2_options['sender'])) {
50
  $this->subscribe2_options['sender'] = "author";
51
  } // option for email notification sender
52
 
53
- // reg_override : allow registered users to subscribed to excluded cats
54
  if (!isset($this->subscribe2_options['reg_override'])) {
55
  $this->subscribe2_options['reg_override'] = "1";
56
  } // option for excluded categories to be overriden for registered users
57
 
 
 
 
 
58
  if (!isset($this->subscribe2_options['show_button'])) {
59
  $this->subscribe2_options['show_button'] = "1";
60
  } // option to show Subscribe2 button on Write page
@@ -63,6 +78,10 @@ if (!isset($this->subscribe2_options['widget'])) {
63
  $this->subscribe2_options['widget'] = "0";
64
  } // option to enable Subscribe2 Widget
65
 
 
 
 
 
66
  if (!isset($this->subscribe2_options['barred'])) {
67
  $this->subscribe2_options['barred'] = '';
68
  } // option containing domains barred from public registration
14
  $this->subscribe2_options['autoformat'] = "text";
15
  } // option for default auto-subscription email format
16
 
17
+ if (!isset($this->subscribe2_options['show_autosub'])) {
18
+ $this->subscribe2_options['show_autosub'] = "yes";
19
+ } // option to display auto-subscription option to registered users
20
+
21
  if (!isset($this->subscribe2_options['autosub_def'])) {
22
  $this->subscribe2_options['autosub_def'] = "yes";
23
  } // option for user default auto-subscription to new categories
26
  $this->subscribe2_options['bcclimit'] = 0;
27
  } // option for default bcc limit on email notifications
28
 
29
+ if (!isset($this->subscribe2_options['admin_email'])) {
30
+ $this->subscribe2_options['admin_email'] = "subs";
31
+ } // option for sending new subscriber notifications to admins
32
+
33
  if(!isset($this->subscribe2_options['s2page'])) {
34
  $this->subscribe2_options['s2page'] = 0;
35
  } // option for default WordPress page for Subscribe2 to use
36
 
37
+ if (!isset($this->subscribe2_options['pages'])) {
38
+ $this->subscribe2_options['bcclimit'] = "0";
39
+ } // option for restricting the number of recipients per email notification
40
+
41
  if (!isset($this->subscribe2_options['pages'])) {
42
  $this->subscribe2_options['pages'] = "no";
43
  } // option for sending notifications for WordPress pages
62
  $this->subscribe2_options['sender'] = "author";
63
  } // option for email notification sender
64
 
 
65
  if (!isset($this->subscribe2_options['reg_override'])) {
66
  $this->subscribe2_options['reg_override'] = "1";
67
  } // option for excluded categories to be overriden for registered users
68
 
69
+ if(!isset($this->subscribe2_options['show_meta'])) {
70
+ $this->subscribe2_options['show_meta'] = "0";
71
+ } // option to display link to subscribe2 page from 'meta'
72
+
73
  if (!isset($this->subscribe2_options['show_button'])) {
74
  $this->subscribe2_options['show_button'] = "1";
75
  } // option to show Subscribe2 button on Write page
78
  $this->subscribe2_options['widget'] = "0";
79
  } // option to enable Subscribe2 Widget
80
 
81
+ if (!isset($this->subscribe2_options['entries'])) {
82
+ $this->subscribe2_options['entries'] = 25;
83
+ } // option for the number of subscribers displayed on each page
84
+
85
  if (!isset($this->subscribe2_options['barred'])) {
86
  $this->subscribe2_options['barred'] = '';
87
  } // option containing domains barred from public registration
include/s2_edit.js CHANGED
@@ -2,6 +2,7 @@ jQuery(document).ready(function() {
2
  // hide our span before page loads
3
  jQuery('#s2bcc_2').hide();
4
  jQuery('#s2page_2').hide();
 
5
  });
6
 
7
  //show span on clicking the edit link
2
  // hide our span before page loads
3
  jQuery('#s2bcc_2').hide();
4
  jQuery('#s2page_2').hide();
5
+ jQuery('#s2entries_2').hide();
6
  });
7
 
8
  //show span on clicking the edit link
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.11
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.11');
35
  define('S2PATH', trailingslashit(dirname(__FILE__)));
36
 
37
  // Pre-2.6 compatibility
@@ -117,7 +117,7 @@ class s2class {
117
  add_action("admin_print_scripts-$s2options", array(&$this, 'option_form_js'));
118
  add_filter('plugin_action_links', array(&$this, 'plugin_action'), -10, 2);
119
 
120
- $s2user = add_users_page(__('Your Subscriptions', 'subscribe2'), __('Your Subscriptions', 'subscribe2'), "read", __FILE__, array(&$this, 'user_menu'));
121
  add_action("admin_print_scripts-$s2user", array(&$this, 'checkbox_form_js'));
122
 
123
  add_submenu_page('post-new.php', __('Mail Subscribers', 'subscribe2'), __('Mail Subscribers', 'subscribe2'), "publish_posts", __FILE__, array(&$this, 'write_menu'));
@@ -246,7 +246,7 @@ class s2class {
246
  */
247
  function mail ($recipients = array(), $subject = '', $message = '', $type='text') {
248
  if ( (empty($recipients)) || ('' == $message) ) { return; }
249
-
250
  // Set sender details
251
  if ('' == $this->myname) {
252
  $admin = $this->get_userdata();
@@ -263,7 +263,8 @@ class s2class {
263
  // To send HTML mail, the Content-Type header must be set
264
  $headers .= "MIME-Version: 1.0\n";
265
  $headers .= "Content-Type: " . get_bloginfo('html_type') . "; charset=\"". get_bloginfo('charset') . "\"\n";
266
- $mailtext = "<html><head><title>" . $subject . "</title></head><body>" . $message . "</body></html>";
 
267
  } else {
268
  $headers .= "MIME-Version: 1.0\n";
269
  $headers .= "Content-Type: text/plain; charset=\"". get_bloginfo('charset') . "\"\n";
@@ -277,6 +278,7 @@ class s2class {
277
 
278
  // Construct BCC headers for sending or send individual emails
279
  $bcc = '';
 
280
  if ($this->subscribe2_options['bcclimit'] == 1) {
281
  // BCCLimit is 1 so send individual emails
282
  foreach ($recipients as $recipient) {
@@ -670,9 +672,6 @@ class s2class {
670
  */
671
  function remind($emails = '') {
672
  if ('' == $emails) { return false; }
673
-
674
- $admin = $this->get_userdata();
675
- $this->myname = $admin->display_name;
676
 
677
  $recipients = explode(",", $emails);
678
  if (!is_array($recipients)) { $recipients = (array)$recipients; }
@@ -719,19 +718,34 @@ class s2class {
719
  return $this->no_such_email;
720
  }
721
 
 
 
 
722
  if ('1' == $action) {
723
  // make this subscription active
724
- $this->activate();
725
  $this->message = $this->added;
726
- $subject = '[' . get_option('blogname') . '] ' . __('New subscriber', 'subscribe2');
727
- $message = $this->email . " " . __('subscribed to email notifications!', 'subscribe2');
728
- $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'");
729
- $this->mail($recipients, $subject, $message);
 
 
 
 
 
730
  $this->filtered = 1;
731
  } elseif ('0' == $action) {
732
  // remove this subscriber
733
- $this->delete();
734
  $this->message = $this->deleted;
 
 
 
 
 
 
 
 
 
735
  $this->filtered = 1;
736
  }
737
 
@@ -1095,8 +1109,10 @@ class s2class {
1095
  check_admin_referer('subscribe2-manage_subscribers' . $s2nonce);
1096
  if ($_POST['addresses']) {
1097
  foreach (preg_split ("/[\s,]+/", $_POST['addresses']) as $email) {
1098
- if (is_email($email)) {
1099
  $this->activate($email);
 
 
1100
  }
1101
  }
1102
  $_POST['what'] = 'confirmed';
@@ -1232,11 +1248,11 @@ class s2class {
1232
  // Displays a page number strip - adapted from code in Akismet
1233
  $args['what'] = $what;
1234
  $total_subscribers = count($subscribers);
1235
- $total_pages = ceil($total_subscribers / 25);
1236
  $strip = '';
1237
  if ( $page > 1 ) {
1238
  $args['s2page'] = $page - 1;
1239
- $strip .= '<a class="prev" href="' . clean_url(add_query_arg( $args )) . '">&laquo; '. __('Previous Page', 'subscribe2') .'</a>' . "\n";
1240
  }
1241
  if ( $total_pages > 1 ) {
1242
  for ( $page_num = 1; $page_num <= $total_pages; $page_num++ ) {
@@ -1254,26 +1270,28 @@ class s2class {
1254
  }
1255
  }
1256
  }
1257
- if ( ( $page ) * 25 < $total_subscribers ) {
1258
  $args['s2page'] = $page + 1;
1259
  $strip .= "<a class=\"next\" href=\"" . clean_url(add_query_arg($args)) . "\">". __('Next Page', 'subscribe2') . " &raquo;</a>\n";
1260
  }
1261
  }
1262
 
1263
  // show our form
1264
- echo "<form method=\"post\" action=\"\">\r\n";
1265
  echo "<div class=\"wrap\">";
1266
- echo "<h2>" . __('Subscribe Addresses', 'subscribe2') . "</h2>\r\n";
 
1267
  if (function_exists('wp_nonce_field')) {
1268
  wp_nonce_field('subscribe2-manage_subscribers' . $s2nonce);
1269
  }
 
1270
  echo "<p>" . __('Enter addresses, one per line or comma-separated', 'subscribe2') . "<br />\r\n";
1271
  echo "<textarea rows=\"2\" cols=\"80\" name=\"addresses\"></textarea></p>\r\n";
1272
  echo "<input type=\"hidden\" name=\"s2_admin\" />\r\n";
1273
- echo "<p class=\"submit\"><input type=\"submit\" name=\"subscribe\" value=\"" . __('Subscribe', 'subscribe2') . "\"/></p>\r\n";
 
1274
 
1275
  // subscriber lists
1276
- echo "<h2>" . __('Subscribers', 'subscribe2') . "</h2>\r\n";
1277
  echo "<br />";
1278
  $this->display_subscriber_dropdown($what, __('Filter', 'subscribe2'));
1279
  // show the selected subscribers
@@ -1288,7 +1306,7 @@ class s2class {
1288
  echo "<input type=\"submit\" name=\"csv\" value=\"" . __('Save Emails to CSV File', 'subscribe2') . "\" class=\"button\" /></td></tr></table>\r\n";
1289
  if ($reminderform) {
1290
  echo "<input type=\"hidden\" name=\"reminderemails\" value=\"" . $reminderemails . "\" />\r\n";
1291
- echo "<p class=\"submit\" align=\"right\" style=\"border-top:none;\"><input type=\"submit\" name=\"reminder\" value=\"" . __('Send Reminder Email', 'subscribe2') . "\" /></p>\r\n";
1292
  }
1293
  echo "<table width=\"100%\"><tr><td valign=\"bottom\">" . $strip . "</td>\r\n";
1294
  echo "<td align=\"right\"><p class=\"submit\" align=\"right\" style=\"border-top: none;\"><input type=\"submit\" name=\"process\" value=\"" . __('Process', 'subscribe2') . "\" /></p>\r\n";
@@ -1297,7 +1315,7 @@ class s2class {
1297
 
1298
  echo "<table cellpadding=\"2\" cellspacing=\"2\" width=\"100%\">";
1299
  if (!empty($subscribers)) {
1300
- $subscriber_chunks = array_chunk($subscribers, 25);
1301
  $chunk = $page - 1;
1302
  $subscribers = $subscriber_chunks[$chunk];
1303
  echo "<tr class=\"$alternate\">\r\n";
@@ -1323,6 +1341,9 @@ class s2class {
1323
  echo " align=\"left\" colspan=\"4\">";
1324
  }
1325
  echo "<a href=\"mailto:" . $subscriber . "\">" . $subscriber . "</a>\r\n";
 
 
 
1326
  if (in_array($subscriber, $unconfirmed) || in_array($subscriber, $confirmed) ) {
1327
  echo "(" . $this->signup_date($subscriber) . ")</td>\r\n";
1328
  echo "<td align=\"center\">\r\n";
@@ -1387,28 +1408,12 @@ class s2class {
1387
  $this->reset();
1388
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>$this->options_reset</strong></p></div>";
1389
  } elseif ($_POST['submit']) {
1390
- // excluded categories
1391
- if (!empty($_POST['category'])) {
1392
- $exclude_cats = implode(',', $_POST['category']);
1393
- } else {
1394
- $exclude_cats = '';
1395
- }
1396
- $this->subscribe2_options['exclude'] = $exclude_cats;
1397
- // allow override?
1398
- (isset($_POST['reg_override'])) ? $override = '1' : $override = '0';
1399
- $this->subscribe2_options['reg_override'] = $override;
1400
-
1401
- // show button?
1402
- ($_POST['show_button'] == '1') ? $showbutton = '1' : $showbutton = '0';
1403
- $this->subscribe2_options['show_button'] = $showbutton;
1404
-
1405
- // show widget in Presentation->Widgets
1406
- ($_POST['widget'] == '1') ? $showwidget = '1' : $showwidget = '0';
1407
- $this->subscribe2_options['widget'] = $showwidget;
1408
-
1409
  // BCClimit
1410
- $this->subscribe2_options['bcclimit'] = $_POST['bcc'];
1411
- $this->subscribe2_options['s2page'] = $_POST['page'];
 
 
 
1412
 
1413
  // send as author or admin?
1414
  $sender = 'author';
@@ -1455,10 +1460,44 @@ class s2class {
1455
  $this->subscribe2_options['confirm_email'] = $_POST['confirm_email'];
1456
  $this->subscribe2_options['remind_email'] = $_POST['remind_email'];
1457
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1458
  //automatic subscription
1459
  $this->subscribe2_options['autosub'] = $_POST['autosub'];
1460
  $this->subscribe2_options['wpregdef'] = $_POST['wpregdef'];
1461
  $this->subscribe2_options['autoformat'] = $_POST['autoformat'];
 
1462
  $this->subscribe2_options['autosub_def'] = $_POST['autosub_def'];
1463
 
1464
  //barred domains
@@ -1470,31 +1509,48 @@ class s2class {
1470
  }
1471
  // show our form
1472
  echo "<div class=\"wrap\">";
 
1473
  echo "<form method=\"post\" action=\"\">\r\n";
1474
  if (function_exists('wp_nonce_field')) {
1475
  wp_nonce_field('subscribe2-options_subscribers' . $s2nonce);
1476
  }
1477
  echo "<input type=\"hidden\" name=\"s2_admin\" value=\"options\" />\r\n";
1478
- echo "<h2>" . __('Delivery Options', 'subscribe2') . ":</h2>\r\n";
1479
- echo "<p>";
1480
  echo "<input type=\"hidden\" id=\"jsbcc\" value=\"" . $this->subscribe2_options['bcclimit'] . "\" />";
1481
  echo "<input type=\"hidden\" id=\"jspage\" value=\"" . $this->subscribe2_options['s2page'] . "\" />";
 
1482
 
 
 
 
1483
  echo __('Restrict the number of recpients per email to (0 for unlimited)', 'subscribe2') . ': ';
1484
  echo "<span id=\"s2bcc_1\"><span id=\"s2bcc\" style=\"background-color: #FFFBCC\">" . $this->subscribe2_options['bcclimit'] . "</span> ";
1485
- echo "<a href=\"#\" onclick=\"s2_show('bcc')\">" . __('Edit', 'subscribe2') . "</a></span>\n";
1486
  echo "<span id=\"s2bcc_2\">\r\n";
1487
  echo "<input type=\"text\" name=\"bcc\" value=\"" . $this->subscribe2_options['bcclimit'] . "\" size=\"3\" />\r\n";
1488
- echo "<a href=\"#\" onclick=\"s2_update('bcc');\">". __('Update', 'subscribe2') . "</a>\n";
1489
- echo "<a href=\"#\" onclick=\"s2_revert('bcc');\">". __('Revert', 'subscribe2') . "</a></span>\n";
1490
 
1491
- echo "<br /><br />" . __('Set default Subscribe2 page as ID', 'subscribe2') . ': ';
1492
- echo "<span id=\"s2page_1\"><span id=\"s2page\" style=\"background-color: #FFFBCC\">" . $this->subscribe2_options['s2page'] . "</span> ";
1493
- echo "<a href=\"#\" onclick=\"s2_show('page')\">" . __('Edit', 'subscribe2') . "</a></span>\n";
1494
- echo "<span id=\"s2page_2\">\r\n";
1495
- echo "<input type=\"text\" name=\"page\" value=\"" . $this->subscribe2_options['s2page'] . "\" size=\"3\" />\r\n";
1496
- echo "<a href=\"#\" onclick=\"s2_update('page');\">". __('Update', 'subscribe2') . "</a>\n";
1497
- echo "<a href=\"#\" onclick=\"s2_revert('page');\">". __('Revert', 'subscribe2') . "</a></span>\n";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1498
 
1499
  echo "<br /><br />" . __('Send Emails for Pages', 'subscribe2') . ': ';
1500
  echo "<input type=\"radio\" name=\"pages\" value=\"yes\"";
@@ -1545,6 +1601,8 @@ class s2class {
1545
  $this->display_digest_choices();
1546
  }
1547
  echo "</p>";
 
 
1548
  echo "<h2>" . __('Email Templates', 'subscribe2') . "</h2>\r\n";
1549
  echo"<br />";
1550
  echo "<table width=\"100%\" cellspacing=\"2\" cellpadding=\"1\" class=\"editform\">\r\n";
@@ -1559,6 +1617,7 @@ class s2class {
1559
  echo "<dt><b>BLOGLINK</b></dt><dd>" . get_bloginfo('url') . "</dd>\r\n";
1560
  echo "<dt><b>TITLE</b></dt><dd>" . __("the post's title<br />(<i>for per-post emails only</i>)", 'subscribe2') . "</dd>\r\n";
1561
  echo "<dt><b>POST</b></dt><dd>" . __("the excerpt or the entire post<br />(<i>based on the subscriber's preferences</i>)", 'subscribe2') . "</dd>\r\n";
 
1562
  echo "<dt><b>TABLE</b></dt><dd>" . __("a list of post titles<br />(<i>for digest emails only</i>)", 'subscribe2') . "</dd>\r\n";
1563
  echo "<dt><b>PERMALINK</b></dt><dd>" . __("the post's permalink<br />(<i>for per-post emails only</i>)", 'subscribe2') . "</dd>\r\n";
1564
  echo "<dt><b>MYNAME</b></dt><dd>" . __("the admin or post author's name", 'subscribe2') . "</dd>\r\n";
@@ -1585,10 +1644,37 @@ class s2class {
1585
  echo " checked=\"checked\"";
1586
  }
1587
  echo " /> " . __('Allow registered users to subscribe to excluded categories?', 'subscribe2') . "</center><br />\r\n";
1588
-
1589
- // show button in QuickTags
1590
- echo "<h2>" . __('Writing Options', 'subscribe2') . "</h2>\r\n";
1591
  echo"<p>";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1592
  echo "<input type=\"checkbox\" name=\"show_button\" value=\"1\"";
1593
  if ('1' == $this->subscribe2_options['show_button']) {
1594
  echo " checked=\"checked\"";
@@ -1649,6 +1735,17 @@ class s2class {
1649
  echo "checked=\"checked\" ";
1650
  }
1651
  echo "/> " . __('Plain Text - Excerpt', 'subscribe2') . " <br /><br />";
 
 
 
 
 
 
 
 
 
 
 
1652
  echo __('Auto Subscribe me to new categories is checked by default', 'subscribe2') . ": <br />\r\n";
1653
  echo "<input type=\"radio\" name=\"autosub_def\" value=\"yes\"";
1654
  if ('yes' == $this->subscribe2_options['autosub_def']) {
@@ -1691,7 +1788,12 @@ class s2class {
1691
  function user_menu() {
1692
  global $user_ID, $s2nonce, $wp_version, $wpmu_version;
1693
 
1694
- get_currentuserinfo();
 
 
 
 
 
1695
 
1696
  // was anything POSTed?
1697
  if ( (isset($_POST['s2_admin'])) && ('user' == $_POST['s2_admin']) ) {
@@ -1773,6 +1875,10 @@ class s2class {
1773
  // show our form
1774
  echo "<div class=\"wrap\">";
1775
  echo "<h2>" . __('Notification Settings', 'subscribe2') . "</h2>\r\n";
 
 
 
 
1776
  echo "<form method=\"post\" action=\"\">";
1777
  echo "<p>";
1778
  if (function_exists('wp_nonce_field')) {
@@ -1802,18 +1908,20 @@ class s2class {
1802
  echo " /> " . $value . "&nbsp;&nbsp;";
1803
  }
1804
  echo "<br /><span style=\"color: red;line-height: 300%;\">" . __('Note: HTML format will always deliver the full post', 'subscribe2') . ".</span><br />\r\n";
1805
- echo __('Automatically subscribe me to newly created categories', 'subscribe2') . ': &nbsp;&nbsp;';
1806
- echo "<input type=\"radio\" name=\"new_category\" value=\"yes\" ";
1807
- if ('yes' == get_usermeta($user_ID, 's2_autosub')) {
1808
- echo "checked=\"checked\" ";
1809
- }
1810
- echo "/> " . __('Yes', 'subscribe2') . "&nbsp;&nbsp;";
1811
- echo "<input type=\"radio\" name=\"new_category\" value=\"no\" ";
1812
- if ('no' == get_usermeta($user_ID, 's2_autosub')) {
1813
- echo "checked=\"checked\" ";
 
 
 
 
1814
  }
1815
- echo "/> " . __('No', 'subscribe2') . "<br /><br />";
1816
- echo "</p>";
1817
 
1818
  // subscribed categories
1819
  echo "<h2>" . __('Subscribed Categories', 'subscribe2') . "</h2>\r\n";
@@ -1869,7 +1977,7 @@ class s2class {
1869
  $recipients = $this->get_registered();
1870
  }
1871
  $subject = stripslashes(strip_tags($_POST['subject']));
1872
- $body = stripslashes($_POST['message']);
1873
  $status = $this->mail($recipients, $subject, $body, 'text');
1874
  if ($status) {
1875
  $message = $this->mail_sent;
@@ -1883,14 +1991,18 @@ class s2class {
1883
  echo "<div id=\"message\" class=\"updated\"><strong><p>" . $message . "</p></strong></div>\r\n";
1884
  }
1885
  // show our form
1886
- echo "<div class=\"wrap\"><h2>" . __('Send email to all subscribers', 'subscribe2') . "</h2>\r\n";
1887
  echo "<form method=\"post\" action=\"\">\r\n";
1888
- echo "<p>";
1889
  if (function_exists('wp_nonce_field')) {
1890
  wp_nonce_field('subscribe2-write_subscribers' . $s2nonce);
1891
  }
1892
- echo __('Subject', 'subscribe2') . ": <input type=\"text\" size=\"69\" name=\"subject\" value=\"" . __('A message from ', 'subscribe2') . get_option('blogname') . "\" /> <br /><br />";
1893
- echo "<textarea rows=\"12\" cols=\"75\" name=\"message\"></textarea>";
 
 
 
 
 
1894
  echo "<br /><br />\r\n";
1895
  echo __('Recipients: ', 'subscribe2');
1896
  $this->display_subscriber_dropdown('registered', false, array('all'));
@@ -2125,7 +2237,7 @@ class s2class {
2125
  Display our form; also handles (un)subscribe requests
2126
  */
2127
  function filter($content = '') {
2128
- if ( ('' == $content) || (1 == $this->filtered) || (!strstr($content, '<!--subscribe2-->')) ) { return $content; }
2129
  $this->s2form = $this->form;
2130
 
2131
  global $user_ID;
@@ -2161,7 +2273,7 @@ class s2class {
2161
  $this->add();
2162
  $status = $this->send_confirm('add');
2163
  // set a variable to denote that we've already run, and shouldn't run again
2164
- $this->filtered = 1; //set this to not send duplicate emails
2165
  if ($status) {
2166
  $this->s2form = $this->confirmation_sent;
2167
  } else {
@@ -2222,7 +2334,6 @@ class s2class {
2222
  */
2223
  function title_filter($title) {
2224
  // don't interfere if we've already done our thing
2225
- if (1 == $this->filtered) { return; }
2226
  if (in_the_loop()) {
2227
  return __('Subscription Confirmation', 'subscribe2');
2228
  } else {
@@ -2279,9 +2390,23 @@ class s2class {
2279
  }
2280
  }
2281
 
 
 
 
 
 
 
 
 
 
 
 
 
2282
  function plugin_action($links, $file) {
2283
- if ($file == plugin_basename(dirname(__FILE__).'/subscribe2.php'))
2284
- $links[] = "<a href='options-general.php?page=subscribe2/subscribe2.php'><b>" . __('Settings', 'subscribe2') . "</b></a>";
 
 
2285
  return $links;
2286
  }
2287
 
@@ -2401,7 +2526,7 @@ class s2class {
2401
  $check = true;
2402
  }
2403
  }
2404
- //is the current post set by the user to
2405
  // not generate a notification email?
2406
  $s2mail = get_post_meta($post->ID, 's2mail', true);
2407
  if (strtolower(trim($s2mail)) == 'no') {
@@ -2418,9 +2543,11 @@ class s2class {
2418
  continue;
2419
  }
2420
  $table .= $post->post_title . "\r\n";
2421
- $message .= $post->post_title . "\r\n";
2422
- $message .= __('Posted on', 'subscribe2') . ": " . mysql2date($datetime, $post->post_date) . "\r\n";
2423
- $message .= get_permalink($post->ID) . "\r\n";
 
 
2424
  $excerpt = $post->post_excerpt;
2425
  if ('' == $excerpt) {
2426
  // no excerpt, is there a <!--more--> ?
@@ -2445,11 +2572,12 @@ class s2class {
2445
  }
2446
  }
2447
  }
2448
- $message .= $excerpt . "\r\n\r\n";
 
2449
  }
2450
 
2451
  //sanity check - don't send a mail if the content is empty
2452
- if (!$message && !$table) {
2453
  return;
2454
  }
2455
 
@@ -2468,7 +2596,8 @@ class s2class {
2468
  $recipients = array_merge((array)$public, (array)$registered);
2469
  $mailtext = $this->substitute(stripslashes($this->subscribe2_options['mailtext']));
2470
  $mailtext = str_replace("TABLE", $table, $mailtext);
2471
- $mailtext = str_replace("POST", $message, $mailtext);
 
2472
  $this->mail($recipients, $subject, $mailtext);
2473
  } // end subscribe2_cron
2474
 
@@ -2524,11 +2653,16 @@ class s2class {
2524
 
2525
  //add regular actions and filters
2526
  add_action('admin_menu', array(&$this, 'admin_menu'));
2527
- add_filter('ozh_adminmenu_icon', array(&$this, 'ozh_s2_icon'));
2528
  add_action('create_category', array(&$this, 'autosub_new_category'));
2529
  add_filter('the_content', array(&$this, 'filter'), 10);
2530
  add_filter('cron_schedules', array(&$this, 'add_weekly_sched'));
2531
 
 
 
 
 
 
 
2532
  // add action to display editor buttons if option is enabled
2533
  if ('1' == $this->subscribe2_options['show_button']) {
2534
  add_action('edit_page_form', array(&$this, 's2_edit_form'));
@@ -2537,9 +2671,7 @@ class s2class {
2537
 
2538
  // add actions for automatic subscription based on option settings
2539
  add_action('register_form', array(&$this, 'register_form'));
2540
- if ('yes' == $this->subscribe2_options['autosub']) {
2541
- add_action('user_register', array(&$this, 'register'));
2542
- }
2543
  if ('wpreg' == $this->subscribe2_options['autosub']) {
2544
  add_action('register_post', array(&$this, 'register_post'));
2545
  }
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.12
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.12');
35
  define('S2PATH', trailingslashit(dirname(__FILE__)));
36
 
37
  // Pre-2.6 compatibility
117
  add_action("admin_print_scripts-$s2options", array(&$this, 'option_form_js'));
118
  add_filter('plugin_action_links', array(&$this, 'plugin_action'), -10, 2);
119
 
120
+ $s2user = add_users_page(__('Subscriptions', 'subscribe2'), __('Subscriptions', 'subscribe2'), "read", __FILE__, array(&$this, 'user_menu'));
121
  add_action("admin_print_scripts-$s2user", array(&$this, 'checkbox_form_js'));
122
 
123
  add_submenu_page('post-new.php', __('Mail Subscribers', 'subscribe2'), __('Mail Subscribers', 'subscribe2'), "publish_posts", __FILE__, array(&$this, 'write_menu'));
246
  */
247
  function mail ($recipients = array(), $subject = '', $message = '', $type='text') {
248
  if ( (empty($recipients)) || ('' == $message) ) { return; }
249
+
250
  // Set sender details
251
  if ('' == $this->myname) {
252
  $admin = $this->get_userdata();
263
  // To send HTML mail, the Content-Type header must be set
264
  $headers .= "MIME-Version: 1.0\n";
265
  $headers .= "Content-Type: " . get_bloginfo('html_type') . "; charset=\"". get_bloginfo('charset') . "\"\n";
266
+ $mailtext = "<html><head><title>" . $subject . "</title><link rel=\"stylesheet\" href=\"" . get_bloginfo('stylesheet_url') . "\"
267
+ type=\"text/css\" media=\"screen\" /></head><body>" . $message . "</body></html>";
268
  } else {
269
  $headers .= "MIME-Version: 1.0\n";
270
  $headers .= "Content-Type: text/plain; charset=\"". get_bloginfo('charset') . "\"\n";
278
 
279
  // Construct BCC headers for sending or send individual emails
280
  $bcc = '';
281
+ natcasesort($recipients);
282
  if ($this->subscribe2_options['bcclimit'] == 1) {
283
  // BCCLimit is 1 so send individual emails
284
  foreach ($recipients as $recipient) {
672
  */
673
  function remind($emails = '') {
674
  if ('' == $emails) { return false; }
 
 
 
675
 
676
  $recipients = explode(",", $emails);
677
  if (!is_array($recipients)) { $recipients = (array)$recipients; }
718
  return $this->no_such_email;
719
  }
720
 
721
+ // get current status of email so messages are only sent once per emailed link
722
+ $current = $this->is_public($this->email);
723
+
724
  if ('1' == $action) {
725
  // make this subscription active
 
726
  $this->message = $this->added;
727
+ if ('1' != $current) {
728
+ $this->activate();
729
+ if ( ($this->subscribe2_options['admin_email'] == 'subs') || ($this->subscribe2_options['admin_email'] == 'both') ) {
730
+ $subject = '[' . get_option('blogname') . '] ' . __('New subscription', 'subscribe2');
731
+ $message = $this->email . " " . __('subscribed to email notifications!', 'subscribe2');
732
+ $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'");
733
+ $this->mail($recipients, $subject, $message);
734
+ }
735
+ }
736
  $this->filtered = 1;
737
  } elseif ('0' == $action) {
738
  // remove this subscriber
 
739
  $this->message = $this->deleted;
740
+ if ('0' != $current) {
741
+ $this->delete();
742
+ if ( ($this->subscribe2_options['admin_email'] == 'unsubs') || ($this->subscribe2_options['admin_email'] == 'both') ) {
743
+ $subject = '[' . get_option('blogname') . '] ' . __('New Unsubscription', 'subscribe2');
744
+ $message = $this->email . " " . __('unsubscribed from email notifications!', 'subscribe2');
745
+ $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'");
746
+ $this->mail($recipients, $subject, $message);
747
+ }
748
+ }
749
  $this->filtered = 1;
750
  }
751
 
1109
  check_admin_referer('subscribe2-manage_subscribers' . $s2nonce);
1110
  if ($_POST['addresses']) {
1111
  foreach (preg_split ("/[\s,]+/", $_POST['addresses']) as $email) {
1112
+ if ( (is_email($email)) && ($_POST['subscribe']) ) {
1113
  $this->activate($email);
1114
+ } elseif ( (is_email($email)) && ($_POST['unsubscribe']) ) {
1115
+ $this->delete($email);
1116
  }
1117
  }
1118
  $_POST['what'] = 'confirmed';
1248
  // Displays a page number strip - adapted from code in Akismet
1249
  $args['what'] = $what;
1250
  $total_subscribers = count($subscribers);
1251
+ $total_pages = ceil($total_subscribers / $this->subscribe2_options['entries']);
1252
  $strip = '';
1253
  if ( $page > 1 ) {
1254
  $args['s2page'] = $page - 1;
1255
+ $strip .= '<a class="prev" href="' . clean_url(add_query_arg($args)) . '">&laquo; '. __('Previous Page', 'subscribe2') .'</a>' . "\n";
1256
  }
1257
  if ( $total_pages > 1 ) {
1258
  for ( $page_num = 1; $page_num <= $total_pages; $page_num++ ) {
1270
  }
1271
  }
1272
  }
1273
+ if ( ( $page ) * $this->subscribe2_options['entries'] < $total_subscribers ) {
1274
  $args['s2page'] = $page + 1;
1275
  $strip .= "<a class=\"next\" href=\"" . clean_url(add_query_arg($args)) . "\">". __('Next Page', 'subscribe2') . " &raquo;</a>\n";
1276
  }
1277
  }
1278
 
1279
  // show our form
 
1280
  echo "<div class=\"wrap\">";
1281
+ echo "<h2>" . __('Manage Subscribers', 'subscribe2') . "</h2>\r\n";
1282
+ echo "<form method=\"post\" action=\"\">\r\n";
1283
  if (function_exists('wp_nonce_field')) {
1284
  wp_nonce_field('subscribe2-manage_subscribers' . $s2nonce);
1285
  }
1286
+ echo "<h2>" . __('Add/Remove Subscribers', 'subscribe2') . "</h2>\r\n";
1287
  echo "<p>" . __('Enter addresses, one per line or comma-separated', 'subscribe2') . "<br />\r\n";
1288
  echo "<textarea rows=\"2\" cols=\"80\" name=\"addresses\"></textarea></p>\r\n";
1289
  echo "<input type=\"hidden\" name=\"s2_admin\" />\r\n";
1290
+ echo "<p class=\"submit\" style=\"border-top: none;\"><input type=\"submit\" name=\"subscribe\" value=\"" . __('Subscribe', 'subscribe2') . "\" />";
1291
+ echo "&nbsp;<input type=\"submit\" name=\"unsubscribe\" value=\"" . __('Unsubscribe', 'subscribe2') . "\" /></p>\r\n";
1292
 
1293
  // subscriber lists
1294
+ echo "<h2>" . __('Current Subscribers', 'subscribe2') . "</h2>\r\n";
1295
  echo "<br />";
1296
  $this->display_subscriber_dropdown($what, __('Filter', 'subscribe2'));
1297
  // show the selected subscribers
1306
  echo "<input type=\"submit\" name=\"csv\" value=\"" . __('Save Emails to CSV File', 'subscribe2') . "\" class=\"button\" /></td></tr></table>\r\n";
1307
  if ($reminderform) {
1308
  echo "<input type=\"hidden\" name=\"reminderemails\" value=\"" . $reminderemails . "\" />\r\n";
1309
+ echo "<p class=\"submit\" align=\"right\" style=\"border-top:none;\"><input type=\"submit\" name=\"remind\" value=\"" . __('Send Reminder Email', 'subscribe2') . "\" /></p>\r\n";
1310
  }
1311
  echo "<table width=\"100%\"><tr><td valign=\"bottom\">" . $strip . "</td>\r\n";
1312
  echo "<td align=\"right\"><p class=\"submit\" align=\"right\" style=\"border-top: none;\"><input type=\"submit\" name=\"process\" value=\"" . __('Process', 'subscribe2') . "\" /></p>\r\n";
1315
 
1316
  echo "<table cellpadding=\"2\" cellspacing=\"2\" width=\"100%\">";
1317
  if (!empty($subscribers)) {
1318
+ $subscriber_chunks = array_chunk($subscribers, $this->subscribe2_options['entries']);
1319
  $chunk = $page - 1;
1320
  $subscribers = $subscriber_chunks[$chunk];
1321
  echo "<tr class=\"$alternate\">\r\n";
1341
  echo " align=\"left\" colspan=\"4\">";
1342
  }
1343
  echo "<a href=\"mailto:" . $subscriber . "\">" . $subscriber . "</a>\r\n";
1344
+ if (in_array($subscriber, $registered)) {
1345
+ echo "(<a href=\"" . get_option('home') . "/wp-admin/users.php?page=subscribe2/subscribe2.php&amp;email=$subscriber\">" . __('edit', 'subscribe2') . "</a>)\r\n";
1346
+ }
1347
  if (in_array($subscriber, $unconfirmed) || in_array($subscriber, $confirmed) ) {
1348
  echo "(" . $this->signup_date($subscriber) . ")</td>\r\n";
1349
  echo "<td align=\"center\">\r\n";
1408
  $this->reset();
1409
  echo "<div id=\"message\" class=\"updated fade\"><p><strong>$this->options_reset</strong></p></div>";
1410
  } elseif ($_POST['submit']) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1411
  // BCClimit
1412
+ if ( (is_numeric($_POST['bcc'])) && ($_POST['bcc'] >= 0) ) {
1413
+ $this->subscribe2_options['bcclimit'] = $_POST['bcc'];
1414
+ }
1415
+ // admin_email
1416
+ $this->subscribe2_options['admin_email'] = $_POST['admin_email'];
1417
 
1418
  // send as author or admin?
1419
  $sender = 'author';
1460
  $this->subscribe2_options['confirm_email'] = $_POST['confirm_email'];
1461
  $this->subscribe2_options['remind_email'] = $_POST['remind_email'];
1462
 
1463
+ // excluded categories
1464
+ if (!empty($_POST['category'])) {
1465
+ $exclude_cats = implode(',', $_POST['category']);
1466
+ } else {
1467
+ $exclude_cats = '';
1468
+ }
1469
+ $this->subscribe2_options['exclude'] = $exclude_cats;
1470
+ // allow override?
1471
+ (isset($_POST['reg_override'])) ? $override = '1' : $override = '0';
1472
+ $this->subscribe2_options['reg_override'] = $override;
1473
+
1474
+ // default WordPress page where Subscribe2 token is placed
1475
+ if ( (is_numeric($_POST['page'])) && ($_POST['page'] >= 0) ) {
1476
+ $this->subscribe2_options['s2page'] = $_POST['page'];
1477
+ }
1478
+
1479
+ // Number of subscriber per page
1480
+ if ( (is_numeric($_POST['entries'])) && ($_POST['entries'] > 0) ) {
1481
+ $this->subscribe2_options['entries'] =$_POST['entries'];
1482
+ }
1483
+
1484
+ // show meta link?
1485
+ ($_POST['show_meta'] == '1') ? $showmeta = '1' : $showmeta = '0';
1486
+ $this->subscribe2_options['show_meta'] = $showmeta;
1487
+
1488
+ // show button?
1489
+ ($_POST['show_button'] == '1') ? $showbutton = '1' : $showbutton = '0';
1490
+ $this->subscribe2_options['show_button'] = $showbutton;
1491
+
1492
+ // show widget in Presentation->Widgets
1493
+ ($_POST['widget'] == '1') ? $showwidget = '1' : $showwidget = '0';
1494
+ $this->subscribe2_options['widget'] = $showwidget;
1495
+
1496
  //automatic subscription
1497
  $this->subscribe2_options['autosub'] = $_POST['autosub'];
1498
  $this->subscribe2_options['wpregdef'] = $_POST['wpregdef'];
1499
  $this->subscribe2_options['autoformat'] = $_POST['autoformat'];
1500
+ $this->subscribe2_options['show_autosub'] = $_POST['show_autosub'];
1501
  $this->subscribe2_options['autosub_def'] = $_POST['autosub_def'];
1502
 
1503
  //barred domains
1509
  }
1510
  // show our form
1511
  echo "<div class=\"wrap\">";
1512
+ echo "<h2>" . __('Subscribe2 Settings', 'subscribe2') . "</h2>\r\n";
1513
  echo "<form method=\"post\" action=\"\">\r\n";
1514
  if (function_exists('wp_nonce_field')) {
1515
  wp_nonce_field('subscribe2-options_subscribers' . $s2nonce);
1516
  }
1517
  echo "<input type=\"hidden\" name=\"s2_admin\" value=\"options\" />\r\n";
 
 
1518
  echo "<input type=\"hidden\" id=\"jsbcc\" value=\"" . $this->subscribe2_options['bcclimit'] . "\" />";
1519
  echo "<input type=\"hidden\" id=\"jspage\" value=\"" . $this->subscribe2_options['s2page'] . "\" />";
1520
+ echo "<input type=\"hidden\" id=\"jsentries\" value=\"" . $this->subscribe2_options['entries'] . "\" />";
1521
 
1522
+ // settings for outgoing emails
1523
+ echo "<h2>" . __('Notification Settings', 'subscribe2') . "</h2>\r\n";
1524
+ echo "<p>";
1525
  echo __('Restrict the number of recpients per email to (0 for unlimited)', 'subscribe2') . ': ';
1526
  echo "<span id=\"s2bcc_1\"><span id=\"s2bcc\" style=\"background-color: #FFFBCC\">" . $this->subscribe2_options['bcclimit'] . "</span> ";
1527
+ echo "<a href=\"#\" onclick=\"s2_show('bcc'); return false;\">" . __('Edit', 'subscribe2') . "</a></span>\n";
1528
  echo "<span id=\"s2bcc_2\">\r\n";
1529
  echo "<input type=\"text\" name=\"bcc\" value=\"" . $this->subscribe2_options['bcclimit'] . "\" size=\"3\" />\r\n";
1530
+ echo "<a href=\"#\" onclick=\"s2_update('bcc'); return false;\">". __('Update', 'subscribe2') . "</a>\n";
1531
+ echo "<a href=\"#\" onclick=\"s2_revert('bcc'); return false;\">". __('Revert', 'subscribe2') . "</a></span>\n";
1532
 
1533
+ echo "<br /><br />" . __('Send Admins notifications for new', 'subscribe2') . ': ';
1534
+ echo "<input type=\"radio\" name=\"admin_email\" value=\"subs\"";
1535
+ if ('subs' == $this->subscribe2_options['admin_email']) {
1536
+ echo " checked=\"checked\"";
1537
+ }
1538
+ echo " /> " . __('Subscriptions', 'subscribe2') . " &nbsp;&nbsp;";
1539
+ echo "<input type=\"radio\" name=\"admin_email\" value=\"unsubs\"";
1540
+ if ('unsubs' == $this->subscribe2_options['admin_email']) {
1541
+ echo " checked=\"checked\"";
1542
+ }
1543
+ echo " /> " . __('Unsubscriptions', 'subscribe2') . " &nbsp;&nbsp;";
1544
+ echo "<input type=\"radio\" name=\"admin_email\" value=\"both\"";
1545
+ if ('both' == $this->subscribe2_options['admin_email']) {
1546
+ echo " checked=\"checked\"";
1547
+ }
1548
+ echo " /> " . __('Both', 'subscribe2') . " &nbsp;&nbsp;";
1549
+ echo "<input type=\"radio\" name=\"admin_email\" value=\"none\"";
1550
+ if ('none' == $this->subscribe2_options['admin_email']) {
1551
+ echo " checked=\"checked\"";
1552
+ }
1553
+ echo " /> " . __('Neither', 'subscribe2');
1554
 
1555
  echo "<br /><br />" . __('Send Emails for Pages', 'subscribe2') . ': ';
1556
  echo "<input type=\"radio\" name=\"pages\" value=\"yes\"";
1601
  $this->display_digest_choices();
1602
  }
1603
  echo "</p>";
1604
+
1605
+ // email templates
1606
  echo "<h2>" . __('Email Templates', 'subscribe2') . "</h2>\r\n";
1607
  echo"<br />";
1608
  echo "<table width=\"100%\" cellspacing=\"2\" cellpadding=\"1\" class=\"editform\">\r\n";
1617
  echo "<dt><b>BLOGLINK</b></dt><dd>" . get_bloginfo('url') . "</dd>\r\n";
1618
  echo "<dt><b>TITLE</b></dt><dd>" . __("the post's title<br />(<i>for per-post emails only</i>)", 'subscribe2') . "</dd>\r\n";
1619
  echo "<dt><b>POST</b></dt><dd>" . __("the excerpt or the entire post<br />(<i>based on the subscriber's preferences</i>)", 'subscribe2') . "</dd>\r\n";
1620
+ echo "<dt><b>POSTTIME</b></dt><dd>" . __("the excerpt of the post and the time it was posted<br />(<i>for digest emails only</i>)", 'subscribe2') . "</dd>\r\n";
1621
  echo "<dt><b>TABLE</b></dt><dd>" . __("a list of post titles<br />(<i>for digest emails only</i>)", 'subscribe2') . "</dd>\r\n";
1622
  echo "<dt><b>PERMALINK</b></dt><dd>" . __("the post's permalink<br />(<i>for per-post emails only</i>)", 'subscribe2') . "</dd>\r\n";
1623
  echo "<dt><b>MYNAME</b></dt><dd>" . __("the admin or post author's name", 'subscribe2') . "</dd>\r\n";
1644
  echo " checked=\"checked\"";
1645
  }
1646
  echo " /> " . __('Allow registered users to subscribe to excluded categories?', 'subscribe2') . "</center><br />\r\n";
1647
+
1648
+ // Appearance options
1649
+ echo "<h2>" . __('Appearance', 'subscribe2') . "</h2>\r\n";
1650
  echo"<p>";
1651
+
1652
+ // WordPress page ID where subscribe2 token is used
1653
+ echo __('Set default Subscribe2 page as ID', 'subscribe2') . ': ';
1654
+ echo "<span id=\"s2page_1\"><span id=\"s2page\" style=\"background-color: #FFFBCC\">" . $this->subscribe2_options['s2page'] . "</span> ";
1655
+ echo "<a href=\"#\" onclick=\"s2_show('page'); return false;\">" . __('Edit', 'subscribe2') . "</a></span>\n";
1656
+ echo "<span id=\"s2page_2\">\r\n";
1657
+ echo "<input type=\"text\" name=\"page\" value=\"" . $this->subscribe2_options['s2page'] . "\" size=\"3\" />\r\n";
1658
+ echo "<a href=\"#\" onclick=\"s2_update('page'); return false;\">". __('Update', 'subscribe2') . "</a>\n";
1659
+ echo "<a href=\"#\" onclick=\"s2_revert('page'); return false;\">". __('Revert', 'subscribe2') . "</a></span>\n";
1660
+
1661
+ // Number of subscribers per page
1662
+ echo "<br /><br />" . __('Set the number of Subscribers displayed per page', 'subscribe2') . ': ';
1663
+ echo "<span id=\"s2entries_1\"><span id=\"s2entries\" style=\"background-color: #FFFBCC\">" . $this->subscribe2_options['entries'] . "</span> ";
1664
+ echo "<a href=\"#\" onclick=\"s2_show('entries'); return false;\">" . __('Edit', 'subscribe2') . "</a></span>\n";
1665
+ echo "<span id=\"s2entries_2\">\r\n";
1666
+ echo "<input type=\"text\" name=\"entries\" value=\"" . $this->subscribe2_options['entries'] . "\" size=\"3\" />\r\n";
1667
+ echo "<a href=\"#\" onclick=\"s2_update('entries'); return false;\">". __('Update', 'subscribe2') . "</a>\n";
1668
+ echo "<a href=\"#\" onclick=\"s2_revert('entries'); return false;\">". __('Revert', 'subscribe2') . "</a></span>\n";
1669
+
1670
+ // show link to WordPress page in meta
1671
+ echo "<br /><br /><input type=\"checkbox\" name=\"show_meta\" value=\"1\"";
1672
+ if ('1' == $this->subscribe2_options['show_meta']) {
1673
+ echo " checked=\"checked\"";
1674
+ }
1675
+ echo " /> " . __('Show a link to your subscription page in "meta"?', 'subscribe2') . "<br /><br />\r\n";
1676
+
1677
+ // show QuickTag button
1678
  echo "<input type=\"checkbox\" name=\"show_button\" value=\"1\"";
1679
  if ('1' == $this->subscribe2_options['show_button']) {
1680
  echo " checked=\"checked\"";
1735
  echo "checked=\"checked\" ";
1736
  }
1737
  echo "/> " . __('Plain Text - Excerpt', 'subscribe2') . " <br /><br />";
1738
+ echo __('Show Auto Subscribe option on Users page', 'subscribe2') . ": <br />\r\n";
1739
+ echo "<input type=\"radio\" name=\"show_autosub\" value=\"yes\"";
1740
+ if ('yes' == $this->subscribe2_options['show_autosub']) {
1741
+ echo " checked=\"checked\"";
1742
+ }
1743
+ echo " />" . __('Yes', 'subscribe2') . " &nbsp;&nbsp;";
1744
+ echo "<input type=\"radio\" name=\"show_autosub\" value=\"no\"";
1745
+ if ('no' == $this->subscribe2_options['show_autosub']) {
1746
+ echo " checked=\"checked\"";
1747
+ }
1748
+ echo " />" . __('No', 'subscribe2') . "<br /><br />";
1749
  echo __('Auto Subscribe me to new categories is checked by default', 'subscribe2') . ": <br />\r\n";
1750
  echo "<input type=\"radio\" name=\"autosub_def\" value=\"yes\"";
1751
  if ('yes' == $this->subscribe2_options['autosub_def']) {
1788
  function user_menu() {
1789
  global $user_ID, $s2nonce, $wp_version, $wpmu_version;
1790
 
1791
+ if (isset($_GET['email'])) {
1792
+ global $wpdb;
1793
+ $user_ID = $wpdb->get_var("SELECT ID FROM $wpdb->users WHERE user_email = '" . $_GET['email'] . "'");
1794
+ } else {
1795
+ get_currentuserinfo();
1796
+ }
1797
 
1798
  // was anything POSTed?
1799
  if ( (isset($_POST['s2_admin'])) && ('user' == $_POST['s2_admin']) ) {
1875
  // show our form
1876
  echo "<div class=\"wrap\">";
1877
  echo "<h2>" . __('Notification Settings', 'subscribe2') . "</h2>\r\n";
1878
+ if (isset($_GET['email'])) {
1879
+ $user = get_userdata($user_ID);
1880
+ echo "<span style=\"color: red;line-height: 300%;\">" . __('Editing Subscribe2 preferences for user', 'subscribe2') . ": " . $user->display_name . "</span>";
1881
+ }
1882
  echo "<form method=\"post\" action=\"\">";
1883
  echo "<p>";
1884
  if (function_exists('wp_nonce_field')) {
1908
  echo " /> " . $value . "&nbsp;&nbsp;";
1909
  }
1910
  echo "<br /><span style=\"color: red;line-height: 300%;\">" . __('Note: HTML format will always deliver the full post', 'subscribe2') . ".</span><br />\r\n";
1911
+ if ($this->subscribe2_options['show_autosub'] == 'yes') {
1912
+ echo __('Automatically subscribe me to newly created categories', 'subscribe2') . ': &nbsp;&nbsp;';
1913
+ echo "<input type=\"radio\" name=\"new_category\" value=\"yes\" ";
1914
+ if ('yes' == get_usermeta($user_ID, 's2_autosub')) {
1915
+ echo "checked=\"checked\" ";
1916
+ }
1917
+ echo "/> " . __('Yes', 'subscribe2') . "&nbsp;&nbsp;";
1918
+ echo "<input type=\"radio\" name=\"new_category\" value=\"no\" ";
1919
+ if ('no' == get_usermeta($user_ID, 's2_autosub')) {
1920
+ echo "checked=\"checked\" ";
1921
+ }
1922
+ echo "/> " . __('No', 'subscribe2') . "<br /><br />";
1923
+ echo "</p>";
1924
  }
 
 
1925
 
1926
  // subscribed categories
1927
  echo "<h2>" . __('Subscribed Categories', 'subscribe2') . "</h2>\r\n";
1977
  $recipients = $this->get_registered();
1978
  }
1979
  $subject = stripslashes(strip_tags($_POST['subject']));
1980
+ $body = stripslashes($_POST['content']);
1981
  $status = $this->mail($recipients, $subject, $body, 'text');
1982
  if ($status) {
1983
  $message = $this->mail_sent;
1991
  echo "<div id=\"message\" class=\"updated\"><strong><p>" . $message . "</p></strong></div>\r\n";
1992
  }
1993
  // show our form
1994
+ echo "<div class=\"wrap\"><h2>" . __('Send an email to subscribers', 'subscribe2') . "</h2>\r\n";
1995
  echo "<form method=\"post\" action=\"\">\r\n";
 
1996
  if (function_exists('wp_nonce_field')) {
1997
  wp_nonce_field('subscribe2-write_subscribers' . $s2nonce);
1998
  }
1999
+ if (isset($_POST['subject'])) {
2000
+ $subject = $_POST['subject'];
2001
+ } else {
2002
+ $subject = __('A message from ', 'subscribe2') . get_option('blogname');
2003
+ }
2004
+ echo "<p>" . __('Subject', 'subscribe2') . ": <input type=\"text\" size=\"69\" name=\"subject\" value=\"" . $subject . "\" /> <br /><br />";
2005
+ echo "<textarea rows=\"12\" cols=\"75\" name=\"content\">" . $body . "</textarea>";
2006
  echo "<br /><br />\r\n";
2007
  echo __('Recipients: ', 'subscribe2');
2008
  $this->display_subscriber_dropdown('registered', false, array('all'));
2237
  Display our form; also handles (un)subscribe requests
2238
  */
2239
  function filter($content = '') {
2240
+ if ( ('' == $content) || (!strstr($content, '<!--subscribe2-->')) ) { return $content; }
2241
  $this->s2form = $this->form;
2242
 
2243
  global $user_ID;
2273
  $this->add();
2274
  $status = $this->send_confirm('add');
2275
  // set a variable to denote that we've already run, and shouldn't run again
2276
+ $this->filtered = 1;
2277
  if ($status) {
2278
  $this->s2form = $this->confirmation_sent;
2279
  } else {
2334
  */
2335
  function title_filter($title) {
2336
  // don't interfere if we've already done our thing
 
2337
  if (in_the_loop()) {
2338
  return __('Subscription Confirmation', 'subscribe2');
2339
  } else {
2390
  }
2391
  }
2392
 
2393
+ /**
2394
+ Add hook for Minimeta Widget plugin
2395
+ */
2396
+ function add_minimeta() {
2397
+ if ($this->subscribe2_options['s2page'] != 0) {
2398
+ echo "<li><a href=\"" . get_option('siteurl') . "/?page_id=" . $this->subscribe2_options['s2page'] . "\">" . __('[Un]Subscribe to Posts', 'subscribe2') . "</a></li>\r\n";
2399
+ }
2400
+ }
2401
+
2402
+ /**
2403
+ Adds a link directly to the settings page from the plugin page
2404
+ */
2405
  function plugin_action($links, $file) {
2406
+ if ($file == plugin_basename(dirname(__FILE__).'/subscribe2.php')) {
2407
+ $s2link[] = "<a href='options-general.php?page=subscribe2/subscribe2.php'><b>" . __('Settings', 'subscribe2') . "</b></a>";
2408
+ $links = array_merge($s2link, $links);
2409
+ }
2410
  return $links;
2411
  }
2412
 
2526
  $check = true;
2527
  }
2528
  }
2529
+ // is the current post set by the user to
2530
  // not generate a notification email?
2531
  $s2mail = get_post_meta($post->ID, 's2mail', true);
2532
  if (strtolower(trim($s2mail)) == 'no') {
2543
  continue;
2544
  }
2545
  $table .= $post->post_title . "\r\n";
2546
+ $message_posttime .= $post->post_title . "\r\n";
2547
+ $message_posttime .= __('Posted on', 'subscribe2') . ": " . mysql2date($datetime, $post->post_date) . "\r\n";
2548
+ $message_posttime .= get_permalink($post->ID) . "\r\n";
2549
+ $message_post .= $post->post_title . "\r\n";
2550
+ $message_post .= get_permalink($post->ID) . "\r\n";
2551
  $excerpt = $post->post_excerpt;
2552
  if ('' == $excerpt) {
2553
  // no excerpt, is there a <!--more--> ?
2572
  }
2573
  }
2574
  }
2575
+ $message_post .= $excerpt . "\r\n\r\n";
2576
+ $message_posttime .= $excerpt . "\r\n\r\n";
2577
  }
2578
 
2579
  //sanity check - don't send a mail if the content is empty
2580
+ if (!$message_post && !$message_posttime && !$table) {
2581
  return;
2582
  }
2583
 
2596
  $recipients = array_merge((array)$public, (array)$registered);
2597
  $mailtext = $this->substitute(stripslashes($this->subscribe2_options['mailtext']));
2598
  $mailtext = str_replace("TABLE", $table, $mailtext);
2599
+ $mailtext = str_replace("POSTTIME", $message_posttime, $mailtext);
2600
+ $mailtext = str_replace("POST", $message_post, $mailtext);
2601
  $this->mail($recipients, $subject, $mailtext);
2602
  } // end subscribe2_cron
2603
 
2653
 
2654
  //add regular actions and filters
2655
  add_action('admin_menu', array(&$this, 'admin_menu'));
 
2656
  add_action('create_category', array(&$this, 'autosub_new_category'));
2657
  add_filter('the_content', array(&$this, 'filter'), 10);
2658
  add_filter('cron_schedules', array(&$this, 'add_weekly_sched'));
2659
 
2660
+ // add actions for other plugins
2661
+ if ('1' == $this->subscribe2_options['show_meta']) {
2662
+ add_action('wp_meta', array(&$this, 'add_minimeta'), 0);
2663
+ }
2664
+ add_filter('ozh_adminmenu_icon', array(&$this, 'ozh_s2_icon'));
2665
+
2666
  // add action to display editor buttons if option is enabled
2667
  if ('1' == $this->subscribe2_options['show_button']) {
2668
  add_action('edit_page_form', array(&$this, 's2_edit_form'));
2671
 
2672
  // add actions for automatic subscription based on option settings
2673
  add_action('register_form', array(&$this, 'register_form'));
2674
+ add_action('user_register', array(&$this, 'register'));
 
 
2675
  if ('wpreg' == $this->subscribe2_options['autosub']) {
2676
  add_action('register_post', array(&$this, 'register_post'));
2677
  }
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: 2008-10-23 19:47+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"
@@ -72,15 +72,15 @@ msgstr ""
72
  msgid "Your email:"
73
  msgstr ""
74
 
75
- #: subscribe2.php:85 subscribe2.php:1273 subscribe2.php:1365
76
  msgid "Subscribe"
77
  msgstr ""
78
 
79
- #: subscribe2.php:85 subscribe2.php:1366
80
  msgid "Unsubscribe"
81
  msgstr ""
82
 
83
- #: subscribe2.php:85 subscribe2.php:1899
84
  msgid "Send"
85
  msgstr ""
86
 
@@ -120,7 +120,7 @@ msgstr ""
120
  msgid "Options reset!"
121
  msgstr ""
122
 
123
- #: subscribe2.php:112 subscribe2.php:1276
124
  msgid "Subscribers"
125
  msgstr ""
126
 
@@ -128,12 +128,12 @@ msgstr ""
128
  msgid "Subscribe2 Options"
129
  msgstr ""
130
 
131
- #: subscribe2.php:115 subscribe2.php:2241 subscribe2.php:2310
132
  msgid "Subscribe2"
133
  msgstr ""
134
 
135
- #: subscribe2.php:120
136
- msgid "Your Subscriptions"
137
  msgstr ""
138
 
139
  #: subscribe2.php:123
@@ -144,481 +144,543 @@ msgstr ""
144
  msgid "Once Weekly"
145
  msgstr ""
146
 
147
- #: subscribe2.php:726
148
- msgid "New subscriber"
149
  msgstr ""
150
 
151
- #: subscribe2.php:727
152
  msgid "subscribed to email notifications!"
153
  msgstr ""
154
 
155
- #: subscribe2.php:1103
 
 
 
 
 
 
 
 
156
  msgid "Address(es) subscribed!"
157
  msgstr ""
158
 
159
- #: subscribe2.php:1109
160
  msgid "Address(es) deleted!"
161
  msgstr ""
162
 
163
- #: subscribe2.php:1115 subscribe2.php:1121
164
  msgid "Status changed!"
165
  msgstr ""
166
 
167
- #: subscribe2.php:1135
168
  msgid "Reminder Email(s) Sent!"
169
  msgstr ""
170
 
171
- #: subscribe2.php:1138
172
  msgid "Registered Users Subscribed!"
173
  msgstr ""
174
 
175
- #: subscribe2.php:1141
176
  msgid "Registered Users Unsubscribed!"
177
  msgstr ""
178
 
179
- #: subscribe2.php:1239
180
  msgid "Previous Page"
181
  msgstr ""
182
 
183
- #: subscribe2.php:1259
184
  msgid "Next Page"
185
  msgstr ""
186
 
187
- #: subscribe2.php:1266
188
- msgid "Subscribe Addresses"
189
  msgstr ""
190
 
191
- #: subscribe2.php:1270
 
 
 
 
192
  msgid "Enter addresses, one per line or comma-separated"
193
  msgstr ""
194
 
195
- #: subscribe2.php:1278
 
 
 
 
196
  msgid "Filter"
197
  msgstr ""
198
 
199
- #: subscribe2.php:1282
200
  msgid ""
201
  "Registered on the left, confirmed in the middle, unconfirmed on the right"
202
  msgstr ""
203
 
204
- #: subscribe2.php:1286
205
  msgid "Search Subscribers"
206
  msgstr ""
207
 
208
- #: subscribe2.php:1288
209
  msgid "Save Emails to CSV File"
210
  msgstr ""
211
 
212
- #: subscribe2.php:1291
213
  msgid "Send Reminder Email"
214
  msgstr ""
215
 
216
- #: subscribe2.php:1294 subscribe2.php:1354
217
  msgid "Process"
218
  msgstr ""
219
 
220
- #: subscribe2.php:1306 subscribe2.php:1333
221
  msgid "Confirm this email address"
222
  msgstr ""
223
 
224
- #: subscribe2.php:1308 subscribe2.php:1331
225
  msgid "Unconfirm this email address"
226
  msgstr ""
227
 
228
- #: subscribe2.php:1310 subscribe2.php:1338
229
  msgid "Delete this email address"
230
  msgstr ""
231
 
232
- #: subscribe2.php:1311 subscribe2.php:1958
233
  msgid "Select / Unselect All"
234
  msgstr ""
235
 
236
- #: subscribe2.php:1346
 
 
 
 
237
  msgid "No matching subscribers found"
238
  msgstr ""
239
 
240
- #: subscribe2.php:1348
241
  msgid "NONE"
242
  msgstr ""
243
 
244
- #: subscribe2.php:1359
245
  msgid "Categories"
246
  msgstr ""
247
 
248
- #: subscribe2.php:1361
249
  msgid ""
250
  "Existing Registered Users can be automatically (un)subscribed to categories "
251
  "using this section."
252
  msgstr ""
253
 
254
- #: subscribe2.php:1362
255
  msgid "Consider User Privacy as changes cannot be undone"
256
  msgstr ""
257
 
258
- #: subscribe2.php:1364
259
  msgid "Action to perform"
260
  msgstr ""
261
 
262
- #: subscribe2.php:1369 subscribe2.php:1673
263
  msgid "Submit"
264
  msgstr ""
265
 
266
- #: subscribe2.php:1478
267
- msgid "Delivery Options"
 
 
 
 
268
  msgstr ""
269
 
270
- #: subscribe2.php:1483
271
  msgid "Restrict the number of recpients per email to (0 for unlimited)"
272
  msgstr ""
273
 
274
- #: subscribe2.php:1485 subscribe2.php:1493
275
  msgid "Edit"
276
  msgstr ""
277
 
278
- #: subscribe2.php:1488 subscribe2.php:1496
279
  msgid "Update"
280
  msgstr ""
281
 
282
- #: subscribe2.php:1489 subscribe2.php:1497
283
  msgid "Revert"
284
  msgstr ""
285
 
286
- #: subscribe2.php:1491
287
- msgid "Set default Subscribe2 page as ID"
 
 
 
 
 
 
 
 
 
 
 
 
288
  msgstr ""
289
 
290
- #: subscribe2.php:1499
291
  msgid "Send Emails for Pages"
292
  msgstr ""
293
 
294
- #: subscribe2.php:1504 subscribe2.php:1515 subscribe2.php:1526
295
- #: subscribe2.php:1630 subscribe2.php:1657 subscribe2.php:1810
296
- #: subscribe2.php:1830
297
  msgid "Yes"
298
  msgstr ""
299
 
300
- #: subscribe2.php:1509 subscribe2.php:1520 subscribe2.php:1531
301
- #: subscribe2.php:1624 subscribe2.php:1635 subscribe2.php:1662
302
- #: subscribe2.php:1815 subscribe2.php:1834
303
  msgid "No"
304
  msgstr ""
305
 
306
- #: subscribe2.php:1510
307
  msgid "Send Emails for Password Protected Posts"
308
  msgstr ""
309
 
310
- #: subscribe2.php:1521
311
  msgid "Send Emails for Private Posts"
312
  msgstr ""
313
 
314
- #: subscribe2.php:1532
315
  msgid "Send Email From"
316
  msgstr ""
317
 
318
- #: subscribe2.php:1537
319
  msgid "Author of the post"
320
  msgstr ""
321
 
322
- #: subscribe2.php:1542
323
  msgid "Blog Admin"
324
  msgstr ""
325
 
326
- #: subscribe2.php:1544
327
  msgid "Send Email as Digest"
328
  msgstr ""
329
 
330
- #: subscribe2.php:1548
331
  msgid "Email Templates"
332
  msgstr ""
333
 
334
- #: subscribe2.php:1552
335
  msgid "New Post email (must not be empty)"
336
  msgstr ""
337
 
338
- #: subscribe2.php:1556
339
  msgid "Message substitions"
340
  msgstr ""
341
 
342
- #: subscribe2.php:1560
343
  msgid "the post's title<br />(<i>for per-post emails only</i>)"
344
  msgstr ""
345
 
346
- #: subscribe2.php:1561
347
  msgid ""
348
  "the excerpt or the entire post<br />(<i>based on the subscriber's "
349
  "preferences</i>)"
350
  msgstr ""
351
 
352
- #: subscribe2.php:1562
 
 
 
 
 
 
353
  msgid "a list of post titles<br />(<i>for digest emails only</i>)"
354
  msgstr ""
355
 
356
- #: subscribe2.php:1563
357
  msgid "the post's permalink<br />(<i>for per-post emails only</i>)"
358
  msgstr ""
359
 
360
- #: subscribe2.php:1564
361
  msgid "the admin or post author's name"
362
  msgstr ""
363
 
364
- #: subscribe2.php:1565
365
  msgid "the admin or post author's email"
366
  msgstr ""
367
 
368
- #: subscribe2.php:1566
369
  msgid "the post author's name"
370
  msgstr ""
371
 
372
- #: subscribe2.php:1567
373
  msgid ""
374
  "the generated link to confirm a request<br />(<i>only used in the "
375
  "confirmation email template</i>)"
376
  msgstr ""
377
 
378
- #: subscribe2.php:1568
379
  msgid ""
380
  "Action performed by LINK in confirmation email<br />(<i>only used in the "
381
  "confirmation email template</i>)"
382
  msgstr ""
383
 
384
- #: subscribe2.php:1570
385
  msgid "Subscribe / Unsubscribe confirmation email"
386
  msgstr ""
387
 
388
- #: subscribe2.php:1573
389
  msgid "Reminder email to Unconfirmed Subscribers"
390
  msgstr ""
391
 
392
- #: subscribe2.php:1578
393
  msgid "Excluded Categories"
394
  msgstr ""
395
 
396
- #: subscribe2.php:1580
397
  msgid ""
398
  "Posts assigned to any Excluded Category do not generate notifications and "
399
  "are not included in digest notifications"
400
  msgstr ""
401
 
402
- #: subscribe2.php:1587
403
  msgid "Allow registered users to subscribe to excluded categories?"
404
  msgstr ""
405
 
406
- #: subscribe2.php:1590
407
- msgid "Writing Options"
 
 
 
 
 
 
 
 
 
 
 
 
408
  msgstr ""
409
 
410
- #: subscribe2.php:1596
411
  msgid "Show the Subscribe2 button on the Write toolbar?"
412
  msgstr ""
413
 
414
- #: subscribe2.php:1603
415
  msgid "Enable Subscribe2 Widget?"
416
  msgstr ""
417
 
418
- #: subscribe2.php:1607
419
  msgid "Auto Subscribe"
420
  msgstr ""
421
 
422
- #: subscribe2.php:1609
423
  msgid "Subscribe new users registering with your blog"
424
  msgstr ""
425
 
426
- #: subscribe2.php:1614
427
  msgid "Automatically"
428
  msgstr ""
429
 
430
- #: subscribe2.php:1619
431
  msgid "Display option on Registration Form"
432
  msgstr ""
433
 
434
- #: subscribe2.php:1625
435
  msgid "Registration Form option is checked by default"
436
  msgstr ""
437
 
438
- #: subscribe2.php:1636
439
  msgid "Auto-subscribe users to receive email as"
440
  msgstr ""
441
 
442
- #: subscribe2.php:1641 subscribe2.php:1788
443
  msgid "HTML"
444
  msgstr ""
445
 
446
- #: subscribe2.php:1646
447
  msgid "Plain Text - Full"
448
  msgstr ""
449
 
450
- #: subscribe2.php:1651
451
  msgid "Plain Text - Excerpt"
452
  msgstr ""
453
 
454
- #: subscribe2.php:1652
 
 
 
 
455
  msgid "Auto Subscribe me to new categories is checked by default"
456
  msgstr ""
457
 
458
- #: subscribe2.php:1666
459
  msgid "Barred Domains"
460
  msgstr ""
461
 
462
- #: subscribe2.php:1668
463
  msgid ""
464
  "Enter domains to bar from public subscriptions: <br /> (Use a new line for "
465
  "each entry and omit the \"@\" symbol, for example email.com)"
466
  msgstr ""
467
 
468
- #: subscribe2.php:1676
469
  msgid "Reset Default"
470
  msgstr ""
471
 
472
- #: subscribe2.php:1677
473
  msgid ""
474
  "Use this to reset all options to their defaults. This <strong><em>will not</"
475
  "em></strong> modify your list of subscribers."
476
  msgstr ""
477
 
478
- #: subscribe2.php:1679
479
  msgid "RESET"
480
  msgstr ""
481
 
482
- #: subscribe2.php:1705
483
  msgid "Subscription preferences updated."
484
  msgstr ""
485
 
486
- #: subscribe2.php:1775
487
- msgid "Notification Settings"
488
  msgstr ""
489
 
490
- #: subscribe2.php:1783
491
  msgid "Receive email as"
492
  msgstr ""
493
 
494
- #: subscribe2.php:1793
495
  msgid "Plain Text"
496
  msgstr ""
497
 
498
- #: subscribe2.php:1795
499
  msgid "Email contains"
500
  msgstr ""
501
 
502
- #: subscribe2.php:1796
503
  msgid "Excerpt Only"
504
  msgstr ""
505
 
506
- #: subscribe2.php:1796
507
  msgid "Full Post"
508
  msgstr ""
509
 
510
- #: subscribe2.php:1804
511
  msgid "Note: HTML format will always deliver the full post"
512
  msgstr ""
513
 
514
- #: subscribe2.php:1805
515
  msgid "Automatically subscribe me to newly created categories"
516
  msgstr ""
517
 
518
- #: subscribe2.php:1819
519
  msgid "Subscribed Categories"
520
  msgstr ""
521
 
522
- #: subscribe2.php:1824
523
  msgid "Receive daily summary of new posts?"
524
  msgstr ""
525
 
526
- #: subscribe2.php:1840
527
  msgid "Update Preferences"
528
  msgstr ""
529
 
530
- #: subscribe2.php:1886
531
- msgid "Send email to all subscribers"
532
  msgstr ""
533
 
534
- #: subscribe2.php:1892
535
- msgid "Subject"
536
  msgstr ""
537
 
538
- #: subscribe2.php:1892
539
- msgid "A message from "
540
  msgstr ""
541
 
542
- #: subscribe2.php:1895
543
  msgid "Recipients: "
544
  msgstr ""
545
 
546
- #: subscribe2.php:1976
547
  msgid "All Subscribers"
548
  msgstr ""
549
 
550
- #: subscribe2.php:1977
551
  msgid "Public Subscribers"
552
  msgstr ""
553
 
554
- #: subscribe2.php:1978
555
  msgid "Confirmed"
556
  msgstr ""
557
 
558
- #: subscribe2.php:1979
559
  msgid "Unconfirmed"
560
  msgstr ""
561
 
562
- #: subscribe2.php:1980
563
  msgid "Registered Users"
564
  msgstr ""
565
 
566
- #: subscribe2.php:2044
567
  msgid "Per Post Email"
568
  msgstr ""
569
 
570
- #: subscribe2.php:2059
571
  msgid "Send Digest Notification at"
572
  msgstr ""
573
 
574
- #: subscribe2.php:2071
575
  msgid ""
576
  "This option will work for digest notification sent daily or less frequently"
577
  msgstr ""
578
 
579
- #: subscribe2.php:2074
580
  msgid "Current UTC time is"
581
  msgstr ""
582
 
583
- #: subscribe2.php:2076
584
  msgid "Current blog time is"
585
  msgstr ""
586
 
587
- #: subscribe2.php:2078
588
  msgid "Next email notification will be sent when your blog time is after"
589
  msgstr ""
590
 
591
- #: subscribe2.php:2091
592
  msgid "Check here to Subscribe to email notifications for new posts"
593
  msgstr ""
594
 
595
- #: subscribe2.php:2100
596
  msgid ""
597
  "By registering with this blog you are also agreeing to receive email "
598
  "notifications for new posts but you can unsubscribe at anytime"
599
  msgstr ""
600
 
601
- #: subscribe2.php:2227
602
  msgid "Subscription Confirmation"
603
  msgstr ""
604
 
605
- #: subscribe2.php:2264
606
  msgid "Title:"
607
  msgstr ""
608
 
609
- #: subscribe2.php:2284
 
 
 
 
610
  msgid "Settings"
611
  msgstr ""
612
 
613
- #: subscribe2.php:2422
614
  msgid "Posted on"
615
  msgstr ""
616
 
617
- #: subscribe2.php:2464
618
  msgid "Digest Email"
619
  msgstr ""
620
 
621
- #: include/options.php:71
622
  msgid ""
623
  "BLOGNAME has posted a new item, 'TITLE'\n"
624
  "\n"
@@ -634,7 +696,7 @@ msgid ""
634
  "EMAIL"
635
  msgstr ""
636
 
637
- #: include/options.php:75
638
  msgid ""
639
  "BLOGNAME has received a request to ACTION for this email address. To "
640
  "complete your request please click on the link below:\n"
@@ -647,7 +709,7 @@ msgid ""
647
  "MYNAME."
648
  msgstr ""
649
 
650
- #: include/options.php:79
651
  msgid ""
652
  "This email address was subscribed for notifications at BLOGNAME (BLOGLINK) "
653
  "but the subscription remains incomplete.\n"
8
  msgstr ""
9
  "Project-Id-Version: PACKAGE VERSION\n"
10
  "Report-Msgid-Bugs-To: \n"
11
+ "POT-Creation-Date: 2008-12-11 19:21+0000\n"
12
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
72
  msgid "Your email:"
73
  msgstr ""
74
 
75
+ #: subscribe2.php:85 subscribe2.php:1290 subscribe2.php:1386
76
  msgid "Subscribe"
77
  msgstr ""
78
 
79
+ #: subscribe2.php:85 subscribe2.php:1291 subscribe2.php:1387
80
  msgid "Unsubscribe"
81
  msgstr ""
82
 
83
+ #: subscribe2.php:85 subscribe2.php:2011
84
  msgid "Send"
85
  msgstr ""
86
 
120
  msgid "Options reset!"
121
  msgstr ""
122
 
123
+ #: subscribe2.php:112
124
  msgid "Subscribers"
125
  msgstr ""
126
 
128
  msgid "Subscribe2 Options"
129
  msgstr ""
130
 
131
+ #: subscribe2.php:115 subscribe2.php:2352 subscribe2.php:2435
132
  msgid "Subscribe2"
133
  msgstr ""
134
 
135
+ #: subscribe2.php:120 subscribe2.php:1538
136
+ msgid "Subscriptions"
137
  msgstr ""
138
 
139
  #: subscribe2.php:123
144
  msgid "Once Weekly"
145
  msgstr ""
146
 
147
+ #: subscribe2.php:730
148
+ msgid "New subscription"
149
  msgstr ""
150
 
151
+ #: subscribe2.php:731
152
  msgid "subscribed to email notifications!"
153
  msgstr ""
154
 
155
+ #: subscribe2.php:743
156
+ msgid "New Unsubscription"
157
+ msgstr ""
158
+
159
+ #: subscribe2.php:744
160
+ msgid "unsubscribed from email notifications!"
161
+ msgstr ""
162
+
163
+ #: subscribe2.php:1119
164
  msgid "Address(es) subscribed!"
165
  msgstr ""
166
 
167
+ #: subscribe2.php:1125
168
  msgid "Address(es) deleted!"
169
  msgstr ""
170
 
171
+ #: subscribe2.php:1131 subscribe2.php:1137
172
  msgid "Status changed!"
173
  msgstr ""
174
 
175
+ #: subscribe2.php:1151
176
  msgid "Reminder Email(s) Sent!"
177
  msgstr ""
178
 
179
+ #: subscribe2.php:1154
180
  msgid "Registered Users Subscribed!"
181
  msgstr ""
182
 
183
+ #: subscribe2.php:1157
184
  msgid "Registered Users Unsubscribed!"
185
  msgstr ""
186
 
187
+ #: subscribe2.php:1255
188
  msgid "Previous Page"
189
  msgstr ""
190
 
191
+ #: subscribe2.php:1275
192
  msgid "Next Page"
193
  msgstr ""
194
 
195
+ #: subscribe2.php:1281
196
+ msgid "Manage Subscribers"
197
  msgstr ""
198
 
199
+ #: subscribe2.php:1286
200
+ msgid "Add/Remove Subscribers"
201
+ msgstr ""
202
+
203
+ #: subscribe2.php:1287
204
  msgid "Enter addresses, one per line or comma-separated"
205
  msgstr ""
206
 
207
+ #: subscribe2.php:1294
208
+ msgid "Current Subscribers"
209
+ msgstr ""
210
+
211
+ #: subscribe2.php:1296
212
  msgid "Filter"
213
  msgstr ""
214
 
215
+ #: subscribe2.php:1300
216
  msgid ""
217
  "Registered on the left, confirmed in the middle, unconfirmed on the right"
218
  msgstr ""
219
 
220
+ #: subscribe2.php:1304
221
  msgid "Search Subscribers"
222
  msgstr ""
223
 
224
+ #: subscribe2.php:1306
225
  msgid "Save Emails to CSV File"
226
  msgstr ""
227
 
228
+ #: subscribe2.php:1309
229
  msgid "Send Reminder Email"
230
  msgstr ""
231
 
232
+ #: subscribe2.php:1312 subscribe2.php:1375
233
  msgid "Process"
234
  msgstr ""
235
 
236
+ #: subscribe2.php:1324 subscribe2.php:1354
237
  msgid "Confirm this email address"
238
  msgstr ""
239
 
240
+ #: subscribe2.php:1326 subscribe2.php:1352
241
  msgid "Unconfirm this email address"
242
  msgstr ""
243
 
244
+ #: subscribe2.php:1328 subscribe2.php:1359
245
  msgid "Delete this email address"
246
  msgstr ""
247
 
248
+ #: subscribe2.php:1329 subscribe2.php:2070
249
  msgid "Select / Unselect All"
250
  msgstr ""
251
 
252
+ #: subscribe2.php:1345
253
+ msgid "edit"
254
+ msgstr ""
255
+
256
+ #: subscribe2.php:1367
257
  msgid "No matching subscribers found"
258
  msgstr ""
259
 
260
+ #: subscribe2.php:1369
261
  msgid "NONE"
262
  msgstr ""
263
 
264
+ #: subscribe2.php:1380
265
  msgid "Categories"
266
  msgstr ""
267
 
268
+ #: subscribe2.php:1382
269
  msgid ""
270
  "Existing Registered Users can be automatically (un)subscribed to categories "
271
  "using this section."
272
  msgstr ""
273
 
274
+ #: subscribe2.php:1383
275
  msgid "Consider User Privacy as changes cannot be undone"
276
  msgstr ""
277
 
278
+ #: subscribe2.php:1385
279
  msgid "Action to perform"
280
  msgstr ""
281
 
282
+ #: subscribe2.php:1390 subscribe2.php:1770
283
  msgid "Submit"
284
  msgstr ""
285
 
286
+ #: subscribe2.php:1512
287
+ msgid "Subscribe2 Settings"
288
+ msgstr ""
289
+
290
+ #: subscribe2.php:1523 subscribe2.php:1877
291
+ msgid "Notification Settings"
292
  msgstr ""
293
 
294
+ #: subscribe2.php:1525
295
  msgid "Restrict the number of recpients per email to (0 for unlimited)"
296
  msgstr ""
297
 
298
+ #: subscribe2.php:1527 subscribe2.php:1655 subscribe2.php:1664
299
  msgid "Edit"
300
  msgstr ""
301
 
302
+ #: subscribe2.php:1530 subscribe2.php:1658 subscribe2.php:1667
303
  msgid "Update"
304
  msgstr ""
305
 
306
+ #: subscribe2.php:1531 subscribe2.php:1659 subscribe2.php:1668
307
  msgid "Revert"
308
  msgstr ""
309
 
310
+ #: subscribe2.php:1533
311
+ msgid "Send Admins notifications for new"
312
+ msgstr ""
313
+
314
+ #: subscribe2.php:1543
315
+ msgid "Unsubscriptions"
316
+ msgstr ""
317
+
318
+ #: subscribe2.php:1548
319
+ msgid "Both"
320
+ msgstr ""
321
+
322
+ #: subscribe2.php:1553
323
+ msgid "Neither"
324
  msgstr ""
325
 
326
+ #: subscribe2.php:1555
327
  msgid "Send Emails for Pages"
328
  msgstr ""
329
 
330
+ #: subscribe2.php:1560 subscribe2.php:1571 subscribe2.php:1582
331
+ #: subscribe2.php:1716 subscribe2.php:1743 subscribe2.php:1754
332
+ #: subscribe2.php:1917 subscribe2.php:1938
333
  msgid "Yes"
334
  msgstr ""
335
 
336
+ #: subscribe2.php:1565 subscribe2.php:1576 subscribe2.php:1587
337
+ #: subscribe2.php:1710 subscribe2.php:1721 subscribe2.php:1748
338
+ #: subscribe2.php:1759 subscribe2.php:1922 subscribe2.php:1942
339
  msgid "No"
340
  msgstr ""
341
 
342
+ #: subscribe2.php:1566
343
  msgid "Send Emails for Password Protected Posts"
344
  msgstr ""
345
 
346
+ #: subscribe2.php:1577
347
  msgid "Send Emails for Private Posts"
348
  msgstr ""
349
 
350
+ #: subscribe2.php:1588
351
  msgid "Send Email From"
352
  msgstr ""
353
 
354
+ #: subscribe2.php:1593
355
  msgid "Author of the post"
356
  msgstr ""
357
 
358
+ #: subscribe2.php:1598
359
  msgid "Blog Admin"
360
  msgstr ""
361
 
362
+ #: subscribe2.php:1600
363
  msgid "Send Email as Digest"
364
  msgstr ""
365
 
366
+ #: subscribe2.php:1606
367
  msgid "Email Templates"
368
  msgstr ""
369
 
370
+ #: subscribe2.php:1610
371
  msgid "New Post email (must not be empty)"
372
  msgstr ""
373
 
374
+ #: subscribe2.php:1614
375
  msgid "Message substitions"
376
  msgstr ""
377
 
378
+ #: subscribe2.php:1618
379
  msgid "the post's title<br />(<i>for per-post emails only</i>)"
380
  msgstr ""
381
 
382
+ #: subscribe2.php:1619
383
  msgid ""
384
  "the excerpt or the entire post<br />(<i>based on the subscriber's "
385
  "preferences</i>)"
386
  msgstr ""
387
 
388
+ #: subscribe2.php:1620
389
+ msgid ""
390
+ "the excerpt of the post and the time it was posted<br />(<i>for digest "
391
+ "emails only</i>)"
392
+ msgstr ""
393
+
394
+ #: subscribe2.php:1621
395
  msgid "a list of post titles<br />(<i>for digest emails only</i>)"
396
  msgstr ""
397
 
398
+ #: subscribe2.php:1622
399
  msgid "the post's permalink<br />(<i>for per-post emails only</i>)"
400
  msgstr ""
401
 
402
+ #: subscribe2.php:1623
403
  msgid "the admin or post author's name"
404
  msgstr ""
405
 
406
+ #: subscribe2.php:1624
407
  msgid "the admin or post author's email"
408
  msgstr ""
409
 
410
+ #: subscribe2.php:1625
411
  msgid "the post author's name"
412
  msgstr ""
413
 
414
+ #: subscribe2.php:1626
415
  msgid ""
416
  "the generated link to confirm a request<br />(<i>only used in the "
417
  "confirmation email template</i>)"
418
  msgstr ""
419
 
420
+ #: subscribe2.php:1627
421
  msgid ""
422
  "Action performed by LINK in confirmation email<br />(<i>only used in the "
423
  "confirmation email template</i>)"
424
  msgstr ""
425
 
426
+ #: subscribe2.php:1629
427
  msgid "Subscribe / Unsubscribe confirmation email"
428
  msgstr ""
429
 
430
+ #: subscribe2.php:1632
431
  msgid "Reminder email to Unconfirmed Subscribers"
432
  msgstr ""
433
 
434
+ #: subscribe2.php:1637
435
  msgid "Excluded Categories"
436
  msgstr ""
437
 
438
+ #: subscribe2.php:1639
439
  msgid ""
440
  "Posts assigned to any Excluded Category do not generate notifications and "
441
  "are not included in digest notifications"
442
  msgstr ""
443
 
444
+ #: subscribe2.php:1646
445
  msgid "Allow registered users to subscribe to excluded categories?"
446
  msgstr ""
447
 
448
+ #: subscribe2.php:1649
449
+ msgid "Appearance"
450
+ msgstr ""
451
+
452
+ #: subscribe2.php:1653
453
+ msgid "Set default Subscribe2 page as ID"
454
+ msgstr ""
455
+
456
+ #: subscribe2.php:1662
457
+ msgid "Set the number of Subscribers displayed per page"
458
+ msgstr ""
459
+
460
+ #: subscribe2.php:1675
461
+ msgid "Show a link to your subscription page in \"meta\"?"
462
  msgstr ""
463
 
464
+ #: subscribe2.php:1682
465
  msgid "Show the Subscribe2 button on the Write toolbar?"
466
  msgstr ""
467
 
468
+ #: subscribe2.php:1689
469
  msgid "Enable Subscribe2 Widget?"
470
  msgstr ""
471
 
472
+ #: subscribe2.php:1693
473
  msgid "Auto Subscribe"
474
  msgstr ""
475
 
476
+ #: subscribe2.php:1695
477
  msgid "Subscribe new users registering with your blog"
478
  msgstr ""
479
 
480
+ #: subscribe2.php:1700
481
  msgid "Automatically"
482
  msgstr ""
483
 
484
+ #: subscribe2.php:1705
485
  msgid "Display option on Registration Form"
486
  msgstr ""
487
 
488
+ #: subscribe2.php:1711
489
  msgid "Registration Form option is checked by default"
490
  msgstr ""
491
 
492
+ #: subscribe2.php:1722
493
  msgid "Auto-subscribe users to receive email as"
494
  msgstr ""
495
 
496
+ #: subscribe2.php:1727 subscribe2.php:1894
497
  msgid "HTML"
498
  msgstr ""
499
 
500
+ #: subscribe2.php:1732
501
  msgid "Plain Text - Full"
502
  msgstr ""
503
 
504
+ #: subscribe2.php:1737
505
  msgid "Plain Text - Excerpt"
506
  msgstr ""
507
 
508
+ #: subscribe2.php:1738
509
+ msgid "Show Auto Subscribe option on Users page"
510
+ msgstr ""
511
+
512
+ #: subscribe2.php:1749
513
  msgid "Auto Subscribe me to new categories is checked by default"
514
  msgstr ""
515
 
516
+ #: subscribe2.php:1763
517
  msgid "Barred Domains"
518
  msgstr ""
519
 
520
+ #: subscribe2.php:1765
521
  msgid ""
522
  "Enter domains to bar from public subscriptions: <br /> (Use a new line for "
523
  "each entry and omit the \"@\" symbol, for example email.com)"
524
  msgstr ""
525
 
526
+ #: subscribe2.php:1773
527
  msgid "Reset Default"
528
  msgstr ""
529
 
530
+ #: subscribe2.php:1774
531
  msgid ""
532
  "Use this to reset all options to their defaults. This <strong><em>will not</"
533
  "em></strong> modify your list of subscribers."
534
  msgstr ""
535
 
536
+ #: subscribe2.php:1776
537
  msgid "RESET"
538
  msgstr ""
539
 
540
+ #: subscribe2.php:1807
541
  msgid "Subscription preferences updated."
542
  msgstr ""
543
 
544
+ #: subscribe2.php:1880
545
+ msgid "Editing Subscribe2 preferences for user"
546
  msgstr ""
547
 
548
+ #: subscribe2.php:1889
549
  msgid "Receive email as"
550
  msgstr ""
551
 
552
+ #: subscribe2.php:1899
553
  msgid "Plain Text"
554
  msgstr ""
555
 
556
+ #: subscribe2.php:1901
557
  msgid "Email contains"
558
  msgstr ""
559
 
560
+ #: subscribe2.php:1902
561
  msgid "Excerpt Only"
562
  msgstr ""
563
 
564
+ #: subscribe2.php:1902
565
  msgid "Full Post"
566
  msgstr ""
567
 
568
+ #: subscribe2.php:1910
569
  msgid "Note: HTML format will always deliver the full post"
570
  msgstr ""
571
 
572
+ #: subscribe2.php:1912
573
  msgid "Automatically subscribe me to newly created categories"
574
  msgstr ""
575
 
576
+ #: subscribe2.php:1927
577
  msgid "Subscribed Categories"
578
  msgstr ""
579
 
580
+ #: subscribe2.php:1932
581
  msgid "Receive daily summary of new posts?"
582
  msgstr ""
583
 
584
+ #: subscribe2.php:1948
585
  msgid "Update Preferences"
586
  msgstr ""
587
 
588
+ #: subscribe2.php:1994
589
+ msgid "Send an email to subscribers"
590
  msgstr ""
591
 
592
+ #: subscribe2.php:2002
593
+ msgid "A message from "
594
  msgstr ""
595
 
596
+ #: subscribe2.php:2004
597
+ msgid "Subject"
598
  msgstr ""
599
 
600
+ #: subscribe2.php:2007
601
  msgid "Recipients: "
602
  msgstr ""
603
 
604
+ #: subscribe2.php:2088
605
  msgid "All Subscribers"
606
  msgstr ""
607
 
608
+ #: subscribe2.php:2089
609
  msgid "Public Subscribers"
610
  msgstr ""
611
 
612
+ #: subscribe2.php:2090
613
  msgid "Confirmed"
614
  msgstr ""
615
 
616
+ #: subscribe2.php:2091
617
  msgid "Unconfirmed"
618
  msgstr ""
619
 
620
+ #: subscribe2.php:2092
621
  msgid "Registered Users"
622
  msgstr ""
623
 
624
+ #: subscribe2.php:2156
625
  msgid "Per Post Email"
626
  msgstr ""
627
 
628
+ #: subscribe2.php:2171
629
  msgid "Send Digest Notification at"
630
  msgstr ""
631
 
632
+ #: subscribe2.php:2183
633
  msgid ""
634
  "This option will work for digest notification sent daily or less frequently"
635
  msgstr ""
636
 
637
+ #: subscribe2.php:2186
638
  msgid "Current UTC time is"
639
  msgstr ""
640
 
641
+ #: subscribe2.php:2188
642
  msgid "Current blog time is"
643
  msgstr ""
644
 
645
+ #: subscribe2.php:2190
646
  msgid "Next email notification will be sent when your blog time is after"
647
  msgstr ""
648
 
649
+ #: subscribe2.php:2203
650
  msgid "Check here to Subscribe to email notifications for new posts"
651
  msgstr ""
652
 
653
+ #: subscribe2.php:2212
654
  msgid ""
655
  "By registering with this blog you are also agreeing to receive email "
656
  "notifications for new posts but you can unsubscribe at anytime"
657
  msgstr ""
658
 
659
+ #: subscribe2.php:2338
660
  msgid "Subscription Confirmation"
661
  msgstr ""
662
 
663
+ #: subscribe2.php:2375
664
  msgid "Title:"
665
  msgstr ""
666
 
667
+ #: subscribe2.php:2398
668
+ msgid "[Un]Subscribe to Posts"
669
+ msgstr ""
670
+
671
+ #: subscribe2.php:2407
672
  msgid "Settings"
673
  msgstr ""
674
 
675
+ #: subscribe2.php:2547
676
  msgid "Posted on"
677
  msgstr ""
678
 
679
+ #: subscribe2.php:2592
680
  msgid "Digest Email"
681
  msgstr ""
682
 
683
+ #: include/options.php:90
684
  msgid ""
685
  "BLOGNAME has posted a new item, 'TITLE'\n"
686
  "\n"
696
  "EMAIL"
697
  msgstr ""
698
 
699
+ #: include/options.php:94
700
  msgid ""
701
  "BLOGNAME has received a request to ACTION for this email address. To "
702
  "complete your request please click on the link below:\n"
709
  "MYNAME."
710
  msgstr ""
711
 
712
+ #: include/options.php:98
713
  msgid ""
714
  "This email address was subscribed for notifications at BLOGNAME (BLOGLINK) "
715
  "but the subscription remains incomplete.\n"
subscribe2debug.php DELETED
@@ -1,75 +0,0 @@
1
- <?php
2
- /*
3
- Plugin Name: Subscribe2 Debug
4
- Plugin URI: http://subscribe2.wordpress.com
5
- Description: Produces Debug Information for the Subscribe2 plugin.
6
- Version: 4.11
7
- Author: Matthew Robinson
8
- Author URI: http://subscribe2.wordpress.com
9
- */
10
-
11
- /*
12
- Copyright (C) 2006-8 Matthew Robinson
13
- Based on the Original Subscribe2 plugin by
14
- Copyright (C) 2005 Scott Merrill (skippy@skippy.net)
15
-
16
- This file is part of Subscribe2.
17
-
18
- Subscribe2 is free software: you can redistribute it and/or modify
19
- it under the terms of the GNU General Public License as published by
20
- the Free Software Foundation, either version 3 of the License, or
21
- (at your option) any later version.
22
-
23
- Subscribe2 is distributed in the hope that it will be useful,
24
- but WITHOUT ANY WARRANTY; without even the implied warranty of
25
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26
- GNU General Public License for more details.
27
-
28
- You should have received a copy of the GNU General Public License
29
- along with Subscribe2. If not, see <http://www.gnu.org/licenses/>.
30
- */
31
-
32
- function add_debug_page() {
33
- add_menu_page('Subscribe2 Debug', 'Subscribe2 Debug', 1, __FILE__, 'debug_menu');
34
- }
35
- add_action('admin_menu', 'add_debug_page');
36
-
37
- function debug_menu() {
38
- global $wp_filter;
39
- echo "<div class=\"wrap\">";
40
- $datetime = get_option('date_format') . ' @ ' . get_option('time_format');
41
- echo "<p>Current Server time is: \r\n";
42
- echo "<strong>" . gmdate($datetime, current_time('timestamp', 1)) . "</strong></p>\r\n";
43
- echo "<p>Current Blog time is: \r\n";
44
- echo "<strong>" . gmdate($datetime, current_time('timestamp')) . "</strong></p>\r\n";
45
- echo "<p>Current Blog offset is: \r\n";
46
- echo get_option('gmt_offset') . "\r\n";
47
- echo "<pre>";
48
- cron_jobs();
49
- echo "</pre>";
50
- echo "Current Subscribe 2 Options are:";
51
- echo "<pre>";
52
- print_r(get_option('subscribe2_options'));
53
- echo "</pre>";
54
- echo "</div>";
55
- include(ABSPATH . 'wp-admin/admin-footer.php');
56
- // just to be sure
57
- die;
58
- }
59
-
60
- function cron_jobs() {
61
- $datetime = get_option('date_format') . ' @ ' . get_option('time_format');
62
- $jobs = _get_cron_array();
63
- if (empty($jobs)) {
64
- echo "No cron jobs scheduled";
65
- } else {
66
- foreach ( $jobs as $job => $tasks ) {
67
- echo "Anytime after " . gmdate($datetime,$job) . " ";
68
- foreach ($tasks as $procname => $task) {
69
- echo $procname . " will execute\r\n";
70
- }
71
- }
72
- }
73
- return;
74
- }
75
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
subscribe2uninstaller.php DELETED
@@ -1,113 +0,0 @@
1
- <?php
2
- /*
3
- Plugin Name: Subscribe2 Uninstaller
4
- Plugin URI: http://subscribe2.wordpress.com
5
- Description: Uninstalls the Subscribe2 plugin from Manage->S2 Uninstaller.
6
- Version: 4.11
7
- Author: Matthew Robinson
8
- Author URI: http://subscribe2.wordpress.com
9
- */
10
-
11
- /*
12
- Copyright (C) 2006-8 Matthew Robinson
13
- Based on the Original Subscribe2 plugin by
14
- Copyright (C) 2005 Scott Merrill (skippy@skippy.net)
15
-
16
- This file is part of Subscribe2.
17
-
18
- Subscribe2 is free software: you can redistribute it and/or modify
19
- it under the terms of the GNU General Public License as published by
20
- the Free Software Foundation, either version 3 of the License, or
21
- (at your option) any later version.
22
-
23
- Subscribe2 is distributed in the hope that it will be useful,
24
- but WITHOUT ANY WARRANTY; without even the implied warranty of
25
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26
- GNU General Public License for more details.
27
-
28
- You should have received a copy of the GNU General Public License
29
- along with Subscribe2. If not, see <http://www.gnu.org/licenses/>.
30
- */
31
-
32
- $mys2uninst = new s2uninst;
33
- $mys2uninst->s2uninst_init();
34
-
35
- class s2uninst {
36
- function manage_page() {
37
- global $s2nonce;
38
-
39
- if (isset($_POST['s2_uninst'])) {
40
- check_admin_referer('s2uninst-uninstaller' . $s2nonce);
41
- echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Subscribe2 has been uninstalled.', 's2uninst') . "</strong></p></div>\n";
42
- $this->uninstall();
43
- }
44
-
45
- echo "<div class=\"wrap\">";
46
- echo "<h2>" . __('Subscribe2 Uninstaller', 's2uninst') . "</h2>\r\n";
47
- if (class_exists('s2class')) {
48
- echo "<p>" . __('The Subscribe2 plugin is still active on your system. Please deactivate the plugin before completing the uninstall process.', 's2uninst') . "</p>\r\n";
49
- echo "<p>" . __('You can deactivate the plugin by using the ', 's2uninst') . "<a href=\"" . get_option('siteurl') . "/wp-admin/plugins.php\">" . __('WordPress Plugin Page', 's2uninst') . "</a>.</p>";
50
- echo "</div>\r\n";
51
- include(ABSPATH . 'wp-admin/admin-footer.php');
52
- // just to be sure
53
- die;
54
- } else {
55
- echo "<form method=\"post\" action=\"\">";
56
- if (function_exists('wp_nonce_field')) {
57
- wp_nonce_field('s2uninst-uninstaller' . $s2nonce);
58
- }
59
- echo "<p>" . __('Clicking on UNINSTALL will remove the following items from your WordPress install (these were installed by Subscribe2).', 's2uninst') . "</p>\r\n";
60
- echo "<ul>\r\n";
61
- echo "<li>" . __('Options Table Entries', 's2uninst') . "</li>\r\n";
62
- echo "<li>" . __('Usermeta Table Entries', 's2uninst') . "</li>\r\n";
63
- echo "<li>" . __('Subscribe2 Table', 's2uninst') . "</li>\r\n";
64
- echo "<li>" . __('Events Schedules by Subscribe2', 's2uninst') . "</li>\r\n";
65
- echo "</ul>\r\n";
66
- echo "<p align=\"center\"><span class=\"submit\">\r\n";
67
- echo "<input type=\"hidden\" name=\"s2_uninst\" value=\"RESET\" />\r\n";
68
- echo "<input type=\"submit\" id=\"deletepost\" name=\"submit\" value=\"" . __('UNINSTALL', 's2uninst') . "\" />\r\n";
69
- echo "</span></p></form></div>\r\n";
70
- include(ABSPATH . 'wp-admin/admin-footer.php');
71
- // just to be sure
72
- die;
73
- }
74
- }
75
-
76
- function uninstall() {
77
- global $wpdb, $table_prefix;
78
- // get name of subscribe2 table
79
- $this->public = $table_prefix . "subscribe2";
80
- // delete entry from wp_options table
81
- delete_option('subscribe2_options');
82
- // delete legacy entry from wp-options table
83
- delete_option('s2_future_posts');
84
- // remove and scheduled events
85
- wp_clear_scheduled_hook('s2_digest_cron');
86
- // delete usermeta data for registered users
87
- $users = $wpdb->get_col("SELECT ID FROM $wpdb->users");
88
- if (!empty($users)) {
89
- foreach ($users as $user) {
90
- $cats = explode(',', get_usermeta($user, 's2_subscribed'));
91
- if ($cats) {
92
- foreach ($cats as $cat) {
93
- delete_usermeta($user, "s2_cat" . $cat);
94
- }
95
- }
96
- delete_usermeta($user, 's2_subscribed');
97
- }
98
- }
99
- // drop the subscribe2 table
100
- $sql = "DROP TABLE IF EXISTS `" . $this->public . "`";
101
- mysql_query($sql);
102
- }
103
-
104
- function s2uninst_init() {
105
- load_plugin_textdomain('s2uninst', 'wp-content/plugins/');
106
- add_action('admin_menu', array(&$this, 's2uninst_page'));
107
- }
108
-
109
- function s2uninst_page() {
110
- add_management_page(__('S2 Uninstaller', 's2uninst'), __('S2 Uninstaller', 's2uninst'), "manage_options", __FILE__, array(&$this, 'manage_page'));
111
- }
112
- }
113
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
uninstall.php ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if(!defined( 'ABSPATH') && !defined('WP_UNINSTALL_PLUGIN')) {
3
+ exit();
4
+ } else {
5
+ global $wpdb, $table_prefix;
6
+ // get name of subscribe2 table
7
+ $public = $table_prefix . "subscribe2";
8
+ // delete entry from wp_options table
9
+ delete_option('subscribe2_options');
10
+ // delete legacy entry from wp-options table
11
+ delete_option('s2_future_posts');
12
+ // remove and scheduled events
13
+ wp_clear_scheduled_hook('s2_digest_cron');
14
+ // delete usermeta data for registered users
15
+ $users = $wpdb->get_col("SELECT ID FROM $wpdb->users");
16
+ if (!empty($users)) {
17
+ foreach ($users as $user) {
18
+ $cats = explode(',', get_usermeta($user, 's2_subscribed'));
19
+ if ($cats) {
20
+ foreach ($cats as $cat) {
21
+ delete_usermeta($user, "s2_cat" . $cat);
22
+ }
23
+ }
24
+ delete_usermeta($user, 's2_subscribed');
25
+ }
26
+ }
27
+ // drop the subscribe2 table
28
+ $sql = "DROP TABLE IF EXISTS `" . $public . "`";
29
+ mysql_query($sql);
30
+ }
31
+ ?>