From a164a4f3ba041f2f4f2df89ad74c93711a3a3198 Mon Sep 17 00:00:00 2001 From: jaswsinc Date: Sat, 5 Dec 2015 13:15:29 -0900 Subject: [PATCH] Preparing v151205-RC --- s2member/changelog.md | 72 +++++++ s2member/checksum.txt | 2 +- s2member/includes/translations/s2member.pot | 227 ++++++++++---------- s2member/readme.txt | 78 ++++++- s2member/s2member.php | 8 +- 5 files changed, 268 insertions(+), 119 deletions(-) diff --git a/s2member/changelog.md b/s2member/changelog.md index 274eb7c3..43cc60ab 100644 --- a/s2member/changelog.md +++ b/s2member/changelog.md @@ -1,3 +1,75 @@ += v151205 = + +- (s2Member/s2Member Pro) **WP/PHP Compat:** Updated for compatibility with WordPress 4.4 and PHP v7.0. Note that s2Member and s2Member Pro also remain compatible with WordPress 4.3 and PHP 5.2. However, PHP 5.5+ is strongly recommended. + +- (s2Member Pro) **New Feature! EOT Renewal/Reminder Email Notifications:** This release adds a long-awaited feature which allows you to configure & send EOT Renewal/Reminder Email notifications to your customers; to let them know their account with you will expire soon. + + It's possible to configure one or more notifications, each with a different set of recipients, and a different subject and message body. Notifications can be sent out X days before the EOT occurs, _the day_ of the EOT, or X days after the EOT has already occurred; e.g., to encourage renewals. + + See: **Dashboard → s2Member → Stripe Options → EOT Renewal/Reminder Email(s)** + _Also works with PayPal Pro, Authorize.Net, and ClickBank._ + + Props @clavaque @KTS915 @raamdev @patdumond @kristineds @pagelab @chronicelite @csexplorer17 @radven, and all of our great supporters. See [this GitHub issue](https://github.com/websharks/s2member/issues/122#issuecomment-161531763). + +- (s2Member/s2Member Pro) **Cleanup:** This release improves the list of Other Gateways; moving deprecated payment gateways to the bottom of the list and improving the display of the list overall. Props @kristineds @clavaque. For further details, see [this GitHub issue](https://github.com/websharks/s2member/issues/715). + +- (s2Member/s2Member Pro) **Bug Fix:** This release corrects an "Insecure Content Warning" that may have appeared in certain portions of the s2Member Dashboard panels whenever you accessed your Dashboard over the `https` protocol. The issue was seen in Google Chrome and it was simply a `
` tag that referenced the s2Member mailing list. This is now hidden by default if you access the Dashboard over SSL, in order to avoid this warning. Props @patdumond for reporting. Props @renzms for fixing. See also [this GitHub issue](https://github.com/websharks/s2member/issues/678) if you'd like additional details. + +- (s2Member Pro) **Stripe Locale:** This release adjusts the Stripe overlay so that it will automatically display in the language associated with a visitor's country. This was accomplished by setting the Stripe Checkout variable `locale: 'auto'` as suggested in [this GitHub issue](https://github.com/websharks/s2member/issues/728). Props @renzms + +- (s2Member Pro) **Stripe Bug Fix:** This release improves the way Stripe Image Branding and Stripe Statement Descriptions are applied whenever you intentionally leave them empty. It also changes the default value of Stripe Image Branding to an empty string; which will tell Stripe to use the account-level default value that you configured in your Stripe Dashboard in favor of that which you configure with s2Member. The choice is still yours, but this release sets what others have told us are better default values. See also [this GitHub issue](https://github.com/websharks/s2member/issues/666) if you'd like additional details. + +- (s2Member Pro) **Stripe Enhancement:** This release makes it possible to configure the Stripe "Remember Me" functionality with s2Member; i.e., it is now possible to turn this on/off if you so desire. See also [this GitHub issue](https://github.com/websharks/s2member/issues/357) for details. + +- (s2Member Pro) **Stripe Enhancement:** This release makes it possible for you to tell Stripe to collect a customer's full Billing Address and/or full Shipping Address. See [this GitHub issue](https://github.com/websharks/s2member/issues/667) for additional details. + +- (s2Member/s2Member Pro) **UI Clarity:** This release improves the way the New User Email Notification panel behaves whenever you also have Custom Passwords enabled with s2Member. The New User Email Notification is only sent when Custom Passwords are off, so this panel should disable itself whenever that is the case. Fixed in this release. Props @raamdev See also: [this GitHub issue](https://github.com/websharks/s2member/issues/739) if you'd like additional details. + +- (s2Member/s2Member Pro) **Bug Fix:** This release resolves a minor issue for developers running Vagrant and VVV with symlink plugins. Props @magbicaleman ~ See [this GitHub issue](https://github.com/websharks/s2member/issues/717) for further details. + +- (s2Member Pro) **Conflict Resolution:** This release resolves a conflict with the WP Full Stripe plugin and any other plugins that already load an existing copy of the Stripe SDK at runtime; in concert with s2Member Pro. See [this GitHub issue](https://github.com/websharks/s2member/issues/750) if you'd like additional details. + +- (s2Member/s2Member Pro) **New Log File:** This release of s2Member adds a new log file that keeps track of all automatic EOTs that occur through the underlying CRON job. The new log file is named: `auto-eot-system.log` and you can learn more about this file and view it from: **Dashboard → s2Member → Log Files (Debug) → Log Viewer**. Props @raamdev ~ See [this GitHub issue](https://github.com/websharks/s2member/issues/759) if you'd like additional details. + +- (s2Member Pro) **`[s2Member-List /]` Bug Fix:** This release resolves a problem in the `[s2Member-List /]` shortcode whenever it is configured to search Custom Fields generated with s2Member. Props @patdumond @renzms. See [this GitHub issue](https://github.com/websharks/s2member/issues/765) if you'd like additional details. + +- (s2Member Pro) **Stripe Enhancement:** This release updates s2Member's Stripe integration so that any Buy Now transaction spawns a Stripe popup with the amount and full description filled within the popup itself as well. Props @raamdev. See [this GitHub issue](https://github.com/websharks/s2member/issues/749) for further details. + +- (s2Member/s2Member Pro) **WP v4.3 Compat.** This release addresses a minor conflict between functionality provided by s2Member and that of the WordPress core itself. Whenever you change a user's password by editing their account, you can choose to send them an email about this change (or not). Since WordPress v4.3, the WordPress core will _also_ send a more vague email to notify the user of a password change, which is not customizable. This release disables that default email notification in favor of the more helpful and customizable email message that can be sent by s2Member. Simply tick the "Reset Password & Resend New User Email Notification" checkbox whenever you are editing a user. Props @patdumond for reporting. See also [this GitHub issue](https://github.com/websharks/s2member/issues/777) if you'd like additional details. + +- (s2Member/s2Member Pro) **PayPal Compat.** This release resolves a conflict between s2Member and a nasty bug at PayPal.com that came to light recently. In some cases, customers reported that clicking the "Continue" button at PayPal.com simply reloaded the page and gave no response. We found that this was attributed to a bug on the PayPal side (see [792](https://github.com/websharks/s2member/issues/792)). To work around this bug, we are using a new default value for the `ns="1"` shortcode attribute in PayPal Pro-Forms and PayPal Buttons. The new default value is `ns="0"`, which seems to work around this bug for the time being. Props @patdumond @raamdev for reporting and testing this fix. See also [full report here](https://github.com/websharks/s2member/issues/792). + + - `ns="0"` (**new default**) = prompt for a shipping address, but do not require one + - `ns="1"` (old default) = do not prompt for a shipping address whatsoever + + See also: **Dashboard → s2Member → PayPal Pro-Forms → PayPal Shortcode Attributes (Explained)** + +- (s2Member/s2Member Pro) **Getting Started:** The old Quick Start Guide was renamed to "Getting Started" in this release. It was also cleaned up and improved a bit; i.e., brought up-to-date. In addition, there is a new welcome message for first-time users of the software that invites them to read over the Getting Started page before they begin. Props @raamdev. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/655). + +- (s2Member Pro) **Stripe Bug Fix:** This release corrects a problem with Stripe refund and chargeback notification handling. s2Member Pro will now receive and handle Stripe refund and/or chargeback events (through your existing Webhook) as expected. + + See: **Dashboard → s2Member → Stripe Options → Automatic EOT Behavior** for options that allow you to control the way in which s2Member should respond whenever a refund is processed, or when a dispute (chargeback) occurs at Stripe. + + Props @ElizWS and @tubiz w/ AffiliateWP. See also [this GitHub issue](https://github.com/websharks/s2member/issues/706). + +- (s2Member Pro) **`[s2Member-List /]`** Added the ability to search usermeta data too. For instance, you can now search `first_name`, `last_name`, `nickname`, `description`, `s2member_subscr_id`, `s2member_custom`, etc, etc. See [this GitHub issue](https://github.com/websharks/s2member/issues/596). + + _**Note:** The `first_name`, `last_name`, and `nickname` columns are now a part of the default value for the `search_columns=""` attribute in the `[s2Member-List /]` shortcode. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/596). Props @patdumond for her ideas._ + +- (s2Member Pro) **`[s2Member-List /]`** There are some new `orderby=""` options. You may now choose to order the list by: `first_name`, `last_name`, or `nickname`. + +- (s2Member Pro) **`[s2Member-List /]`** It is now possible to search through s2Member Custom Registration/Profile Fields that may contain an array of values; i.e., you can now search _any_ Custom Registration/Profile Field in s2Member. For instance, if a field is designed to accept multiple selections, or you provide a set of multiple checkbox options. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/555). + +- (s2Member Pro) **`[s2Member-List /]` Bug Fix:** Meta fields that contained a timestamp were being displayed by the `date_i18n()` function in WP core. However, the time offset calculation was wrong; i.e., not a match to the local time configured by your installation of WordPress. Fixed in this release. + +- (s2Member Pro) **`[s2Member-List /]` Bug Fix:** Minor formatting corrections for replacement codes made available for the `link_*=""` attributes in the `[s2Member-List /]` shortcode. + +- (s2Member Pro) **`[s2Member-List /]`:** It is now possible to search for an exact match by surrounding your search query with double quotes; e.g., `"john doe"` (in quotes, for an exact match), instead of the default behavior, which is `*john doe*` behind-the-scenes; i.e., a fuzzy match. + +- (s2Member Pro) **`[s2Member-List /]`:** Several behind-the-scenes performance enhancements. + +- (s2Member/s2Member Pro) **PHP 7 Compat.** This release of s2Member removes its use of the `/e` modifier in calls to `preg_replace()`, which was deprecated in PHP 5.5 and has been removed in PHP 7. Props @bridgeport. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/415). + = v150925 = - (s2Member/s2Member Pro) **WP v4.3 Compat.** This release corrects a minor backward compatibility issue with versions of WordPress before v4.3, and for installations of s2Member that still use the `%%user_pass%%` Replacement Code in their New User Email notification. See [this GitHub issue](https://github.com/websharks/s2member/issues/710) if you'd like additional details. diff --git a/s2member/checksum.txt b/s2member/checksum.txt index 0691f11d..eae9aa03 100644 --- a/s2member/checksum.txt +++ b/s2member/checksum.txt @@ -1 +1 @@ -7ca3eb527170d3c241213d269e2dfcd4 \ No newline at end of file +a82862289f7a39566956d4ed02fd6e74 \ No newline at end of file diff --git a/s2member/includes/translations/s2member.pot b/s2member/includes/translations/s2member.pot index eb4993a3..b80d6088 100644 --- a/s2member/includes/translations/s2member.pot +++ b/s2member/includes/translations/s2member.pot @@ -2,9 +2,9 @@ # This file is distributed under the same license as the package. msgid "" msgstr "" -"Project-Id-Version: 150925\n" +"Project-Id-Version: 151205\n" "Report-Msgid-Bugs-To: http://wordpress.org/tag/s2member\n" -"POT-Creation-Date: 2015-09-25 23:48:25+00:00\n" +"POT-Creation-Date: 2015-12-05 22:13:59+00:00\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -290,7 +290,7 @@ msgctxt "s2member-front" msgid "as a Member" msgstr "" -#: s2member/includes/classes/email-configs.inc.php:254 +#: s2member/includes/classes/email-configs.inc.php:253 #: s2member/includes/syscon.inc.php:215 msgctxt "s2member-front" msgid "" @@ -1138,217 +1138,197 @@ msgctxt "s2member-front" msgid "(for this site)" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:55 +#: s2member/includes/classes/utils-time.inc.php:61 msgctxt "s2member-front" msgid "less than a minute" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:56 +#: s2member/includes/classes/utils-time.inc.php:62 msgctxt "s2member-front" -msgid "1 minute" +msgid "about 1 minute" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:57 +#: s2member/includes/classes/utils-time.inc.php:63 msgctxt "s2member-front" -msgid "%s minute" -msgid_plural "%s minutes" +msgid "about %s minute" +msgid_plural "about %s minutes" msgstr[0] "" msgstr[1] "" -#: s2member/includes/classes/utils-time.inc.php:58 -msgctxt "s2member-front" -msgid "about 1 hour" -msgstr "" - #: s2member/includes/classes/utils-time.inc.php:64 +#: s2member/includes/classes/utils-time.inc.php:75 msgctxt "s2member-front" -msgid "1 hour" +msgid "about 1 hour" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:65 +#: s2member/includes/classes/utils-time.inc.php:76 msgctxt "s2member-front" -msgid "%s hour" -msgid_plural "%s hours" +msgid "about %s hour" +msgid_plural "about %s hours" msgstr[0] "" msgstr[1] "" -#: s2member/includes/classes/utils-time.inc.php:66 +#: s2member/includes/classes/utils-time.inc.php:77 +#: s2member/includes/classes/utils-time.inc.php:88 msgctxt "s2member-front" msgid "about 1 day" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:72 -msgctxt "s2member-front" -msgid "1 day" -msgstr "" - -#: s2member/includes/classes/utils-time.inc.php:73 +#: s2member/includes/classes/utils-time.inc.php:89 msgctxt "s2member-front" -msgid "%s day" -msgid_plural "%s days" +msgid "about %s day" +msgid_plural "about %s days" msgstr[0] "" msgstr[1] "" -#: s2member/includes/classes/utils-time.inc.php:74 +#: s2member/includes/classes/utils-time.inc.php:90 +#: s2member/includes/classes/utils-time.inc.php:101 msgctxt "s2member-front" msgid "about 1 week" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:80 +#: s2member/includes/classes/utils-time.inc.php:102 msgctxt "s2member-front" -msgid "1 week" -msgstr "" - -#: s2member/includes/classes/utils-time.inc.php:81 -msgctxt "s2member-front" -msgid "%s week" -msgid_plural "%s weeks" +msgid "about %s week" +msgid_plural "about %s weeks" msgstr[0] "" msgstr[1] "" -#: s2member/includes/classes/utils-time.inc.php:82 +#: s2member/includes/classes/utils-time.inc.php:103 +#: s2member/includes/classes/utils-time.inc.php:114 msgctxt "s2member-front" msgid "about 1 month" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:88 +#: s2member/includes/classes/utils-time.inc.php:115 msgctxt "s2member-front" -msgid "1 month" -msgstr "" - -#: s2member/includes/classes/utils-time.inc.php:89 -msgctxt "s2member-front" -msgid "%s month" -msgid_plural "%s months" +msgid "about %s month" +msgid_plural "about %s months" msgstr[0] "" msgstr[1] "" -#: s2member/includes/classes/utils-time.inc.php:90 +#: s2member/includes/classes/utils-time.inc.php:116 +#: s2member/includes/classes/utils-time.inc.php:127 msgctxt "s2member-front" msgid "about 1 year" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:96 -msgctxt "s2member-front" -msgid "1 year" -msgstr "" - -#: s2member/includes/classes/utils-time.inc.php:97 +#: s2member/includes/classes/utils-time.inc.php:128 msgctxt "s2member-front" -msgid "%s year" -msgid_plural "%s years" +msgid "about %s year" +msgid_plural "about %s years" msgstr[0] "" msgstr[1] "" -#: s2member/includes/classes/utils-time.inc.php:245 +#: s2member/includes/classes/utils-time.inc.php:276 msgctxt "s2member-front" msgid "Daily" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:245 +#: s2member/includes/classes/utils-time.inc.php:276 msgctxt "s2member-front" msgid "Weekly" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:245 +#: s2member/includes/classes/utils-time.inc.php:276 msgctxt "s2member-front" msgid "Monthly" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:245 +#: s2member/includes/classes/utils-time.inc.php:276 msgctxt "s2member-front" msgid "Yearly" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:245 -#: s2member/includes/classes/utils-time.inc.php:256 +#: s2member/includes/classes/utils-time.inc.php:276 +#: s2member/includes/classes/utils-time.inc.php:287 msgctxt "s2member-front" msgid "Lifetime" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:249 +#: s2member/includes/classes/utils-time.inc.php:280 msgctxt "s2member-front" msgid "Bi-Weekly" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:250 +#: s2member/includes/classes/utils-time.inc.php:281 msgctxt "s2member-front" msgid "Bi-Monthly" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:251 +#: s2member/includes/classes/utils-time.inc.php:282 msgctxt "s2member-front" msgid "Quarterly" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:252 +#: s2member/includes/classes/utils-time.inc.php:283 msgctxt "s2member-front" msgid "Semi-Yearly" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:256 +#: s2member/includes/classes/utils-time.inc.php:287 msgctxt "s2member-front" msgid "Day" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:256 +#: s2member/includes/classes/utils-time.inc.php:287 msgctxt "s2member-front" msgid "Week" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:256 +#: s2member/includes/classes/utils-time.inc.php:287 msgctxt "s2member-front" msgid "Month" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:256 +#: s2member/includes/classes/utils-time.inc.php:287 msgctxt "s2member-front" msgid "Year" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:262 +#: s2member/includes/classes/utils-time.inc.php:293 msgctxt "s2member-front" msgid "Days" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:262 +#: s2member/includes/classes/utils-time.inc.php:293 msgctxt "s2member-front" msgid "Weeks" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:262 +#: s2member/includes/classes/utils-time.inc.php:293 msgctxt "s2member-front" msgid "Months" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:262 +#: s2member/includes/classes/utils-time.inc.php:293 msgctxt "s2member-front" msgid "Years" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:262 +#: s2member/includes/classes/utils-time.inc.php:293 msgctxt "s2member-front" msgid "Lifetimes" msgstr "" #. translators: Each cycle ( i.e., `each day/week/month` or `every 2 #. days/weeks/months`, etc. ). Cycles are translated elsewhere. -#: s2member/includes/classes/utils-time.inc.php:299 -#: s2member/includes/classes/utils-time.inc.php:342 +#: s2member/includes/classes/utils-time.inc.php:330 +#: s2member/includes/classes/utils-time.inc.php:373 msgctxt "s2member-front" msgid "each %2$s" msgid_plural "every %1$s %3$s" msgstr[0] "" msgstr[1] "" -#: s2member/includes/classes/utils-time.inc.php:302 +#: s2member/includes/classes/utils-time.inc.php:333 msgctxt "s2member-front" msgid "lifetime" msgstr "" #. translators: Membership cycle ( i.e., `1 day/week/month` or `2 #. days/weeks/months`, etc. ). Most of this is translated elsewhere. -#: s2member/includes/classes/utils-time.inc.php:306 +#: s2member/includes/classes/utils-time.inc.php:337 msgctxt "s2member-front" msgid "%1$s %2$s" msgid_plural "%1$s %3$s" @@ -1357,7 +1337,7 @@ msgstr[1] "" #. translators: Cycle ( i.e., `for 1 day/week/month` or `for 2 #. days/weeks/months`, etc. ). Most of this is translated elsewhere. -#: s2member/includes/classes/utils-time.inc.php:349 +#: s2member/includes/classes/utils-time.inc.php:380 msgctxt "s2member-front" msgid "for %1$s %2$s" msgid_plural "for %1$s %3$s" @@ -1540,13 +1520,13 @@ msgstr "" #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:197 #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:202 #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:207 -#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:321 -#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:326 -#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:624 -#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:629 -#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:634 +#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:328 +#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:333 #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:639 #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:644 +#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:649 +#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:654 +#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:659 msgctxt "s2member-front" msgid "— Oops, you missed something: —" msgstr "" @@ -1561,7 +1541,7 @@ msgstr "" #: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:899 #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe-min.js:1 #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:192 -#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:629 +#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:644 msgctxt "s2member-front" msgid "Passwords do not match up. Please try again." msgstr "" @@ -1576,7 +1556,7 @@ msgstr "" #: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:906 #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe-min.js:1 #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:197 -#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:634 +#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:649 msgctxt "s2member-front" msgid "Password MUST be at least %s characters. Please try again." msgstr "" @@ -1591,7 +1571,7 @@ msgstr "" #: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:911 #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe-min.js:1 #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:202 -#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:639 +#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:654 msgctxt "s2member-front" msgid "Password strength MUST be %s. Please try again." msgstr "" @@ -2685,7 +2665,7 @@ msgstr "" #: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:240 #: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:669 #: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:311 -#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:890 +#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:899 msgctxt "s2member-front percentage-symbol" msgid "%" msgstr "" @@ -4195,37 +4175,37 @@ msgctxt "s2member-front" msgid "Oops. No Customer|Subscr. ID. Please contact Support for assistance." msgstr "" -#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:193 +#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:195 msgctxt "s2member-front" msgid "Error: prepaid cards not accepted at this time. Please use a different card and try again." msgstr "" -#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:662 +#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:671 msgctxt "s2member-front" msgid "Error code: %1$s. %2$s." msgstr "" -#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:666 +#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:675 msgctxt "s2member-front" msgid "Invalid parameters to Stripe; please contact the site owner." msgstr "" -#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:669 +#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:678 msgctxt "s2member-front" msgid "Invalid Stripe API keys; please contact the site owner." msgstr "" -#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:672 +#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:681 msgctxt "s2member-front" msgid "Network communication failure with Stripe; please try again." msgstr "" -#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:675 +#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:684 msgctxt "s2member-front" msgid "Stripe API error; please try again." msgstr "" -#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:677 +#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:686 msgctxt "s2member-front" msgid "Stripe error; please try again." msgstr "" @@ -4285,6 +4265,10 @@ msgctxt "s2member-front" msgid "My Profile Summary" msgstr "" +#: s2member-pro/s2member-pro/includes/classes/reminders.inc.php:232 +msgid "0 / non-recurring" +msgstr "" + #: s2member-pro/s2member-pro/includes/classes/sc-gift-codes-in.inc.php:126 msgctxt "s2member-front" msgid "Redemption Code" @@ -4330,8 +4314,8 @@ msgstr "" #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe-min.js:1 #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:106 #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:207 -#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:326 -#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:644 +#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:333 +#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:659 msgctxt "s2member-front" msgid "Security Verification missing. Please try again." msgstr "" @@ -4363,7 +4347,7 @@ msgstr "" #: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:354 #: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:654 #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe-min.js:1 -#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:481 +#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:488 msgctxt "s2member-front" msgid "calculating sales tax..." msgstr "" @@ -4375,7 +4359,7 @@ msgstr "" #: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:365 #: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:665 #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe-min.js:1 -#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:498 +#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:505 msgctxt "s2member-front" msgid "Sales Tax%s: %s
— Total%s: %s" msgstr "" @@ -4387,7 +4371,7 @@ msgstr "" #: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:365 #: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:665 #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe-min.js:1 -#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:498 +#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:505 msgctxt "s2member-front" msgid "Today" msgstr "" @@ -4397,7 +4381,7 @@ msgstr "" #: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1 #: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:727 #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe-min.js:1 -#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:425 +#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:432 #: s2member-pro/s2member-pro/includes/templates/forms/authnet-checkout-form.php:59 #: s2member-pro/s2member-pro/includes/templates/forms/authnet-registration-form.php:43 #: s2member-pro/s2member-pro/includes/templates/forms/paypal-checkout-form.php:59 @@ -4413,7 +4397,7 @@ msgstr "" #: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1 #: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:728 #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe-min.js:1 -#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:426 +#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:433 msgctxt "s2member-front" msgid "Your Profile" msgstr "" @@ -4449,15 +4433,15 @@ msgid "Submit Form" msgstr "" #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe-min.js:1 -#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:285 -#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:585 +#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:291 +#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:599 msgctxt "s2member-front" msgid "Add" msgstr "" #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe-min.js:1 -#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:305 -#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:609 +#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:312 +#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:624 msgctxt "s2member-front" msgid "No Billing Method; please try again." msgstr "" @@ -4499,7 +4483,28 @@ msgid "" "%s" msgstr "" -#: s2member-pro/s2member-pro/includes/syscon.inc.php:122 +#: s2member-pro/s2member-pro/includes/syscon.inc.php:106 +msgctxt "s2member-front" +msgid "Renewal Reminder (Account Expires in %%%%eot_descriptive_time%%%%)" +msgstr "" + +#: s2member-pro/s2member-pro/includes/syscon.inc.php:107 +msgctxt "s2member-front" +msgid "" +"Hi %%%%first_name%%%%! :-)\n" +"\n" +"Just a reminder that your account access will expire: %%%%eot_date_time_tz%%%% (%%%%eot_descriptive_time%%%% from now).\n" +"\n" +"Please log in if you'd like to renew:\n" +"%s\n" +"\n" +"If you have any trouble, feel free to contact us.\n" +"\n" +"Best Regards,\n" +"%s" +msgstr "" + +#: s2member-pro/s2member-pro/includes/syscon.inc.php:136 msgctxt "s2member-front" msgid "
ClickBank is the retailer of products on this site. CLICKBANK® is a registered trademark of Click Sales, Inc., a Delaware corporation located at 917 S. Lusk Street, Suite 200, Boise Idaho, 83706, USA and used by permission. ClickBank's role as retailer does not constitute an endorsement, approval or review of these products or any claim, statement or opinion used in promotion of these products.

%1$s says…

" msgstr "" @@ -4757,22 +4762,22 @@ msgctxt "s2member-front" msgid "Search" msgstr "" -#: s2member-pro/s2member-pro/includes/templates/members/member-list.php:94 +#: s2member-pro/s2member-pro/includes/templates/members/member-list.php:99 msgctxt "s2member-front" msgid "Page:" msgstr "" -#: s2member-pro/s2member-pro/includes/templates/members/member-list.php:102 +#: s2member-pro/s2member-pro/includes/templates/members/member-list.php:107 msgctxt "s2member-front" msgid "Sorry, your search returned 0 results." msgstr "" -#: s2member-pro/s2member-pro/includes/templates/members/member-list.php:105 +#: s2member-pro/s2member-pro/includes/templates/members/member-list.php:110 msgctxt "s2member-front" -msgid "Sorry, search is not allowed here. The shortcode attribute `enable_list_search` is not enabled by the site owner." +msgid "Sorry, search is not allowed here. The shortcode attribute enable_list_search was not enabled by the site owner." msgstr "" -#: s2member-pro/s2member-pro/includes/templates/members/member-list.php:108 +#: s2member-pro/s2member-pro/includes/templates/members/member-list.php:113 msgctxt "s2member-front" msgid "Sorry, there are no users to list at this time." msgstr "" diff --git a/s2member/readme.txt b/s2member/readme.txt index 3237a709..04129e0a 100644 --- a/s2member/readme.txt +++ b/s2member/readme.txt @@ -1,7 +1,7 @@ === s2Member Framework (Member Roles, Capabilities, Membership, PayPal Members) === -Version: 150925 -Stable tag: 150925 +Version: 151205 +Stable tag: 151205 SSL Compatible: yes bbPress® Compatible: yes @@ -169,12 +169,84 @@ Released under the terms of the [GNU General Public License](http://www.gnu.org/ == Upgrade Notice == -= v150925 = += v151205 = (Maintenance Release) Upgrade immediately. == Changelog == += v151205 = + +- (s2Member/s2Member Pro) **WP/PHP Compat:** Updated for compatibility with WordPress 4.4 and PHP v7.0. Note that s2Member and s2Member Pro also remain compatible with WordPress 4.3 and PHP 5.2. However, PHP 5.5+ is strongly recommended. + +- (s2Member Pro) **New Feature! EOT Renewal/Reminder Email Notifications:** This release adds a long-awaited feature which allows you to configure & send EOT Renewal/Reminder Email notifications to your customers; to let them know their account with you will expire soon. + + It's possible to configure one or more notifications, each with a different set of recipients, and a different subject and message body. Notifications can be sent out X days before the EOT occurs, _the day_ of the EOT, or X days after the EOT has already occurred; e.g., to encourage renewals. + + See: **Dashboard → s2Member → Stripe Options → EOT Renewal/Reminder Email(s)** + _Also works with PayPal Pro, Authorize.Net, and ClickBank._ + + Props @clavaque @KTS915 @raamdev @patdumond @kristineds @pagelab @chronicelite @csexplorer17 @radven, and all of our great supporters. See [this GitHub issue](https://github.com/websharks/s2member/issues/122#issuecomment-161531763). + +- (s2Member/s2Member Pro) **Cleanup:** This release improves the list of Other Gateways; moving deprecated payment gateways to the bottom of the list and improving the display of the list overall. Props @kristineds @clavaque. For further details, see [this GitHub issue](https://github.com/websharks/s2member/issues/715). + +- (s2Member/s2Member Pro) **Bug Fix:** This release corrects an "Insecure Content Warning" that may have appeared in certain portions of the s2Member Dashboard panels whenever you accessed your Dashboard over the `https` protocol. The issue was seen in Google Chrome and it was simply a `` tag that referenced the s2Member mailing list. This is now hidden by default if you access the Dashboard over SSL, in order to avoid this warning. Props @patdumond for reporting. Props @renzms for fixing. See also [this GitHub issue](https://github.com/websharks/s2member/issues/678) if you'd like additional details. + +- (s2Member Pro) **Stripe Locale:** This release adjusts the Stripe overlay so that it will automatically display in the language associated with a visitor's country. This was accomplished by setting the Stripe Checkout variable `locale: 'auto'` as suggested in [this GitHub issue](https://github.com/websharks/s2member/issues/728). Props @renzms + +- (s2Member Pro) **Stripe Bug Fix:** This release improves the way Stripe Image Branding and Stripe Statement Descriptions are applied whenever you intentionally leave them empty. It also changes the default value of Stripe Image Branding to an empty string; which will tell Stripe to use the account-level default value that you configured in your Stripe Dashboard in favor of that which you configure with s2Member. The choice is still yours, but this release sets what others have told us are better default values. See also [this GitHub issue](https://github.com/websharks/s2member/issues/666) if you'd like additional details. + +- (s2Member Pro) **Stripe Enhancement:** This release makes it possible to configure the Stripe "Remember Me" functionality with s2Member; i.e., it is now possible to turn this on/off if you so desire. See also [this GitHub issue](https://github.com/websharks/s2member/issues/357) for details. + +- (s2Member Pro) **Stripe Enhancement:** This release makes it possible for you to tell Stripe to collect a customer's full Billing Address and/or full Shipping Address. See [this GitHub issue](https://github.com/websharks/s2member/issues/667) for additional details. + +- (s2Member/s2Member Pro) **UI Clarity:** This release improves the way the New User Email Notification panel behaves whenever you also have Custom Passwords enabled with s2Member. The New User Email Notification is only sent when Custom Passwords are off, so this panel should disable itself whenever that is the case. Fixed in this release. Props @raamdev See also: [this GitHub issue](https://github.com/websharks/s2member/issues/739) if you'd like additional details. + +- (s2Member/s2Member Pro) **Bug Fix:** This release resolves a minor issue for developers running Vagrant and VVV with symlink plugins. Props @magbicaleman ~ See [this GitHub issue](https://github.com/websharks/s2member/issues/717) for further details. + +- (s2Member Pro) **Conflict Resolution:** This release resolves a conflict with the WP Full Stripe plugin and any other plugins that already load an existing copy of the Stripe SDK at runtime; in concert with s2Member Pro. See [this GitHub issue](https://github.com/websharks/s2member/issues/750) if you'd like additional details. + +- (s2Member/s2Member Pro) **New Log File:** This release of s2Member adds a new log file that keeps track of all automatic EOTs that occur through the underlying CRON job. The new log file is named: `auto-eot-system.log` and you can learn more about this file and view it from: **Dashboard → s2Member → Log Files (Debug) → Log Viewer**. Props @raamdev ~ See [this GitHub issue](https://github.com/websharks/s2member/issues/759) if you'd like additional details. + +- (s2Member Pro) **`[s2Member-List /]` Bug Fix:** This release resolves a problem in the `[s2Member-List /]` shortcode whenever it is configured to search Custom Fields generated with s2Member. Props @patdumond @renzms. See [this GitHub issue](https://github.com/websharks/s2member/issues/765) if you'd like additional details. + +- (s2Member Pro) **Stripe Enhancement:** This release updates s2Member's Stripe integration so that any Buy Now transaction spawns a Stripe popup with the amount and full description filled within the popup itself as well. Props @raamdev. See [this GitHub issue](https://github.com/websharks/s2member/issues/749) for further details. + +- (s2Member/s2Member Pro) **WP v4.3 Compat.** This release addresses a minor conflict between functionality provided by s2Member and that of the WordPress core itself. Whenever you change a user's password by editing their account, you can choose to send them an email about this change (or not). Since WordPress v4.3, the WordPress core will _also_ send a more vague email to notify the user of a password change, which is not customizable. This release disables that default email notification in favor of the more helpful and customizable email message that can be sent by s2Member. Simply tick the "Reset Password & Resend New User Email Notification" checkbox whenever you are editing a user. Props @patdumond for reporting. See also [this GitHub issue](https://github.com/websharks/s2member/issues/777) if you'd like additional details. + +- (s2Member/s2Member Pro) **PayPal Compat.** This release resolves a conflict between s2Member and a nasty bug at PayPal.com that came to light recently. In some cases, customers reported that clicking the "Continue" button at PayPal.com simply reloaded the page and gave no response. We found that this was attributed to a bug on the PayPal side (see [792](https://github.com/websharks/s2member/issues/792)). To work around this bug, we are using a new default value for the `ns="1"` shortcode attribute in PayPal Pro-Forms and PayPal Buttons. The new default value is `ns="0"`, which seems to work around this bug for the time being. Props @patdumond @raamdev for reporting and testing this fix. See also [full report here](https://github.com/websharks/s2member/issues/792). + + - `ns="0"` (**new default**) = prompt for a shipping address, but do not require one + - `ns="1"` (old default) = do not prompt for a shipping address whatsoever + + See also: **Dashboard → s2Member → PayPal Pro-Forms → PayPal Shortcode Attributes (Explained)** + +- (s2Member/s2Member Pro) **Getting Started:** The old Quick Start Guide was renamed to "Getting Started" in this release. It was also cleaned up and improved a bit; i.e., brought up-to-date. In addition, there is a new welcome message for first-time users of the software that invites them to read over the Getting Started page before they begin. Props @raamdev. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/655). + +- (s2Member Pro) **Stripe Bug Fix:** This release corrects a problem with Stripe refund and chargeback notification handling. s2Member Pro will now receive and handle Stripe refund and/or chargeback events (through your existing Webhook) as expected. + + See: **Dashboard → s2Member → Stripe Options → Automatic EOT Behavior** for options that allow you to control the way in which s2Member should respond whenever a refund is processed, or when a dispute (chargeback) occurs at Stripe. + + Props @ElizWS and @tubiz w/ AffiliateWP. See also [this GitHub issue](https://github.com/websharks/s2member/issues/706). + +- (s2Member Pro) **`[s2Member-List /]`** Added the ability to search usermeta data too. For instance, you can now search `first_name`, `last_name`, `nickname`, `description`, `s2member_subscr_id`, `s2member_custom`, etc, etc. See [this GitHub issue](https://github.com/websharks/s2member/issues/596). + + _**Note:** The `first_name`, `last_name`, and `nickname` columns are now a part of the default value for the `search_columns=""` attribute in the `[s2Member-List /]` shortcode. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/596). Props @patdumond for her ideas._ + +- (s2Member Pro) **`[s2Member-List /]`** There are some new `orderby=""` options. You may now choose to order the list by: `first_name`, `last_name`, or `nickname`. + +- (s2Member Pro) **`[s2Member-List /]`** It is now possible to search through s2Member Custom Registration/Profile Fields that may contain an array of values; i.e., you can now search _any_ Custom Registration/Profile Field in s2Member. For instance, if a field is designed to accept multiple selections, or you provide a set of multiple checkbox options. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/555). + +- (s2Member Pro) **`[s2Member-List /]` Bug Fix:** Meta fields that contained a timestamp were being displayed by the `date_i18n()` function in WP core. However, the time offset calculation was wrong; i.e., not a match to the local time configured by your installation of WordPress. Fixed in this release. + +- (s2Member Pro) **`[s2Member-List /]` Bug Fix:** Minor formatting corrections for replacement codes made available for the `link_*=""` attributes in the `[s2Member-List /]` shortcode. + +- (s2Member Pro) **`[s2Member-List /]`:** It is now possible to search for an exact match by surrounding your search query with double quotes; e.g., `"john doe"` (in quotes, for an exact match), instead of the default behavior, which is `*john doe*` behind-the-scenes; i.e., a fuzzy match. + +- (s2Member Pro) **`[s2Member-List /]`:** Several behind-the-scenes performance enhancements. + +- (s2Member/s2Member Pro) **PHP 7 Compat.** This release of s2Member removes its use of the `/e` modifier in calls to `preg_replace()`, which was deprecated in PHP 5.5 and has been removed in PHP 7. Props @bridgeport. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/415). + = v150925 = - (s2Member/s2Member Pro) **WP v4.3 Compat.** This release corrects a minor backward compatibility issue with versions of WordPress before v4.3, and for installations of s2Member that still use the `%%user_pass%%` Replacement Code in their New User Email notification. See [this GitHub issue](https://github.com/websharks/s2member/issues/710) if you'd like additional details. diff --git a/s2member/s2member.php b/s2member/s2member.php index 1392c3aa..eb97f515 100644 --- a/s2member/s2member.php +++ b/s2member/s2member.php @@ -19,8 +19,8 @@ */ /* -- This section for WordPress parsing. ------------------------------------------------------------------------------ -Version: 150925 -Stable tag: 150925 +Version: 151205 +Stable tag: 151205 SSL Compatible: yes bbPress Compatible: yes @@ -78,7 +78,7 @@ * @var string */ if(!defined('WS_PLUGIN__S2MEMBER_VERSION')) - define('WS_PLUGIN__S2MEMBER_VERSION', '150925' /* !#distro-version#! */); + define('WS_PLUGIN__S2MEMBER_VERSION', '151205' /* !#distro-version#! */); /** * Minimum PHP version required to run s2Member. * @@ -108,7 +108,7 @@ * @var string */ if(!defined('WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION')) - define('WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION', '150925' /* !#distro-version#! */); + define('WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION', '151205' /* !#distro-version#! */); /* Several compatibility checks. If all pass, load the s2Member plugin.