=== s2Member ( Membership w/ PayPal® ) === Version: 3.5.2 Stable tag: 3.5.2 Framework: WS-P-3.5 SSL Compatible: yes bbPress Compatible: yes WordPress Compatible: yes BuddyPress Compatible: yes WP Multisite Compatible: yes Multisite Blog Farm Compatible: yes PayPal® Standard Compatible: yes PayPal® Pro Compatible: w/ s2Member Pro Google® Checkout Compatible: w/ s2Member Pro Authorize.Net® Compatible: w/ s2Member Pro ClickBank® Compatible: w/ s2Member Pro AliPay® Compatible: w/ s2Member Pro ccBill® Compatible: w/ s2Member Pro Tested up to: 3.1 Requires at least: 3.0 Requires: WordPress® 3.0+, PHP 5.2+ Copyright: © 2009 WebSharks, Inc. License: GNU General Public License Contributors: WebSharks, PriMoThemes Author URI: http://www.primothemes.com/ Author: PriMoThemes.com / WebSharks, Inc. Donate link: http://www.primothemes.com/donate/ Plugin Name: s2Member Pro Module / Prices: http://www.s2member.com/prices/ Forum URI: http://www.primothemes.com/forums/viewforum.php?f=4 PayPal Pro Integration: http://www.primothemes.com/forums/viewtopic.php?f=4&t=304 Professional Installation URI: http://www.s2member.com/professional-installation/ Plugin URI: http://www.primothemes.com/post/product/s2member-membership-plugin-with-paypal/ Description: Empowers WordPress® with membership capabilities. Integrates seamlessly with PayPal®. Also compatible with Multisite Networking, and even with BuddyPress if you like. Tags: membership, members, member, register, signup, paypal, paypal pro, pay pal, s2member, authorize.net, google checkout, ccbill, clickbank, alipay, subscriber, members only, buddypress, buddy press, buddy press compatible, shopping cart, checkout, api, options panel included, websharks framework, w3c validated code, includes extensive documentation, highly extensible s2Member is an extremely powerful (and free) membership management system for WordPress®. s2Member integrates seamlessly with PayPal® (very easy). == Installation == = s2Member is very easy to install ( instructions ) = 1. Upload the `/s2member` folder to your `/wp-content/plugins/` directory. 2. Activate the plugin through the `Plugins` menu in WordPress®. 3. Navigate to the `s2Member Options` panel for configuration details. = Auto-installing through WordPress® ( memory errors? ) = This depends on your hosting provider and/or server configuration. Some web hosting companies impose very low limits on the amount of memory available to WordPress® during the execution of a single script. Since s2Member is a larger plugin, WordPress® may exceed conservative limits set forth by shared hosting companies. Don't feel bad, it's a very common problem. The solution is to install manually, using the instructions above. Memory limits only affect the WordPress® auto-installation routine, not the actual functionality of WordPress® or s2Member. = Is s2Member compatible with WordPress® 3.0+ Multisite Networking ? = Yes. s2Member v3.2+, and also s2Member Pro, are BOTH compatible with Multisite Networking enabled. After you enable Multisite Networking, install the s2Member plugin. Then navigate to `s2Member -> Multisite ( Config )` in the Dashboard on your ( Main Site ). = What about Multisite Networking ( WPMU ), used on a Blog Farm? = Yes, preliminary ( experimental ) support for Multisite Blog Farms has also been implemented. If you're running a Multisite Blog Farm ( i.e. you offer Blogs ), please contact s2Member.com for further details. With Multisite Networking enabled, your site could ALSO offer a Customer access to create a Blog of their own, where a Customer becomes a "Member" of your ( Main Site ), and also a Blog Owner/Administrator. With s2Member installed ( network wide ), each of your Blog Owners could offer Membership too, using a single installation of the s2Member plugin ( which is a great selling point ). We refer to this as a Multisite Blog Farm. You can get started now, by turning on [Multisite Networking](http://codex.wordpress.org/Create_A_Network) inside your installation of WordPress®. Then, install the s2Member plugin ( network wide ). In the Dashboard for your Main Site, see: `s2Member -> Multisite ( Config )`. == Upgrading To The Latest Version == You can either (upgrade automatically) by going to `WordPress® -> Plugins` and clicking "upgrade automatically". If that fails with memory errors, you can upgrade manually by following these instructions: 1. Go to: `s2Member -> General Options -> Deactivation Safeguards`. Turn Safeguards `on`, click Save. 2. Now you can safely deactivate s2Member by going to `WordPress® -> Plugins -> s2Member`. 3. Login via FTP, and delete the entire `/wp-content/plugins/s2member` directory. You can leave `/plugins/s2member-logs/` and `/plugins/s2member-files/`. 4. Now upload the latest `/s2member` folder to `/wp-content/plugins/`. 5. Go to: `WordPress® -> Plugins -> s2Member`, and reactivate. 6. That's it. All existing options will remain intact. = Why do I get memory errors during automatic upgrade? = This depends on your hosting provider and/or server configuration. Some web hosting companies impose very low limits on the amount of memory available to WordPress® during the execution of a single script. Since s2Member is a larger plugin, WordPress® may exceed conservative limits set forth by shared hosting companies. Don't feel bad, it's a very common problem. The solution is to upgrade manually. Memory limits only affect the WordPress® auto-installation/upgrade routine, not the actual functionality of WordPress® or s2Member. == Description == s2Member is an extremely powerful ( and free ) membership management system for WordPress®. The s2Member Framework ( free ) integrates seamlessly with PayPal® ( very easy ), and fully supports recurring billing, with the ability to track affiliate commissions on a recurring basis. s2Member supports custom Pages for registration ( including Custom Registration Fields ), account access, and a whole lot more. s2Member is now compatible with Multisite Networking too, and even with BuddyPress if you like. In addition, with the s2Member Pro Module ( an optional paid upgrade ), you can add support for PayPal® Pro, Authorize.Net®, ccBill®, Google® Checkout, ClickBank®, and reach over 1 billion people in China with s2Member's AliPay® integration. s2Member supports Free Subscribers ( at Level #0 ), and up to four Primary Membership Levels, [1-4]; plus unlimited Custom Capability Packages. You can label your Membership Levels anything you like. The defaults are Free, Bronze, Silver, Gold, and Platinum. Custom Capabilities are an easy way to extend s2Member in very creative ways. Custom Capabilities allow you to create an unlimited number of Membership Packages, all with different Capabilities and prices. s2Member allows you to protect Pages, Posts, Tags, Categories, URIs, URI word fragments, URI Replacement Codes for BuddyPress, Specific Post/Page "Buy Now" Access, and even portions of content within Posts/Pages/themes/plugins. Everything is configurable through the s2Member Options Panel. This makes s2Member VERY easy to integrate into any WordPress®-powered site. With s2Member, you can also protect downloadable files, using special restrictions on how many downloads can occur within a certain amount of time; all based on Membership Level. Each Membership Level can have different restrictions, and you could even integrate Conditionals within your content based on Member Level, or on Custom Capabilities. Both Simple ( Shortcode ) and Advanced ( PHP ) code samples are provided under `s2Member -> API Scripting`. s2Member has been fully integrated with Roles & Capabilities that are already built into WordPress®. No new tables :-) It is designed to be completely seamless, without code bloat. We've carefully structured the entire framework, in order to maximize s2Member's ability to operate with other plugins installed. For instance, s2Member is also compatible with BuddyPress; and can even be used to protect forums powered by bbPress. You can also sell Specific Post/Page Access ( membership not required ), using "Buy Now" buttons. You can even package multiple Posts/Pages together into one "Buy Now" transaction. Further details are provided under `s2Member -> PayPal® Buttons -> Specific Posts/Pages`. Specific Post/Page Access, is like selling a product. Only, instead of shipping anything to the Customer, you just give them access to a specific Post/Page on your site; one that you created in WordPress®. A Specific Post/Page that is protected by s2Member, might contain a download link for your eBook, access to file & music downloads, access to support services, and the list goes on and on. The possibilities with this are endless; as long as your digital product can be delivered through access to a WordPress® Post/Page. For instance, you might sell an existing Member an additional item ( without affecting their current Membership plan ). New! - [s2Member Pro](http://www.s2member.com/) is an add-on module for the free version of s2Member. [s2Member Pro](http://www.s2member.com/) adds [PayPal® Pro integration](http://www.primothemes.com/forums/viewtopic.php?f=4&t=304), a PayPal® Pro Form Generator, Authorize.Net® integration, ccBill® integration, Google® Checkout integration, ClickBank® integration, AliPay® integration, advanced User Import/Export tools, support for Coupon Codes, and more. A purchase of s2Member Pro includes free lifetime upgrades; along with full access to our [video tutorial library](http://www.s2member.com/videos/). == Screenshots == 1. s2Member / Screenshot #1 2. s2Member / Screenshot #2 3. s2Member / Screenshot #3 4. s2Member / Screenshot #4 5. s2Member / Screenshot #5 6. s2Member / Screenshot #6 7. s2Member / Screenshot #7 8. s2Member / Screenshot #8 9. s2Member / Screenshot #9 10. s2Member / Screenshot #10 == Frequently Asked Questions == = Is there documentation available for s2Member? = Yes. You will need to install s2Member. The official documentation is built right into the plugin's configuration panels. Supplemental documentation is also built into the plugin, found in your Dashboard under: `s2Member -> API / Scripting` ( which covers MANY advanced topics ). = Are video tutorials available for s2Member? = Yes. [Video Tutorials](http://www.s2member.com/videos/) for s2Member are available [here](http://www.s2member.com/videos/). = Is there a community forum for s2Member? = Yes. The [Forum](http://www.primothemes.com/forums/viewforum.php?f=4) for s2Member is available [here](http://www.primothemes.com/forums/viewforum.php?f=4). = Where can I download older versions of s2Member? = Archived releases of s2Member are maintained [here](http://wordpress.org/extend/plugins/s2member/download/). = Does s2Member install any new database tables? = No, s2Member has been fully integrated with the Roles & Capabilities that are already built into WordPress®. It is designed to be completely seamless, without code bloat. We've carefully structured the entire framework, in order to maximize s2Member's ability to operate with other plugins installed. For instance, s2Member is also compatible with BuddyPress; and can even be used to protect forums powered by bbPress. = Does PayPal integration work right-out-of-the-box? = Yes, it can even generate your PayPal® Subscription Buttons for you. Everything is fully integrated. You even get to create your own Pages within WordPress® to handle Membership Options, the Login Welcome Page, etc. For advanced webmasters, there are scripting techniques that are documented as well. These will help you further develop your site and tailor it to meet your specific needs. s2Member API Scripting is NOT required however. = How many Membership Levels are supported? = s2Member supports Free Subscribers ( at Level #0 ), and up to four Primary Membership Levels [1-4]; plus unlimited Custom Capability packages. You can label your Membership Levels anything you like. The defaults are Free, Bronze, Silver, Gold, Platinum. Custom Capabilities are an easy way to extend s2Member in very creative ways. Custom Capabilities allow you to create an unlimited number of Membership Packages, all with different Capabilities and prices. s2Member also makes it possible to sell an unlimited number of Specific Post/Page Access Links using "Buy Now" buttons. Further details are provided under `s2Member -> PayPal® Buttons -> Specific Posts/Pages`. = Does s2Member utilize the PayPal® IPN system? = Yes, s2Member supports automation of account activation, welcome emails, confirmations, renewals, de-activation, refunds, etc. The integration with PayPal® is seamless. s2Member even provides API Notifications, which are an added layer of functionality. These are not to be confused with the IPN service. s2Member API Notifications make it easier to integrate back-office routines, affiliate programs, list servers, or any other 3rd-party applications that should react to certain events. = Does s2Member support PayPal® PDT/Auto-Return? = Yes, s2Member will work with PayPal® Auto-Return/PDT (Payment Data Transfer) `On`, and also with Auto-Return/PDT `Off`. If you enable Auto-Return, you MUST also enable PDT and supply s2Member with your Identity Token. If one is enabled, the other must also be enabled; and vice-versa. There is a place to enter your PayPal® Identity Token for PDT under `s2Member -> PayPal® Options`. = Can I use PayPal® Pro, Authorize.Net®, ccBill®, AliPay®, ClickBank®, Google® Checkout? = Yes. [s2Member Pro](http://www.s2member.com/) is an add-on module for the free version of s2Member. [s2Member Pro](http://www.s2member.com/) adds [PayPal® Pro integration](http://www.primothemes.com/forums/viewtopic.php?f=4&t=304), a PayPal® Pro Form Generator, Authorize.Net® integration, ccBill® integration, Google® Checkout integration, ClickBank® integration, AliPay® integration, advanced User Import/Export tools, support for Coupon Codes, and more. A purchase of s2Member Pro includes free lifetime upgrades; along with full access to our [video tutorial library](http://www.s2member.com/videos/). = How does s2Member protect content from public access? = s2Member allows you to protect Pages, Posts, Tags, Categories, URIs, URI word fragments, URI Replacement Codes for BuddyPress, Specific Post/Page Access ( Buy Now! ), and even portions of content within Posts/Pages/themes/plugins using Simple ( Shortcode ) or Advanced ( PHP ) Conditionals. Everything is configurable through the s2Member Options Panel. This makes s2Member VERY easy to integrate into any WordPress®-powered site. With s2Member, you can also protect downloadable files, using special restrictions on how many downloads can occur within a certain amount of time. Each Membership Level can have different restrictions ( even Custom Capability Packages ). You can also integrate Conditionals within your content based on Capabilities. Both Simple and Advanced code samples are provided under `s2Member -> API Scripting`. = Does s2Member support an account approval process? = s2Member does not come with an approval system. That being said, what many site owners do, is they allow Free Registration ( i.e. Open Registration: `on` ). This allows visitors to register for free at Level #0, which just gives them an account. After a manual review of Level #0 accounts, an Administrator can upgrade them to Level #1 or higher; granting them access to content you've protected at those higher Levels. So the trick is to protect your content at Level #1 or higher, then allow Open Registration at Level #0. In other words, Level #0 Members will just have an account, but not actually have access to anything until you increase their Membership Level from the default Level #0. If you would like to display a custom message ( i.e. "Your account is pending review." ), you can use s2Member's Simple Conditionals to detect a Customer's Membership Level, and to display an appropriate message on your Login Welcome Page. For further details on Simple/Advanced Conditionals, please check your Dashboard under `s2Member -> API Scripting -> Simple/Advanced Conditionals`. = Does s2Member provide an API that I can connect to? = Yes, s2Member provides many *Advanced Scripting* techniques that are fully documented within its Option Panels. Code samples are provided for everything. There are several API functions that you can use, along with s2Member API Constants. This allows you to access many parts of its functionality, as well as specific Member information. Theme designers are welcome to integrate their themes/plugins with s2Member using the code samples that we provide under `s2Member -> API Scripting`. s2Member even provides API Notifications, which are an added layer of functionality. These are not to be confused with the IPN service. s2Member API Notifications make it easier to integrate back-office routines, affiliate programs, list servers, or any other 3rd-party application that should react to certain events. = Is s2Member compatible with Quick Cache or WP Super Cache? = Yes, there were some bugs in the beginning, but they have been fixed now. Both Quick Cache and WP Super Cache will remain compatible with s2Member. We have integrated two internal Constants that prevent these plugins from caching important Members Only areas of your site, no matter what your cache configuration might be. The two Constants are: `DONOTCACHEPAGE` and `QUICK_CACHE_ALLOWED = false`. We recommend Quick Cache over WP Super Cache though; simply because we actually developed Quick Cache, and we've done more extensive testing with the s2Member/Quick-Cache combination. = Is s2Member compatible with WordPress® 3.0+ Multisite Networking ? = Yes. s2Member v3.2+, and also s2Member Pro, are BOTH compatible with Multisite Networking enabled. After you enable Multisite Networking, install the s2Member plugin. Then navigate to `s2Member -> Multisite ( Config )` in the Dashboard on your ( Main Site ). = What about Multisite Networking ( WPMU ), used on a Blog Farm? = Yes, preliminary ( experimental ) support for Multisite Blog Farms has also been implemented. If you're running a Multisite Blog Farm ( i.e. you offer Blogs ), please contact s2Member.com for further details. With Multisite Networking enabled, your site could ALSO offer a Customer access to create a Blog of their own, where a Customer becomes a "Member" of your ( Main Site ), and also a Blog Owner/Administrator. With s2Member installed ( network wide ), each of your Blog Owners could offer Membership too, using a single installation of the s2Member plugin ( which is a great selling point! ). We refer to this as a Multisite Blog Farm. You can get started now, by turning on [Multisite Networking](http://codex.wordpress.org/Create_A_Network) inside your installation of WordPress®. Then, install the s2Member plugin ( network wide ). In the Dashboard for your Main Site, see: `s2Member -> Multisite ( Config )`. = Is s2Member compatible with the BuddyPress plugin for WordPress? = Yes it is. In fact, we must say... the s2Member/BuddyPress combination is just awesome. These two plugins running together make all sorts of things possible. = How does s2Member know when to demote a paid Member to a Free Subscriber? = s2Member uses its built-in Auto-EOT System ( new ). EOT = End Of Term. Whenever you generate a PayPal® Button with s2Member, you'll configure a length for the Subscription. Depending on the type of Subscription you choose ( recurring, non-recurring, lifetime, or fixed-term ); s2Member will either use PayPal's IPN/`subscr_payment,subscr_cancel,subscr_eot` notices, or it will set an Automatic EOT Time, which is processed automatically by s2Member via WP_Cron. For each Member, you can also override the EOT Time, by forcing a specific expiration date. To manually adjust the EOT Time for a specific Member, go to: `WordPress® -> Users`, and click the Edit link next the Member you want to work on. = Why do I get memory errors during installation and/or upgrade? = This depends on your hosting provider and/or server configuration. Some web hosting companies impose very low limits on the amount of memory available to WordPress® during the execution of a single script. Since s2Member is a larger plugin, WordPress® may exceed conservative limits set forth by shared hosting companies. Don't feel bad, it's a very common problem. The solution is to upgrade manually. Memory limits only affect the WordPress® auto-installation/upgrade routine, not the actual functionality of WordPress® or s2Member. = How can I see more of what's going on behind-the-scene? = s2Member comes with two very sophisticated logging routines. One for its PayPal® IPN communications ( and resulting actions ). The other logs Return-Data processing. You can enable them both, by going to: `s2Member -> PayPal® Options -> Account Details -> Logging`. = When a User/Member is demoted by the Auto-EOT System, are Custom Capabilities removed too? = Yes, whenever a User/Member is demoted, s2Member resets their account back to a Free Subscriber. Any Custom Capabilities the User/Member had - will be removed; as they should be. That being said, starting with s2Member v3.5+, it is now possible to start your list of Custom Capabilities with a `+` sign. This tells s2Member to (ADD) a comma-delimited list of new Custom Capabilities to any that may or may not already exist for a given Member. = Can s2Member implement a Captcha Code on my Login/Registration Forms? = Yes and no. We've left this feature out of the plugin intentionally, because many site owners prefer to use Captcha plugins that encompass all aspects of their site ( including comment forms ). We recommend this one: [SI CAPTCHA Anti-Spam](http://wordpress.org/extend/plugins/si-captcha-for-wordpress/). That being said, [s2Member's Pro Forms](http://www.s2member.com/) for PayPal® Pro and Authorize.Net® ( including Free Registration Forms ) CAN be configured to use Google's reCAPTCHA service. Just add this Attribute to any Pro Form Shortcode ( `captcha="clean"` ). == Upgrade Notice == = 3.5+ = * Upgrade highly recommended. Many new features, WordPress® 3.1 compatible, speed optimizations, and several bug fixes. == Changelog == = 3.5.2 = * Framework updated; general cleanup. * **(s2Member/s2Member Pro). Optimizations.** Further internal optimizations applied through configuration checksums that allow s2Member and s2Member Pro to load with even less overhead now. * **(s2Member/s2Member Pro). Optimizations.** Further internal optimizations applied with Hook priorities that allow s2Member and s2Member Pro to load dynamic CSS/JS files with even less overhead now. * **(s2Member). Bug fix.** Due to changes in WordPress® 3.1+, s2Member was including it's JavaScript routines twice on the `/wp-login.php` page. This has been resolved in s2Member v3.5.2+. * **(s2Member). Hook change. Attn WP developers: s2Member's Hook `_ws_plugin__s2member_force_ssl_buffer_tags` is now `_ws_plugin__s2member_force_ssl_buffer_tags_array`. * **(s2Member). API Constant change. Attn WP developers: s2Member's API Constant `S2MEMBER_CURRENT_USER_SUBSCR_ID` is now accompanied with a new API Constant `S2MEMBER_CURRENT_USER_SUBSCR_OR_WP_ID`. The values returned by these API Constants have changed (slightly). For further details, check your Dashboard under: `s2Member -> API Scripting -> API Constants`. * **(s2Member Pro). Bug fix.** s2Member's ccBill® DataLink routines were sometimes generating the error `Too Many Connections` due to an invalid data storage routine under a delayed scenario. This has been resolved in s2Member v3.5.2+. = 3.5.1 = * **(s2Member). Bug fix.** Errors regarding `class-autoloader.inc.php / glob()`, which were associated with installation servers running NFS ( network file systems ) have been corrected in this release. * **(s2Member). Bug fix.** Errors regarding `ws_plugin__s2member_trim_deep()` during an upgrade from previous versions of s2Member have been corrected in this release. = 3.5 = * **(s2Member/s2Member Pro). WordPress® 3.1.** Updated for full compatibility with WordPress® 3.1 ( s2Member also remains compatible with the WordPress® 3.0.x series ). * **(s2Member/s2Member Pro). Speed Optimizations.** s2Member's entire codebase has been re-organized into PHP classes containing s2Member's static functions ( dev note: all of s2Member's Hooks/Filters remain as they were ). This new infrastructure allows s2Member to take full advantage of PHP's built-in [SPL Autoload](http://php.net/manual/en/language.oop5.autoload.php) extension. This means s2Member's source code is loaded ( only on-demand ) as function calls are made within core routines. So instead of loading s2Member's entire codebase into WordPress®; only the objects/methods needed during the processing of particular page will be included. Long story short, this release of s2Member is much faster than previous versions. For advanced site owners, this will make it more feasible to run s2Member in concert many other plugins; even on shared hosting. * **(s2Member). New feature.** You can now force WordPress® to use your Membership Labels instead of referencing them by s2Member Level #. For further details on this topic, check your Dashboard under `s2Member -> General Options -> Membership Levels/Labels`. * **(s2Member). Profile Shortcode.** s2Member now provides a built-in Shortcode ( `[s2Member-Profile /]` ) that generates an inline Profile Modification Form; which can be inserted into any Post/Page ( such as your Login Welcome Page ) or even into a Text Widget if you like. This feature is ( in addition to ) the existing `/?s2member_profile=1` stand-alone version that has always been available with s2Member. * **(s2Member). New feature.** s2Member now supports Remote Header Authorization on File Downloads ( optional ). Remote Header Authorization allows access to file downloads through an entirely different approach ( again, using this is 100% optional ). Instead of asking the Member to log into your site through a browser, a Member can be prompted automatically, to log in through HTTP Header Authorization prompts; which is the same technique used in more traditional security systems via .htaccess files. In other words, Remote Header Authorization makes it possible for your Members to access files through remote applications that may NOT use a browser. This is often the case when a Member needs to access protected files through a software client like iTunes®; typical with podcasts. For further details, please check your Dashboard under `s2Member -> Download Options -> Remote Auth / Podcasting`. * **(s2Member). New feature.** s2Member now supports a new option in its Login/Registration Design panel. If you have WordPress® 3.1+ installed, you can add your own raw HTML/PHP code to the very bottom of your default Login/Registration Forms with s2Member. Please check your Dashboard under: `s2Member -> General Options -> Login/Registration Design`. * **(s2Member). New feature.** You can now tell s2Member to *encrypt* your PayPal® Buttons automatically for added security. When this feature is enabled, all of your PayPal® Button Shortcodes will produce *encrypted* PayPal® Buttons. This improves security against fraudulent transactions. To turn this feature on, please log into your Dashboard and navigate to `s2Member -> PayPal® Options -> Account Details`. You'll need to provide s2Member with your PayPal® API Username/Password/Signature; and then enable `Button Encryption`. Additional instructions are provided in your WordPress® Dashboard. NOTE: This feature does NOT require you to have a PayPal® Pro account. If you do, that's fine, but it's not a requirement. Also, this particular feature is ONLY applicable to PayPal® Buttons ( it does NOT work with Pro Forms, nor does it need to ). * **(s2Member Pro). CSV Exportation.** s2Member now provides two different export formats. 1. Default CSV ( for easy re-importation ). 2. Easy-Read CSV ( improved readability; CANNOT be re-imported ). In addition to these new options, ALL CSV export formats now include column headers too. This makes CSV files easier to read inside applications like MS Excel or OpenOffice/Calc. * **(s2Member Pro). Authorize.Net®.** s2Member Pro now provides support for Authorize.Net® integrations. Authorize.Net® is a leading provider of payment gateway services, managing the submission of billions of transactions to processing networks on behalf of merchant customers. Authorize.Net is a solution offered by the CyberSource Corporation, a wholly owned subsidiary of Visa (NYSE: V). * **(s2Member Pro). ccBill®.** s2Member Pro now provides support for ccBill® integration. ccBill® is a great choice when you need to process transactions discreetly on an adult-oriented site. Drawing on its years of experience and proven payment processing platform, ccBill® has a solution that will not only meet the requirements of your consumers, it will also help address the specific needs of your business. * **(s2Member Pro). New feature.** s2Member now allows for the inclusion of the Pro Login Widget directly into a theme/plugin file ( optional ). Example usage: ``. It is also possible to configure widget options dynamically. For further details, please check the documentation inside this file: `/s2member-pro/includes/functions/api-functions.inc.php`. * **(s2Member/s2Member Pro). Optimization.** If/when s2Member's logging/debugging mechanisms are enabled through the Dashboard, s2Member is now capable of archiving its own log files. Oversize log files ( i.e. larger than 2MB ) are automatically renamed with `...-ARCHIVED-{time}.log` to prevent s2Member from creating ridiculously large log files that may have otherwise built up over a longer period of time. * **(s2Member/s2Member Pro). New Profile field.** A new drop-down menu has been added to the administration editing panel for User/Member Profiles. This new drop-down menu allows a site owner to specify which Payment Gateway a Member's payments are associated with. s2Member will automatically configure this field for you, but it is editable none the less. NOTE: If you are upgrading from a previous version of s2Member, you may notice that s2Member will NOT have this information on file for any existing Members that you obtained prior to installing s2Member v3.5+. You may want to go through and update the value of this field for each Member after upgrading. That being said, this new field is only provided for clarity; and for future compatibility. In other words, there is no functionality lost if the Payment Gateway field is left blank for previously existing Members. * **(s2Member). New feature.** s2Member now supports a new Replacement Code for Login Redirection URLs, and also for URI Restrictions ( `%%current_user_ccaps%%` ). This is the current User's set of Custom Capabilities. If the current User has multiple Custom Capabilities, they will be separated by hyphens; allowing this string to be used in the formulation of slugs for a Special Login Redirection URL; which could be configured differently for each Custom Capability Package that you offer. * **(s2Member). New feature.** s2Member can now automate un-subscribe/opt-out removals for any List Servers that you've integrated ( i.e. MailChimp®, AWeber® ). s2Member is also capable of handling everything based on your own personal configuration preferences. You can choose which Events you consider grounds for List Removal. For further details, please check your Dashboard under: `s2Member -> API / List Servers -> Automate Un-Subscribes`. During a paid Subscription Modification, it also possible to have Members un-subscribed from Lists at their existing Membership Level#, while at the same time; subscribing them to Lists you've configured at the Membership Level they are upgrading/downgrading to. * **(s2Member). New feature.** Brute Force IP/Login Restrictions. As with any Membership system, it is possible for someone to try and guess Username/Password combinations by attempting a Brute Force Attack; whereby multiple/repeated logins are strategically attempted with various Username/Password combinations until a correct guess is made. It is NOT likely that you'll be attacked in this way, but it's still a good idea to protect your system; just in case somebody tries this. s2Member thwarts this behavior by monitoring failed login attempts that occur within a short period of time. Whenever s2Member detects an IP address ( i.e. a remote user ) that is consistently failing to enter a valid Username/Password, a temporary ban is created; preventing additional attempts from taking place for 30 minutes. This temporary ban, will ONLY affect the offending IP address. For further details and configuration of this new feature, please check your Dashboard under: `s2Member -> General Options -> Brute Force IP/Login Restrictions`. * **(s2Member Pro). New feature.** The s2Member (Pro) Login Widget now includes Login/Logout Redirection options. For further details, please check your Dashboard under: `Appearance -> Widgets -> s2Member (Pro) Login Widget`. * **(s2Member/s2Member Pro). Compatibility.** s2Member now precedes all of its calls to these two functions with an @ sign ( `@ini_get` and `@ini_set` ). This suppresses errors generated by PHP whenever these functions are disabled on the installation server. This is a very minor issue, as most hosting companies DO allow these functions to be called through PHP. At any rate, the preceding @ sign now puts s2Member inline with WordPress® standards in this regard. * **(s2Member). WP 3.1 Compatibility.** When "Redirect Members away from the Default Profile Panel?" is set to ( Yes ), s2Member will take an initiative to further safeguard ALL /wp-admin/ areas of your installation; not just the Default Profile Panel. Also, starting with WordPress® 3.1+, setting this to ( Yes ) tells s2Member to dynamically modify links/titles in the new Admin Bar that can be enabled on WordPress® 3.1+. s2Member will force links to your Login Welcome Page instead of the Default Profile Panel; and Dashboard links are removed for non-Admin accounts ( as they should be ). * **(s2Member). New feature.** It is now possible to delete/reset IP Restrictions ( i.e. temporary bans ) caused by a security breach in your configuration of s2Member's IP Restrictions. Some site owners have reported complaints from their Customers about the error `503 / Too Many IP Addresses`. This is not a bug; it is the result of a temporary ban that s2Member imposes automatically; based on your IP Restriction configuration in the General Options panel for s2Member. Improving upon this functionality in s2Member v3.5+, you can now pull up a Users account in your Dashboard and delete/reset temporary bans on a per-User basis; as needed for customer service. For further details, or to delete/reset ALL IP Restrictions at once, please check your Dashboard under: `s2Member -> General Options -> IP Restrictions`. * **(s2Member). Multisite auto-patcher.** When running on a Multisite Network with `Automatically Patch WordPress® = yes`, s2Member is now capable of hooking into the automatic upgrade routines for WordPress® so that future updates to the WordPress® core framework will remain synchronized with core patches required by s2Member ( and a notice regarding patches automatically synchronized will be displayed during the core upgrade routine in your Dashboard ). This is ONLY applicable if you're running s2Member on a Multisite Network. For further details, check your Dashboard under: `s2Member -> Multisite (Config)`. * **(s2Member Pro). Multisite Blog Farms.** On a Multisite Blog Farm, it is now possible for child Blog Administrators running s2Member Pro to utilize the advanced Import/Export routines provided by the s2Member Pro module. * **(s2Member/s2Member Pro). New feature.** It is now possible to (ADD) Custom Capabilities through a Subscription Modification Button/Form. By default, a Checkout Button or Form generated by s2Member is designed to set and/or reset a Member's Custom Capabilities to the ones you specify in the Button/Form Code. However, starting with s2Member v3.5+, you can tell s2Member to (ADD) additional Custom Capabilities to any that already exist for a particular Member. This is accomplished on a per Form/Button basis by preceding your comma-delimited list of Custom Capabilities with a (+) sign. For further details on this topic, click the [?] icon next to the Custom Capabilities field in any Button/Form Generator supplied by s2Member. * **(s2Member). Compatibility.** s2Member's data encryption routines have always used a URL-safe version of Base64 Encoding to transfer data; whereby the Base64 padding character `=` is replaced with a URL-safe `.`. This routine has been modified to replace `=` with `~` instead of `.`; making s2Member more compatible with internal WordPress® functions like `site_url()` which refuse to generate URLs containing double `..` occurrences. Backward compatibility for existing data remains intact though; so this change only serves to improve s2Member's compatibility with WordPress®. * **(s2Member). New cookie.** s2Member has always used three temporary/encrypted cookies to authenticate a newly paid Customer. Starting with s2Member v3.5, there are now four cookies all together ( `s2member_subscr_gateway`, `s2member_subscr_id`, `s2member_custom`, `s2member_level` ). The new addition is `s2member_subscr_gateway`. The value of this cookie is also stored internally; it's associated with a Customer's Paid Subscr. ID. You can edit the Paid Subscr. Gateway/ID if you'd like. You'll find a drop-down menu on the [Edit] page for each Member. * **(s2Member/s2Member Pro). New feature.** s2Member's Button and Form Generators now provide a customer service tool that allows a site owner to generate Membership Registration Access Links on their own ( if/when needed ). This tool accompanies the Specific Post/Page Link Generation tool that has been a part of previous versions of s2Member. So these tools working together, now make it possible to create Access Links for both types of functionality. Again, these tools are provided for convenience. They are only intended to help site owners with customer service issues; they are NOT a required aspect of s2Member's integration with WordPress®. * **(s2Member Pro). New feature.** If you're using Pro Forms with s2Member Pro; particularly if you run a Multisite Blog Farm, you can now set this Constant in your `/wp-config.php` file: `define('S2MEMBER_PRO_AUTO_FORCE_SSL', true);`. This tells s2Member Pro to auto-force SSL on any Post/Page that contains a Pro Form Shortcode. This is useful if you're running a Blog Farm and SSL is already provided/configured for all Site Owners on your Network. Otherwise, the method of using a WordPress® Custom Field `s2member_force_ssl = yes` on a per-Post/Page basis works fine. * **(s2Member Pro). Desc attribute change.** The maximum characters allowed in the `desc=""` attribute for Pro Form Shortcodes ( and only for Pro Forms ) is now `100` characters. In previous versions the max length was `127`. This has been lowered to `100` so that s2Member has plenty of room for dynamically generated annotations regarding discounts via coupon codes. FYI: most Payment Gateways impose an upper limit ( e.g. PayPal® 127 max total ). In other words, s2Member must reduce max characters allowed in the `desc=""` attribute so it has plenty of room for its own annotations. * **(s2Member). Compatibility.** s2Member's handling of protected file delivery through `chunks` has been updated to support the full valid protocol of `Transfer-Encoding: chunked`. This should eliminate any remaining file delivery issues on GoDaddy shared hosting accounts and the like. * **(s2Member). Compatibility.** s2Member's directory locations for `/s2member-files/` and `/s2member-logs/` are now nested into a sub-directory of `/app_data/` ONLY on Windows® servers. This way all files in these directories will be secured from public access in a Windows® environment. On a Windows® server, the `/app_data/` directory name is special. Files within a directory with this special name are automatically protected from public access, without needing to create an `.htaccess` workaround, or use a `web.config` file. In addition, s2Member now makes two WordPress® Filters available ( `ws_plugin__s2member_files_dir` and `ws_plugin__s2member_logs_dir` ) giving developers the ability to move their protected files and/or logs to a custom directory of their choosing; if/when this is needed in special cases. * **(s2Member/s2Member Pro). New Hook for Multisite Blog Farm developers.** s2Member now makes a new Hook available; allowing Multisite Blog Farms to prevent the s2Member Pro module from loading on certain child Blogs, or under other special circumstances. You'll find this Hook inside `/s2member/s2member.php` ( `ws_plugin__s2member_load_pro` ). * **(s2Member/s2Member Pro). Multisite Blog Farms.** The dynamic mutation of s2Member's built-in documentation has been updated to provide better ( i.e. more appropriate ) information to Administrators of child Blogs on a Multisite Blog Farm. * **(s2Member Pro). Instruction.** Additional instructions have been added to the s2Member Pro panel for PayPal® Pro Forms. This new information includes details regarding workarounds when you do NOT have access to a PayPal® *Pro* account. FYI: It is no longer an *absolute requirement* that a site owner have a PayPal® Pro account; you can still use Pro Forms; as long as you have PayPal® Express Checkout ( which is free ). * **(s2Member). Conflict prevention.** s2Member now provides warnings in the Dashboard whenever novice site owners attempt to configure their Login Welcome Page or Membership Options Page as their Home Page ( i.e. static page ) for WordPress®; or as the static Posts Page. These conflict warnings will appear under: `WordPress® -> Reading Options` when/if a configuration conflict arises. * **(s2Member/s2Member Pro). Documentation.** Documentation updated/improved throughout several areas of s2Member and s2Member Pro. = And these bugs were corrected in v3.5 ( Changelog cont. ) = * **(s2Member). Multisite bug fix.** When s2Member is installed on a Multisite Network, it is now capable of dealing with centralized Users accounts that are being shared across multiple sites in the Network. In other words, s2Member v3.5+ prevents WordPress® from generating `username/email exists` errors through front-end forms whenever a User that exists on one site attempts to register on another. In order to accomplish this, s2Member v3.5 introduces one additional Multisite patch for your `/wp-includes/ms-functions.php` file, making it possible for WordPress® to add/remove existing User accounts from one site to another (gracefully); just like that which is supported natively in the WordPress® Dashboard already. NOTE: after updating to s2Member v3.5+, please be sure to re-run your Multisite (Config) patches. You will find these patches in your Dashboard under: `s2Member -> Multisite (Config)`. And yes, this is also compatible with WordPress® v3.1. * **(s2Member). Bug fix.** The built-in Profile Editing panel for s2Member that resides at `/?s2member_profile=1` contained an extra ( i.e. double ) closing tag for the `form` element. This has been corrected in s2Member v3.5+. * **(s2Member Pro). Bug fix.** A Pro Form configuration error, `Invalid "rp, rt" attributes.`, was being triggered whenever the Pro Form Attribute `rp` was greater than 1 year; even for Buy Now (BN) transactions. This was NOT the intended behavior, as the 1 year recurring limitation applies only to PayPal® Recurring Profiles, and should NOT have been limiting Buy Now transactions under 5 years. This bug/limitation has been resolved in the latest release. Maximum Subscription length for PayPal® Pro Recurring Profiles is 1 year, and maximum Subscription length for Buy Now transactions is 5 years; or 1 Lifetime also being possible. * **(s2Member Pro). Bug fix.** A Pro Form configuration error, `attribute is "D", and "tp" ( Trial Period ) > 7` was corrected. This should have been testing for 365 days instead of 7. * **(s2Member Pro). Bug fix.** The AliPay® integration file `alipay-notify.inc.php` was updated to correct an incompatibility issue with AliPay® custom variables. A symptom of this bug was ( no email being received after AliPay® checkout ). This bug has been resolved in s2Member Pro v1.5. * **(s2Member Pro). Bug fix.** The AliPay® integration file `alipay-notify.inc.php` was not exiting with the proper `success` status in its communication with AliPay®. A symptom of this bug was repeated notifications for a single transaction; thereby causing multiple emails to each Customer under the right circumstance. This bug has been resolved in s2Member Pro v1.5. * **(s2Member Pro). Bug fix.** s2Member Pro was sometimes processing API Payment Notifications in duplicate for AliPay®, ClickBank®, ccBill®, and Google® Checkout integrations. This has been resolved in s2Member Pro v1.5+. * **(s2Member Pro). Bug fix.** s2Member Pro was sometimes delivering ClickBank® Customers to a Return-Page with a default POST vars error because of an invalid `proxy_use / ty-email` specification. This has been resolved in s2Member Pro v1.5+. * **(s2Member Pro). Bug fix.** s2Member Pro Form integration with PayPal's Pro API, was suffering from a minor glitch caused by date/time conflicts between the s2Member installation server ( i.e. your server ) and PayPal's API server. In some rare cases, s2Member was attempting to start new Recurring Profiles in the past ( at least in the eyes of the PayPal® API server ); which could be in a different time zone. s2Member Pro now avoids this potential conflict by padding start dates with 12 hour offsets; making s2Member more reliable in this regard. * **(s2Member). Bug fix.** When s2Member was running together with BuddyPress, `wp-login.php?redirect_to=` logic implemented by BuddyPress was conflicting with s2Member's handling of `wp-login.php?redirect_to=`, including Login Welcome Page redirection. s2Member v3.5 resolves this BuddyPress conflict by removing all Filters applied by BuddyPress to `login_redirect`; thereby eliminating the conflict all together. This conflict was resolved in favor of s2Member, because s2Member provides a very comprehensive option configuration for this behavior in it's General Options panel. * **(s2Member). Bug fix.** s2Member's Alternative View Protection was not working properly when the `All` setting was applied to child/sub Category restrictions. At least, not in the same way that s2Member handles all of its other child Category restrictions. This bug has been corrected in v3.5 so that all child/sub Categories of a protected parent Category are filtered by s2Member's Alternative View Protection when this option is set to `All`. * **(s2Member Pro). Bug fix.** s2Member's integration with AliPay® was attempting to process duplicate IPN responses from the AliPay® server. Apparently AliPay® finds it necessary to continue prodding the IPN handler multiple times. In order to prevent duplicate processing, s2Member now employs a Transient array of already-processed Notification IDs; allowing it to silently ignore duplicate IPNs ( they will still be logged though, as they should be ). * **(s2Member). tinyURLs.** s2Member's limited use of the tinyURL service for shrinking links inserted into email messages has been improved upon in this release. As of s2Member v3.5+, all tinyURLs are now appended with your domain name; making them easier for Customers to read, and improving their overall appearance. * **(s2Member). Bug fix.** Under certain circumstances, s2Member was generating administrative URLs with `/wp-admin/?page=...` instead of `/wp-admin/admin.php?page=...`. A common symptom of this bug was to see an error in your Dashboard, something like: `You do not have permission to access this page`. This has been resolved in s2Member v3.5+. * **(s2Member). Bug fix.** Corrected layout issue on s2Member's Multisite (Config) panel. The field for `Level #0 Blogs Allowed` was not being hidden properly under certain circumstances; depending on the Multisite configuration being applied. This has been corrected in s2Member v3.5. * **(s2Member Pro). Bug fix.** Some of the new Button Generators for ClickBank®, AliPay®, Google® Checkout were using the JavaScript `escape()` function instead of `encodeURIComponent()`; leaving the possibility for certain characters ( such as `+` signs ) to be misinterpreted when passed through a URL/query string. This bug has been resolved in s2Memeber v3.5+ and s2Member Pro v1.5+. * **(s2Member Pro). Upgrader/bug fix.** The automatic upgrader for the s2Member Pro module was inadvertently deleting itself ( sometimes ) whenever an upgrade failed through WordPress® with script memory/timeout errors. This routine has been modified to better handle it's "point of no return" by unzipping the latest distribution into a separate temporary directory. In addition to this change, the update routine now analyzes your server configuration to ensure enough memory is available before the update routine begins. In the event that your installation lacks the memory required ( at least 256M ) to unzip the s2Member Pro module, a warning to that affect will be displayed and you will need to upload the `/s2member-pro/` directory via FTP instead; following instructions in the `/readme.txt` file. IMPORTANT: Since previous versions of the automatic updater did NOT include these important enhancements, you may not be able to use the automatic updater in your current version of s2Member Pro. Long story short, we believe the issues HAVE been corrected for "future" releases, but in order to upgrade to this release, you may need to download a copy at s2Member.com and upload it manually via FTP. Full instructions are provided in the `/readme.txt` file, and on the site at s2Member.com. = 3.3.2 = * Tested against WordPress® 3.0.3. Everything looks good. * (s2Member) Bug fix. s2Member was ignoring `?redirect_to=value` upon login, in favor of the Login Welcome Page configured for s2Member. s2Member v3.3.2 has been updated to allow the use of `redirect_to`; and to simply default to the Login Welcome Page when no `redirect_to` argument is passed in. This is the intended behavior. As of s2Member v3.3.2 this now works fully as expected. * (s2Member/s2Member Pro) Bug fix. s2Member was incorrectly calculating delayed EOT Times under certain circumstances. This was related to non-recurring Subscriptions processed on PayPal® accounts opened after October 15th, 2009. Under the right scenario, PayPal's IPN responses were fooling s2Member, by immediately expiring payments; and sending a `recurring_payment_expired` IPN before the `recurring_payment` IPN. So s2Member was incorrectly calculating the EOT Time ( i.e. `last_payment_time` was not properly considered ). The logic behind s2Member's IPN handling routines has been corrected in v3.3.2 to resolve this issue. * (s2Member/s2Member Pro) SEO / Search Engine Optimization. s2Member now sends 301 redirect headers instead of the default WordPress® 302. This prevents duplicate content warnings from search engines such as Google®. In other words, when s2Member redirects visitors ( and/or search engine spiders ) to your Membership Options Page, in response to an attempt to access a secured area of your site; the `wp_redirect()` call will send a 301 redirect header instead of a 302. This prevents duplicate content warnings associated with your Membership Options Page. In addition, a universal Filter ( i.e. `ws_plugin__s2member_content_redirect_status` ) has been added to s2Member's source code, giving developers the ability to modify this behavior dynamically; if they need to. * (s2Member Pro) Bug fix. s2Member Pro's AliPay® integration was incorrectly handling Return URLs on success. This release fixes the invalid syntax inside `/functions/separates/alipay-return.inc.php`. * (s2Member Pro) Compatibility. s2Member Pro Forms are now compatible with jQuery v1.4.4. jQuery v1.4.4 introduced the need for double-quotations around all attribute/value selectors. * (s2Member Pro) New Pro Form attribute. s2Member Pro Forms now accept a new Attribute ( i.e. `template=""` ). This allows developers to integrate Pro Forms with custom template files, on a per-Form basis. For further details on this topic, please check your Dashboard under: `s2Member -> PayPal® Pro Forms -> Shortcode Attributes (explained)`. * (s2Member) Bug fix. A bug that was first introduced in v3.3 was causing AWeber integrations to fail with email addresses being picked up as the administrative address instead of the Customer's address. This was related to a previous change in v3.3 where all `mail()` commands were converted to `wp_mail()` for improved compatibility. With this release ( s2Member v3.3.2 ), the bug with AWeber integration has been resolved. Thanks to everyone for reporting this important issue. = 3.3.1 = * Tested against WordPress® 3.0.2. Everything looks good. * Updated Stable Tag to v3.3.1. s2Member is compatible with WordPress® 3.0+ ( including WP 3.0.2 ). = 3.3 = * (s2Member) Bug fix / File Downloads. Use of PHP's `fread()` function has been updated to `stream_get_contents()` with a 2MB chunk size in order to satisfy the needs of site owners delivering VERY large files ( 500MB+ ) though simulated HTTP streams "inline". For instance, an MP4 video file into a FlowPlayer/JWPlayer or another Flash-based application. In addition, s2Member is now capable of output buffering its chunked file delivery, making it possible for s2Member to deliver VERY large files through most shared hosting platforms without needing to upgrade to a private server. * (s2Member) Bug fix / BuddyPress. Bug fix. New filter added in support of BuddyPress on a Multisite installation. `add_filter ("bp_signup_usermeta", "c_ws_plugin__s2member_registrations::ms_process_signup_meta");` * (s2Member) Bug fix / BuddyPress. Improved detection of BuddyPress activation/registration slugs using `BP_ACTIVATION_SLUG`, `BP_REGISTER_SLUG` in conjunction with improved routing of `$usermeta` data inside `/s2member/includes/functions/config-user-registration.inc.php`. This resolves an issue where s2Member was not properly applying Membership Levels ( e.g. an s2 Role ) with BuddyPress installed on a Multisite Network. * (s2Member) Custom Registration Fields. s2Member's API Notifications now support custom Replacement Codes for any Custom Registration Fields that you've configured with s2Member. This makes it easier for developers to integrate 3rd party services, because s2Member's API Notifications can now be configured to send additional information that may include data entered by your Customer into a Custom Registration Field. Also, s2Member still supports the `custom="domain|cv1|cv2|cv3|etc..."` Attribute in your Shortcode too. For full details, check your Dashboard under: `s2Member -> API Notifications`. * (s2Member) Improved documentation on various Replacement Codes available for s2Member. There are also some new Replacement Codes made available in various sections/integrations. * (s2Member) In WordPress®, when you list all `Users`, you will find a search box in the upper right-hand corner of the screen. This search box now has the ability to find Members by `Username, Display Name, Nickname, s2Member / Paid Subscr. ID, Custom String, and ANY Custom Registration Field value`. * (s2Member) Advanced Content Dripping. A new PHP/API Constant has been made available for Content Dripping `S2MEMBER_CURRENT_USER_PAID_REGISTRATION_DAYS` ( note the addition of "PAID" ). Also, s2Member v3.3 includes an entirely new/alternative method for Dripping Content, using a new API Function called `s2member_registration_time ([level])`. You will find all of the information/documentation on this topic inside your Dashboard under: `s2Member -> API Scripting -> Content Dripping`. s2Member now has the ability to provide you with information about when a Member pays you at each specific Membership Level. That being said, there IS an issue with this... The new function `s2member_registration_time ()` will NOT return data correctly for existing Members that paid you prior to you upgrading to s2Member v3.3+. This is because s2Member did NOT record all of this information in previous versions. So it can't give you what it doesn't have on any of your existing Members. Please check the forums for workarounds. * (s2Member) API Constants. s2Member v3.3 includes some new API Constants related to PayPal® and PayPal® Pro integration. Such as the configured PayPal® API Username, Password, Signature, etc. These will make it easier for other extensions to be built on top of s2Member should the need arise. * (s2Member/s2Member Pro) Documentation updated throughout. Some minor wording changes were required here-and-there in order to prevent confusion with all of s2Member Pro's new Gateway integrations. * (s2Member/s2Member Pro) All of s2Member's Button Generators now give you the ability to set a Trial Period and a separate Trial Billing Amount. So instead of just offering a 100% free Trial Period, you can now offer an Initial Period at one price, but have the Subscription billed later at a different Regular Recurring rate. * (s2Member Pro) New configuration panel added to s2Member Pro. The new `Other Gateways` panel allows you to enable/disable other Payment Gateways that have been integrated with s2Member Pro. * (s2Member Pro) Google® Checkout. s2Member Pro has been integrated with Google® for Direct Payments and also for Recurring Billing. In order to take advantage of this new integration method, you will need to have a copy of s2Member Pro, and a Google® Checkout Account. A Google® Checkout account is free. * (s2Member Pro) ClickBank®. s2Member Pro has now been integrated with ClickBank® for Direct Payments and also for Recurring Billing. In order to take advantage of this new integration method, you will need to have a copy of s2Member Pro, and a ClickBank® Merchant Account. Otherwise, you can just use the PayPal® Standard integration that comes with the free version of s2Member. * (s2Member Pro) AliPay®. s2Member Pro has been integrated with AliPay® for Direct Payments. In order to take advantage of this new integration method, you will need to have an AliPay® Merchant Account with Direct Pay enabled ( aka: 前台自助--即时到账收款 ). This can sometimes take a couple of days to acquire. Once you've been approved at AliPay®, you'll be given a Partner ID, and a Security Code; which you'll need to configure inside your `s2Member -> AliPay® Options`. * (s2Member Pro) PayPal® Pro integration with s2Member Pro, now supports Coupon Codes that can be configured to ONLY apply to (ta) Trial Amounts, or (ra) Regular Amounts. For further details and examples, please check your Dashboard under: `s2Member -> Coupon Codes`. * (s2Member Pro) PayPal® Pro Forms with s2Member Pro, can now be configured to recur at these new intervals: Bi-Weekly, Bi-Monthly, and Quarterly recurring cycles. * (s2Member Pro) Documentation. New documentation on ALL of s2Member's Shortcode Attributes for Pro Forms, Standard Shortcodes, and other Payment Gateways; is now included inside your Dashboard. For each Payment Gateway that you enable, there will be a Button Generator available in the s2Member Menu panel. At the bottom of each Button Generating station, you'll find a detailed examination of s2Member's Shortcode Attributes. This should make s2Member even easier for developers to integrate. = 3.2.9 = * Compatibility. s2Member's Custom Field interface was being negatively impacted by the Prototype library for JavaScript; which is utilized by some other popular plugins, such as WP-O-Matic. As a result, on some installations of s2Member ( depending on your plugin combination ), a few site owners were seeing a jumbled mix of fields in their General Options panel for s2Member. This conflict with the Prototype library has been resolved in s2Member v3.2.9+. If ( and ONLY if ) you were experiencing this issue in previous versions of s2Member, it is recommended that you delete all of your existing Custom Fields for s2Member and re-create them. If you don't delete all of your corrupted Custom Fields and start over, the issue may *appear* to still exist; but it HAS been corrected. = 3.2.8 = * Unique IP Restrictions. There is a new option under: `s2Member -> General Options -> IP Restrictions` which allows a site owner to effectively disable IP Restrictions if they'd prefer. On some hosting platforms, the `$_SERVER["REMOTE_ADDR"]` variable ( i.e. a Users IP address ) is incorrectly set to the exact same thing for all visitors; which WILL prevent s2Member's IP Restrictions from working as intended. If you're on a hosting platform that has this bug, you may wish to disable IP Restrictions completely using s2Member v3.2.8+. Otherwise, under most circumstances we recommend that you leave IP Restrictions on. = 3.2.7 = * Custom Fields ( new features ). s2Member is now equipped with a VERY powerful set of features; designed to extend the functionality of Custom Fields. s2Member now supports Text Fields ( single/multi-line ), Checkboxes ( single/multi-option ), Radio Buttons ( single/multi-option ), and Dropdowns ( single/multi-option ). In addition, with s2Member it is now possible to configure Custom Fields differently for each Membership Level. Other tools: including Validation Formats and Visibility are also available. For full details, check your Dashboard under: `s2Member -> General Options -> Custom Fields`. * Attn Developers ( before upgrading ). Hooks/Filters ( e.g. those related to Custom Fields ) have been modified in ways that may break custom scripts you've created to work with previous versions of s2Member. We suggest dropping all of your Hooks/Filters related to Custom Fields. Instead, use the NEW improved tools w/s2Member v3.2.7+. Please see: `s2Member -> General Options -> Custom Fields`. * BuddyPress/Multisite. A plugin conflict was resolved between BuddyPress/s2Member when both of these plugins were installed on a Multisite Network together. BuddyPress bypasses the default Filter ( `pre_site_option_registration` ) and instead, it uses: `bp_core_get_site_options()`. This has been resolved in s2Member v3.2.6+. * Bug fix. A bug was found in s2Member's handling of Custom Fields columns. This minor bug was conflicting with other plugins that attempt to create User-based columns. This was been resolved in s2Member v3.2.7+. * New Shortcode attribute. s2Member's PayPal Button Shortcode now accepts a new attribute ( `ta="0.00"`, Trial Amount ). In the past, if you intended to offer a "paid" Initial Period at a different price, you had to use the Full Button Code. Now you can just change the `ta="0.00"` attribute ( which is easier ). * More informative. s2Member now generates warnings for newbies that create conflicts between their Membership Options Page and Login Welcome Page. s2Member is now capable of detecting the most common conflicts, in order to produce informative messages that assist site owners. * Login/Registration Design. s2Member v3.2.7+ includes additional customization tools that allow font sizes and font families to be configured for the Login/Registration system. In your Dashboard, go to: `s2Member -> General Options -> Login/Registration Design`. * Bug fix. The Default Profile Editing Panel ( e.g. `/wp-admin/profile.php` ) was NOT validating Custom Fields. s2Member v3.2.7 resolves this for Users/Members. Administrators are exempt ( the intended functionality ). * Better instructions inside in the General Options panel for s2Member. Just a few subtle improvements based on User feedback. Hopefully these will make life a little easier for newbies. = 3.2.5 = * IP Restrictions ( reset ). Several site owners have reported issues with s2Member's IP Restrictions. A full investigation has been performed. Although no bugs were found, we suspect that recent reports on this topic are related to a combination of a.) improvements in recent versions of s2Member, with respect to IP Restrictions ( adaptive concurrency limits ); and b.) lack of support ( on the part of s2Member ) for resetting IP Restriction Logs after changes in configuration. In this release of s2Member, we've introduced a new tool for site owners, which allows you to Reset IP Restriction Logs manually, at anytime you like. For further details, please see: `s2Member -> General Options -> IP Restrictions` ( look for the new button titled: `Reset IP Restriction Logs`. ). * Compatibility. s2Member's activation/deactivation routines have been updated to support installations of WordPress® that may, or may not, already have the default WordPress® Roles installed. For instance, some installations of WordPress® are running with Role managing plugins. A site owner could have modified WordPress®, and may no longer have one, or even all of these default Roles: `administrator, editor, author, contributor, subscriber`. s2Member is now capable of dealing with this scenario gracefully upon activation/deactivation. = v3.2.4 - 1.0 = * ... trimmed away at v3.2.4. * Initial release, v1.0.