Subscribe2 - Version 9.1

Version Description

Download this release

Release Info

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

Code changes from version 9.0 to 9.1

ChangeLog.txt CHANGED
@@ -1,3 +1,27 @@
1
= Version 9.0 by Matthew Robinson =
2
3
* Added capability to send emails with attachments from Send Email page
1
+ = Version 9.1 by Matthew Robinson =
2
+
3
+ * Shortcode parameters are now not case sensitive
4
+ * Fixed AJAX mode to work with new Anti Spam code
5
+ * Suppress undefined variable warnings when sending Digest Email previews
6
+ * Include Signup Date and IP for Public Subscribers in CSV Export - props Taylor4484
7
+ * Fix for Sticky Posts in the digest returning errant posts - thanks to belg4mit
8
+ * Move FAQs to external site to allow more timely updates
9
+ * Add ability to hide other Multisite blogs with CSS in the Subscribe2->Your Subscriptions page (DIV id of 's2_mu_sites') - props cblsysadmin
10
+ * Add 's2_form' filter to allow dynamic alterations to the default form - props adam_jack
11
+ * Conduct more thorough checking for Public and Registered emails when adding users in the admin pages - thanks to MadtownLems
12
+ * Introduce the {REFERENCELINKS} keyword - props manu1033
13
+ * Fix link to jQuery CSS for servers using HTTPS connections - props Christian (aka Alariel)
14
+ * Introduce link to Templates page with unsupported keywords are detected - props MadtownLems
15
+ * Ensure all JavaScript passes the JSHint WordPress Coding Standards
16
+ * Initialise ‘colorpicker’ boxes on page load so they are coloured before first user click
17
+ * Only add a new Weekly schedule if it doesn’t already exist
18
+ * Use trim() on post excerpt to account for blank but non-empty excerpts
19
+ * Don't display screen icons in WordPress 3.8 as they are hidden by CSS - see ticket http://core.trac.wordpress.org/ticket/26119
20
+ * Added 's2_confirm_email' filter to allow amendment or replacement of the subscribe and unsubscribe emails - proposed by Tim Büttner
21
+ * Fixed a typo in the names of the five 's2_send_{email_type}_subscribers' hooks - thanks to robertjj
22
+ * Introduced the 's2_post_statuses' to allow for custom post status transitions, for example with the 'Edit Flow' plugin
23
+ * Fix for failed deletion of Registered Subscribers in Subscribe2->Subscribers page - thanks to Russ Michaels
24
+
25
= Version 9.0 by Matthew Robinson =
26
27
* Added capability to send emails with attachments from Send Email page
ReadMe.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: MattyRob, Skippy, RavanH, bhadaway
3
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=2387904
4
Tags: posts, subscription, email, subscribe, notify, notification
5
Requires at least: 3.3
6
- Tested up to: 3.6.1
7
- Stable tag: 9.0
8
License: GPL3
9
10
Sends a list of subscribers an email notification when new posts are published to your blog
@@ -51,294 +51,7 @@ This token will automatically be replaced by dynamic subscription information an
51
8. In the WordPress "Settings" area for Subscribe2 select the page name in the "Appearance" section that of the WordPress page created in step 7.
52
53
== Frequently Asked Questions ==
54
- = I want HTML email to be the default email type =
55
- You need to pay for the [Subscribe2 HTML version](http://semperplugins.com/plugins/subscribe2-html/).
56
-
57
- = Where can I get help? =
58
- So, you've downloaded the plugin an it isn't doing what you expect. First you should read the included documentation. There is a [ReadMe.txt](http://plugins.svn.wordpress.org/subscribe2/trunk/ReadMe.txt) file and a [legacy PDF startup guide](http://plugins.svn.wordpress.org/subscribe2/tags/6.0/The%20WordPress%20Subscriber%20User%20Guide.pdf) installed with the plugin.
59
-
60
- Next you could search in the [WordPress forums](http://wordpress.org/support/), the old [Subscribe2 Forum](http://getsatisfaction.com/subscribe2/), or the [Subscribe2 blog FAQs](http://subscribe2.wordpress.com/category/faq/).
61
-
62
- If you can't find an answer then post a new topic at the [WordPress forums](http://wordpress.org/support/) or make a [donation](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=2387904) to get my attention!
63
-
64
- = Where can I get translation files for Subscribe2, and what do I do with them? =
65
- All of the translation files I have been given are available at [http://plugins.trac.wordpress.org/browser/subscribe2/i18n/](http://plugins.trac.wordpress.org/browser/subscribe2/i18n/).
66
-
67
- You need to download the *.mo file and place it on your server either in a folder called languages/ in the wp-content/plugins/subscribe2/ folder or you can place it in the subscribe2/ folder.
68
-
69
- = What if there isn't a translation file for my language? =
70
- If your language isn't list then you will need to make your own translation by use the *.pot file the is distributed with every release of the code. [This](http://codex.wordpress.org/Translating_WordPress) WordPress Codex page gives more background on how you make translation files.
71
-
72
- = Sending post notifications or email with Subscribe2 =
73
- Subscribe2 sends an email at the very moment the post is published. Since Subscribe2 sends live mail with no un-do, it's important to use the Preview function in WordPress to make sure the post has been edited to perfection *before* moving it from Draft to Published mode.
74
-
75
- Mail is sent when a post is published - it will not be re-sent if you Update the post later. If you need to send a mailing a second time (e.g. during testing), switch the post to Draft mode, then re-publish it.
76
-
77
- You can also manually send emails to groups of your subscribers using the Send Email page that the plugin creates in the WordPress administration area.
78
-
79
- = Where can I find the HTML and CSS templates? =
80
- While the template field in Settings | Subscribe2 does not display HTML by default, feel free to add HTML to it as needed. You can insert references to static images for use as banners, wrap sections of the template in divs or other elements, or do whatever you like.
81
-
82
- There is no need to include HTML header data or body tags - just focus on the HTML content, in conjunction with the template tags documented on the settings page.
83
-
84
- Subscribe2 does not maintain a separate stylesheet for the emails it generates. Instead, it uses the CSS of your currently active WordPress theme. If you need new/custom styles specific to your newsletter that aren't included in your theme stylesheet, try adding elements such as div id="newsletter_sidebar" to your HTML, with corresponding #newsletter_sidebar rules in your stylesheet.
85
-
86
- Note that if you ever change your site theme, you'll need to copy these additions over to the new theme's stylesheet. To avoid this problem, consider placing a custom CSS file on your server outside of your theme directory, and link to it from the template, thus overriding the active theme styles permanently.
87
-
88
- = Some or all email notifications fail to send, why? =
89
- In the first instance **check this with your hosting provider**, they have access to your server logs and will be able to tell you where and why emails are being blocked.
90
-
91
- This is by far the most common question I am asked and the most frequent issue that arises. Without fail it is always down to a server side limitation or restriction.
92
-
93
- These restrictions broadly fall into one of three areas. These are the sender details, the header details and restrictions on the number of messages sent.
94
-
95
- **Sender Details**. You may need to ensure that the email notification is being sent from an email address on the same domain as your blog. So, if your blog is http://www.example.com the email should be something like admin@example.com. To do this go to Subscribe2->Settings and carefully select from the dropdown list where is says "Send Email From". Here you will see "Post Author", then the name of your blog and then the names of your administrator level users. It may be wise to set up a dummy user account specifically to send the emails from and make sure you give that account an on domain email address.
96
-
97
- **Header Details**. Some hosting providers place a restriction on the maximum number of recipients in any one email message. Some hosts simply block all emails on certain low-cost hosting plans.
98
-
99
- Subscribe2 provides a facility to work around a restriction of the maximum number of recipients per email by sending batches of emails. To enable this feature, go to Subscribe2->Settings and locate 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.
100
-
101
- 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.
102
-
103
- Batches will occur for each group of message as described above. A site like this with many public and registered subscribers could conceivably generate a lot of email for your own inbox.
104
-
105
- **Restrictions on the number of messages sent**. In order to combat spam many hosts are now implementing time based limitations. This means you are only allowed to send a certain number of messages per unit time, 500 per hour for example. Subscribe2 does not have a work around for this inbuilt but see the next question.
106
-
107
- = My host has a limit of X emails per hour / day, can I limit the way Subscribe2 sends emails? =
108
- This is the second most common question I get asked (the first being about emails not being sent which quote often ends up here anyway!). This is more commonly called 'throttling' or 'choking'. PHP is a scripting language and while it is technically possible to throttle emails using script it is not very efficient. It is much better in terms of speed and server overhead (CPU cycles and RAM) to throttle using a server side application.
109
-
110
- In the first instance you should try to solve the problem by speaking to your hosting provider about changing the restrictions, move to a less restricting hosting package or change hosting providers.
111
-
112
- If the above has not put you off then I spent some time writing a Mail Queue script for Subscribe2 that adds the mails to a database table and sends then in periodic batches. It is available, at a price, [here](http://semperplugins.com/plugins/wordpress-mail-queue-wpmq/).
113
-
114
- = My Digest emails fail to send, why? =
115
- If you have already worked through all of the above email trouble shooting tips, and you are still not seeing your periodic digest emails send there may be an issue with the WordPress pseudo-cron functions on your server.
116
-
117
- The pseudo-cron is WordPress is named after the cron jobs on servers. These are tasks that are run periodically to automate certain functions. In WordPress these tasks include checking for core and plugin updates, publishing scheduled posts and in the case of Subscribe2 sending the digest email. so, if the psuedo-cron is not working the email won't send.
118
-
119
- some reasons why your pseudo-cron may not be working are explained [here](http://wordpress.org/support/topic/296236#post-1175405). You can also try overcoming these by calling the wp-cron.php file directly and there are even [instructions](http://www.satollo.net/how-to-make-the-wordpress-cron-work) about how to set up a server cron job to do this periodically to restore WordPress pseudo-cron to a working state.
120
-
121
- = I'd like to send the Digest email but on a different interval to the ones listed. Is this possible? =
122
- Yes, this is possible, it just requires a little bit of code. Subscribe2 uses the intervals that are currently defined in WordPress (and by any plugins that create additional intervals), so all you need to do is add to the available intervals. Use code like this and simply change the interval time (in seconds) and description.
123
-
124
- `function add_my_new_sched($sched) {
125
- $sched['my_new'] = array('interval' => 2419200, 'display' => 'Four Weekly');
126
- return $sched;
127
- }
128
- add_filter('cron_schedules', 'add_my_new_sched');`
129
-
130
- = I'd like to change the size of the image inserted by the {IMAGE} keyword in the paid version of the code. Is this possible? =
131
- Yes, this is possible, it just requires a little bit of code. Subscribe2 introduced a filter in version 8.6 that allows on-the-fly customisation of the image size. Use the code below in a plugin of your own.
132
-
133
- `function my_s2_image_size() {
134
- // return a pre-defined size like 'thumbnail' or 'full'
135
- // or return a physical size as an array like array(300, 300) or array(150, 150)
136
-
137
- // examples:
138
- return 'thumbnail';
139
- return 'full'
140
- return array(300,300);
141
- }
142
-
143
- add_filter('s2_image_size', 'my_s2_image_size');`
144
-
145
- = When I click on Send Preview in Susbcribe2->Settings I get 4 emails, why =
146
- Subscribe2 supports 4 potential email formats for Susbcribers so you will get a preview for each of the different possibilities.
147
-
148
- = Why do I need to create a WordPress Page =
149
- Subscribe2 uses a filter system to display dynamic output to your readers. The token may result in the display of the subscription form, a subscription message, confirmation that an email has been sent, a prompt to log in. This information needs a static location for the output of the filter and a WordPress page is the ideal place for this to happen.
150
-
151
- If you decide to use Subscribe2 only using the widget you must still have at least one WordPress page on your site for Subscribe2 to work correctly.
152
-
153
- = Why is my admin address getting emails from Subscribe2? =
154
- This plugin sends emails to your subscribers using the BCC (Blind Carbon Copy) header in email messages. Each email is sent TO: the admin address. There may be emails for a plain text excerpt notification, plain text full text and HTML format emails and additionally if the number of recipients per email has been set due to hosting restrictions duplicate copies of these emails will be sent to the admin address.
155
-
156
- = I can't find my subscribers / the options / something else =
157
- Subscribe2 creates four (4) new admin menus in the back end of WordPress. These are all under the top level menu header **Subscribe2**.
158
-
159
- * Your Subscriptions : Allows the currently logged in user to manage their own subscriptions
160
- * Subscribers : Allows you to manually (un)subscribe users by email address, displays lists of currently subscribed users and allows you to bulk subscribe Registered Users
161
- * Settings : Allows administrator level users to control many aspects of the plugins operation. It should be pretty self explanatory from the notes on the screen
162
- * Send Mail : Allows users with Publish capabilities to send emails to your current subscribers
163
-
164
- **Note:** In versions of the plugin prior to version 7.0 the menus are under the WordPress system at Posts -> Mail Subscribers, Tools -> Subscribers, Users -> Subscriptions and Settings -> Subscribe2.
165
-
166
- = I'm confused, what are all the different types of subscriber? =
167
- There are basically only 2 types of subscriber. Public Subscribers and Registered Subscribers.
168
-
169
- Public Subscribers have provided their email address for email notification of your new posts. When they enter there address on your site they are sent an email asking them to confirm their request and added to a list of Unconfirmed Subscribers. Once they complete their request by clicking on the link in their email they will become Confirmed Subscribers. They will receive a limited email notification when new post is made or periodically (unless that post is assigned to one of the excluded categories you defined). These Public Subscribers will receive a plaintext email with an excerpt of the post: either the excerpt you created when making the post, the portion of text before a <!--more--> tag (if present), or the first 50 words or so of the post.
170
-
171
- Registered Users have registered with your WordPress blog (provided you have enabled this in the core WordPress settings). Registered users of the blog can elect to receive email notifications for specific categories (unless Digest email are select, then it is an opt in or out decision). The Subscribe2->Your Subscriptions menu item will also allow them greater control to select the delivery format (plaintext or HTML), amount of message (excerpt or full post), and the categories to which they want to subscribe. You, the blog owner, have the option (Subscribe2->Settings) to allow registered users to subscribe to your excluded categories or not.
172
-
173
- **Note** You can send HTML emails to Public Subscribers with the paid [Subscribe2 HTML version](http://semperplugins.com/plugins/subscribe2-html/) of the plugin.
174
-
175
- = Can I put the form elsewhere? (header, footer, sidebar without the widget) =
176
- The simple answer is yes you can but this is not supported so you need to figure out any problems that are caused by doing this on your own. Read <a href="http://subscribe2.wordpress.com/2006/09/19/sidebar-without-a-widget/">here</a> for the basic approach.
177
-
178
- = I'd like to be able to collect more information from users when they subscribe, can I? =
179
- Get them to register with your blog rather than using the Subscribe2 form. Additional fields would require much more intensive form processing, checking and entry into the database and since you won't then be able to easily use this information to personalise emails there really isn't any point in collecting this data.
180
-
181
- = How do I use the Subscribe2 shortcode? =
182
- In version 6.1 of Subscribe2 the new standard WordPress shortcode [subscribe2] was introduced. By default, it behaves same as old Subscribe2 token, `<--subscribe2-->`, which means that it will show the same Subscribe2 output in your chosen page in WordPress or in the Widget.
183
-
184
- But it also has advanced options, which are related to form. The default form contains two buttons for subscribing and unsubscribing. You may, for example, only want form that handles unsubscribing, so the shortcode accepts a **hide** parameter to hide one of the buttons.
185
-
186
- If you use the shortcode [subscribe2 hide="subscribe"] then the button for subscribing will be hidden and similarly if you use [subscribe2 hide="unsubscribe"], only button for subscribing will be shown.
187
-
188
- The new shortcode also accepts two further attributes, these are **id** and **url**. To understand these parameters you need to understand that Subscribe2 returns a user to the default WordPress Page on your site where you use the shortcode or token however in some circumstances you may want to override this behaviour. If you specify a WordPress page id using the id parameter or a full URL using the url parameter then the user would be returned to the alternative page.
189
-
190
- There are many scenarios in which to use new options, but here is an example:
191
-
192
- * Two separate WordPress pages, "Subscribe" that shows only Subscribe button, and "Unsubscribe", that shows only Unsubscribe button. Both pages also have text that should help users in use of form.
193
- * In the widget, show only Subscribe button and post form content to page "Subscribe"
194
- * In the Subscribe2 email template for new post, add text "You can unsubscribe on a following page:" which is followed with link to "Unsubscribe" page
195
-
196
- = I can't find or insert the Subscribe2 token or shortcode, help! =
197
- If, for some reason the Subscribe2 button does not appear in your browser window try refreshing your browser and cache (Shift and Reload in Firefox). If this still fails then insert the token manually. In the Rich Text Editor (TinyMCE) make sure you switch to the "code" view and type in [subscribe2] or <!--subscribe2-->.
198
-
199
- = My digest email didn't send, how can I resend it? =
200
- If for some reason you wish to resend the last digest email you should find a Resend Digest button on the Subscribe2->Settings page under the Email Settings tab. If the button is not there then you are either in per-post mode or there isn't a previous digest to re-send.
201
-
202
- In per post mode, to resend edit the post you want to re-send and change the status to draft and save, then publish the post again.
203
-
204
- = I would really like Registered users to have the Subscription page themed like my site, is this possible? =
205
- Yes, it is. There is a small extension to Subscribe2 that delivers exactly this functionality. It is available from [Theme Tailors](http://stiofan.themetailors.com/store/products/tt-subscribe2-front-end-plugin/) for just $5.
206
-
207
- = I'd like to change the length of the excerpt included in the email notification. Can I do that? =
208
- Yes, you can. There is a filter in Subscribe2 that allow you to change from the default of approximately 55 words. An example of the filter code you need would look like this:
209
-
210
- `function my_excerpt() {
211
- // return whatever number of words you want the excerpt length to be
212
- return 30;
213
- }
214
- add_filter('s2_excerpt_length', 'my_excerpt');`
215
-
216
- = How do I make use of the support for Custom Post Types =
217
- In a plugin file for your site or perhaps functions.php in your theme add the following code where 'my_post_type' is change to the name of your custom post type.
218
-
219
- `function my_post_types($types) {
220
- $types[] = 'my_post_type';
221
- return $types;
222
- }
223
- add_filter('s2_post_types', 'my_post_types');`
224
-
225
- = How can I make use of the support for Custom Taxonomies =
226
- In a plugin file for your site or perhaps functions.php in your theme add the following code where 'my_
227
- taxonomy_type' is change to the name of your custom taxonomy type.
228
-
229
- `function my_taxonomy_types($taxonomies) {
230
- $taxonomies[] = 'my_taxonomy_type';
231
- return $taxonomies;
232
- }
233
- add_filter('s2_taxonomies', 'my_taxonomy_types');`
234
-
235
- = I want to personalise the message displayed when someone subscribes or unsubscribes, how do I do that? =
236
- There is a filter for both of these in Subscribe2 from version 9.0 and upwards. To use it you need to create a little filter code plugin, an example is below:
237
-
238
- `function subscribe_change($message) {
239
- $message .= "<p>A warm welcome to our blog. We hope you enjoy our emails.</p>";
240
- return $message;
241
- }
242
- add_filter('s2_subscribe_confirmed', 'subscribe_change');
243
-
244
- function unsubscribe_change($message) {
245
- $message .= "<p>We're sorry to see you leave, come back anytime.</p>";
246
- return $message;
247
- }
248
- add_filter('s2_unsubscribe_confirmed', 'unsubscribe_change');`
249
-
250
- = How do I make use of the new option to AJAXify the form? =
251
- The first thing you will need to do is visit the options page and enable the AJAX setting where it says "Enable AJAX style subscription form?", this will load the necessary javascript onto your WordPress site.
252
-
253
- Next you need to decide if you want the link to be on a WordPress page or in your Sidebar with the Widget.
254
-
255
- For a WordPress page you use the normal Subscribe2 token but add a 'link' parameter with the text you'd like your users to click, so something like:
256
-
257
- `[subscribe2 link="Click Here to Subscribe"]`
258
-
259
- For Sidebar users, visit the Widgets page and look in the Subscribe2 Widget, there is a new option at the bottom called "Show as link". If you choose this a link will be placed in your sidebar that displays the form when clicked.
260
-
261
- In either case, if your end users have javascript disabled in their browser the link will sinply take them through to the subscription page you are recommended to create at step 7 of the install instructions.
262
-
263
- The final thing to mention is the styling of the form. The CSS taken from the jQuery-UI libraries and there are several to choose from. I quite link darkness-ui and that is the styling used by default. But what if you want to change this?
264
-
265
- Well, you need to write a little code and provide a link to the Google API or Microsoft CDN hosted CSS theme you prefer. The example below changes the theme from ui-darkness to ui-lightness. More choice are detailed on the [jQuery release blog](http://blog.jqueryui.com/2011/08/jquery-ui-1-8-16/) where the them names are listed and linked to the address you'll need.
266
-
267
- `function custom_ajax_css() {
268
- return "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/ui-lightness/jquery-ui.css";
269
- }
270
- add_filter('s2_jqueryui_css', 'custom_ajax_css');`
271
-
272
- = I want to change the kinds of users who can access the Subscribe2 menus. Is that possible? =
273
- Yes, it is possible with a little bit for code either in a custom plugin or your functions.php file in your theme. You use the add_filter() command that is part of WordPress to change the [capability](http://codex.wordpress.org/Roles_and_Capabilities#Capabilities) that allows access to each of the Subscribe2 menus.
274
-
275
- `function s2_admin_changes( $capability, $menu ) {
276
- // $capability is the core WordPress capability to allow admin page access
277
- // $menu is the title of the page:
278
- // 'user' for access to personal subscription settings
279
- // 'manage' to allow access to the user management screen
280
- // 'settings' to allow access to the plugin settings
281
- // 'send' for access to the Send Email page
282
-
283
- // identify the menu you are changing capability for first
284
- // then return a new capability
285
- if ( $menu == 'send' ) {
286
- return 'read';
287
- }
288
-
289
- return $capability;
290
- }
291
-
292
- add_filter('s2_capability', 's2_admin_changes', 10, 2);`
293
-
294
- = I want to change the Administrator users that get notifications of new subscriptions and unsubscriptions, how do I do that? =
295
- In Subscribe2->Settings you can turn off email notifications to Administrator level users when a Public Subscriber joins or leaves but what if you still want an email but to different people? Subscribe2 has a filter that allows you to add and remove users immediately before sending like this:
296
-
297
- `function my_admin_filter($recipients = array(), $email) {
298
- // $recipients is an array of admin email addresses
299
- // $email will be 'subscribe' or 'unsubscribe'
300
- if ($email == 'subscribe') {
301
- foreach ($recipients as $key => $email) {
302
- if ( $email == 'admin@mysite.com') {
303
- unset($recipients[$key]);
304
- }
305
- }
306
- $recipients[] = 'different.user@mysite.com';
307
- }
308
- return $recipients;
309
- }
310
- add_filter('s2_admin_email', 'my_admin_filter', 10, 2);`
311
-
312
- = I want to change the email subject, how do I do that? =
313
- You can change the email subject with the 's2_email_subject' filter. Something like this:
314
-
315
- `function s2_subject_changes($subject) {
316
- return "This is my preferred email subject";
317
- }
318
-
319
- add_filter('s2_email_subject', 's2_subject_changes');`
320
-
321
- = Can I suggest you add X as a feature =
322
- I'm open to suggestions but since the software is written by me for use on my site and then shared for free because others may find it useful as it comes don't expect your suggestion to be implemented unless I'll find it useful.
323
-
324
- = I'd like to be able to send my subscribers notifications in HTML =
325
- By default Public Subscribers get plain text emails and only Registered Subscribers can opt to receive email in HTML format. If you really want HTML for all you need to pay for the [Subscribe2 HTML version](http://semperplugins.com/plugins/subscribe2-html/).
326
-
327
- = Which version should I be using, I'm on WordPress x.x.x? =
328
- WordPress 3.1 and up requires Subscribe2 from the 7.x or 8.x stable branch. The most recent version is hosted via [Wordpress.org](http://wordpress.org/extend/plugins/subscribe2/).
329
-
330
- WordPress 2.8 and up requires Subscribe2 from the 6.x stable branch. The most recent version is [6.5](http://downloads.wordpress.org/plugin/subscribe2.6.5.zip).
331
-
332
- WordPress 2.3.x through to 2.7.x require Subscribe2 from the 4.x or 5.x stable branch. The most recent version is [5.9](http://downloads.wordpress.org/plugin/subscribe2.5.9.zip).
333
-
334
- WordPress 2.1.x and 2.2.x require Subscribe2 from the 3.x stable branch. The most recent version is [3.8](http://downloads.wordpress.org/plugin/subscribe2.3.8.zip).
335
-
336
- WordPress 2.0.x requires Subscribe2 from the 2.x stable branch. The most recent version is [2.22](http://downloads.wordpress.org/plugin/subscribe2.2.22.zip).
337
-
338
- = Why doesn't the form appear in my WordPress page? =
339
- This is usually caused by one of two things. Firstly, it is possible that the form is there but because you haven't logged out of WordPress yourself you are seeing a message about managing your profile instead. Log out of WordPress and it will appear as the subscription form you are probably expecting.
340
-
341
- Secondly, make sure that the token ([subscribe2] or <!--subscribe2-->) is correctly entered in your page with a blank line above and below. The easiest way to do this is to deactivate the plugin, visit your WordPress page and view the source. The token should be contained in the source code of the page. If it is not there you either have not correctly entered the token or you have another plugin that is stripping the token from the page code.
342
343
== Screenshots ==
344
1. The Subscribe2->Mail Subscribers admin page generated by the plugin.
3
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=2387904
4
Tags: posts, subscription, email, subscribe, notify, notification
5
Requires at least: 3.3
6
+ Tested up to: 3.8
7
+ Stable tag: 9.1
8
License: GPL3
9
10
Sends a list of subscribers an email notification when new posts are published to your blog
51
8. In the WordPress "Settings" area for Subscribe2 select the page name in the "Appearance" section that of the WordPress page created in step 7.
52
53
== Frequently Asked Questions ==
54
+ [Visit FAQ site](http://subscribe2.wordpress.com/support/faqs/)
55
56
== Screenshots ==
57
1. The Subscribe2->Mail Subscribers admin page generated by the plugin.
admin/send_email.php CHANGED
@@ -42,16 +42,18 @@ if ( isset($_POST['s2_admin']) && 'mail' == $_POST['s2_admin'] ) {
42
}
43
44
$uploads = array();
45
- foreach ($_FILES['file']['name'] as $key => $value) {
46
- if ( $_FILES['file']['error'][$key] === 0 ) {
47
- $file = array(
48
- 'name' => $_FILES['file']['name'][$key],
49
- 'type' => $_FILES['file']['type'][$key],
50
- 'tmp_name' => $_FILES['file']['tmp_name'][$key],
51
- 'error' => $_FILES['file']['error'][$key],
52
- 'size' => $_FILES['file']['size'][$key]
53
- );
54
- $uploads[] = wp_handle_upload($file, array('test_form' => false));
55
}
56
}
57
$attachments = array();
@@ -91,7 +93,9 @@ if ( isset($_POST['s2_admin']) && 'mail' == $_POST['s2_admin'] ) {
91
92
// show our form
93
echo "<div class=\"wrap\">";
94
- echo "<div id=\"icon-edit\" class=\"icon32\"></div>";
95
echo "<h2>" . __('Send an email to subscribers', 'subscribe2') . "</h2>\r\n";
96
echo "<form method=\"post\" enctype=\"multipart/form-data\">\r\n";
97
if ( function_exists('wp_nonce_field') ) {
42
}
43
44
$uploads = array();
45
+ if ( !empty($_FILES) ) {
46
+ foreach ($_FILES['file']['name'] as $key => $value) {
47
+ if ( $_FILES['file']['error'][$key] === 0 ) {
48
+ $file = array(
49
+ 'name' => $_FILES['file']['name'][$key],
50
+ 'type' => $_FILES['file']['type'][$key],
51
+ 'tmp_name' => $_FILES['file']['tmp_name'][$key],
52
+ 'error' => $_FILES['file']['error'][$key],
53
+ 'size' => $_FILES['file']['size'][$key]
54
+ );
55
+ $uploads[] = wp_handle_upload($file, array('test_form' => false));
56
+ }
57
}
58
}
59
$attachments = array();
93
94
// show our form
95
echo "<div class=\"wrap\">";
96
+ if ( version_compare($GLOBALS['wp_version'], '3.8', '<=') ) {
97
+ echo "<div id=\"icon-edit\" class=\"icon32\"></div>";
98
+ }
99
echo "<h2>" . __('Send an email to subscribers', 'subscribe2') . "</h2>\r\n";
100
echo "<form method=\"post\" enctype=\"multipart/form-data\">\r\n";
101
if ( function_exists('wp_nonce_field') ) {
admin/settings.php CHANGED
@@ -125,7 +125,7 @@ if ( empty($id) ) {
125
}
126
127
if ( $this->subscribe2_options['email_freq'] != 'never' ) {
128
- $disallowed_keywords = array('{TITLE}', '{PERMALINK}', '{DATE}', '{TIME}', '{LINK}', '{ACTION}');
129
} else {
130
$disallowed_keywords = array('{POSTTIME}', '{TABLE}', '{TABLELINKS}', '{COUNT}', '{LINK}', '{ACTION}');
131
}
@@ -136,7 +136,9 @@ foreach ( $disallowed_keywords as $disallowed_keyword ) {
136
}
137
}
138
if ( $disallowed !== false ) {
139
- echo "<div id=\"keyword_message\" class=\"error\"><p class=\"s2_error\"><strong>$this->disallowed_keywords</strong><br>" . implode($disallowed, ', ') . "</p></div>";
140
}
141
142
// send error message if sender email address is off-domain
@@ -156,7 +158,9 @@ $current_tab = isset( $_GET['tab'] ) ? $_GET['tab'] : 'email';
156
157
// show our form
158
echo "<div class=\"wrap\">";
159
- echo "<div id=\"icon-options-general\" class=\"icon32\"></div>";
160
$tabs = array('email' => __('Email Settings', 'subscribe2'),
161
'templates' => __('Templates', 'subscribe2'),
162
'registered' => __('Registered Users', 'subscribe2'),
@@ -261,7 +265,7 @@ switch ($current_tab) {
261
echo "<p>\r\n";
262
echo "<table style=\"width: 100%; border-collapse: separate; border-spacing: 5px; *border-collapse: expression('separate', cellSpacing = '5px');\" class=\"editform\">\r\n";
263
echo "<tr><td style=\"vertical-align: top; height: 350px; min-height: 350px;\">";
264
- echo __('New Post email (must not be empty)', 'subscribe2') . ":<br />\r\n";
265
echo __('Subject Line', 'subscribe2') . ": ";
266
echo "<input type=\"text\" name=\"notification_subject\" value=\"" . stripslashes($this->subscribe2_options['notification_subject']) . "\" size=\"45\" />";
267
echo "<br />\r\n";
@@ -278,6 +282,7 @@ switch ($current_tab) {
278
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";
279
echo "<dt><b>{TABLE}</b></dt><dd>" . __("a list of post titles<br />(<i>for digest emails only</i>)", 'subscribe2') . "</dd>\r\n";
280
echo "<dt><b>{TABLELINKS}</b></dt><dd>" . __("a list of post titles followed by links to the articles<br />(<i>for digest emails only</i>)", 'subscribe2') . "</dd>\r\n";
281
echo "<dt><b>{PERMALINK}</b></dt><dd>" . __("the post's permalink<br />(<i>for per-post emails only</i>)", 'subscribe2') . "</dd>\r\n";
282
echo "<dt><b>{TINYLINK}</b></dt><dd>" . __("the post's permalink after conversion by TinyURL", 'subscribe2') . "</dd>\r\n";
283
echo "<dt><b>{DATE}</b></dt><dd>" . __("the date the post was made<br />(<i>for per-post emails only</i>)", "subscribe2") . "</dd>\r\n";
@@ -410,6 +415,7 @@ switch ($current_tab) {
410
// WordPress page ID where subscribe2 token is used
411
echo __('Set default Subscribe2 page as', 'subscribe2') . ': ';
412
echo "<select name=\"s2page\">\r\n";
413
$this->pages_dropdown($this->subscribe2_options['s2page']);
414
echo "</select>\r\n";
415
125
}
126
127
if ( $this->subscribe2_options['email_freq'] != 'never' ) {
128
+ $disallowed_keywords = array('{TITLE}', '{PERMALINK}', '{DATE}', '{TIME}', '{LINK}', '{ACTION}', '{REFERENCELINKS}');
129
} else {
130
$disallowed_keywords = array('{POSTTIME}', '{TABLE}', '{TABLELINKS}', '{COUNT}', '{LINK}', '{ACTION}');
131
}
136
}
137
}
138
if ( $disallowed !== false ) {
139
+ $disallowed_keywords = __('Your chosen email type (per-post or digest) does not support the following keywords:', 'subscribe2');
140
+ $template_link = "<a href = \"" . admin_url('admin.php?page=s2_settings&tab=templates') . "\">" . __('Modify your template', 'subscribe2') . "</a>";
141
+ echo "<div id=\"keyword_message\" class=\"error\"><p class=\"s2_error\"><strong>$disallowed_keywords</strong><br />" . implode($disallowed, ', ') . "<br />" . $template_link . "</p></div>";
142
}
143
144
// send error message if sender email address is off-domain
158
159
// show our form
160
echo "<div class=\"wrap\">";
161
+ if ( version_compare($GLOBALS['wp_version'], '3.8', '<=') ) {
162
+ echo "<div id=\"icon-options-general\" class=\"icon32\"></div>";
163
+ }
164
$tabs = array('email' => __('Email Settings', 'subscribe2'),
165
'templates' => __('Templates', 'subscribe2'),
166
'registered' => __('Registered Users', 'subscribe2'),
265
echo "<p>\r\n";
266
echo "<table style=\"width: 100%; border-collapse: separate; border-spacing: 5px; *border-collapse: expression('separate', cellSpacing = '5px');\" class=\"editform\">\r\n";
267
echo "<tr><td style=\"vertical-align: top; height: 350px; min-height: 350px;\">";
268
+ echo __('Notification email (must not be empty)', 'subscribe2') . ":<br />\r\n";
269
echo __('Subject Line', 'subscribe2') . ": ";
270
echo "<input type=\"text\" name=\"notification_subject\" value=\"" . stripslashes($this->subscribe2_options['notification_subject']) . "\" size=\"45\" />";
271
echo "<br />\r\n";
282
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";
283
echo "<dt><b>{TABLE}</b></dt><dd>" . __("a list of post titles<br />(<i>for digest emails only</i>)", 'subscribe2') . "</dd>\r\n";
284
echo "<dt><b>{TABLELINKS}</b></dt><dd>" . __("a list of post titles followed by links to the articles<br />(<i>for digest emails only</i>)", 'subscribe2') . "</dd>\r\n";
285
+ echo "<dt><b>{REFERENCELINKS}</b></dt><dd>" . __("a reference style list of links at the end of the email with corresponding numbers in the content<br />(<i>for the full content plain text per-post email only</i>)", 'subscribe2') . "</dd>\r\n";
286
echo "<dt><b>{PERMALINK}</b></dt><dd>" . __("the post's permalink<br />(<i>for per-post emails only</i>)", 'subscribe2') . "</dd>\r\n";
287
echo "<dt><b>{TINYLINK}</b></dt><dd>" . __("the post's permalink after conversion by TinyURL", 'subscribe2') . "</dd>\r\n";
288
echo "<dt><b>{DATE}</b></dt><dd>" . __("the date the post was made<br />(<i>for per-post emails only</i>)", "subscribe2") . "</dd>\r\n";
415
// WordPress page ID where subscribe2 token is used
416
echo __('Set default Subscribe2 page as', 'subscribe2') . ': ';
417
echo "<select name=\"s2page\">\r\n";
418
+ echo "<option value=\"0\">" . __('Select a page', 'subscribe2') . "</option>\r\n";
419
$this->pages_dropdown($this->subscribe2_options['s2page']);
420
echo "</select>\r\n";
421
admin/subscribers.php CHANGED
@@ -12,19 +12,25 @@ $current_tab = isset( $_GET['tab'] ) ? esc_attr($_GET['tab']) : 'public';
12
if ( isset($_POST['s2_admin']) ) {
13
check_admin_referer('bulk-subscribers');
14
if ( !empty($_POST['addresses']) ) {
15
- $sub_error = '';
16
$unsub_error = '';
17
foreach ( preg_split("|[\s,]+|", $_POST['addresses']) as $email ) {
18
$email = $this->sanitize_email($email);
19
- if ( is_email($email) && $_POST['subscribe'] ) {
20
if ( $this->is_public($email) !== false ) {
21
- ('' == $sub_error) ? $sub_error = "$email" : $sub_error .= ", $email";
22
continue;
23
}
24
$this->add($email, true);
25
$message = "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Address(es) subscribed!', 'subscribe2') . "</strong></p></div>";
26
- } elseif ( is_email($email) && $_POST['unsubscribe'] ) {
27
- if ( $this->is_public($email) === false ) {
28
('' == $unsub_error) ? $unsub_error = "$email" : $unsub_error .= ", $email";
29
continue;
30
}
@@ -32,13 +38,18 @@ if ( isset($_POST['s2_admin']) ) {
32
$message = "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Address(es) unsubscribed!', 'subscribe2') . "</strong></p></div>";
33
}
34
}
35
- if ( $sub_error != '' ) {
36
- echo "<div id=\"message\" class=\"error\"><p><strong>" . __('Some emails were not processed, the following were already subscribed' , 'subscribe2') . ":<br />$sub_error</strong></p></div>";
37
}
38
if ( $unsub_error != '' ) {
39
echo "<div id=\"message\" class=\"error\"><p><strong>" . __('Some emails were not processed, the following were not in the database' , 'subscribe2') . ":<br />$unsub_error</strong></p></div>";
40
}
41
- echo $message;
42
$_POST['what'] = 'confirmed';
43
} elseif ( (isset($_POST['action']) && $_POST['action'] === 'delete') || (isset($_POST['action2']) && $_POST['action2'] === 'delete') ) {
44
if ( $current_tab === 'public' ) {
@@ -57,7 +68,7 @@ if ( isset($_POST['s2_admin']) ) {
57
continue;
58
} else {
59
$users_deleted = __('User(s) deleted! Any posts made by these users were assigned to you', 'subscribe2');
60
- //wp_delete_user($user->$id, $current_user->ID);
61
}
62
}
63
echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . $users_deleted_error . $users_deleted . "</strong></p></div>";
@@ -169,7 +180,9 @@ $S2ListTable->prepare_items();
169
170
// show our form
171
echo "<div class=\"wrap\">";
172
- echo "<div id=\"icon-tools\" class=\"icon32\"></div>";
173
$tabs = array('public' => __('Public Subscribers', 'subscribe2'), 'registered' => __('Registered Subscribers', 'subscribe2'));
174
echo "<h2 class=\"nav-tab-wrapper\">";
175
foreach ( $tabs as $tab_key => $tab_caption ) {
12
if ( isset($_POST['s2_admin']) ) {
13
check_admin_referer('bulk-subscribers');
14
if ( !empty($_POST['addresses']) ) {
15
+ $reg_sub_error = '';
16
+ $pub_sub_error = '';
17
$unsub_error = '';
18
+ $message = '';
19
foreach ( preg_split("|[\s,]+|", $_POST['addresses']) as $email ) {
20
$email = $this->sanitize_email($email);
21
+ if ( is_email($email) && isset($_POST['subscribe']) ) {
22
if ( $this->is_public($email) !== false ) {
23
+ ('' == $pub_sub_error) ? $pub_sub_error = "$email" : $pub_sub_error .= ", $email";
24
+ continue;
25
+ }
26
+ if ( $this->is_registered($email) ) {
27
+ ('' == $reg_sub_error) ? $reg_sub_error = "$email" : $reg_sub_error .= ", $email";
28
continue;
29
}
30
$this->add($email, true);
31
$message = "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Address(es) subscribed!', 'subscribe2') . "</strong></p></div>";
32
+ } elseif ( is_email($email) && isset($_POST['unsubscribe']) ) {
33
+ if ( $this->is_public($email) === false || $this->is_registered($email) ) {
34
('' == $unsub_error) ? $unsub_error = "$email" : $unsub_error .= ", $email";
35
continue;
36
}
38
$message = "<div id=\"message\" class=\"updated fade\"><p><strong>" . __('Address(es) unsubscribed!', 'subscribe2') . "</strong></p></div>";
39
}
40
}
41
+ if ( $reg_sub_error != '' ) {
42
+ echo "<div id=\"message\" class=\"error\"><p><strong>" . __('Some emails were not processed, the following are already Registered Subscribers' , 'subscribe2') . ":<br />$reg_sub_error</strong></p></div>";
43
+ }
44
+ if ( $pub_sub_error != '' ) {
45
+ echo "<div id=\"message\" class=\"error\"><p><strong>" . __('Some emails were not processed, the following are already Public Subscribers' , 'subscribe2') . ":<br />$pub_sub_error</strong></p></div>";
46
}
47
if ( $unsub_error != '' ) {
48
echo "<div id=\"message\" class=\"error\"><p><strong>" . __('Some emails were not processed, the following were not in the database' , 'subscribe2') . ":<br />$unsub_error</strong></p></div>";
49
}
50
+ if ( $message != '' ) {
51
+ echo $message;
52
+ }
53
$_POST['what'] = 'confirmed';
54
} elseif ( (isset($_POST['action']) && $_POST['action'] === 'delete') || (isset($_POST['action2']) && $_POST['action2'] === 'delete') ) {
55
if ( $current_tab === 'public' ) {
68
continue;
69
} else {
70
$users_deleted = __('User(s) deleted! Any posts made by these users were assigned to you', 'subscribe2');
71
+ wp_delete_user($user->$id, $current_user->ID);
72
}
73
}
74
echo "<div id=\"message\" class=\"updated fade\"><p><strong>" . $users_deleted_error . $users_deleted . "</strong></p></div>";
180
181
// show our form
182
echo "<div class=\"wrap\">";
183
+ if ( version_compare($GLOBALS['wp_version'], '3.8', '<=') ) {
184
+ echo "<div id=\"icon-tools\" class=\"icon32\"></div>";
185
+ }
186
$tabs = array('public' => __('Public Subscribers', 'subscribe2'), 'registered' => __('Registered Subscribers', 'subscribe2'));
187
echo "<h2 class=\"nav-tab-wrapper\">";
188
foreach ( $tabs as $tab_key => $tab_caption ) {
admin/your_subscriptions.php CHANGED
@@ -92,7 +92,9 @@ if ( isset($_POST['s2_admin']) && 'user' == $_POST['s2_admin'] ) {
92
93
// show our form
94
echo "<div class=\"wrap\">";
95
- echo "<div id=\"icon-users\" class=\"icon32\"></div>";
96
echo "<h2>" . __('Notification Settings', 'subscribe2') . "</h2>\r\n";
97
if ( isset($_GET['email']) ) {
98
$user = get_userdata($user_ID);
@@ -223,6 +225,7 @@ if ( $this->s2_mu && !isset($_GET['email']) ) {
223
restore_current_blog();
224
}
225
226
if ( !empty($blogs_subscribed) ) {
227
ksort($blogs_subscribed);
228
echo "<h2>" . __('Subscribed Blogs', 'subscribe2') . "</h2>\r\n";
@@ -264,6 +267,7 @@ if ( $this->s2_mu && !isset($_GET['email']) ) {
264
}
265
echo "</ul>\r\n";
266
}
267
}
268
269
echo "</div>\r\n";
92
93
// show our form
94
echo "<div class=\"wrap\">";
95
+ if ( version_compare($GLOBALS['wp_version'], '3.8', '<=') ) {
96
+ echo "<div id=\"icon-users\" class=\"icon32\"></div>";
97
+ }
98
echo "<h2>" . __('Notification Settings', 'subscribe2') . "</h2>\r\n";
99
if ( isset($_GET['email']) ) {
100
$user = get_userdata($user_ID);
225
restore_current_blog();
226
}
227
228
+ echo "<div class=\"s2_admin\" id=\"s2_mu_sites\">\r\n";
229
if ( !empty($blogs_subscribed) ) {
230
ksort($blogs_subscribed);
231
echo "<h2>" . __('Subscribed Blogs', 'subscribe2') . "</h2>\r\n";
267
}
268
echo "</ul>\r\n";
269
}
270
+ echo "</div>\r\n";
271
}
272
273
echo "</div>\r\n";
classes/class-s2-admin.php CHANGED
@@ -234,7 +234,7 @@ class s2_admin extends s2class {
234
if ( stripos($_SERVER['REQUEST_URI'], 'widgets.php' ) !== false ) {
235
wp_enqueue_style('farbtastic');
236
wp_enqueue_script('farbtastic');
237
- wp_register_script('s2_colorpicker', S2URL . 'include/s2_colorpicker' . $this->script_debug . '.js', array('farbtastic'), '1.1'); //my js
238
wp_enqueue_script('s2_colorpicker');
239
}
240
} // end widget_s2_counter_css_and_js()
@@ -319,6 +319,54 @@ class s2_admin extends s2class {
319
}
320
} // end signup_ip()
321
322
/**
323
Display a table of categories with checkboxes
324
Optionally pre-select those categories specified
@@ -673,7 +721,6 @@ class s2_admin extends s2class {
673
$pages = get_pages();
674
if ( empty($pages) ) { return; }
675
676
- $option = "<option value=\"0\">" . __('Select a page', 'subscribe2') . "</option>\r\n";
677
foreach ( $pages as $page ) {
678
$option .= "<option value=\"" . $page->ID . "\"";
679
if ( $page->ID == $s2page ) {
234
if ( stripos($_SERVER['REQUEST_URI'], 'widgets.php' ) !== false ) {
235
wp_enqueue_style('farbtastic');
236
wp_enqueue_script('farbtastic');
237
+ wp_register_script('s2_colorpicker', S2URL . 'include/s2_colorpicker' . $this->script_debug . '.js', array('farbtastic'), '1.2');
238
wp_enqueue_script('s2_colorpicker');
239
}
240
} // end widget_s2_counter_css_and_js()
319
}
320
} // end signup_ip()
321
322
+ /**
323
+ Export subscriber emails and other details to CSV
324
+ */
325
+ function prepare_export( $subscribers ) {
326
+ if ( empty($subscribers) ) { return; }
327
+ $subscribers = explode(",\r\n", $subscribers);
328
+ natcasesort($subscribers);
329
+
330
+ $exportcsv = _x('User Email,User Type,User Name,Confirm Date,IP', 'Comma Separated Column Header names for CSV Export' , 'subscribe2');
331
+ $all_cats = $this->all_cats(false, 'ID');
332
+
333
+ foreach ($all_cats as $cat) {
334
+ $exportcsv .= "," . html_entity_decode($cat->cat_name, ENT_QUOTES);
335
+ $cat_ids[] = $cat->term_id;
336
+ }
337
+ $exportcsv .= "\r\n";
338
+
339
+ if ( !function_exists('get_userdata') ) {
340
+ require_once(ABSPATH . WPINC . '/pluggable.php');
341
+ }
342
+
343
+ foreach ( $subscribers as $subscriber ) {
344
+ if ( $this->is_registered($subscriber) ) {
345
+ $user_ID = $this->get_user_id( $subscriber );
346
+ $user_info = get_userdata( $user_ID );
347
+
348
+ $cats = explode(',', get_user_meta($user_ID, $this->get_usermeta_keyname('s2_subscribed'), true));
349
+ $subscribed_cats = '';
350
+ foreach ( $cat_ids as $cat ) {
351
+ (in_array($cat, $cats)) ? $subscribed_cats .= ",Yes" : $subscribed_cats .= ",No";
352
+ }
353
+
354
+ $exportcsv .= $subscriber . ',';
355
+ $exportcsv .= __('Registered User', 'subscribe2');
356
+ $exportcsv .= ',' . $user_info->display_name;
357
+ $exportcsv .= ',,' . $subscribed_cats . "\r\n";
358
+ } else {
359
+ if ( $this->is_public($subscriber) === '1' ) {
360
+ $exportcsv .= $subscriber . ',' . __('Confirmed Public Subscriber', 'subscribe2') . ',,' . $this->signup_date($subscriber) . ',' . $this->signup_ip($subscriber) . "\r\n";
361
+ } elseif ( $this->is_public($subscriber) === '0' ) {
362
+ $exportcsv .= $subscriber . ',' . __('Unconfirmed Public Subscriber', 'subscribe2') . ',,' . $this->signup_date($subscriber) . ',' . $this->signup_ip($subscriber) . "\r\n";
363
+ }
364
+ }
365
+ }
366
+
367
+ return $exportcsv;
368
+ } // end prepare_export()
369
+
370
/**
371
Display a table of categories with checkboxes
372
Optionally pre-select those categories specified
721
$pages = get_pages();
722
if ( empty($pages) ) { return; }
723
724
foreach ( $pages as $page ) {
725
$option .= "<option value=\"" . $page->ID . "\"";
726
if ( $page->ID == $s2page ) {
classes/class-s2-core.php CHANGED
@@ -41,9 +41,7 @@ class s2class {
41
42
$this->error = "<p class=\"s2_error\">" . __('Sorry, there seems to be an error on the server. Please try again later.', 'subscribe2') . "</p>";
43
44
- $this->no_page = __('You must to create a WordPress page for this plugin to work correctly.', 'subscribe2');
45
-
46
- $this->disallowed_keywords = __('Your chosen email type (per-post or digest) does not support the following keywords:', 'subscribe2');
47
48
$this->mail_sent = "<p class=\"s2_message\">" . __('Message sent!', 'subscribe2') . "</p>";
49
@@ -536,13 +534,33 @@ class s2class {
536
$mailtext = stripslashes($this->substitute($mailtext));
537
538
$plaintext = $post->post_content;
539
- if ( function_exists('strip_shortcodes') ) {
540
- $plaintext = strip_shortcodes($plaintext);
541
- }
542
$plaintext = preg_replace('|<s[^>]*>(.*)<\/s>|Ui','', $plaintext);
543
$plaintext = preg_replace('|<strike[^>]*>(.*)<\/strike>|Ui','', $plaintext);
544
$plaintext = preg_replace('|<del[^>]*>(.*)<\/del>|Ui','', $plaintext);
545
- $plaintext = trim(strip_tags($plaintext));
546
547
$gallid = '[gallery id="' . $post->ID . '"';
548
$content = str_replace('[gallery', $gallid, $post->post_content);
@@ -559,17 +577,16 @@ class s2class {
559
$content = apply_filters('the_content', $content);
560
$content = str_replace("]]>", "]]&gt", $content);
561
562
- $excerpt = $post->post_excerpt;
563
if ( '' == $excerpt ) {
564
// no excerpt, is there a <!--more--> ?
565
- if ( false !== strpos($plaintext, '<!--more-->') ) {
566
- list($excerpt, $more) = explode('<!--more-->', $plaintext, 2);
567
- // strip leading and trailing whitespace
568
- $excerpt = strip_tags($excerpt);
569
- $excerpt = trim($excerpt);
570
} else {
571
// no <!--more-->, so grab the first 55 words
572
- $excerpt = strip_tags($plaintext);
573
$words = explode(' ', $excerpt, $this->excerpt_length + 1);
574
if (count($words) > $this->excerpt_length) {
575
array_pop($words);
@@ -578,7 +595,7 @@ class s2class {
578
}
579
}
580
}
581
- $html_excerpt = $post->post_excerpt;
582
if ( '' == $html_excerpt ) {
583
// no excerpt, is there a <!--more--> ?
584
if ( false !== strpos($content, '<!--more-->') ) {
@@ -626,26 +643,26 @@ class s2class {
626
// Registered Subscribers first
627
// first we send plaintext summary emails
628
$recipients = $this->get_registered("cats=$post_cats_string&format=excerpt&author=$post->post_author");
629
- $recipients = apply_filters('s2_send_plain_excerpt_suscribers', $recipients, $post->ID);
630
$this->mail($recipients, $subject, $plain_excerpt_body);
631
632
// next we send plaintext full content emails
633
$recipients = $this->get_registered("cats=$post_cats_string&format=post&author=$post->post_author");
634
- $recipients = apply_filters('s2_send_plain_fullcontent_suscribers', $recipients, $post->ID);
635
$this->mail($recipients, $subject, $plain_body);
636
637
// next we send html excerpt content emails
638
$recipients = $this->get_registered("cats=$post_cats_string&format=html_excerpt&author=$post->post_author");
639
- $recipients = apply_filters('s2_send_html_excerpt_suscribers', $recipients, $post->ID);
640
$this->mail($recipients, $subject, $html_excerpt_body, 'html');
641
642
// next we send html full content emails
643
$recipients = $this->get_registered("cats=$post_cats_string&format=html&author=$post->post_author");
644
- $recipients = apply_filters('s2_send_html_fullcontent_suscribers', $recipients, $post->ID);
645
$this->mail($recipients, $subject, $html_body, 'html');
646
647
// and finally we send to Public Subscribers
648
- $recipients = apply_filters('s2_send_public_suscribers', $public, $post->ID);
649
$this->mail($recipients, $subject, $plain_excerpt_body, 'text');
650
}
651
} // end publish()
@@ -683,7 +700,8 @@ class s2class {
683
$body = $this->substitute(stripslashes($this->subscribe2_options['remind_email']));
684
$subject = $this->substitute(stripslashes($this->subscribe2_options['remind_subject']));
685
} else {
686
- $body = $this->substitute(stripslashes($this->subscribe2_options['confirm_email']));
687
if ( 'add' == $what ) {
688
$body = str_replace("{ACTION}", $this->subscribe, $body);
689
$subject = str_replace("{ACTION}", $this->subscribe, $this->subscribe2_options['confirm_subject']);
@@ -1137,53 +1155,6 @@ class s2class {
1137
return $wpdb->prepare('%s', $data);
1138
} // end prepare_in_data()
1139
1140
- /**
1141
- Export subscriber emails and other details to CSV
1142
- */
1143
- function prepare_export( $subscribers ) {
1144
- $subscribers = explode(",\r\n", $subscribers);
1145
- natcasesort($subscribers);
1146
-
1147
- $exportcsv = "User Email,User Type,User Name";
1148
- $all_cats = $this->all_cats(false, 'ID');
1149
-
1150
- foreach ($all_cats as $cat) {
1151
- $exportcsv .= "," . $cat->cat_name;
1152
- $cat_ids[] = $cat->term_id;
1153
- }
1154
- $exportcsv .= "\r\n";
1155
-
1156
- if ( !function_exists('get_userdata') ) {
1157
- require_once(ABSPATH . WPINC . '/pluggable.php');
1158
- }
1159
-
1160
- foreach ( $subscribers as $subscriber ) {
1161
- if ( $this->is_registered($subscriber) ) {
1162
- $user_ID = $this->get_user_id( $subscriber );
1163
- $user_info = get_userdata( $user_ID );
1164
-
1165
- $cats = explode(',', get_user_meta($user_ID, $this->get_usermeta_keyname('s2_subscribed'), true));
1166
- $subscribed_cats = '';
1167
- foreach ( $cat_ids as $cat ) {
1168
- (in_array($cat, $cats)) ? $subscribed_cats .= ",Yes" : $subscribed_cats .= ",No";
1169
- }
1170
-
1171
- $exportcsv .= $subscriber . ',';
1172
- $exportcsv .= __('Registered User', 'subscribe2');
1173
- $exportcsv .= ',' . $user_info->display_name;
1174
- $exportcsv .= $subscribed_cats . "\r\n";
1175
- } else {
1176
- if ( $this->is_public($subscriber) === '1' ) {
1177
- $exportcsv .= $subscriber . ',' . __('Confirmed Public Subscriber', 'subscribe2') . "\r\n";
1178
- } elseif ( $this->is_public($subscriber) === '0' ) {
1179
- $exportcsv .= $subscriber . ',' . __('Unconfirmed Public Subscriber', 'subscribe2') . "\r\n";
1180
- }
1181
- }
1182
- }
1183
-
1184
- return $exportcsv;
1185
- } // end prepare_export()
1186
-
1187
/**
1188
Filter for usermeta table key names to adjust them if needed for WPMU blogs
1189
*/
@@ -1230,7 +1201,7 @@ class s2class {
1230
function register_post($user_ID = 0) {
1231
global $_POST;
1232
if ( 0 == $user_ID ) { return; }
1233
- if ( 'yes' == $this->subscribe2_options['autosub'] || ( 'on' == $_POST['reg_subscribe'] && 'wpreg' == $this->subscribe2_options['autosub'] ) ) {
1234
$this->register($user_ID, true);
1235
} else {
1236
$this->register($user_ID, false);
@@ -1245,7 +1216,7 @@ class s2class {
1245
if ( is_user_logged_in() ) {
1246
echo $this->profile;
1247
} else {
1248
- echo "<p style=\"width: auto;\"><label><input type=\"checkbox\" name=\"s2_comment_request\" value=\"1\" " . checked($this->subscribe2_options['comment_def'], 'yes', false) . "/>" . __('Check here to Subscribe to notifications for new posts', 'subscribe2') . "</label></p>";
1249
}
1250
} // end s2_comment_meta_form()
1251
@@ -1261,6 +1232,7 @@ class s2class {
1261
break;
1262
case '1':
1263
// Approved so add
1264
$is_public = $this->is_public($comment->comment_author_email);
1265
if ( $is_public == 0 ) {
1266
$this->toggle($comment->comment_author_email);
@@ -1334,9 +1306,10 @@ class s2class {
1334
/**
1335
Add a weekly event to cron
1336
*/
1337
- function add_weekly_sched($sched) {
1338
- $sched['weekly'] = array('interval' => 604800, 'display' => __('Weekly', 'subscribe2'));
1339
- return $sched;
1340
} // end add_weekly_sched()
1341
1342
/**
@@ -1394,14 +1367,16 @@ class s2class {
1394
}
1395
} else {
1396
// we are sending a preview
1397
$posts = get_posts('numberposts=1');
1398
}
1399
1400
// Collect sticky posts if desired
1401
if ( $this->subscribe2_options['stickies'] == 'yes' ) {
1402
- $stickies = get_posts(array('post__in' => get_option('sticky_posts')));
1403
- if ( !empty($stickies) ) {
1404
- $posts = array_merge((array)$stickies, (array)$posts);
1405
}
1406
}
1407
@@ -1507,20 +1482,16 @@ class s2class {
1507
$message_post .= "\r\n";
1508
$message_posttime .= "\r\n";
1509
1510
- ( !empty($post->post_excerpt) ) ? $excerpt = $post->post_excerpt : $excerpt = '';
1511
if ( '' == $excerpt ) {
1512
// no excerpt, is there a <!--more--> ?
1513
if ( false !== strpos($post->post_content, '<!--more-->') ) {
1514
list($excerpt, $more) = explode('<!--more-->', $post->post_content, 2);
1515
$excerpt = strip_tags($excerpt);
1516
- if ( function_exists('strip_shortcodes') ) {
1517
- $excerpt = strip_shortcodes($excerpt);
1518
- }
1519
} else {
1520
$excerpt = strip_tags($post->post_content);
1521
- if ( function_exists('strip_shortcodes') ) {
1522
- $excerpt = strip_shortcodes($excerpt);
1523
- }
1524
$words = explode(' ', $excerpt, $this->excerpt_length + 1);
1525
if ( count($words) > $this->excerpt_length ) {
1526
array_pop($words);
@@ -1661,17 +1632,15 @@ class s2class {
1661
if ( $this->subscribe2_options['email_freq'] != 'never' ) {
1662
add_action('s2_digest_cron', array(&$this, 'subscribe2_cron'));
1663
} else {
1664
- add_action('new_to_publish', array(&$this, 'publish'));
1665
- add_action('draft_to_publish', array(&$this, 'publish'));
1666
- add_action('auto-draft_to_publish', array(&$this, 'publish'));
1667
- add_action('pending_to_publish', array(&$this, 'publish'));
1668
- add_action('private_to_publish', array(&$this, 'publish'));
1669
- add_action('future_to_publish', array(&$this, 'publish'));
1670
if ( $this->subscribe2_options['private'] == 'yes' ) {
1671
- add_action('new_to_private', array(&$this, 'publish'));
1672
- add_action('draft_to_private', array(&$this, 'publish'));
1673
- add_action('auto-draft_to_private', array(&$this, 'publish'));
1674
- add_action('pending_to_private', array(&$this, 'publish'));
1675
}
1676
}
1677
// add actions for comment subscribers
41
42
$this->error = "<p class=\"s2_error\">" . __('Sorry, there seems to be an error on the server. Please try again later.', 'subscribe2') . "</p>";
43
44
+ $this->no_page = __('You must create a WordPress page for this plugin to work correctly.', 'subscribe2');
45
46
$this->mail_sent = "<p class=\"s2_message\">" . __('Message sent!', 'subscribe2') . "</p>";
47
534
$mailtext = stripslashes($this->substitute($mailtext));
535
536
$plaintext = $post->post_content;
537
+ $plaintext = strip_shortcodes($plaintext);
538
+
539
$plaintext = preg_replace('|<s[^>]*>(.*)<\/s>|Ui','', $plaintext);
540
$plaintext = preg_replace('|<strike[^>]*>(.*)<\/strike>|Ui','', $plaintext);
541
$plaintext = preg_replace('|<del[^>]*>(.*)<\/del>|Ui','', $plaintext);
542
+ $excerpttext = $plaintext;
543
+
544
+ if ( strstr($mailtext, "{REFERENCELINKS}") ) {
545
+ $mailtext = str_replace("{REFERENCELINKS}", '', $mailtext);
546
+ $plaintext_links = '';
547
+ $i = 0;
548
+ while ( preg_match('|<a([^>]*)>(.*)<\/a>|Ui', $plaintext, $matches) ) {
549
+ if ( preg_match('|href="([^"]*)"|', $matches[1], $link_matches) ){
550
+ $plaintext_links .= sprintf( "[%d] %s\r\n", ++$i, $link_matches[1] );
551
+ $link_replacement = sprintf( "%s [%d]", $matches[2], $i );
552
+ } else {
553
+ $link_replacement = $matches[2];
554
+ }
555
+ $plaintext = preg_replace('|<a[^>]*>(.*)<\/a>|Ui', $link_replacement, $plaintext, 1);
556
+ }
557
+ }
558
+
559
+ $plaintext = trim(strip_tags($plaintext));
560
+
561
+ if ( strstr($mailtext, "{REFERENCELINKS}") && $plaintext_links != '' ) {
562
+ $plaintext .= "\r\n\r\n" . trim($plaintext_links);
563
+ }
564
565
$gallid = '[gallery id="' . $post->ID . '"';
566
$content = str_replace('[gallery', $gallid, $post->post_content);
577
$content = apply_filters('the_content', $content);
578
$content = str_replace("]]>", "]]&gt", $content);
579
580
+ $excerpt = trim($post->post_excerpt);
581
if ( '' == $excerpt ) {
582
// no excerpt, is there a <!--more--> ?
583
+ if ( false !== strpos($excerpttext, '<!--more-->') ) {
584
+ list($excerpt, $more) = explode('<!--more-->', $excerpttext, 2);
585
+ // strip tags and trailing whitespace
586
+ $excerpt = trim(strip_tags($excerpt));
587
} else {
588
// no <!--more-->, so grab the first 55 words
589
+ $excerpt = trim(strip_tags($excerpttext));
590
$words = explode(' ', $excerpt, $this->excerpt_length + 1);
591
if (count($words) > $this->excerpt_length) {
592
array_pop($words);
595
}
596
}
597
}
598
+ $html_excerpt = trim($post->post_excerpt);
599
if ( '' == $html_excerpt ) {
600
// no excerpt, is there a <!--more--> ?
601
if ( false !== strpos($content, '<!--more-->') ) {
643
// Registered Subscribers first
644
// first we send plaintext summary emails
645
$recipients = $this->get_registered("cats=$post_cats_string&format=excerpt&author=$post->post_author");
646
+ $recipients = apply_filters('s2_send_plain_excerpt_subscribers', $recipients, $post->ID);
647
$this->mail($recipients, $subject, $plain_excerpt_body);
648
649
// next we send plaintext full content emails
650
$recipients = $this->get_registered("cats=$post_cats_string&format=post&author=$post->post_author");
651
+ $recipients = apply_filters('s2_send_plain_fullcontent_subscribers', $recipients, $post->ID);
652
$this->mail($recipients, $subject, $plain_body);
653
654
// next we send html excerpt content emails
655
$recipients = $this->get_registered("cats=$post_cats_string&format=html_excerpt&author=$post->post_author");
656
+ $recipients = apply_filters('s2_send_html_excerpt_subscribers', $recipients, $post->ID);
657
$this->mail($recipients, $subject, $html_excerpt_body, 'html');
658
659
// next we send html full content emails
660
$recipients = $this->get_registered("cats=$post_cats_string&format=html&author=$post->post_author");
661
+ $recipients = apply_filters('s2_send_html_fullcontent_subscribers', $recipients, $post->ID);
662
$this->mail($recipients, $subject, $html_body, 'html');
663
664
// and finally we send to Public Subscribers
665
+ $recipients = apply_filters('s2_send_public_subscribers', $public, $post->ID);
666
$this->mail($recipients, $subject, $plain_excerpt_body, 'text');
667
}
668
} // end publish()
700
$body = $this->substitute(stripslashes($this->subscribe2_options['remind_email']));
701
$subject = $this->substitute(stripslashes($this->subscribe2_options['remind_subject']));
702
} else {
703
+ $body = apply_filters('s2_confirm_email', stripslashes($this->subscribe2_options['confirm_email']), $what);
704
+ $body = $this->substitute($body);
705
if ( 'add' == $what ) {
706
$body = str_replace("{ACTION}", $this->subscribe, $body);
707
$subject = str_replace("{ACTION}", $this->subscribe, $this->subscribe2_options['confirm_subject']);
1155
return $wpdb->prepare('%s', $data);
1156
} // end prepare_in_data()
1157
1158
/**
1159
Filter for usermeta table key names to adjust them if needed for WPMU blogs
1160
*/
1201
function register_post($user_ID = 0) {
1202
global $_POST;
1203
if ( 0 == $user_ID ) { return; }
1204
+ if ( 'yes' == $this->subscribe2_options['autosub'] || ( isset($_POST['reg_subscribe']) && 'on' == $_POST['reg_subscribe'] && 'wpreg' == $this->subscribe2_options['autosub'] ) ) {
1205
$this->register($user_ID, true);
1206
} else {
1207
$this->register($user_ID, false);
1216
if ( is_user_logged_in() ) {
1217
echo $this->profile;
1218
} else {
1219
+ echo "<p style=\"width: auto;\"><label><input type=\"checkbox\" name=\"s2_comment_request\" value=\"1\" " . checked($this->subscribe2_options['comment_def'], 'yes', false) . "/> " . __('Check here to Subscribe to notifications for new posts', 'subscribe2') . "</label></p>";
1220
}
1221
} // end s2_comment_meta_form()
1222
1232
break;
1233
case '1':
1234
// Approved so add
1235
+ $comment = get_comment($comment_ID);
1236
$is_public = $this->is_public($comment->comment_author_email);
1237
if ( $is_public == 0 ) {
1238
$this->toggle($comment->comment_author_email);
1306
/**
1307
Add a weekly event to cron
1308
*/
1309
+ function add_weekly_sched($scheds) {
1310
+ $scheds['weekly'] = array('interval' => 604800, 'display' => __('Weekly', 'subscribe2'));
1311
+
1312
+ return $scheds;
1313
} // end add_weekly_sched()
1314
1315
/**
1367
}
1368
} else {
1369
// we are sending a preview
1370
+ $now = $prev = $last = current_time('mysql');
1371
$posts = get_posts('numberposts=1');
1372
}
1373
1374
// Collect sticky posts if desired
1375
if ( $this->subscribe2_options['stickies'] == 'yes' ) {
1376
+ $sticky_ids = get_option('sticky_posts');
1377
+ if ( !empty($sticky_ids) ) {
1378
+ $sticky_posts = get_posts( array('post__in' => $sticky_ids) );
1379
+ $posts = array_merge((array)$sticky_posts, (array)$posts);
1380
}
1381
}
1382
1482
$message_post .= "\r\n";
1483
$message_posttime .= "\r\n";
1484
1485
+ ( !empty($post->post_excerpt) ) ? $excerpt = trim($post->post_excerpt) : $excerpt = '';
1486
if ( '' == $excerpt ) {
1487
// no excerpt, is there a <!--more--> ?
1488
if ( false !== strpos($post->post_content, '<!--more-->') ) {
1489
list($excerpt, $more) = explode('<!--more-->', $post->post_content, 2);
1490
$excerpt = strip_tags($excerpt);
1491
+ $excerpt = strip_shortcodes($excerpt);
1492
} else {
1493
$excerpt = strip_tags($post->post_content);
1494
+ $excerpt = strip_shortcodes($excerpt);
1495
$words = explode(' ', $excerpt, $this->excerpt_length + 1);
1496
if ( count($words) > $this->excerpt_length ) {
1497
array_pop($words);
1632
if ( $this->subscribe2_options['email_freq'] != 'never' ) {
1633
add_action('s2_digest_cron', array(&$this, 'subscribe2_cron'));
1634
} else {
1635
+ $statuses = apply_filters('s2_post_statuses', array('new', 'draft', 'auto-draft', 'pending'));
1636
if ( $this->subscribe2_options['private'] == 'yes' ) {
1637
+ foreach ( $statuses as $status ) {
1638
+ add_action("{$status}_to_private", array(&$this, 'publish'));
1639
+ }
1640
+ }
1641
+ array_push($statuses, 'private', 'future');
1642
+ foreach ( $statuses as $status ) {
1643
+ add_action("{$status}_to_publish", array(&$this, 'publish'));
1644
}
1645
}
1646
// add actions for comment subscribers
classes/class-s2-frontend.php CHANGED
@@ -6,9 +6,8 @@ class s2_frontend extends s2class {
6
*/
7
function shortcode($atts) {
8
extract(shortcode_atts(array(
9
- 'hide' => strtolower(''),
10
'id' => '',
11
- 'url' => '',
12
'nojs' => 'false',
13
'noantispam' => 'false',
14
'link' => '',
@@ -18,7 +17,7 @@ class s2_frontend extends s2class {
18
19
// if link is true return a link to the page with the ajax class
20
if ( $link !== '' && !is_user_logged_in() ) {
21
- $hide_id = ($hide === '') ? "": " id=\"" . $hide . "\"";
22
$this->s2form = "<a href=\"" . get_permalink($this->subscribe2_options['s2page']) . "\" class=\"s2popup\"" . $hide_id . ">" . $link . "</a>\r\n";
23
return $this->s2form;
24
}
@@ -28,9 +27,9 @@ class s2_frontend extends s2class {
28
$subscribe_button_value = apply_filters('s2_subscribe_button', __('Subscribe', 'subscribe2'));
29
30
// if a button is hidden, show only other
31
- if ( $hide == 'subscribe' ) {
32
$this->input_form_action = "<input type=\"submit\" name=\"unsubscribe\" value=\"" . esc_attr($unsubscribe_button_value) . "\" />";
33
- } elseif ( $hide == 'unsubscribe' ) {
34
$this->input_form_action = "<input type=\"submit\" name=\"subscribe\" value=\"" . esc_attr($subscribe_button_value) . "\" />";
35
} else {
36
// both form input actions
@@ -52,7 +51,7 @@ class s2_frontend extends s2class {
52
// allow remote setting of email in form
53
if ( isset($_REQUEST['email']) && is_email($_REQUEST['email']) ) {
54
$value = $this->sanitize_email($_REQUEST['email']);
55
- } elseif ( $nojs == 'true' ) {
56
$value = '';
57
} else {
58
$value = __('Enter email address...', 'subscribe2');
@@ -60,26 +59,26 @@ class s2_frontend extends s2class {
60
61
// if wrap is true add paragraph html tags
62
$wrap_text = '';
63
- if ( $wrap == 'true' ) {
64
$wrap_text = '</p><p>';
65
}
66
67
// deploy some anti-spam measures
68
$antispam_text = '';
69
- if ( $noantispam != 'true' ) {
70
$antispam_text = "<span style=\"display:none !important\">";
71
$antispam_text .= "<label for=\"name\">Leave Blank:</label><input type=\"text\" id=\"name\" name=\"name\" />";
72
- $antispam_text .= "<label for=\"uri\">Don't Change:</label><input type=\"text\" id=\"uri\" name=\"uri\" value=\"http://\" />";
73
$antispam_text .= "</span>";
74
}
75
76
// build default form
77
- if ( $nojs == 'true' ) {
78
$this->form = "<form method=\"post\"" . $action . "><input type=\"hidden\" name=\"ip\" value=\"" . $_SERVER['REMOTE_ADDR'] . "\" />" . $antispam_text . "<p><label for=\"s2email\">" . __('Your email:', 'subscribe2') . "</label><br /><input type=\"text\" name=\"email\" id=\"s2email\" value=\"" . $value . "\" size=\"" . $size . "\" />" . $wrap_text . $this->input_form_action . "</p></form>";
79
} else {
80
$this->form = "<form method=\"post\"" . $action . "><input type=\"hidden\" name=\"ip\" value=\"" . $_SERVER['REMOTE_ADDR'] . "\" />" . $antispam_text . "<p><label for=\"s2email\">" . __('Your email:', 'subscribe2') . "</label><br /><input type=\"text\" name=\"email\" id=\"s2email\" value=\"" . $value . "\" size=\"" . $size . "\" onfocus=\"if (this.value == '" . $value . "') {this.value = '';}\" onblur=\"if (this.value == '') {this.value = '" . $value . "';}\" />" . $wrap_text . $this->input_form_action . "</p></form>\r\n";
81
}
82
- $this->s2form = $this->form;
83
84
global $user_ID;
85
get_currentuserinfo();
@@ -300,7 +299,11 @@ class s2_frontend extends s2class {
300
function add_ajax() {
301
// enqueue the jQuery script we need and let WordPress handle the dependencies
302
wp_enqueue_script('jquery-ui-dialog');
303
- wp_register_style('jquery-ui-style', apply_filters('s2_jqueryui_css', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/ui-darkness/jquery-ui.css'));
304
wp_enqueue_style('jquery-ui-style');
305
} // end add_ajax()
306
6
*/
7
function shortcode($atts) {
8
extract(shortcode_atts(array(
9
+ 'hide' => '',
10
'id' => '',
11
'nojs' => 'false',
12
'noantispam' => 'false',
13
'link' => '',
17
18
// if link is true return a link to the page with the ajax class
19
if ( $link !== '' && !is_user_logged_in() ) {
20
+ $hide_id = ($hide === '') ? "": " id=\"" . strtolower($hide) . "\"";
21
$this->s2form = "<a href=\"" . get_permalink($this->subscribe2_options['s2page']) . "\" class=\"s2popup\"" . $hide_id . ">" . $link . "</a>\r\n";
22
return $this->s2form;
23
}
27
$subscribe_button_value = apply_filters('s2_subscribe_button', __('Subscribe', 'subscribe2'));
28
29
// if a button is hidden, show only other
30
+ if ( strtolower($hide) == 'subscribe' ) {
31
$this->input_form_action = "<input type=\"submit\" name=\"unsubscribe\" value=\"" . esc_attr($unsubscribe_button_value) . "\" />";
32
+ } elseif ( strtolower($hide) == 'unsubscribe' ) {
33
$this->input_form_action = "<input type=\"submit\" name=\"subscribe\" value=\"" . esc_attr($subscribe_button_value) . "\" />";
34
} else {
35
// both form input actions
51
// allow remote setting of email in form
52
if ( isset($_REQUEST['email']) && is_email($_REQUEST['email']) ) {
53
$value = $this->sanitize_email($_REQUEST['email']);
54
+ } elseif ( strtolower($nojs) == 'true' ) {
55
$value = '';
56
} else {
57
$value = __('Enter email address...', 'subscribe2');
59
60
// if wrap is true add paragraph html tags
61
$wrap_text = '';
62
+ if ( strtolower($wrap) == 'true' ) {
63
$wrap_text = '</p><p>';
64
}
65
66
// deploy some anti-spam measures
67
$antispam_text = '';
68
+ if ( strtolower($noantispam) != 'true' ) {
69
$antispam_text = "<span style=\"display:none !important\">";
70
$antispam_text .= "<label for=\"name\">Leave Blank:</label><input type=\"text\" id=\"name\" name=\"name\" />";
71
+ $antispam_text .= "<label for=\"uri\">Do Not Change:</label><input type=\"text\" id=\"uri\" name=\"uri\" value=\"http://\" />";
72
$antispam_text .= "</span>";
73
}
74
75
// build default form
76
+ if ( strtolower($nojs) == 'true' ) {
77
$this->form = "<form method=\"post\"" . $action . "><input type=\"hidden\" name=\"ip\" value=\"" . $_SERVER['REMOTE_ADDR'] . "\" />" . $antispam_text . "<p><label for=\"s2email\">" . __('Your email:', 'subscribe2') . "</label><br /><input type=\"text\" name=\"email\" id=\"s2email\" value=\"" . $value . "\" size=\"" . $size . "\" />" . $wrap_text . $this->input_form_action . "</p></form>";
78
} else {
79
$this->form = "<form method=\"post\"" . $action . "><input type=\"hidden\" name=\"ip\" value=\"" . $_SERVER['REMOTE_ADDR'] . "\" />" . $antispam_text . "<p><label for=\"s2email\">" . __('Your email:', 'subscribe2') . "</label><br /><input type=\"text\" name=\"email\" id=\"s2email\" value=\"" . $value . "\" size=\"" . $size . "\" onfocus=\"if (this.value == '" . $value . "') {this.value = '';}\" onblur=\"if (this.value == '') {this.value = '" . $value . "';}\" />" . $wrap_text . $this->input_form_action . "</p></form>\r\n";
80
}
81
+ $this->s2form = apply_filters('s2_form', $this->form);
82
83
global $user_ID;
84
get_currentuserinfo();
299
function add_ajax() {
300
// enqueue the jQuery script we need and let WordPress handle the dependencies
301
wp_enqueue_script('jquery-ui-dialog');
302
+ $css = 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/ui-darkness/jquery-ui.css';
303
+ if ( is_ssl() ) {
304
+ $css = str_replace('http:', 'https:', $css);
305
+ }
306
+ wp_register_style('jquery-ui-style', apply_filters('s2_jqueryui_css', $css));
307
wp_enqueue_style('jquery-ui-style');
308
} // end add_ajax()
309
include/options.php CHANGED
@@ -15,7 +15,7 @@ if (!isset($this->subscribe2_options['wpregdef'])) {
15
} // option to check registration form box by default
16
17
if (!isset($this->subscribe2_options['autoformat'])) {
18
- $this->subscribe2_options['autoformat'] = "text";
19
} // option for default auto-subscription email format
20
21
if (!isset($this->subscribe2_options['show_autosub'])) {
15
} // option to check registration form box by default
16
17
if (!isset($this->subscribe2_options['autoformat'])) {
18
+ $this->subscribe2_options['autoformat'] = "post";
19
} // option for default auto-subscription email format
20
21
if (!isset($this->subscribe2_options['show_autosub'])) {
include/s2_button.js CHANGED
@@ -1,2 +1,3 @@
1
// version 2.0 - original version for WordPress versions 3.3 and greater
2
- QTags.addButton('Subscribe2', 'Subscribe2', '[subscribe2]');
1
+ /* global QTags */
2
// version 2.0 - original version for WordPress versions 3.3 and greater
3
+ QTags.addButton( 'Subscribe2', 'Subscribe2', '[subscribe2]' );
include/s2_checkbox.js CHANGED
@@ -2,36 +2,38 @@
2
// version 1.1 - Updated with function fixes and for WordPress 3.2 / jQuery 1.6
3
// version 1.2 - Update to work when DISABLED is specified for changes in version 8.5
4
// version 1.3 - Update for Subscribe2 9.0 to remove unecessary code now WordPress 3.3 is minimum requirement
5
- jQuery(document).ready(function () {
6
// function to check or uncheck all when 'checkall' box it toggled
7
- jQuery('input[name="checkall"]').click(function () {
8
var checked_status = this.checked;
9
- jQuery('input[class="' + this.value + '"]').each(function () {
10
- if (jQuery(this).prop('disabled') === false) {
11
this.checked = checked_status;
12
}
13
});
14
});
15
// function to check or uncheck 'checkall' box when individual boxes are toggled
16
- jQuery('input[class^="checkall"]').click(function () {
17
var checked_status = true;
18
- jQuery('input[class="' + this.className + '"]').each(function () {
19
- if ((this.checked === true) && (checked_status === true)) {
20
checked_status = true;
21
} else {
22
checked_status = false;
23
}
24
- jQuery('input[value="' + this.className + '"]').prop('checked', checked_status);
25
});
26
});
27
// function to check or uncheck 'checkall' box when page is loaded
28
var checked_status = true;
29
- jQuery('input[class^="checkall"]').each(function () {
30
- if ((this.checked === true) && (checked_status === true)) {
31
checked_status = true;
32
} else {
33
checked_status = false;
34
}
35
- jQuery('input[value="' + this.className + '"]').prop('checked', checked_status);
36
});
37
});
2
// version 1.1 - Updated with function fixes and for WordPress 3.2 / jQuery 1.6
3
// version 1.2 - Update to work when DISABLED is specified for changes in version 8.5
4
// version 1.3 - Update for Subscribe2 9.0 to remove unecessary code now WordPress 3.3 is minimum requirement
5
+ jQuery( document ).ready(function () {
6
// function to check or uncheck all when 'checkall' box it toggled
7
+ jQuery( 'input[name="checkall"]' ).click(function () {
8
var checked_status = this.checked;
9
+ jQuery( 'input[class="' + this.value + '"]' ).each(function () {
10
+ if ( false === jQuery( this ).prop( 'disabled' ) ) {
11
this.checked = checked_status;
12
}
13
});
14
});
15
// function to check or uncheck 'checkall' box when individual boxes are toggled
16
+ jQuery( 'input[class^="checkall"]' ).click(function () {
17
var checked_status = true;
18
+ jQuery( 'input[class="' + this.className + '"]' ).each(function () {
19
+ if ( ( true === this.checked ) && ( true === checked_status ) ) {
20
checked_status = true;
21
} else {
22
checked_status = false;
23
}
24
+ jQuery( 'input[value="' + this.className + '"]' )
25
+ .prop( 'checked', checked_status );
26
});
27
});
28
// function to check or uncheck 'checkall' box when page is loaded
29
var checked_status = true;
30
+ jQuery( 'input[class^="checkall"]' ).each(function () {
31
+ if ( ( true === this.checked ) && ( true === checked_status ) ) {
32
checked_status = true;
33
} else {
34
checked_status = false;
35
}
36
+ jQuery( 'input[value="' + this.className + '"]' )
37
+ .prop( 'checked', checked_status );
38
});
39
});
include/s2_checkbox.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(document).ready(function(){jQuery('input[name="checkall"]').click(function(){var checked_status=this.checked;jQuery('input[class="'+this.value+'"]').each(function(){if(jQuery(this).prop('disabled')===false){this.checked=checked_status}})});jQuery('input[class^="checkall"]').click(function(){var checked_status=true;jQuery('input[class="'+this.className+'"]').each(function(){if((this.checked===true)&&(checked_status===true)){checked_status=true}else{checked_status=false}jQuery('input[value="'+this.className+'"]').prop('checked',checked_status)})});var checked_status=true;jQuery('input[class^="checkall"]').each(function(){if((this.checked===true)&&(checked_status===true)){checked_status=true}else{checked_status=false}jQuery('input[value="'+this.className+'"]').prop('checked',checked_status)})});
1
+ jQuery(document).ready(function(){jQuery('input[name="checkall"]').click(function(){var checked_status=this.checked;jQuery('input[class="'+this.value+'"]').each(function(){if(false===jQuery(this).prop('disabled')){this.checked=checked_status}})});jQuery('input[class^="checkall"]').click(function(){var checked_status=true;jQuery('input[class="'+this.className+'"]').each(function(){if((true===this.checked)&&(true===checked_status)){checked_status=true}else{checked_status=false}jQuery('input[value="'+this.className+'"]').prop('checked',checked_status)})});var checked_status=true;jQuery('input[class^="checkall"]').each(function(){if((true===this.checked)&&(true===checked_status)){checked_status=true}else{checked_status=false}jQuery('input[value="'+this.className+'"]').prop('checked',checked_status)})});
include/s2_colorpicker.js CHANGED
@@ -1,27 +1,31 @@
1
// version 1.0 - original version
2
// version 1.1 - Update for Subscribe2 9.0 to remove unecessary code now WordPress 3.3 is minimum requirement
3
- jQuery(document).ready(function () {
4
- jQuery(document).on('focus', '.colorpickerField', function () {
5
- if (jQuery(this).is('.s2_initialised') || this.id.search('__i__') !== -1) {
6
return; // exit early, already initialized or not activated
7
}
8
- jQuery(this).addClass('s2_initialised');
9
var picker,
10
- field = jQuery(this).attr('id').substr(0, 20);
11
- jQuery('.s2_colorpicker').each(function () {
12
- if (jQuery(this).attr('id').search(field) !== -1) {
13
- picker = jQuery(this).attr('id');
14
return false; // stop looping
15
}
16
});
17
- jQuery(this).on('focusin', function (event) {
18
- jQuery('.s2_colorpicker').hide();
19
- jQuery.farbtastic('#' + picker).linkTo(this);
20
- jQuery('#' + picker).slideDown();
21
});
22
- jQuery(this).on('focusout', function (event) {
23
- jQuery('#' + picker).slideUp();
24
});
25
- jQuery(this).trigger('focus');
26
});
27
- });
1
// version 1.0 - original version
2
// version 1.1 - Update for Subscribe2 9.0 to remove unecessary code now WordPress 3.3 is minimum requirement
3
+ // version 1.2 - Initialise the colour fields on page load so they are the correct colour
4
+ jQuery( document ).ready(function () {
5
+ jQuery( document ).on( 'focus', '.colorpickerField', function () {
6
+ if ( jQuery( this ).is( '.s2_initialised' ) || -1 !== this.id.search( '__i__' ) ) {
7
return; // exit early, already initialized or not activated
8
}
9
+ jQuery( this ).addClass( 's2_initialised' );
10
var picker,
11
+ field = this.id.substr( 0, 20 );
12
+ jQuery( '.s2_colorpicker' ).each(function () {
13
+ if ( -1 !== this.id.search( field ) ) {
14
+ picker = this.id;
15
return false; // stop looping
16
}
17
});
18
+ jQuery( this ).on( 'focusin', function () {
19
+ jQuery( '.s2_colorpicker' ).slideUp();
20
+ jQuery.farbtastic( '#' + picker ).linkTo( this );
21
+ jQuery( '#' + picker ).slideDown();
22
});
23
+ jQuery( this ).on( 'focusout', function () {
24
+ jQuery( '#' + picker ).slideUp();
25
});
26
+ jQuery( this ).trigger( 'focus' );
27
});
28
+ jQuery( '.colorpickerField' ).each(function () {
29
+ jQuery.farbtastic( '#' + this.id ).linkTo( this );
30
+ });
31
+ });
include/s2_colorpicker.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(document).ready(function(){jQuery(document).on('focus','.colorpickerField',function(){if(jQuery(this).is('.s2_initialised')||this.id.search('__i__')!==-1){return}jQuery(this).addClass('s2_initialised');var picker,field=jQuery(this).attr('id').substr(0,20);jQuery('.s2_colorpicker').each(function(){if(jQuery(this).attr('id').search(field)!==-1){picker=jQuery(this).attr('id');return false}});jQuery(this).on('focusin',function(event){jQuery('.s2_colorpicker').hide();jQuery.farbtastic('#'+picker).linkTo(this);jQuery('#'+picker).slideDown()});jQuery(this).on('focusout',function(event){jQuery('#'+picker).slideUp()});jQuery(this).trigger('focus')})});
1
+ jQuery(document).ready(function(){jQuery(document).on('focus','.colorpickerField',function(){if(jQuery(this).is('.s2_initialised')||-1!==this.id.search('__i__')){return}jQuery(this).addClass('s2_initialised');var picker,field=this.id.substr(0,20);jQuery('.s2_colorpicker').each(function(){if(-1!==this.id.search(field)){picker=this.id;return false}});jQuery(this).on('focusin',function(){jQuery('.s2_colorpicker').slideUp();jQuery.farbtastic('#'+picker).linkTo(this);jQuery('#'+picker).slideDown()});jQuery(this).on('focusout',function(){jQuery('#'+picker).slideUp()});jQuery(this).trigger('focus')});jQuery('.colorpickerField').each(function(){jQuery.farbtastic('#'+this.id).linkTo(this)})});
include/s2_date_time.js CHANGED
@@ -1,6 +1,6 @@
1
// Version 1.0 - original version
2
- jQuery(document).ready(function() {
3
- jQuery('#s2datepicker').datepicker({
4
dateFormat : 'MM d, yy'
5
});
6
});
1
// Version 1.0 - original version
2
+ jQuery( document ).ready(function() {
3
+ jQuery( '#s2datepicker' ).datepicker({
4
dateFormat : 'MM d, yy'
5
});
6
});
include/s2_edit.js CHANGED
@@ -1,56 +1,59 @@
1
// Version 1.0 - original version
2
// Version 1.1 - updated for Subscribe2 8.6
3
// Version 1.2 - updated for Subscribe2 9.0
4
- jQuery(document).ready(function () {
5
// hide our span before page loads
6
- jQuery('#s2bcclimit_2').hide();
7
- jQuery('#s2entries_2').hide();
8
- jQuery('#s2cron_2').hide();
9
});
10
11
//show span on clicking the edit link
12
- function s2_show(id) {
13
- jQuery('#s2' + id + '_2').show();
14
- jQuery('#s2' + id + '_1').hide();
15
return false;
16
}
17
18
// hide span on clicking the hide link
19
- function s2_hide(id) {
20
- jQuery('#s2' + id + '_1').show();
21
- jQuery('#s2' + id + '_2').hide();
22
return false;
23
}
24
25
- function s2_update(id) {
26
- var input = jQuery('input[name="' + id + '"]').val();
27
- jQuery('#s2' + id).html(input);
28
- s2_hide(id);
29
}
30
31
- function s2_revert(id) {
32
- var option = jQuery('#js' + id).val();
33
- jQuery('input[name="' + id + '"]').val(option);
34
- jQuery('#s2' + id).html(option);
35
- s2_hide(id);
36
}
37
38
- function s2_cron_update(id) {
39
- var date = jQuery('input[name="' + id + 'date"]').val();
40
- jQuery('#s2' + id + 'date').html(date);
41
- var time = jQuery('select[name="' + id + 'time"] option:selected').html();
42
- jQuery('#s2' + id + 'time').html(time);
43
- s2_hide(id);
44
}
45
46
- function s2_cron_revert(id) {
47
- var date = jQuery('#js' + id + 'date').val();
48
- jQuery('input[name="' + id + 'date"]').val(date);
49
- jQuery('#s2' + id + 'date').html(date);
50
- var time = jQuery('#js' + id + 'time').val();
51
- jQuery('[name='+ id + 'time] option').filter(function() {
52
- return (this.text == time);
53
- }).prop('selected', true).parent().focus();
54
- jQuery('#s2' + id + 'time').html(time);
55
- s2_hide(id);
56
}
1
+ /* exported s2_show, s2_hide, s2_update, s2_revert, s2_cron_update, s2_cron_revert */
2
// Version 1.0 - original version
3
// Version 1.1 - updated for Subscribe2 8.6
4
// Version 1.2 - updated for Subscribe2 9.0
5
+ jQuery( document ).ready(function () {
6
// hide our span before page loads
7
+ jQuery( '#s2bcclimit_2' ).hide();
8
+ jQuery( '#s2entries_2' ).hide();
9
+ jQuery( '#s2cron_2' ).hide();
10
});
11
12
//show span on clicking the edit link
13
+ function s2_show( id ) {
14
+ jQuery( '#s2' + id + '_2' ).show();
15
+ jQuery( '#s2' + id + '_1' ).hide();
16
return false;
17
}
18
19
// hide span on clicking the hide link
20
+ function s2_hide( id ) {
21
+ jQuery( '#s2' + id + '_1' ).show();
22
+ jQuery( '#s2' + id + '_2' ).hide();
23
return false;
24
}
25
26
+ function s2_update( id ) {
27
+ var input = jQuery( 'input[name="' + id + '"]' ).val();
28
+ jQuery( '#s2' + id ).html( input );
29
+ s2_hide( id );
30
}
31
32
+ function s2_revert( id ) {
33
+ var option = jQuery( '#js' + id ).val();
34
+ jQuery( 'input[name="' + id + '"]' ).val( option );
35
+ jQuery( '#s2' + id ).html( option );
36
+ s2_hide( id );
37
}
38
39
+ function s2_cron_update( id ) {
40
+ var date, time;
41
+ date = jQuery( 'input[name="' + id + 'date"]' ).val();
42
+ jQuery( '#s2' + id + 'date' ).html( date );
43
+ time = jQuery( 'select[name="' + id + 'time"] option:selected' ).html();
44
+ jQuery( '#s2' + id + 'time' ).html( time );
45
+ s2_hide( id );
46
}
47
48
+ function s2_cron_revert( id ) {
49
+ var date, time;
50
+ date = jQuery( '#js' + id + 'date' ).val();
51
+ jQuery( 'input[name="' + id + 'date"]' ).val( date );
52
+ jQuery( '#s2' + id + 'date' ).html( date );
53
+ time = jQuery( '#js' + id + 'time' ).val();
54
+ jQuery( '[name='+ id + 'time] option' ).filter(function() {
55
+ return ( this.text == time );
56
+ }).prop( 'selected', true ).parent().focus();
57
+ jQuery( '#s2' + id + 'time' ).html( time );
58
+ s2_hide( id );
59
}
include/s2_edit.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(document).ready(function(){jQuery('#s2bcclimit_2').hide();jQuery('#s2entries_2').hide();jQuery('#s2cron_2').hide()});function s2_show(id){jQuery('#s2'+id+'_2').show();jQuery('#s2'+id+'_1').hide();return false}function s2_hide(id){jQuery('#s2'+id+'_1').show();jQuery('#s2'+id+'_2').hide();return false}function s2_update(id){var input=jQuery('input[name="'+id+'"]').val();jQuery('#s2'+id).html(input);s2_hide(id)}function s2_revert(id){var option=jQuery('#js'+id).val();jQuery('input[name="'+id+'"]').val(option);jQuery('#s2'+id).html(option);s2_hide(id)}function s2_cron_update(id){var date=jQuery('input[name="'+id+'date"]').val();jQuery('#s2'+id+'date').html(date);var time=jQuery('select[name="'+id+'time"] option:selected').html();jQuery('#s2'+id+'time').html(time);s2_hide(id)}function s2_cron_revert(id){var date=jQuery('#js'+id+'date').val();jQuery('input[name="'+id+'date"]').val(date);jQuery('#s2'+id+'date').html(date);var time=jQuery('#js'+id+'time').val();jQuery('[name='+id+'time] option').filter(function(){return(this.text==time)}).prop('selected',true).parent().focus();jQuery('#s2'+id+'time').html(time);s2_hide(id)}
1
+ jQuery(document).ready(function(){jQuery('#s2bcclimit_2').hide();jQuery('#s2entries_2').hide();jQuery('#s2cron_2').hide()});function s2_show(id){jQuery('#s2'+id+'_2').show();jQuery('#s2'+id+'_1').hide();return false}function s2_hide(id){jQuery('#s2'+id+'_1').show();jQuery('#s2'+id+'_2').hide();return false}function s2_update(id){var input=jQuery('input[name="'+id+'"]').val();jQuery('#s2'+id).html(input);s2_hide(id)}function s2_revert(id){var option=jQuery('#js'+id).val();jQuery('input[name="'+id+'"]').val(option);jQuery('#s2'+id).html(option);s2_hide(id)}function s2_cron_update(id){var date,time;date=jQuery('input[name="'+id+'date"]').val();jQuery('#s2'+id+'date').html(date);time=jQuery('select[name="'+id+'time"] option:selected').html();jQuery('#s2'+id+'time').html(time);s2_hide(id)}function s2_cron_revert(id){var date,time;date=jQuery('#js'+id+'date').val();jQuery('input[name="'+id+'date"]').val(date);jQuery('#s2'+id+'date').html(date);time=jQuery('#js'+id+'time').val();jQuery('[name='+id+'time] option').filter(function(){return(this.text==time)}).prop('selected',true).parent().focus();jQuery('#s2'+id+'time').html(time);s2_hide(id)}
include/widget.php CHANGED
@@ -119,7 +119,7 @@ class S2_Form_widget extends WP_Widget {
119
echo "<br /><label for=\"" . $this->get_field_id('hidebutton') . "subscribe\"><input id=\"" . $this->get_field_id('hidebutton') . "subscribe\" name=\"" . $this->get_field_name('hidebutton') . "\" type=\"radio\" value=\"subscribe\"". checked('subscribe', $hidebutton, false) . "/> " . __('Hide Subscribe button', 'subscribe2') . "</label>\r\n";
120
echo "<br /><label for=\"" . $this->get_field_id('hidebutton') . "unsubscribe\"><input id=\"" . $this->get_field_id('hidebutton') . "unsubscribe\" name=\"" . $this->get_field_name('hidebutton') . "\" type=\"radio\" value=\"unsubscribe\"". checked('unsubscribe', $hidebutton, false) . "/> " . __('Hide Unsubscribe button', 'subscribe2') . "</label>\r\n";
121
if ( '1' == $mysubscribe2->subscribe2_options['ajax'] ) {
122
- echo "<br /><label for=\"" . $this->get_field_id('hidebutton') . "ajax\"><input id=\"" . $this->get_field_id('hidebutton') . "ajax\" name=\"" . $this->get_field_name('hidebutton') . "\" type=\"radio\" value=\"link\"". checked('link', $hidebutton, false) . "/>" . __('Show as link', 'subscribe2') . "</label>\r\n";
123
}
124
echo "</p>\r\n";
125
echo "<p><label for=\"" . $this->get_field_id('postto') . "\">" . __('Post form content to page', 'subscribe2') . ":\r\n";
119
echo "<br /><label for=\"" . $this->get_field_id('hidebutton') . "subscribe\"><input id=\"" . $this->get_field_id('hidebutton') . "subscribe\" name=\"" . $this->get_field_name('hidebutton') . "\" type=\"radio\" value=\"subscribe\"". checked('subscribe', $hidebutton, false) . "/> " . __('Hide Subscribe button', 'subscribe2') . "</label>\r\n";
120
echo "<br /><label for=\"" . $this->get_field_id('hidebutton') . "unsubscribe\"><input id=\"" . $this->get_field_id('hidebutton') . "unsubscribe\" name=\"" . $this->get_field_name('hidebutton') . "\" type=\"radio\" value=\"unsubscribe\"". checked('unsubscribe', $hidebutton, false) . "/> " . __('Hide Unsubscribe button', 'subscribe2') . "</label>\r\n";
121
if ( '1' == $mysubscribe2->subscribe2_options['ajax'] ) {
122
+ echo "<br /><label for=\"" . $this->get_field_id('hidebutton') . "ajax\"><input id=\"" . $this->get_field_id('hidebutton') . "ajax\" name=\"" . $this->get_field_name('hidebutton') . "\" type=\"radio\" value=\"link\"". checked('link', $hidebutton, false) . "/> " . __('Show as link', 'subscribe2') . "</label>\r\n";
123
}
124
echo "</p>\r\n";
125
echo "<p><label for=\"" . $this->get_field_id('postto') . "\">" . __('Post form content to page', 'subscribe2') . ":\r\n";
subscribe2.php CHANGED
@@ -3,7 +3,7 @@
3
Plugin Name: Subscribe2
4
Plugin URI: http://subscribe2.wordpress.com
5
Description: Notifies an email list when new entries are posted.
6
- Version: 9.0
7
Author: Matthew Robinson
8
Author URI: http://subscribe2.wordpress.com
9
Licence: GPL3
@@ -55,7 +55,7 @@ if ( is_plugin_active_for_network(plugin_basename(__FILE__)) ) {
55
56
// our version number. Don't touch this or any line below
57
// unless you know exactly what you are doing
58
- define( 'S2VERSION', '9.0' );
59
define( 'S2PATH', trailingslashit(dirname(__FILE__)) );
60
define( 'S2DIR', trailingslashit(dirname(plugin_basename(__FILE__))) );
61
define( 'S2URL', plugin_dir_url(dirname(__FILE__)) . S2DIR );
3
Plugin Name: Subscribe2
4
Plugin URI: http://subscribe2.wordpress.com
5
Description: Notifies an email list when new entries are posted.
6
+ Version: 9.1
7
Author: Matthew Robinson
8
Author URI: http://subscribe2.wordpress.com
9
Licence: GPL3
55
56
// our version number. Don't touch this or any line below
57
// unless you know exactly what you are doing
58
+ define( 'S2VERSION', '9.1' );
59
define( 'S2PATH', trailingslashit(dirname(__FILE__)) );
60
define( 'S2DIR', trailingslashit(dirname(plugin_basename(__FILE__))) );
61
define( 'S2URL', plugin_dir_url(dirname(__FILE__)) . S2DIR );
subscribe2.pot CHANGED
@@ -1,54 +1,54 @@
1
- # Copyright (C) 2013 Subscribe2
2
# This file is distributed under the same license as the Subscribe2 package.
3
msgid ""
4
msgstr ""
5
- "Project-Id-Version: Subscribe2 9.0\n"
6
"Report-Msgid-Bugs-To: http://wordpress.org/tag/Subscribe2\n"
7
- "POT-Creation-Date: 2013-09-25 20:38:47+00:00\n"
8
"MIME-Version: 1.0\n"
9
"Content-Type: text/plain; charset=UTF-8\n"
10
"Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2013-MO-DA HO:MI+ZONE\n"
12
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
"Language-Team: LANGUAGE <LL@li.org>\n"
14
15
- #: admin/send_email.php:69
16
msgid "Your email was empty"
17
msgstr ""
18
19
- #: admin/send_email.php:76
20
msgid "Check your settings and check with your hosting provider"
21
msgstr ""
22
23
- #: admin/send_email.php:81
24
msgid "Preview message sent!"
25
msgstr ""
26
27
- #: admin/send_email.php:95
28
msgid "Send an email to subscribers"
29
msgstr ""
30
31
- #: admin/send_email.php:103
32
msgid "A message from"
33
msgstr ""
34
35
- #: admin/send_email.php:108
36
msgid "Subject"
37
msgstr ""
38
39
- #: admin/send_email.php:111
40
msgid "Add More Files"
41
msgstr ""
42
43
- #: admin/send_email.php:113
44
msgid "Recipients:"
45
msgstr ""
46
47
- #: admin/send_email.php:116
48
msgid "Preview"
49
msgstr ""
50
51
- #: admin/send_email.php:116
52
msgid "Send"
53
msgstr ""
54
@@ -66,592 +66,620 @@ msgstr ""
66
msgid "Attempt made to resend the Digest Notification email"
67
msgstr ""
68
69
- #: admin/settings.php:151
70
msgid ""
71
"You appear to be sending notifications from an email address from a "
72
"different domain name to your blog, this may result in failed emails"
73
msgstr ""
74
75
- #: admin/settings.php:160 classes/class-s2-admin.php:81
76
msgid "Email Settings"
77
msgstr ""
78
79
- #: admin/settings.php:161 classes/class-s2-admin.php:89
80
msgid "Templates"
81
msgstr ""
82
83
- #: admin/settings.php:162 classes/class-s2-admin.php:96
84
msgid "Registered Users"
85
msgstr ""
86
87
- #: admin/settings.php:163 classes/class-s2-admin.php:103
88
msgid "Appearance"
89
msgstr ""
90
91
- #: admin/settings.php:164 classes/class-s2-admin.php:110
92
msgid "Miscellaneous"
93
msgstr ""
94
95
- #: admin/settings.php:185
96
msgid ""
97
"Restrict the number of <strong>recipients per email</strong> to (0 for "
98
"unlimited)"
99
msgstr ""
100
101
- #: admin/settings.php:187 admin/settings.php:419
102
- #: classes/class-s2-admin.php:644 classes/class-s2-list-table.php:36
103
msgid "Edit"
104
msgstr ""
105
106
- #: admin/settings.php:190 admin/settings.php:422
107
- #: classes/class-s2-admin.php:658
108
msgid "Update"
109
msgstr ""
110
111
- #: admin/settings.php:191 admin/settings.php:423
112
- #: classes/class-s2-admin.php:659
113
msgid "Revert"
114
msgstr ""
115
116
- #: admin/settings.php:193
117
msgid "Send Admins notifications for new"
118
msgstr ""
119
120
- #: admin/settings.php:195
121
msgid "Subscriptions"
122
msgstr ""
123
124
- #: admin/settings.php:197
125
msgid "Unsubscriptions"
126
msgstr ""
127
128
- #: admin/settings.php:199
129
msgid "Both"
130
msgstr ""
131
132
- #: admin/settings.php:201
133
msgid "Neither"
134
msgstr ""
135
136
- #: admin/settings.php:203
137
msgid "Include theme CSS stylesheet in HTML notifications"
138
msgstr ""
139
140
- #: admin/settings.php:205 admin/settings.php:211 admin/settings.php:225
141
- #: admin/settings.php:230 admin/settings.php:235 admin/settings.php:355
142
- #: admin/settings.php:360 admin/settings.php:374 admin/settings.php:381
143
- #: admin/settings.php:393 admin/settings.php:398 admin/subscribers.php:268
144
- #: admin/your_subscriptions.php:121 admin/your_subscriptions.php:162
145
msgid "Yes"
146
msgstr ""
147
148
- #: admin/settings.php:207 admin/settings.php:213 admin/settings.php:227
149
- #: admin/settings.php:232 admin/settings.php:237 admin/settings.php:352
150
- #: admin/settings.php:357 admin/settings.php:362 admin/settings.php:376
151
- #: admin/settings.php:383 admin/settings.php:390 admin/settings.php:395
152
- #: admin/settings.php:400 admin/subscribers.php:270
153
- #: admin/your_subscriptions.php:123 admin/your_subscriptions.php:166
154
msgid "No"
155
msgstr ""
156
157
- #: admin/settings.php:209
158
msgid "Send Emails for Pages"
159
msgstr ""
160
161
- #: admin/settings.php:217
162
msgid ""
163
"Subscribe2 will send email notifications for the following custom post types"
164
msgstr ""
165
166
- #: admin/settings.php:223
167
msgid "Send Emails for Password Protected Posts"
168
msgstr ""
169
170
- #: admin/settings.php:228
171
msgid "Send Emails for Private Posts"
172
msgstr ""
173
174
- #: admin/settings.php:233
175
msgid "Include Sticky Posts at the top of all Digest Notifications"
176
msgstr ""
177
178
- #: admin/settings.php:238
179
msgid "Send Email From"
180
msgstr ""
181
182
- #: admin/settings.php:243
183
msgid "Send Emails"
184
msgstr ""
185
186
- #: admin/settings.php:245
187
msgid "For digest notifications, date order for posts is"
188
msgstr ""
189
190
- #: admin/settings.php:247
191
msgid "Descending"
192
msgstr ""
193
194
- #: admin/settings.php:249
195
msgid "Ascending"
196
msgstr ""
197
198
- #: admin/settings.php:251
199
msgid "Add Tracking Parameters to the Permalink"
200
msgstr ""
201
202
- #: admin/settings.php:253
203
msgid ""
204
"eg. utm_source=subscribe2&amp;utm_medium=email&amp;"
205
"utm_campaign=postnotify&amp;utm_id={ID}&amp;utm_title={TITLE}"
206
msgstr ""
207
208
- #: admin/settings.php:264
209
- msgid "New Post email (must not be empty)"
210
msgstr ""
211
212
- #: admin/settings.php:265 admin/settings.php:295 admin/settings.php:300
213
msgid "Subject Line"
214
msgstr ""
215
216
- #: admin/settings.php:270
217
msgid "Send Email Preview"
218
msgstr ""
219
220
- #: admin/settings.php:271
221
msgid "Message substitutions"
222
msgstr ""
223
224
- #: admin/settings.php:273
225
msgid ""
226
"IF THE FOLLOWING KEYWORDS ARE ALSO IN YOUR POST THEY WILL BE SUBSTITUTED"
227
msgstr ""
228
229
- #: admin/settings.php:276
230
msgid "the post's title<br />(<i>for per-post emails only</i>)"
231
msgstr ""
232
233
- #: admin/settings.php:277
234
msgid ""
235
"the excerpt or the entire post<br />(<i>based on the subscriber's "
236
"preferences</i>)"
237
msgstr ""
238
239
- #: admin/settings.php:278
240
msgid ""
241
"the excerpt of the post and the time it was posted<br />(<i>for digest "
242
"emails only</i>)"
243
msgstr ""
244
245
- #: admin/settings.php:279
246
msgid "a list of post titles<br />(<i>for digest emails only</i>)"
247
msgstr ""
248
249
- #: admin/settings.php:280
250
msgid ""
251
"a list of post titles followed by links to the articles<br />(<i>for digest "
252
"emails only</i>)"
253
msgstr ""
254
255
- #: admin/settings.php:281
256
msgid "the post's permalink<br />(<i>for per-post emails only</i>)"
257
msgstr ""
258
259
- #: admin/settings.php:282
260
msgid "the post's permalink after conversion by TinyURL"
261
msgstr ""
262
263
- #: admin/settings.php:283
264
msgid "the date the post was made<br />(<i>for per-post emails only</i>)"
265
msgstr ""
266
267
- #: admin/settings.php:284
268
msgid "the time the post was made<br />(<i>for per-post emails only</i>)"
269
msgstr ""
270
271
- #: admin/settings.php:285
272
msgid "the admin or post author's name"
273
msgstr ""
274
275
- #: admin/settings.php:286
276
msgid "the admin or post author's email"
277
msgstr ""
278
279
- #: admin/settings.php:287
280
msgid "the post author's name"
281
msgstr ""
282
283
- #: admin/settings.php:288
284
msgid ""
285
"the generated link to confirm a request<br />(<i>only used in the "
286
"confirmation email template</i>)"
287
msgstr ""
288
289
- #: admin/settings.php:289
290
msgid ""
291
"Action performed by LINK in confirmation email<br />(<i>only used in the "
292
"confirmation email template</i>)"
293
msgstr ""
294
295
- #: admin/settings.php:290
296
msgid "the post's assigned categories"
297
msgstr ""
298
299
- #: admin/settings.php:291
300
msgid "the post's assigned Tags"
301
msgstr ""
302
303
- #: admin/settings.php:292
304
msgid ""
305
"the number of posts included in the digest email<br />(<i>for digest emails "
306
"only</i>)"
307
msgstr ""
308
309
- #: admin/settings.php:294
310
msgid "Subscribe / Unsubscribe confirmation email"
311
msgstr ""
312
313
- #: admin/settings.php:299
314
msgid "Reminder email to Unconfirmed Subscribers"
315
msgstr ""
316
317
- #: admin/settings.php:311
318
msgid "Compulsory Categories"
319
msgstr ""
320
321
- #: admin/settings.php:313
322
msgid ""
323
"Compulsory categories will be checked by default for Registered Subscribers"
324
msgstr ""
325
326
- #: admin/settings.php:320
327
msgid "Excluded Categories"
328
msgstr ""
329
330
- #: admin/settings.php:322
331
msgid ""
332
"Posts assigned to any Excluded Category do not generate notifications and "
333
"are not included in digest notifications"
334
msgstr ""
335
336
- #: admin/settings.php:326
337
msgid "Allow registered users to subscribe to excluded categories?"
338
msgstr ""
339
340
- #: admin/settings.php:334
341
msgid "Excluded Formats"
342
msgstr ""
343
344
- #: admin/settings.php:336
345
msgid ""
346
"Posts assigned to any Excluded Format do not generate notifications and are "
347
"not included in digest notifications"
348
msgstr ""
349
350
- #: admin/settings.php:344
351
msgid "Auto-Subscribe"
352
msgstr ""
353
354
- #: admin/settings.php:346
355
msgid "Subscribe new users registering with your blog"
356
msgstr ""
357
358
- #: admin/settings.php:348
359
msgid "Automatically"
360
msgstr ""
361
362
- #: admin/settings.php:350
363
msgid "Display option on Registration Form"
364
msgstr ""
365
366
- #: admin/settings.php:353
367
msgid "Auto-subscribe includes any excluded categories"
368
msgstr ""
369
370
- #: admin/settings.php:358
371
msgid "Registration Form option is checked by default"
372
msgstr ""
373
374
- #: admin/settings.php:363
375
msgid "Auto-subscribe users to receive email as"
376
msgstr ""
377
378
- #: admin/settings.php:365 admin/subscribers.php:258
379
- #: admin/your_subscriptions.php:110
380
msgid "HTML - Full"
381
msgstr ""
382
383
- #: admin/settings.php:367 admin/subscribers.php:259
384
- #: admin/your_subscriptions.php:112
385
msgid "HTML - Excerpt"
386
msgstr ""
387
388
- #: admin/settings.php:369 admin/subscribers.php:260
389
- #: admin/your_subscriptions.php:114
390
msgid "Plain Text - Full"
391
msgstr ""
392
393
- #: admin/settings.php:371 admin/subscribers.php:261
394
- #: admin/your_subscriptions.php:116
395
msgid "Plain Text - Excerpt"
396
msgstr ""
397
398
- #: admin/settings.php:372
399
msgid "Registered Users have the option to auto-subscribe to new categories"
400
msgstr ""
401
402
- #: admin/settings.php:378
403
msgid "New categories are immediately excluded"
404
msgstr ""
405
406
- #: admin/settings.php:379
407
msgid ""
408
"Option for Registered Users to auto-subscribe to new categories is checked "
409
"by default"
410
msgstr ""
411
412
- #: admin/settings.php:384
413
msgid "Display checkbox to allow subscriptions from the comment form"
414
msgstr ""
415
416
- #: admin/settings.php:386
417
msgid "Before the Comment Submit button"
418
msgstr ""
419
420
- #: admin/settings.php:388
421
msgid "After the Comment Submit button"
422
msgstr ""
423
424
- #: admin/settings.php:391
425
msgid "Comment form checkbox is checked by default"
426
msgstr ""
427
428
- #: admin/settings.php:396
429
msgid "Show one-click subscription on profile page"
430
msgstr ""
431
432
- #: admin/settings.php:411
433
msgid "Set default Subscribe2 page as"
434
msgstr ""
435
436
- #: admin/settings.php:417
437
msgid "Set the number of Subscribers displayed per page"
438
msgstr ""
439
440
- #: admin/settings.php:427
441
msgid "Show a link to your subscription page in \"meta\"?"
442
msgstr ""
443
444
- #: admin/settings.php:431
445
msgid "Show the Subscribe2 button on the Write toolbar?"
446
msgstr ""
447
448
- #: admin/settings.php:435
449
msgid "Enable AJAX style subscription form?"
450
msgstr ""
451
452
- #: admin/settings.php:439
453
msgid "Enable Subscribe2 Widget?"
454
msgstr ""
455
456
- #: admin/settings.php:443
457
msgid "Enable Subscribe2 Counter Widget?"
458
msgstr ""
459
460
- #: admin/settings.php:447
461
msgid "Disable email notifications is checked by default on authoring pages?"
462
msgstr ""
463
464
- #: admin/settings.php:455
465
msgid "Barred Domains"
466
msgstr ""
467
468
- #: admin/settings.php:457
469
msgid ""
470
"Enter domains to bar from public subscriptions: <br /> (Use a new line for "
471
"each entry and omit the \"@\" symbol, for example email.com)"
472
msgstr ""
473
474
- #: admin/settings.php:460
475
msgid "Links"
476
msgstr ""
477
478
- #: admin/settings.php:461
479
msgid "Plugin Site"
480
msgstr ""
481
482
- #: admin/settings.php:462 classes/class-s2-admin.php:162
483
msgid "Translation Files"
484
msgstr ""
485
486
- #: admin/settings.php:463
487
msgid "Plugin Forum"
488
msgstr ""
489
490
- #: admin/settings.php:464
491
msgid "Plugin Blog"
492
msgstr ""
493
494
- #: admin/settings.php:465
495
msgid "Make a donation via PayPal"
496
msgstr ""
497
498
- #: admin/settings.php:471
499
msgid "Submit"
500
msgstr ""
501
502
- #: admin/settings.php:475
503
msgid "Reset to Default Settings"
504
msgstr ""
505
506
- #: admin/settings.php:476
507
msgid ""
508
"Use this to reset all options to their defaults. This <strong><em>will not</"
509
"em></strong> modify your list of subscribers."
510
msgstr ""
511
512
- #: admin/settings.php:478
513
msgid "RESET"
514
msgstr ""
515
516
- #: admin/subscribers.php:25
517
msgid "Address(es) subscribed!"
518
msgstr ""
519
520
- #: admin/subscribers.php:32
521
msgid "Address(es) unsubscribed!"
522
msgstr ""
523
524
- #: admin/subscribers.php:36
525
- msgid "Some emails were not processed, the following were already subscribed"
526
msgstr ""
527
528
- #: admin/subscribers.php:39
529
- msgid "Some emails were not processed, the following were not in the database"
530
msgstr ""
531
532
#: admin/subscribers.php:48
533
msgid "Address(es) deleted!"
534
msgstr ""
535
536
- #: admin/subscribers.php:56
537
msgid "Delete failed! You cannot delete some or all of these users"
538
msgstr ""
539
540
- #: admin/subscribers.php:59
541
msgid "User(s) deleted! Any posts made by these users were assigned to you"
542
msgstr ""
543
544
- #: admin/subscribers.php:71
545
msgid "Status changed!"
546
msgstr ""
547
548
- #: admin/subscribers.php:74
549
msgid "Reminder Email(s) Sent!"
550
msgstr ""
551
552
- #: admin/subscribers.php:77
553
msgid "Registered Users Subscribed!"
554
msgstr ""
555
556
- #: admin/subscribers.php:80
557
msgid "Registered Users Unsubscribed!"
558
msgstr ""
559
560
- #: admin/subscribers.php:83
561
msgid "Format updated for Selected Registered Users!"
562
msgstr ""
563
564
- #: admin/subscribers.php:86
565
msgid "Digest Subscription updated for Selected Registered Users!"
566
msgstr ""
567
568
- #: admin/subscribers.php:173 classes/class-s2-admin.php:60
569
- #: classes/class-s2-admin.php:490
570
msgid "Public Subscribers"
571
msgstr ""
572
573
- #: admin/subscribers.php:173 classes/class-s2-admin.php:65
574
- #: classes/class-s2-admin.php:494
575
msgid "Registered Subscribers"
576
msgstr ""
577
578
- #: admin/subscribers.php:185 admin/subscribers.php:207
579
msgid "Add/Remove Subscribers"
580
msgstr ""
581
582
- #: admin/subscribers.php:186
583
msgid "Enter addresses, one per line or comma-separated"
584
msgstr ""
585
586
- #: admin/subscribers.php:189 admin/subscribers.php:253
587
- #: admin/your_subscriptions.php:260 classes/class-s2-frontend.php:28
588
msgid "Subscribe"
589
msgstr ""
590
591
- #: admin/subscribers.php:190 admin/subscribers.php:254
592
- #: admin/your_subscriptions.php:239 classes/class-s2-frontend.php:27
593
msgid "Unsubscribe"
594
msgstr ""
595
596
- #: admin/subscribers.php:195 admin/subscribers.php:214
597
msgid "Current Subscribers"
598
msgstr ""
599
600
- #: admin/subscribers.php:208
601
msgid "Add Registered User"
602
msgstr ""
603
604
- #: admin/subscribers.php:223
605
msgid "Filter"
606
msgstr ""
607
608
- #: admin/subscribers.php:227
609
msgid "Send Reminder Email"
610
msgstr ""
611
612
- #: admin/subscribers.php:234
613
msgid "Save Emails to CSV File"
614
msgstr ""
615
616
- #: admin/subscribers.php:241
617
msgid "Search"
618
msgstr ""
619
620
- #: admin/subscribers.php:248
621
msgid "Bulk Management"
622
msgstr ""
623
624
- #: admin/subscribers.php:250 admin/subscribers.php:264
625
msgid ""
626
"Preferences for Registered Users selected in the filter above can be changed "
627
"using this section."
628
msgstr ""
629
630
- #: admin/subscribers.php:251 admin/subscribers.php:265
631
msgid "Consider User Privacy as changes cannot be undone"
632
msgstr ""
633
634
- #: admin/subscribers.php:252
635
msgid "Action to perform"
636
msgstr ""
637
638
- #: admin/subscribers.php:256
639
msgid "Bulk Update Categories"
640
msgstr ""
641
642
- #: admin/subscribers.php:257
643
msgid "Send email as"
644
msgstr ""
645
646
- #: admin/subscribers.php:262
647
msgid "Bulk Update Format"
648
msgstr ""
649
650
- #: admin/subscribers.php:266
651
msgid "Subscribe Selected Users to recieve a periodic digest notification"
652
msgstr ""
653
654
- #: admin/subscribers.php:271
655
msgid "Bulk Update Digest Subscription"
656
msgstr ""
657
@@ -659,79 +687,79 @@ msgstr ""
659
msgid "Subscription preferences updated."
660
msgstr ""
661
662
- #: admin/your_subscriptions.php:96
663
msgid "Notification Settings"
664
msgstr ""
665
666
- #: admin/your_subscriptions.php:99
667
msgid "Editing Subscribe2 preferences for user"
668
msgstr ""
669
670
- #: admin/your_subscriptions.php:108
671
msgid "Receive email as"
672
msgstr ""
673
674
- #: admin/your_subscriptions.php:119
675
msgid "Automatically subscribe me to newly created categories"
676
msgstr ""
677
678
- #: admin/your_subscriptions.php:129
679
msgid "One Click Subscription / Unsubscription"
680
msgstr ""
681
682
- #: admin/your_subscriptions.php:130
683
msgid "Subscribe to All"
684
msgstr ""
685
686
- #: admin/your_subscriptions.php:131
687
msgid "Unsubscribe from All"
688
msgstr ""
689
690
- #: admin/your_subscriptions.php:141
691
msgid "Unsubscribe me from this blog"
692
msgstr ""
693
694
- #: admin/your_subscriptions.php:145
695
msgid "Subscribe to all categories"
696
msgstr ""
697
698
- #: admin/your_subscriptions.php:147
699
msgid "Subscribed Categories on"
700
msgstr ""
701
702
- #: admin/your_subscriptions.php:149
703
msgid "Subscribed Categories"
704
msgstr ""
705
706
- #: admin/your_subscriptions.php:156
707
msgid "Receive periodic summaries of new posts?"
708
msgstr ""
709
710
- #: admin/your_subscriptions.php:172
711
msgid "Do not send notifications for post made by these authors"
712
msgstr ""
713
714
- #: admin/your_subscriptions.php:178
715
msgid "Update Preferences"
716
msgstr ""
717
718
- #: admin/your_subscriptions.php:228
719
msgid "Subscribed Blogs"
720
msgstr ""
721
722
- #: admin/your_subscriptions.php:233 admin/your_subscriptions.php:254
723
msgid "Viewing Settings Now"
724
msgstr ""
725
726
- #: admin/your_subscriptions.php:237 admin/your_subscriptions.php:258
727
msgid "View Settings"
728
msgstr ""
729
730
- #: admin/your_subscriptions.php:249
731
msgid "Subscribe to new blogs"
732
msgstr ""
733
734
- #. #-#-#-#-# Subscribe2.pot (Subscribe2 9.0) #-#-#-#-#
735
#. Plugin Name of the plugin/theme
736
#: classes/class-s2-admin.php:8 include/widget.php:17
737
msgid "Subscribe2"
@@ -944,78 +972,91 @@ msgid ""
944
"Check here to disable sending of an email notification for this post/page"
945
msgstr ""
946
947
- #: classes/class-s2-admin.php:340 classes/class-s2-admin.php:397
948
- #: classes/class-s2-admin.php:437
949
msgid "Select / Unselect All"
950
msgstr ""
951
952
- #: classes/class-s2-admin.php:489
953
msgid "All Users and Subscribers"
954
msgstr ""
955
956
- #: classes/class-s2-admin.php:491
957
msgid "Confirmed"
958
msgstr ""
959
960
- #: classes/class-s2-admin.php:492
961
msgid "Unconfirmed"
962
msgstr ""
963
964
- #: classes/class-s2-admin.php:493
965
msgid "All Registered Users"
966
msgstr ""
967
968
- #: classes/class-s2-admin.php:589
969
msgid "Post Author"
970
msgstr ""
971
972
- #: classes/class-s2-admin.php:613
973
msgid ""
974
"The WordPress cron functions may be disabled on this server. Digest "
975
"notifications may not work."
976
msgstr ""
977
978
- #: classes/class-s2-admin.php:618
979
msgid "For each Post"
980
msgstr ""
981
982
- #: classes/class-s2-admin.php:635
983
msgid "Current UTC time is"
984
msgstr ""
985
986
- #: classes/class-s2-admin.php:637
987
msgid "Current blog time is"
988
msgstr ""
989
990
- #: classes/class-s2-admin.php:639
991
msgid "Next email notification will be sent when your blog time is after"
992
msgstr ""
993
994
- #: classes/class-s2-admin.php:661
995
msgid "Attempt to resend the last Digest Notification email"
996
msgstr ""
997
998
- #: classes/class-s2-admin.php:662
999
msgid "Resend Digest"
1000
msgstr ""
1001
1002
- #: classes/class-s2-admin.php:676
1003
- msgid "Select a page"
1004
- msgstr ""
1005
-
1006
- #: classes/class-s2-admin.php:901
1007
msgid "Email subscription"
1008
msgstr ""
1009
1010
- #: classes/class-s2-admin.php:903
1011
msgid "Subscribe / Unsubscribe"
1012
msgstr ""
1013
1014
- #: classes/class-s2-admin.php:904
1015
msgid "Receive notifications"
1016
msgstr ""
1017
1018
- #: classes/class-s2-admin.php:905
1019
msgid ""
1020
"Check if you want to receive email notification when new posts are published"
1021
msgstr ""
@@ -1064,158 +1105,140 @@ msgid ""
1064
msgstr ""
1065
1066
#: classes/class-s2-core.php:44
1067
- msgid "You must to create a WordPress page for this plugin to work correctly."
1068
msgstr ""
1069
1070
#: classes/class-s2-core.php:46
1071
- msgid ""
1072
- "Your chosen email type (per-post or digest) does not support the following "
1073
- "keywords:"
1074
- msgstr ""
1075
-
1076
- #: classes/class-s2-core.php:48
1077
msgid "Message sent!"
1078
msgstr ""
1079
1080
- #: classes/class-s2-core.php:50
1081
msgid "Message failed!"
1082
msgstr ""
1083
1084
- #: classes/class-s2-core.php:53
1085
msgid "No such email address is registered."
1086
msgstr ""
1087
1088
- #: classes/class-s2-core.php:55
1089
msgid "You have successfully subscribed!"
1090
msgstr ""
1091
1092
- #: classes/class-s2-core.php:57
1093
msgid "You have successfully unsubscribed."
1094
msgstr ""
1095
1096
- #: classes/class-s2-core.php:59
1097
msgid "subscribe"
1098
msgstr ""
1099
1100
- #: classes/class-s2-core.php:61
1101
msgid "unsubscribe"
1102
msgstr ""
1103
1104
- #: classes/class-s2-core.php:64
1105
msgid "Options saved!"
1106
msgstr ""
1107
1108
- #: classes/class-s2-core.php:65
1109
msgid "Options reset!"
1110
msgstr ""
1111
1112
- #: classes/class-s2-core.php:617
1113
msgid "Plain Text Excerpt Preview"
1114
msgstr ""
1115
1116
- #: classes/class-s2-core.php:619
1117
msgid "Plain Text Full Preview"
1118
msgstr ""
1119
1120
- #: classes/class-s2-core.php:621
1121
msgid "HTML Excerpt Preview"
1122
msgstr ""
1123
1124
- #: classes/class-s2-core.php:623
1125
msgid "HTML Full Preview"
1126
msgstr ""
1127
1128
- #: classes/class-s2-core.php:1172
1129
- msgid "Registered User"
1130
- msgstr ""
1131
-
1132
- #: classes/class-s2-core.php:1177
1133
- msgid "Confirmed Public Subscriber"
1134
- msgstr ""
1135
-
1136
- #: classes/class-s2-core.php:1179
1137
- msgid "Unconfirmed Public Subscriber"
1138
- msgstr ""
1139
-
1140
- #: classes/class-s2-core.php:1216
1141
msgid "Check here to Subscribe to email notifications for new posts"
1142
msgstr ""
1143
1144
- #: classes/class-s2-core.php:1222
1145
msgid ""
1146
"By registering with this blog you are also agreeing to receive email "
1147
"notifications for new posts but you can unsubscribe at anytime"
1148
msgstr ""
1149
1150
- #: classes/class-s2-core.php:1248
1151
msgid "Check here to Subscribe to notifications for new posts"
1152
msgstr ""
1153
1154
- #: classes/class-s2-core.php:1338
1155
msgid "Weekly"
1156
msgstr ""
1157
1158
- #: classes/class-s2-core.php:1472 classes/class-s2-core.php:1473
1159
msgid "Author"
1160
msgstr ""
1161
1162
- #: classes/class-s2-core.php:1479
1163
msgid "Posted on"
1164
msgstr ""
1165
1166
- #: classes/class-s2-core.php:1497 classes/class-s2-core.php:1498
1167
msgid "Posted in"
1168
msgstr ""
1169
1170
- #: classes/class-s2-core.php:1503 classes/class-s2-core.php:1504
1171
msgid "Tagged as"
1172
msgstr ""
1173
1174
- #: classes/class-s2-core.php:1570
1175
msgid "Digest Email"
1176
msgstr ""
1177
1178
- #: classes/class-s2-core.php:1580
1179
msgid "Digest Preview"
1180
msgstr ""
1181
1182
- #: classes/class-s2-frontend.php:58
1183
msgid "Enter email address..."
1184
msgstr ""
1185
1186
- #: classes/class-s2-frontend.php:78 classes/class-s2-frontend.php:80
1187
msgid "Your email:"
1188
msgstr ""
1189
1190
- #: classes/class-s2-frontend.php:199
1191
msgid "Subscription Confirmation"
1192
msgstr ""
1193
1194
- #: classes/class-s2-frontend.php:201
1195
msgid "Unsubscription Confirmation"
1196
msgstr ""
1197
1198
- #: classes/class-s2-frontend.php:240
1199
msgid "New Subscription"
1200
msgstr ""
1201
1202
- #: classes/class-s2-frontend.php:242
1203
msgid "subscribed to email notifications!"
1204
msgstr ""
1205
1206
- #: classes/class-s2-frontend.php:264
1207
msgid "New Unsubscription"
1208
msgstr ""
1209
1210
- #: classes/class-s2-frontend.php:266
1211
msgid "unsubscribed from email notifications!"
1212
msgstr ""
1213
1214
- #: classes/class-s2-frontend.php:293
1215
msgid "[Un]Subscribe to Posts"
1216
msgstr ""
1217
1218
- #: classes/class-s2-frontend.php:324 classes/class-s2-frontend.php:326
1219
msgid "Subscribe to this blog"
1220
msgstr ""
1221
@@ -1454,9 +1477,9 @@ msgid ""
1454
"a site level"
1455
msgstr ""
1456
1457
- #. #-#-#-#-# Subscribe2.pot (Subscribe2 9.0) #-#-#-#-#
1458
#. Plugin URI of the plugin/theme
1459
- #. #-#-#-#-# Subscribe2.pot (Subscribe2 9.0) #-#-#-#-#
1460
#. Author URI of the plugin/theme
1461
msgid "http://subscribe2.wordpress.com"
1462
msgstr ""
1
+ # Copyright (C) 2014 Subscribe2
2
# This file is distributed under the same license as the Subscribe2 package.
3
msgid ""
4
msgstr ""
5
+ "Project-Id-Version: Subscribe2 9.1\n"
6
"Report-Msgid-Bugs-To: http://wordpress.org/tag/Subscribe2\n"
7
+ "POT-Creation-Date: 2014-01-09 19:44:43+00:00\n"
8
"MIME-Version: 1.0\n"