=== Subscribe2 === Contributors: Dabelon, wenzhixue, MattyRob Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=2387904 Tags: posts, subscription, email, subscribe, notify, notification Requires at least: 3.3 Tested up to: 3.9 Stable tag: 10.0 License: GPL3 Sends a list of subscribers an email notification when new posts are published to your blog. == Description == = Summary = 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. = Email = 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. = Subscriptions = 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. The format of the email can also be customised for per-post notifications, Subscribe2 can generate emails for each of the following formats: * plaintext excerpt. * plaintext full post (Registered Users only). * HTML excerpt (Registered Users only). * HTML full post (Registered Users only). If you want to send full content HTML emails to Public Subscribers too then upgrade to [Subscribe2 HTML](http://semperplugins.com/plugins/subscribe2-html/). = ReadyGraph App = 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. == Installation == = AUTOMATIC INSTALLATION = 1. Log in to your WordPress blog and visit Plugins->Add New. 2. Search for Subscribe2, click "Install Now" and then Activate the Plugin 3. Visit the "Subscribe2 -> Settings" menu. 4. Configure the options to taste, including the email template and any categories which should be excluded from notification 5. Visit the "Subscribe2 -> Subscribers" menu. 6. Manually subscribe people as you see fit. 7. Create a [WordPress Page](http://codex.wordpress.org/Pages) to display the subscription form. When creating the page, you may click the "S2" button on the QuickBar to automatically insert the Subscribe2 token. Or, if you prefer, you may manually insert the Subscribe2 shortcode or token: [subscribe2] or the HTML invisible `` ***Ensure the token is on a line by itself and that it has a blank line above and below.*** This token will automatically be replaced by dynamic subscription information and will display all forms and messages as necessary. 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. = MANUAL INSTALLATION = 1. Copy the entire /subscribe2/ directory into your /wp-content/plugins/ directory. 2. Activate the plugin. 3. Visit the "Subscribe2 -> Settings" menu. 4. Configure the options to taste, including the email template and any categories which should be excluded from notification 5. Visit the "Subscribe2 -> Subscribers" menu. 6. Manually subscribe people as you see fit. 7. Create a [WordPress Page](http://codex.wordpress.org/Pages) to display the subscription form. When creating the page, you may click the "S2" button on the QuickBar to automatically insert the Subscribe2 token. Or, if you prefer, you may manually insert the Subscribe2 shortcode or token: [subscribe2] or the HTML invisible `` ***Ensure the token is on a line by itself and that it has a blank line above and below.*** This token will automatically be replaced by dynamic subscription information and will display all forms and messages as necessary. 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. == Frequently Asked Questions == [Visit FAQ site](http://subscribe2.wordpress.com/support/faqs/) == Screenshots == 1. The Subscribe2->Mail Subscribers admin page generated by the plugin. 2. The Subscribe2->Subscribers admin page generated by the plugin. 3. The Subscribe2->Subscriptions admin page generated by the plugin. 4. The Subscribe2->Subscribe2 admin page generated by the plugin. == Changelog == = Version 9.5 by Matthew Robinson = * Improved placement and usage of the ‘s2_custom_keywords’ filter in the digest emails * Fix for some undefined variable notices * Fixes for database connectivity in the upgrade class file - thanks to rushu25 * Fix for bug when antispam measures are disabled - thanks to serinx * Add option to Sidebar Widget to not wrap the button below the form = Version 9.4 by Matthew Robinson = * Fix for non-existing variable errors on Subscribe2->Subscribers page - thanks to bapakrob and perezlr * Don’t display Excluded Categories in Bulk Management is Registered users cannot override the exclusion * Fix for disappearing Jetpack Stats module - thanks to desertravenart * Fix for undefined variable notices in the digest emails = Version 9.3 by Matthew Robinson = * Only add 'weekly' cron schedule interval if it does not already exist * Add capability to add social media share buttons to HTML emails * Update editor plugin for TinyMCE version 4 bundled with WordPress 3.9 * Rework Digest emails to collect posts based on transition status rather than time - see ticket https://plugins.trac.wordpress.org/ticket/2058 * Hide comment form subscription options if using Jetpack Comments and improve compatibility * Fixed typos in the Help tab on the Settings page * Improved domain name comparison for sender email check - props garypardun * Tidied load_string() function and moved it to class-s2-frontend.php as all strings are not for user side only * Ensure 's2_authors' keys exist on all sites and for all Registered Users as per illmasterc’s bug report * Introduce 's2_mu_blog_list' filter to allow filter of blog list for WordPress Multisite installs - props careb * Enable built-in widget by default - props by MadtownLems * Use a better method for unendcoding HTML special characters for plain text emails - proposed by Dainius Kaupaitis * Fixed a bug affecting handling of Registered users with email aliases (e.g. name+alias@gmail.com) - thanks to Alexandre (bosseal) * Improved Character Set encoding of some email headers * Improved user registration hooking for Multisite installs - thanks to dsl255 * Introduce a filter to allow filtering of the confirm link URL - props diddledan * Introduce a confirmation box for Registered User deletion - props geoorgge1968 * Improved Bulk Management user experience by retaining submitted settings = Version 9.2 by Matthew Robinson = * Fixed an error in the Registered User deletion code - thanks to Jay Wasack = Version 9.1 by Matthew Robinson = * Shortcode parameters are now not case sensitive * Fixed AJAX mode to work with new Anti Spam code * Suppress undefined variable warnings when sending Digest Email previews * Include Signup Date and IP for Public Subscribers in CSV Export - props Taylor4484 * Fix for Sticky Posts in the digest returning errant posts - thanks to belg4mit * Move FAQs to external site to allow more timely updates * Add ability to hide other Multisite blogs with CSS in the Subscribe2->Your Subscriptions page (DIV id of 's2_mu_sites') - props cblsysadmin * Add 's2_form' filter to allow dynamic alterations to the default form - props adam_jack * Conduct more thorough checking for Public and Registered emails when adding users in the admin pages - thanks to MadtownLems * Introduce the {REFERENCELINKS} keyword - props manu1033 * Fix link to jQuery CSS for servers using HTTPS connections - props Christian (aka Alariel) * Introduce link to Templates page with unsupported keywords are detected - props MadtownLems * Ensure all JavaScript passes the JSHint WordPress Coding Standards * Initialise ‘colorpicker’ boxes on page load so they are coloured before first user click * Only add a new Weekly schedule if it doesn’t already exist * Use trim() on post excerpt to account for blank but non-empty excerpts * Don't display screen icons in WordPress 3.8 as they are hidden by CSS - see ticket http://core.trac.wordpress.org/ticket/26119 * Added 's2_confirm_email' filter to allow amendment or replacement of the subscribe and unsubscribe emails - proposed by Tim Büttner * Fixed a typo in the names of the five 's2_send_{email_type}_subscribers' hooks - thanks to robertjj * Introduced the 's2_post_statuses' to allow for custom post status transitions, for example with the 'Edit Flow' plugin * Fix for failed deletion of Registered Subscribers in Subscribe2->Subscribers page - thanks to Russ Michaels = Version 9.0 by Matthew Robinson = * Added capability to send emails with attachments from Send Email page * Added feature that removes unconfirmed public subscribers after 28 days (time frame can be altered with a filter) * Added ability to bulk delete Registered Users/Subscribers * 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 * Added help tabs on the plugins admin pages * Improved the comparison of barred domains to subscribing email addresses - thanks to SashainSydney * Added Text Domain to the plugin header to allow information on plugin page to translate - thanks to qwertysimo * Applied a fix to ensure translation of all strings - thanks to qwertysimo * Improved some strings to use sprintf() - thanks to Tom Adams (tomdxw) * Use jQuery.noConflict(); when AJAX is enabled * Removed excess span tag from the Counter Widget - thanks to dimagsv * Allow filtering of admin email address for the emails sent when users confirm a subscription or unsubscription - suggested by 3cstudio * Fixed default email notification subject text - thanks to Steve C @ 3Cstudio * Fixed ability to have translation files in WP_LANG folder * Fixed an issue with pagination of search results - thanks to sijpie * Fixed 'Add Registered User' button in Subscribe2->Subscribers, Registered Tab - thanks to qwik3r * Improved pages dropdown to an ordered and hierarchical display - thanks to xavierlh1 * Improved control over digest email scheduling - proposed by Jason Lemahieu * Fixed Subscriber Dropdown counts for Compulsory categories * Added a link to Tranlation files to the plugin page and the miscellaneous tab of the Subscribe2->Settings page - props eyephone21 * Added {KEYWORD} checking in the template to warn users of disallowed keywords - proposed by Jason Lemahieu * Fixed some notices in the Send Email page - thanks to Bryan Hadaway (bhadaway) * Added anti-spam measures to the sign up form - thanks to Bryan Hadaway (bhadaway) * Update query_filter() function to hook into the 'request' filter instead of the deprecated 'query_filter' * Added a default 'Select a page' option to the page dropdown to highlight the need to have a published page select * Added filters to the subscription and unsubscription confirmation messages to allow personalisation - see FAQs for example functions * Remove Simple Facebook Connect action during subscription and unsubscription confirmation to ensure user messages are displayed * Improved white space stripping in the plaintext full content email * Fixed a PHP notice on the Subscribe2->Subscribers page - thanks to emile.swain * Fixes the non-working 'check all' boxes in WordPress 3.6 and above * NOTE Version 9.0 needs WordPress 3.3 or above = Version 8.9.1 by Matthew Robinson = * Check for the existence of the mb_encode_mimeheader function before use as it's optional in PHP builds - thanks to derekmacewen * Fix for fatal error in upgrade code due to calling the wrong class = Version 8.9 by Matthew Robinson = * Fix fatal error in the uninstall.php file * Correct error using set_url_scheme() function in WordPress version prior to 3.5 * Allow the Widget to post form back to referring page by omitting action for parameter - thanks to Peter Gordon * Fix for options being reset on Multisite installs - thanks to Luca * Make sure translation strings are loaded during install(), upgrade() and reset() - thanks to Milan Dinić * Fix internationalisation of subscribers list table - thanks to Milan Dinić * Use mb_encode_mimeheader on email sender name - thanks to xl32 * Trim email addresses before sanitising them - thanks to byarts * Optimised the upgrade() function for large sites = Version 8.8 by Matthew Robinson = * Added ability to filter both excerpt_length and word_wrap * Added code to stop site wide activation on Multisite installs * Added code to fix compatibility issues with Autoblog plugin - thanks to Kevin Waite and Andy Stratton * Fixed digit entry in pagination section on Registeres tab in Subscribe2->Subscribers * Removed ID from a string in the Settings page as it was confusing * Enhanced Compulsory Category code to ensure that Registered Users all get notifications for such categories despite their current personal settings * Improved Pagination when the Filter is changed on the Subscribe2->Subscribers page * Use $wpdb->prefix in preference to $table_prefix * Improve functionality of the uninstall script on Multisite installs * Fixed glitch in upgrade85 code that failed to add a new database column when called * Sort subscribers into alphabetical order irrespective of case - thanks to mharpen = Version 8.7 by Matthew Robinson = * Enabled {TITLE} as a keyword in URL Tracking in free version * Moved Subscribers page class code to a new external class file to avoid fatal PHP errors on some sites * Fixed a glitch in the {TABLELINK} tag caused by adding support for {TINYLINK} to the digest email * Fixed and repaired addition of extra comma to s2_subscribed table values and also addition of null s2cat values * Fixed incomplete table creation on new installs - thanks to niclaslockner * Fix for PHP Warning about an undefined $value variable on form submission - thanks to annewinterbottom * Rename public subscriber variables internally for consistency * Implement variable caching for Registered users in the same way as for Public subscribers * Widen Subject boxes on the Subscribe2->Settings:Templates page - props Orion42 * Allow easier customisation of the word wrap length in plain text emails - props Orion42 * Abstracted the upgrade() code and made it incremental so that only necessary code is executed * Fixed a bug in the Send Email page that failed to send emails to Public Subscribers when All Users was selected - thanks to Gui * Added an option to disable JavaScript within the Widget * Minor code improvements = Version 8.6 by Matthew Robinson = * Minor layout update to Widget Settings * Fix for non-sending notifications for pages - proposed by ctcdesign * Fix for a translation domain error in admin/settings.php - proposed by monpelaud * Fix for deprecated is_blog_user() function on Multisite installs - proposed by hallcp * Extend Subscribe2 database table to collect additional data to meet DreamHost privacy policy - thanks to matt, joshukraine and Dreamhost * Refresh Subscribers page in admin, tables now sortable on present columns * Order CSS files better by applying CSSComb * Reuse $value variable in the 'frontend' class to reduce translation strings * Improve AJAX form to obey the shortcode hide parameter - proposed by bwsl * Correct spelling error in the Settings page - proposed by dimadin * Call translation code via a hook to allow greater dynamic control - proposed by dimadin * Look in more locations for translation files, can place in core languages folder now for upgrade protection * Refresh Settings page in admin to a tabbed interface * Strip HTML from email subject to improve compatibility with other plugins and WordPress 3.5 * Fixed bug in the display of compulsory categories in the Settings page * Add option to manually send emails to All Registered Users and Public Subscribers - proposed by TigWeb * Enable TinyURL link shortening for Digest Notification Emails if {TINYLINK} is present in the Email Template * Fixed bug in TinyURL error handling and fallback when link generation fails * Fixed bug where {DATE} was left blank in the subject field for future scheduled post notifications - thanks to Steve Savoy * Added a filter to allow on-the-fly alteration of the size of the {IMAGE} in the paid version * Fixed a warning message for a core function ready for WordPress 3.6 * Enabled {TITLE} as a keyword in URL Tracking in HTML version = Version 8.5 by Matthew Robinson = * Fixed width of a page select drop down in the Widget settings - thanks to Balky79 * Added option to check the comment subscription box by default - proposed by Doug Lerner * Improved off-domain error message in Settings page and address checking if Blogname is selected * Fixed an issue on Multisite installs displaying the wrong link to profiles pages for other blog sites - thanks to MadtownLems * Fixed an issue with Image and Shortcode replacement in the visual editor (TinyMCE) - thanks to Dave Firman * Fixed unique IDs for 2 possible error messages in the Settings page - thanks to MadtownLems * Fixed several HTML5 validation error in the admin pages * Improved regex replacedment of s strike and del HTML tags in plaintext emails - thanks to jimshell * Use wp_kses() rather than strip_tags() on email subject lines so that single angle brackets are allowed - thanks to eightize and esmi * Allow remote definition of email address in form - thanks to orion42 * Added ability to have compulsory categories - proposed by iClimb * Apply WordPress the_author filter to the author names to improve plugin compatibility - proposed by SpaciousMind * Added the ability to track the post ID in the tracking Parameter field - proposed by Laga * Protect the 's2email' post meta key - proposed by Nally123 * Strip excess white space within the Digest email when images are removed * Add a time column to the public subscriber table for hosting provider spam policy compliance - proposed by Erik N * Change plugin folder name to suppress update prompts for the HTML version * Rename js files consistently with core ticket 21633 * Add width parameter to comment form text to fix issues with some themes - proposed by mharpen * Added option to include Sticky Posts at the top of all Digest Notifications - proposed by pkhatmedia * Fixed some Markdown errors in the ReadMe = Version 8.4 by Matthew Robinson = * Fixed an error in the 'Send Mail' page that blocked emails from being sent * Added tracking features to Digest title links in HTML version - thanks to Jeremy Schultz * Provide clearer user feedback for Send and Preview buttons in "Send Email" window * Add new option to the Widget to return users to the home page on submission * Added warning to Settings page if selected sender email address is "off-domain" * Fixed numerous minor SQL injections vectors - thanks to Tom Adams (holizz) * Removed auto-embed iframes from HTML emails - thanks to Doug Lerner * Add more intuitive user messages for Public Subscribers when Unsubscribing - thanks to Doug Lerner = Version 8.3 by Matthew Robinson = * Fixed a bunch of PHP messages - should not show anyway unless WP_DEBUG is true or PHP error reporting is on a high setting * Fixed bulk category management so it applies to all users and not just the first record * Update 'autosub' to no on one-click unsubscribe instead of erasing the value * Return empty string is get_tracking_link() is passed and empty variable * Fixed some typographical errors * Fixed profile page to obey 'one click' display setting * Fixed implode error seen when sending preview emails on some configurations * Fixed a error in the admin user dropdown on installs (particularly Multisite) where there may be no administrator level users * Added a button text filter for the Subscribe and Unsubscribe buttons - proposed by casben79 * Use wp_hash in place of MD5 to further obfuscate confirmation links - thanks to Charlie Eriksen, Otto and Ipstenu = Version 8.2 by Matthew Robinson = * Implemented use of Farbtastic as colour chooser in the Counter Widget because ColorPicker has been deprecated in WordPress * Fixed one hook call in WordPress to pass $this variable by reference to save a little more RAM * Fixed Subscribe2 implementation of custom taxonomies * Fixed Bulk Management Format Change code to apply for all users * Fix for low impact security vulnerability = Version 8.1 by Matthew Robinson = * Fixed redirect errors and crash affecting multisite installs on upgrade to 8.0 - thanks in particular to Ed Cooper * Fixed several other multisite bugs affecting links and styling - thanks to Mark Olbert * Fixed empty CSV exports - thanks to Gil Namur = Version 8.0 by Matthew Robinson = * Split the main plugin file into separate classes for more efficient (60% less RAM) server resource usage - huge thanks to Milan Petrovic * Ensure notifications for posts are sent to all active registered users * Fixed bug in Bulk Management code to include all filtered Registered Subscribers, not just those on current screen - thanks to samandiriel * Fixed some PHP messages regarding use of deprecated clean_url() function and WordPress version checking - thanks to anmari * Improved white space trimming in the code so it respects tabs and line breaks - thanks to belg4mit * Updated screenshots to Subscribe2 8.0 and WordPress 3.3.1 screen layouts * Implemented one-click buttons to subscribe and unsubscribe - thanks to dimadin for code patch * Changed some default settings, sender to BLOGNAME and number of recipients per email to 1 * Implemented a change so that categories are not displayed in the filter dropdowns when using Subscribe2 in digest mode * Ensure an action is specified for HTML5 validity - thanks to Franco Carinato * Introduced 4 new hooks to filter per-post subscribers for each of the 4 email types - thanks to Nicolas Noé See complete changelog [here.](http://plugins.svn.wordpress.org/subscribe2/trunk/ChangeLog.txt) == Upgrade Notice == See Update Version History