Subscribe2 - Version 10.0

Version Description

Download this release

Release Info

Developer Dabelon
Plugin Icon 128x128 Subscribe2
Version 10.0
Comparing to
See all releases

Code changes from version 9.4 to 10.0

ReadMe.txt CHANGED
@@ -1,32 +1,40 @@
1
  === Subscribe2 ===
2
- 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.9
7
- Stable tag: 9.4
8
  License: GPL3
9
 
10
- Sends a list of subscribers an email notification when new posts are published to your blog
11
 
12
  == Description ==
 
 
13
  Subscribe2 provides a comprehensive subscription management and email notification system for WordPress blogs that sends email notifications to a list of subscribers when you publish new content to your blog.
14
 
15
- Email Notifications can be sent on a per-post basis or periodically in a Digest email. Additionally, certain categories can be excluded from inclusion in the notification and posts can be excluded on an individual basis by setting a custom field.
 
16
 
17
- The plugin also handles subscription requests allowing users to publicly subscribe (**Public Subscribers**) by submitting their email address in an easy to use form or to register with your blog (**Registered Users**) which enables greater flexibility over the email content for per-post notifications for the subscriber. Admins are given control over the presentation of the email notifications, can bulk manage subscriptions for users and manually send email notices to subscribers.
 
18
 
19
  The format of the email can also be customised for per-post notifications, Subscribe2 can generate emails for each of the following formats:
20
 
21
- * plaintext excerpt
22
- * plaintext full post (Registered Users only)
23
- * HTML excerpt (Registered Users only)
24
- * HTML full post (Registered Users only)
25
 
26
  If you want to send full content HTML emails to Public Subscribers too then upgrade to [Subscribe2 HTML](http://semperplugins.com/plugins/subscribe2-html/).
27
 
 
 
 
28
  == Installation ==
29
- AUTOMATIC INSTALLATION
 
30
 
31
  1. Log in to your WordPress blog and visit Plugins->Add New.
32
  2. Search for Subscribe2, click "Install Now" and then Activate the Plugin
@@ -38,7 +46,7 @@ AUTOMATIC INSTALLATION
38
  This token will automatically be replaced by dynamic subscription information and will display all forms and messages as necessary.
39
  8. In the WordPress "Settings" area for Subscribe2 select the page name in the "Appearance" section that of the WordPress page created in step 7.
40
 
41
- MANUAL INSTALLATION
42
 
43
  1. Copy the entire /subscribe2/ directory into your /wp-content/plugins/ directory.
44
  2. Activate the plugin.
@@ -51,6 +59,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
  [Visit FAQ site](http://subscribe2.wordpress.com/support/faqs/)
55
 
56
  == Screenshots ==
@@ -60,7 +69,254 @@ This token will automatically be replaced by dynamic subscription information an
60
  4. The Subscribe2->Subscribe2 admin page generated by the plugin.
61
 
62
  == Changelog ==
63
- See [ChangeLog.txt](http://plugins.svn.wordpress.org/subscribe2/trunk/ChangeLog.txt)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
 
65
  == Upgrade Notice ==
66
- See Version History
1
  === Subscribe2 ===
2
+ Contributors: Dabelon, wenzhixue, MattyRob
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=2387904
4
  Tags: posts, subscription, email, subscribe, notify, notification
5
  Requires at least: 3.3
6
  Tested up to: 3.9
7
+ Stable tag: 10.0
8
  License: GPL3
9
 
10
+ Sends a list of subscribers an email notification when new posts are published to your blog.
11
 
12
  == Description ==
13
+
14
+ = Summary =
15
  Subscribe2 provides a comprehensive subscription management and email notification system for WordPress blogs that sends email notifications to a list of subscribers when you publish new content to your blog.
16
 
17
+ = Email =
18
+ Email notifications can be sent on a per-post basis or periodically in a Digest email. Additionally, certain categories can be excluded from inclusion in the notification and posts can be excluded on an individual basis by setting a custom field.
19
 
20
+ = Subscriptions =
21
+ Subscription requests allows users to publicly subscribe (**Public Subscribers**) by submitting their email address in an easy to use form or to register with your blog (**Registered Users**) which enables greater flexibility over the email content for per-post notifications for the subscriber. Admins are given control over the presentation of the email notifications, can bulk manage subscriptions for users and manually send email notices to subscribers.
22
 
23
  The format of the email can also be customised for per-post notifications, Subscribe2 can generate emails for each of the following formats:
24
 
25
+ * plaintext excerpt.
26
+ * plaintext full post (Registered Users only).
27
+ * HTML excerpt (Registered Users only).
28
+ * HTML full post (Registered Users only).
29
 
30
  If you want to send full content HTML emails to Public Subscribers too then upgrade to [Subscribe2 HTML](http://semperplugins.com/plugins/subscribe2-html/).
31
 
32
+ = ReadyGraph App =
33
+ This menu item allows users to sign up for a free ReadyGraph account, or sync an existing free ReadyGraph account. Once a ReadyGraph account is synced, this menu item is where the user manages their ReadyGraph account, views email addresses, sends emails to their community members, and views insights on user growth.
34
+
35
  == Installation ==
36
+
37
+ = AUTOMATIC INSTALLATION =
38
 
39
  1. Log in to your WordPress blog and visit Plugins->Add New.
40
  2. Search for Subscribe2, click "Install Now" and then Activate the Plugin
46
  This token will automatically be replaced by dynamic subscription information and will display all forms and messages as necessary.
47
  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.
48
 
49
+ = MANUAL INSTALLATION =
50
 
51
  1. Copy the entire /subscribe2/ directory into your /wp-content/plugins/ directory.
52
  2. Activate the plugin.
59
  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.
60
 
61
  == Frequently Asked Questions ==
62
+
63
  [Visit FAQ site](http://subscribe2.wordpress.com/support/faqs/)
64
 
65
  == Screenshots ==
69
  4. The Subscribe2->Subscribe2 admin page generated by the plugin.
70
 
71
  == Changelog ==
72
+ = Version 9.5 by Matthew Robinson =
73
+
74
+ * Improved placement and usage of the ‘s2_custom_keywords’ filter in the digest emails
75
+ * Fix for some undefined variable notices
76
+ * Fixes for database connectivity in the upgrade class file - thanks to rushu25
77
+ * Fix for bug when antispam measures are disabled - thanks to serinx
78
+ * Add option to Sidebar Widget to not wrap the button below the form
79
+
80
+ = Version 9.4 by Matthew Robinson =
81
+
82
+ * Fix for non-existing variable errors on Subscribe2->Subscribers page - thanks to bapakrob and perezlr
83
+ * Don’t display Excluded Categories in Bulk Management is Registered users cannot override the exclusion
84
+ * Fix for disappearing Jetpack Stats module - thanks to desertravenart
85
+ * Fix for undefined variable notices in the digest emails
86
+
87
+ = Version 9.3 by Matthew Robinson =
88
+
89
+ * Only add 'weekly' cron schedule interval if it does not already exist
90
+ * Add capability to add social media share buttons to HTML emails
91
+ * Update editor plugin for TinyMCE version 4 bundled with WordPress 3.9
92
+ * Rework Digest emails to collect posts based on transition status rather than time - see ticket https://plugins.trac.wordpress.org/ticket/2058
93
+ * Hide comment form subscription options if using Jetpack Comments and improve compatibility
94
+ * Fixed typos in the Help tab on the Settings page
95
+ * Improved domain name comparison for sender email check - props garypardun
96
+ * Tidied load_string() function and moved it to class-s2-frontend.php as all strings are not for user side only
97
+ * Ensure 's2_authors' keys exist on all sites and for all Registered Users as per illmasterc’s bug report
98
+ * Introduce 's2_mu_blog_list' filter to allow filter of blog list for WordPress Multisite installs - props careb
99
+ * Enable built-in widget by default - props by MadtownLems
100
+ * Use a better method for unendcoding HTML special characters for plain text emails - proposed by Dainius Kaupaitis
101
+ * Fixed a bug affecting handling of Registered users with email aliases (e.g. name+alias@gmail.com) - thanks to Alexandre (bosseal)
102
+ * Improved Character Set encoding of some email headers
103
+ * Improved user registration hooking for Multisite installs - thanks to dsl255
104
+ * Introduce a filter to allow filtering of the confirm link URL - props diddledan
105
+ * Introduce a confirmation box for Registered User deletion - props geoorgge1968
106
+ * Improved Bulk Management user experience by retaining submitted settings
107
+
108
+ = Version 9.2 by Matthew Robinson =
109
+
110
+ * Fixed an error in the Registered User deletion code - thanks to Jay Wasack
111
+
112
+ = Version 9.1 by Matthew Robinson =
113
+
114
+ * Shortcode parameters are now not case sensitive
115
+ * Fixed AJAX mode to work with new Anti Spam code
116
+ * Suppress undefined variable warnings when sending Digest Email previews
117
+ * Include Signup Date and IP for Public Subscribers in CSV Export - props Taylor4484
118
+ * Fix for Sticky Posts in the digest returning errant posts - thanks to belg4mit
119
+ * Move FAQs to external site to allow more timely updates
120
+ * Add ability to hide other Multisite blogs with CSS in the Subscribe2->Your Subscriptions page (DIV id of 's2_mu_sites') - props cblsysadmin
121
+ * Add 's2_form' filter to allow dynamic alterations to the default form - props adam_jack
122
+ * Conduct more thorough checking for Public and Registered emails when adding users in the admin pages - thanks to MadtownLems
123
+ * Introduce the {REFERENCELINKS} keyword - props manu1033
124
+ * Fix link to jQuery CSS for servers using HTTPS connections - props Christian (aka Alariel)
125
+ * Introduce link to Templates page with unsupported keywords are detected - props MadtownLems
126
+ * Ensure all JavaScript passes the JSHint WordPress Coding Standards
127
+ * Initialise ‘colorpicker’ boxes on page load so they are coloured before first user click
128
+ * Only add a new Weekly schedule if it doesn’t already exist
129
+ * Use trim() on post excerpt to account for blank but non-empty excerpts
130
+ * Don't display screen icons in WordPress 3.8 as they are hidden by CSS - see ticket http://core.trac.wordpress.org/ticket/26119
131
+ * Added 's2_confirm_email' filter to allow amendment or replacement of the subscribe and unsubscribe emails - proposed by Tim Büttner
132
+ * Fixed a typo in the names of the five 's2_send_{email_type}_subscribers' hooks - thanks to robertjj
133
+ * Introduced the 's2_post_statuses' to allow for custom post status transitions, for example with the 'Edit Flow' plugin
134
+ * Fix for failed deletion of Registered Subscribers in Subscribe2->Subscribers page - thanks to Russ Michaels
135
+
136
+ = Version 9.0 by Matthew Robinson =
137
+
138
+ * Added capability to send emails with attachments from Send Email page
139
+ * Added feature that removes unconfirmed public subscribers after 28 days (time frame can be altered with a filter)
140
+ * Added ability to bulk delete Registered Users/Subscribers
141
+ * Use {IMAGE} tag in HTML excerpt emails and digests only, images would be stripped in plain text and included anyway in full content HTML - applies to Subscribe2 HTML only
142
+ * Added help tabs on the plugins admin pages
143
+ * Improved the comparison of barred domains to subscribing email addresses - thanks to SashainSydney
144
+ * Added Text Domain to the plugin header to allow information on plugin page to translate - thanks to qwertysimo
145
+ * Applied a fix to ensure translation of all strings - thanks to qwertysimo
146
+ * Improved some strings to use sprintf() - thanks to Tom Adams (tomdxw)
147
+ * Use jQuery.noConflict(); when AJAX is enabled
148
+ * Removed excess span tag from the Counter Widget - thanks to dimagsv
149
+ * Allow filtering of admin email address for the emails sent when users confirm a subscription or unsubscription - suggested by 3cstudio
150
+ * Fixed default email notification subject text - thanks to Steve C @ 3Cstudio
151
+ * Fixed ability to have translation files in WP_LANG folder
152
+ * Fixed an issue with pagination of search results - thanks to sijpie
153
+ * Fixed 'Add Registered User' button in Subscribe2->Subscribers, Registered Tab - thanks to qwik3r
154
+ * Improved pages dropdown to an ordered and hierarchical display - thanks to xavierlh1
155
+ * Improved control over digest email scheduling - proposed by Jason Lemahieu
156
+ * Fixed Subscriber Dropdown counts for Compulsory categories
157
+ * Added a link to Tranlation files to the plugin page and the miscellaneous tab of the Subscribe2->Settings page - props eyephone21
158
+ * Added {KEYWORD} checking in the template to warn users of disallowed keywords - proposed by Jason Lemahieu
159
+ * Fixed some notices in the Send Email page - thanks to Bryan Hadaway (bhadaway)
160
+ * Added anti-spam measures to the sign up form - thanks to Bryan Hadaway (bhadaway)
161
+ * Update query_filter() function to hook into the 'request' filter instead of the deprecated 'query_filter'
162
+ * Added a default 'Select a page' option to the page dropdown to highlight the need to have a published page select
163
+ * Added filters to the subscription and unsubscription confirmation messages to allow personalisation - see FAQs for example functions
164
+ * Remove Simple Facebook Connect action during subscription and unsubscription confirmation to ensure user messages are displayed
165
+ * Improved white space stripping in the plaintext full content email
166
+ * Fixed a PHP notice on the Subscribe2->Subscribers page - thanks to emile.swain
167
+ * Fixes the non-working 'check all' boxes in WordPress 3.6 and above
168
+ * NOTE Version 9.0 needs WordPress 3.3 or above
169
+
170
+ = Version 8.9.1 by Matthew Robinson =
171
+
172
+ * Check for the existence of the mb_encode_mimeheader function before use as it's optional in PHP builds - thanks to derekmacewen
173
+ * Fix for fatal error in upgrade code due to calling the wrong class
174
+
175
+ = Version 8.9 by Matthew Robinson =
176
+
177
+ * Fix fatal error in the uninstall.php file
178
+ * Correct error using set_url_scheme() function in WordPress version prior to 3.5
179
+ * Allow the Widget to post form back to referring page by omitting action for parameter - thanks to Peter Gordon
180
+ * Fix for options being reset on Multisite installs - thanks to Luca
181
+ * Make sure translation strings are loaded during install(), upgrade() and reset() - thanks to Milan Dinić
182
+ * Fix internationalisation of subscribers list table - thanks to Milan Dinić
183
+ * Use mb_encode_mimeheader on email sender name - thanks to xl32
184
+ * Trim email addresses before sanitising them - thanks to byarts
185
+ * Optimised the upgrade() function for large sites
186
+
187
+ = Version 8.8 by Matthew Robinson =
188
+
189
+ * Added ability to filter both excerpt_length and word_wrap
190
+ * Added code to stop site wide activation on Multisite installs
191
+ * Added code to fix compatibility issues with Autoblog plugin - thanks to Kevin Waite and Andy Stratton
192
+ * Fixed digit entry in pagination section on Registeres tab in Subscribe2->Subscribers
193
+ * Removed ID from a string in the Settings page as it was confusing
194
+ * Enhanced Compulsory Category code to ensure that Registered Users all get notifications for such categories despite their current personal settings
195
+ * Improved Pagination when the Filter is changed on the Subscribe2->Subscribers page
196
+ * Use $wpdb->prefix in preference to $table_prefix
197
+ * Improve functionality of the uninstall script on Multisite installs
198
+ * Fixed glitch in upgrade85 code that failed to add a new database column when called
199
+ * Sort subscribers into alphabetical order irrespective of case - thanks to mharpen
200
+
201
+ = Version 8.7 by Matthew Robinson =
202
+
203
+ * Enabled {TITLE} as a keyword in URL Tracking in free version
204
+ * Moved Subscribers page class code to a new external class file to avoid fatal PHP errors on some sites
205
+ * Fixed a glitch in the {TABLELINK} tag caused by adding support for {TINYLINK} to the digest email
206
+ * Fixed and repaired addition of extra comma to s2_subscribed table values and also addition of null s2cat values
207
+ * Fixed incomplete table creation on new installs - thanks to niclaslockner
208
+ * Fix for PHP Warning about an undefined $value variable on form submission - thanks to annewinterbottom
209
+ * Rename public subscriber variables internally for consistency
210
+ * Implement variable caching for Registered users in the same way as for Public subscribers
211
+ * Widen Subject boxes on the Subscribe2->Settings:Templates page - props Orion42
212
+ * Allow easier customisation of the word wrap length in plain text emails - props Orion42
213
+ * Abstracted the upgrade() code and made it incremental so that only necessary code is executed
214
+ * Fixed a bug in the Send Email page that failed to send emails to Public Subscribers when All Users was selected - thanks to Gui
215
+ * Added an option to disable JavaScript within the Widget
216
+ * Minor code improvements
217
+
218
+ = Version 8.6 by Matthew Robinson =
219
+
220
+ * Minor layout update to Widget Settings
221
+ * Fix for non-sending notifications for pages - proposed by ctcdesign
222
+ * Fix for a translation domain error in admin/settings.php - proposed by monpelaud
223
+ * Fix for deprecated is_blog_user() function on Multisite installs - proposed by hallcp
224
+ * Extend Subscribe2 database table to collect additional data to meet DreamHost privacy policy - thanks to matt, joshukraine and Dreamhost
225
+ * Refresh Subscribers page in admin, tables now sortable on present columns
226
+ * Order CSS files better by applying CSSComb
227
+ * Reuse $value variable in the 'frontend' class to reduce translation strings
228
+ * Improve AJAX form to obey the shortcode hide parameter - proposed by bwsl
229
+ * Correct spelling error in the Settings page - proposed by dimadin
230
+ * Call translation code via a hook to allow greater dynamic control - proposed by dimadin
231
+ * Look in more locations for translation files, can place in core languages folder now for upgrade protection
232
+ * Refresh Settings page in admin to a tabbed interface
233
+ * Strip HTML from email subject to improve compatibility with other plugins and WordPress 3.5
234
+ * Fixed bug in the display of compulsory categories in the Settings page
235
+ * Add option to manually send emails to All Registered Users and Public Subscribers - proposed by TigWeb
236
+ * Enable TinyURL link shortening for Digest Notification Emails if {TINYLINK} is present in the Email Template
237
+ * Fixed bug in TinyURL error handling and fallback when link generation fails
238
+ * Fixed bug where {DATE} was left blank in the subject field for future scheduled post notifications - thanks to Steve Savoy
239
+ * Added a filter to allow on-the-fly alteration of the size of the {IMAGE} in the paid version
240
+ * Fixed a warning message for a core function ready for WordPress 3.6
241
+ * Enabled {TITLE} as a keyword in URL Tracking in HTML version
242
+
243
+ = Version 8.5 by Matthew Robinson =
244
+
245
+ * Fixed width of a page select drop down in the Widget settings - thanks to Balky79
246
+ * Added option to check the comment subscription box by default - proposed by Doug Lerner
247
+ * Improved off-domain error message in Settings page and address checking if Blogname is selected
248
+ * Fixed an issue on Multisite installs displaying the wrong link to profiles pages for other blog sites - thanks to MadtownLems
249
+ * Fixed an issue with Image and Shortcode replacement in the visual editor (TinyMCE) - thanks to Dave Firman
250
+ * Fixed unique IDs for 2 possible error messages in the Settings page - thanks to MadtownLems
251
+ * Fixed several HTML5 validation error in the admin pages
252
+ * Improved regex replacedment of s strike and del HTML tags in plaintext emails - thanks to jimshell
253
+ * Use wp_kses() rather than strip_tags() on email subject lines so that single angle brackets are allowed - thanks to eightize and esmi
254
+ * Allow remote definition of email address in form - thanks to orion42
255
+ * Added ability to have compulsory categories - proposed by iClimb
256
+ * Apply WordPress the_author filter to the author names to improve plugin compatibility - proposed by SpaciousMind
257
+ * Added the ability to track the post ID in the tracking Parameter field - proposed by Laga
258
+ * Protect the 's2email' post meta key - proposed by Nally123
259
+ * Strip excess white space within the Digest email when images are removed
260
+ * Add a time column to the public subscriber table for hosting provider spam policy compliance - proposed by Erik N
261
+ * Change plugin folder name to suppress update prompts for the HTML version
262
+ * Rename js files consistently with core ticket 21633
263
+ * Add width parameter to comment form text to fix issues with some themes - proposed by mharpen
264
+ * Added option to include Sticky Posts at the top of all Digest Notifications - proposed by pkhatmedia
265
+ * Fixed some Markdown errors in the ReadMe
266
+
267
+ = Version 8.4 by Matthew Robinson =
268
+
269
+ * Fixed an error in the 'Send Mail' page that blocked emails from being sent
270
+ * Added tracking features to Digest title links in HTML version - thanks to Jeremy Schultz
271
+ * Provide clearer user feedback for Send and Preview buttons in "Send Email" window
272
+ * Add new option to the Widget to return users to the home page on submission
273
+ * Added warning to Settings page if selected sender email address is "off-domain"
274
+ * Fixed numerous minor SQL injections vectors - thanks to Tom Adams (holizz)
275
+ * Removed auto-embed iframes from HTML emails - thanks to Doug Lerner
276
+ * Add more intuitive user messages for Public Subscribers when Unsubscribing - thanks to Doug Lerner
277
+
278
+ = Version 8.3 by Matthew Robinson =
279
+
280
+ * Fixed a bunch of PHP messages - should not show anyway unless WP_DEBUG is true or PHP error reporting is on a high setting
281
+ * Fixed bulk category management so it applies to all users and not just the first record
282
+ * Update 'autosub' to no on one-click unsubscribe instead of erasing the value
283
+ * Return empty string is get_tracking_link() is passed and empty variable
284
+ * Fixed some typographical errors
285
+ * Fixed profile page to obey 'one click' display setting
286
+ * Fixed implode error seen when sending preview emails on some configurations
287
+ * Fixed a error in the admin user dropdown on installs (particularly Multisite) where there may be no administrator level users
288
+ * Added a button text filter for the Subscribe and Unsubscribe buttons - proposed by casben79
289
+ * Use wp_hash in place of MD5 to further obfuscate confirmation links - thanks to Charlie Eriksen, Otto and Ipstenu
290
+
291
+ = Version 8.2 by Matthew Robinson =
292
+
293
+ * Implemented use of Farbtastic as colour chooser in the Counter Widget because ColorPicker has been deprecated in WordPress
294
+ * Fixed one hook call in WordPress to pass $this variable by reference to save a little more RAM
295
+ * Fixed Subscribe2 implementation of custom taxonomies
296
+ * Fixed Bulk Management Format Change code to apply for all users
297
+ * Fix for low impact security vulnerability
298
+
299
+ = Version 8.1 by Matthew Robinson =
300
+
301
+ * Fixed redirect errors and crash affecting multisite installs on upgrade to 8.0 - thanks in particular to Ed Cooper
302
+ * Fixed several other multisite bugs affecting links and styling - thanks to Mark Olbert
303
+ * Fixed empty CSV exports - thanks to Gil Namur
304
+
305
+ = Version 8.0 by Matthew Robinson =
306
+
307
+ * Split the main plugin file into separate classes for more efficient (60% less RAM) server resource usage - huge thanks to Milan Petrovic
308
+ * Ensure notifications for posts are sent to all active registered users
309
+ * Fixed bug in Bulk Management code to include all filtered Registered Subscribers, not just those on current screen - thanks to samandiriel
310
+ * Fixed some PHP messages regarding use of deprecated clean_url() function and WordPress version checking - thanks to anmari
311
+ * Improved white space trimming in the code so it respects tabs and line breaks - thanks to belg4mit
312
+ * Updated screenshots to Subscribe2 8.0 and WordPress 3.3.1 screen layouts
313
+ * Implemented one-click buttons to subscribe and unsubscribe - thanks to dimadin for code patch
314
+ * Changed some default settings, sender to BLOGNAME and number of recipients per email to 1
315
+ * Implemented a change so that categories are not displayed in the filter dropdowns when using Subscribe2 in digest mode
316
+ * Ensure an action is specified for HTML5 validity - thanks to Franco Carinato
317
+ * Introduced 4 new hooks to filter per-post subscribers for each of the 4 email types - thanks to Nicolas Noé
318
+
319
+ See complete changelog [here.](http://plugins.svn.wordpress.org/subscribe2/trunk/ChangeLog.txt)
320
 
321
  == Upgrade Notice ==
322
+ See Update Version History
admin/app_page.php ADDED
@@ -0,0 +1,183 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ <?php
3
+ global $wpdb;
4
+ $app_id = $_GET["app_id"];
5
+ if($app_id){
6
+ $sSql = "insert into ".WP_subscribe2_TABLE_APP." VALUES ('1', '".$app_id."') ";
7
+ $data = $wpdb->get_results($sSql);
8
+ }
9
+ ?>
10
+
11
+ <?php
12
+ $cSql = "select * from ".WP_subscribe2_TABLE_APP." where 1=1 ";
13
+ $result = $wpdb->get_results($cSql);
14
+ if(count($result) > 0)
15
+ {
16
+ ?>
17
+ <div class="wrap">
18
+ <div id="icon-plugins" class="icon32"></div>
19
+ <h2>Final Step: Place the widget on your site to get started</h2>
20
+ <h3>Drag the widget to a prominent place to maximize signups.</h3>
21
+ <a class="button add-new-h2" style="text-shadow:none;background:#36812E;background-color:#36812E;color:white;" href="widgets.php">Place Widget Now</a>
22
+ <p>Tips</p>
23
+ <ul>
24
+ <li>-Already have the widget in place? Manage your ReadyGraph account <a href="http://readygraph.com/application/insights/"> here</a></li>
25
+ <li>-Need help? Email <a href="mailto:nick@readygraph.com">nick@readygraph.com</a> or click <a href="http://readygraph.com">here</a> </li>
26
+ </ul>
27
+
28
+
29
+ </div>
30
+
31
+
32
+ <?php }else{ ?>
33
+
34
+ <div class="wrap">
35
+ <div id="icon-plugins" class="icon32"></div>
36
+ <h2>Simple Subscribe, Now with Readygraph </h2>
37
+ <h3>Activate Readygraph features to optimize Simple Subscribe functionality</h3>
38
+ <p style="display:none;color:red;" id="error"></p>
39
+ <div class="register-left" style="float: left; width:25%;">
40
+ <div class="form-wrap">
41
+ <h3>Free Signup </h3>
42
+ <p>
43
+ <label for="tag-title">Site URL</label>
44
+ <input type="text" id="register-url" name="eemail_on_homepage">
45
+ </p>
46
+
47
+ <p>
48
+ <label for="tag-title">Name</label>
49
+ <input type="text" id="register-name" name="eemail_on_homepage">
50
+ </p>
51
+
52
+ <p>
53
+ <label for="tag-title">Email</label>
54
+ <input type="text" id="register-email" name="eemail_on_homepage">
55
+ </p>
56
+ <p>
57
+ <label for="tag-title">Password</label>
58
+ <input type="password" id="register-password" name="eemail_on_homepage">
59
+ </p>
60
+ <p>
61
+ <label for="tag-title">Confirm Password</label>
62
+ <input type="password" id="register-password1" name="eemail_on_homepage">
63
+ </p>
64
+
65
+ <p style="max-width:180px;font-size: 10px;">By signing up, you agree to our <a href="http://www.readygraph.com/tos">Terms of Service</a> and <a href='http://readygraph.com/privacy/'>Privacy Policy</a>.</p>
66
+ <p style="margin-top:10px;">
67
+ <input type="submit" style="text-shadow:none;background:#36812E;width:193px;background-color:#36812E;color:white;" value="Continue to place widget" id="register-app-submit" class="button" name="Submit">
68
+ </p>
69
+ </div>
70
+
71
+ </div>
72
+ <div class="register-mid" style="float: left;width:25%;">
73
+ <div class="form-wrap">
74
+ <p>
75
+ <h3>Already a member?</h3>
76
+ <label for="tag-title">Email</label>
77
+ <input type="text" id="signin-email" name="eemail_on_homepage">
78
+ </p>
79
+ <p>
80
+ <label for="tag-title">Password</label>
81
+ <input type="password" id="signin-password" name="eemail_on_homepage">
82
+ </p>
83
+ <p style="padding-top:10px;">
84
+ <input type="submit" style="width:193px;color:" value="Sign In" id="signin-submit" class="button add-new-h2" name="Submit">
85
+ </p>
86
+ </div>
87
+ </div>
88
+ <div class="register-right" style="float:left;width:35%;">
89
+ <div class="form-wrap alert" style="font-size: 16px;background-color: #F9F8F3;border: 2px solid #EBECE8;border-radius: 6px;padding: 16px 45px 16px 30px;">
90
+ <p>
91
+ <h3>Signup For These Benefits:</h3>
92
+ <p>-Grow your subscribers faster</p>
93
+ <p>-Engage users with automated email updates</p>
94
+ <p>-Enhanced email deliverablility</p>
95
+ <p>-Track performace with user-activity analytics</p>
96
+ </div>
97
+ </div>
98
+ <?php } ?>
99
+
100
+ <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
101
+ <script type="text/javascript">
102
+
103
+
104
+ $('#signin-submit').click(function(e){
105
+ var email = $('#signin-email').val()
106
+ var password = $('#signin-password').val()
107
+ if(!email){
108
+ alert('email is empty!')
109
+ return
110
+ }
111
+ if(!password){
112
+ alert('password is empty')
113
+ return
114
+ }
115
+ $.ajax({
116
+ type: 'GET',
117
+ url: 'https://readygraph.com/api/v1/wordpress-login/',
118
+ data: {
119
+ 'email' : email,
120
+ 'password' : password
121
+ },
122
+ dataType: 'json',
123
+ success: function(response) {
124
+ if(response.success)
125
+ {
126
+
127
+ var pathname = window.location.href;
128
+ window.location = pathname + "&app_id="+response.data.app_id;
129
+ }else{
130
+ $('#error').text(response.error)
131
+ $('#error').show();
132
+ }
133
+ }
134
+ });
135
+
136
+
137
+ });
138
+
139
+ $('#register-app-submit').click(function(e){
140
+ var email = $('#register-email').val()
141
+ var site_url = $('#register-url').val()
142
+ var first_name = $('#register-name').val()
143
+ var password = $('#register-password').val()
144
+ var password2 = $('#register-password1').val()
145
+ if(!site_url){
146
+ alert('Site Url is empty.')
147
+ return;
148
+ }
149
+ if(!email){
150
+ alert('Email is empty.')
151
+ return;
152
+ }
153
+ if( !password || password != password2 ){
154
+ alert('Password is not matching.')
155
+ return;
156
+ }
157
+
158
+ $.ajax({
159
+ type: 'POST',
160
+ url: 'https://readygraph.com/api/v1/wordpress-signup/',
161
+ data: {
162
+ 'email' : email,
163
+ 'site_url' : site_url,
164
+ 'first_name': first_name,
165
+ 'password' : password,
166
+ 'password2' : password2,
167
+ 'source':'subscribe2'
168
+ },
169
+ dataType: 'json',
170
+ success: function(response) {
171
+ if(response.success)
172
+ {
173
+ var pathname = window.location.href;
174
+ window.location = pathname + "&app_id="+response.data.app_id;
175
+ }else{
176
+ $('#error').text(response.error)
177
+ $('#error').show();
178
+ }
179
+ }
180
+ });
181
+
182
+ });
183
+ </script>
classes/class-s2-admin.php CHANGED
@@ -6,7 +6,8 @@ class s2_admin extends s2class {
6
  */
7
  function admin_menu() {
8
  add_menu_page(__('Subscribe2', 'subscribe2'), __('Subscribe2', 'subscribe2'), apply_filters('s2_capability', "read", 'user'), 's2', NULL, S2URL . 'include/email_edit.png');
9
-
 
10
  $s2user = add_submenu_page('s2', __('Your Subscriptions', 'subscribe2'), __('Your Subscriptions', 'subscribe2'), apply_filters('s2_capability', "read", 'user'), 's2', array(&$this, 'user_menu'), S2URL . 'include/email_edit.png');
11
  add_action("admin_print_scripts-$s2user", array(&$this, 'checkbox_form_js'));
12
  add_action("admin_print_styles-$s2user", array(&$this, 'user_admin_css'));
@@ -173,6 +174,11 @@ class s2_admin extends s2class {
173
  require_once(S2PATH . 'admin/subscribers.php');
174
  } // end subscribers_menu()
175
 
 
 
 
 
 
176
  /**
177
  Our settings page
178
  */
@@ -243,6 +249,19 @@ class s2_admin extends s2class {
243
  }
244
  } // end widget_s2_counter_css_and_js()
245
 
 
 
 
 
 
 
 
 
 
 
 
 
 
246
  /* ===== meta box functions to allow per-post override ===== */
247
  /**
248
  Create meta box on write pages
6
  */
7
  function admin_menu() {
8
  add_menu_page(__('Subscribe2', 'subscribe2'), __('Subscribe2', 'subscribe2'), apply_filters('s2_capability', "read", 'user'), 's2', NULL, S2URL . 'include/email_edit.png');
9
+ #add_submenu_page('SimpleSubscribe', 'Readygraph App', 'Readygraph App', 'manage_options', 'ssubscribe-register-app', array($this, 'add_ssubscribe_app_register_page'));
10
+ add_submenu_page('s2', __('Readygraph App', 'subscribe2'), __('Readygraph App', 'subscribe2'), apply_filters('s2_capability', "manage_options", 'manage'), 's2_readygraph', array(&$this, 'readygraph_menu'));
11
  $s2user = add_submenu_page('s2', __('Your Subscriptions', 'subscribe2'), __('Your Subscriptions', 'subscribe2'), apply_filters('s2_capability', "read", 'user'), 's2', array(&$this, 'user_menu'), S2URL . 'include/email_edit.png');
12
  add_action("admin_print_scripts-$s2user", array(&$this, 'checkbox_form_js'));
13
  add_action("admin_print_styles-$s2user", array(&$this, 'user_admin_css'));
174
  require_once(S2PATH . 'admin/subscribers.php');
175
  } // end subscribers_menu()
176
 
177
+ function readygraph_menu() {
178
+ global $wpdb;
179
+ require_once(S2PATH . 'admin/app_page.php');
180
+ } // end subscribers_menu()
181
+
182
  /**
183
  Our settings page
184
  */
249
  }
250
  } // end widget_s2_counter_css_and_js()
251
 
252
+ /**
253
+ Function to add css and js files to admin header
254
+ */
255
+ function on_plugin_activated_redirect(){
256
+ $setting_url="admin.php?page=s2_readygraph";
257
+
258
+ if (get_option('s2_do_activation_redirect', false)) {
259
+ delete_option('s2_do_activation_redirect');
260
+ wp_redirect($setting_url);
261
+
262
+ }
263
+ }// end widget_s2_counter_css_and_js()
264
+
265
  /* ===== meta box functions to allow per-post override ===== */
266
  /**
267
  Create meta box on write pages
classes/class-s2-core.php CHANGED
@@ -38,6 +38,17 @@ class s2class {
38
 
39
  // create the table, as needed
40
  maybe_create_table($this->public, $sql);
 
 
 
 
 
 
 
 
 
 
 
41
 
42
  // create table entries for registered users
43
  $users = $this->get_all_registered('ID');
@@ -50,11 +61,13 @@ class s2class {
50
  }
51
  }
52
  }
53
-
54
  // safety check if options exist and if not create them
55
  if ( !is_array($this->subscribe2_options) ) {
56
  $this->reset();
57
  }
 
 
58
  } // end install()
59
 
60
  /**
@@ -1609,7 +1622,7 @@ class s2class {
1609
  // get the WordPress release number for in code version comparisons
1610
  $tmp = explode('-', $wp_version, 2);
1611
  $this->wp_release = $tmp[0];
1612
-
1613
  // Is this WordPressMU or not?
1614
  if ( isset($wpmu_version) || strpos($wp_version, 'wordpress-mu') ) {
1615
  $this->s2_mu = true;
@@ -1690,7 +1703,7 @@ class s2class {
1690
  if ( $this->clean_interval > 0 ) {
1691
  add_action('wp_scheduled_delete', array(&$this, 's2cleaner_task'));
1692
  }
1693
-
1694
  // Add actions specific to admin or frontend
1695
  if ( is_admin() ) {
1696
  //add menu, authoring and category admin actions
@@ -1707,7 +1720,7 @@ class s2class {
1707
  add_filter('ozh_adminmenu_icon_s2_tools', array(&$this, 'ozh_s2_icon'));
1708
  add_filter('ozh_adminmenu_icon_s2_settings', array(&$this, 'ozh_s2_icon'));
1709
  }
1710
-
1711
  // add write button
1712
  if ( '1' == $this->subscribe2_options['show_button'] ) {
1713
  add_action('admin_init', array(&$this, 'button_init'));
@@ -1717,6 +1730,7 @@ class s2class {
1717
  if ( '1' == $this->subscribe2_options['counterwidget'] ) {
1718
  add_action('admin_init', array(&$this, 'widget_s2counter_css_and_js'));
1719
  }
 
1720
 
1721
  // add one-click handlers
1722
  if ( 'yes' == $this->subscribe2_options['one_click_profile'] ) {
38
 
39
  // create the table, as needed
40
  maybe_create_table($this->public, $sql);
41
+ global $wpdb;
42
+ // tables, get ready!
43
+
44
+ if(strtoupper($wpdb->get_var("show tables like '". WP_subscribe2_TABLE_APP . "'")) != strtoupper(WP_subscribe2_TABLE_APP))
45
+ {
46
+ $wpdb->query("
47
+ CREATE TABLE `". WP_subscribe2_TABLE_APP . "` (
48
+ `eemail_app_pk` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
49
+ `eemail_app_id` VARCHAR( 250 ) NOT NULL )
50
+ ");
51
+ }
52
 
53
  // create table entries for registered users
54
  $users = $this->get_all_registered('ID');
61
  }
62
  }
63
  }
64
+
65
  // safety check if options exist and if not create them
66
  if ( !is_array($this->subscribe2_options) ) {
67
  $this->reset();
68
  }
69
+
70
+
71
  } // end install()
72
 
73
  /**
1622
  // get the WordPress release number for in code version comparisons
1623
  $tmp = explode('-', $wp_version, 2);
1624
  $this->wp_release = $tmp[0];
1625
+
1626
  // Is this WordPressMU or not?
1627
  if ( isset($wpmu_version) || strpos($wp_version, 'wordpress-mu') ) {
1628
  $this->s2_mu = true;
1703
  if ( $this->clean_interval > 0 ) {
1704
  add_action('wp_scheduled_delete', array(&$this, 's2cleaner_task'));
1705
  }
1706
+ add_action('admin_init', array(&$this, 'on_plugin_activated_redirect'));
1707
  // Add actions specific to admin or frontend
1708
  if ( is_admin() ) {
1709
  //add menu, authoring and category admin actions
1720
  add_filter('ozh_adminmenu_icon_s2_tools', array(&$this, 'ozh_s2_icon'));
1721
  add_filter('ozh_adminmenu_icon_s2_settings', array(&$this, 'ozh_s2_icon'));
1722
  }
1723
+
1724
  // add write button
1725
  if ( '1' == $this->subscribe2_options['show_button'] ) {
1726
  add_action('admin_init', array(&$this, 'button_init'));
1730
  if ( '1' == $this->subscribe2_options['counterwidget'] ) {
1731
  add_action('admin_init', array(&$this, 'widget_s2counter_css_and_js'));
1732
  }
1733
+
1734
 
1735
  // add one-click handlers
1736
  if ( 'yes' == $this->subscribe2_options['one_click_profile'] ) {
classes/class-s2-frontend.php CHANGED
@@ -40,6 +40,37 @@ class s2_frontend extends s2class {
40
  /**/$this->unsubscribe = __('unsubscribe', 'subscribe2'); //ACTION replacement in unsubscribing in confirmation email
41
  } // end load_strings()
42
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
  /* ===== template and filter functions ===== */
44
  /**
45
  Display our form; also handles (un)subscribe requests
@@ -116,7 +147,11 @@ class s2_frontend extends s2class {
116
  if ( strtolower($nojs) == 'true' ) {
117
  $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>";
118
  } else {
119
- $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";
 
 
 
 
120
  }
121
  $this->s2form = apply_filters('s2_form', $this->form);
122
 
@@ -125,14 +160,42 @@ class s2_frontend extends s2class {
125
  if ( $user_ID ) {
126
  $this->s2form = $this->profile;
127
  }
 
128
  if ( isset($_POST['subscribe']) || isset($_POST['unsubscribe']) ) {
129
- // anti spam sign up measure
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
130
  if ( $_POST['name'] != '' || $_POST['uri'] != 'http://' ) {
131
  // looks like some invisible-to-user fields were changed; falsely report success
132
  return $this->confirmation_sent;
133
  }
134
- global $wpdb, $user_email;
135
- $this->email = $this->sanitize_email($_POST['email']);
136
  if ( !is_email($this->email) ) {
137
  $this->s2form = $this->form . $this->not_an_email;
138
  } elseif ( $this->is_barred($this->email) ) {
40
  /**/$this->unsubscribe = __('unsubscribe', 'subscribe2'); //ACTION replacement in unsubscribing in confirmation email
41
  } // end load_strings()
42
 
43
+
44
+
45
+ function eemail_has_app(){
46
+ global $wpdb;
47
+ $cSql = "select * from wp_subscribe2_app where 1=1 ";
48
+ $data = $wpdb->get_results($cSql);
49
+
50
+ if(count($data) > 0){
51
+ return true;
52
+ }
53
+ else{
54
+ return false;
55
+ }
56
+ }
57
+
58
+ function eemail_my_app_id(){
59
+ global $wpdb;
60
+ $cSql = "select * from wp_subscribe2_app where 1=1 ";
61
+ $data = $wpdb->get_results($cSql,ARRAY_A);
62
+
63
+
64
+ if(count($data) > 0){
65
+ $app_id = $data[0]['eemail_app_id'];
66
+ return $app_id;
67
+ }
68
+ else{
69
+ return false;
70
+ }
71
+ }
72
+
73
+
74
  /* ===== template and filter functions ===== */
75
  /**
76
  Display our form; also handles (un)subscribe requests
147
  if ( strtolower($nojs) == 'true' ) {
148
  $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>";
149
  } else {
150
+ if($this->eemail_has_app()){
151
+ $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><p style='max-width:180px;font-size: 10px;display:{$under_style}'>By signing up, you agree to our <a href='http://www.readygraph.com/tos'>Terms of Service</a> and <a href='http://readygraph.com/privacy/'>Privacy Policy</a>.</p></form>\r\n";
152
+ }else{
153
+ $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";
154
+ }
155
  }
156
  $this->s2form = apply_filters('s2_form', $this->form);
157
 
160
  if ( $user_ID ) {
161
  $this->s2form = $this->profile;
162
  }
163
+
164
  if ( isset($_POST['subscribe']) || isset($_POST['unsubscribe']) ) {
165
+ // anti spam sign up measure
166
+ $this->email = $this->sanitize_email($_POST['email']);
167
+ global $wpdb, $user_email;
168
+ $cSql = "select * from wp_subscribe2_app where 1=1 ";
169
+ $data = $wpdb->get_results($cSql,ARRAY_A);
170
+ if(count($data) > 0){
171
+ $app_id = $data[0]['eemail_app_id'];
172
+
173
+ $rg_url = 'https://readygraph.com/api/v1/wordpress-enduser/';
174
+
175
+ $postdata = http_build_query(
176
+ array(
177
+ 'email' => $this->email,
178
+ 'app_id' => $app_id
179
+ )
180
+ );
181
+
182
+ $opts = array('http' =>
183
+ array(
184
+ 'method' => 'POST',
185
+ 'header' => 'Content-type: application/x-www-form-urlencoded',
186
+ 'content' => $postdata
187
+ )
188
+ );
189
+ $context = stream_context_create($opts);
190
+ $result = file_get_contents($rg_url,false, $context);
191
+
192
+ }
193
+
194
  if ( $_POST['name'] != '' || $_POST['uri'] != 'http://' ) {
195
  // looks like some invisible-to-user fields were changed; falsely report success
196
  return $this->confirmation_sent;
197
  }
198
+
 
199
  if ( !is_email($this->email) ) {
200
  $this->s2form = $this->form . $this->not_an_email;
201
  } elseif ( $this->is_barred($this->email) ) {
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.4
7
  Author: Matthew Robinson
8
  Author URI: http://subscribe2.wordpress.com
9
  Licence: GPL3
@@ -42,6 +42,7 @@ if ( version_compare($GLOBALS['wp_version'], '3.3', '<') || !function_exists( 'a
42
  exit($exit_msg);
43
  }
44
 
 
45
  // stop Subscribe2 being activated site wide on Multisite installs
46
  if ( !function_exists( 'is_plugin_active_for_network' ) ) {
47
  require_once( ABSPATH . '/wp-admin/includes/plugin.php' );
@@ -59,6 +60,9 @@ define( 'S2VERSION', '9.4' );
59
  define( 'S2PATH', trailingslashit(dirname(__FILE__)) );
60
  define( 'S2DIR', trailingslashit(dirname(plugin_basename(__FILE__))) );
61
  define( 'S2URL', plugin_dir_url(dirname(__FILE__)) . S2DIR );
 
 
 
62
 
63
  // Set maximum execution time to 5 minutes - won't affect safe mode
64
  $safe_mode = array('On', 'ON', 'on', 1);
@@ -78,4 +82,12 @@ if ( is_admin() ) {
78
  $mysubscribe2 = new s2_frontend;
79
  $mysubscribe2->s2init();
80
  }
 
 
 
 
 
 
 
 
81
  ?>
3
  Plugin Name: Subscribe2
4
  Plugin URI: http://subscribe2.wordpress.com
5
  Description: Notifies an email list when new entries are posted.
6
+ Version: 10.0
7
  Author: Matthew Robinson
8
  Author URI: http://subscribe2.wordpress.com
9
  Licence: GPL3
42
  exit($exit_msg);
43
  }
44
 
45
+
46
  // stop Subscribe2 being activated site wide on Multisite installs
47
  if ( !function_exists( 'is_plugin_active_for_network' ) ) {
48
  require_once( ABSPATH . '/wp-admin/includes/plugin.php' );
60
  define( 'S2PATH', trailingslashit(dirname(__FILE__)) );
61
  define( 'S2DIR', trailingslashit(dirname(plugin_basename(__FILE__))) );
62
  define( 'S2URL', plugin_dir_url(dirname(__FILE__)) . S2DIR );
63
+ global $wpdb, $wp_version;
64
+ define("WP_subscribe2_TABLE_APP", $wpdb->prefix . "subscribe2_app");
65
+
66
 
67
  // Set maximum execution time to 5 minutes - won't affect safe mode
68
  $safe_mode = array('On', 'ON', 'on', 1);
82
  $mysubscribe2 = new s2_frontend;
83
  $mysubscribe2->s2init();
84
  }
85
+ function s2_install()
86
+ {
87
+ add_option('s2_do_activation_redirect', true);
88
+
89
+ }
90
+
91
+ register_activation_hook(__FILE__, 's2_install');
92
+
93
  ?>