latest stable versions: v150311 (changelog)

Changelog

Covers changes for all s2Member® products. s2Member® version numbers indicate each public release date, in this format: YYMMDD.

s2 Guy

v150311 (Mar 11th, 2015)

  • (s2Member/s2Member) Bug Fix: The list of users in the WordPress Dashboard was going blank in a particular scenario where a search was attempted in concert with a sortable s2Member column. Fixed in this release. Props to @bridgeport for finding this. See also this GitHub issue if you'd like technical details.
  • (s2Member Pro) [s2Member-List /] Bug Fix: This release resolves an issue with pagination in the [s2Member-List /] shortcode after recent changes in the WP_User_Query class. See this GitHub issue if you'd like additional details.
  • (s2Member Pro) Remote Operations API (Bug Fix): If a remote API call was made to find a user by user_login, and that username was all numeric, the WP_User class treated it like a user ID instead of as an actual username. Resolved in this release by calling new WP_User(0, [user login]) as the second argument to the constructor. Thereby forcing WP_User to consider it a username. See also this GitHub issue if you'd like technical details.
  • (s2Member Pro) Stripe Bug Fix: Stripe Pro-Forms for Specific Post/Page Access should not disable the email address field for logged-in users. Resolved in this release. See also: this GitHub issue if you'd like technical details.
  • (s2Member Pro) Stripe Pro-Forms: This release corrects a bug first introduced in the last release that prevented custom templates for Stripe Pro-Forms from working as intended. Please see this GitHub issue if you'd like additional details.
  • (s2Member Pro) Bug Fix for Gift/Redemption Codes: This release of s2Member corrects a bug that impacted the generation of Gift/Redemption Codes whenever they were sold with Specific Post/Page Access. See also this GitHub issue if you'd like additional details.

v150225 (Feb 25th, 2015)

  • (s2Member Pro) Accept Bitcoin via Stripe! This release of s2Member Pro comes integrated with the latest version of the Stripe API, where it is now possible to accept Bitcoin right along with most major credit cards—made possible by Stripe's latest update to support Bitcoin. It's as easy as flipping a switch :-) Please see: Dashboard ⥱ s2Member Pro ⥱ Stripe Options ⥱ Account Details ⥱ Accept Bitcoin. Referencing this GitHub issue; i.e., the original feature request.
  • (s2Member Pro) Stripe API Upgrade: This release of s2Member Pro updates the Stripe SDK and Stripe API to the latest version (Stripe API version: 2015-02-18). In addition, this release forces a specific version of the Stripe API in all communication between Stripe and s2Member; thereby avoiding a scenario where the Stripe API could be updated again in the future, in ways that might prevent s2Member Pro from operating as intended. See also: this GitHub issue if you'd like technical details. Props to @pauloz1890 for reporting this.
  • (s2Member/s2Member Pro) Security Badge Sizes: This release of s2Member corrects an issue with the [s2Member-Security-Badge v="1" /] shortcode. If you set v="2" or v="3", the dimensions were miscalculated. Props to @Mizagorn See this GitHub issue if you'd like additional details.
  • (s2Member Pro) Bug Fix: Opt-in checkbox state (and some custom fields) were losing state when switching from one type of Pro Form to another—whenever Pro Form Checkout Options were in use. Fixed in this release. See also: this GitHub issue if you'd like additional details. Props to @zenzoidman for finding this!
  • (s2Member) Bug Fix: Alt. View Restrictions stopped working on navigation menu items in the previous release of s2Member v150203 due to a default argument value being misinterpreted by a sub-routine. Fixed in this release. See also: this GitHub issue if you'd like further details.
  • (s2Member/s2Member Pro) Bug Fix: Some site owners reported "paying" customers being left with a Membership Level of 0 at seemingly random times that may have occurred only once in every 300+ transactions. The issue was related to a regular expression being performed against encrypted binary data with an ungreedy ? in the regex pattern. Certain characters in the binary output would be lost when specific character sequences were encountered; resulting in a random failure to decrypt cookies set by s2Member. In short, the underlying cause was identified and corrected in this release. Thanks to all who reported this. Our appreciation goes out to everyone who helped to test for this elusive bug. See also: this GitHub issue if you'd like additional technical details.
  • (s2Member/s2Member Pro) UI Enhancements: This release includes an enhanced UI, along with many subtle improvements to the inline documentation/instructions provided within the WordPress Dashboard.
  • (s2Member Pro) Retiring Google Wallet: Google announced that they are retiring Google Wallet for Digital Goods. s2Member Pro continues to support Google Wallet, but this release updates the "Other Gateways" section in the Dashboard to make it clear that Google Wallet will not be supported in future versions of s2Member Pro. In fact, Google Wallet for Digital Goods will close March 2nd, 2015.
  • (s2Member/s2Member) bbPress Bug Fix: This release resolves a security issue when running a Multisite Network with bbPress + s2Member. Level 0 access was being granted by the bbPress plugin across all sites in a network. That behavior is fine for bbPress, but is unexpected when s2Member is running in a Network environment. See also: this GitHub issue if you'd like additional details. IMPORTANT TIP: If you experienced this issue, please read through these important comments about bbPress Participants needing to be removed from child blogs in order to fully rid yourself of this problem; i.e., once you complete the update of s2Member, you should also read this please.
  • (s2Member/s2Member Pro) 404 / Alt. Views Bug Fix: This release of s2Member corrects a rare issue where the Membership Options Page (or other pages) can produce random 404 errors whenever s2Member's Alt. View Restrictions are enabled, and there is another plugin installed which runs a DB query using the WP_Query class before the Main WP Query has been run. Resolved through the use of ->is_main_query() instead of tracking it statically via $initial_query. See also this GitHub issue if you'd like additional technical details.

v150203 (Feb 3rd, 2015)

  • (s2Member Pro) Gift/Redemption Codes: This release adds a powerful new shortcode: [s2Member-Gift-Codes /]. This makes it easy to generate and sell access to gift codes (i.e., gift certificates) and/or to a list of redemption codes. For instance, where a single team leader might like to purchase multiple accounts they can distribute to others on a team, or in a group. Video demo here: https://www.youtube.com/watch?v=T3N_vygowbM&feature=youtu.be ~ See also: this GitHub issue for additional technical details.
  • (s2Member Pro) User-Specific Coupon Codes: This release of s2Member makes it possible to configure Pro-Form Coupon Codes that are connected (i.e., only valid) when entered by specific Users/Members who are logged into the site. See: Dashboard ⥱ s2Member ⥱ Pro Coupon Codes. See also: this GitHub issue for additional technical details.
  • (s2Member Pro) Coupon Code Max Uses: This release of s2Member Pro adds the ability to set a maximum number of times that a Coupon Code can be used. This makes it easy to create Coupon Codes that are designed to be used only one time, for instance; or for X number of times. After a Coupon Code is used X number of times, it will expire automatically. See: Dashboard ⥱ s2Member ⥱ Pro Coupon Codes. See also: this GitHub issue for technical details.
  • (s2Member Pro) Coupon Code Usage Tracking: This release of s2Member Pro adds the ability to track the number of times that each of your Coupon Codes have been used. It is also possible to alter the number of uses, and/or set a maximum number of uses. See: Dashboard ⥱ s2Member ⥱ Pro Coupon Codes. See also: this GitHub issue for technical details.
  • (s2Member Pro) Coupon Code Active/Expires Dates: This release of s2Member Pro makes it possible to establish both a start and end time for each of your Pro Coupon Codes. In previous versions of s2Member, it was only possible to set an expiration date. You can now create Coupon Codes that will become active at some point in the future automatically. See: Dashboard ⥱ s2Member ⥱ Pro Coupon Codes. See also: this GitHub issue for technical details.
  • (s2Member Pro) Coupon Code UI Enhancements: This release of s2Member Pro comes with an updated UI that makes it easier to manage your Pro Coupon Codes. See: Dashboard ⥱ s2Member ⥱ Pro Coupon Codes. See also: this GitHub issue for technical details.
  • (s2Member Pro) Store Coupon Codes for Each User: s2Member Pro now stores a list of all coupon codes that a customer has used on your site. See: Dashboard ⥱ Users ⥱ Choose User [Edit]. Scrolling down to the set of s2-related fields will reveal a new list of coupon codes. This list will be filled for new customers only; i.e., s2Member does not have this data for past purchases; only for new customers that you acquire after updating to the latest release. See also this GitHub issue if you'd additional details.
  • (s2Member/s2Member Pro) EOT Custom Value: In this release of s2Member, the get_user_option('s2member_custom') value is preserved after an EOT has taken place, making it possible for site owners to continue to read this value (along with any custom pipe-delimited values they have injected there), even after an EOT has taken place. See also: this GitHub issue.
  • (s2Member/s2Member Pro) JW Player Broken Links: This release corrects some broken links referenced by the inline documentation for s2Member in the WordPress Dashboard. See also: this GitHub issue if you'd like further details.
  • (s2Member/s2Member Pro) Security: This release of s2Member checks for the existence of the WordPress PHP Constant: WPINC instead of looking for the less reliable $_SERVER['SCRIPT_FILENAME']. Some site owners reported this was causing trouble in a localhost environment during testing, or when running s2Member on some hosts that are missing the SCRIPT_FILENAME environment variable; e.g., some Windows servers. Fixed in this release. See also: this GitHub issue if you'd like additional details.
  • (s2Member Pro) Advanced Import/Export Compat: This release of s2Member Pro includes compatibility and a bug fix when running on WordPress v4.1+. Three PHP notices during importation, along with some quirky behavior associated with the role CSV column have been corrected. See also: this GitHub issue for technical details.
  • (s2Member Pro) [s2Member-List /] Bug Fix: This release resolves an issue with pagination in the [s2Member-List /] shortcode after recent improvements to the search functionality. See this GitHub issue if you'd like additional details.
  • (s2Member Pro) [s2Member-List /] Enhancement: This release improves search functionality in the [s2Member-List /] shortcode, making it so that all searches default to [query]; i.e., are automatically wrapped by wildcards. If a user enters a wildcard explicitly (or a double quote), this default behavior is overridden and the search query is taken as given in such a scenario. This makes the search functionality easier for end-users to work with, since it no longer requires an exact match. Default behavior is now a fuzzy match. See also: this GitHub issue if you'd like further details.
  • (s2Member/s2Member Pro) AWS v4 Authentication: This release of s2Member adds AWS v4 Authentication support for Amazon Web Service Regions that only accept the AWS v4 authentication scheme. If you had trouble in the recent past when attempting to integrate s2Member with S3 Buckets (or with CloudFront) in regions outside the USA, this release should resolve those issues for you. See also: this GitHub issue if you'd like additional technical details.
  • (s2Member Pro) Bug Fix: Pro-Form Checkout Options not working in all cases whenever they are used together with Free Registration Forms. Resolved in this release.

v150102 (Jan 2nd, 2015)

  • (s2Member/s2Member Pro) Custom Field Mapping: This release of s2Member adds an internal mapping from s2Member's Custom Field values for each user, to the get_user_option() function in the WordPress core. This makes it possible to retrieve user custom field values like always via get_user_field() or now through the native get_user_option() function also. The benefit of this is that s2Member's custom fields are now more compatible with other themes/plugins for WordPress.
  • (s2Member Pro) [s2Member-List /] Shortcode: It is now possible to search through custom fields created with s2Member using the search_columns="" attribute; e.g., search_columns="user_login,user_email,s2member_custom_field_MYFIELDID"; where MYFIELDID can be replaced with a field ID that you generate with s2Member via Dashboard ⥱ s2Member ⥱ General Options ⥱ Registration/Profile Fields. See also: this KB article for further details. See also: this GitHub issue for details regarding this improvement.
  • (s2Member/s2Member Pro) MailChimp Bug Fix This release fixes a bug first introduced in the previous release, which was causing Interest Groups configured w/ s2Member to not be added properly. Resolved in this release. Props to @ethanpil Thanks!
  • (s2Member Pro) ccBill Buttons This release updates all ccBill button graphics. The MasterCard logo has been removed, and a new set of buttons was created to improve upon the set provided in previous versions of s2Member Pro. See: this GitHub issue if you'd like further details.
  • (s2Member Pro) Authorize.Net The AUD currency code is now supported by Authorize.Net, and thus, s2Member Pro has been updated to support the AUD currency code for Pro-Forms integrated with Authorize.Net. See this GitHub issue if you'd like further details.
  • (s2Member Pro) Subscr. CID for Stripe This release corrects a bug which made it impossible to update the Subscr. CID value (for Stripe) using the user edit form in the Dashboard. For further details, please see this GitHub issue.
  • (s2Member/s2Member Pro) Bug fix s2Member's membership access times log was failing to collect all required access times under certain scenarios where multiple CCAPS were being added or removed in succession within the same process, but across multiple function calls. This resulted in unexpected behaviors (in rare cases) when attempting to use the [s2Drip /] shortcode. Fixed in this release. See this GitHub issue for technical details.
  • (s2Member/s2Member Pro) Compatibility This release includes a fix for s2Member's Multisite Network patches applied to the wp-admin/user-new.php file whenever you configure s2Member on a Multisite Network. This change makes s2Member compatible with the coming release of WordPress v4.1 and v4.2-beta as it exists now. See: this GitHub issue if you'd like additional details.
  • (s2Member Pro) Bug Fix: A feature that was previously introduced in v140816, which made it possible for site owners to set a failed payment threshold (in s2Member's Authorize.Net integration), was suffering from an off-by-one issue during total failed payment calculations. Fixed in this release. See also this GitHub issue if you'd like further details.
  • (s2Member Pro) Feature Enhancement: Whenever a failed payment threshold is reached (in s2Member's Authorize.Net integration), not only will s2Member terminate on-site access, but now the underlying ARB (Automated Recurring Profile) is cancelled at the same exact time. This way future billing attempts on the Authorize.Net side will not be possible; i.e., it ensures that a failed payment threshold will always terminate both on-site access and the ARB itself together at the same time, as opposed to allowing the ARB termination to occur automatically via Authorize.Net, whenever. See also this GitHub issue if you'd like further details.
  • (s2Member Pro) ClickBank Disclaimer: This release of s2Member adds a default Auto-Return Header Template (customizable from s2Member ⥱ ClickBank Options in the Dashboard) which includes a disclaimer that ClickBank requires of most merchants before final approval.

    This default template should help to reduce the time it takes new merchants to receive final approval from ClickBank when first starting out in the ClickBank network. See also: this GitHub issue if you'd like further details.

  • (s2Member Pro) Bug Fix: PayPal Pro-Forms for Specific Post/Page Access, and configured with accept="paypal" (i.e., to accept PayPal only) were not hiding the entire Billing Method section as intended. Fixed in this release. See also: this GitHub issue if you'd like further details.
  • (s2Member Pro) Bug Fix: PayPal Pro-Forms using Express Checkout for Billing Agreements under a non-native currency (i.e., under a different currency than their own PayPal account) were failing under some scenarios (notably with the BRL currency code). Fixed in this release. See also: this GitHub issue if you'd like technical details.
  • (s2Member Pro) Stripe API: s2Member's Stripe integration has been updated to use the new statement_descriptor field in favor of the now deprecated statement_description. See this GitHub issue for technical details.
  • (s2Member Pro) Stripe Bug Fix: In the case of a global tax rate having been applied to the total cost, there were certain scenarios where s2Member Pro would kick back an error message, "Invalid Parameters to Stripe". Fixed in this release. See also: this GitHub issue if you'd like technical details.
  • (s2Member/s2Member Pro) WP Core Compat.: This version of s2Member forces the wptexturize filter off in WordPress, due to a bug that was introduced in recent versions of the WordPress core; which results in broken shortcodes in some scenarios. Until the underlying bug is fixed in the WP core, the wptexturize filter must be disabled to prevent corruption of any WordPress shortcode that may contain < or > symbols.

    See this GitHub issue for further technical details. Also referencing: this WordPress core bug report.

  • (s2Member/s2Member Pro) Alt. Views: This release fixes a bug that caused wp_list_pages() not to be filtered properly under certain scenarios. A symptom of this bug was to apply s2Member's Alt. View protection for "Pages", but for this not work properly in all cases. Fixed in this release. See also: this GitHub issue if you'd like technical details.
  • (s2Member/s2Member Pro) Currency Code/Symbol: All email templates, API Notifications (except cancellation/EOT notifications), and all Custom Return URLs on Success; across all payment gateways; now support two additional Replacement Codes: %%currency%% and %%currency_symbol%%. See also: this GitHub issue if you'd like additional details.
  • (s2Member Pro) Coupon Codes: All transaction-related email templates now support three additional Replacement Codes: %%full_coupon_code%%, %%coupon_code%%, and %%coupon_affiliate_id%%. These have been documented in your Dashboard in places where transaction-related email templates are configured. See also: this GitHub issue if you'd like additional details.
  • (s2Member Pro) Stripe Tax Info: s2Member now attaches metadata to Stripe Charges and to Stripe Subscriptions which includes a JSON-encoded object containing two or more properties when tax applies.

    These metadata properties can be found in your Stripe Dashboard with the metadata key: tax_info; which contains the following JSON-encoded properties: tax (total tax that was or will be charged on the regular amount), tax_per (tax percentage rate that was applied based on your configuration of s2Member Pro); along with trial_tax and trial_tax_per in the case of a Stripe Subscription that includes an initial/trial period that requires payment; i.e., the tax applied (if any) to an initial/trial payment on a Subscription.

    We hope this additional information being recorded by s2Member and stored securely within your Stripe account will make it easier for you to maintain accurate bookkeeping records moving forward. This additional metadata is generated for new customers only. It will not be backfilled for any past transactions.

  • (s2Member Pro) Stripe Tax Info: s2Member now passes the tax location; i.e., address_state, address_zip, and address_country to each Stripe Card object associated with a Stripe Customer.

    We hope this additional information being recorded by s2Member and stored securely within your Stripe account will make it easier for you to maintain accurate bookkeeping records moving forward. This additional cardholder data is collected and stored for new customers only; it will not be backfilled for any past transactions.

  • (s2Member Pro) Stripe IP Address: s2Member now attaches the customer's IP address (as detected via $_SERVER['REMOTE_ADDR'] on your server) into each Stripe Customer object, along with the customer's full name. These metadata properties can be found in your Stripe Dashboard with the metadata keys: name and ip.

  • (s2Member Pro) Stripe Coupon Code: s2Member now attaches metadata w/ a coupon code used by your customer (if applicable) to each Stripe Charge and/or Stripe Subscription object.

    This metadata property can be found in your Stripe Dashboard with the metadata key: coupon; which contains the following JSON-encoded property: code i.e., the full coupon code used by your customer. This additional metadata is generated for new customers only. It will not be backfilled for any past transactions. Filled only for transactions that use a coupon code.

  • (s2Member Pro) Stripe Invoice: This release corrects a bug in s2Member's Stripe integration whereby subscr-signup-as-subscr-payment was not always being forced into the core gateway processor; resulting in a miscalculation of the last_payment_time under certain scenarios. Fixed in this release. See also: this GitHub issue if you'd like additional details.

v141007 (Oct 7th, 2014)

  • (s2Member Pro) ClickBank IPN v6: This release enables a new integration option for site owners integrated with ClickBank. You may now choose to integrate with v6 of ClickBank's IPN service, since all previous versions are slowly being phased out by ClickBank. Please see: Dashboard ⥱ s2Member ⥱ ClickBank Options ⥱ IPN Integration for v6 config. options. See also this GitHub issue if you'd like further details regarding this topic. See also: this article @ ClickBank.
  • (s2Member/s2Member Pro) AWeber API Integration: This release of s2Member adds a new option for site owners using AWeber. It is now possible to integrate with the new s2Member App for AWeber; i.e., via the AWeber API instead of via email-based communication. For further details, please see: Dashboard ⥱ s2Member ⥱ API / List Servers ⥱ AWeber Integration. See also: this GitHub issue if you'd like additional details.
  • (s2Member/s2Member Pro) Bug Fix: The EOT Behavior option for refunds,partial_refunds,reversals was not being accepted by s2Member. Fixed in this release. Please see this GitHub issue if you'd like further details.
  • (s2Member/s2Member Pro) MailChimp API Wrapper: This release of s2Member comes with an updated API wrapper class for MailChimp integration. No change in functionality, just a smoother, slightly faster, and more bug-free interaction with the MailChimp API. Please see this GitHub issue if you'd like further details regarding this improvement. See also: the official MailChimp API class; i.e., what s2Member has been updated to in this release.
  • (s2Member/s2Member Pro) URI Restrictions caSe-insensitive (Security Fix) This release of s2Member changes the way URI Restrictions work. All URI Restrictions are now caSe-insensitive (i.e., /some-path/ is now the same as /some-Path/), allowing s2Member to automatically pick up different variations used in attempts to exploit the behavior of certain slugs within the WordPress core. You can also change this new default behavior, if you prefer. Please see: Dashboard ⥱ s2Member ⥱ Restriction Options ⥱ URI Restrictions. See also: this GitHub issue for the details about why this was changed in the most recent copy of s2Member.
  • (s2Member/s2Member) AWeber Role-Based Emails: In this release we're adding a note in the s2Member UI regarding role-based email addresses being rejected by AWeber. AWeber does not allow role-based emails like: admin@ or webmaster@ to be subscribed. It is suggested that you enable s2Member's config. option: "Force Personal Emails" if you intend to integrate with AWeber. Please see: Dashboard ⥱ s2Member ⥱ General Options ⥱ Registration/Profile Fields; where you can tell s2Member for force personal email addresses when someone registers on-site. This will prevent a potential subscriber from entering something like admin@example.com as their email address.

For older Changelog entries, please see the changelog.md file.

Contacting s2Member: Please use our Support Center for bug reports, pre-sale questions & technical assistance.