diff --git a/s2-server-scanner.php b/s2-server-scanner.php index 447ecc99..6cbcd102 100644 --- a/s2-server-scanner.php +++ b/s2-server-scanner.php @@ -226,7 +226,7 @@ public function check($plugin_name = '', $plugin_dir_names = '', $report_notices $apache_version_required = '2.1'; // Required Apache version. $php_version_required = '5.2'; // Required PHP version. - $wp_version_required = '3.3'; // Required WordPress version. + $wp_version_required = '4.2'; // Required WordPress version. // Look for possible filtration against this routine. @@ -3189,4 +3189,4 @@ public static function translate($string, $other_contextuals = '') 'pass' => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAF80lEQVR42o1Wa2wUVRT+7tyZnZntY7ctbS0QtFbBPhAjqAQsIFETUBMFGh5KeUQFC4pEMBD5gdEEohKE0LWIaEXQaismYiACUZSiUVRS26Jo06og0Adtd+2yO7szcz0z2wcNVr3Zmdmde+53zvnOd89dhn8ZfIVSbJnWPITsGYggF8N6Jzro0tGCVOkQl3mVVR4/PhQG+6eX8kqlyOyO1/myk6R7bh2NO/MLcEPGcPj1NHe+O9KFpkvnUfvTaRz54RcEW8O27FfGmTviDf/toMxTjsuxsjWP3IsHCicjQ8sCExymbcGGcE0kWiZLHIJZuBRtw4HGE3hl72HA6wkgEFsxtIPHUJ2d4Zvz6mOlKEorJFAGWwgozEOAMgFL6BExJDMFYXrCNsEZA5dsNHQ14ulde9B6KViDXSi5ygF7SinP9iWV7Vm5Ctd4RsGwKF5hIirOo9Po7jfsezq5pKl+6GwkGDlXJYYLsd9RumMbWoPhgNgeX9Fvr65Wi4ywUb9/w3rkpeQjavagNfozWq0maEgjI3Y1mcL5CMRYEKPUMcj0FEDhOs4E6zHrxU1Qk9SxxlajIbFsGax1D8+SSsfNxflIE36PnoICooWoEL28/9OQiB6fpmPm2xVYOCEPze0qKme8gN2n9mHzvv02dhKD2hq1WJfZl8fWvY7fwj+indKUJZ0Cltww5SEcONyrsoyH3tkN8SzZRBwqgLlHJ+K5O1Zg2ubHETHFFCatVsoXTZ9atmTSDPzacxIa94JZpgs7wPeVvxKRy1xCyd63XPBIOAKT6pWSnIKMCh0H57+Encc/xtuffRFgeBLNb65anSuUdpeWSCyEND0Fti1cYMMU4PCCy5F+iaZqKmbu3gmxjmpgxEgMNlSPhiMX9uP+mtnYNWchrOgwLN22tYVhOcS7G5cjGjFIxh54uYX3Gk5g4ogx0CXVlSl6M6DAoXkkLPqgyo3cjFOm9E4hqg6fqyHwElSWLIMRj0HTVSzYWAGmr+eictUTCF2OQOUcpdWv44/ZFzFq/zV4YEoGdFWhbOCCyx6B9w60Qqyl3CzhpEPvGQ6frcGDH5Vg6s0FKL1xOsKxCFK9OhZvew0sfZNX7FiyFEZUYNknARjzbYSMEFJ9qWCvMSy+fyQsUyKKbFQeOAexxgEnYClRlk8JfBaB31qQgWtzdOSow1CoTIaqMTxR8SaYtkESe55aixPtR7C3tg4d80z8EToLXdGQ6csEozIV3gQ0nkYvuADjiYIPgA9DXg5HnOZMEUemPBJTs2aidPvLYCnPa80LZ+fnthrn0dVp49jpdlhLBNoi7fBwBf5kf6IEHuoMxJUD7tAyCHw49SoCd8rFmIaeWBgjtFF458OfWlj2Zm/5mPFJZcMzVZfnM01/oe5cEObjAl2Xu4gaTpKUwXnvU+E4cvYj4nwWxhMt12V73chdhXHAIvokou/PNgNnvg8H2PAtKcVJ6dKXE27zIxazoSgMDQ1BNF4Mwl4pqPjUhwhckzUoVPAvLhzEzOr7MIHAfVnJBDiwEZ1vXkpD1ThOftuFcKc9xSUzZ0uSNW5SquTVFFf/XGZEVxSfn2qDvYq0HjPh0WR803YU06ruwe0F6fBnpfSDO3dV9GUhIRyJoe6rkH3hmXCiWrmBlCLGUX/zxHTKMcElp6n2tjBqGztgPy3wXccxFO+7C3ffUkhttCch0ysiV0RCyoyCq/u601Ha2Jayvxr69//1FcnlqelKWV6+jzaQ7TqRuQ2j24fa+ka3M00e64CHaDEbBO4Mxbk8HE2nuxHqjAeal/cMtOu+ceMbSdXJ6cqca/N8JBlaTHRJkoDFJXfeUZGwB4N7nMidebL7rSmIns54za+Phq8+cPrGmMrUcqpp2YjRPmgqHYtCuJfjcHCvTuxiRgdNNGrhz1+CjoICZxaH/uXI7B1j3/UVWXG7TvfLUlq6Ck+SSnQx9NbR5drRfSxskBgMRLpNmyvSuPoFwf9x6F/p6H1/sQQxj5BnUMPM5VrC3KK2Qq2ihTwdoq1XVT+3e8i/LX8DQ5KK+sB7z4wAAAAASUVORK5CYII=' ); -} \ No newline at end of file +} diff --git a/s2member/changelog.md b/s2member/changelog.md index 5612ffb0..ff2fb9f4 100644 --- a/s2member/changelog.md +++ b/s2member/changelog.md @@ -1,16 +1,102 @@ -= v150702 = += v150719 = + +- (s2Member/s2Member Pro) **New Shortcode:** This release introduces a powerful new shortcode which allows you to display a user's EOT (End of Term) or NPT (next payment time) in a WordPress Post or Page. For further details and some minor limitations, please see [`[s2Eot /]` Shortcode Documentation](http://s2member.com/kb-article/s2eot-shortcode-documentation/). Props to @raamdev and @patdumond for their strategic assistance, feedback, and ideas for this shortcode. + +- (s2Member/s2Member Pro) **Strong Password Enforcement:** This release of s2Member makes it possible for a site owner to enforce strong passwords; i.e., to require a minimum number of characters and a specific strength (i.e., mix of required characters). The default minimum length in s2Member changed from `6` to `8` characters minimum. The default password strength minimum is `good`. To customize, please see: **s2Member → General Options → Registration/Profile Fields & Options**. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/573) if you'd like additional details. Props to @patdumond and @KTS915 for ideas and feedback. + +- (s2Member Pro) **reCAPTCHA v2 Upgrade:** This release of s2Member comes with an updated reCAPTCHA™ integration in order to take advantage of No CAPTCHA reCAPTCHA and other enhancements provided by the v2 update on Google's end. + + _Existing s2Member installations that already have an old set of reCAPTCHA v1 Public/Private keys will continue to function as before. However, it is suggested that you configure reCATPCHA v2 keys in order to put s2Member Pro-Forms into the v2 mode moving forward. Please see: **Dashboard → s2Member → General Options → CAPTCHA Anti-Spam Security** where you will find instructions._ - (s2Member/s2Member Pro) **PayPal IPN Compat.** This release addresses a problem with IPN connection failures that result in a 500 Internal Server Error on the PayPal side; occurring whenever s2Member attempts to verify IPN data. Please see: [this GitHub issue](https://github.com/websharks/s2member/issues/610) if you'd like additional details. + - (s2Member Pro) **Stripe Bug Fix:** This release corrects a bug in Stripe Pro-Form Checkout Options, where a Free Registration option could cause other paid Checkout Options to result in a checkout error under the right conditions. See [this GitHub issue](https://github.com/websharks/s2member/issues/569) for further details. + - (s2Member/s2Member) **Google Analytics Compat.** This release automatically preserves `utc_` variables that are used by Google Analytics whenever a Membership Options Page redirection occurs. i.e., if a visitor comes to the site with `utc_` variables and is redirected to the Membership Options Page, because the content they were trying to access is protected; the `utc_` variables are preserved during this redirection, and delivered as part of the Membership Options Page redirect. + - (s2Member Pro) **Authorize.Net Endpoint Filters:** This release adds two new WordPress Filters (i.e., Hooks) that can be used by developers in certain rare cases. Hook names are `ws_plugin__s2member_pro_authnet_aim_endpoint_url` and `ws_plugin__s2member_pro_authnet_arb_endpoint_url `. See [this GitHub issue](https://github.com/websharks/s2member/issues/575#issuecomment-104077606) if you'd like additional details and a quick example of use. + - (s2Member Pro) **Authorize.Net AIM Compat.:** This release addresses a compatibility issue that came to light recently, which was actually attributed to a bug in s2Member Pro that has been sliding through unnoticed until now. The format for an expiration date sent to the Authorize.Net AIM API should be `MM-YYYY`. The format for ARB API calls is `YYYY-MM`. s2Member Pro was sending `YYYY-MM` to both APIs. Fixed in this release. Props to @raamdev for investigating this. See also [this GitHub issue](https://github.com/websharks/s2member/issues/576) if you'd like additional details. + - (s2Member Pro) **`[s2Member-List /]` Bug:** This release corrects an issue in the `[s2Member-List /]` shortcode that was preventing the `display_name` DB column from being searchable. This release also adds the `display_name` to the list of default `search_columns=""` that are considered by the `[s2Member-List /]` shortcode. Props to @patdumond for researching this. See [this GitHub issue](https://github.com/websharks/s2member/issues/578) for further details. + - (s2Member/s2Member Pro) **Bug Fix:** This release corrects an issue where s2Member would fail to subscribe customers to configured mailing list IDs whenever an existing customer is upgrading and you have the Double Opt-In Checkbox turned off entirely. Fixed. See [this GitHub issue](https://github.com/websharks/s2member/issues/581) if you would like additional details. + - (s2Member Pro) **Stripe Bug Fix:** This release corrects a bug in s2Member's Stripe Pro-Forms, related to having multiple Checkout Options. The bug resulted in a missing error message whenever one of the Checkout Options was submitted incorrectly, and also resulted in the default Checkout Option being magically selected instead of the one that a customer was working with. Props to @patdumond and @bryanthankins. See: [this GitHub issue](https://github.com/websharks/s2member/issues/586) if you'd like additional details. + - (s2Member/s2Member Pro) **Bug Fix:** This release fixes an issue where the s2Drip shortcode was requiring PHP 5.3+; this fix allows the shortcode to work properly with PHP 5.2+. + - (s2Member Pro) **Compat.** A call to `WP_Widget` was updated to support WordPress v4.3+. See [this GitHub issue](https://github.com/websharks/s2member/issues/607) if you'd like additional details. +- (s2Member/s2Member Pro) **Bug Fix:** This release corrects a bug in the s2Member IPN handler that processes full refunds. In your s2Member EOT Behavior options, if you choose the `refunds,partial_refunds,reversals` option it results in a full refund not being processed; i.e., an EOT does not occur as expected. s2Member was incorrectly recording that your configured preference was not to process refunds whenever a full refund occurs. Fixed in this release. See also [this GitHub issue](https://github.com/websharks/s2member/issues/614) if you'd like additional details. + +- (s2Member/s2Member Pro) **Wikpedia Links:** Updated throughout to use an `https://` protocol. Now the Wikipedia default. This impacts mostly the back-end of s2Member which references a few articles at the Wikipedia. However, it also impacts Pro-Forms where a link is provided to users with more information about Security Codes that appear on the back of credit cards. See [this GitHub issue](https://github.com/websharks/s2member/issues/617) if you'd like additional details. + +- (s2Member/s2Member Pro) **qTranslate X Compat.** This release includes a minor update that improves compatibility with qTranslate X. See [this GitHub issue](https://github.com/websharks/s2member/issues/618) if you'd like additional details. + +- (s2Member/s2Member Pro) **AWeber Compat.** This release resolves an issue with AWeber rejecting subscribers that have IPv6 addresses. Until such time as AWeber adds support for IPv6 addresses, s2Member will simply send an empty IP address whenever it encounters an IPv6 address. This behavior was requested by the AWeber team. See [this GitHub issue](https://github.com/websharks/s2member/issues/611) if you'd like additional details. + +- (s2Member Pro) **Coupon Code Expiration:** This release improves the way coupons that are set to expire are handled. Instead of expiring at midnight the day before the configured expiration date, coupon codes now expire at the end of the configured day. As always, all times are calculated from GMT/UTC time, the same as WordPress itself. In short, if you set a coupon to expire Dec 5th, the coupon will now expire Dec 5th, at the end of the day (UTC time). The old behavior, was for the coupon to expire Dec 4th at midnight UTC time, which led to confusion in many cases. Please see [this GitHub issue](https://github.com/websharks/s2member/issues/612) if you'd like additional details. + +- (s2Member/s2Member Pro) **IPN Proxy Key Bug:** This release corrects a minor bug in s2Member's IPN Proxy Key generation that was causing problems in just a few edge cases. This bug may have impacted your site if you had a domain name being accessed with a `Host:` header containing mixed caSe. Not normal behavior, but there are a few edge cases where it's important for s2Member to get this right in order to avoid an "Unable to verify $_POST vars." error. See [this GitHub issue](https://github.com/websharks/s2member/issues/590) if you'd like additional details. + +- (s2Member/s2Member Pro) **Password Reset Layout:** This release improves the layout/CSS applied to the WordPress password reset form in order to better separate the password strength indicator from the instructions provided by WordPress. See [this GitHub issue](https://github.com/websharks/s2member/issues/585) if you'd like additional details. Props to @patdumond, @BugRat, and @raamdev for discovering this. + +- (s2Member) **Back-end UI Quick Links:** This release resolves an overlap in the display of the quick links atop each menu page in the Dashboard. This bug impacted the lite version only. If you'd like additional details, please see [this GitHub issue](https://github.com/websharks/s2member/issues/589). Props to @raamdev for discovering this. + +- (s2Member Pro) **Username Compat.:** This release updates s2Member's own validation against usernames in order to bring it inline with the most recent versions of WordPress core; i.e., we now allow whitespace in usernames. This release was updated so that usernames are validated only by the WordPress core function: `sanitize_user()`, which does allow single whitespace characters in usernames. Please see [this GitHub issue](https://github.com/websharks/s2member/issues/566) if you'd like additional details. + +- (s2Member Pro) **Message After Modification:** This release improves the default response that a customer who is upgrading/downgrading receives after having completed checkout using a Pro-Form. Instead of asking the customer to "log back in", s2Member simply says, "Thank you. Your account has been updated.". There is no reason for a customer to log back in; i.e., this is not necessary, and that message was leading to some confusion. Note also that with Pro-Forms you can provide a Custom Return URL on Success using the `success=""` shortcode attribute. Thus, this message is simply a default. We suggest that you customize in all cases. See [this GitHub issue](https://github.com/websharks/s2member/issues/580) if you'd like additional details. Props to @patdumond for reporting this important issue. + +- (s2Member Pro) **Documentation Update:** This releases improves the documentation for the `rrt=""` shortcode attribute in all Pro-Form implementations; e.g., PayPal Pro-Forms, Authorize.Net Pro-Forms, and Stripe Pro-Forms. The `rrt=""` attribute can be somewhat misleading, so we added the following: **IMPORTANT NOTE:** If you don't offer a trial period; i.e., the first charge occurs when a customer completes checkout, you should set this to the number of additional payments, and NOT to the total number. For instance, if I want to charge the customer a total of 3 times, and one of those charges occurs when they complete checkout, I set should this to `rrt="2"` for a grand total of three all together. + +- (s2Member/s2Member Pro) **Bug Fix:** This release corrects an issue with EOT calculations under a specific circumstance. If a customer registered on the site for free, and later made a purchase that included a free trial period, and they canceled within the trial period, the EOT was being incorrectly calculated based on the user's WordPress registration time instead of being based on the time that their trial began. This resulted in an immediate EOT (due to it being a date in the past), instead of being set to the end of the trial. Fixed in this release. + +- (s2Member/s2Member Pro) **Documentation Update:** This release replaces a specific symbol that has been used throughout the Dashboard with s2Member. Instead of the `⥱` symbol we are now using the more compatible `→` symbol instead. This is used to indicate a Dashboard path. + +- (s2Member/s2Member) **E_NOTICE:** Several `E_NOTICE`-level warnings were resolved in this release. Note that `E_NOTICE`-level warnings only show up in `WP_DEBUG` mode for developers, but they are frustrating nonetheless. Props to @raamdev for reporting some of these. + +- (s2Member Pro) **Bug Fix:** PayPal Pro-Forms selling to customers who choose a Maestro/Solo card may experience problems in some circumstances. GBP currency conversion was partially failing due to a change in the underlying API that s2Member calls upon. Fixed in this release. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/605) if you'd like additional details. + +- (s2Member/s2Member Pro) **Opt-In Bug Fix:** This release of s2Member corrects a bug that was causing members to be automatically unsubscribed from your mailing list whenever you choose to hide the Double Opt-In Box. A customer updating their profile later without this box, was being unsubscribed inadvertently. Fixed in this release. Props to @raamdev for his work in reproducing and reporting this bug. See [this GitHub issue](https://github.com/websharks/s2member/issues/633) if you'd like additional details. + +- (s2Member Pro) **Stripe Bug Workaround:** It came to our attention that some Stripe API calls that simply update the `name`, `address_state`, `address_zip`, and `address_country` for tax reporting purposes were resulting in a card decline even after Stripe approved the transaction. We suspect this is a bug in the Stripe API. It has been reported to Stripe. For now though, we are working around this issue by failing gracefully in such a scenario. This simple update is there only for tax reporting purposes, so if it fails it does not warrant a refusal to complete the transaction.m It is simply logged by s2Member for analysis. Please see [this GitHub issue](https://github.com/websharks/s2member/issues/535) where a deeper investigation is underway for our next maintenance release. + +- (s2Member Pro) **Stripe API Update:** This release of s2Member takes advantage of the latest Stripe API version. Moving from `v2015-02-18` to `v2015-07-13`. See [this article at Stripe](https://stripe.com/docs/upgrades#api-changelog) if you'd like additional details. _Remember that s2Member's API calls to Stripe will always use this specific version of their API (`v2015-07-13`), even if your Stripe account is configured with an older default version. This is to ensure that s2Member works as intended for all site owners._ + +- (s2Member Pro) **Stripe Prepaid Cards:** This release makes it possible for site owners to reject prepaid cards if they choose to do so. Stripe has the ability to determine if a credit/debit card is backed by a prepaid funding source. If it is, you can choose to reject or allow this type of card. The default behavior is to accept it. See: **Dashboard → s2Member → Stripe Options → Account Details → Reject or Allow Prepaid Cards** for further details. See also: [this GiHub issue](https://github.com/websharks/s2member/issues/505) if you'd like more information. Props to @raamdev for determining the feasibility of this feature. + +- (s2Member Pro) **Bug Fix:** `Notice: Undefined index: password1` in `paypal-registration-in.inc.php`. This was another `E_NOTICE`-level warning that was cleaned up in this release. Props to @raamdev See [this GitHub issue](https://github.com/websharks/s2member/issues/634) if you'd like additional details. + +- (s2Member Pro) **Stripe Bug Fix:** This release fixes a bug in Stripe Pro-Forms where upon a customer applying a 100%-off coupon code, the customer is met with an erroneous error regarding a missing state/zipcode--and only when a site owner has defined a tax configuration file also. Fixed in this release. See also [this GitHub issue](https://github.com/websharks/s2member/issues/548) if you'd like additional details. + +- (s2Member Pro) **Automatic Update Compat.:** [Automatic Background Updates](https://codex.wordpress.org/Configuring_Automatic_Background_Updates) were introduced in WordPress v3.7 and while by default only WordPress core updates are updated automatically in this special way, it's still possible to enable automatic background updates for everything; including themes and plugins. For instance, some web hosting companies enable automatic/background plugin updates in an attempt to improve overall security. + + That's fine. However, when s2Member Pro is installed, it works as an add-on for the s2Member Framework plugin, and any update of the Framework plugin requires a manual or interactive update of the Pro add-on. Otherwise your site is left with only a portion of its original functionality until you complete the update. For that reason, starting with this release of s2Member, automatic background updates of the s2Member Framework are disabled automatically when you are also running s2Member Pro. + + Props to @raamdev for addressing this issue and providing the source code which made this enhancement possible. See also [this GitHub issue](https://github.com/websharks/s2member/issues/523) if you'd like additional details. + + _See also: [Instructions for Updating s2Member and s2Member Pro](https://s2member.com/updating/)_ +- (s2Member Pro) **`[s2Member-Login /]` Shortcode:** This release includes a new shortcode that allows you to display a login box on any Post/Page that you create with WordPress. It can also double as a way to display a user's profile summary; including their avatar. See: [`[s2Member-Login /]` Shortcode Documentation](http://s2member.com/kb-article/s2member-login-shortcode-documentation/) for further details. + +- (s2Member Pro) **`[s2Member-Summary /]` Shortcode:** This release includes a new shortcode that allows you to display a user's profile summary (including avatar) in any Post/Page that you create with WordPress. It can also double as a way to display a login box in case the user is not logged in yet (optional). See: [`[s2Member-Summary /]` Shortcode Documentation](http://s2member.com/kb-article/s2member-summary-shortcode-documentation/) for further details. Props to @patdumond for her ideas and feedback on this new feature. + +- (s2Member/s2Member Pro) **Avatar via Shortcode:** The `[s2Get /]` shortcode has been updated in support of user avatars, to make it easier for site owners to include a member's avatar in any WordPress Post/Page of their choosing; e.g., `[s2Get user_field="avatar" size="96" /]` produces an `` tag with the user's avatar. See also: [`[s2Get /]` Shortcode Documentation](http://s2member.com/kb-article/s2get-shortcode-documentation/) for further details/examples. Props to @patdumond for her ideas and feedback on this feature. + +- (s2Member/s2Member Pro) **`[s2Get date_format="" /]` Now Possible:** The `[s2Get /]` shortcode was updated to support date formats whenever the `user_field=""` key that you want to display ends with `_time`; e.g., `[s2Get user_field="s2member_last_payment_time" date_format="M jS, Y, g:i a T" /]` produces: `Mar 5th, 2022, 12:00 am UTC` instead of a UNIX timestamp. See also: [`[s2Get /]` Shortcode Documentation](http://s2member.com/kb-article/s2get-shortcode-documentation/) for further details/examples, including PHP equivalents. + + _See also: [New `[s2Eot /]` Shortcode](http://s2member.com/kb-article/s2eot-shortcode-documentation/) with EOT-specific date/time functionality enhancements._ + +- (s2Member/s2Member Pro) **WordPress v4.3-beta Compat.:** This release was tested against WordPress v4.2+, including WordPress v4.3-beta. A few minor adjustments were made to improve support in the upcoming release of WordPress v4.3 based on beta releases made available to us. + +- (s2Member/s2Member Pro) **goo.gl URL Shortener:** This release addresses a problem with the Google URL Shortening API. Google now requires that you configure an API key. Otherwise, API calls will fail often and s2Member reverts back to tinyURL instead. Starting with this release, if you enable the Google URL Shortener, you will need to supply an API key for it to work as expected. See: **s2Member → General Options → URL Shortening Service Preference** for further details. See also [this GitHub issue](https://github.com/websharks/s2member/issues/587) if you'd like additional details. Props to @bridgeport for reproducing and reporting this bug. + +- (s2Member/s2Member Pro) **Bitly URL Shortener:** This release adds support for Bitly to be used as your preferred URL Shortening service. Bitly has become very popular for many reasons. One reason to choose Bitly over others is that you can configure your Bitly account to use a custom domain of your choosing; i.e., shortened URLs may contain [a domain that you configure](https://bitly.com/a/settings/advanced). See: **s2Member → General Options → URL Shortening Service Preference** for further details. + +- (s2Member Pro) **Other Gateways:** Starting with this release, when you install the s2Member Pro add-on for the first time, there are two Pro gateways enabled by default. When you first install s2Member Pro (first-time users only), both the Stripe and PayPal Pro payment gateways will already be enabled for you. This is to help site owners avoid confusion. In addition, first-time users will be greeted by s2Member Pro with a reminder to configure your "Other Gateways". See also [this GitHub issue](https://github.com/websharks/s2member/issues/528) if you'd like additional details. Props to @raamdev for identifying this usability issue and providing feedback/suggestions. + +- (s2Member Pro) **Stats Collection:** Starting w/ this release of s2Member Pro, we are now collecting important/anonymous server details that will help us better understand which versions of PHP/MySQL are most widely used by site owners running the pro version of our software. For further details, please see: [What anonymous information does s2Member Pro report to WebSharks, and why?](http://s2member.com/kb-article/what-information-does-s2member-pro-report-to-websharks/) + = v150311 = - (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](https://github.com/websharks/s2member/issues/496#issuecomment-76821470) if you'd like technical details. diff --git a/s2member/checksum.txt b/s2member/checksum.txt index 4b4e9d74..89e25435 100644 --- a/s2member/checksum.txt +++ b/s2member/checksum.txt @@ -1 +1 @@ -779e5c548a688b0fb86cba8bf63489bc \ No newline at end of file +86e7c2ea47bfbb7a9e8bfa3839972ada \ No newline at end of file diff --git a/s2member/includes/classes/admin-lockouts.inc.php b/s2member/includes/classes/admin-lockouts.inc.php index bbe97b54..27a9020d 100644 --- a/s2member/includes/classes/admin-lockouts.inc.php +++ b/s2member/includes/classes/admin-lockouts.inc.php @@ -133,4 +133,4 @@ public static function filter_admin_menu_bar(&$wp_admin_bar) do_action('ws_plugin__s2member_after_filter_admin_menu_bar', get_defined_vars()); } } -} \ No newline at end of file +} diff --git a/s2member/includes/translations/s2member.pot b/s2member/includes/translations/s2member.pot index 853855fe..f0d62e74 100644 --- a/s2member/includes/translations/s2member.pot +++ b/s2member/includes/translations/s2member.pot @@ -1,10 +1,10 @@ -# Copyright (C) 2015 +# Copyright (C) 2015 # This file is distributed under the same license as the package. msgid "" msgstr "" -"Project-Id-Version: 150702\n" +"Project-Id-Version: 150719\n" "Report-Msgid-Bugs-To: http://wordpress.org/tag/s2member\n" -"POT-Creation-Date: 2015-07-02 16:04:05+00:00\n" +"POT-Creation-Date: 2015-07-19 18:32:27+00:00\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -92,50 +92,50 @@ msgstr "" #: s2member/includes/classes/custom-reg-fields.inc.php:616 #: s2member/includes/classes/custom-reg-fields.inc.php:647 -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:366 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:136 msgctxt "s2member-front" msgid "This is a required field, please try again." msgstr "" #: s2member/includes/classes/custom-reg-fields.inc.php:622 -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:351 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:121 msgctxt "s2member-front" msgid "Required. This box must be checked." msgstr "" #: s2member/includes/classes/custom-reg-fields.inc.php:627 -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:346 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:116 msgctxt "s2member-front" msgid "Please check at least one of the boxes." msgstr "" #: s2member/includes/classes/custom-reg-fields.inc.php:632 #: s2member/includes/classes/custom-reg-fields.inc.php:637 -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:357 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:127 msgctxt "s2member-front" msgid "Please select one of the options." msgstr "" #: s2member/includes/classes/custom-reg-fields.inc.php:642 -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:362 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:132 msgctxt "s2member-front" msgid "Please select at least one of the options." msgstr "" #: s2member/includes/classes/custom-reg-fields.inc.php:658 -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:372 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:142 msgctxt "s2member-front" msgid "Must be numeric (with or without decimals, commas allowed)." msgstr "" #: s2member/includes/classes/custom-reg-fields.inc.php:663 -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:376 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:146 msgctxt "s2member-front" msgid "Must be numeric (with or without decimals, no commas)." msgstr "" #: s2member/includes/classes/custom-reg-fields.inc.php:668 -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:380 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:150 msgctxt "s2member-front" msgid "Must be an integer (a whole number, without any decimals)." msgstr "" @@ -146,7 +146,7 @@ msgid "Must be an integer > 0 (whole number, no decimals, greater than 0)." msgstr "" #: s2member/includes/classes/custom-reg-fields.inc.php:678 -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:388 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:158 msgctxt "s2member-front" msgid "Must be a float (floating point number, decimals required)." msgstr "" @@ -157,13 +157,13 @@ msgid "Must be a float > 0 (floating point number, decimals required, greater msgstr "" #: s2member/includes/classes/custom-reg-fields.inc.php:688 -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:396 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:166 msgctxt "s2member-front" msgid "Must be a date (required date format: dd/mm/yyyy)." msgstr "" #: s2member/includes/classes/custom-reg-fields.inc.php:693 -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:400 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:170 msgctxt "s2member-front" msgid "Must be a valid email address." msgstr "" @@ -174,25 +174,25 @@ msgid "Please use a personal email address. Addresses like <%s@> are probl msgstr "" #: s2member/includes/classes/custom-reg-fields.inc.php:701 -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:408 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:178 msgctxt "s2member-front" msgid "Must be a full URL (starting with http or https)." msgstr "" #: s2member/includes/classes/custom-reg-fields.inc.php:706 -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:412 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:182 msgctxt "s2member-front" msgid "Must be a domain name (domain name only, without http)." msgstr "" #: s2member/includes/classes/custom-reg-fields.inc.php:711 -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:416 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:186 msgctxt "s2member-front" msgid "Must be a phone # (10 digits w/possible hyphens, spaces, brackets)." msgstr "" #: s2member/includes/classes/custom-reg-fields.inc.php:716 -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:420 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:190 msgctxt "s2member-front" msgid "Must be a US zipcode (5-9 digits w/ possible hyphen)." msgstr "" @@ -203,7 +203,7 @@ msgid "Must be a Canadian zipcode (6 alpha-numerics w/ possible space)." msgstr "" #: s2member/includes/classes/custom-reg-fields.inc.php:726 -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:428 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:198 msgctxt "s2member-front" msgid "Must be a zipcode (either a US or Canadian zipcode)." msgstr "" @@ -224,63 +224,63 @@ msgid "Please use alphanumerics & punctuation only (no spaces)." msgstr "" #: s2member/includes/classes/custom-reg-fields.inc.php:741 -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:444 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:214 msgctxt "s2member-front" msgid "Please use alphanumerics only (no spaces/punctuation)." msgstr "" #: s2member/includes/classes/custom-reg-fields.inc.php:744 -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:448 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:218 msgctxt "s2member-front" msgid "Please use alphabetics only (no digits/spaces/punctuation)." msgstr "" #: s2member/includes/classes/custom-reg-fields.inc.php:747 -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:452 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:222 msgctxt "s2member-front" msgid "Please use numeric digits only." msgstr "" #: s2member/includes/classes/custom-reg-fields.inc.php:760 #: s2member/includes/classes/custom-reg-fields.inc.php:774 -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:459 -#: s2member/includes/s2member.js:462 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:229 +#: s2member/includes/s2member.js:232 msgctxt "s2member-front" msgid "digit" msgstr "" #: s2member/includes/classes/custom-reg-fields.inc.php:761 #: s2member/includes/classes/custom-reg-fields.inc.php:775 -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:459 -#: s2member/includes/s2member.js:462 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:229 +#: s2member/includes/s2member.js:232 msgctxt "s2member-front" msgid "digits" msgstr "" #: s2member/includes/classes/custom-reg-fields.inc.php:764 #: s2member/includes/classes/custom-reg-fields.inc.php:778 -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:459 -#: s2member/includes/s2member.js:462 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:229 +#: s2member/includes/s2member.js:232 msgctxt "s2member-front" msgid "character" msgstr "" #: s2member/includes/classes/custom-reg-fields.inc.php:765 #: s2member/includes/classes/custom-reg-fields.inc.php:779 -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:459 -#: s2member/includes/s2member.js:462 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:229 +#: s2member/includes/s2member.js:232 msgctxt "s2member-front" msgid "characters" msgstr "" #: s2member/includes/classes/custom-reg-fields.inc.php:767 -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:459 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:229 msgctxt "s2member-front" msgid "Must be exactly %s %s." msgstr "" #: s2member/includes/classes/custom-reg-fields.inc.php:781 -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:462 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:232 msgctxt "s2member-front" msgid "Must be at least %s %s." msgstr "" @@ -995,6 +995,31 @@ msgctxt "s2member-front" msgid "If you need assistance, please contact support." msgstr "" +#: s2member/includes/classes/sc-eots-in.inc.php:73 +msgctxt "s2member-front" +msgid "Access Expires:" +msgstr "" + +#: s2member/includes/classes/sc-eots-in.inc.php:74 +msgctxt "s2member-front" +msgid "Access Expired:" +msgstr "" + +#: s2member/includes/classes/sc-eots-in.inc.php:75 +msgctxt "s2member-front" +msgid "Next Payment:" +msgstr "" + +#: s2member/includes/classes/sc-eots-in.inc.php:76 +msgctxt "s2member-front" +msgid "N/A" +msgstr "" + +#: s2member/includes/classes/sc-eots-in.inc.php:76 +msgctxt "s2member-front" +msgid "—" +msgstr "" + #: s2member/includes/classes/sc-paypal-button-e.inc.php:77 #: s2member/includes/classes/sc-paypal-button-in.inc.php:73 #: s2member/includes/classes/sc-paypal-button-in.inc.php:97 @@ -1005,8 +1030,8 @@ msgstr "" #: s2member/includes/templates/buttons/paypal-checkout-button.php:46 #: s2member/includes/templates/buttons/paypal-sp-checkout-button.php:34 #: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1 -#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:293 -#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:593 +#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:297 +#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:597 msgctxt "s2member-front paypal-button-lang-code" msgid "en_US" msgstr "" @@ -1075,6 +1100,21 @@ msgid_plural "You may create up to %s sites." msgstr[0] "" msgstr[1] "" +#: s2member/includes/classes/user-securities.inc.php:203 +msgctxt "s2member-front" +msgid "`weak`, `good`, or `strong`" +msgstr "" + +#: s2member/includes/classes/user-securities.inc.php:204 +msgctxt "s2member-front" +msgid "`good` or `strong` (i.e., use numbers, letters, and mixed caSe)" +msgstr "" + +#: s2member/includes/classes/user-securities.inc.php:205 +msgctxt "s2member-front" +msgid "`strong` (i.e., use numbers, letters, mixed caSe, and punctuation)" +msgstr "" + #: s2member/includes/classes/users-list-in.inc.php:349 msgctxt "s2member-front" msgid "Additional Profile Fields" @@ -1187,115 +1227,115 @@ msgid_plural "%s years" msgstr[0] "" msgstr[1] "" -#: s2member/includes/classes/utils-time.inc.php:241 +#: s2member/includes/classes/utils-time.inc.php:245 msgctxt "s2member-front" msgid "Daily" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:241 +#: s2member/includes/classes/utils-time.inc.php:245 msgctxt "s2member-front" msgid "Weekly" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:241 +#: s2member/includes/classes/utils-time.inc.php:245 msgctxt "s2member-front" msgid "Monthly" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:241 +#: s2member/includes/classes/utils-time.inc.php:245 msgctxt "s2member-front" msgid "Yearly" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:241 -#: s2member/includes/classes/utils-time.inc.php:252 +#: s2member/includes/classes/utils-time.inc.php:245 +#: s2member/includes/classes/utils-time.inc.php:256 msgctxt "s2member-front" msgid "Lifetime" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:245 +#: s2member/includes/classes/utils-time.inc.php:249 msgctxt "s2member-front" msgid "Bi-Weekly" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:246 +#: s2member/includes/classes/utils-time.inc.php:250 msgctxt "s2member-front" msgid "Bi-Monthly" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:247 +#: s2member/includes/classes/utils-time.inc.php:251 msgctxt "s2member-front" msgid "Quarterly" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:248 +#: s2member/includes/classes/utils-time.inc.php:252 msgctxt "s2member-front" msgid "Semi-Yearly" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:252 +#: s2member/includes/classes/utils-time.inc.php:256 msgctxt "s2member-front" msgid "Day" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:252 +#: s2member/includes/classes/utils-time.inc.php:256 msgctxt "s2member-front" msgid "Week" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:252 +#: s2member/includes/classes/utils-time.inc.php:256 msgctxt "s2member-front" msgid "Month" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:252 +#: s2member/includes/classes/utils-time.inc.php:256 msgctxt "s2member-front" msgid "Year" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:258 +#: s2member/includes/classes/utils-time.inc.php:262 msgctxt "s2member-front" msgid "Days" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:258 +#: s2member/includes/classes/utils-time.inc.php:262 msgctxt "s2member-front" msgid "Weeks" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:258 +#: s2member/includes/classes/utils-time.inc.php:262 msgctxt "s2member-front" msgid "Months" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:258 +#: s2member/includes/classes/utils-time.inc.php:262 msgctxt "s2member-front" msgid "Years" msgstr "" -#: s2member/includes/classes/utils-time.inc.php:258 +#: s2member/includes/classes/utils-time.inc.php:262 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:295 -#: s2member/includes/classes/utils-time.inc.php:338 +#: s2member/includes/classes/utils-time.inc.php:299 +#: s2member/includes/classes/utils-time.inc.php:342 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:298 +#: s2member/includes/classes/utils-time.inc.php:302 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:302 +#: s2member/includes/classes/utils-time.inc.php:306 msgctxt "s2member-front" msgid "%1$s %2$s" msgid_plural "%1$s %3$s" @@ -1304,79 +1344,147 @@ 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:345 +#: s2member/includes/classes/utils-time.inc.php:349 msgctxt "s2member-front" msgid "for %1$s %2$s" msgid_plural "for %1$s %3$s" msgstr[0] "" msgstr[1] "" -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:35 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:83 +msgctxt "s2member-front" +msgid "Strength indicator" +msgstr "" + +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:84 +msgctxt "s2member-front" +msgid "Very weak" +msgstr "" + +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:85 +msgctxt "s2member-front" +msgid "Weak" +msgstr "" + +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:86 +msgctxt "s2member-front" +msgid "Good" +msgstr "" + +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:87 +msgctxt "s2member-front" +msgid "Strong" +msgstr "" + +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:88 +msgctxt "s2member-front" +msgid "Mismatch" +msgstr "" + +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:154 +msgctxt "s2member-front" +msgid "Must be an integer > 0 (whole number, no decimals, greater than 0)." +msgstr "" + +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:162 +msgctxt "s2member-front" +msgid "Must be a float > 0 (floating point number, decimals required, greater than 0)." +msgstr "" + +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:174 +msgctxt "s2member-front" +msgid "" +"Please use a personal email address.\n" +"Addresses like <%s@> are problematic." +msgstr "" + +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:194 +msgctxt "s2member-front" +msgid "Must be a Canadian zipcode (6 alpha-numerics w/possible space)." +msgstr "" + +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:202 +msgctxt "s2member-front" +msgid "Please use alphanumerics, spaces & punctuation only." +msgstr "" + +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:206 +msgctxt "s2member-front" +msgid "Please use alphanumerics & spaces only." +msgstr "" + +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:210 +msgctxt "s2member-front" +msgid "Please use alphanumerics & punctuation only (no spaces)." +msgstr "" + +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:262 msgctxt "s2member-front" msgid "— Confirm File Download —" msgstr "" -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:36 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:263 msgctxt "s2member-front" msgid "You`ve downloaded %s protected %s in the last %s." msgstr "" -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:36 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:263 msgctxt "s2member-front" msgid "file" msgstr "" -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:36 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:263 msgctxt "s2member-front" msgid "files" msgstr "" -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:36 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:263 msgctxt "s2member-front" msgid "24 hours" msgstr "" -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:36 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:263 msgctxt "s2member-front" msgid "%s days" msgstr "" -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:37 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:264 msgctxt "s2member-front" msgid "You`re entitled to UNLIMITED downloads though (so, no worries)." msgstr "" -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:37 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:264 msgctxt "s2member-front" msgid "You`re entitled to %s unique %s %s." msgstr "" -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:37 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:264 msgctxt "s2member-front" msgid "download" msgstr "" -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:37 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:264 msgctxt "s2member-front" msgid "downloads" msgstr "" -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:37 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:264 msgctxt "s2member-front" msgid "each day" msgstr "" -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:37 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:264 msgctxt "s2member-front" msgid "every %s-day period" msgstr "" -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:84 -#: s2member/includes/s2member.js:89 s2member/includes/s2member.js:94 -#: s2member/includes/s2member.js:125 s2member/includes/s2member.js:180 -#: s2member/includes/s2member.js:185 s2member/includes/s2member.js:190 -#: s2member/includes/s2member.js:219 s2member/includes/s2member.js:248 -#: s2member/includes/s2member.js:273 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:311 +#: s2member/includes/s2member.js:316 s2member/includes/s2member.js:321 +#: s2member/includes/s2member.js:326 s2member/includes/s2member.js:357 +#: s2member/includes/s2member.js:412 s2member/includes/s2member.js:417 +#: s2member/includes/s2member.js:422 s2member/includes/s2member.js:427 +#: s2member/includes/s2member.js:456 s2member/includes/s2member.js:485 +#: s2member/includes/s2member.js:510 #: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1 #: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:66 #: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:73 @@ -1385,13 +1493,15 @@ msgstr "" #: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:255 #: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:262 #: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:269 -#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:276 -#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:520 -#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:527 -#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:792 -#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:799 -#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:806 -#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:813 +#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:274 +#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:280 +#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:524 +#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:531 +#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:796 +#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:803 +#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:810 +#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:815 +#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:821 #: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1 #: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:66 #: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:73 @@ -1400,13 +1510,15 @@ msgstr "" #: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:255 #: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:262 #: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:269 -#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:276 -#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:568 -#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:575 -#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:888 -#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:895 -#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:902 -#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:909 +#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:274 +#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:280 +#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:572 +#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:579 +#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:892 +#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:899 +#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:906 +#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:911 +#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:917 #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe-min.js:1 #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:101 #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:106 @@ -1414,111 +1526,61 @@ msgstr "" #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:192 #: 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:316 +#: 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:617 +#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:326 #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:622 #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:627 #: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:632 +#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:637 +#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:642 msgctxt "s2member-front" msgid "— Oops, you missed something: —" msgstr "" -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:89 -#: s2member/includes/s2member.js:185 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:316 +#: s2member/includes/s2member.js:417 #: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1 #: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:262 -#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:799 +#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:803 #: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1 #: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:262 -#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:895 +#: 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:622 +#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:627 msgctxt "s2member-front" msgid "Passwords do not match up. Please try again." msgstr "" -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:94 -#: s2member/includes/s2member.js:190 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:321 +#: s2member/includes/s2member.js:422 #: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1 #: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:269 -#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:806 +#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:810 #: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1 #: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:269 -#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:902 +#: 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:627 -msgctxt "s2member-front" -msgid "Password MUST be at least 6 characters. Please try again." -msgstr "" - -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:313 -msgctxt "s2member-front" -msgid "Strength indicator" -msgstr "" - -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:314 -msgctxt "s2member-front" -msgid "Very weak" -msgstr "" - -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:315 -msgctxt "s2member-front" -msgid "Weak" -msgstr "" - -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:316 -msgctxt "s2member-front" -msgid "Medium" -msgstr "" - -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:317 -msgctxt "s2member-front" -msgid "Strong" -msgstr "" - -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:318 -msgctxt "s2member-front" -msgid "Mismatch" -msgstr "" - -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:384 -msgctxt "s2member-front" -msgid "Must be an integer > 0 (whole number, no decimals, greater than 0)." -msgstr "" - -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:392 -msgctxt "s2member-front" -msgid "Must be a float > 0 (floating point number, decimals required, greater than 0)." -msgstr "" - -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:404 -msgctxt "s2member-front" -msgid "" -"Please use a personal email address.\n" -"Addresses like <%s@> are problematic." -msgstr "" - -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:424 -msgctxt "s2member-front" -msgid "Must be a Canadian zipcode (6 alpha-numerics w/possible space)." -msgstr "" - -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:432 -msgctxt "s2member-front" -msgid "Please use alphanumerics, spaces & punctuation only." -msgstr "" - -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:436 +#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:632 msgctxt "s2member-front" -msgid "Please use alphanumerics & spaces only." +msgid "Password MUST be at least %s characters. Please try again." msgstr "" -#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:440 +#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:326 +#: s2member/includes/s2member.js:427 +#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1 +#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:274 +#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:815 +#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1 +#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:274 +#: 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:637 msgctxt "s2member-front" -msgid "Please use alphanumerics & punctuation only (no spaces)." +msgid "Password strength MUST be %s. Please try again." msgstr "" #: s2member/includes/syscon.inc.php:84 @@ -1526,17 +1588,17 @@ msgctxt "s2member-front recaptcha-lang-code" msgid "en" msgstr "" -#: s2member/includes/syscon.inc.php:154 +#: s2member/includes/syscon.inc.php:156 msgctxt "s2member-front" msgid "Yes, I want to receive updates via email." msgstr "" -#: s2member/includes/syscon.inc.php:211 +#: s2member/includes/syscon.inc.php:214 msgctxt "s2member-front" msgid "[%s] Username/Password" msgstr "" -#: s2member/includes/syscon.inc.php:212 +#: s2member/includes/syscon.inc.php:215 msgctxt "s2member-front" msgid "" "Your Username/Password for:\n" @@ -1547,12 +1609,12 @@ msgid "" "%%%%wp_login_url%%%%" msgstr "" -#: s2member/includes/syscon.inc.php:215 +#: s2member/includes/syscon.inc.php:218 msgctxt "s2member-front" msgid "[%s] New User Registration" msgstr "" -#: s2member/includes/syscon.inc.php:216 +#: s2member/includes/syscon.inc.php:219 msgctxt "s2member-front" msgid "" "New User Registration on your site:\n" @@ -1564,13 +1626,13 @@ msgid "" "IP Address: %%%%user_ip%%%%" msgstr "" -#: s2member/includes/syscon.inc.php:238 -#: s2member-pro/s2member-pro/includes/syscon.inc.php:95 +#: s2member/includes/syscon.inc.php:241 +#: s2member-pro/s2member-pro/includes/syscon.inc.php:94 msgctxt "s2member-front" msgid "Congratulations! (your membership has been approved)" msgstr "" -#: s2member/includes/syscon.inc.php:239 +#: s2member/includes/syscon.inc.php:242 msgctxt "s2member-front" msgid "" "Thanks %%%%first_name%%%%! Your membership has been approved.\n" @@ -1586,12 +1648,12 @@ msgid "" "%s" msgstr "" -#: s2member/includes/syscon.inc.php:242 s2member/includes/syscon.inc.php:246 +#: s2member/includes/syscon.inc.php:245 s2member/includes/syscon.inc.php:249 msgctxt "s2member-front" msgid "Thank you! Your account has been updated." msgstr "" -#: s2member/includes/syscon.inc.php:243 s2member/includes/syscon.inc.php:247 +#: s2member/includes/syscon.inc.php:246 s2member/includes/syscon.inc.php:250 msgctxt "s2member-front" msgid "" "Thanks %%%%first_name%%%%! Your account now has access to: %%%%item_name%%%%.\n" @@ -1602,13 +1664,13 @@ msgid "" "%s" msgstr "" -#: s2member/includes/syscon.inc.php:250 -#: s2member-pro/s2member-pro/includes/syscon.inc.php:99 +#: s2member/includes/syscon.inc.php:253 +#: s2member-pro/s2member-pro/includes/syscon.inc.php:98 msgctxt "s2member-front" msgid "Thank You! (instructions for access)" msgstr "" -#: s2member/includes/syscon.inc.php:251 +#: s2member/includes/syscon.inc.php:254 msgctxt "s2member-front" msgid "" "Thanks %%%%first_name%%%%!\n" @@ -1625,32 +1687,32 @@ msgid "" "%s" msgstr "" -#: s2member/includes/syscon.inc.php:290 +#: s2member/includes/syscon.inc.php:293 msgctxt "s2member-front" msgid "Free Subscriber" msgstr "" -#: s2member/includes/syscon.inc.php:290 +#: s2member/includes/syscon.inc.php:293 msgctxt "s2member-front" msgid "Bronze Member" msgstr "" -#: s2member/includes/syscon.inc.php:290 +#: s2member/includes/syscon.inc.php:293 msgctxt "s2member-front" msgid "Silver Member" msgstr "" -#: s2member/includes/syscon.inc.php:290 +#: s2member/includes/syscon.inc.php:293 msgctxt "s2member-front" msgid "Gold Member" msgstr "" -#: s2member/includes/syscon.inc.php:290 +#: s2member/includes/syscon.inc.php:293 msgctxt "s2member-front" msgid "Platinum Member" msgstr "" -#: s2member/includes/syscon.inc.php:290 +#: s2member/includes/syscon.inc.php:293 msgctxt "s2member-front" msgid "Level %s Member" msgstr "" @@ -2613,76 +2675,76 @@ msgctxt "s2member-admin" msgid "Buy Now (Specific Post/Page, link valid for 50 years)" msgstr "" -#: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:235 +#: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:239 msgctxt "s2member-front" msgid "+ tax" msgstr "" -#: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:236 +#: 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:869 +#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:890 msgctxt "s2member-front percentage-symbol" msgid "%" msgstr "" -#: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:257 -#: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:309 -#: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:322 -#: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:342 -#: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:402 -#: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:417 +#: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:261 +#: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:313 +#: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:326 +#: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:346 +#: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:406 +#: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:421 msgctxt "s2member-front" msgid "Discount: %s off. (Now: %s)" msgstr "" -#: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:258 -#: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:310 -#: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:323 -#: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:343 -#: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:403 -#: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:418 +#: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:262 +#: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:314 +#: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:327 +#: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:347 +#: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:407 +#: s2member-pro/s2member-pro/includes/classes/coupons.inc.php:422 msgctxt "s2member-front" msgid "
ClickBank
or CLKBANK*COM
."
msgstr ""
-#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-cancellation-in.inc.php:123
+#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-cancellation-in.inc.php:122
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:247
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:262
msgctxt "s2member-front"
msgid "Unable to cancel at this time. Your account is pending other changes. Please try again in 15 minutes."
msgstr ""
-#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-cancellation-in.inc.php:135
-#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-cancellation-pf-in.inc.php:140
+#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-cancellation-in.inc.php:134
+#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-cancellation-pf-in.inc.php:139
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:257
msgctxt "s2member-front"
msgid "Please log in at PayPal to cancel your Subscription."
msgstr ""
-#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:355
-#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:680
-#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:495
-#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:929
+#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:354
+#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:679
+#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:494
+#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:928
msgctxt "s2member-front"
msgid "Sorry. Your account is pending other changes. Please try again in 15 minutes."
msgstr ""
@@ -3979,18 +4041,18 @@ msgstr ""
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:282
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:295
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:298
-#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-in.inc.php:79
-#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-in.inc.php:135
-#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-in.inc.php:139
-#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-pf-in.inc.php:79
-#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-pf-in.inc.php:134
+#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-in.inc.php:78
+#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-in.inc.php:134
+#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-in.inc.php:138
+#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-pf-in.inc.php:78
+#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-pf-in.inc.php:133
msgctxt "s2member-front"
msgid "Please log in at PayPal to update your billing information."
msgstr ""
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:285
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:303
-#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-in.inc.php:127
+#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-in.inc.php:126
msgctxt "s2member-front"
msgid "Unable to update at this time. Your account is pending other changes. Please try again in 15 minutes."
msgstr ""
@@ -4062,18 +4124,18 @@ msgctxt "s2member-admin"
msgid "Invalid form configuration. Invalid \"rr, rra\" attributes. When \"rr\" (Regular Recurring) is 0 or 1, \"rra\" (Recurring Retry Attempts) must be >= 0."
msgstr ""
-#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-pf-in.inc.php:140
+#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-pf-in.inc.php:139
msgctxt "s2member-front"
msgid "No Subscr. ID. Please contact Support for assistance."
msgstr ""
-#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-cancellation-in.inc.php:123
+#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-cancellation-in.inc.php:122
msgctxt "s2member-front"
msgid "API failure. Please contact Support for assistance."
msgstr ""
-#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-checkout-in.inc.php:249
-#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-checkout-in.inc.php:496
+#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-checkout-in.inc.php:248
+#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-checkout-in.inc.php:495
msgctxt "s2member-front"
msgid "Thank you. Your account has been updated :-)"
msgstr ""
@@ -4115,48 +4177,53 @@ msgctxt "s2member-admin"
msgid "Invalid form configuration. Invalid \"ta\" attribute. The Trial Amount. When provided, must be <= 999999.99."
msgstr ""
-#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:543
-#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:612
+#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:547
+#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:616
msgctxt "s2member-front"
msgid "Missing Billing Info. Please try again."
msgstr ""
-#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:682
+#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:686
msgctxt "s2member-front"
msgid "Missing Billing Method. Please try again."
msgstr ""
-#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-update-in.inc.php:99
+#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-update-in.inc.php:98
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:641
+#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:193
+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
msgctxt "s2member-front"
msgid "Error code: %1$s
. %2$s."
msgstr ""
-#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:645
+#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:666
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:648
+#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:669
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:651
+#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:672
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:654
+#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:675
msgctxt "s2member-front"
msgid "Stripe API error; please try again."
msgstr ""
-#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:656
+#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:677
msgctxt "s2member-front"
msgid "Stripe error; please try again."
msgstr ""
@@ -4216,27 +4283,27 @@ msgctxt "s2member-front"
msgid "My Profile Summary"
msgstr ""
-#: s2member-pro/s2member-pro/includes/classes/sc-gift-codes-in.inc.php:124
+#: s2member-pro/s2member-pro/includes/classes/sc-gift-codes-in.inc.php:126
msgctxt "s2member-front"
msgid "Redemption Code"
msgstr ""
-#: s2member-pro/s2member-pro/includes/classes/sc-gift-codes-in.inc.php:125
+#: s2member-pro/s2member-pro/includes/classes/sc-gift-codes-in.inc.php:127
msgctxt "s2member-front"
msgid "Status"
msgstr ""
-#: s2member-pro/s2member-pro/includes/classes/sc-gift-codes-in.inc.php:137
+#: s2member-pro/s2member-pro/includes/classes/sc-gift-codes-in.inc.php:139
msgctxt "s2member-front"
msgid "used"
msgstr ""
-#: s2member-pro/s2member-pro/includes/classes/sc-gift-codes-in.inc.php:147
+#: s2member-pro/s2member-pro/includes/classes/sc-gift-codes-in.inc.php:149
msgctxt "s2member-front"
msgid "Click to Redeem"
msgstr ""
-#: s2member-pro/s2member-pro/includes/classes/sc-gift-codes-in.inc.php:149
+#: s2member-pro/s2member-pro/includes/classes/sc-gift-codes-in.inc.php:151
msgctxt "s2member-front"
msgid "unused"
msgstr ""
@@ -4249,28 +4316,28 @@ msgstr ""
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:73
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:167
-#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:276
-#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:527
-#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:813
+#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:280
+#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:531
+#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:821
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:73
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:167
-#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:276
-#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:575
-#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:909
+#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:280
+#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:579
+#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:917
#: 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:202
-#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:321
-#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:632
+#: 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:642
msgctxt "s2member-front"
-msgid "Security Code missing. Please try again."
+msgid "Security Verification missing. Please try again."
msgstr ""
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:142
-#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:502
-#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:774
+#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:506
+#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:778
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:142
msgctxt "s2member-front"
@@ -4278,57 +4345,57 @@ msgid "Please choose a Billing Method."
msgstr ""
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
-#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:346
-#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:598
+#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:350
+#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:602
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
-#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:350
-#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:650
+#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:354
+#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:654
msgctxt "s2member-front"
msgid "Calculating Sales Tax..."
msgstr ""
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
-#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:346
-#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:598
+#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:350
+#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:602
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
-#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:350
-#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:650
+#: 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:474
+#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:479
msgctxt "s2member-front"
msgid "calculating sales tax..."
msgstr ""
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
-#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:357
-#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:609
+#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:361
+#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:613
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
-#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:361
-#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:661
+#: 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:491
+#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:496
msgctxt "s2member-front"
msgid "Sales Tax%s: %s