Version Description
= v150203 =
(Maintenance Release) Upgrade immediately.
Download this release
Release Info
Developer | JasWSInc |
Plugin | s2Member Framework (Member Roles, Capabilities, Membership, PayPal Members) |
Version | 150203 |
Comparing to | |
See all releases |
Code changes from version 150102 to 150203
- changelog.md +18 -0
- checksum.txt +1 -1
- includes/classes/access-cap-times.inc.php +1 -1
- includes/classes/admin-css-js-in.inc.php +1 -1
- includes/classes/admin-css-js.inc.php +1 -1
- includes/classes/admin-lockouts.inc.php +1 -1
- includes/classes/admin-notices.inc.php +1 -1
- includes/classes/auto-eots.inc.php +279 -277
- includes/classes/aweber-e.inc.php +1 -1
- includes/classes/aweber.inc.php +1 -1
- includes/classes/brute-force.inc.php +1 -1
- includes/classes/cache.inc.php +1 -1
- includes/classes/catgs-sp.inc.php +1 -1
- includes/classes/catgs.inc.php +1 -1
- includes/classes/check-activation.inc.php +1 -1
- includes/classes/constants.inc.php +1 -1
- includes/classes/cron-jobs-in.inc.php +1 -1
- includes/classes/cron-jobs.inc.php +1 -1
- includes/classes/css-js-in.inc.php +1 -1
- includes/classes/css-js-themes.inc.php +1 -1
- includes/classes/css-js.inc.php +1 -1
- includes/classes/custom-reg-fields-4bp.inc.php +1 -1
- includes/classes/custom-reg-fields.inc.php +1 -1
- includes/classes/database.inc.php +1 -1
- includes/classes/email-configs.inc.php +1 -1
- includes/classes/files-in.inc.php +182 -23
- includes/classes/files.inc.php +374 -356
- includes/classes/getresponse.inc.php +1 -1
- includes/classes/installation.inc.php +10 -4
- includes/classes/ip-restrictions.inc.php +1 -1
- includes/classes/labels.inc.php +1 -1
- includes/classes/list-server-base.inc.php +1 -1
- includes/classes/list-servers.inc.php +1 -1
- includes/classes/login-checks.inc.php +1 -1
- includes/classes/login-customizations.inc.php +1 -1
- includes/classes/login-redirects-r.inc.php +1 -1
- includes/classes/login-redirects.inc.php +1 -1
- includes/classes/mailchimp-o.inc.php +1 -1
- includes/classes/mailchimp.inc.php +1 -1
- includes/classes/menu-pages-rs.inc.php +1 -1
- includes/classes/menu-pages-tb.inc.php +75 -74
- includes/classes/menu-pages.inc.php +1 -1
- includes/classes/meta-box-saves.inc.php +1 -1
- includes/classes/meta-box-security.inc.php +1 -1
- includes/classes/meta-boxes.inc.php +1 -1
- includes/classes/mms-patches.inc.php +1 -1
- includes/classes/mo-page-in.inc.php +1 -1
- includes/classes/mo-page.inc.php +1 -1
- includes/classes/no-cache.inc.php +23 -8
- includes/classes/op-notices.inc.php +1 -1
- includes/classes/option-forces.inc.php +1 -1
- includes/classes/pages-sp.inc.php +1 -1
- includes/classes/pages.inc.php +1 -1
- includes/classes/paypal-notify-in-billing-agreement-signup.inc.php +1 -1
- includes/classes/paypal-notify-in-cart.inc.php +1 -1
- includes/classes/paypal-notify-in-express-checkout.inc.php +1 -1
- includes/classes/paypal-notify-in-rec-profile-creation-w-level.inc.php +1 -1
- includes/classes/paypal-notify-in-send-money.inc.php +1 -1
- includes/classes/paypal-notify-in-sp-refund-reversal.inc.php +1 -1
- includes/classes/paypal-notify-in-subscr-modify-w-level.inc.php +1 -1
- includes/classes/paypal-notify-in-subscr-or-rp-cancellation-w-level.inc.php +1 -1
- includes/classes/paypal-notify-in-subscr-or-rp-eots-w-level.inc.php +3 -4
- includes/classes/paypal-notify-in-subscr-or-rp-payment-failed-w-level.inc.php +1 -1
- includes/classes/paypal-notify-in-subscr-or-rp-payment-w-level.inc.php +1 -1
- includes/classes/paypal-notify-in-subscr-or-wa-w-level.inc.php +20 -1
- includes/classes/paypal-notify-in-virtual-terminal.inc.php +1 -1
- includes/classes/paypal-notify-in-wa-ccaps-wo-level.inc.php +12 -1
- includes/classes/paypal-notify-in-web-accept-sp.inc.php +12 -1
- includes/classes/paypal-notify-in.inc.php +1 -1
- includes/classes/paypal-notify.inc.php +1 -1
- includes/classes/paypal-return-in-no-tx-data.inc.php +1 -1
- includes/classes/paypal-return-in-proxy-ty-email.inc.php +1 -1
- includes/classes/paypal-return-in-proxy-x-preview.inc.php +1 -1
- includes/classes/paypal-return-in-subscr-modify-w-level.inc.php +1 -1
- includes/classes/paypal-return-in-subscr-or-wa-w-level.inc.php +1 -1
- includes/classes/paypal-return-in-wa-ccaps-wo-level.inc.php +1 -1
- includes/classes/paypal-return-in-web-accept-sp.inc.php +1 -1
- includes/classes/paypal-return-in.inc.php +1 -1
- includes/classes/paypal-return.inc.php +1 -1
- includes/classes/paypal-utilities.inc.php +1 -1
- includes/classes/posts-sp.inc.php +1 -1
- includes/classes/posts.inc.php +1 -1
- includes/classes/profile-in.inc.php +1 -1
- includes/classes/profile-mods-4bp-in.inc.php +1 -1
- includes/classes/profile-mods-4bp.inc.php +1 -1
- includes/classes/profile-mods-in.inc.php +2 -2
- includes/classes/profile-mods.inc.php +1 -1
- includes/classes/profile.inc.php +1 -1
- includes/classes/ptags-sp.inc.php +1 -1
- includes/classes/ptags.inc.php +1 -1
- includes/classes/querys.inc.php +1 -1
- includes/classes/readmes.inc.php +1 -1
- includes/classes/register-access.inc.php +1 -1
- includes/classes/register-in.inc.php +1 -1
- includes/classes/register.inc.php +1 -1
- includes/classes/registration-times.inc.php +1 -1
- includes/classes/registrations.inc.php +16 -15
- includes/classes/return-templates.inc.php +1 -1
- includes/classes/roles-caps.inc.php +1 -1
- includes/classes/ruris-sp.inc.php +1 -1
- includes/classes/ruris.inc.php +1 -1
- includes/classes/s-badge-status-in.inc.php +1 -1
- includes/classes/s-badge-status.inc.php +1 -1
- includes/classes/sc-files-in.inc.php +1 -1
- includes/classes/sc-files.inc.php +1 -1
- includes/classes/sc-gets-in.inc.php +1 -1
- includes/classes/sc-gets.inc.php +1 -1
- includes/classes/sc-if-conds-in.inc.php +1 -1
- includes/classes/sc-if-conds.inc.php +1 -1
- includes/classes/sc-keys-in.inc.php +1 -1
- includes/classes/sc-keys.inc.php +1 -1
- includes/classes/sc-paypal-button-e.inc.php +1 -1
- includes/classes/sc-paypal-button-in.inc.php +1 -1
- includes/classes/sc-paypal-button.inc.php +1 -1
- includes/classes/sc-profile-in.inc.php +1 -1
- includes/classes/sc-profile.inc.php +1 -1
- includes/classes/sc-s-badge-in.inc.php +1 -1
- includes/classes/sc-s-badge.inc.php +1 -1
- includes/classes/security.inc.php +1 -1
- includes/classes/sp-access.inc.php +3 -3
- includes/classes/ssl-in.inc.php +1 -1
- includes/classes/ssl.inc.php +1 -1
- includes/classes/systematics-sp.inc.php +1 -1
- includes/classes/systematics.inc.php +1 -1
- includes/classes/tracking-codes.inc.php +1 -1
- includes/classes/tracking-cookies-in.inc.php +1 -1
- includes/classes/tracking-cookies.inc.php +1 -1
- includes/classes/translations.inc.php +1 -1
- includes/classes/user-access.inc.php +159 -162
- includes/classes/user-deletions.inc.php +2 -1
- includes/classes/user-new-in.inc.php +1 -1
- includes/classes/user-new.inc.php +1 -1
- includes/classes/user-notes.inc.php +1 -1
- includes/classes/user-securities.inc.php +1 -1
- includes/classes/users-list-in.inc.php +527 -529
- includes/classes/users-list.inc.php +1 -1
- includes/classes/utilities.inc.php +208 -201
- includes/classes/utils-arrays.inc.php +1 -1
- includes/classes/utils-captchas.inc.php +1 -1
- includes/classes/utils-conds.inc.php +1 -1
- includes/classes/utils-css.inc.php +1 -1
- includes/classes/utils-cur.inc.php +1 -1
- includes/classes/utils-dirs.inc.php +1 -1
- includes/classes/utils-encryption.inc.php +215 -167
- includes/classes/utils-forms.inc.php +1 -1
- includes/classes/utils-gets.inc.php +1 -1
- includes/classes/utils-html.inc.php +1 -1
- includes/classes/utils-logs.inc.php +1 -1
- includes/classes/utils-s2o.inc.php +127 -121
- includes/classes/utils-strings.inc.php +623 -533
- includes/classes/utils-time.inc.php +1 -1
- includes/classes/utils-urls.inc.php +1 -3
- includes/classes/utils-users.inc.php +1 -1
- includes/classes/wp-footer.inc.php +1 -1
- includes/codes.inc.php +1 -1
- includes/funcs.inc.php +1 -1
- includes/functions/api-functions.inc.php +1 -1
- includes/functions/class-autoloader.inc.php +1 -1
- includes/functions/deprecated.inc.php +1 -1
- includes/functions/pluggables.inc.php +1 -1
- includes/hooks.inc.php +1 -1
- includes/menu-pages/api-ops.inc.php +1 -1
- includes/menu-pages/down-ops.inc.php +111 -84
- includes/menu-pages/els-ops.inc.php +1 -1
- includes/menu-pages/gen-ops.inc.php +1 -1
- includes/menu-pages/info.inc.php +1 -1
- includes/menu-pages/integrations.inc.php +1 -1
- includes/menu-pages/logs.inc.php +1 -1
- includes/menu-pages/menu-pages.css +87 -4
- includes/menu-pages/mms-ops.inc.php +1 -1
- includes/menu-pages/paypal-buttons.inc.php +1 -1
- includes/menu-pages/paypal-ops.inc.php +1 -1
- includes/menu-pages/res-ops.inc.php +1 -1
- includes/menu-pages/scripting.inc.php +2 -2
- includes/menu-pages/start.inc.php +1 -1
- includes/menu-pages/trk-ops.inc.php +1 -1
- includes/menu-pages/updates.inc.php +1 -1
- includes/syscon.inc.php +6 -5
- includes/templates/badges/s-badge.php +1 -1
- includes/templates/buttons/paypal-cancellation-button.php +1 -1
- includes/templates/buttons/paypal-ccaps-checkout-button.php +1 -1
- includes/templates/buttons/paypal-checkout-button.php +1 -1
- includes/templates/buttons/paypal-sp-checkout-button.php +1 -1
- includes/templates/cfg-files/s2-cross-xml.php +2 -2
- includes/templates/cfg-files/s2member-files-no-gzip.php +3 -3
- includes/templates/cfg-files/s2member-files.php +4 -7
- includes/templates/cfg-files/s2member-logs.php +3 -6
- includes/templates/cfg-files/s2o-mu-plugins.php +18 -18
- includes/templates/cfg-files/s2o-nw-plugins.php +8 -8
- includes/templates/cfg-files/s2o-st-plugins.php +8 -8
- includes/templates/cfg-files/s2o-th-funcs.php +2 -2
- includes/templates/errors/ip-restrictions.php +1 -1
- includes/templates/options/paypal-currencies.php +1 -1
- includes/templates/options/paypal-membership-ccap-terms.php +1 -1
- includes/templates/options/paypal-membership-regular-terms.php +1 -1
- includes/templates/options/paypal-membership-trial-terms.php +1 -1
- includes/templates/options/paypal-sp-hours.php +1 -1
- includes/templates/players/jwplayer-v6-rtmp-only.php +1 -1
- includes/templates/players/jwplayer-v6-rtmp.php +1 -1
- includes/templates/players/jwplayer-v6.php +1 -1
- includes/templates/returns/default-return.php +1 -1
- includes/templates/shortcodes/paypal-cancellation-button-shortcode.php +1 -1
- includes/templates/shortcodes/paypal-ccaps-checkout-button-shortcode.php +1 -1
- includes/templates/shortcodes/paypal-checkout-button-shortcode.php +1 -1
- includes/templates/shortcodes/paypal-sp-checkout-button-shortcode.php +1 -1
- includes/translations/s2member.pot +483 -3641
- readme.txt +23 -4
- s2member-o.php +5 -1
- s2member.php +14 -14
changelog.md
CHANGED
@@ -1,3 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
= v150102 =
|
2 |
|
3 |
- (s2Member/s2Member Pro) **Custom Field Mapping:** This release of s2Member adds an internal mapping from s2Member's Custom Field values for each user, to the `get_user_option()` function in the WordPress core. This makes it possible to retrieve user custom field values like always via `get_user_field()` or now through the native `get_user_option()` function also. The benefit of this is that s2Member's custom fields are now more compatible with other themes/plugins for WordPress.
|
1 |
+
= v150203 =
|
2 |
+
|
3 |
+
- (s2Member Pro) **Gift/Redemption Codes:** This release adds a powerful new shortcode: `[s2Member-Gift-Codes /]`. This makes it easy to generate and sell access to gift codes (i.e. gift certificates) and/or to a list of redemption codes. For instance, where a single team leader might like to purchase multiple accounts they can distribute to others on a team, or in a group. Video demo here: https://www.youtube.com/watch?v=T3N_vygowbM&feature=youtu.be ~ See also: [this GitHub issue](https://github.com/websharks/s2member/issues/386) for additional technical details.
|
4 |
+
- (s2Member Pro) **User-Specific Coupon Codes:** This release of s2Member makes it possible to configure Pro Form Coupon Codes that are connected (i.e. only valid) when entered by specific Users/Members who are logged into the site. See: `Dashboard ⥱ s2Member ⥱ Pro Coupon Codes`. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/403) for additional technical details.
|
5 |
+
- (s2Member Pro) **Coupon Code Max Uses:** This release of s2Member Pro adds the ability to set a maximum number of times that a Coupon Code can be used. This makes it easy to create Coupon Codes that are designed to be used only one time, for instance; or for X number of times. After a Coupon Code is used X number of times, it will expire automatically. See: `Dashboard ⥱ s2Member ⥱ Pro Coupon Codes`. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/285) for technical details.
|
6 |
+
- (s2Member Pro) **Coupon Code Usage Tracking:** This release of s2Member Pro adds the ability to track the number of times that each of your Coupon Codes have been used. It is also possible to alter the number of uses, and/or set a maximum number of uses. See: `Dashboard ⥱ s2Member ⥱ Pro Coupon Codes`. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/285) for technical details.
|
7 |
+
- (s2Member Pro) **Coupon Code Active/Expires Dates:** This release of s2Member Pro makes it possible to establish both a start and end time for each of your Pro Coupon Codes. In previous versions of s2Member, it was only possible to set an expiration date. You can now create Coupon Codes that will become active at some point in the future automatically. See: `Dashboard ⥱ s2Member ⥱ Pro Coupon Codes`. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/285) for technical details.
|
8 |
+
- (s2Member Pro) **Coupon Code UI Enhancements:** This release of s2Member Pro comes with an updated UI that makes it easier to manage your Pro Coupon Codes. See: `Dashboard ⥱ s2Member ⥱ Pro Coupon Codes`. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/285) for technical details.
|
9 |
+
- (s2Member Pro) **Store Coupon Codes for Each User:** s2Member Pro now stores a list of all coupon codes that a customer has used on your site. See: `Dashboard ⥱ Users ⥱ Choose User [Edit]`. Scrolling down to the set of s2-related fields will reveal a new list of coupon codes. This list will be filled for new customers only; i.e. s2Member does not have this data for past purchases; only for new customers that you acquire after updating to the latest release. See also [this GitHub issue](https://github.com/websharks/s2member/issues/462) if you'd additional details.
|
10 |
+
- (s2Member/s2Member Pro) **EOT Custom Value:** In this release of s2Member, the `get_user_option('s2member_custom')` value is preserved after an EOT has taken place, making it possible for site owners to continue to read this value (along with any custom pipe-delimited values they have injected there), even after an EOT has taken place. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/449).
|
11 |
+
- (s2Member/s2Member Pro) **JW Player Broken Links:** This release corrects some broken links referenced by the inline documentation for s2Member in the WordPress Dashboard. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/448) if you'd like further details.
|
12 |
+
- (s2Member/s2Member Pro) **Security:** This release of s2Member checks for the existence of the WordPress PHP Constant: `WPINC` instead of looking for the less reliable `$_SERVER['SCRIPT_FILENAME']`. Some site owners reported this was causing trouble in a localhost environment during testing, or when running s2Member on some hosts that are missing the `SCRIPT_FILENAME` environment variable; e.g. some Windows servers. Fixed in this release. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/454) if you'd like additional details.
|
13 |
+
- (s2Member Pro) **Advanced Import/Export Compat:** This release of s2Member Pro includes compatibility and a bug fix when running on WordPress v4.1+. Three PHP notices during importation, along with some quirky behavior associated with the `role` CSV column have been corrected. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/455) for technical details.
|
14 |
+
- (s2Member Pro) **`[s2Member-List /]` Bug Fix:** This release resolves an issue with pagination in the `[s2Member-List /]` shortcode after recent improvements to the search functionality. See [this GitHub issue](https://github.com/websharks/s2member/issues/155#issuecomment-69403120) if you'd like additional details.
|
15 |
+
- (s2Member Pro) **`[s2Member-List /]` Enhancement:** This release improves search functionality in the `[s2Member-List /]` shortcode, making it so that all searches default to `*[query]*`; i.e. are automatically wrapped by wildcards. If a user enters a wildcard explicitly (or a double quote), this default behavior is overridden and the search query is taken as given in such a scenario. This makes the search functionality easier for end-users to work with, since it no longer requires an exact match. Default behavior is now a fuzzy match. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/394) if you'd like further details.
|
16 |
+
- (s2Member/s2Member Pro) **AWS v4 Authentication:** This release of s2Member adds AWS v4 Authentication support for Amazon Web Service Regions that only accept the AWS v4 authentication scheme. If you had trouble in the recent past when attempting to integrate s2Member with S3 Buckets (or with CloudFront) in regions outside the USA, this release should resolve those issues for you. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/440) if you'd like additional technical details.
|
17 |
+
- (s2Member Pro) **Bug Fix:** Pro Form Checkout Options not working in all cases whenever they are used together with Free Registration Forms. Resolved in this release.
|
18 |
+
|
19 |
= v150102 =
|
20 |
|
21 |
- (s2Member/s2Member Pro) **Custom Field Mapping:** This release of s2Member adds an internal mapping from s2Member's Custom Field values for each user, to the `get_user_option()` function in the WordPress core. This makes it possible to retrieve user custom field values like always via `get_user_field()` or now through the native `get_user_option()` function also. The benefit of this is that s2Member's custom fields are now more compatible with other themes/plugins for WordPress.
|
checksum.txt
CHANGED
@@ -1 +1 @@
|
|
1 |
-
|
1 |
+
84638519eea37bbc521b44a83b66c496
|
includes/classes/access-cap-times.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\CCAPS
|
15 |
* @since 140514
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_access_cap_times'))
|
14 |
* @package s2Member\CCAPS
|
15 |
* @since 140514
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_access_cap_times'))
|
includes/classes/admin-css-js-in.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Admin_CSS_JS
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_admin_css_js_in"))
|
14 |
* @package s2Member\Admin_CSS_JS
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_admin_css_js_in"))
|
includes/classes/admin-css-js.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Admin_CSS_JS
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_admin_css_js"))
|
14 |
* @package s2Member\Admin_CSS_JS
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_admin_css_js"))
|
includes/classes/admin-lockouts.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Admin_Lockouts
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_admin_lockouts'))
|
14 |
* @package s2Member\Admin_Lockouts
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_admin_lockouts'))
|
includes/classes/admin-notices.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Admin_Notices
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_admin_notices'))
|
14 |
* @package s2Member\Admin_Notices
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_admin_notices'))
|
includes/classes/auto-eots.inc.php
CHANGED
@@ -1,298 +1,300 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* s2Member's Auto-EOT System *(EOT = End Of Term)*.
|
4 |
-
*
|
5 |
-
* Copyright: © 2009-2011
|
6 |
-
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
|
7 |
-
* (coded in the USA)
|
8 |
-
*
|
9 |
-
* Released under the terms of the GNU General Public License.
|
10 |
-
* You should have received a copy of the GNU General Public License,
|
11 |
-
* along with this software. In the main directory, see: /licensing/
|
12 |
-
* If not, see: {@link http://www.gnu.org/licenses/}.
|
13 |
-
*
|
14 |
-
* @package s2Member\Auto_EOT_System
|
15 |
-
* @since 3.5
|
16 |
-
*/
|
17 |
-
if
|
18 |
-
exit (
|
19 |
-
|
20 |
-
if
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
{
|
22 |
/**
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
{
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
*
|
36 |
-
* @return bool True if able to add Auto-EOT System schedule, else false.
|
37 |
-
*/
|
38 |
-
public static function add_auto_eot_system ()
|
39 |
-
{
|
40 |
-
do_action("ws_plugin__s2member_before_add_auto_eot_system", get_defined_vars ());
|
41 |
-
|
42 |
-
if (!c_ws_plugin__s2member_auto_eots::delete_auto_eot_system ())
|
43 |
-
{
|
44 |
-
return apply_filters("ws_plugin__s2member_add_auto_eot_system", false, get_defined_vars ());
|
45 |
-
}
|
46 |
-
else if /* Otherwise, we can schedule? */ (function_exists ("wp_cron"))
|
47 |
-
{
|
48 |
-
wp_schedule_event (time (), "every10m", "ws_plugin__s2member_auto_eot_system__schedule");
|
49 |
-
|
50 |
-
return apply_filters("ws_plugin__s2member_add_auto_eot_system", true, get_defined_vars ());
|
51 |
-
}
|
52 |
-
else // Otherwise, it would appear that WP-Cron is not available.
|
53 |
-
{
|
54 |
-
return apply_filters("ws_plugin__s2member_add_auto_eot_system", false, get_defined_vars ());
|
55 |
-
}
|
56 |
-
}
|
57 |
-
/**
|
58 |
-
* Deletes all scheduled tasks for s2Member's Auto-EOT System.
|
59 |
-
*
|
60 |
-
* @package s2Member\Auto_EOT_System
|
61 |
-
* @since 3.5
|
62 |
-
*
|
63 |
-
* @return bool True if able to delete Auto-EOT System schedule, else false.
|
64 |
-
*/
|
65 |
-
public static function delete_auto_eot_system ()
|
66 |
-
{
|
67 |
-
do_action("ws_plugin__s2member_before_delete_auto_eot_system", get_defined_vars ());
|
68 |
|
69 |
-
|
70 |
-
|
71 |
-
|
|
|
|
|
|
|
|
|
72 |
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
* This Hook is used by some of s2Member Pro's Gateway integrations; allowing CRON processing
|
89 |
-
* to run for important communications; which poll Payment Gateway APIs for possible EOTs.
|
90 |
-
*
|
91 |
-
* @package s2Member\Auto_EOT_System
|
92 |
-
* @since 3.5
|
93 |
-
*
|
94 |
-
* @param int $per_process Number of database records to process each time.
|
95 |
-
* Can also be Filtered with `ws_plugin__s2member_auto_eot_system_per_process`.
|
96 |
-
* @return null
|
97 |
-
*/
|
98 |
-
public static function auto_eot_system ($per_process = 6)
|
99 |
-
{
|
100 |
-
global /* Need global DB obj. */ $wpdb;
|
101 |
-
global /* Multisite. */ $current_site, $current_blog;
|
102 |
|
103 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
|
105 |
-
|
106 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
107 |
|
108 |
-
|
109 |
-
|
110 |
-
|
|
|
|
|
|
|
|
|
111 |
|
112 |
-
|
113 |
{
|
114 |
-
|
115 |
-
|
116 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
117 |
{
|
118 |
-
foreach
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
{
|
128 |
-
$
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
$
|
134 |
-
|
135 |
-
$fields = get_user_option ("s2member_custom_fields", $user_id);
|
136 |
-
$user_reg_ip = get_user_option ("s2member_registration_ip", $user_id);
|
137 |
-
|
138 |
-
$demotion_role = c_ws_plugin__s2member_option_forces::force_demotion_role ("subscriber");
|
139 |
-
$existing_role = c_ws_plugin__s2member_user_access::user_access_role ($user);
|
140 |
-
|
141 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
142 |
-
do_action("ws_plugin__s2member_during_auto_eot_system_during_before_demote", get_defined_vars ());
|
143 |
-
do_action("ws_plugin__s2member_during_collective_mods", $user_id, get_defined_vars (), $eot_del_type, "modification", $demotion_role);
|
144 |
-
do_action("ws_plugin__s2member_during_collective_eots", $user_id, get_defined_vars (), $eot_del_type, "modification");
|
145 |
-
unset($__refs, $__v);
|
146 |
-
|
147 |
-
if /* Only if NOT the existing Role. */($existing_role !== $demotion_role)
|
148 |
-
$user->set_role /* Give User the demotion Role. */ ($demotion_role);
|
149 |
-
|
150 |
-
if(apply_filters("ws_plugin__s2member_remove_ccaps_during_eot_events",
|
151 |
-
(bool)$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["eots_remove_ccaps"], get_defined_vars()))
|
152 |
-
foreach ($user->allcaps as $cap => $cap_enabled)
|
153 |
-
if (preg_match ("/^access_s2member_ccap_/", $cap))
|
154 |
-
$user->remove_cap ($ccap = $cap);
|
155 |
-
|
156 |
-
delete_user_option ($user_id, "s2member_custom");
|
157 |
-
delete_user_option ($user_id, "s2member_subscr_gateway");
|
158 |
-
delete_user_option ($user_id, "s2member_subscr_id");
|
159 |
-
delete_user_option ($user_id, "s2member_subscr_baid");
|
160 |
-
delete_user_option ($user_id, "s2member_subscr_cid");
|
161 |
-
|
162 |
-
delete_user_option ($user_id, "s2member_ipn_signup_vars");
|
163 |
-
if (!apply_filters("ws_plugin__s2member_preserve_paid_registration_times", true, get_defined_vars ()))
|
164 |
-
delete_user_option ($user_id, "s2member_paid_registration_times");
|
165 |
-
|
166 |
-
delete_user_option ($user_id, "s2member_last_status_scan");
|
167 |
-
delete_user_option ($user_id, "s2member_first_payment_txn_id");
|
168 |
-
delete_user_option ($user_id, "s2member_last_payment_time");
|
169 |
-
delete_user_option ($user_id, "s2member_auto_eot_time");
|
170 |
-
|
171 |
-
delete_user_option ($user_id, "s2member_file_download_access_log");
|
172 |
-
delete_user_option ($user_id, "s2member_authnet_payment_failures");
|
173 |
-
|
174 |
-
c_ws_plugin__s2member_user_notes::append_user_notes ($user_id, "Demoted by s2Member: " . date ("D M j, Y g:i a T"));
|
175 |
-
|
176 |
-
if($subscr_gateway && $subscr_id) // Also note the Paid Subscr. Gateway/ID so there is a reference left behind here.
|
177 |
-
c_ws_plugin__s2member_user_notes::append_user_notes ($user_id, "Paid Subscr. ID @ time of demotion: ".$subscr_gateway." -› ".$subscr_id);
|
178 |
-
|
179 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["eot_del_notification_urls"] && is_array($cv = preg_split ("/\|/", $custom)))
|
180 |
-
{
|
181 |
-
foreach (preg_split ("/[\r\n\t]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["eot_del_notification_urls"]) as $url) // Handle EOT Notifications.
|
182 |
-
|
183 |
-
if (($url = preg_replace ("/%%cv([0-9]+)%%/ei", 'urlencode(trim(@$cv[$1]))', $url)) && ($url = preg_replace ("/%%eot_del_type%%/i", c_ws_plugin__s2member_utils_strings::esc_refs (urlencode ("auto-eot-cancellation-expiration-demotion")), $url)) && ($url = preg_replace ("/%%subscr_id%%/i", c_ws_plugin__s2member_utils_strings::esc_refs (urlencode ($subscr_id)), $url)))
|
184 |
-
if (($url = preg_replace ("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_refs (urlencode ($user->first_name)), $url)) && ($url = preg_replace ("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_refs (urlencode ($user->last_name)), $url)))
|
185 |
-
if (($url = preg_replace ("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_refs (urlencode (trim ($user->first_name . " " . $user->last_name))), $url)))
|
186 |
-
if (($url = preg_replace ("/%%user_email%%/i", c_ws_plugin__s2member_utils_strings::esc_refs (urlencode ($user->user_email)), $url)))
|
187 |
-
if (($url = preg_replace ("/%%user_login%%/i", c_ws_plugin__s2member_utils_strings::esc_refs (urlencode ($user->user_login)), $url)))
|
188 |
-
if (($url = preg_replace ("/%%user_ip%%/i", c_ws_plugin__s2member_utils_strings::esc_refs (urlencode ($user_reg_ip)), $url)))
|
189 |
-
if (($url = preg_replace ("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_refs (urlencode ($user_id)), $url)))
|
190 |
-
{
|
191 |
-
if (is_array($fields) && !empty($fields))
|
192 |
-
foreach /* Custom Registration/Profile Fields. */ ($fields as $var => $val)
|
193 |
-
if (!($url = preg_replace ("/%%" . preg_quote ($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_refs (urlencode (maybe_serialize ($val))), $url)))
|
194 |
-
break;
|
195 |
-
|
196 |
-
if (($url = trim (preg_replace ("/%%(.+?)%%/i", "", $url))))
|
197 |
-
c_ws_plugin__s2member_utils_urls::remote ($url);
|
198 |
-
}
|
199 |
-
}
|
200 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["eot_del_notification_recipients"] && is_array($cv = preg_split ("/\|/", $custom)))
|
201 |
-
{
|
202 |
-
$email_configs_were_on = c_ws_plugin__s2member_email_configs::email_config_status ();
|
203 |
-
c_ws_plugin__s2member_email_configs::email_config_release ();
|
204 |
-
|
205 |
-
$msg = $sbj = "(s2Member / API Notification Email) - EOT/Deletion";
|
206 |
-
$msg .= /* Spacing in the message body. */"\n\n";
|
207 |
-
|
208 |
-
$msg .= "eot_del_type: %%eot_del_type%%\n";
|
209 |
-
$msg .= "subscr_id: %%subscr_id%%\n";
|
210 |
-
$msg .= "subscr_baid: %%subscr_baid%%\n";
|
211 |
-
$msg .= "subscr_cid: %%subscr_cid%%\n";
|
212 |
-
$msg .= "user_first_name: %%user_first_name%%\n";
|
213 |
-
$msg .= "user_last_name: %%user_last_name%%\n";
|
214 |
-
$msg .= "user_full_name: %%user_full_name%%\n";
|
215 |
-
$msg .= "user_email: %%user_email%%\n";
|
216 |
-
$msg .= "user_login: %%user_login%%\n";
|
217 |
-
$msg .= "user_ip: %%user_ip%%\n";
|
218 |
-
$msg .= "user_id: %%user_id%%\n";
|
219 |
-
|
220 |
-
if (is_array($fields) && !empty($fields))
|
221 |
-
foreach ($fields as $var => $val)
|
222 |
-
$msg .= $var . ": %%" . $var . "%%\n";
|
223 |
-
|
224 |
-
$msg .= "cv0: %%cv0%%\n";
|
225 |
-
$msg .= "cv1: %%cv1%%\n";
|
226 |
-
$msg .= "cv2: %%cv2%%\n";
|
227 |
-
$msg .= "cv3: %%cv3%%\n";
|
228 |
-
$msg .= "cv4: %%cv4%%\n";
|
229 |
-
$msg .= "cv5: %%cv5%%\n";
|
230 |
-
$msg .= "cv6: %%cv6%%\n";
|
231 |
-
$msg .= "cv7: %%cv7%%\n";
|
232 |
-
$msg .= "cv8: %%cv8%%\n";
|
233 |
-
$msg .= "cv9: %%cv9%%";
|
234 |
-
|
235 |
-
if (($msg = preg_replace ("/%%cv([0-9]+)%%/ei", 'trim(@$cv[$1])', $msg)) && ($msg = preg_replace ("/%%eot_del_type%%/i", c_ws_plugin__s2member_utils_strings::esc_refs ("auto-eot-cancellation-expiration-demotion"), $msg)) && ($msg = preg_replace ("/%%subscr_id%%/i", c_ws_plugin__s2member_utils_strings::esc_refs ($subscr_id), $msg)))
|
236 |
-
if (($msg = preg_replace ("/%%subscr_baid%%/i", c_ws_plugin__s2member_utils_strings::esc_refs ($subscr_baid), $msg)) && ($msg = preg_replace ("/%%subscr_cid%%/i", c_ws_plugin__s2member_utils_strings::esc_refs ($subscr_cid), $msg)))
|
237 |
-
if (($msg = preg_replace ("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_refs ($user->first_name), $msg)) && ($msg = preg_replace ("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_refs ($user->last_name), $msg)))
|
238 |
-
if (($msg = preg_replace ("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_refs (trim ($user->first_name . " " . $user->last_name)), $msg)))
|
239 |
-
if (($msg = preg_replace ("/%%user_email%%/i", c_ws_plugin__s2member_utils_strings::esc_refs ($user->user_email), $msg)))
|
240 |
-
if (($msg = preg_replace ("/%%user_login%%/i", c_ws_plugin__s2member_utils_strings::esc_refs ($user->user_login), $msg)))
|
241 |
-
if (($msg = preg_replace ("/%%user_ip%%/i", c_ws_plugin__s2member_utils_strings::esc_refs ($user_reg_ip), $msg)))
|
242 |
-
if (($msg = preg_replace ("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_refs ($user_id), $msg)))
|
243 |
-
{
|
244 |
-
if (is_array($fields) && !empty($fields))
|
245 |
-
foreach /* Custom Registration/Profile Fields. */($fields as $var => $val)
|
246 |
-
if (!($msg = preg_replace ("/%%" . preg_quote ($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_refs (maybe_serialize ($val)), $msg)))
|
247 |
-
break;
|
248 |
-
|
249 |
-
if /* Still have a ``$sbj`` and a ``$msg``? */ ($sbj && ($msg = trim (preg_replace ("/%%(.+?)%%/i", "", $msg))))
|
250 |
-
|
251 |
-
foreach (c_ws_plugin__s2member_utils_strings::parse_emails ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["eot_del_notification_recipients"]) as $recipient)
|
252 |
-
wp_mail ($recipient, apply_filters("ws_plugin__s2member_eot_del_notification_email_sbj", $sbj, get_defined_vars ()), apply_filters("ws_plugin__s2member_eot_del_notification_email_msg", $msg, get_defined_vars ()), "Content-Type: text/plain; charset=UTF-8");
|
253 |
-
}
|
254 |
-
if($email_configs_were_on) c_ws_plugin__s2member_email_configs::email_config ();
|
255 |
-
}
|
256 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
257 |
-
do_action("ws_plugin__s2member_during_auto_eot_system_during_demote", get_defined_vars ());
|
258 |
-
unset($__refs, $__v);
|
259 |
}
|
260 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
261 |
{
|
262 |
-
$
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
remove_user_from_blog ($user_id, $current_blog->blog_id);
|
272 |
-
// This will automatically trigger `eot_del_notification_urls`.
|
273 |
-
c_ws_plugin__s2member_user_deletions::handle_ms_user_deletions ($user_id, $current_blog->blog_id, "s2says");
|
274 |
-
}
|
275 |
-
else // Otherwise, we can actually delete them.
|
276 |
-
// This will automatically trigger `eot_del_notification_urls`
|
277 |
-
wp_delete_user /* `c_ws_plugin__s2member_user_deletions::handle_user_deletions()` */ ($user_id);
|
278 |
-
|
279 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
280 |
-
do_action("ws_plugin__s2member_during_auto_eot_system_during_delete", get_defined_vars ());
|
281 |
-
unset($__refs, $__v);
|
282 |
}
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
289 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
290 |
}
|
291 |
-
|
292 |
-
|
293 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
294 |
-
do_action("ws_plugin__s2member_after_auto_eot_system", get_defined_vars ());
|
295 |
-
unset($__refs, $__v);
|
296 |
}
|
|
|
297 |
}
|
298 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
/**
|
3 |
+
* s2Member's Auto-EOT System *(EOT = End Of Term)*.
|
4 |
+
*
|
5 |
+
* Copyright: © 2009-2011
|
6 |
+
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
|
7 |
+
* (coded in the USA)
|
8 |
+
*
|
9 |
+
* Released under the terms of the GNU General Public License.
|
10 |
+
* You should have received a copy of the GNU General Public License,
|
11 |
+
* along with this software. In the main directory, see: /licensing/
|
12 |
+
* If not, see: {@link http://www.gnu.org/licenses/}.
|
13 |
+
*
|
14 |
+
* @package s2Member\Auto_EOT_System
|
15 |
+
* @since 3.5
|
16 |
+
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
+
exit ('Do not access this file directly.');
|
19 |
+
|
20 |
+
if(!class_exists('c_ws_plugin__s2member_auto_eots'))
|
21 |
+
{
|
22 |
+
/**
|
23 |
+
* s2Member's Auto-EOT System *(EOT = End Of Term)*.
|
24 |
+
*
|
25 |
+
* @package s2Member\Auto_EOT_System
|
26 |
+
* @since 3.5
|
27 |
+
*/
|
28 |
+
class c_ws_plugin__s2member_auto_eots
|
29 |
{
|
30 |
/**
|
31 |
+
* Adds a scheduled task for s2Member's Auto-EOT System.
|
32 |
+
*
|
33 |
+
* @package s2Member\Auto_EOT_System
|
34 |
+
* @since 3.5
|
35 |
+
*
|
36 |
+
* @return bool True if able to add Auto-EOT System schedule, else false.
|
37 |
+
*/
|
38 |
+
public static function add_auto_eot_system()
|
39 |
+
{
|
40 |
+
do_action('ws_plugin__s2member_before_add_auto_eot_system', get_defined_vars());
|
41 |
+
|
42 |
+
if(!c_ws_plugin__s2member_auto_eots::delete_auto_eot_system())
|
43 |
{
|
44 |
+
return apply_filters('ws_plugin__s2member_add_auto_eot_system', FALSE, get_defined_vars());
|
45 |
+
}
|
46 |
+
else if(function_exists('wp_cron') /* Otherwise, we can schedule? */)
|
47 |
+
{
|
48 |
+
wp_schedule_event(time(), 'every10m', 'ws_plugin__s2member_auto_eot_system__schedule');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
49 |
|
50 |
+
return apply_filters('ws_plugin__s2member_add_auto_eot_system', TRUE, get_defined_vars());
|
51 |
+
}
|
52 |
+
else // Otherwise, it would appear that WP-Cron is not available.
|
53 |
+
{
|
54 |
+
return apply_filters('ws_plugin__s2member_add_auto_eot_system', FALSE, get_defined_vars());
|
55 |
+
}
|
56 |
+
}
|
57 |
|
58 |
+
/**
|
59 |
+
* Deletes all scheduled tasks for s2Member's Auto-EOT System.
|
60 |
+
*
|
61 |
+
* @package s2Member\Auto_EOT_System
|
62 |
+
* @since 3.5
|
63 |
+
*
|
64 |
+
* @return bool True if able to delete Auto-EOT System schedule, else false.
|
65 |
+
*/
|
66 |
+
public static function delete_auto_eot_system()
|
67 |
+
{
|
68 |
+
do_action('ws_plugin__s2member_before_delete_auto_eot_system', get_defined_vars());
|
69 |
+
|
70 |
+
if(function_exists('wp_cron') /* Is `wp_cron()` even available? */)
|
71 |
+
{
|
72 |
+
wp_clear_scheduled_hook('ws_plugin__s2member_auto_eot_system__schedule' /* Since v3.0.3. */);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
|
74 |
+
return apply_filters('ws_plugin__s2member_delete_auto_eot_system', TRUE, get_defined_vars());
|
75 |
+
}
|
76 |
+
else // Otherwise, it would appear that WP-Cron is not available.
|
77 |
+
{
|
78 |
+
return apply_filters('ws_plugin__s2member_delete_auto_eot_system', FALSE, get_defined_vars());
|
79 |
+
}
|
80 |
+
}
|
81 |
|
82 |
+
/**
|
83 |
+
* Processed by WP_Cron; this handles Auto-EOTs *(EOT = End Of Term)*.
|
84 |
+
*
|
85 |
+
* If you have a HUGE userbase, increase the max EOTs per process.
|
86 |
+
* But NOTE, this runs ``$per_process`` *(per Blog)* on a Multisite Network.
|
87 |
+
* To increase, use: ``add_filter ('ws_plugin__s2member_auto_eot_system_per_process');``.
|
88 |
+
*
|
89 |
+
* This function makes an important Hook available: `ws_plugin__s2member_after_auto_eot_system`.
|
90 |
+
* This Hook is used by some of s2Member Pro's Gateway integrations; allowing CRON processing
|
91 |
+
* to run for important communications; which poll Payment Gateway APIs for possible EOTs.
|
92 |
+
*
|
93 |
+
* @package s2Member\Auto_EOT_System
|
94 |
+
* @since 3.5
|
95 |
+
*
|
96 |
+
* @param int $per_process Number of database records to process each time.
|
97 |
+
* Can also be Filtered with `ws_plugin__s2member_auto_eot_system_per_process`.
|
98 |
+
*
|
99 |
+
* @return null
|
100 |
+
*/
|
101 |
+
public static function auto_eot_system($per_process = 6)
|
102 |
+
{
|
103 |
+
global $wpdb;
|
104 |
+
/** @var $wpdb \wpdb */
|
105 |
+
global $current_site, $current_blog;
|
106 |
+
|
107 |
+
include_once ABSPATH.'wp-admin/includes/admin.php';
|
108 |
+
|
109 |
+
@set_time_limit(0); // Make time for processing a larger userbase.
|
110 |
+
@ini_set('memory_limit', apply_filters('admin_memory_limit', WP_MAX_MEMORY_LIMIT));
|
111 |
+
|
112 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
113 |
+
do_action('ws_plugin__s2member_before_auto_eot_system', get_defined_vars());
|
114 |
+
unset($__refs, $__v);
|
115 |
+
|
116 |
+
if($GLOBALS['WS_PLUGIN__']['s2member']['o']['auto_eot_system_enabled'] /* Enabled? */)
|
117 |
+
{
|
118 |
+
$per_process = apply_filters('ws_plugin__s2member_auto_eot_system_per_process', $per_process, get_defined_vars());
|
119 |
|
120 |
+
if(is_array($eots = $wpdb->get_results("SELECT `user_id` AS `ID` FROM `".$wpdb->usermeta."` WHERE `meta_key` = '".$wpdb->prefix."s2member_auto_eot_time' AND `meta_value` != '' AND `meta_value` <= '".esc_sql(strtotime("now"))."' LIMIT ".$per_process)))
|
121 |
+
{
|
122 |
+
foreach($eots as $eot) // Go through the array of EOTS. We need to (demote|delete) each of them.
|
123 |
+
{
|
124 |
+
if(($user_id = $eot->ID) && is_object($user = new WP_User ($user_id)) && $user->ID)
|
125 |
+
{
|
126 |
+
delete_user_option($user_id, 's2member_auto_eot_time'); // Always delete.
|
127 |
|
128 |
+
if(!$user->has_cap('administrator') /* Do NOT process Administrator accounts. */)
|
129 |
{
|
130 |
+
if($GLOBALS['WS_PLUGIN__']['s2member']['o']['membership_eot_behavior'] === 'demote')
|
131 |
+
{
|
132 |
+
$eot_del_type = 'auto-eot-cancellation-expiration-demotion'; // Set EOT/Del type.
|
133 |
+
|
134 |
+
$custom = get_user_option('s2member_custom', $user_id);
|
135 |
+
$subscr_gateway = get_user_option('s2member_subscr_gateway', $user_id);
|
136 |
+
$subscr_id = get_user_option('s2member_subscr_id', $user_id);
|
137 |
+
$subscr_baid = get_user_option('s2member_subscr_baid', $user_id);
|
138 |
+
$subscr_cid = get_user_option('s2member_subscr_cid', $user_id);
|
139 |
+
$fields = get_user_option('s2member_custom_fields', $user_id);
|
140 |
+
$user_reg_ip = get_user_option('s2member_registration_ip', $user_id);
|
141 |
+
|
142 |
+
$demotion_role = c_ws_plugin__s2member_option_forces::force_demotion_role('subscriber');
|
143 |
+
$existing_role = c_ws_plugin__s2member_user_access::user_access_role($user);
|
144 |
+
|
145 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
146 |
+
do_action('ws_plugin__s2member_during_auto_eot_system_during_before_demote', get_defined_vars());
|
147 |
+
do_action('ws_plugin__s2member_during_collective_mods', $user_id, get_defined_vars(), $eot_del_type, 'modification', $demotion_role);
|
148 |
+
do_action('ws_plugin__s2member_during_collective_eots', $user_id, get_defined_vars(), $eot_del_type, 'modification');
|
149 |
+
unset($__refs, $__v);
|
150 |
+
|
151 |
+
if($existing_role !== $demotion_role /* Only if NOT the existing Role. */)
|
152 |
+
$user->set_role($demotion_role /* Give User the demotion Role. */);
|
153 |
+
|
154 |
+
if(apply_filters('ws_plugin__s2member_remove_ccaps_during_eot_events', (bool)$GLOBALS['WS_PLUGIN__']['s2member']['o']['eots_remove_ccaps'], get_defined_vars()))
|
155 |
+
foreach($user->allcaps as $cap => $cap_enabled)
|
156 |
+
if(preg_match('/^access_s2member_ccap_/', $cap))
|
157 |
+
$user->remove_cap($ccap = $cap);
|
158 |
+
|
159 |
+
delete_user_option($user_id, 's2member_subscr_gateway');
|
160 |
+
delete_user_option($user_id, 's2member_subscr_id');
|
161 |
+
delete_user_option($user_id, 's2member_subscr_baid');
|
162 |
+
delete_user_option($user_id, 's2member_subscr_cid');
|
163 |
+
|
164 |
+
delete_user_option($user_id, 's2member_ipn_signup_vars');
|
165 |
+
if(!apply_filters('ws_plugin__s2member_preserve_paid_registration_times', TRUE, get_defined_vars()))
|
166 |
+
delete_user_option($user_id, 's2member_paid_registration_times');
|
167 |
+
|
168 |
+
delete_user_option($user_id, 's2member_last_status_scan');
|
169 |
+
delete_user_option($user_id, 's2member_first_payment_txn_id');
|
170 |
+
delete_user_option($user_id, 's2member_last_payment_time');
|
171 |
+
delete_user_option($user_id, 's2member_auto_eot_time');
|
172 |
+
|
173 |
+
delete_user_option($user_id, 's2member_file_download_access_log');
|
174 |
+
delete_user_option($user_id, 's2member_authnet_payment_failures');
|
175 |
+
|
176 |
+
c_ws_plugin__s2member_user_notes::append_user_notes($user_id, 'Demoted by s2Member: '.date('D M j, Y g:i a T'));
|
177 |
+
|
178 |
+
if($subscr_gateway && $subscr_id) // Also note the Paid Subscr. Gateway/ID so there is a reference left behind here.
|
179 |
+
c_ws_plugin__s2member_user_notes::append_user_notes($user_id, 'Paid Subscr. ID @ time of demotion: '.$subscr_gateway.' -› '.$subscr_id);
|
180 |
+
|
181 |
+
if($GLOBALS['WS_PLUGIN__']['s2member']['o']['eot_del_notification_urls'] && is_array($cv = preg_split('/\|/', $custom)))
|
182 |
{
|
183 |
+
foreach(preg_split('/['."\r\n\t".']+/', $GLOBALS['WS_PLUGIN__']['s2member']['o']['eot_del_notification_urls']) as $url) // Handle EOT Notifications.
|
184 |
+
|
185 |
+
if(($url = preg_replace('/%%cv([0-9]+)%%/ei', 'urlencode(trim(@$cv[$1]))', $url)) && ($url = preg_replace('/%%eot_del_type%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode('auto-eot-cancellation-expiration-demotion')), $url)) && ($url = preg_replace('/%%subscr_id%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($subscr_id)), $url)))
|
186 |
+
if(($url = preg_replace('/%%user_first_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user->first_name)), $url)) && ($url = preg_replace('/%%user_last_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user->last_name)), $url)))
|
187 |
+
if(($url = preg_replace('/%%user_full_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode(trim($user->first_name.' '.$user->last_name))), $url)))
|
188 |
+
if(($url = preg_replace('/%%user_email%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user->user_email)), $url)))
|
189 |
+
if(($url = preg_replace('/%%user_login%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user->user_login)), $url)))
|
190 |
+
if(($url = preg_replace('/%%user_ip%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user_reg_ip)), $url)))
|
191 |
+
if(($url = preg_replace('/%%user_id%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user_id)), $url)))
|
192 |
{
|
193 |
+
if(is_array($fields) && !empty($fields))
|
194 |
+
foreach($fields as $var => $val /* Custom Registration/Profile Fields. */)
|
195 |
+
if(!($url = preg_replace('/%%'.preg_quote($var, '/').'%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode(maybe_serialize($val))), $url)))
|
196 |
+
break;
|
197 |
+
|
198 |
+
if(($url = trim(preg_replace('/%%(.+?)%%/i', '', $url))))
|
199 |
+
c_ws_plugin__s2member_utils_urls::remote($url);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
200 |
}
|
201 |
+
}
|
202 |
+
if($GLOBALS['WS_PLUGIN__']['s2member']['o']['eot_del_notification_recipients'] && is_array($cv = preg_split('/\|/', $custom)))
|
203 |
+
{
|
204 |
+
$email_configs_were_on = c_ws_plugin__s2member_email_configs::email_config_status();
|
205 |
+
c_ws_plugin__s2member_email_configs::email_config_release();
|
206 |
+
|
207 |
+
$msg = $sbj = '(s2Member / API Notification Email) - EOT/Deletion';
|
208 |
+
$msg .= "\n\n"; // Spacing in the message body.
|
209 |
+
|
210 |
+
$msg .= 'eot_del_type: %%eot_del_type%%'."\n";
|
211 |
+
$msg .= 'subscr_id: %%subscr_id%%'."\n";
|
212 |
+
$msg .= 'subscr_baid: %%subscr_baid%%'."\n";
|
213 |
+
$msg .= 'subscr_cid: %%subscr_cid%%'."\n";
|
214 |
+
$msg .= 'user_first_name: %%user_first_name%%'."\n";
|
215 |
+
$msg .= 'user_last_name: %%user_last_name%%'."\n";
|
216 |
+
$msg .= 'user_full_name: %%user_full_name%%'."\n";
|
217 |
+
$msg .= 'user_email: %%user_email%%'."\n";
|
218 |
+
$msg .= 'user_login: %%user_login%%'."\n";
|
219 |
+
$msg .= 'user_ip: %%user_ip%%'."\n";
|
220 |
+
$msg .= 'user_id: %%user_id%%'."\n";
|
221 |
+
|
222 |
+
if(is_array($fields) && !empty($fields))
|
223 |
+
foreach($fields as $var => $val)
|
224 |
+
$msg .= $var.': %%'.$var.'%%'."\n";
|
225 |
+
|
226 |
+
$msg .= 'cv0: %%cv0%%'."\n";
|
227 |
+
$msg .= 'cv1: %%cv1%%'."\n";
|
228 |
+
$msg .= 'cv2: %%cv2%%'."\n";
|
229 |
+
$msg .= 'cv3: %%cv3%%'."\n";
|
230 |
+
$msg .= 'cv4: %%cv4%%'."\n";
|
231 |
+
$msg .= 'cv5: %%cv5%%'."\n";
|
232 |
+
$msg .= 'cv6: %%cv6%%'."\n";
|
233 |
+
$msg .= 'cv7: %%cv7%%'."\n";
|
234 |
+
$msg .= 'cv8: %%cv8%%'."\n";
|
235 |
+
$msg .= 'cv9: %%cv9%%';
|
236 |
+
|
237 |
+
if(($msg = preg_replace('/%%cv([0-9]+)%%/ei', 'trim(@$cv[$1])', $msg)) && ($msg = preg_replace('/%%eot_del_type%%/i', c_ws_plugin__s2member_utils_strings::esc_refs('auto-eot-cancellation-expiration-demotion'), $msg)) && ($msg = preg_replace('/%%subscr_id%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($subscr_id), $msg)))
|
238 |
+
if(($msg = preg_replace('/%%subscr_baid%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($subscr_baid), $msg)) && ($msg = preg_replace('/%%subscr_cid%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($subscr_cid), $msg)))
|
239 |
+
if(($msg = preg_replace('/%%user_first_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user->first_name), $msg)) && ($msg = preg_replace('/%%user_last_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user->last_name), $msg)))
|
240 |
+
if(($msg = preg_replace('/%%user_full_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(trim($user->first_name.' '.$user->last_name)), $msg)))
|
241 |
+
if(($msg = preg_replace('/%%user_email%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user->user_email), $msg)))
|
242 |
+
if(($msg = preg_replace('/%%user_login%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user->user_login), $msg)))
|
243 |
+
if(($msg = preg_replace('/%%user_ip%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user_reg_ip), $msg)))
|
244 |
+
if(($msg = preg_replace('/%%user_id%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user_id), $msg)))
|
245 |
{
|
246 |
+
if(is_array($fields) && !empty($fields))
|
247 |
+
foreach($fields as $var => $val /* Custom Registration/Profile Fields. */)
|
248 |
+
if(!($msg = preg_replace('/%%'.preg_quote($var, '/').'%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(maybe_serialize($val)), $msg)))
|
249 |
+
break;
|
250 |
+
|
251 |
+
if($sbj && ($msg = trim(preg_replace('/%%(.+?)%%/i', '', $msg))) /* Still have a ``$sbj`` and a ``$msg``? */)
|
252 |
+
|
253 |
+
foreach(c_ws_plugin__s2member_utils_strings::parse_emails($GLOBALS['WS_PLUGIN__']['s2member']['o']['eot_del_notification_recipients']) as $recipient)
|
254 |
+
wp_mail($recipient, apply_filters('ws_plugin__s2member_eot_del_notification_email_sbj', $sbj, get_defined_vars()), apply_filters('ws_plugin__s2member_eot_del_notification_email_msg', $msg, get_defined_vars()), 'Content-Type: text/plain; charset=UTF-8');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
255 |
}
|
256 |
+
if($email_configs_were_on) c_ws_plugin__s2member_email_configs::email_config();
|
257 |
+
}
|
258 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
259 |
+
do_action('ws_plugin__s2member_during_auto_eot_system_during_demote', get_defined_vars());
|
260 |
+
unset($__refs, $__v);
|
261 |
+
}
|
262 |
+
else if($GLOBALS['WS_PLUGIN__']['s2member']['o']['membership_eot_behavior'] === 'delete')
|
263 |
+
{
|
264 |
+
$eot_del_type = $GLOBALS['ws_plugin__s2member_eot_del_type'] = 'auto-eot-cancellation-expiration-deletion';
|
265 |
+
|
266 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
267 |
+
do_action('ws_plugin__s2member_during_auto_eot_system_during_before_delete', get_defined_vars());
|
268 |
+
do_action('ws_plugin__s2member_during_collective_eots', $user_id, get_defined_vars(), $eot_del_type, 'removal-deletion');
|
269 |
+
unset($__refs, $__v);
|
270 |
+
|
271 |
+
if(is_multisite()/* Multisite does NOT actually delete; ONLY removes. */)
|
272 |
+
{
|
273 |
+
remove_user_from_blog($user_id, $current_blog->blog_id);
|
274 |
+
// This will automatically trigger `eot_del_notification_urls`.
|
275 |
+
c_ws_plugin__s2member_user_deletions::handle_ms_user_deletions($user_id, $current_blog->blog_id, 's2says');
|
276 |
}
|
277 |
+
else // Otherwise, we can actually delete them.
|
278 |
+
// This will automatically trigger `eot_del_notification_urls`
|
279 |
+
wp_delete_user($user_id /* `c_ws_plugin__s2member_user_deletions::handle_user_deletions()` */);
|
280 |
+
|
281 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
282 |
+
do_action('ws_plugin__s2member_during_auto_eot_system_during_delete', get_defined_vars());
|
283 |
+
unset($__refs, $__v);
|
284 |
+
}
|
285 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
286 |
+
do_action('ws_plugin__s2member_during_auto_eot_system', get_defined_vars());
|
287 |
+
unset($__refs, $__v);
|
288 |
}
|
289 |
+
}
|
|
|
|
|
|
|
|
|
290 |
}
|
291 |
+
}
|
292 |
}
|
293 |
+
c_ws_plugin__s2member_utils_logs::cleanup_expired_s2m_transients();
|
294 |
+
|
295 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
296 |
+
do_action('ws_plugin__s2member_after_auto_eot_system', get_defined_vars());
|
297 |
+
unset($__refs, $__v);
|
298 |
+
}
|
299 |
+
}
|
300 |
+
}
|
includes/classes/aweber-e.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @since 141004
|
15 |
* @package s2Member\List_Servers
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_aweber_e'))
|
14 |
* @since 141004
|
15 |
* @package s2Member\List_Servers
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_aweber_e'))
|
includes/classes/aweber.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @since 141004
|
15 |
* @package s2Member\List_Servers
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_aweber'))
|
14 |
* @since 141004
|
15 |
* @package s2Member\List_Servers
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_aweber'))
|
includes/classes/brute-force.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Brute_Force
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_brute_force"))
|
14 |
* @package s2Member\Brute_Force
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_brute_force"))
|
includes/classes/cache.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Cache
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_cache"))
|
14 |
* @package s2Member\Cache
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_cache"))
|
includes/classes/catgs-sp.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Categories
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_catgs_sp'))
|
14 |
* @package s2Member\Categories
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_catgs_sp'))
|
includes/classes/catgs.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Categories
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_catgs'))
|
14 |
* @package s2Member\Categories
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_catgs'))
|
includes/classes/check-activation.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Installation
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_check_activation"))
|
14 |
* @package s2Member\Installation
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_check_activation"))
|
includes/classes/constants.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\API_Constants
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_constants'))
|
14 |
* @package s2Member\API_Constants
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_constants'))
|
includes/classes/cron-jobs-in.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Cron_Jobs
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_cron_jobs_in"))
|
14 |
* @package s2Member\Cron_Jobs
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_cron_jobs_in"))
|
includes/classes/cron-jobs.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Cron_Jobs
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_cron_jobs"))
|
14 |
* @package s2Member\Cron_Jobs
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_cron_jobs"))
|
includes/classes/css-js-in.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\CSS_JS
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_css_js_in"))
|
14 |
* @package s2Member\CSS_JS
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_css_js_in"))
|
includes/classes/css-js-themes.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\CSS_JS
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_css_js_themes'))
|
14 |
* @package s2Member\CSS_JS
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_css_js_themes'))
|
includes/classes/css-js.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\CSS_JS
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_css_js"))
|
14 |
* @package s2Member\CSS_JS
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_css_js"))
|
includes/classes/custom-reg-fields-4bp.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Custom_Reg_Fields
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_custom_reg_fields_4bp'))
|
14 |
* @package s2Member\Custom_Reg_Fields
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_custom_reg_fields_4bp'))
|
includes/classes/custom-reg-fields.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Custom_Reg_Fields
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_custom_reg_fields"))
|
14 |
* @package s2Member\Custom_Reg_Fields
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_custom_reg_fields"))
|
includes/classes/database.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Database
|
15 |
* @since 130625
|
16 |
*/
|
17 |
-
if
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_database"))
|
14 |
* @package s2Member\Database
|
15 |
* @since 130625
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_database"))
|
includes/classes/email-configs.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Email_Configs
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_email_configs"))
|
14 |
* @package s2Member\Email_Configs
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_email_configs"))
|
includes/classes/files-in.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Files
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_files_in'))
|
@@ -310,9 +310,9 @@ if(!class_exists('c_ws_plugin__s2member_files_in'))
|
|
310 |
else if($using_amazon_storage && $using_amazon_s3_storage && ($serving || ($creating && $url_to_storage_source)))
|
311 |
{
|
312 |
if($serving) // We only need this section when/if we're actually serving.
|
313 |
-
wp_redirect(c_ws_plugin__s2member_files_in::
|
314 |
|
315 |
-
return apply_filters('ws_plugin__s2member_file_download_access_url', c_ws_plugin__s2member_files_in::
|
316 |
}
|
317 |
else if($creating && $rewriting) // Creating a rewrite URL, pointing to local storage.
|
318 |
{ // Note: we don't URL encode unreserved chars. Improves media player compatibility.
|
@@ -538,7 +538,7 @@ if(!class_exists('c_ws_plugin__s2member_files_in'))
|
|
538 |
|
539 |
$extension = strtolower(substr($config['file_download'], strrpos($config['file_download'], '.') + 1));
|
540 |
$streaming = (isset($config['file_stream'])) ? filter_var($config['file_stream'], FILTER_VALIDATE_BOOLEAN) : ((in_array($extension, preg_split('/['."\r\n\t".'\s;,]+/', $GLOBALS['WS_PLUGIN__']['s2member']['o']['file_download_stream_extensions']))) ? TRUE : FALSE);
|
541 |
-
$ssl = (isset($config['file_ssl'])) ? filter_var($config['file_ssl'], FILTER_VALIDATE_BOOLEAN) : (
|
542 |
|
543 |
if($get_streamer_array && $streaming && ($cfx = '/cfx/st') && ($cfx_pos = strpos($url_, $cfx)) !== FALSE && ($streamer = substr($url_, 0, $cfx_pos + strlen($cfx))) && ($url = c_ws_plugin__s2member_files_in::check_file_download_access(array_merge($config, array('file_stream' => FALSE, 'check_user' => FALSE, 'count_against_user' => FALSE)))))
|
544 |
$return = array('streamer' => $streamer, 'prefix' => $extension.':', 'file' => preg_replace('/^'.preg_quote($streamer, '/').'\//', '', $url_), 'url' => preg_replace('/^.+?\:/', (($ssl) ? 'https:' : 'http:'), $url));
|
@@ -573,7 +573,7 @@ if(!class_exists('c_ws_plugin__s2member_files_in'))
|
|
573 |
do_action('ws_plugin__s2member_before_check_file_remote_authorization', get_defined_vars());
|
574 |
unset($__refs, $__v); // Housekeeping.
|
575 |
|
576 |
-
$_g = c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep(
|
577 |
|
578 |
if(!is_object($user) && isset($_g['s2member_file_remote']) && filter_var($_g['s2member_file_remote'], FILTER_VALIDATE_BOOLEAN))
|
579 |
{
|
@@ -653,6 +653,114 @@ if(!class_exists('c_ws_plugin__s2member_files_in'))
|
|
653 |
return c_ws_plugin__s2member_utils_strings::hmac_sha1_sign((string)$string, $s3c['secret_key']);
|
654 |
}
|
655 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
656 |
/**
|
657 |
* Creates an Amazon S3 HMAC-SHA1 signature URL.
|
658 |
*
|
@@ -689,6 +797,51 @@ if(!class_exists('c_ws_plugin__s2member_files_in'))
|
|
689 |
return add_query_arg(c_ws_plugin__s2member_utils_strings::urldecode_ur_chars_deep(urlencode_deep(array('AWSAccessKeyId' => $s3c['access_key'], 'Expires' => $s3c['expires'], 'Signature' => $s3_signature))), $s3_url);
|
690 |
}
|
691 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
692 |
/**
|
693 |
* Auto-configures an Amazon S3 Bucket's ACLs.
|
694 |
*
|
@@ -708,35 +861,41 @@ if(!class_exists('c_ws_plugin__s2member_files_in'))
|
|
708 |
|
709 |
if(!empty($s3c) && $s3c['bucket'] && $s3c['access_key'] && $s3c['secret_key']) // Must have Amazon S3 Bucket/Keys.
|
710 |
{
|
711 |
-
$
|
712 |
-
$
|
713 |
-
$
|
714 |
-
$
|
715 |
-
$
|
|
|
|
|
716 |
|
717 |
if(($s3_response = c_ws_plugin__s2member_utils_urls::remote('https://'.$s3_domain.$s3_location, FALSE, array_merge($s3_args, array('timeout' => 20)), 'array')) && $s3_response['code'] === 200)
|
718 |
{
|
719 |
if(preg_match('/\<Owner\>(.+?)\<\/Owner\>/is', $s3_response['body'], $s3_owner_tag) && preg_match('/\<ID\>(.+?)\<\/ID\>/is', $s3_owner_tag[1], $s3_owner_id_tag) && (preg_match('/\<DisplayName\>(.*?)\<\/DisplayName\>/is', $s3_owner_tag[1], $s3_owner_display_name_tag) || ($s3_owner_display_name_tag = array('-', 'Owner'))))
|
720 |
{
|
721 |
-
$s3_owner
|
722 |
-
$s3_acls_xml
|
723 |
-
$
|
724 |
-
$
|
|
|
725 |
|
726 |
if(($s3_response = c_ws_plugin__s2member_utils_urls::remote('https://'.$s3_domain.$s3_location, FALSE, array_merge($s3_args, array('timeout' => 20)), 'array')) && $s3_response['code'] === 200)
|
727 |
{
|
728 |
-
$
|
729 |
-
|
730 |
-
$
|
731 |
-
$
|
732 |
-
$
|
|
|
|
|
733 |
|
734 |
if(!$cfc['distros_s3_access_id'] || (($s3_response = c_ws_plugin__s2member_utils_urls::remote('https://'.$s3_domain.$s3_location, FALSE, array_merge($s3_args, array('timeout' => 20)), 'array')) && ($s3_response['code'] === 200 || $s3_response['code'] === 204)))
|
735 |
{
|
736 |
-
$s3_location
|
737 |
-
$s3_policy_xml
|
738 |
-
$
|
739 |
-
$
|
|
|
740 |
|
741 |
if(($s3_response = c_ws_plugin__s2member_utils_urls::remote('https://'.$s3_domain.$s3_location, FALSE, array_merge($s3_args, array('timeout' => 20)), 'array')) && $s3_response['code'] === 200)
|
742 |
return array('success' => TRUE, 'code' => NULL, 'message' => NULL); // Successfully configured Amazon S3 Bucket ACLs and Policy.
|
14 |
* @package s2Member\Files
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_files_in'))
|
310 |
else if($using_amazon_storage && $using_amazon_s3_storage && ($serving || ($creating && $url_to_storage_source)))
|
311 |
{
|
312 |
if($serving) // We only need this section when/if we're actually serving.
|
313 |
+
wp_redirect(c_ws_plugin__s2member_files_in::amazon_s34_url($req['file_download'], $stream, $inline, $ssl, $basename, $mimetype)).exit();
|
314 |
|
315 |
+
return apply_filters('ws_plugin__s2member_file_download_access_url', c_ws_plugin__s2member_files_in::amazon_s34_url($req['file_download'], $stream, $inline, $ssl, $basename, $mimetype), get_defined_vars());
|
316 |
}
|
317 |
else if($creating && $rewriting) // Creating a rewrite URL, pointing to local storage.
|
318 |
{ // Note: we don't URL encode unreserved chars. Improves media player compatibility.
|
538 |
|
539 |
$extension = strtolower(substr($config['file_download'], strrpos($config['file_download'], '.') + 1));
|
540 |
$streaming = (isset($config['file_stream'])) ? filter_var($config['file_stream'], FILTER_VALIDATE_BOOLEAN) : ((in_array($extension, preg_split('/['."\r\n\t".'\s;,]+/', $GLOBALS['WS_PLUGIN__']['s2member']['o']['file_download_stream_extensions']))) ? TRUE : FALSE);
|
541 |
+
$ssl = (isset($config['file_ssl'])) ? filter_var($config['file_ssl'], FILTER_VALIDATE_BOOLEAN) : (is_ssl() ? TRUE : FALSE);
|
542 |
|
543 |
if($get_streamer_array && $streaming && ($cfx = '/cfx/st') && ($cfx_pos = strpos($url_, $cfx)) !== FALSE && ($streamer = substr($url_, 0, $cfx_pos + strlen($cfx))) && ($url = c_ws_plugin__s2member_files_in::check_file_download_access(array_merge($config, array('file_stream' => FALSE, 'check_user' => FALSE, 'count_against_user' => FALSE)))))
|
544 |
$return = array('streamer' => $streamer, 'prefix' => $extension.':', 'file' => preg_replace('/^'.preg_quote($streamer, '/').'\//', '', $url_), 'url' => preg_replace('/^.+?\:/', (($ssl) ? 'https:' : 'http:'), $url));
|
573 |
do_action('ws_plugin__s2member_before_check_file_remote_authorization', get_defined_vars());
|
574 |
unset($__refs, $__v); // Housekeeping.
|
575 |
|
576 |
+
$_g = c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep(!empty($_GET) ? $_GET : array()));
|
577 |
|
578 |
if(!is_object($user) && isset($_g['s2member_file_remote']) && filter_var($_g['s2member_file_remote'], FILTER_VALIDATE_BOOLEAN))
|
579 |
{
|
653 |
return c_ws_plugin__s2member_utils_strings::hmac_sha1_sign((string)$string, $s3c['secret_key']);
|
654 |
}
|
655 |
|
656 |
+
/**
|
657 |
+
* Creates an Amazon S3 AWS4-HMAC-SHA256 signature.
|
658 |
+
*
|
659 |
+
* @package s2Member\Files
|
660 |
+
* @since 150108
|
661 |
+
*
|
662 |
+
* @param string $string Input string/data, to be signed by this routine.
|
663 |
+
*
|
664 |
+
* @return string An AWS4-HMAC-SHA256 signature for Amazon S3.
|
665 |
+
*/
|
666 |
+
public static function amazon_s34_sign($string = '')
|
667 |
+
{
|
668 |
+
$s3c = array(); // Initialize config. keys.
|
669 |
+
foreach($GLOBALS['WS_PLUGIN__']['s2member']['o'] as $option => $option_value)
|
670 |
+
if(preg_match('/^amazon_s3_files_/', $option) && ($option = preg_replace('/^amazon_s3_files_/', '', $option)))
|
671 |
+
$s3c[$option] = $option_value;
|
672 |
+
|
673 |
+
$s3_date_key = c_ws_plugin__s2member_utils_strings::hmac_sha256_sign(gmdate('Ymd'), 'AWS4'.$s3c['secret_key'], TRUE);
|
674 |
+
$s3_date_region_key = c_ws_plugin__s2member_utils_strings::hmac_sha256_sign($s3c['bucket_region'], $s3_date_key, TRUE);
|
675 |
+
$s3_date_region_service_key = c_ws_plugin__s2member_utils_strings::hmac_sha256_sign('s3', $s3_date_region_key, TRUE);
|
676 |
+
$s3_signing_key = c_ws_plugin__s2member_utils_strings::hmac_sha256_sign('aws4_request', $s3_date_region_service_key, TRUE);
|
677 |
+
|
678 |
+
return c_ws_plugin__s2member_utils_strings::hmac_sha256_sign((string)$string, $s3_signing_key);
|
679 |
+
}
|
680 |
+
|
681 |
+
/**
|
682 |
+
* Creates an Amazon S3 AWS4-HMAC-SHA256 signature/authorization header.
|
683 |
+
*
|
684 |
+
* @package s2Member\Files
|
685 |
+
* @since 150108
|
686 |
+
*
|
687 |
+
* @param string $s3_date The date header; e.g. `YYYYMMDD'T'HHMMSS'Z'`.
|
688 |
+
* @param string $s3_domain The API endpoint domain; e.g. `[bucket].s3.amazonaws.com`.
|
689 |
+
* @param string $s3_location The API endpoint URI; e.g. `/?acl`.
|
690 |
+
* @param string $s3_method The request method; e.g. `GET`, `PUT`, `POST`, etc.
|
691 |
+
* @param array $s3_headers An associative array of all headers.
|
692 |
+
* @param string $s3_body Any input data sent with the request.
|
693 |
+
* @param boolean $sig_only Return signature only?
|
694 |
+
*
|
695 |
+
* @return string An AWS4-HMAC-SHA256 signature/authorization header for Amazon S3.
|
696 |
+
*/
|
697 |
+
public static function amazon_s34_authorization($s3_date = '',
|
698 |
+
$s3_domain = 's3.amazonaws.com',
|
699 |
+
$s3_location = '/', $s3_method = 'GET',
|
700 |
+
$s3_headers = array(), $s3_body = '', $sig_only = FALSE)
|
701 |
+
{
|
702 |
+
$s3_date = trim((string)$s3_date);
|
703 |
+
$s3_domain = trim(strtolower((string)$s3_domain));
|
704 |
+
$s3_location = trim((string)$s3_location);
|
705 |
+
$s3_method = trim(strtoupper((string)$s3_method));
|
706 |
+
$s3_headers = (array)$s3_headers;
|
707 |
+
$s3_body = trim((string)$s3_body);
|
708 |
+
|
709 |
+
$s3c = array(); // Initialize config. keys.
|
710 |
+
foreach($GLOBALS['WS_PLUGIN__']['s2member']['o'] as $option => $option_value)
|
711 |
+
if(preg_match('/^amazon_s3_files_/', $option) && ($option = preg_replace('/^amazon_s3_files_/', '', $option)))
|
712 |
+
$s3c[$option] = $option_value;
|
713 |
+
|
714 |
+
$s3_iso8601_date = gmdate('Ymd\THis\Z');
|
715 |
+
$s3_location_parts = parse_url($s3_location);
|
716 |
+
$s3_canonical_path = !empty($s3_location_parts['path']) ? '/'.ltrim($s3_location_parts['path'], '/') : '/';
|
717 |
+
$s3_scope = gmdate('Ymd').'/'.$s3c['bucket_region'].'/s3/aws4_request';
|
718 |
+
|
719 |
+
$s3_canonical_query = ''; // Initialize.
|
720 |
+
wp_parse_str((string)@$s3_location_parts['query'], $query_args);
|
721 |
+
ksort($query_args, SORT_STRING);
|
722 |
+
|
723 |
+
foreach($query_args as $_key => $_value)
|
724 |
+
$s3_canonical_query .= '&'.c_ws_plugin__s2member_utils_strings::urldecode_ur_chars_deep(rawurlencode($_key)).
|
725 |
+
'='.c_ws_plugin__s2member_utils_strings::urldecode_ur_chars_deep(rawurlencode($_value));
|
726 |
+
$s3_canonical_query = ltrim($s3_canonical_query, '&');
|
727 |
+
unset($_key, $_value); // Housekeeping.
|
728 |
+
|
729 |
+
$s3_canonical_headers = '';
|
730 |
+
$s3_canonical_header_keys = array();
|
731 |
+
ksort($s3_headers, SORT_STRING);
|
732 |
+
|
733 |
+
foreach($s3_headers as $_key => $_value)
|
734 |
+
if(is_string($_key) && ($_key = strtolower($_key)))
|
735 |
+
if(in_array($_key, array('host', 'content-type'), TRUE) || stripos($_key, 'X-Amz-') === 0)
|
736 |
+
{
|
737 |
+
$s3_canonical_headers .= strtolower($_key).':'.trim($_value)."\n";
|
738 |
+
$s3_canonical_header_keys[] = strtolower($_key);
|
739 |
+
}
|
740 |
+
unset($_key, $_value); // Housekeeping.
|
741 |
+
|
742 |
+
$s3_canonicial_request = $s3_method."\n".
|
743 |
+
$s3_canonical_path."\n".
|
744 |
+
$s3_canonical_query."\n".
|
745 |
+
$s3_canonical_headers."\n".
|
746 |
+
implode(';', $s3_canonical_header_keys)."\n".
|
747 |
+
($s3_body === 'UNSIGNED-PAYLOAD' ? $s3_body : hash('sha256', $s3_body));
|
748 |
+
$s3_string_to_sign = 'AWS4-HMAC-SHA256'."\n".
|
749 |
+
$s3_date."\n".
|
750 |
+
$s3_scope."\n".
|
751 |
+
hash('sha256', $s3_canonicial_request);
|
752 |
+
$s3_signature = self::amazon_s34_sign($s3_string_to_sign);
|
753 |
+
|
754 |
+
// header('Content-Type: text/plain; charset=UTF-8');
|
755 |
+
// echo $s3_canonicial_request."\n\n".$s3_string_to_sign."\n\n"; exit;
|
756 |
+
|
757 |
+
$s3_authorization_header_signature = 'AWS4-HMAC-SHA256 Credential='.$s3c['access_key'].'/'.$s3_scope.','.
|
758 |
+
'SignedHeaders='.implode(';', $s3_canonical_header_keys).','.
|
759 |
+
'Signature='.$s3_signature;
|
760 |
+
|
761 |
+
return $sig_only ? $s3_signature : $s3_authorization_header_signature;
|
762 |
+
}
|
763 |
+
|
764 |
/**
|
765 |
* Creates an Amazon S3 HMAC-SHA1 signature URL.
|
766 |
*
|
797 |
return add_query_arg(c_ws_plugin__s2member_utils_strings::urldecode_ur_chars_deep(urlencode_deep(array('AWSAccessKeyId' => $s3c['access_key'], 'Expires' => $s3c['expires'], 'Signature' => $s3_signature))), $s3_url);
|
798 |
}
|
799 |
|
800 |
+
/**
|
801 |
+
* Creates an Amazon S3 AWS4-HMAC-SHA256 signature URL.
|
802 |
+
*
|
803 |
+
* @package s2Member\Files
|
804 |
+
* @since 150122
|
805 |
+
*
|
806 |
+
* @param string $file Input file path, to be signed by this routine.
|
807 |
+
* @param bool $stream Is this resource file to be served as streaming media?
|
808 |
+
* @param bool $inline Is this resource file to be served inline, or no?
|
809 |
+
* @param bool $ssl Is this resource file to be served via SSL, or no?
|
810 |
+
* @param string $basename The absolute basename of the resource file.
|
811 |
+
* @param string $mimetype The MIME content-type of the resource file.
|
812 |
+
*
|
813 |
+
* @return string An AWS4-HMAC-SHA256 signature URL for Amazon S3.
|
814 |
+
*/
|
815 |
+
public static function amazon_s34_url($file = '', $stream = FALSE, $inline = FALSE, $ssl = FALSE, $basename = '', $mimetype = '')
|
816 |
+
{
|
817 |
+
$file = trim((string)$file, '/'); // Trim / force string.
|
818 |
+
$url_e_file = c_ws_plugin__s2member_utils_strings::urldecode_ur_chars_deep(urlencode($file));
|
819 |
+
$url_e_file = str_ireplace('%2F', '/', $url_e_file);
|
820 |
+
|
821 |
+
$s3c = array(); // Initialize config. keys.
|
822 |
+
foreach($GLOBALS['WS_PLUGIN__']['s2member']['o'] as $option => $option_value)
|
823 |
+
if(preg_match('/^amazon_s3_files_/', $option) && ($option = preg_replace('/^amazon_s3_files_/', '', $option)))
|
824 |
+
$s3c[$option] = $option_value;
|
825 |
+
|
826 |
+
if(!$s3c['bucket_region']) // No region configured; not possible.
|
827 |
+
return self::amazon_s3_url($file, $stream, $inline, $ssl, $basename, $mimetype);
|
828 |
+
|
829 |
+
$s3_date_ymd = date('Ymd');
|
830 |
+
$s3_iso8601_date = gmdate('Ymd\THis\Z');
|
831 |
+
$s3_date = gmdate('D, d M Y H:i:s').' GMT';
|
832 |
+
$s3_algo = 'AWS4-HMAC-SHA256'; // AWS v4 authentication.
|
833 |
+
$s3_credential = $s3c['access_key'].'/'.$s3_date_ymd.'/'.$s3c['bucket_region'].'/s3/aws4_request';
|
834 |
+
$s3_expires = strtotime('+'.apply_filters('ws_plugin__s2member_amazon_s3_file_expires_time', '24 hours', get_defined_vars())) - time();
|
835 |
+
$s3_domain = strtolower($s3c['bucket']) !== $s3c['bucket'] ? 's3.amazonaws.com' : $s3c['bucket'].'.s3.amazonaws.com';
|
836 |
+
|
837 |
+
$s3_args = array('X-Amz-Algorithm' => $s3_algo, 'X-Amz-Credential' => $s3_credential, 'X-Amz-Date' => $s3_iso8601_date, 'X-Amz-Expires' => $s3_expires, 'X-Amz-SignedHeaders' => 'host');
|
838 |
+
$s3_location = add_query_arg(c_ws_plugin__s2member_utils_strings::urldecode_ur_chars_deep(urlencode_deep(array_merge($s3_args, array('response-cache-control' => 'no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0', 'response-content-disposition' => ((bool)$inline ? 'inline' : 'attachment').'; filename="'.(string)$basename.'"', 'response-content-type' => (string)$mimetype, 'response-expires' => gmdate('D, d M Y H:i:s', strtotime('-1 week')).' GMT')))), '/'.$url_e_file);
|
839 |
+
$s3_url = strtolower($s3c['bucket']) !== $s3c['bucket'] ? 'http'.($ssl ? 's' : '').'://s3.amazonaws.com/'.$s3c['bucket'].$s3_location : 'http'.($ssl ? 's' : '').'://'.$s3c['bucket'].'.s3.amazonaws.com'.$s3_location;
|
840 |
+
$s3_sig = self::amazon_s34_authorization($s3_iso8601_date, $s3_domain, $s3_location, 'GET', array('Host' => $s3_domain), 'UNSIGNED-PAYLOAD', TRUE);
|
841 |
+
|
842 |
+
return add_query_arg(c_ws_plugin__s2member_utils_strings::urldecode_ur_chars_deep(urlencode_deep(array('X-Amz-Signature' => $s3_sig))), $s3_url);
|
843 |
+
}
|
844 |
+
|
845 |
/**
|
846 |
* Auto-configures an Amazon S3 Bucket's ACLs.
|
847 |
*
|
861 |
|
862 |
if(!empty($s3c) && $s3c['bucket'] && $s3c['access_key'] && $s3c['secret_key']) // Must have Amazon S3 Bucket/Keys.
|
863 |
{
|
864 |
+
$s3_iso8601_date = gmdate('Ymd\THis\Z');
|
865 |
+
$s3_date = gmdate('D, d M Y H:i:s').' GMT';
|
866 |
+
$s3_location = strtolower($s3c['bucket']) !== $s3c['bucket'] ? '/'.$s3c['bucket'].'/?acl' : '/?acl';
|
867 |
+
$s3_domain = strtolower($s3c['bucket']) !== $s3c['bucket'] ? 's3.amazonaws.com' : $s3c['bucket'].'.s3.amazonaws.com';
|
868 |
+
$s3_headers = array('Host' => $s3_domain, 'Date' => $s3_date, 'x-amz-date' => $s3_iso8601_date, 'x-amz-content-sha256' => hash('sha256', ''));
|
869 |
+
$s3_headers['Authorization'] = self::amazon_s34_authorization($s3_iso8601_date, $s3_domain, $s3_location, 'GET', $s3_headers, '');
|
870 |
+
$s3_args = array('method' => 'GET', 'redirection' => 5, 'headers' => $s3_headers);
|
871 |
|
872 |
if(($s3_response = c_ws_plugin__s2member_utils_urls::remote('https://'.$s3_domain.$s3_location, FALSE, array_merge($s3_args, array('timeout' => 20)), 'array')) && $s3_response['code'] === 200)
|
873 |
{
|
874 |
if(preg_match('/\<Owner\>(.+?)\<\/Owner\>/is', $s3_response['body'], $s3_owner_tag) && preg_match('/\<ID\>(.+?)\<\/ID\>/is', $s3_owner_tag[1], $s3_owner_id_tag) && (preg_match('/\<DisplayName\>(.*?)\<\/DisplayName\>/is', $s3_owner_tag[1], $s3_owner_display_name_tag) || ($s3_owner_display_name_tag = array('-', 'Owner'))))
|
875 |
{
|
876 |
+
$s3_owner = array('access_id' => trim($s3_owner_id_tag[1]), 'display_name' => trim($s3_owner_display_name_tag[1]));
|
877 |
+
$s3_acls_xml = '<AccessControlPolicy><Owner><ID>'.esc_html($s3_owner['access_id']).'</ID><DisplayName>'.esc_html($s3_owner['display_name']).'</DisplayName></Owner><AccessControlList><Grant><Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"><ID>'.esc_html($s3_owner['access_id']).'</ID><DisplayName>'.esc_html($s3_owner['display_name']).'</DisplayName></Grantee><Permission>FULL_CONTROL</Permission></Grant>'.(($cfc['distros_s3_access_id']) ? '<Grant><Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"><ID>'.esc_html($cfc['distros_s3_access_id']).'</ID><DisplayName>s2Member/CloudFront</DisplayName></Grantee><Permission>READ</Permission></Grant>' : '').'</AccessControlList></AccessControlPolicy>';
|
878 |
+
$s3_headers = array('Host' => $s3_domain, 'Date' => $s3_date, 'x-amz-date' => $s3_iso8601_date, 'Content-Type' => 'application/xml', 'x-amz-content-sha256' => hash('sha256', $s3_acls_xml));
|
879 |
+
$s3_headers['Authorization'] = self::amazon_s34_authorization($s3_iso8601_date, $s3_domain, $s3_location, 'PUT', $s3_headers, $s3_acls_xml);
|
880 |
+
$s3_args = array('method' => 'PUT', 'redirection' => 5, 'body' => $s3_acls_xml, 'headers' => $s3_headers);
|
881 |
|
882 |
if(($s3_response = c_ws_plugin__s2member_utils_urls::remote('https://'.$s3_domain.$s3_location, FALSE, array_merge($s3_args, array('timeout' => 20)), 'array')) && $s3_response['code'] === 200)
|
883 |
{
|
884 |
+
$s3_policy_id = md5(uniqid('s2Member/CloudFront:', TRUE));
|
885 |
+
$s3_policy_sid = md5(uniqid('s2Member/CloudFront:', TRUE));
|
886 |
+
$s3_location = strtolower($s3c['bucket']) !== $s3c['bucket'] ? '/'.$s3c['bucket'].'/?policy' : '/?policy';
|
887 |
+
$s3_policy_json = '{"Version":"2008-10-17","Id":"'.c_ws_plugin__s2member_utils_strings::esc_dq($s3_policy_id).'","Statement":[{"Sid":"'.c_ws_plugin__s2member_utils_strings::esc_dq($s3_policy_sid).'","Effect":"Allow","Principal":{"CanonicalUser":"'.c_ws_plugin__s2member_utils_strings::esc_dq($cfc['distros_s3_access_id']).'"},"Action":"s3:GetObject","Resource":"arn:aws:s3:::'.c_ws_plugin__s2member_utils_strings::esc_dq($s3c['bucket']).'/*"}]}';
|
888 |
+
$s3_headers = array('Host' => $s3_domain, 'Date' => $s3_date, 'x-amz-date' => $s3_iso8601_date, 'Content-Type' => 'application/json', 'x-amz-content-sha256' => hash('sha256', $s3_policy_json));
|
889 |
+
$s3_headers['Authorization'] = self::amazon_s34_authorization($s3_iso8601_date, $s3_domain, $s3_location, 'PUT', $s3_headers, $s3_policy_json);
|
890 |
+
$s3_args = array('method' => 'PUT', 'redirection' => 5, 'body' => $s3_policy_json, 'headers' => $s3_headers);
|
891 |
|
892 |
if(!$cfc['distros_s3_access_id'] || (($s3_response = c_ws_plugin__s2member_utils_urls::remote('https://'.$s3_domain.$s3_location, FALSE, array_merge($s3_args, array('timeout' => 20)), 'array')) && ($s3_response['code'] === 200 || $s3_response['code'] === 204)))
|
893 |
{
|
894 |
+
$s3_location = strtolower($s3c['bucket']) !== $s3c['bucket'] ? '/'.$s3c['bucket'].'/crossdomain.xml' : '/crossdomain.xml';
|
895 |
+
$s3_policy_xml = trim(c_ws_plugin__s2member_utilities::evl(file_get_contents(dirname(dirname(__FILE__)).'/templates/cfg-files/s2-cross-xml.php')));
|
896 |
+
$s3_headers = array('Host' => $s3_domain, 'Date' => $s3_date, 'x-amz-date' => $s3_iso8601_date, 'Content-Type' => 'text/xml', 'X-Amz-Acl' => 'public-read', 'x-amz-content-sha256' => hash('sha256', $s3_policy_xml));
|
897 |
+
$s3_headers['Authorization'] = self::amazon_s34_authorization($s3_iso8601_date, $s3_domain, $s3_location, 'PUT', $s3_headers, $s3_policy_xml);
|
898 |
+
$s3_args = array('method' => 'PUT', 'redirection' => 5, 'body' => $s3_policy_xml, 'headers' => $s3_headers);
|
899 |
|
900 |
if(($s3_response = c_ws_plugin__s2member_utils_urls::remote('https://'.$s3_domain.$s3_location, FALSE, array_merge($s3_args, array('timeout' => 20)), 'array')) && $s3_response['code'] === 200)
|
901 |
return array('success' => TRUE, 'code' => NULL, 'message' => NULL); // Successfully configured Amazon S3 Bucket ACLs and Policy.
|
includes/classes/files.inc.php
CHANGED
@@ -1,377 +1,395 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* File Download routines for s2Member.
|
4 |
-
*
|
5 |
-
* Copyright: © 2009-2011
|
6 |
-
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
|
7 |
-
* (coded in the USA)
|
8 |
-
*
|
9 |
-
* Released under the terms of the GNU General Public License.
|
10 |
-
* You should have received a copy of the GNU General Public License,
|
11 |
-
* along with this software. In the main directory, see: /licensing/
|
12 |
-
* If not, see: {@link http://www.gnu.org/licenses/}.
|
13 |
-
*
|
14 |
-
* @package s2Member\Files
|
15 |
-
* @since 3.5
|
16 |
-
*/
|
17 |
-
if(
|
18 |
-
exit(
|
19 |
-
|
20 |
-
if(!class_exists(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
{
|
22 |
/**
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
{
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
* @package s2Member\Files
|
34 |
-
* @since 110524RC
|
35 |
-
*
|
36 |
-
* @attaches-to ``add_action("init");``
|
37 |
-
* @also-called-by API Function {@link s2Member\API_Functions\s2member_file_download_url()}, w/ ``$create_file_download_url`` param.
|
38 |
-
*
|
39 |
-
* @param array $create_file_download_url Optional. If this function is called directly, we can pass arguments through this array.
|
40 |
-
* Possible array elements: `file_download` *(required)*, `file_download_key`, `file_stream`, `file_inline`, `file_storage`, `file_remote`, `file_ssl`, `file_rewrite`, `file_rewrite_base`, `skip_confirmation`, `url_to_storage_source`, `count_against_user`, `check_user`.
|
41 |
-
* @return null|str If called directly with ``$create_file_download_url``, returns a string with the URL, based on configuration.
|
42 |
-
* Else, this function may exit script execution after serving a File Download.
|
43 |
-
*/
|
44 |
-
public static function check_file_download_access($create_file_download_url = FALSE)
|
45 |
{
|
46 |
-
if(
|
47 |
-
|
48 |
-
|
49 |
-
|
|
|
|
|
|
|
50 |
}
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
* @package s2Member\Files
|
55 |
-
* @since 110926
|
56 |
-
*
|
57 |
-
* @param array $config Required. This is an array of configuration options associated with permissions being checked against the current User/Member; and also the actual URL generated by this routine.
|
58 |
-
* Possible ``$config`` array elements: `file_download` *(required)*, `file_download_key`, `file_stream`, `file_inline`, `file_storage`, `file_remote`, `file_ssl`, `file_rewrite`, `file_rewrite_base`, `skip_confirmation`, `url_to_storage_source`, `count_against_user`, `check_user`.
|
59 |
-
* @param bool $get_streamer_array Optional. Defaults to `false`. If `true`, this function will return an array with the following elements: `streamer`, `file`, `url`. For further details, please review this section in your Dashboard: `s2Member -› Download Options -› JW Player & RTMP Protocol Examples`.
|
60 |
-
* @return string A File Download URL string on success; or an array on success, with elements `streamer`, `file`, `url` when/if ``$get_streamer_array`` is true; else false on any type of failure.
|
61 |
-
*
|
62 |
-
* @see s2Member\API_Functions\s2member_file_download_url()
|
63 |
-
*/
|
64 |
-
public static function create_file_download_url($config = FALSE, $get_streamer_array = FALSE)
|
65 |
-
{
|
66 |
-
return c_ws_plugin__s2member_files_in::create_file_download_url($config, $get_streamer_array);
|
67 |
-
}
|
68 |
-
/**
|
69 |
-
* Auto-configures an Amazon S3 Bucket's ACLs.
|
70 |
-
*
|
71 |
-
* @package s2Member\Files
|
72 |
-
* @since 110926
|
73 |
-
*
|
74 |
-
* @return bool|array True on success, else array on failure.
|
75 |
-
* Failure array will contain a failure `code`, and a failure `message`.
|
76 |
-
*/
|
77 |
-
public static function amazon_s3_auto_configure_acls()
|
78 |
-
{
|
79 |
-
return c_ws_plugin__s2member_files_in::amazon_s3_auto_configure_acls();
|
80 |
-
}
|
81 |
-
/**
|
82 |
-
* Auto-configures Amazon CloudFront distros.
|
83 |
-
*
|
84 |
-
* @package s2Member\Files
|
85 |
-
* @since 130209
|
86 |
-
*
|
87 |
-
* @return bool|array True on success, else array on failure.
|
88 |
-
* Failure array will contain a failure `code`, and a failure `message`.
|
89 |
-
*/
|
90 |
-
public static function amazon_cf_auto_configure_distros()
|
91 |
-
{
|
92 |
-
return c_ws_plugin__s2member_files_in::amazon_cf_auto_configure_distros();
|
93 |
-
}
|
94 |
-
/**
|
95 |
-
* Determines the max period (in days), for Download Access.
|
96 |
-
*
|
97 |
-
* @package s2Member\Files
|
98 |
-
* @since 3.5
|
99 |
-
*
|
100 |
-
* @return int Number of days, where 0 means no access to files is allowed.
|
101 |
-
* Will not return a value > `365`, because this routine also controls the age of download logs to archives.
|
102 |
-
*
|
103 |
-
* @deprecated Deprecated in v111029. This function is no longer used by s2Member.
|
104 |
-
*/
|
105 |
-
public static function max_download_period /* No longer used by s2Member. */()
|
106 |
-
{
|
107 |
-
do_action("ws_plugin__s2member_before_max_download_period", get_defined_vars());
|
108 |
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
|
|
|
|
114 |
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
128 |
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
|
|
134 |
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
* @param string $file Location of your protected file, relative to the `/s2member-files/` directory.
|
146 |
-
* In other words, just the name of the file *(i.e. `file.zip` )*.
|
147 |
-
* @param string $directive Optional. One of `ip-forever|universal|cache-compatible`.
|
148 |
-
* `ip-forever` = a Download Key that never expires, tied only to a specific file and IP address.
|
149 |
-
* `universal` and/or `cache-compatible` = a Download Key which never expires, and is NOT tied to any specific User. Use at your own risk.
|
150 |
-
* @return string A Download Key. MD5 hash, 32 characters, URL-safe.
|
151 |
-
*/
|
152 |
-
public static function file_download_key($file = FALSE, $directive = FALSE)
|
153 |
-
{
|
154 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
155 |
-
do_action("ws_plugin__s2member_before_file_download_key", get_defined_vars());
|
156 |
-
unset($__refs, $__v);
|
157 |
|
158 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
159 |
|
160 |
-
|
161 |
-
|
|
|
|
|
|
|
|
|
162 |
|
163 |
-
|
164 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
165 |
|
166 |
-
|
167 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
168 |
|
169 |
-
|
|
|
170 |
|
171 |
-
|
172 |
-
|
173 |
-
/**
|
174 |
-
* Download details on a per-User basis.
|
175 |
-
*
|
176 |
-
* @package s2Member\Files
|
177 |
-
* @since 3.5
|
178 |
-
*
|
179 |
-
* @param object $user Optional. A `WP_User` object. Defaults to the current User's object.
|
180 |
-
* @param string $not_counting_this_particular_file Optional. If you want to exclude a particular file,
|
181 |
-
* relative to the `/s2member-files/` directory, or relative to the root of your Amazon S3 Bucket *(when applicable)*.
|
182 |
-
* @param array $user_log Optional. Prevents another database connection *(i.e. the User's log does not need to be pulled again)*.
|
183 |
-
* @param array $user_arc Optional. Prevents another database connection *(i.e. the User's archive does not need to be pulled again)*.
|
184 |
-
* @return array An array with the following elements... File Downloads allowed for this User: (int)`allowed`, Download Period for this User in days: (int)`allowed_days`, Files downloaded by this User in the current Period: (int)`currently`, log of all Files downloaded in the current Period, with file names/dates: (array)`log`, archive of all Files downloaded in prior Periods, with file names/dates: (array)`archive`.
|
185 |
-
*
|
186 |
-
* @note Calculations returned by this function do NOT include File Downloads that were accessed with an Advanced File Download Key.
|
187 |
-
* @todo Make it possible for s2Member to keep a count of files downloaded with an Advanced Download Key.
|
188 |
-
*/
|
189 |
-
public static function user_downloads($user = FALSE, $not_counting_this_particular_file = FALSE, $user_log = FALSE, $user_arc = FALSE)
|
190 |
-
{
|
191 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
192 |
-
do_action("ws_plugin__s2member_before_user_downloads", get_defined_vars());
|
193 |
-
unset($__refs, $__v);
|
194 |
-
|
195 |
-
$allowed = $allowed_days = $currently = /* Initialize these to zero. */ 0;
|
196 |
-
$log = $arc = /* Initialize these to a default empty array value. */ array();
|
197 |
-
|
198 |
-
if((is_object($user) || is_object($user = (is_user_logged_in()) ? wp_get_current_user() : false)) && !empty($user->ID) && ($user_id = $user->ID))
|
199 |
-
{
|
200 |
-
for($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)
|
201 |
-
{
|
202 |
-
if /* Do they have access? */($user->has_cap("access_s2member_level".$n))
|
203 |
-
{
|
204 |
-
if(!empty($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level".$n."_file_downloads_allowed"]) && !empty($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level".$n."_file_downloads_allowed_days"]))
|
205 |
-
{
|
206 |
-
$allowed = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level".$n."_file_downloads_allowed"];
|
207 |
-
$allowed_days = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level".$n."_file_downloads_allowed_days"];
|
208 |
-
}
|
209 |
-
if /* We can stop now, if this is their Role. */($user->has_cap("s2member_level".$n))
|
210 |
-
break /* Break now. */;
|
211 |
-
}
|
212 |
-
}
|
213 |
-
$log = (is_array($user_log)) ? $user_log : ((is_array($log = get_user_option("s2member_file_download_access_log", $user_id)) && $log !== array(false)) ? $log : array());
|
214 |
-
$arc = (is_array($user_arc)) ? $user_arc : ((is_array($arc = get_user_option("s2member_file_download_access_arc", $user_id)) && $arc !== array(false)) ? $arc : array());
|
215 |
-
|
216 |
-
foreach(($user_file_download_access_log = $log) as $user_file_download_access_log_entry_key => $user_file_download_access_log_entry)
|
217 |
-
if(isset($user_file_download_access_log_entry["date"]) && strtotime($user_file_download_access_log_entry["date"]) >= strtotime("-".$allowed_days." days"))
|
218 |
-
if(isset($user_file_download_access_log_entry["file"]) && $user_file_download_access_log_entry["file"] !== $not_counting_this_particular_file)
|
219 |
-
$currently = $currently + 1;
|
220 |
-
}
|
221 |
-
|
222 |
-
return apply_filters("ws_plugin__s2member_user_downloads", array("allowed" => $allowed, "allowed_days" => $allowed_days, "currently" => $currently, "log" => $log, "archive" => $arc), get_defined_vars());
|
223 |
-
}
|
224 |
-
/**
|
225 |
-
* Total downloads of a particular file; possibly by a particular User.
|
226 |
-
*
|
227 |
-
* @package s2Member\Files
|
228 |
-
* @since 111026
|
229 |
-
*
|
230 |
-
* @param string $file Required. Location of the file, relative to the `/s2member-files/` directory, or relative to the root of your Amazon S3 Bucket *(when applicable)*.
|
231 |
-
* @param string|int $user_id Optional. If specified, s2Member will return total downloads by a particular User/Member, instead of collectively *(i.e among all Users/Members)*.
|
232 |
-
* @param bool $check_archives_too Optional. Defaults to true. When true, s2Member checks its File Download Archive too, instead of ONLY looking at Files downloaded in the current Period. Period is based on your Basic Download Restrictions setting of allowed days across various Levels of Membership, for each respective User/Member. Or, if ``$user_id`` is specified, based solely on a specific User's `allowed_days`, configured in your Basic Download Restrictions, at the User's current Membership Level.
|
233 |
-
* @return int The total for this particular ``$file``, based on configuration of function arguments.
|
234 |
-
*
|
235 |
-
* @note Calculations returned by this function do NOT include File Downloads that were accessed with an Advanced File Download Key.
|
236 |
-
* @todo Make it possible for s2Member to keep a count of files downloaded with an Advanced Download Key.
|
237 |
-
*/
|
238 |
-
public static function total_downloads_of($file = FALSE, $user_id = FALSE, $check_archives_too = TRUE)
|
239 |
-
{
|
240 |
-
global /* Global database object reference. */ $wpdb;
|
241 |
-
|
242 |
-
if /* Was ``$file`` passed in properly? */($file && is_string($file))
|
243 |
-
{
|
244 |
-
if(is_array($results = $wpdb->get_results("SELECT `meta_key`, `meta_value` FROM `".$wpdb->usermeta."` WHERE ".((is_numeric($user_id)) ? "`user_id` = '".esc_sql($user_id)."' AND " : "")."(`meta_key` = '".$wpdb->prefix."s2member_file_download_access_log'".(($check_archives_too) ? " OR `meta_key` = '".$wpdb->prefix."s2member_file_download_access_arc'" : "").") AND `meta_value` REGEXP '.*\"file\";s:[0-9]+:\"".esc_sql($file)."\".*'")))
|
245 |
-
{
|
246 |
-
foreach($results as $r /* Go through the entire array of results found in the `REGEXP` database query above. */)
|
247 |
-
if(is_array($la_entries = /* Unserialize the array. */ maybe_unserialize($r->meta_value)) && !empty($la_entries))
|
248 |
-
|
249 |
-
foreach($la_entries as $la_entry /* Go through all of the entries in each result ``$r``; collecting `counter` values. */)
|
250 |
-
if(!empty($la_entry["file"]) && $la_entry["file"] === $file && /* Back compatibility. Is `counter` even set? */ (!empty($la_entry["counter"]) || ($la_entry["counter"] = 1)))
|
251 |
-
{
|
252 |
-
$total = (!empty($total)) ? $total + (int)$la_entry["counter"] : (int)$la_entry["counter"];
|
253 |
-
break /* Break now. No need to continue looping; ``$file`` found in these entries. */;
|
254 |
-
}
|
255 |
-
}
|
256 |
-
}
|
257 |
-
return (!empty($total)) ? $total : /* Else return zero by default. */ 0;
|
258 |
-
}
|
259 |
-
/**
|
260 |
-
* Total unique downloads of a particular file; possibly by a particular User.
|
261 |
-
*
|
262 |
-
* @package s2Member\Files
|
263 |
-
* @since 111026
|
264 |
-
*
|
265 |
-
* @param string $file Required. Location of the file, relative to the `/s2member-files/` directory, or relative to the root of your Amazon S3 Bucket *(when applicable)*.
|
266 |
-
* @param string|int $user_id Optional. If specified, s2Member will return total downloads by a particular User/Member, instead of collectively *(i.e among all Users/Members)*.
|
267 |
-
* @param bool $check_archives_too Optional. Defaults to true. When true, s2Member checks its File Download Archive too, instead of ONLY looking at Files downloaded in the current Period. Period is based on your Basic Download Restrictions setting of allowed days across various Levels of Membership, for each respective User/Member. Or, if ``$user_id`` is specified, based solely on a specific User's `allowed_days`, configured in your Basic Download Restrictions, at the User's current Membership Level.
|
268 |
-
* @return int The total for this particular ``$file``, based on configuration of function arguments.
|
269 |
-
*
|
270 |
-
* @note Calculations returned by this function do NOT include File Downloads that were accessed with an Advanced File Download Key.
|
271 |
-
* @todo Make it possible for s2Member to keep a count of files downloaded with an Advanced Download Key.
|
272 |
-
*/
|
273 |
-
public static function total_unique_downloads_of($file = FALSE, $user_id = FALSE, $check_archives_too = TRUE)
|
274 |
-
{
|
275 |
-
global /* Global database object reference. */ $wpdb;
|
276 |
-
|
277 |
-
if /* Was ``$file`` passed in properly? */($file && is_string($file))
|
278 |
-
{
|
279 |
-
if(is_array($results = $wpdb->get_results("SELECT `meta_key`, `meta_value` FROM `".$wpdb->usermeta."` WHERE ".((is_numeric($user_id)) ? "`user_id` = '".esc_sql($user_id)."' AND " : "")."(`meta_key` = '".$wpdb->prefix."s2member_file_download_access_log'".(($check_archives_too) ? " OR `meta_key` = '".$wpdb->prefix."s2member_file_download_access_arc'" : "").") AND `meta_value` REGEXP '.*\"file\";s:[0-9]+:\"".esc_sql($file)."\".*'")))
|
280 |
-
{
|
281 |
-
foreach($results as $r /* Go through the entire array of results found in the `REGEXP` database query above. */)
|
282 |
-
if(is_array($la_entries = /* Unserialize the array. */ maybe_unserialize($r->meta_value)) && !empty($la_entries))
|
283 |
-
|
284 |
-
foreach($la_entries as $la_entry /* Go through all of the entries in each result ``$r``; collecting `counter` values. */)
|
285 |
-
if(!empty($la_entry["file"]) && $la_entry["file"] === $file && /* Back compatibility. Is `counter` even set? */ (!empty($la_entry["counter"]) || ($la_entry["counter"] = 1)))
|
286 |
-
{
|
287 |
-
$total = (!empty($total)) ? /* Only count `1` here (i.e. unique downloads). */ $total + 1 : 1;
|
288 |
-
break /* Break now. No need to continue looping; ``$file`` found in these entries. */;
|
289 |
-
}
|
290 |
-
}
|
291 |
-
}
|
292 |
-
return (!empty($total)) ? $total : /* Else return zero by default. */ 0;
|
293 |
-
}
|
294 |
-
/**
|
295 |
-
* Checks for GZIP rules in root `.htaccess` file.
|
296 |
-
*
|
297 |
-
* @package s2Member\Files
|
298 |
-
* @since 120212
|
299 |
-
*
|
300 |
-
* @return bool True if rules exist, else false.
|
301 |
-
*/
|
302 |
-
public static function no_gzip_rules_in_root_htaccess()
|
303 |
-
{
|
304 |
-
$start_line = /* Beginning line for this entry. */ "# BEGIN s2Member GZIP exclusions";
|
305 |
-
$end_line = /* Identifying end line for this entry. */ "# END s2Member GZIP exclusions";
|
306 |
-
$htaccess = /* Location of this `.htaccess` file. */ ABSPATH.".htaccess";
|
307 |
|
308 |
-
|
309 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
310 |
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
* @since 120212
|
354 |
-
*
|
355 |
-
* @return bool True if successful, else false on any type of failure.
|
356 |
-
*/
|
357 |
-
public static function remove_no_gzip_from_root_htaccess()
|
358 |
-
{
|
359 |
-
$start_line = /* Beginning line for this entry. */ "# BEGIN s2Member GZIP exclusions";
|
360 |
-
$end_line = /* Identifying end line for this entry. */ "# END s2Member GZIP exclusions";
|
361 |
-
$htaccess = /* Location of this `.htaccess` file we need to write in. */ ABSPATH.".htaccess";
|
362 |
-
|
363 |
-
if(file_exists($htaccess) && is_readable($htaccess) && is_writable($htaccess) && ($htaccess_contents = file_get_contents($htaccess)) !== false && is_string($htaccess_contents = trim($htaccess_contents)))
|
364 |
-
{
|
365 |
-
$htaccess_contents = trim(preg_replace("/".preg_quote($start_line, "/")."[\r\n]+.*?[\r\n]+".preg_quote($end_line, "/")."[\r\n]{0,2}/is", "", $htaccess_contents));
|
366 |
-
|
367 |
-
return /* Check for `false`, because this could return `0` if the file is now empty. */ (file_put_contents($htaccess, $htaccess_contents) !== false);
|
368 |
-
}
|
369 |
-
else if(!file_exists($htaccess) /* Return `true` here, we're OK. */)
|
370 |
-
{
|
371 |
-
return true;
|
372 |
-
}
|
373 |
-
return /* Default return `false`. */ false;
|
374 |
-
}
|
375 |
}
|
|
|
|
|
376 |
}
|
377 |
-
|
1 |
<?php
|
2 |
/**
|
3 |
+
* File Download routines for s2Member.
|
4 |
+
*
|
5 |
+
* Copyright: © 2009-2011
|
6 |
+
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
|
7 |
+
* (coded in the USA)
|
8 |
+
*
|
9 |
+
* Released under the terms of the GNU General Public License.
|
10 |
+
* You should have received a copy of the GNU General Public License,
|
11 |
+
* along with this software. In the main directory, see: /licensing/
|
12 |
+
* If not, see: {@link http://www.gnu.org/licenses/}.
|
13 |
+
*
|
14 |
+
* @package s2Member\Files
|
15 |
+
* @since 3.5
|
16 |
+
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
+
exit('Do not access this file directly.');
|
19 |
+
|
20 |
+
if(!class_exists('c_ws_plugin__s2member_files'))
|
21 |
+
{
|
22 |
+
/**
|
23 |
+
* File Download routines for s2Member.
|
24 |
+
*
|
25 |
+
* @package s2Member\Files
|
26 |
+
* @since 3.5
|
27 |
+
*/
|
28 |
+
class c_ws_plugin__s2member_files
|
29 |
{
|
30 |
/**
|
31 |
+
* Handles Download Access permissions.
|
32 |
+
*
|
33 |
+
* @package s2Member\Files
|
34 |
+
* @since 110524RC
|
35 |
+
*
|
36 |
+
* @attaches-to ``add_action('init');``
|
37 |
+
* @also-called-by API Function {@link s2Member\API_Functions\s2member_file_download_url()}, w/ ``$create_file_download_url`` param.
|
38 |
+
*
|
39 |
+
* @param array $create_file_download_url Optional. If this function is called directly, we can pass arguments through this array.
|
40 |
+
* Possible array elements: `file_download` *(required)*, `file_download_key`, `file_stream`, `file_inline`, `file_storage`, `file_remote`, `file_ssl`, `file_rewrite`, `file_rewrite_base`, `skip_confirmation`, `url_to_storage_source`, `count_against_user`, `check_user`.
|
41 |
+
*
|
42 |
+
* @return null|string If called directly with ``$create_file_download_url``, returns a string with the URL, based on configuration.
|
43 |
+
* Else, this function may exit script execution after serving a File Download.
|
44 |
+
*/
|
45 |
+
public static function check_file_download_access($create_file_download_url = NULL)
|
46 |
+
{
|
47 |
+
if(is_array($create_file_download_url) || !empty($_GET['s2member_file_download']))
|
48 |
+
return c_ws_plugin__s2member_files_in::check_file_download_access($create_file_download_url);
|
49 |
+
return NULL; // Default return value.
|
50 |
+
}
|
51 |
+
|
52 |
+
/**
|
53 |
+
* Generates a File Download URL for access to a file protected by s2Member.
|
54 |
+
*
|
55 |
+
* @package s2Member\Files
|
56 |
+
* @since 110926
|
57 |
+
*
|
58 |
+
* @param array $config Required. This is an array of configuration options associated with permissions being checked against the current User/Member; and also the actual URL generated by this routine.
|
59 |
+
* Possible ``$config`` array elements: `file_download` *(required)*, `file_download_key`, `file_stream`, `file_inline`, `file_storage`, `file_remote`, `file_ssl`, `file_rewrite`, `file_rewrite_base`, `skip_confirmation`, `url_to_storage_source`, `count_against_user`, `check_user`.
|
60 |
+
* @param bool $get_streamer_array Optional. Defaults to `false`. If `true`, this function will return an array with the following elements: `streamer`, `file`, `url`. For further details, please review this section in your Dashboard: `s2Member -› Download Options -› JW Player & RTMP Protocol Examples`.
|
61 |
+
*
|
62 |
+
* @return string A File Download URL string on success; or an array on success, with elements `streamer`, `file`, `url` when/if ``$get_streamer_array`` is true; else false on any type of failure.
|
63 |
+
*
|
64 |
+
* @see s2Member\API_Functions\s2member_file_download_url()
|
65 |
+
*/
|
66 |
+
public static function create_file_download_url($config = NULL, $get_streamer_array = FALSE)
|
67 |
+
{
|
68 |
+
return c_ws_plugin__s2member_files_in::create_file_download_url($config, $get_streamer_array);
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Auto-configures an Amazon S3 Bucket's ACLs.
|
73 |
+
*
|
74 |
+
* @package s2Member\Files
|
75 |
+
* @since 110926
|
76 |
+
*
|
77 |
+
* @return bool|array True on success, else array on failure.
|
78 |
+
* Failure array will contain a failure `code`, and a failure `message`.
|
79 |
+
*/
|
80 |
+
public static function amazon_s3_auto_configure_acls()
|
81 |
+
{
|
82 |
+
return c_ws_plugin__s2member_files_in::amazon_s3_auto_configure_acls();
|
83 |
+
}
|
84 |
+
|
85 |
+
/**
|
86 |
+
* Auto-configures Amazon CloudFront distros.
|
87 |
+
*
|
88 |
+
* @package s2Member\Files
|
89 |
+
* @since 130209
|
90 |
+
*
|
91 |
+
* @return bool|array True on success, else array on failure.
|
92 |
+
* Failure array will contain a failure `code`, and a failure `message`.
|
93 |
+
*/
|
94 |
+
public static function amazon_cf_auto_configure_distros()
|
95 |
+
{
|
96 |
+
return c_ws_plugin__s2member_files_in::amazon_cf_auto_configure_distros();
|
97 |
+
}
|
98 |
+
|
99 |
+
/**
|
100 |
+
* Determines the max period (in days), for Download Access.
|
101 |
+
*
|
102 |
+
* @package s2Member\Files
|
103 |
+
* @since 3.5
|
104 |
+
*
|
105 |
+
* @return int Number of days, where 0 means no access to files is allowed.
|
106 |
+
* Will not return a value > `365`, because this routine also controls the age of download logs to archives.
|
107 |
+
*
|
108 |
+
* @deprecated Deprecated in v111029. This function is no longer used by s2Member.
|
109 |
+
*/
|
110 |
+
public static function max_download_period(/* No longer used by s2Member. */)
|
111 |
+
{
|
112 |
+
do_action('ws_plugin__s2member_before_max_download_period', get_defined_vars());
|
113 |
+
|
114 |
+
for($n = 0, $max = 0; $n <= $GLOBALS['WS_PLUGIN__']['s2member']['c']['levels']; $n++)
|
115 |
+
if(!empty($GLOBALS['WS_PLUGIN__']['s2member']['o']['level'.$n.'_file_downloads_allowed']))
|
116 |
+
if(!empty($GLOBALS['WS_PLUGIN__']['s2member']['o']['level'.$n.'_file_downloads_allowed_days']))
|
117 |
+
if(($days = $GLOBALS['WS_PLUGIN__']['s2member']['o']['level'.$n.'_file_downloads_allowed_days']))
|
118 |
+
$max = ($max < $days) ? $days : $max;
|
119 |
+
|
120 |
+
return apply_filters('ws_plugin__s2member_max_download_period', (($max > 365) ? 365 : $max), get_defined_vars());
|
121 |
+
}
|
122 |
+
|
123 |
+
/**
|
124 |
+
* Determines the minimum Level required for File Download Access.
|
125 |
+
*
|
126 |
+
* @package s2Member\Files
|
127 |
+
* @since 3.5
|
128 |
+
*
|
129 |
+
* @return bool|int False if no access is allowed, else Level number (int) 0+.
|
130 |
+
*/
|
131 |
+
public static function min_level_4_downloads()
|
132 |
+
{
|
133 |
+
do_action('ws_plugin__s2member_before_min_level_4_downloads', get_defined_vars());
|
134 |
+
|
135 |
+
for($n = 0, $min = FALSE; $n <= $GLOBALS['WS_PLUGIN__']['s2member']['c']['levels']; $n++)
|
136 |
+
if(!empty($GLOBALS['WS_PLUGIN__']['s2member']['o']['level'.$n.'_file_downloads_allowed']))
|
137 |
+
if(!empty($GLOBALS['WS_PLUGIN__']['s2member']['o']['level'.$n.'_file_downloads_allowed_days']))
|
138 |
+
if(($min = $n) >= 0) break; // Break now.
|
139 |
+
|
140 |
+
return apply_filters('ws_plugin__s2member_min_level_4_downloads', ((is_int($min)) ? $min : FALSE), get_defined_vars());
|
141 |
+
}
|
142 |
+
|
143 |
+
/**
|
144 |
+
* Creates a File Download Key.
|
145 |
+
*
|
146 |
+
* Builds a hash of: ``date('Y-m-d') . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'] . $file``.
|
147 |
+
*
|
148 |
+
* @package s2Member\Files
|
149 |
+
* @since 3.5
|
150 |
+
*
|
151 |
+
* @param string $file Location of your protected file, relative to the `/s2member-files/` directory.
|
152 |
+
* In other words, just the name of the file *(i.e. `file.zip` )*.
|
153 |
+
* @param string $directive Optional. One of `ip-forever|universal|cache-compatible`.
|
154 |
+
* `ip-forever` = a Download Key that never expires, tied only to a specific file and IP address.
|
155 |
+
* `universal` and/or `cache-compatible` = a Download Key which never expires, and is NOT tied to any specific User. Use at your own risk.
|
156 |
+
*
|
157 |
+
* @return string A Download Key. MD5 hash, 32 characters, URL-safe.
|
158 |
+
*/
|
159 |
+
public static function file_download_key($file = NULL, $directive = NULL)
|
160 |
+
{
|
161 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
162 |
+
do_action('ws_plugin__s2member_before_file_download_key', get_defined_vars());
|
163 |
+
unset($__refs, $__v);
|
164 |
+
|
165 |
+
$file = ($file && is_string($file) && ($file = trim($file, '/'))) ? $file : '';
|
166 |
+
|
167 |
+
if($directive === 'ip-forever' && c_ws_plugin__s2member_no_cache::no_cache_constants(TRUE))
|
168 |
+
$salt = $file.$_SERVER['REMOTE_ADDR'];
|
169 |
+
|
170 |
+
else if($directive === 'universal' || $directive === 'cache-compatible' || $directive)
|
171 |
+
$salt = $file; // Just the file name. This IS cacheable.
|
172 |
+
|
173 |
+
else if(c_ws_plugin__s2member_no_cache::no_cache_constants(TRUE))
|
174 |
+
$salt = date('Y-m-d').$_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT'].$file;
|
175 |
+
|
176 |
+
$key = (!empty($salt)) ? md5(c_ws_plugin__s2member_utils_encryption::xencrypt($salt, FALSE, FALSE)) : '';
|
177 |
+
|
178 |
+
return apply_filters('ws_plugin__s2member_file_download_key', $key, get_defined_vars());
|
179 |
+
}
|
180 |
+
|
181 |
+
/**
|
182 |
+
* Download details on a per-User basis.
|
183 |
+
*
|
184 |
+
* @package s2Member\Files
|
185 |
+
* @since 3.5
|
186 |
+
*
|
187 |
+
* @param object $user Optional. A `WP_User` object. Defaults to the current User's object.
|
188 |
+
* @param string $not_counting_this_particular_file Optional. If you want to exclude a particular file,
|
189 |
+
* relative to the `/s2member-files/` directory, or relative to the root of your Amazon S3 Bucket *(when applicable)*.
|
190 |
+
* @param array $user_log Optional. Prevents another database connection *(i.e. the User's log does not need to be pulled again)*.
|
191 |
+
* @param array $user_arc Optional. Prevents another database connection *(i.e. the User's archive does not need to be pulled again)*.
|
192 |
+
*
|
193 |
+
* @return array An array with the following elements... File Downloads allowed for this User: (int)`allowed`, Download Period for this User in days: (int)`allowed_days`, Files downloaded by this User in the current Period: (int)`currently`, log of all Files downloaded in the current Period, with file names/dates: (array)`log`, archive of all Files downloaded in prior Periods, with file names/dates: (array)`archive`.
|
194 |
+
*
|
195 |
+
* @note Calculations returned by this function do NOT include File Downloads that were accessed with an Advanced File Download Key.
|
196 |
+
*
|
197 |
+
* @todo Make it possible for s2Member to keep a count of files downloaded with an Advanced Download Key.
|
198 |
+
*/
|
199 |
+
public static function user_downloads($user = NULL, $not_counting_this_particular_file = NULL, $user_log = NULL, $user_arc = NULL)
|
200 |
+
{
|
201 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
202 |
+
do_action('ws_plugin__s2member_before_user_downloads', get_defined_vars());
|
203 |
+
unset($__refs, $__v);
|
204 |
+
|
205 |
+
$allowed = $allowed_days = $currently = 0; // Initialize these to zero.
|
206 |
+
$log = $arc = array(); // Initialize these to a default empty array value.
|
207 |
+
|
208 |
+
if((is_object($user) || is_object($user = (is_user_logged_in()) ? wp_get_current_user() : FALSE)) && !empty($user->ID) && ($user_id = $user->ID))
|
209 |
{
|
210 |
+
for($n = 0; $n <= $GLOBALS['WS_PLUGIN__']['s2member']['c']['levels']; $n++)
|
211 |
+
{
|
212 |
+
if($user->has_cap('access_s2member_level'.$n) /* Do they have access? */)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
213 |
{
|
214 |
+
if(!empty($GLOBALS['WS_PLUGIN__']['s2member']['o']['level'.$n.'_file_downloads_allowed']) && !empty($GLOBALS['WS_PLUGIN__']['s2member']['o']['level'.$n.'_file_downloads_allowed_days']))
|
215 |
+
{
|
216 |
+
$allowed = $GLOBALS['WS_PLUGIN__']['s2member']['o']['level'.$n.'_file_downloads_allowed'];
|
217 |
+
$allowed_days = $GLOBALS['WS_PLUGIN__']['s2member']['o']['level'.$n.'_file_downloads_allowed_days'];
|
218 |
+
}
|
219 |
+
if($user->has_cap('s2member_level'.$n) /* We can stop now, if this is their Role. */)
|
220 |
+
break; // Break now.
|
221 |
}
|
222 |
+
}
|
223 |
+
$log = (is_array($user_log)) ? $user_log : ((is_array($log = get_user_option('s2member_file_download_access_log', $user_id)) && $log !== array(FALSE)) ? $log : array());
|
224 |
+
$arc = (is_array($user_arc)) ? $user_arc : ((is_array($arc = get_user_option('s2member_file_download_access_arc', $user_id)) && $arc !== array(FALSE)) ? $arc : array());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
225 |
|
226 |
+
foreach(($user_file_download_access_log = $log) as $user_file_download_access_log_entry_key => $user_file_download_access_log_entry)
|
227 |
+
if(isset($user_file_download_access_log_entry['date']) && strtotime($user_file_download_access_log_entry['date']) >= strtotime('-'.$allowed_days.' days'))
|
228 |
+
if(isset($user_file_download_access_log_entry['file']) && $user_file_download_access_log_entry['file'] !== $not_counting_this_particular_file)
|
229 |
+
$currently = $currently + 1;
|
230 |
+
}
|
231 |
+
return apply_filters('ws_plugin__s2member_user_downloads', array('allowed' => $allowed, 'allowed_days' => $allowed_days, 'currently' => $currently, 'log' => $log, 'archive' => $arc), get_defined_vars());
|
232 |
+
}
|
233 |
|
234 |
+
/**
|
235 |
+
* Total downloads of a particular file; possibly by a particular User.
|
236 |
+
*
|
237 |
+
* @package s2Member\Files
|
238 |
+
* @since 111026
|
239 |
+
*
|
240 |
+
* @param string $file Required. Location of the file, relative to the `/s2member-files/` directory, or relative to the root of your Amazon S3 Bucket *(when applicable)*.
|
241 |
+
* @param string|int $user_id Optional. If specified, s2Member will return total downloads by a particular User/Member, instead of collectively *(i.e among all Users/Members)*.
|
242 |
+
* @param bool $check_archives_too Optional. Defaults to true. When true, s2Member checks its File Download Archive too, instead of ONLY looking at Files downloaded in the current Period. Period is based on your Basic Download Restrictions setting of allowed days across various Levels of Membership, for each respective User/Member. Or, if ``$user_id`` is specified, based solely on a specific User's `allowed_days`, configured in your Basic Download Restrictions, at the User's current Membership Level.
|
243 |
+
*
|
244 |
+
* @return int The total for this particular ``$file``, based on configuration of function arguments.
|
245 |
+
*
|
246 |
+
* @note Calculations returned by this function do NOT include File Downloads that were accessed with an Advanced File Download Key.
|
247 |
+
*
|
248 |
+
* @todo Make it possible for s2Member to keep a count of files downloaded with an Advanced Download Key.
|
249 |
+
*/
|
250 |
+
public static function total_downloads_of($file = NULL, $user_id = NULL, $check_archives_too = TRUE)
|
251 |
+
{
|
252 |
+
global $wpdb; // Global database object reference.
|
253 |
+
/** @var $wpdb \wpdb Reference for IDEs. */
|
254 |
|
255 |
+
if($file && is_string($file) /* Was ``$file`` passed in properly? */)
|
256 |
+
{
|
257 |
+
if(is_array($results = $wpdb->get_results("SELECT `meta_key`, `meta_value` FROM `".$wpdb->usermeta."` WHERE ".((is_numeric($user_id)) ? "`user_id` = '".esc_sql($user_id)."' AND " : '')."(`meta_key` = '".$wpdb->prefix."s2member_file_download_access_log'".(($check_archives_too) ? " OR `meta_key` = '".$wpdb->prefix."s2member_file_download_access_arc'" : '').") AND `meta_value` REGEXP '.*\"file\";s:[0-9]+:\"".esc_sql($file)."\".*'")))
|
258 |
+
{
|
259 |
+
foreach($results as $r /* Go through the entire array of results found in the `REGEXP` database query above. */)
|
260 |
+
if(is_array($la_entries = maybe_unserialize($r->meta_value)) && !empty($la_entries) /* Unserialize the array. */)
|
261 |
|
262 |
+
foreach($la_entries as $la_entry /* Go through all of the entries in each result ``$r``; collecting `counter` values. */)
|
263 |
+
if(!empty($la_entry['file']) && $la_entry['file'] === $file && (!empty($la_entry['counter']) || ($la_entry['counter'] = 1)))
|
264 |
+
{
|
265 |
+
$total = (!empty($total)) ? $total + (int)$la_entry['counter'] : (int)$la_entry['counter'];
|
266 |
+
break; // Break now. No need to continue looping; ``$file`` found in these entries.
|
267 |
+
}
|
268 |
+
}
|
269 |
+
}
|
270 |
+
return (!empty($total)) ? $total : 0; // Else return zero by default.
|
271 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
272 |
|
273 |
+
/**
|
274 |
+
* Total unique downloads of a particular file; possibly by a particular User.
|
275 |
+
*
|
276 |
+
* @package s2Member\Files
|
277 |
+
* @since 111026
|
278 |
+
*
|
279 |
+
* @param string $file Required. Location of the file, relative to the `/s2member-files/` directory, or relative to the root of your Amazon S3 Bucket *(when applicable)*.
|
280 |
+
* @param string|int $user_id Optional. If specified, s2Member will return total downloads by a particular User/Member, instead of collectively *(i.e among all Users/Members)*.
|
281 |
+
* @param bool $check_archives_too Optional. Defaults to true. When true, s2Member checks its File Download Archive too, instead of ONLY looking at Files downloaded in the current Period. Period is based on your Basic Download Restrictions setting of allowed days across various Levels of Membership, for each respective User/Member. Or, if ``$user_id`` is specified, based solely on a specific User's `allowed_days`, configured in your Basic Download Restrictions, at the User's current Membership Level.
|
282 |
+
*
|
283 |
+
* @return int The total for this particular ``$file``, based on configuration of function arguments.
|
284 |
+
*
|
285 |
+
* @note Calculations returned by this function do NOT include File Downloads that were accessed with an Advanced File Download Key.
|
286 |
+
*
|
287 |
+
* @todo Make it possible for s2Member to keep a count of files downloaded with an Advanced Download Key.
|
288 |
+
*/
|
289 |
+
public static function total_unique_downloads_of($file = NULL, $user_id = NULL, $check_archives_too = TRUE)
|
290 |
+
{
|
291 |
+
global $wpdb; // Global database object reference.
|
292 |
+
/** @var $wpdb \wpdb Reference for IDEs. */
|
293 |
|
294 |
+
if($file && is_string($file) /* Was ``$file`` passed in properly? */)
|
295 |
+
{
|
296 |
+
if(is_array($results = $wpdb->get_results("SELECT `meta_key`, `meta_value` FROM `".$wpdb->usermeta."` WHERE ".((is_numeric($user_id)) ? "`user_id` = '".esc_sql($user_id)."' AND " : '')."(`meta_key` = '".$wpdb->prefix."s2member_file_download_access_log'".(($check_archives_too) ? " OR `meta_key` = '".$wpdb->prefix."s2member_file_download_access_arc'" : '').") AND `meta_value` REGEXP '.*\"file\";s:[0-9]+:\"".esc_sql($file)."\".*'")))
|
297 |
+
{
|
298 |
+
foreach($results as $r /* Go through the entire array of results found in the `REGEXP` database query above. */)
|
299 |
+
if(is_array($la_entries = maybe_unserialize($r->meta_value)) && !empty($la_entries) /* Unserialize the array. */)
|
300 |
|
301 |
+
foreach($la_entries as $la_entry /* Go through all of the entries in each result ``$r``; collecting `counter` values. */)
|
302 |
+
if(!empty($la_entry['file']) && $la_entry['file'] === $file && (!empty($la_entry['counter']) || ($la_entry['counter'] = 1)))
|
303 |
+
{
|
304 |
+
$total = (!empty($total)) ? $total + 1 : 1; // Only count `1` here (i.e. unique downloads).
|
305 |
+
break; // Break now. No need to continue looping; ``$file`` found in these entries.
|
306 |
+
}
|
307 |
+
}
|
308 |
+
}
|
309 |
+
return (!empty($total)) ? $total : 0; // Else return zero by default.
|
310 |
+
}
|
311 |
|
312 |
+
/**
|
313 |
+
* Checks for GZIP rules in root `.htaccess` file.
|
314 |
+
*
|
315 |
+
* @package s2Member\Files
|
316 |
+
* @since 120212
|
317 |
+
*
|
318 |
+
* @return bool True if rules exist, else false.
|
319 |
+
*/
|
320 |
+
public static function no_gzip_rules_in_root_htaccess()
|
321 |
+
{
|
322 |
+
$start_line = '# BEGIN s2Member GZIP exclusions'; // Beginning line for this entry.
|
323 |
+
$end_line = '# END s2Member GZIP exclusions'; // Identifying end line for this entry.
|
324 |
+
$htaccess = ABSPATH.'.htaccess'; // Location of this `.htaccess` file.
|
325 |
|
326 |
+
if(file_exists($htaccess) && is_readable($htaccess) && ($htaccess_contents = file_get_contents($htaccess)) !== FALSE && is_string($htaccess_contents = trim($htaccess_contents)))
|
327 |
+
return preg_match('/'.preg_quote($start_line, '/').'['."\r\n".']+.*?['."\r\n".']+'.preg_quote($end_line, '/').'['."\r\n".']{0,2}/is', $htaccess_contents);
|
328 |
|
329 |
+
return FALSE; // Default return `FALSE`.
|
330 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
331 |
|
332 |
+
/**
|
333 |
+
* Writes no GZIP rules into root `.htaccess` file.
|
334 |
+
*
|
335 |
+
* @package s2Member\Files
|
336 |
+
* @since 120212
|
337 |
+
*
|
338 |
+
* @return bool True if successfull, else false on any type of failure.
|
339 |
+
*/
|
340 |
+
public static function write_no_gzip_into_root_htaccess()
|
341 |
+
{
|
342 |
+
if(c_ws_plugin__s2member_files::remove_no_gzip_from_root_htaccess() /* Must first be able to remove any existing entry. */)
|
343 |
+
{
|
344 |
+
$start_line = '# BEGIN s2Member GZIP exclusions'; // Beginning line for this entry.
|
345 |
+
$end_line = '# END s2Member GZIP exclusions'; // Identifying end line for this entry.
|
346 |
+
$htaccess = ABSPATH.'.htaccess'; // Location of this `.htaccess` file we need to write in.
|
347 |
+
$ideally_position_before = '# BEGIN WordPress'; // Ideally, we can position before this entry.
|
348 |
|
349 |
+
$no_gzip = $start_line."\n".trim(c_ws_plugin__s2member_utilities::evl(file_get_contents($GLOBALS['WS_PLUGIN__']['s2member']['c']['files_no_gzip_htaccess'])))."\n".$end_line;
|
350 |
+
|
351 |
+
if(file_exists($htaccess) && is_readable($htaccess) && is_writable($htaccess) && ($htaccess_contents = file_get_contents($htaccess)) !== FALSE && is_string($htaccess_contents = trim($htaccess_contents)))
|
352 |
+
{
|
353 |
+
if(stripos($htaccess_contents, $ideally_position_before) !== FALSE /* If we can position in the ideal location, that's awesome. Let's do that now. */)
|
354 |
+
$htaccess_contents = trim(str_ireplace($ideally_position_before, $no_gzip."\n\n".$ideally_position_before, $htaccess_contents));
|
355 |
+
|
356 |
+
else $htaccess_contents = trim($no_gzip."\n\n".$htaccess_contents); // Else, let's put it at the very top of the file by default.
|
357 |
+
|
358 |
+
return file_put_contents($htaccess, $htaccess_contents);
|
359 |
+
}
|
360 |
+
else if(!file_exists($htaccess) && is_writable(dirname($htaccess)))
|
361 |
+
{
|
362 |
+
return file_put_contents($htaccess, $no_gzip);
|
363 |
+
}
|
364 |
+
}
|
365 |
+
return FALSE; // Default return `FALSE`.
|
366 |
+
}
|
367 |
+
|
368 |
+
/**
|
369 |
+
* Removes no GZIP rules in root `.htaccess` file.
|
370 |
+
*
|
371 |
+
* @package s2Member\Files
|
372 |
+
* @since 120212
|
373 |
+
*
|
374 |
+
* @return bool True if successful, else false on any type of failure.
|
375 |
+
*/
|
376 |
+
public static function remove_no_gzip_from_root_htaccess()
|
377 |
+
{
|
378 |
+
$start_line = '# BEGIN s2Member GZIP exclusions'; // Beginning line for this entry.
|
379 |
+
$end_line = '# END s2Member GZIP exclusions'; // Identifying end line for this entry.
|
380 |
+
$htaccess = ABSPATH.'.htaccess'; // Location of this `.htaccess` file we need to write in.
|
381 |
+
|
382 |
+
if(file_exists($htaccess) && is_readable($htaccess) && is_writable($htaccess) && ($htaccess_contents = file_get_contents($htaccess)) !== FALSE && is_string($htaccess_contents = trim($htaccess_contents)))
|
383 |
+
{
|
384 |
+
$htaccess_contents = trim(preg_replace('/'.preg_quote($start_line, '/').'['."\r\n".']+.*?['."\r\n".']+'.preg_quote($end_line, '/').'['."\r\n".']{0,2}/is', '', $htaccess_contents));
|
385 |
+
|
386 |
+
return (file_put_contents($htaccess, $htaccess_contents) !== FALSE); // Check for `FALSE`, because this could return `0` if the file is now empty.
|
387 |
+
}
|
388 |
+
else if(!file_exists($htaccess) /* Return `TRUE` here, we're OK. */)
|
389 |
+
{
|
390 |
+
return TRUE;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
391 |
}
|
392 |
+
return FALSE; // Default return `FALSE`.
|
393 |
+
}
|
394 |
}
|
395 |
+
}
|
includes/classes/getresponse.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @since 141004
|
15 |
* @package s2Member\List_Servers
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_getresponse'))
|
14 |
* @since 141004
|
15 |
* @package s2Member\List_Servers
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_getresponse'))
|
includes/classes/installation.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Installation
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_installation'))
|
@@ -213,12 +213,18 @@ if(!class_exists('c_ws_plugin__s2member_installation'))
|
|
213 |
if(is_multisite() && is_main_site() /* Site options? */)
|
214 |
delete_site_option('ws_plugin__s2member_options');
|
215 |
|
216 |
-
$wpdb->query("DELETE FROM `".$wpdb->
|
217 |
-
$wpdb->query("DELETE FROM `".$wpdb->
|
218 |
-
$wpdb->query("DELETE FROM `".$wpdb->options."` WHERE `option_name` LIKE '".esc_sql(c_ws_plugin__s2member_utils_strings::like_escape('_transient_timeout_s2m_'))."%'");
|
219 |
$wpdb->query("DELETE FROM `".$wpdb->postmeta."` WHERE `meta_key` LIKE '%".esc_sql(c_ws_plugin__s2member_utils_strings::like_escape('s2member_'))."%'");
|
|
|
|
|
|
|
220 |
$wpdb->query("DELETE FROM `".$wpdb->usermeta."` WHERE `meta_key` LIKE '%".esc_sql(c_ws_plugin__s2member_utils_strings::like_escape('s2member_'))."%'");
|
221 |
|
|
|
|
|
|
|
|
|
222 |
do_action('ws_plugin__s2member_during_uninstall', get_defined_vars());
|
223 |
}
|
224 |
do_action('ws_plugin__s2member_after_uninstall', get_defined_vars());
|
14 |
* @package s2Member\Installation
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_installation'))
|
213 |
if(is_multisite() && is_main_site() /* Site options? */)
|
214 |
delete_site_option('ws_plugin__s2member_options');
|
215 |
|
216 |
+
$wpdb->query("DELETE FROM `".$wpdb->postmeta."` WHERE `meta_key` LIKE '".esc_sql(c_ws_plugin__s2member_utils_strings::like_escape('s2m_'))."%'");
|
217 |
+
$wpdb->query("DELETE FROM `".$wpdb->postmeta."` WHERE `meta_key` LIKE '%".esc_sql(c_ws_plugin__s2member_utils_strings::like_escape('_s2m_'))."%'");
|
|
|
218 |
$wpdb->query("DELETE FROM `".$wpdb->postmeta."` WHERE `meta_key` LIKE '%".esc_sql(c_ws_plugin__s2member_utils_strings::like_escape('s2member_'))."%'");
|
219 |
+
|
220 |
+
$wpdb->query("DELETE FROM `".$wpdb->usermeta."` WHERE `meta_key` LIKE '".esc_sql(c_ws_plugin__s2member_utils_strings::like_escape('s2m_'))."%'");
|
221 |
+
$wpdb->query("DELETE FROM `".$wpdb->usermeta."` WHERE `meta_key` LIKE '%".esc_sql(c_ws_plugin__s2member_utils_strings::like_escape('_s2m_'))."%'");
|
222 |
$wpdb->query("DELETE FROM `".$wpdb->usermeta."` WHERE `meta_key` LIKE '%".esc_sql(c_ws_plugin__s2member_utils_strings::like_escape('s2member_'))."%'");
|
223 |
|
224 |
+
$wpdb->query("DELETE FROM `".$wpdb->options."` WHERE `option_name` LIKE '".esc_sql(c_ws_plugin__s2member_utils_strings::like_escape('s2m_'))."%'");
|
225 |
+
$wpdb->query("DELETE FROM `".$wpdb->options."` WHERE `option_name` LIKE '%".esc_sql(c_ws_plugin__s2member_utils_strings::like_escape('_s2m_'))."%'");
|
226 |
+
$wpdb->query("DELETE FROM `".$wpdb->options."` WHERE `option_name` LIKE '%".esc_sql(c_ws_plugin__s2member_utils_strings::like_escape('s2member_'))."%'");
|
227 |
+
|
228 |
do_action('ws_plugin__s2member_during_uninstall', get_defined_vars());
|
229 |
}
|
230 |
do_action('ws_plugin__s2member_after_uninstall', get_defined_vars());
|
includes/classes/ip-restrictions.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\IP_Restrictions
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_ip_restrictions"))
|
14 |
* @package s2Member\IP_Restrictions
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_ip_restrictions"))
|
includes/classes/labels.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Roles_Caps
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_labels"))
|
14 |
* @package s2Member\Roles_Caps
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_labels"))
|
includes/classes/list-server-base.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @since 141004
|
15 |
* @package s2Member\List_Servers
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_list_server_base'))
|
14 |
* @since 141004
|
15 |
* @package s2Member\List_Servers
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_list_server_base'))
|
includes/classes/list-servers.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\List_Servers
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_list_servers'))
|
14 |
* @package s2Member\List_Servers
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_list_servers'))
|
includes/classes/login-checks.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Login_Checks
|
15 |
* @since 131025
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_login_checks'))
|
14 |
* @package s2Member\Login_Checks
|
15 |
* @since 131025
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_login_checks'))
|
includes/classes/login-customizations.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Login_Customizations
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_login_customizations'))
|
14 |
* @package s2Member\Login_Customizations
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_login_customizations'))
|
includes/classes/login-redirects-r.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Login_Redirects
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_login_redirects_r"))
|
14 |
* @package s2Member\Login_Redirects
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_login_redirects_r"))
|
includes/classes/login-redirects.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Login_Redirects
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_login_redirects'))
|
14 |
* @package s2Member\Login_Redirects
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_login_redirects'))
|
includes/classes/mailchimp-o.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @since 141004
|
15 |
* @package s2Member\List_Servers
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_mailchimp_o'))
|
14 |
* @since 141004
|
15 |
* @package s2Member\List_Servers
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_mailchimp_o'))
|
includes/classes/mailchimp.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @since 141004
|
15 |
* @package s2Member\List_Servers
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_mailchimp'))
|
14 |
* @since 141004
|
15 |
* @package s2Member\List_Servers
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_mailchimp'))
|
includes/classes/menu-pages-rs.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 110531
|
16 |
*/
|
17 |
-
if
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_menu_pages_rs"))
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 110531
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_menu_pages_rs"))
|
includes/classes/menu-pages-tb.inc.php
CHANGED
@@ -1,83 +1,84 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* Toolbox for Menu Pages.
|
4 |
-
*
|
5 |
-
* Copyright: © 2009-2011
|
6 |
-
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
|
7 |
-
* (coded in the USA)
|
8 |
-
*
|
9 |
-
* Released under the terms of the GNU General Public License.
|
10 |
-
* You should have received a copy of the GNU General Public License,
|
11 |
-
* along with this software. In the main directory, see: /licensing/
|
12 |
-
* If not, see: {@link http://www.gnu.org/licenses/}.
|
13 |
-
*
|
14 |
-
* @package s2Member\Menu_Pages
|
15 |
-
* @since 131108
|
16 |
-
*/
|
17 |
-
if
|
18 |
-
exit(
|
19 |
|
20 |
-
if
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
{
|
22 |
/**
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
* @package s2Member\Menu_Pages
|
34 |
-
* @since 131108
|
35 |
-
*
|
36 |
-
* @return null
|
37 |
-
*/
|
38 |
-
public static function display ()
|
39 |
-
{
|
40 |
-
do_action("ws_plugin__s2member_during_menu_pages_before_toolbox_sections", get_defined_vars ());
|
41 |
-
|
42 |
-
ob_start(); // output buffer these so we can display a toggler conditionally.
|
43 |
|
44 |
-
|
45 |
-
{
|
46 |
-
echo '<a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Newsletter")) . '" target="_blank"><i class="fa fa-envelope"></i> s2 Updates (via Email)</a>';
|
47 |
-
}
|
48 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["upsell-pro"])
|
49 |
-
{
|
50 |
-
echo '<a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Pro Module / Prices")) . '" target="_blank" style="font-size:120%; font-weight:bold;"><i class="fa fa-money"></i> s2Member® Pro (Upgrade)</a>' . "\n";
|
51 |
-
}
|
52 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["installation"])
|
53 |
-
{
|
54 |
-
echo '<a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Professional Installation URI")) . '" target="_blank"><i class="fa fa-wrench"></i> Professional Installation Service</a>' . "\n";
|
55 |
-
}
|
56 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["kb"])
|
57 |
-
{
|
58 |
-
echo '<a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Knowledge Base")) . '" target="_blank"><i class="fa fa-lightbulb-o"></i> Knowledge Base</a>' . "\n";
|
59 |
-
}
|
60 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["videos"])
|
61 |
-
{
|
62 |
-
echo '<a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Video Tutorials")) . '" target="_blank"><i class="fa fa-film"></i> Video Tutorials</a>' . "\n";
|
63 |
-
}
|
64 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["support"])
|
65 |
-
{
|
66 |
-
echo '<a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Forum URI")) . '" target="_blank"><i class="fa fa-comments-o"></i> Community</a>' . "\n";
|
67 |
-
}
|
68 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["donations"])
|
69 |
-
{
|
70 |
-
echo '<a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Donate link")) . '" target="_blank"><i class="fa fa-heart-o"></i> Contribute</a>' . "\n";
|
71 |
-
}
|
72 |
-
if (($links = ob_get_clean()))
|
73 |
-
{
|
74 |
-
$links = '<div class="links">'.$links.'</div>';
|
75 |
-
echo $links; // output content now; w/ possible toggler.
|
76 |
-
}
|
77 |
-
do_action("ws_plugin__s2member_during_menu_pages_after_toolbox_sections", get_defined_vars ());
|
78 |
|
79 |
-
|
80 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
81 |
}
|
|
|
|
|
82 |
}
|
83 |
-
|
1 |
<?php
|
2 |
/**
|
3 |
+
* Toolbox for Menu Pages.
|
4 |
+
*
|
5 |
+
* Copyright: © 2009-2011
|
6 |
+
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
|
7 |
+
* (coded in the USA)
|
8 |
+
*
|
9 |
+
* Released under the terms of the GNU General Public License.
|
10 |
+
* You should have received a copy of the GNU General Public License,
|
11 |
+
* along with this software. In the main directory, see: /licensing/
|
12 |
+
* If not, see: {@link http://www.gnu.org/licenses/}.
|
13 |
+
*
|
14 |
+
* @package s2Member\Menu_Pages
|
15 |
+
* @since 131108
|
16 |
+
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
+
exit('Do not access this file directly.');
|
19 |
|
20 |
+
if(!class_exists('c_ws_plugin__s2member_menu_pages_tb'))
|
21 |
+
{
|
22 |
+
/**
|
23 |
+
* Toolbox for Menu Pages.
|
24 |
+
*
|
25 |
+
* @package s2Member\Menu_Pages
|
26 |
+
* @since 131108
|
27 |
+
*/
|
28 |
+
class c_ws_plugin__s2member_menu_pages_tb
|
29 |
{
|
30 |
/**
|
31 |
+
* Toolbox for Menu Pages.
|
32 |
+
*
|
33 |
+
* @package s2Member\Menu_Pages
|
34 |
+
* @since 131108
|
35 |
+
*
|
36 |
+
* @return null
|
37 |
+
*/
|
38 |
+
public static function display()
|
39 |
+
{
|
40 |
+
do_action('ws_plugin__s2member_during_menu_pages_before_toolbox_sections', get_defined_vars());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
|
42 |
+
ob_start(); // output buffer these so we can display a toggler conditionally.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
|
44 |
+
if($GLOBALS['WS_PLUGIN__']['s2member']['c']['menu_pages']['updates'])
|
45 |
+
{
|
46 |
+
echo '<a href="'.esc_attr(c_ws_plugin__s2member_readmes::parse_readme_value('Newsletter')).'" target="_blank"><i class="fa fa-envelope"></i> s2 Updates (via Email)</a>';
|
47 |
+
}
|
48 |
+
if($GLOBALS['WS_PLUGIN__']['s2member']['c']['menu_pages']['upsell-pro'])
|
49 |
+
{
|
50 |
+
echo '<a href="'.esc_attr(c_ws_plugin__s2member_readmes::parse_readme_value('Pro Module / Prices')).'" target="_blank" style="font-size:120%; font-weight:bold;"><i class="fa fa-money"></i> s2Member® Pro (Upgrade)</a>'."\n";
|
51 |
+
}
|
52 |
+
if($GLOBALS['WS_PLUGIN__']['s2member']['c']['menu_pages']['installation'])
|
53 |
+
{
|
54 |
+
echo '<a href="'.esc_attr(c_ws_plugin__s2member_readmes::parse_readme_value('Professional Installation URI')).'" target="_blank"><i class="fa fa-wrench"></i> Professional Installation Service</a>'."\n";
|
55 |
+
}
|
56 |
+
if($GLOBALS['WS_PLUGIN__']['s2member']['c']['menu_pages']['kb'])
|
57 |
+
{
|
58 |
+
echo '<a href="'.esc_attr(c_ws_plugin__s2member_readmes::parse_readme_value('Knowledge Base')).'" target="_blank"><i class="fa fa-lightbulb-o"></i> Knowledge Base</a>'."\n";
|
59 |
+
}
|
60 |
+
if($GLOBALS['WS_PLUGIN__']['s2member']['c']['menu_pages']['videos'])
|
61 |
+
{
|
62 |
+
echo '<a href="'.esc_attr(c_ws_plugin__s2member_readmes::parse_readme_value('Video Tutorials')).'" target="_blank"><i class="fa fa-film"></i> Video Tutorials</a>'."\n";
|
63 |
+
}
|
64 |
+
if($GLOBALS['WS_PLUGIN__']['s2member']['c']['menu_pages']['support'])
|
65 |
+
{
|
66 |
+
echo '<a href="'.esc_attr(c_ws_plugin__s2member_readmes::parse_readme_value('Forum URI')).'" target="_blank"><i class="fa fa-comments-o"></i> Community</a>'."\n";
|
67 |
+
}
|
68 |
+
if($GLOBALS['WS_PLUGIN__']['s2member']['c']['menu_pages']['donations'])
|
69 |
+
{
|
70 |
+
echo '<a href="'.esc_attr(c_ws_plugin__s2member_readmes::parse_readme_value('Donate link')).'" target="_blank"><i class="fa fa-heart-o"></i> Contribute</a>'."\n";
|
71 |
+
}
|
72 |
+
if($GLOBALS['WS_PLUGIN__']['s2member']['c']['menu_pages']['beta'])
|
73 |
+
{
|
74 |
+
echo '<a href="'.esc_attr(c_ws_plugin__s2member_readmes::parse_readme_value('Beta link')).'" target="_blank"><i class="fa fa-flask"></i> Beta Testers</a>'."\n";
|
75 |
+
}
|
76 |
+
if(($links = ob_get_clean()))
|
77 |
+
{
|
78 |
+
$links = '<div class="links">'.$links.'</div>';
|
79 |
+
echo $links; // output content now; w/ possible toggler.
|
80 |
}
|
81 |
+
do_action('ws_plugin__s2member_during_menu_pages_after_toolbox_sections', get_defined_vars());
|
82 |
+
}
|
83 |
}
|
84 |
+
}
|
includes/classes/menu-pages.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_menu_pages'))
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_menu_pages'))
|
includes/classes/meta-box-saves.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Meta_Boxes
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_meta_box_saves"))
|
14 |
* @package s2Member\Meta_Boxes
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_meta_box_saves"))
|
includes/classes/meta-box-security.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Meta_Boxes
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_meta_box_security"))
|
14 |
* @package s2Member\Meta_Boxes
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_meta_box_security"))
|
includes/classes/meta-boxes.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Meta_Boxes
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_meta_boxes"))
|
14 |
* @package s2Member\Meta_Boxes
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_meta_boxes"))
|
includes/classes/mms-patches.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Main_Multisite_Patches
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_mms_patches"))
|
14 |
* @package s2Member\Main_Multisite_Patches
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_mms_patches"))
|
includes/classes/mo-page-in.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Membership_Options_Page
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_mo_page_in"))
|
14 |
* @package s2Member\Membership_Options_Page
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_mo_page_in"))
|
includes/classes/mo-page.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Membership_Options_Page
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_mo_page"))
|
14 |
* @package s2Member\Membership_Options_Page
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_mo_page"))
|
includes/classes/no-cache.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\No_Cache
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_no_cache'))
|
@@ -95,8 +95,8 @@ if(!class_exists('c_ws_plugin__s2member_no_cache'))
|
|
95 |
if(!$once && (empty($_GET['qcAC']) || !filter_var($_GET['qcAC'], FILTER_VALIDATE_BOOLEAN))
|
96 |
&& (
|
97 |
$no_cache === TRUE // Forces no-cache constants; if `TRUE` explicitly.
|
98 |
-
|| ($no_cache === 'restricted' && (!defined('QUICK_CACHE_WHEN_LOGGED_IN') || !QUICK_CACHE_WHEN_LOGGED_IN))
|
99 |
-
|| (is_user_logged_in() && (!defined('QUICK_CACHE_WHEN_LOGGED_IN') || !QUICK_CACHE_WHEN_LOGGED_IN))
|
100 |
|| c_ws_plugin__s2member_systematics::is_s2_systematic_use_page()
|
101 |
)
|
102 |
)
|
@@ -110,7 +110,7 @@ if(!class_exists('c_ws_plugin__s2member_no_cache'))
|
|
110 |
* @var bool
|
111 |
*/
|
112 |
if(!defined('DONOTCACHEDB'))
|
113 |
-
define
|
114 |
|
115 |
/**
|
116 |
* No-cache Page for plugins.
|
@@ -121,7 +121,7 @@ if(!class_exists('c_ws_plugin__s2member_no_cache'))
|
|
121 |
* @var bool
|
122 |
*/
|
123 |
if(!defined('DONOTCACHEPAGE'))
|
124 |
-
define
|
125 |
|
126 |
/**
|
127 |
* No-cache Objects for plugins.
|
@@ -132,7 +132,18 @@ if(!class_exists('c_ws_plugin__s2member_no_cache'))
|
|
132 |
* @var bool
|
133 |
*/
|
134 |
if(!defined('DONOTCACHEOBJECT'))
|
135 |
-
define
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
136 |
|
137 |
/**
|
138 |
* No-cache anything for Quick Cache plugin.
|
@@ -143,7 +154,7 @@ if(!class_exists('c_ws_plugin__s2member_no_cache'))
|
|
143 |
* @var bool
|
144 |
*/
|
145 |
if(!defined('QUICK_CACHE_ALLOWED'))
|
146 |
-
define
|
147 |
|
148 |
$once = TRUE; // Set these one time only.
|
149 |
|
@@ -185,7 +196,11 @@ if(!class_exists('c_ws_plugin__s2member_no_cache'))
|
|
185 |
|
186 |
$using_selective_behavior = apply_filters('ws_plugin__s2member_no_cache_headers_selective', FALSE, get_defined_vars());
|
187 |
|
188 |
-
if(!$once && !headers_sent()
|
|
|
|
|
|
|
|
|
189 |
if(!apply_filters('ws_plugin__s2member_disable_no_cache_headers', FALSE, get_defined_vars()))
|
190 |
{
|
191 |
foreach(headers_list() as $header) // No-cache headers already sent? We need to check here.
|
14 |
* @package s2Member\No_Cache
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_no_cache'))
|
95 |
if(!$once && (empty($_GET['qcAC']) || !filter_var($_GET['qcAC'], FILTER_VALIDATE_BOOLEAN))
|
96 |
&& (
|
97 |
$no_cache === TRUE // Forces no-cache constants; if `TRUE` explicitly.
|
98 |
+
|| ($no_cache === 'restricted' && (!defined('ZENCACHE_WHEN_LOGGED_IN') || !ZENCACHE_WHEN_LOGGED_IN) && (!defined('QUICK_CACHE_WHEN_LOGGED_IN') || !QUICK_CACHE_WHEN_LOGGED_IN))
|
99 |
+
|| (is_user_logged_in() && (!defined('ZENCACHE_WHEN_LOGGED_IN') || !ZENCACHE_WHEN_LOGGED_IN) && (!defined('QUICK_CACHE_WHEN_LOGGED_IN') || !QUICK_CACHE_WHEN_LOGGED_IN))
|
100 |
|| c_ws_plugin__s2member_systematics::is_s2_systematic_use_page()
|
101 |
)
|
102 |
)
|
110 |
* @var bool
|
111 |
*/
|
112 |
if(!defined('DONOTCACHEDB'))
|
113 |
+
define('DONOTCACHEDB', TRUE);
|
114 |
|
115 |
/**
|
116 |
* No-cache Page for plugins.
|
121 |
* @var bool
|
122 |
*/
|
123 |
if(!defined('DONOTCACHEPAGE'))
|
124 |
+
define('DONOTCACHEPAGE', TRUE);
|
125 |
|
126 |
/**
|
127 |
* No-cache Objects for plugins.
|
132 |
* @var bool
|
133 |
*/
|
134 |
if(!defined('DONOTCACHEOBJECT'))
|
135 |
+
define('DONOTCACHEOBJECT', TRUE);
|
136 |
+
|
137 |
+
/**
|
138 |
+
* No-cache anything for ZenCache plugin.
|
139 |
+
*
|
140 |
+
* @package s2Member\No_Cache
|
141 |
+
* @since 3.5
|
142 |
+
*
|
143 |
+
* @var bool
|
144 |
+
*/
|
145 |
+
if(!defined('ZENCACHE_ALLOWED'))
|
146 |
+
define('ZENCACHE_ALLOWED', FALSE);
|
147 |
|
148 |
/**
|
149 |
* No-cache anything for Quick Cache plugin.
|
154 |
* @var bool
|
155 |
*/
|
156 |
if(!defined('QUICK_CACHE_ALLOWED'))
|
157 |
+
define('QUICK_CACHE_ALLOWED', FALSE);
|
158 |
|
159 |
$once = TRUE; // Set these one time only.
|
160 |
|
196 |
|
197 |
$using_selective_behavior = apply_filters('ws_plugin__s2member_no_cache_headers_selective', FALSE, get_defined_vars());
|
198 |
|
199 |
+
if(!$once && !headers_sent() // Only once, and only if possible.
|
200 |
+
&& (empty($_GET['zcABC']) || !filter_var($_GET['zcABC'], FILTER_VALIDATE_BOOLEAN))
|
201 |
+
&& (empty($_GET['qcABC']) || !filter_var($_GET['qcABC'], FILTER_VALIDATE_BOOLEAN))
|
202 |
+
&& ($no_cache || !$using_selective_behavior || c_ws_plugin__s2member_no_cache::$headers)
|
203 |
+
)
|
204 |
if(!apply_filters('ws_plugin__s2member_disable_no_cache_headers', FALSE, get_defined_vars()))
|
205 |
{
|
206 |
foreach(headers_list() as $header) // No-cache headers already sent? We need to check here.
|
includes/classes/op-notices.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Option_Notices
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_op_notices"))
|
14 |
* @package s2Member\Option_Notices
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_op_notices"))
|
includes/classes/option-forces.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Option_Forces
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_option_forces"))
|
14 |
* @package s2Member\Option_Forces
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_option_forces"))
|
includes/classes/pages-sp.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Pages
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_pages_sp'))
|
14 |
* @package s2Member\Pages
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_pages_sp'))
|
includes/classes/pages.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Pages
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_pages'))
|
14 |
* @package s2Member\Pages
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_pages'))
|
includes/classes/paypal-notify-in-billing-agreement-signup.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 140326
|
16 |
*/
|
17 |
-
if
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_paypal_notify_in_billing_agreement_signup"))
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 140326
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_paypal_notify_in_billing_agreement_signup"))
|
includes/classes/paypal-notify-in-cart.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
-
if
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_paypal_notify_in_cart"))
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_paypal_notify_in_cart"))
|
includes/classes/paypal-notify-in-express-checkout.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
-
if
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_paypal_notify_in_express_checkout"))
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_paypal_notify_in_express_checkout"))
|
includes/classes/paypal-notify-in-rec-profile-creation-w-level.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
-
if
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_paypal_notify_in_rec_profile_creation_w_level"))
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_paypal_notify_in_rec_profile_creation_w_level"))
|
includes/classes/paypal-notify-in-send-money.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
-
if
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_paypal_notify_in_send_money"))
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_paypal_notify_in_send_money"))
|
includes/classes/paypal-notify-in-sp-refund-reversal.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_notify_in_sp_refund_reversal'))
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_notify_in_sp_refund_reversal'))
|
includes/classes/paypal-notify-in-subscr-modify-w-level.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_notify_in_subscr_modify_w_level'))
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_notify_in_subscr_modify_w_level'))
|
includes/classes/paypal-notify-in-subscr-or-rp-cancellation-w-level.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
-
if
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_paypal_notify_in_subscr_or_rp_cancellation_w_level"))
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_paypal_notify_in_subscr_or_rp_cancellation_w_level"))
|
includes/classes/paypal-notify-in-subscr-or-rp-eots-w-level.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_notify_in_subscr_or_rp_eots_w_level'))
|
@@ -122,13 +122,12 @@ if(!class_exists('c_ws_plugin__s2member_paypal_notify_in_subscr_or_rp_eots_w_lev
|
|
122 |
if($existing_role !== $demotion_role) // Only if NOT the existing Role.
|
123 |
$user->set_role($demotion_role); // Give User the demotion Role.
|
124 |
|
125 |
-
if(apply_filters('ws_plugin__s2member_remove_ccaps_during_eot_events',
|
126 |
-
((bool)$GLOBALS['WS_PLUGIN__']['s2member']['o']['eots_remove_ccaps'] || $is_refund_or_reversal), get_defined_vars()))
|
127 |
foreach($user->allcaps as $cap => $cap_enabled)
|
128 |
if(preg_match('/^access_s2member_ccap_/', $cap))
|
129 |
$user->remove_cap($ccap = $cap);
|
130 |
|
131 |
-
delete_user_option($user_id, 's2member_custom');
|
132 |
delete_user_option($user_id, 's2member_subscr_id');
|
133 |
delete_user_option($user_id, 's2member_subscr_baid');
|
134 |
delete_user_option($user_id, 's2member_subscr_cid');
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_notify_in_subscr_or_rp_eots_w_level'))
|
122 |
if($existing_role !== $demotion_role) // Only if NOT the existing Role.
|
123 |
$user->set_role($demotion_role); // Give User the demotion Role.
|
124 |
|
125 |
+
if(apply_filters('ws_plugin__s2member_remove_ccaps_during_eot_events', (bool)$GLOBALS['WS_PLUGIN__']['s2member']['o']['eots_remove_ccaps'] || $is_refund_or_reversal, get_defined_vars()))
|
|
|
126 |
foreach($user->allcaps as $cap => $cap_enabled)
|
127 |
if(preg_match('/^access_s2member_ccap_/', $cap))
|
128 |
$user->remove_cap($ccap = $cap);
|
129 |
|
130 |
+
// delete_user_option($user_id, 's2member_custom');
|
131 |
delete_user_option($user_id, 's2member_subscr_id');
|
132 |
delete_user_option($user_id, 's2member_subscr_baid');
|
133 |
delete_user_option($user_id, 's2member_subscr_cid');
|
includes/classes/paypal-notify-in-subscr-or-rp-payment-failed-w-level.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
-
if
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_paypal_notify_in_subscr_or_rp_payment_failed_w_level"))
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_paypal_notify_in_subscr_or_rp_payment_failed_w_level"))
|
includes/classes/paypal-notify-in-subscr-or-rp-payment-w-level.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_notify_in_subscr_or_rp_payment_w_level'))
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_notify_in_subscr_or_rp_payment_w_level'))
|
includes/classes/paypal-notify-in-subscr-or-wa-w-level.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_notify_in_subscr_or_wa_w_level'))
|
@@ -81,6 +81,11 @@ if(!class_exists('c_ws_plugin__s2member_paypal_notify_in_subscr_or_wa_w_level'))
|
|
81 |
$paypal['currency'] = strtoupper($paypal['mc_currency']); // Normalize input currency.
|
82 |
$paypal['currency_symbol'] = c_ws_plugin__s2member_utils_cur::symbol($paypal['currency']);
|
83 |
|
|
|
|
|
|
|
|
|
|
|
84 |
$ipn_signup_vars = $paypal; // Create array of IPN signup vars w/o s2member_log.
|
85 |
unset($ipn_signup_vars['s2member_log']);
|
86 |
/*
|
@@ -156,6 +161,13 @@ if(!class_exists('c_ws_plugin__s2member_paypal_notify_in_subscr_or_wa_w_level'))
|
|
156 |
$pr_times['level'.$paypal['level']] = (!$pr_times['level'.$paypal['level']]) ? time() : $pr_times['level'.$paypal['level']];
|
157 |
update_user_option($user_id, 's2member_paid_registration_times', $pr_times);
|
158 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
159 |
c_ws_plugin__s2member_user_notes::clear_user_note_lines($user_id, '/^Demoted by s2Member\:/');
|
160 |
c_ws_plugin__s2member_user_notes::clear_user_note_lines($user_id, '/^Paid Subscr\. ID @ time of demotion\:/');
|
161 |
|
@@ -644,6 +656,13 @@ if(!class_exists('c_ws_plugin__s2member_paypal_notify_in_subscr_or_wa_w_level'))
|
|
644 |
$fields = get_user_option('s2member_custom_fields', $user_id); // These will be needed in the routines below.
|
645 |
$user_reg_ip = get_user_option('s2member_registration_ip', $user_id); // Original IP during Registration.
|
646 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
647 |
if($GLOBALS['WS_PLUGIN__']['s2member']['o']['payment_notification_urls'] && is_array($cv = preg_split('/\|/', $paypal['custom'])))
|
648 |
{
|
649 |
foreach(preg_split('/['."\r\n\t".']+/', $GLOBALS['WS_PLUGIN__']['s2member']['o']['payment_notification_urls']) as $url)
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_notify_in_subscr_or_wa_w_level'))
|
81 |
$paypal['currency'] = strtoupper($paypal['mc_currency']); // Normalize input currency.
|
82 |
$paypal['currency_symbol'] = c_ws_plugin__s2member_utils_cur::symbol($paypal['currency']);
|
83 |
|
84 |
+
if(!empty($coupon['coupon_code']) && c_ws_plugin__s2member_utils_conds::pro_is_installed())
|
85 |
+
{
|
86 |
+
$coupon_class = new c_ws_plugin__s2member_pro_coupons();
|
87 |
+
$coupon_class->update_uses($coupon['coupon_code']);
|
88 |
+
}
|
89 |
$ipn_signup_vars = $paypal; // Create array of IPN signup vars w/o s2member_log.
|
90 |
unset($ipn_signup_vars['s2member_log']);
|
91 |
/*
|
161 |
$pr_times['level'.$paypal['level']] = (!$pr_times['level'.$paypal['level']]) ? time() : $pr_times['level'.$paypal['level']];
|
162 |
update_user_option($user_id, 's2member_paid_registration_times', $pr_times);
|
163 |
|
164 |
+
if(!empty($coupon['full_coupon_code']) && c_ws_plugin__s2member_utils_conds::pro_is_installed())
|
165 |
+
{
|
166 |
+
$user_coupons = is_array($user_coupons = get_user_option('s2member_coupon_codes', $user_id)) ? $user_coupons : array();
|
167 |
+
$user_coupons = array_unique(array_merge($user_coupons, (array)$coupon['full_coupon_code']));
|
168 |
+
update_user_option($user_id, 's2member_coupon_codes', $user_coupons);
|
169 |
+
$processed_coupons = TRUE; // Flag for routines below.
|
170 |
+
}
|
171 |
c_ws_plugin__s2member_user_notes::clear_user_note_lines($user_id, '/^Demoted by s2Member\:/');
|
172 |
c_ws_plugin__s2member_user_notes::clear_user_note_lines($user_id, '/^Paid Subscr\. ID @ time of demotion\:/');
|
173 |
|
656 |
$fields = get_user_option('s2member_custom_fields', $user_id); // These will be needed in the routines below.
|
657 |
$user_reg_ip = get_user_option('s2member_registration_ip', $user_id); // Original IP during Registration.
|
658 |
|
659 |
+
if(empty($processed_coupons) && !empty($coupon['full_coupon_code']) && c_ws_plugin__s2member_utils_conds::pro_is_installed())
|
660 |
+
{
|
661 |
+
$user_coupons = is_array($user_coupons = get_user_option('s2member_coupon_codes', $user_id)) ? $user_coupons : array();
|
662 |
+
$user_coupons = array_unique(array_merge($user_coupons, (array)$coupon['full_coupon_code']));
|
663 |
+
update_user_option($user_id, 's2member_coupon_codes', $user_coupons);
|
664 |
+
$processed_coupons = TRUE; // Flag for routines below.
|
665 |
+
}
|
666 |
if($GLOBALS['WS_PLUGIN__']['s2member']['o']['payment_notification_urls'] && is_array($cv = preg_split('/\|/', $paypal['custom'])))
|
667 |
{
|
668 |
foreach(preg_split('/['."\r\n\t".']+/', $GLOBALS['WS_PLUGIN__']['s2member']['o']['payment_notification_urls']) as $url)
|
includes/classes/paypal-notify-in-virtual-terminal.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
-
if
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_paypal_notify_in_virtual_terminal"))
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_paypal_notify_in_virtual_terminal"))
|
includes/classes/paypal-notify-in-wa-ccaps-wo-level.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110815
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_notify_in_wa_ccaps_wo_level'))
|
@@ -65,6 +65,11 @@ if(!class_exists('c_ws_plugin__s2member_paypal_notify_in_wa_ccaps_wo_level'))
|
|
65 |
$paypal['currency'] = strtoupper($paypal['mc_currency']); // Normalize input currency.
|
66 |
$paypal['currency_symbol'] = c_ws_plugin__s2member_utils_cur::symbol($paypal['currency']);
|
67 |
|
|
|
|
|
|
|
|
|
|
|
68 |
if(preg_match('/(referenc|associat|updat|upgrad)/i', $paypal['option_name1']) && $paypal['option_selection1']) // Must have this information for Capability additions.
|
69 |
{
|
70 |
if(($user_id = c_ws_plugin__s2member_utils_users::get_user_id_with($paypal['txn_id'], $paypal['option_selection1'])) && is_object($user = new WP_User ($user_id)) && $user->ID)
|
@@ -99,6 +104,12 @@ if(!class_exists('c_ws_plugin__s2member_paypal_notify_in_wa_ccaps_wo_level'))
|
|
99 |
if(!get_user_option('s2member_registration_ip', $user_id))
|
100 |
update_user_option($user_id, 's2member_registration_ip', $paypal['ip']);
|
101 |
|
|
|
|
|
|
|
|
|
|
|
|
|
102 |
$paypal['s2member_log'][] = 's2Member Custom Capabilities updated w/ advanced update routines.';
|
103 |
|
104 |
$sbj = $GLOBALS['WS_PLUGIN__']['s2member']['o']['ccap_email_subject']; // The same for standard and w/ Pro Forms.
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110815
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_notify_in_wa_ccaps_wo_level'))
|
65 |
$paypal['currency'] = strtoupper($paypal['mc_currency']); // Normalize input currency.
|
66 |
$paypal['currency_symbol'] = c_ws_plugin__s2member_utils_cur::symbol($paypal['currency']);
|
67 |
|
68 |
+
if(!empty($coupon['coupon_code']) && c_ws_plugin__s2member_utils_conds::pro_is_installed())
|
69 |
+
{
|
70 |
+
$coupon_class = new c_ws_plugin__s2member_pro_coupons();
|
71 |
+
$coupon_class->update_uses($coupon['coupon_code']);
|
72 |
+
}
|
73 |
if(preg_match('/(referenc|associat|updat|upgrad)/i', $paypal['option_name1']) && $paypal['option_selection1']) // Must have this information for Capability additions.
|
74 |
{
|
75 |
if(($user_id = c_ws_plugin__s2member_utils_users::get_user_id_with($paypal['txn_id'], $paypal['option_selection1'])) && is_object($user = new WP_User ($user_id)) && $user->ID)
|
104 |
if(!get_user_option('s2member_registration_ip', $user_id))
|
105 |
update_user_option($user_id, 's2member_registration_ip', $paypal['ip']);
|
106 |
|
107 |
+
if(!empty($coupon['full_coupon_code']) && c_ws_plugin__s2member_utils_conds::pro_is_installed())
|
108 |
+
{
|
109 |
+
$user_coupons = is_array($user_coupons = get_user_option('s2member_coupon_codes', $user_id)) ? $user_coupons : array();
|
110 |
+
$user_coupons = array_unique(array_merge($user_coupons, (array)$coupon['full_coupon_code']));
|
111 |
+
update_user_option($user_id, 's2member_coupon_codes', $user_coupons);
|
112 |
+
}
|
113 |
$paypal['s2member_log'][] = 's2Member Custom Capabilities updated w/ advanced update routines.';
|
114 |
|
115 |
$sbj = $GLOBALS['WS_PLUGIN__']['s2member']['o']['ccap_email_subject']; // The same for standard and w/ Pro Forms.
|
includes/classes/paypal-notify-in-web-accept-sp.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_notify_in_web_accept_sp'))
|
@@ -64,6 +64,11 @@ if(!class_exists('c_ws_plugin__s2member_paypal_notify_in_web_accept_sp'))
|
|
64 |
$paypal['currency'] = strtoupper($paypal['mc_currency']); // Normalize input currency.
|
65 |
$paypal['currency_symbol'] = c_ws_plugin__s2member_utils_cur::symbol($paypal['currency']);
|
66 |
|
|
|
|
|
|
|
|
|
|
|
67 |
if(($sp_access_url = c_ws_plugin__s2member_sp_access::sp_access_link_gen($paypal['sp_ids'], $paypal['hours'])) && is_array($cv = preg_split('/\|/', $paypal['custom'])))
|
68 |
{
|
69 |
$processing = $during = TRUE; // Yes, we ARE processing this.
|
@@ -76,6 +81,12 @@ if(!class_exists('c_ws_plugin__s2member_paypal_notify_in_web_accept_sp'))
|
|
76 |
$sp_references = c_ws_plugin__s2member_utils_arrays::array_unique(array_merge($sp_references, $_sp_reference));
|
77 |
update_user_option($user_id, 's2member_sp_references', $sp_references);
|
78 |
|
|
|
|
|
|
|
|
|
|
|
|
|
79 |
$paypal['s2member_log'][] = 'Specific Post/Page ~ Sale associated with User ID: '.$user_id.'.';
|
80 |
}
|
81 |
$sbj = preg_replace('/%%sp_access_url%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($sp_access_url), $GLOBALS['WS_PLUGIN__']['s2member']['o'][(($_REQUEST['s2member_paypal_proxy'] && preg_match('/pro-emails/', $_REQUEST['s2member_paypal_proxy_use'])) ? 'pro_' : '').'sp_email_subject']);
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_notify_in_web_accept_sp'))
|
64 |
$paypal['currency'] = strtoupper($paypal['mc_currency']); // Normalize input currency.
|
65 |
$paypal['currency_symbol'] = c_ws_plugin__s2member_utils_cur::symbol($paypal['currency']);
|
66 |
|
67 |
+
if(!empty($coupon['coupon_code']) && c_ws_plugin__s2member_utils_conds::pro_is_installed())
|
68 |
+
{
|
69 |
+
$coupon_class = new c_ws_plugin__s2member_pro_coupons();
|
70 |
+
$coupon_class->update_uses($coupon['coupon_code']);
|
71 |
+
}
|
72 |
if(($sp_access_url = c_ws_plugin__s2member_sp_access::sp_access_link_gen($paypal['sp_ids'], $paypal['hours'])) && is_array($cv = preg_split('/\|/', $paypal['custom'])))
|
73 |
{
|
74 |
$processing = $during = TRUE; // Yes, we ARE processing this.
|
81 |
$sp_references = c_ws_plugin__s2member_utils_arrays::array_unique(array_merge($sp_references, $_sp_reference));
|
82 |
update_user_option($user_id, 's2member_sp_references', $sp_references);
|
83 |
|
84 |
+
if(!empty($coupon['full_coupon_code']) && c_ws_plugin__s2member_utils_conds::pro_is_installed())
|
85 |
+
{
|
86 |
+
$user_coupons = is_array($user_coupons = get_user_option('s2member_coupon_codes', $user_id)) ? $user_coupons : array();
|
87 |
+
$user_coupons = array_unique(array_merge($user_coupons, (array)$coupon['full_coupon_code']));
|
88 |
+
update_user_option($user_id, 's2member_coupon_codes', $user_coupons);
|
89 |
+
}
|
90 |
$paypal['s2member_log'][] = 'Specific Post/Page ~ Sale associated with User ID: '.$user_id.'.';
|
91 |
}
|
92 |
$sbj = preg_replace('/%%sp_access_url%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($sp_access_url), $GLOBALS['WS_PLUGIN__']['s2member']['o'][(($_REQUEST['s2member_paypal_proxy'] && preg_match('/pro-emails/', $_REQUEST['s2member_paypal_proxy_use'])) ? 'pro_' : '').'sp_email_subject']);
|
includes/classes/paypal-notify-in.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_notify_in'))
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_notify_in'))
|
includes/classes/paypal-notify.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_notify'))
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_notify'))
|
includes/classes/paypal-return-in-no-tx-data.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
-
if
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_paypal_return_in_no_tx_data"))
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_paypal_return_in_no_tx_data"))
|
includes/classes/paypal-return-in-proxy-ty-email.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
-
if
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_paypal_return_in_proxy_ty_email"))
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_paypal_return_in_proxy_ty_email"))
|
includes/classes/paypal-return-in-proxy-x-preview.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
-
if
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_paypal_return_in_proxy_x_preview"))
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_paypal_return_in_proxy_x_preview"))
|
includes/classes/paypal-return-in-subscr-modify-w-level.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_return_in_subscr_modify_w_level'))
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_return_in_subscr_modify_w_level'))
|
includes/classes/paypal-return-in-subscr-or-wa-w-level.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_return_in_subscr_or_wa_w_level'))
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_return_in_subscr_or_wa_w_level'))
|
includes/classes/paypal-return-in-wa-ccaps-wo-level.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_return_in_wa_ccaps_wo_level'))
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_return_in_wa_ccaps_wo_level'))
|
includes/classes/paypal-return-in-web-accept-sp.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_return_in_web_accept_sp'))
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 110720
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_return_in_web_accept_sp'))
|
includes/classes/paypal-return-in.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_paypal_return_in"))
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_paypal_return_in"))
|
includes/classes/paypal-return.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_return'))
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_paypal_return'))
|
includes/classes/paypal-utilities.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_paypal_utilities"))
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_paypal_utilities"))
|
includes/classes/posts-sp.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Posts
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_posts_sp'))
|
14 |
* @package s2Member\Posts
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_posts_sp'))
|
includes/classes/posts.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Posts
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_posts'))
|
14 |
* @package s2Member\Posts
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_posts'))
|
includes/classes/profile-in.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Profiles
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_profile_in'))
|
14 |
* @package s2Member\Profiles
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_profile_in'))
|
includes/classes/profile-mods-4bp-in.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Profiles
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_profile_mods_4bp_in'))
|
14 |
* @package s2Member\Profiles
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_profile_mods_4bp_in'))
|
includes/classes/profile-mods-4bp.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Profiles
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_profile_mods_4bp'))
|
14 |
* @package s2Member\Profiles
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_profile_mods_4bp'))
|
includes/classes/profile-mods-in.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Profiles
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_profile_mods_in'))
|
@@ -73,7 +73,7 @@ if(!class_exists('c_ws_plugin__s2member_profile_mods_in'))
|
|
73 |
if(!empty($_p['ws_plugin__s2member_profile_last_name']))
|
74 |
$userdata['last_name'] = $_p['ws_plugin__s2member_profile_last_name'];
|
75 |
|
76 |
-
wp_update_user($userdata); // OK. Now send this array for an update.
|
77 |
|
78 |
if($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields'])
|
79 |
if($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level('auto-detection', 'profile'))
|
14 |
* @package s2Member\Profiles
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_profile_mods_in'))
|
73 |
if(!empty($_p['ws_plugin__s2member_profile_last_name']))
|
74 |
$userdata['last_name'] = $_p['ws_plugin__s2member_profile_last_name'];
|
75 |
|
76 |
+
wp_update_user(wp_slash($userdata)); // OK. Now send this array for an update.
|
77 |
|
78 |
if($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields'])
|
79 |
if($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level('auto-detection', 'profile'))
|
includes/classes/profile-mods.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Profiles
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_profile_mods'))
|
14 |
* @package s2Member\Profiles
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_profile_mods'))
|
includes/classes/profile.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Profiles
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_profile'))
|
14 |
* @package s2Member\Profiles
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_profile'))
|
includes/classes/ptags-sp.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Tags
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_ptags_sp'))
|
14 |
* @package s2Member\Tags
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_ptags_sp'))
|
includes/classes/ptags.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Tags
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_ptags'))
|
14 |
* @package s2Member\Tags
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_ptags'))
|
includes/classes/querys.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Queries
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_querys'))
|
14 |
* @package s2Member\Queries
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_querys'))
|
includes/classes/readmes.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Readmes
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_readmes"))
|
14 |
* @package s2Member\Readmes
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_readmes"))
|
includes/classes/register-access.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Registrations
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_register_access'))
|
14 |
* @package s2Member\Registrations
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_register_access'))
|
includes/classes/register-in.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Registrations
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_register_in"))
|
14 |
* @package s2Member\Registrations
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_register_in"))
|
includes/classes/register.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Registrations
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_register"))
|
14 |
* @package s2Member\Registrations
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_register"))
|
includes/classes/registration-times.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Registrations
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_registration_times"))
|
14 |
* @package s2Member\Registrations
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_registration_times"))
|
includes/classes/registrations.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Registrations
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_registrations'))
|
@@ -300,7 +300,7 @@ if(!class_exists('c_ws_plugin__s2member_registrations'))
|
|
300 |
if(!empty($user_already_exists) && c_ws_plugin__s2member_utils_users::ms_user_login_email_exists_but_not_on_blog($user_login, $user_email, $meta['add_to_blog']))
|
301 |
{
|
302 |
add_user_to_blog($meta['add_to_blog'], $user_id, $meta['new_role']); // Add this User to the specified Blog.
|
303 |
-
wp_update_user(array('ID' => $user_id, 'user_pass' => $password)); // Update Password so it's the same as in the following msg.
|
304 |
wpmu_welcome_user_notification($user_id, $password, $meta); // Send welcome letter via email just like ``wpmu_activate_signup()`` does.
|
305 |
|
306 |
do_action('wpmu_activate_user', $user_id, $password, $meta); // Process Hook that would have been fired inside ``wpmu_activate_signup()``.
|
@@ -503,7 +503,7 @@ if(!class_exists('c_ws_plugin__s2member_registrations'))
|
|
503 |
{
|
504 |
$role = get_option('default_role'); // Use default Role.
|
505 |
add_existing_user_to_blog(array('user_id' => $user_id, 'role' => $role)); // Add User.
|
506 |
-
wp_update_user(array('ID' => $user_id, 'user_pass' => $user_pass)); // Update to ``$user_pass``.
|
507 |
|
508 |
do_action('ws_plugin__s2member_during_ms_create_existing_user', get_defined_vars());
|
509 |
do_action('user_register', $user_id); // So s2Member knows a User is registering.
|
@@ -669,13 +669,13 @@ if(!class_exists('c_ws_plugin__s2member_registrations'))
|
|
669 |
if(!$user->display_name || $user->display_name === $user->user_login)
|
670 |
{
|
671 |
if($custom_reg_display_name === 'full' && $name)
|
672 |
-
wp_update_user(array('ID' => $user_id, 'display_name' => $name));
|
673 |
else if($custom_reg_display_name === 'first' && $fname)
|
674 |
-
wp_update_user(array('ID' => $user_id, 'display_name' => $fname));
|
675 |
else if($custom_reg_display_name === 'last' && $lname)
|
676 |
-
wp_update_user(array('ID' => $user_id, 'display_name' => $lname));
|
677 |
else if($custom_reg_display_name === 'login' && $login)
|
678 |
-
wp_update_user(array('ID' => $user_id, 'display_name' => $login));
|
679 |
}
|
680 |
if(is_multisite()) // Should we handle Main Site permissions and Originating Blog ID#?
|
681 |
{
|
@@ -844,13 +844,13 @@ if(!class_exists('c_ws_plugin__s2member_registrations'))
|
|
844 |
if(!$user->display_name || $user->display_name === $user->user_login)
|
845 |
{
|
846 |
if($custom_reg_display_name === 'full' && $name)
|
847 |
-
wp_update_user(array('ID' => $user_id, 'display_name' => $name));
|
848 |
else if($custom_reg_display_name === 'first' && $fname)
|
849 |
-
wp_update_user(array('ID' => $user_id, 'display_name' => $fname));
|
850 |
else if($custom_reg_display_name === 'last' && $lname)
|
851 |
-
wp_update_user(array('ID' => $user_id, 'display_name' => $lname));
|
852 |
else if($custom_reg_display_name === 'login' && $login)
|
853 |
-
wp_update_user(array('ID' => $user_id, 'display_name' => $login));
|
854 |
}
|
855 |
if(is_multisite( /* Should we handle Main Site permissions and Originating Blog ID#? */))
|
856 |
{
|
@@ -985,13 +985,13 @@ if(!class_exists('c_ws_plugin__s2member_registrations'))
|
|
985 |
if(!$user->display_name || $user->display_name === $user->user_login)
|
986 |
{
|
987 |
if($custom_reg_display_name === 'full' && $name)
|
988 |
-
wp_update_user(array('ID' => $user_id, 'display_name' => $name));
|
989 |
else if($custom_reg_display_name === 'first' && $fname)
|
990 |
-
wp_update_user(array('ID' => $user_id, 'display_name' => $fname));
|
991 |
else if($custom_reg_display_name === 'last' && $lname)
|
992 |
-
wp_update_user(array('ID' => $user_id, 'display_name' => $lname));
|
993 |
else if($custom_reg_display_name === 'login' && $login)
|
994 |
-
wp_update_user(array('ID' => $user_id, 'display_name' => $login));
|
995 |
}
|
996 |
if(is_multisite()) // Should we handle Main Site permissions and Originating Blog ID#?
|
997 |
{
|
@@ -1190,6 +1190,7 @@ if(!class_exists('c_ws_plugin__s2member_registrations'))
|
|
1190 |
Logging now supports Multisite Networking as well. */
|
1191 |
|
1192 |
$reg_vars = get_defined_vars(); // All defined vars.
|
|
|
1193 |
// No need to include these in the logs. Unset before log entry.
|
1194 |
unset($reg_vars['wpdb'], $reg_vars['current_site'], $reg_vars['current_blog']);
|
1195 |
c_ws_plugin__s2member_utils_logs::log_entry('reg-handler', $reg_vars);
|
14 |
* @package s2Member\Registrations
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_registrations'))
|
300 |
if(!empty($user_already_exists) && c_ws_plugin__s2member_utils_users::ms_user_login_email_exists_but_not_on_blog($user_login, $user_email, $meta['add_to_blog']))
|
301 |
{
|
302 |
add_user_to_blog($meta['add_to_blog'], $user_id, $meta['new_role']); // Add this User to the specified Blog.
|
303 |
+
wp_update_user(wp_slash(array('ID' => $user_id, 'user_pass' => $password))); // Update Password so it's the same as in the following msg.
|
304 |
wpmu_welcome_user_notification($user_id, $password, $meta); // Send welcome letter via email just like ``wpmu_activate_signup()`` does.
|
305 |
|
306 |
do_action('wpmu_activate_user', $user_id, $password, $meta); // Process Hook that would have been fired inside ``wpmu_activate_signup()``.
|
503 |
{
|
504 |
$role = get_option('default_role'); // Use default Role.
|
505 |
add_existing_user_to_blog(array('user_id' => $user_id, 'role' => $role)); // Add User.
|
506 |
+
wp_update_user(wp_slash(array('ID' => $user_id, 'user_pass' => $user_pass))); // Update to ``$user_pass``.
|
507 |
|
508 |
do_action('ws_plugin__s2member_during_ms_create_existing_user', get_defined_vars());
|
509 |
do_action('user_register', $user_id); // So s2Member knows a User is registering.
|
669 |
if(!$user->display_name || $user->display_name === $user->user_login)
|
670 |
{
|
671 |
if($custom_reg_display_name === 'full' && $name)
|
672 |
+
wp_update_user(wp_slash(array('ID' => $user_id, 'display_name' => $name)));
|
673 |
else if($custom_reg_display_name === 'first' && $fname)
|
674 |
+
wp_update_user(wp_slash(array('ID' => $user_id, 'display_name' => $fname)));
|
675 |
else if($custom_reg_display_name === 'last' && $lname)
|
676 |
+
wp_update_user(wp_slash(array('ID' => $user_id, 'display_name' => $lname)));
|
677 |
else if($custom_reg_display_name === 'login' && $login)
|
678 |
+
wp_update_user(wp_slash(array('ID' => $user_id, 'display_name' => $login)));
|
679 |
}
|
680 |
if(is_multisite()) // Should we handle Main Site permissions and Originating Blog ID#?
|
681 |
{
|
844 |
if(!$user->display_name || $user->display_name === $user->user_login)
|
845 |
{
|
846 |
if($custom_reg_display_name === 'full' && $name)
|
847 |
+
wp_update_user(wp_slash(array('ID' => $user_id, 'display_name' => $name)));
|
848 |
else if($custom_reg_display_name === 'first' && $fname)
|
849 |
+
wp_update_user(wp_slash(array('ID' => $user_id, 'display_name' => $fname)));
|
850 |
else if($custom_reg_display_name === 'last' && $lname)
|
851 |
+
wp_update_user(wp_slash(array('ID' => $user_id, 'display_name' => $lname)));
|
852 |
else if($custom_reg_display_name === 'login' && $login)
|
853 |
+
wp_update_user(wp_slash(array('ID' => $user_id, 'display_name' => $login)));
|
854 |
}
|
855 |
if(is_multisite( /* Should we handle Main Site permissions and Originating Blog ID#? */))
|
856 |
{
|
985 |
if(!$user->display_name || $user->display_name === $user->user_login)
|
986 |
{
|
987 |
if($custom_reg_display_name === 'full' && $name)
|
988 |
+
wp_update_user(wp_slash(array('ID' => $user_id, 'display_name' => $name)));
|
989 |
else if($custom_reg_display_name === 'first' && $fname)
|
990 |
+
wp_update_user(wp_slash(array('ID' => $user_id, 'display_name' => $fname)));
|
991 |
else if($custom_reg_display_name === 'last' && $lname)
|
992 |
+
wp_update_user(wp_slash(array('ID' => $user_id, 'display_name' => $lname)));
|
993 |
else if($custom_reg_display_name === 'login' && $login)
|
994 |
+
wp_update_user(wp_slash(array('ID' => $user_id, 'display_name' => $login)));
|
995 |
}
|
996 |
if(is_multisite()) // Should we handle Main Site permissions and Originating Blog ID#?
|
997 |
{
|
1190 |
Logging now supports Multisite Networking as well. */
|
1191 |
|
1192 |
$reg_vars = get_defined_vars(); // All defined vars.
|
1193 |
+
$reg_vars['_COOKIE'] = $_COOKIE; // Record cookies also.
|
1194 |
// No need to include these in the logs. Unset before log entry.
|
1195 |
unset($reg_vars['wpdb'], $reg_vars['current_site'], $reg_vars['current_blog']);
|
1196 |
c_ws_plugin__s2member_utils_logs::log_entry('reg-handler', $reg_vars);
|
includes/classes/return-templates.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Return_Templates
|
15 |
* @since 110720
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_return_templates'))
|
14 |
* @package s2Member\Return_Templates
|
15 |
* @since 110720
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_return_templates'))
|
includes/classes/roles-caps.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Roles_Caps
|
15 |
* @since 110524RC
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_roles_caps'))
|
14 |
* @package s2Member\Roles_Caps
|
15 |
* @since 110524RC
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_roles_caps'))
|
includes/classes/ruris-sp.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\URIs
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_ruris_sp'))
|
14 |
* @package s2Member\URIs
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_ruris_sp'))
|
includes/classes/ruris.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\URIs
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_ruris'))
|
14 |
* @package s2Member\URIs
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_ruris'))
|
includes/classes/s-badge-status-in.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Security_Badges
|
15 |
* @since 110524RC
|
16 |
*/
|
17 |
-
if
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_s_badge_status_in"))
|
14 |
* @package s2Member\Security_Badges
|
15 |
* @since 110524RC
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_s_badge_status_in"))
|
includes/classes/s-badge-status.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Security_Badges
|
15 |
* @since 110524RC
|
16 |
*/
|
17 |
-
if
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_s_badge_status"))
|
14 |
* @package s2Member\Security_Badges
|
15 |
* @since 110524RC
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_s_badge_status"))
|
includes/classes/sc-files-in.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\s2File
|
15 |
* @since 110926
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_sc_files_in'))
|
14 |
* @package s2Member\s2File
|
15 |
* @since 110926
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_sc_files_in'))
|
includes/classes/sc-files.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\s2File
|
15 |
* @since 110926
|
16 |
*/
|
17 |
-
if(
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_sc_files"))
|
14 |
* @package s2Member\s2File
|
15 |
* @since 110926
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_sc_files"))
|
includes/classes/sc-gets-in.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\s2Get
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_sc_gets_in'))
|
14 |
* @package s2Member\s2Get
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_sc_gets_in'))
|
includes/classes/sc-gets.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\s2Get
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_sc_gets'))
|
14 |
* @package s2Member\s2Get
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_sc_gets'))
|
includes/classes/sc-if-conds-in.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\s2If
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_sc_if_conds_in'))
|
14 |
* @package s2Member\s2If
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_sc_if_conds_in'))
|
includes/classes/sc-if-conds.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\s2If
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_sc_if_conds'))
|
14 |
* @package s2Member\s2If
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_sc_if_conds'))
|
includes/classes/sc-keys-in.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\s2Key
|
15 |
* @since 110912
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_sc_keys_in'))
|
14 |
* @package s2Member\s2Key
|
15 |
* @since 110912
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_sc_keys_in'))
|
includes/classes/sc-keys.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\s2Key
|
15 |
* @since 110912
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_sc_keys'))
|
14 |
* @package s2Member\s2Key
|
15 |
* @since 110912
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_sc_keys'))
|
includes/classes/sc-paypal-button-e.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_sc_paypal_button_e"))
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_sc_paypal_button_e"))
|
includes/classes/sc-paypal-button-in.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_sc_paypal_button_in"))
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_sc_paypal_button_in"))
|
includes/classes/sc-paypal-button.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_sc_paypal_button"))
|
14 |
* @package s2Member\PayPal
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_sc_paypal_button"))
|
includes/classes/sc-profile-in.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Profiles
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_sc_profile_in'))
|
14 |
* @package s2Member\Profiles
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_sc_profile_in'))
|
includes/classes/sc-profile.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Profiles
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_sc_profile"))
|
14 |
* @package s2Member\Profiles
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_sc_profile"))
|
includes/classes/sc-s-badge-in.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Security_Badges
|
15 |
* @since 110524RC
|
16 |
*/
|
17 |
-
if
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_sc_s_badge_in"))
|
14 |
* @package s2Member\Security_Badges
|
15 |
* @since 110524RC
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_sc_s_badge_in"))
|
includes/classes/sc-s-badge.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Security_Badges
|
15 |
* @since 110524RC
|
16 |
*/
|
17 |
-
if
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_sc_s_badge"))
|
14 |
* @package s2Member\Security_Badges
|
15 |
* @since 110524RC
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_sc_s_badge"))
|
includes/classes/security.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Security
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_security'))
|
14 |
* @package s2Member\Security
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_security'))
|
includes/classes/sp-access.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\SP_Access
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_sp_access"))
|
@@ -92,7 +92,7 @@ if (!class_exists ("c_ws_plugin__s2member_sp_access"))
|
|
92 |
* @param bool $read_only Optional. Defaults to false. If ``$read_only = true``,
|
93 |
* no session cookies are set, no IP Restrictions are checked, and script execution is not exited on Link failure.
|
94 |
* In other words, with ``$read_only = true``, this function will simply return true or false.
|
95 |
-
* @return null|bool
|
96 |
* If access is denied with ``$read_only = true`` simply return false. If access is denied with ``$read_only = false``, return false; but if a Specific Post/Page Access Link is currently being used, we exit with a warning about Access Link expiration here.
|
97 |
*/
|
98 |
public static function sp_access ($sp_id = FALSE, $read_only = FALSE)
|
@@ -118,7 +118,7 @@ if (!class_exists ("c_ws_plugin__s2member_sp_access"))
|
|
118 |
c_ws_plugin__s2member_sp_access::sp_access_session ($_g["s2member_sp_access"]);
|
119 |
|
120 |
if ($read_only || c_ws_plugin__s2member_ip_restrictions::ip_restrictions_ok ($_SERVER["REMOTE_ADDR"], $sp_access_value))
|
121 |
-
return apply_filters("ws_plugin__s2member_sp_access",
|
122 |
}
|
123 |
}
|
124 |
}
|
14 |
* @package s2Member\SP_Access
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_sp_access"))
|
92 |
* @param bool $read_only Optional. Defaults to false. If ``$read_only = true``,
|
93 |
* no session cookies are set, no IP Restrictions are checked, and script execution is not exited on Link failure.
|
94 |
* In other words, with ``$read_only = true``, this function will simply return true or false.
|
95 |
+
* @return null|bool|string Returns `true` (or the SP access string), if access is indeed allowed in one way or another.
|
96 |
* If access is denied with ``$read_only = true`` simply return false. If access is denied with ``$read_only = false``, return false; but if a Specific Post/Page Access Link is currently being used, we exit with a warning about Access Link expiration here.
|
97 |
*/
|
98 |
public static function sp_access ($sp_id = FALSE, $read_only = FALSE)
|
118 |
c_ws_plugin__s2member_sp_access::sp_access_session ($_g["s2member_sp_access"]);
|
119 |
|
120 |
if ($read_only || c_ws_plugin__s2member_ip_restrictions::ip_restrictions_ok ($_SERVER["REMOTE_ADDR"], $sp_access_value))
|
121 |
+
return apply_filters("ws_plugin__s2member_sp_access", $sp_access_value, get_defined_vars (), "auth-via-link-session");
|
122 |
}
|
123 |
}
|
124 |
}
|
includes/classes/ssl-in.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\SSL
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_ssl_in'))
|
14 |
* @package s2Member\SSL
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_ssl_in'))
|
includes/classes/ssl.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\SSL
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_ssl'))
|
14 |
* @package s2Member\SSL
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_ssl'))
|
includes/classes/systematics-sp.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Systematics
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_systematics_sp'))
|
14 |
* @package s2Member\Systematics
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_systematics_sp'))
|
includes/classes/systematics.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Systematics
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_systematics'))
|
14 |
* @package s2Member\Systematics
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_systematics'))
|
includes/classes/tracking-codes.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Tracking
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_tracking_codes"))
|
14 |
* @package s2Member\Tracking
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_tracking_codes"))
|
includes/classes/tracking-cookies-in.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Tracking
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_tracking_cookies_in"))
|
14 |
* @package s2Member\Tracking
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_tracking_cookies_in"))
|
includes/classes/tracking-cookies.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Tracking
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_tracking_cookies"))
|
14 |
* @package s2Member\Tracking
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_tracking_cookies"))
|
includes/classes/translations.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Translations
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_translations"))
|
14 |
* @package s2Member\Translations
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_translations"))
|
includes/classes/user-access.inc.php
CHANGED
@@ -1,173 +1,170 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* User access routines.
|
4 |
-
*
|
5 |
-
* Copyright: © 2009-2011
|
6 |
-
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
|
7 |
-
* (coded in the USA)
|
8 |
-
*
|
9 |
-
* Released under the terms of the GNU General Public License.
|
10 |
-
* You should have received a copy of the GNU General Public License,
|
11 |
-
* along with this software. In the main directory, see: /licensing/
|
12 |
-
* If not, see: {@link http://www.gnu.org/licenses/}.
|
13 |
-
*
|
14 |
-
* @package s2Member\User_Access
|
15 |
-
* @since 3.5
|
16 |
-
*/
|
17 |
-
if
|
18 |
-
exit (
|
19 |
|
20 |
-
if
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
{
|
22 |
/**
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
{
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
*
|
60 |
-
* @package s2Member\User_Access
|
61 |
-
* @since 3.5
|
62 |
-
*
|
63 |
-
* @param \WP_User $user Optional. A `WP_User` object. Defaults to the current User.
|
64 |
-
* In order to check the current User, you must call this function with no arguments/parameters.
|
65 |
-
* @return array Array of Custom Capabilities, or an empty array if they have no Custom Capabilities, or if ``$user`` does not exist, or if no User is currently logged-in.
|
66 |
-
*/
|
67 |
-
public static function user_access_ccaps ($user = NULL)
|
68 |
-
{
|
69 |
-
if ((func_num_args () && (!is_object ($user) || empty($user->ID))) || (!func_num_args () && !$user && (!is_object ($user = (is_user_logged_in ()) ? wp_get_current_user () : false) || empty($user->ID))))
|
70 |
-
{
|
71 |
-
return apply_filters("ws_plugin__s2member_user_access_ccaps", array(), get_defined_vars ());
|
72 |
-
}
|
73 |
-
else // Otherwise, we DO have the $user object available.
|
74 |
-
{
|
75 |
-
$ccaps = array(); // Initializes $ccaps array.
|
76 |
|
77 |
-
|
78 |
-
|
79 |
-
|
|
|
|
|
|
|
|
|
80 |
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
|
|
|
|
|
|
|
|
104 |
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
return apply_filters("ws_plugin__s2member_user_access_role_to_level", -1, get_defined_vars ());
|
129 |
-
}
|
130 |
-
else if (in_array($role, array("administrator", "editor", "author", "contributor", "bbp_moderator")))
|
131 |
-
{
|
132 |
-
return apply_filters("ws_plugin__s2member_user_access_role_to_level", $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"], get_defined_vars ());
|
133 |
-
}
|
134 |
-
else if (preg_match ("/^s2member_level([0-9]+)$/i", $role, $m) && $m[1] >= 1) // Test for s2Member Roles.
|
135 |
-
{
|
136 |
-
return apply_filters("ws_plugin__s2member_user_access_role_to_level", (int)$m[1], get_defined_vars ());
|
137 |
-
}
|
138 |
-
else if ($role === "subscriber") // Testing for Free Subscriber Role.
|
139 |
-
{
|
140 |
-
return apply_filters("ws_plugin__s2member_user_access_role_to_level", 0, get_defined_vars ());
|
141 |
-
}
|
142 |
-
else // Else we assume this is a "User" ( a Free Subscriber with an Access Level of 0. ).
|
143 |
-
return apply_filters("ws_plugin__s2member_user_access_role_to_level", 0, get_defined_vars ());
|
144 |
-
}
|
145 |
-
/**
|
146 |
-
* Determines Access Label for a User/Member.
|
147 |
-
*
|
148 |
-
* If ``$user`` is NOT passed in, check the current User/Member.
|
149 |
-
* If ``$user`` IS passed in, this function will check a specific ``$user``.
|
150 |
-
*
|
151 |
-
* @package s2Member\User_Access
|
152 |
-
* @since 3.5
|
153 |
-
*
|
154 |
-
* @param object $user Optional. A `WP_User` object. Defaults to the current User.
|
155 |
-
* In order to check the current User, you must call this function with no arguments/parameters.
|
156 |
-
* @return string Access Level Label, empty string if ``$user`` does not exist, or if no User is currently logged-in.
|
157 |
-
*/
|
158 |
-
public static function user_access_label ($user = FALSE)
|
159 |
-
{
|
160 |
-
if ((func_num_args () && (!is_object ($user) || empty($user->ID))) || (!func_num_args () && !$user && (!is_object ($user = (is_user_logged_in ()) ? wp_get_current_user () : false) || empty($user->ID))))
|
161 |
-
{
|
162 |
-
return apply_filters("ws_plugin__s2member_user_access_label", "", get_defined_vars ()); // No $user, or NOT logged in.
|
163 |
-
}
|
164 |
-
else if (($level = c_ws_plugin__s2member_user_access::user_access_level ($user)) >= 0 && !empty($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $level . "_label"]))
|
165 |
-
{
|
166 |
-
return apply_filters("ws_plugin__s2member_user_access_label", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $level . "_label"], get_defined_vars ());
|
167 |
-
}
|
168 |
-
else // Else there is no Label configured for this User/Member. Return empty string.
|
169 |
-
return apply_filters("ws_plugin__s2member_user_access_label", "", get_defined_vars ());
|
170 |
-
}
|
171 |
}
|
|
|
|
|
|
|
172 |
}
|
173 |
-
|
1 |
<?php
|
2 |
/**
|
3 |
+
* User access routines.
|
4 |
+
*
|
5 |
+
* Copyright: © 2009-2011
|
6 |
+
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
|
7 |
+
* (coded in the USA)
|
8 |
+
*
|
9 |
+
* Released under the terms of the GNU General Public License.
|
10 |
+
* You should have received a copy of the GNU General Public License,
|
11 |
+
* along with this software. In the main directory, see: /licensing/
|
12 |
+
* If not, see: {@link http://www.gnu.org/licenses/}.
|
13 |
+
*
|
14 |
+
* @package s2Member\User_Access
|
15 |
+
* @since 3.5
|
16 |
+
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
+
exit ('Do not access this file directly.');
|
19 |
|
20 |
+
if(!class_exists('c_ws_plugin__s2member_user_access'))
|
21 |
+
{
|
22 |
+
/**
|
23 |
+
* User access routines.
|
24 |
+
*
|
25 |
+
* @package s2Member\User_Access
|
26 |
+
* @since 3.5
|
27 |
+
*/
|
28 |
+
class c_ws_plugin__s2member_user_access
|
29 |
{
|
30 |
/**
|
31 |
+
* Determines the Access Role of a User/Member.
|
32 |
+
*
|
33 |
+
* If ``$user`` is NOT passed in, check the current User/Member.
|
34 |
+
* If ``$user`` IS passed in, this function will check a specific ``$user``.
|
35 |
+
* Returns their Role ID/Name value.
|
36 |
+
*
|
37 |
+
* @package s2Member\User_Access
|
38 |
+
* @since 3.5
|
39 |
+
*
|
40 |
+
* @param \WP_User $user Optional. A `WP_User` object. Defaults to the current User.
|
41 |
+
* In order to check the current User, you must call this function with no arguments/parameters.
|
42 |
+
*
|
43 |
+
* @return string Role ID/Name, or an empty string if they have no Role, or if ``$user`` does not exist, or if no User is currently logged-in.
|
44 |
+
*/
|
45 |
+
public static function user_access_role($user = NULL)
|
46 |
+
{
|
47 |
+
if((func_num_args() && (!is_object($user) || empty($user->ID))) || (!func_num_args() && !$user && (!is_object($user = (is_user_logged_in()) ? wp_get_current_user() : FALSE) || empty($user->ID))))
|
48 |
+
return apply_filters('ws_plugin__s2member_user_access_role', '', get_defined_vars());
|
49 |
+
|
50 |
+
else // Else we return the first Role in their array of assigned WordPress Roles.
|
51 |
+
return apply_filters('ws_plugin__s2member_user_access_role', reset($user->roles), get_defined_vars());
|
52 |
+
}
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Determines Custom Capabilities of a User/Member.
|
56 |
+
*
|
57 |
+
* If ``$user`` is NOT passed in, check the current User/Member.
|
58 |
+
* If ``$user`` IS passed in, this function will check a specific ``$user``.
|
59 |
+
* Returns an array of Custom Capabilities.
|
60 |
+
*
|
61 |
+
* @package s2Member\User_Access
|
62 |
+
* @since 3.5
|
63 |
+
*
|
64 |
+
* @param \WP_User $user Optional. A `WP_User` object. Defaults to the current User.
|
65 |
+
* In order to check the current User, you must call this function with no arguments/parameters.
|
66 |
+
*
|
67 |
+
* @return array Array of Custom Capabilities, or an empty array if they have no Custom Capabilities, or if ``$user`` does not exist, or if no User is currently logged-in.
|
68 |
+
*/
|
69 |
+
public static function user_access_ccaps($user = NULL)
|
70 |
+
{
|
71 |
+
if((func_num_args() && (!is_object($user) || empty($user->ID))) || (!func_num_args() && !$user && (!is_object($user = (is_user_logged_in()) ? wp_get_current_user() : FALSE) || empty($user->ID))))
|
72 |
+
return apply_filters('ws_plugin__s2member_user_access_ccaps', array(), get_defined_vars());
|
73 |
+
|
74 |
+
else // Otherwise, we DO have the $user object available.
|
75 |
{
|
76 |
+
$ccaps = array(); // Initializes $ccaps array.
|
77 |
+
|
78 |
+
foreach($user->allcaps as $cap => $cap_enabled)
|
79 |
+
if(preg_match('/^access_s2member_ccap_/', $cap) && $cap_enabled)
|
80 |
+
$ccaps[] = preg_replace('/^access_s2member_ccap_/', '', $cap);
|
81 |
+
|
82 |
+
return apply_filters('ws_plugin__s2member_user_access_ccaps', $ccaps, get_defined_vars());
|
83 |
+
}
|
84 |
+
}
|
85 |
+
|
86 |
+
/**
|
87 |
+
* Determines Access Level of a User/Member.
|
88 |
+
*
|
89 |
+
* If ``$user`` is NOT passed in, check the current User/Member.
|
90 |
+
* If ``$user`` IS passed in, this function will check a specific ``$user``.
|
91 |
+
* Returns `-1` thru number of configured Levels, according to the Access Level#.
|
92 |
+
*
|
93 |
+
* @package s2Member\User_Access
|
94 |
+
* @since 3.5
|
95 |
+
*
|
96 |
+
* @param object $user Optional. A `WP_User` object. Defaults to the current User.
|
97 |
+
* In order to check the current User, you must call this function with no arguments/parameters.
|
98 |
+
*
|
99 |
+
* @return int Access Level#, `-1` if ``$user`` does not exist, or if no User is currently logged-in.
|
100 |
+
*/
|
101 |
+
public static function user_access_level($user = NULL)
|
102 |
+
{
|
103 |
+
if((func_num_args() && (!is_object($user) || empty($user->ID))) || (!func_num_args() && !$user && (!is_object($user = (is_user_logged_in()) ? wp_get_current_user() : FALSE) || empty($user->ID))))
|
104 |
+
return apply_filters('ws_plugin__s2member_user_access_level', -1, get_defined_vars()); // No $user, or NOT logged in.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
|
106 |
+
for($n = $GLOBALS['WS_PLUGIN__']['s2member']['c']['levels']; $n >= 0; $n--)
|
107 |
+
if($user->has_cap('access_s2member_level'.$n)) // Membership Level access.
|
108 |
+
{
|
109 |
+
return apply_filters('ws_plugin__s2member_user_access_level', $n, get_defined_vars());
|
110 |
+
}
|
111 |
+
return apply_filters('ws_plugin__s2member_user_access_level', 0, get_defined_vars());
|
112 |
+
}
|
113 |
|
114 |
+
/**
|
115 |
+
* Determines Access Level of a specific Role.
|
116 |
+
*
|
117 |
+
* @package s2Member\User_Access
|
118 |
+
* @since 3.5
|
119 |
+
*
|
120 |
+
* @param string $role A WordPress Role ID/Name.
|
121 |
+
*
|
122 |
+
* @return int Access Level#, `-1` if ``$role`` is empty.
|
123 |
+
*/
|
124 |
+
public static function user_access_role_to_level($role = '')
|
125 |
+
{
|
126 |
+
if(!($role = strtolower($role))) // No ``$role`` provided. Default value of -1.
|
127 |
+
return apply_filters('ws_plugin__s2member_user_access_role_to_level', -1, get_defined_vars());
|
128 |
+
|
129 |
+
else if(in_array($role, array('administrator', 'editor', 'author', 'contributor', 'bbp_moderator')))
|
130 |
+
return apply_filters('ws_plugin__s2member_user_access_role_to_level', $GLOBALS['WS_PLUGIN__']['s2member']['c']['levels'], get_defined_vars());
|
131 |
+
|
132 |
+
else if(preg_match('/^s2member_level([0-9]+)$/i', $role, $m) && $m[1] >= 1) // Test for s2Member Roles.
|
133 |
+
return apply_filters('ws_plugin__s2member_user_access_role_to_level', (int)$m[1], get_defined_vars());
|
134 |
+
|
135 |
+
else if($role === 'subscriber') // Testing for Free Subscriber Role.
|
136 |
+
return apply_filters('ws_plugin__s2member_user_access_role_to_level', 0, get_defined_vars());
|
137 |
+
|
138 |
+
else // Else we assume this is a 'User' ( a Free Subscriber with an Access Level of 0. ).
|
139 |
+
return apply_filters('ws_plugin__s2member_user_access_role_to_level', 0, get_defined_vars());
|
140 |
+
}
|
141 |
|
142 |
+
/**
|
143 |
+
* Determines Access Label for a User/Member.
|
144 |
+
*
|
145 |
+
* If ``$user`` is NOT passed in, check the current User/Member.
|
146 |
+
* If ``$user`` IS passed in, this function will check a specific ``$user``.
|
147 |
+
*
|
148 |
+
* @package s2Member\User_Access
|
149 |
+
* @since 3.5
|
150 |
+
*
|
151 |
+
* @param object $user Optional. A `WP_User` object. Defaults to the current User.
|
152 |
+
* In order to check the current User, you must call this function with no arguments/parameters.
|
153 |
+
*
|
154 |
+
* @return string Access Level Label, empty string if ``$user`` does not exist, or if no User is currently logged-in.
|
155 |
+
*/
|
156 |
+
public static function user_access_label($user = NULL)
|
157 |
+
{
|
158 |
+
if((func_num_args() && (!is_object($user) || empty($user->ID))) || (!func_num_args() && !$user && (!is_object($user = (is_user_logged_in()) ? wp_get_current_user() : FALSE) || empty($user->ID))))
|
159 |
+
{
|
160 |
+
return apply_filters('ws_plugin__s2member_user_access_label', '', get_defined_vars()); // No $user, or NOT logged in.
|
161 |
+
}
|
162 |
+
else if(($level = c_ws_plugin__s2member_user_access::user_access_level($user)) >= 0 && !empty($GLOBALS['WS_PLUGIN__']['s2member']['o']['level'.$level.'_label']))
|
163 |
+
{
|
164 |
+
return apply_filters('ws_plugin__s2member_user_access_label', $GLOBALS['WS_PLUGIN__']['s2member']['o']['level'.$level.'_label'], get_defined_vars());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
165 |
}
|
166 |
+
else // Else there is no Label configured for this User/Member. Return empty string.
|
167 |
+
return apply_filters('ws_plugin__s2member_user_access_label', '', get_defined_vars());
|
168 |
+
}
|
169 |
}
|
170 |
+
}
|
includes/classes/user-deletions.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\User_Deletions
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_user_deletions'))
|
@@ -117,6 +117,7 @@ if(!class_exists('c_ws_plugin__s2member_user_deletions'))
|
|
117 |
delete_user_option($user_id, 's2member_ipn_signup_vars');
|
118 |
delete_user_option($user_id, 's2member_paid_registration_times');
|
119 |
delete_user_option($user_id, 's2member_access_cap_times');
|
|
|
120 |
delete_user_option($user_id, 's2member_sp_references');
|
121 |
|
122 |
delete_user_option($user_id, 's2member_last_status_scan');
|
14 |
* @package s2Member\User_Deletions
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_user_deletions'))
|
117 |
delete_user_option($user_id, 's2member_ipn_signup_vars');
|
118 |
delete_user_option($user_id, 's2member_paid_registration_times');
|
119 |
delete_user_option($user_id, 's2member_access_cap_times');
|
120 |
+
delete_user_option($user_id, 's2member_coupon_codes');
|
121 |
delete_user_option($user_id, 's2member_sp_references');
|
122 |
|
123 |
delete_user_option($user_id, 's2member_last_status_scan');
|
includes/classes/user-new-in.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\New_Users
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_user_new_in"))
|
14 |
* @package s2Member\New_Users
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_user_new_in"))
|
includes/classes/user-new.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\New_Users
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_user_new"))
|
14 |
* @package s2Member\New_Users
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_user_new"))
|
includes/classes/user-notes.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Admin_Notes
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_user_notes"))
|
14 |
* @package s2Member\Admin_Notes
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_user_notes"))
|
includes/classes/user-securities.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\User_Securities
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_user_securities'))
|
14 |
* @package s2Member\User_Securities
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_user_securities'))
|
includes/classes/users-list-in.inc.php
CHANGED
@@ -1,588 +1,586 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* Users list (inner processing routines).
|
4 |
-
*
|
5 |
-
* Copyright: © 2009-2011
|
6 |
-
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
|
7 |
-
* (coded in the USA)
|
8 |
-
*
|
9 |
-
* Released under the terms of the GNU General Public License.
|
10 |
-
* You should have received a copy of the GNU General Public License,
|
11 |
-
* along with this software. In the main directory, see: /licensing/
|
12 |
-
* If not, see: {@link http://www.gnu.org/licenses/}.
|
13 |
-
*
|
14 |
-
* @package s2Member\Users_List
|
15 |
-
* @since 3.5
|
16 |
-
*/
|
17 |
-
if(
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_users_list_in"))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
{
|
22 |
/**
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
{
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
|
|
|
|
|
|
43 |
{
|
44 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
|
46 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]
|
47 |
-
do_action("
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
unset($__refs, $__v);
|
49 |
|
50 |
-
|
|
|
|
|
|
|
51 |
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
|
|
|
|
|
|
56 |
|
57 |
-
|
58 |
-
|
59 |
-
|
|
|
60 |
|
61 |
-
|
|
|
|
|
62 |
|
63 |
-
|
|
|
|
|
|
|
|
|
64 |
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
do_action("ws_plugin__s2member_during_users_list_edit_cols_before_originating_blog", get_defined_vars());
|
74 |
-
unset($__refs, $__v);
|
75 |
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
|
|
|
|
|
|
|
|
|
|
80 |
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
|
|
|
|
85 |
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
98 |
|
99 |
-
|
100 |
-
|
101 |
-
|
|
|
102 |
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
echo '<tr>'."\n";
|
124 |
-
echo '<th><label for="ws-plugin--s2member-profile-s2member-subscr-cid">Paid Subscr. CID:</label> <a href="#" onclick="alert(\'A Paid Subscription CID; i.e. a Customer\\\'s ID. Applicable only with Stripe integration. s2Member fills this in automatically. This is the Customer\\\'s ID in Stripe, which remains constant throughout any & all future payments. Each Stripe Customer has this Customer ID; and also a Subscription and/or Transaction ID.\\n\\nIn all other cases, the Paid Subscr. CID is simply set to the Paid Subscr. ID value; i.e. it is a duplicate of Paid Subscr. ID when running anything other than Stripe.\\n\\nThis field will be empty for Free Subscribers, and/or anyone who is NOT paying you. This field is only editable for Customer Service purposes; just in case you ever need to update the Paid Subscr. Gateway/ID/CID manually.\'); return false;" tabindex="-1">[?]</a></th>'."\n";
|
125 |
-
echo '<td><input type="text" autocomplete="off" name="ws_plugin__s2member_profile_s2member_subscr_cid" id="ws-plugin--s2member-profile-s2member-subscr-cid" value="'.format_to_edit(get_user_option("s2member_subscr_cid", $user_id)).'" class="regular-text" /></td>'."\n";
|
126 |
-
echo '</tr>'."\n";
|
127 |
-
|
128 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
129 |
-
do_action("ws_plugin__s2member_during_users_list_edit_cols_after_subscr_cid", get_defined_vars());
|
130 |
-
unset($__refs, $__v);
|
131 |
-
}
|
132 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
133 |
-
do_action("ws_plugin__s2member_during_users_list_edit_cols_before_custom", get_defined_vars());
|
134 |
-
unset($__refs, $__v);
|
135 |
|
136 |
echo '<tr>'."\n";
|
137 |
-
echo '<th><label for="ws-plugin--s2member-profile-
|
138 |
-
echo '<td
|
139 |
echo '</tr>'."\n";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
140 |
|
141 |
-
|
142 |
-
|
143 |
-
|
|
|
144 |
|
145 |
-
|
146 |
-
|
147 |
-
|
|
|
|
|
148 |
|
149 |
echo '<tr>'."\n";
|
150 |
-
echo '<th><label for="ws-plugin--s2member-profile-
|
151 |
-
echo '<td
|
152 |
echo '</tr>'."\n";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
153 |
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
if(!is_multisite() || !c_ws_plugin__s2member_utils_conds::is_multisite_farm() || is_main_site())
|
159 |
-
// ^ Will change once Custom Capabilities are compatible with a Blog Farm.
|
160 |
-
{
|
161 |
-
foreach($user->allcaps as $cap => $cap_enabled)
|
162 |
-
if(preg_match("/^access_s2member_ccap_/", $cap))
|
163 |
-
$ccaps[] = preg_replace("/^access_s2member_ccap_/", "", $cap);
|
164 |
-
|
165 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
166 |
-
do_action("ws_plugin__s2member_during_users_list_edit_cols_before_ccaps", get_defined_vars());
|
167 |
-
unset($__refs, $__v);
|
168 |
-
|
169 |
-
echo '<tr>'."\n";
|
170 |
-
echo '<th><label for="ws-plugin--s2member-profile-s2member-ccaps">Custom Capabilities:</label> <a href="#" onclick="alert(\'Optional. This is VERY advanced.\\nSee: s2Member -› API Scripting -› Custom Capabilities.'.((is_multisite()) ? '\\n\\nCustom Capabilities are assigned on a per-Blog basis. So having a set of Custom Capabilities for one Blog, and having NO Custom Capabilities on another Blog - is very common. This is how permissions are designed to work.' : '').'\'); return false;" tabindex="-1">[?]</a>'.((is_multisite()) ? '<br /><small>(for this Blog)</small>' : '').'</th>'."\n";
|
171 |
-
echo '<td><input type="text" autocomplete="off" name="ws_plugin__s2member_profile_s2member_ccaps" id="ws-plugin--s2member-profile-s2member-ccaps" value="'.format_to_edit(((!empty($ccaps)) ? implode(",", $ccaps) : "")).'" class="regular-text" onkeyup="if(this.value.match(/[^a-z_0-9,]/)) this.value = jQuery.trim (jQuery.trim (this.value).replace (/[ \-]/g, \'_\').replace (/[^a-z_0-9,]/gi, \'\').toLowerCase ());" /></td>'."\n";
|
172 |
-
echo '</tr>'."\n";
|
173 |
-
|
174 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
175 |
-
do_action("ws_plugin__s2member_during_users_list_edit_cols_after_ccaps", get_defined_vars());
|
176 |
-
unset($__refs, $__v);
|
177 |
-
}
|
178 |
-
|
179 |
-
if(!$user->has_cap("administrator")) // Do NOT present these details for Administrator accounts.
|
180 |
-
{
|
181 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
182 |
-
do_action("ws_plugin__s2member_during_users_list_edit_cols_before_auto_eot_time", get_defined_vars());
|
183 |
-
unset($__refs, $__v);
|
184 |
-
|
185 |
-
echo '<tr>'."\n";
|
186 |
-
$auto_eot_time = get_user_option("s2member_auto_eot_time", $user_id);
|
187 |
-
$auto_eot_time = ($auto_eot_time) ? date("D M j, Y g:i a T", $auto_eot_time) : "";
|
188 |
-
echo '<th><label for="ws-plugin--s2member-profile-s2member-auto-eot-time">Automatic EOT Time:</label> <a href="#" onclick="alert(\'EOT = End Of Term. ( i.e. Account Expiration / Termination. ).\\n\\nIf you leave this empty, s2Member will configure an EOT Time automatically, based on the paid Subscription associated with this account. In other words, if a paid Subscription expires, is cancelled, terminated, refunded, reversed, or charged back to you; s2Member will deal with the EOT automatically.\\n\\nThat being said, if you would rather take control over this, you can. If you type in a date manually, s2Member will obey the Auto-EOT Time that you\\\'ve given, no matter what. In other words, you can force certain Members to expire automatically, at a time that you specify. s2Member will obey.\\n\\nValid formats for Automatic EOT Time:\\n\\nmm/dd/yyyy\\nyyyy-mm-dd\\n+1 year\\n+2 weeks\\n+2 months\\n+10 minutes\\nnext thursday\\ntomorrow\\ntoday\\n\\n* anything compatible with PHP\\\'s strtotime() function.\'); return false;" tabindex="-1">[?]</a>'.(($auto_eot_time) ? '<br /><small>(<a href="http://en.wikipedia.org/wiki/Coordinated_Universal_Time" target="_blank" rel="external">Universal Time / GMT</a>)</small>' : '').'</th>'."\n";
|
189 |
-
echo '<td><input type="text" autocomplete="off" name="ws_plugin__s2member_profile_s2member_auto_eot_time" id="ws-plugin--s2member-profile-s2member-auto-eot-time" value="'.format_to_edit($auto_eot_time).'" class="regular-text" /></td>'."\n";
|
190 |
-
echo '</tr>'."\n";
|
191 |
-
|
192 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
193 |
-
do_action("ws_plugin__s2member_during_users_list_edit_cols_after_auto_eot_time", get_defined_vars());
|
194 |
-
unset($__refs, $__v);
|
195 |
-
|
196 |
-
if(c_ws_plugin__s2member_utils_conds::pro_is_installed())
|
197 |
-
{
|
198 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
199 |
-
do_action("ws_plugin__s2member_during_users_list_edit_cols_before_reset_pass_resend", get_defined_vars());
|
200 |
-
unset($__refs, $__v);
|
201 |
-
|
202 |
-
echo '<tr>'."\n";
|
203 |
-
echo '<th><label for="ws-plugin--s2member-profile-reset-pass-resend">Reset Password & Resend Welcome Email Message:</label> <a href="#" onclick="alert(\'Checking this box will tell s2Member to reset this User\\\'s password and then reprocess the New User Email Notification message against this User\\\'s account. This way they\\\'ll get an email message with their Username/Password.\\n\\nThis can be helpful in cases where a User/Member missed the original email message for some reason.\\n\\nThe User\\\'s password is reset to a new auto-generated password by default. However, you can provide a custom password by entering a new password of your choosing in the field above — provided by WordPress itself.\\n\\nIt is also possible to customize the New User Email Notification message with s2Member. Please see: `Dashboard -› s2Member -› General Options -› Email Configuration -› New User Notifications`.\'); return false;" tabindex="-1">[?]</a></th>'."\n";
|
204 |
-
echo '<td><label><input type="checkbox" name="ws_plugin__s2member_profile_reset_pass_resend" id="ws-plugin--s2member-profile-reset-pass-resend" value="1" /> Yes, reset password & resend welcome email message to this User.</label></td>'."\n";
|
205 |
-
echo '</tr>'."\n";
|
206 |
-
|
207 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
208 |
-
do_action("ws_plugin__s2member_during_users_list_edit_cols_after_reset_pass_resend", get_defined_vars());
|
209 |
-
unset($__refs, $__v);
|
210 |
-
}
|
211 |
-
}
|
212 |
-
|
213 |
-
if(c_ws_plugin__s2member_list_servers::list_servers_integrated()) // Only if integrated with s2Member.
|
214 |
-
{
|
215 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
216 |
-
do_action("ws_plugin__s2member_during_users_list_edit_cols_before_opt_in", get_defined_vars());
|
217 |
-
unset($__refs, $__v);
|
218 |
-
|
219 |
-
echo '<tr>'."\n";
|
220 |
-
echo '<th><label for="ws-plugin--s2member-profile-opt-in">Re-process List Servers:</label> <a href="#" onclick="alert(\'You have at least one List Server integrated with s2Member. Would you like to re-process a confirmation request for this User? If not, just leave the box un-checked.\'); return false;" tabindex="-1">[?]</a></th>'."\n";
|
221 |
-
echo '<td><label><input type="checkbox" name="ws_plugin__s2member_profile_opt_in" id="ws-plugin--s2member-profile-opt-in" value="1" /> Yes, send a mailing list confirmation email to this User.</label></td>'."\n";
|
222 |
-
echo '</tr>'."\n";
|
223 |
-
|
224 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
225 |
-
do_action("ws_plugin__s2member_during_users_list_edit_cols_after_opt_in", get_defined_vars());
|
226 |
-
unset($__refs, $__v);
|
227 |
-
|
228 |
-
if($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_auto_opt_out_transitions"])
|
229 |
-
if(($custom_reg_auto_op_outs = c_ws_plugin__s2member_utils_strings::wrap_deep($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_auto_opt_outs"], "/^", "$/i")))
|
230 |
-
if(c_ws_plugin__s2member_utils_arrays::in_regex_array("user-role-change", $custom_reg_auto_op_outs) || c_ws_plugin__s2member_utils_arrays::in_regex_array("modification", $custom_reg_auto_op_outs))
|
231 |
-
{
|
232 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
233 |
-
do_action("ws_plugin__s2member_during_users_list_edit_cols_before_auto_opt_out_transitions", get_defined_vars());
|
234 |
-
unset($__refs, $__v);
|
235 |
-
|
236 |
-
echo '<tr>'."\n";
|
237 |
-
echo '<th><label for="ws-plugin--s2member-custom-reg-auto-opt-out-transitions">Allow List Transitioning:</label> <a href="#" onclick="alert(\'You\\\'ve configured s2Member with List Transitions enabled. By leaving this box checked, s2Member will Transition the User\\\'s mailing list subscription(s) automatically. For example, if a Member is demoted from Level #2, down to Level #1; s2Member will add them to the Level #1 List(s) after it removes them from the Level #2 List(s).\\n\\nDepending on your configuration of s2Member, a transition may ONLY occur if s2Member IS able to successfully remove them from an existing List. In other words, if they are currently NOT subscribed to any List(s), s2Member may NOT transition them to any new Lists (depending on your configuration).\'); return false;" tabindex="-1">[?]</a></th>'."\n";
|
238 |
-
echo '<td><label><input type="checkbox" name="ws_plugin__s2member_custom_reg_auto_opt_out_transitions" id="ws-plugin--s2member-custom-reg-auto-opt-out-transitions" value="1" checked="checked" /> Yes, automatically transition this User\'s mailing list subscription(s) when/if I change their Role.</label></td>'."\n";
|
239 |
-
echo '</tr>'."\n";
|
240 |
-
|
241 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
242 |
-
do_action("ws_plugin__s2member_during_users_list_edit_cols_after_auto_opt_out_transitions", get_defined_vars());
|
243 |
-
unset($__refs, $__v);
|
244 |
-
}
|
245 |
-
}
|
246 |
-
|
247 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
248 |
-
do_action("ws_plugin__s2member_during_users_list_edit_cols_before_ip_restrictions", get_defined_vars());
|
249 |
-
unset($__refs, $__v);
|
250 |
|
251 |
-
|
252 |
-
echo '<th><label for="ws-plugin--s2member-profile-ip-restrictions">Reset IP Restrictions:</label> <a href="#" onclick="alert(\'A single Username is only valid for a certain number of unique IP addresses (as configured in your s2Member -› General Options). Once that limit is reached, s2Member assumes there has been a security breach. At that time, s2Member will place a temporary ban (preventing access).\\n\\nIf you have spoken to a legitimate Customer that is receiving an error upon logging in (ex: 503 / too many IP addresses), you can remove this temporary ban by checking the box below. If the abusive behavior continues, s2Member will automatically re-instate IP Restrictions in the future. If you would like to gain further control over IP Restrictions, please check your General Options panel for s2Member.\'); return false;" tabindex="-1">[?]</a></th>'."\n";
|
253 |
-
echo '<td><label><input type="checkbox" name="ws_plugin__s2member_profile_ip_restrictions" id="ws-plugin--s2member-profile-ip-restrictions" value="1" /> Yes, delete/reset IP Restrictions associated with this Username.</label>'.((c_ws_plugin__s2member_ip_restrictions::specific_ip_restriction_at_or_above_max(strtolower($user->user_login)) || c_ws_plugin__s2member_ip_restrictions::specific_ip_restriction_breached_security(strtolower($user->user_login))) ? '<br /><em>*WARNING* this User is at (or above) max allowable IP addresses (based on your IP Restrictions).</em>' : '<br /><em>*Note* this User is NOT currently banned by any of your IP Restrictions.</em>').'</td>'."\n";
|
254 |
-
echo '</tr>'."\n";
|
255 |
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
echo '<td colspan="2">'."\n";
|
265 |
-
echo '<div style="height:1px; line-height:1px; background:#CCCCCC;"></div>'."\n";
|
266 |
-
echo '</td>'."\n";
|
267 |
-
echo '</tr>'."\n";
|
268 |
-
|
269 |
-
$fields = get_user_option("s2member_custom_fields", $user_id); // Existing fields.
|
270 |
-
|
271 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
272 |
-
do_action("ws_plugin__s2member_during_users_list_edit_cols_before_custom_fields", get_defined_vars());
|
273 |
-
unset($__refs, $__v);
|
274 |
-
|
275 |
-
foreach(json_decode($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"], true) as $field)
|
276 |
-
{
|
277 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
278 |
-
do_action("ws_plugin__s2member_during_users_list_edit_cols_during_custom_fields_before", get_defined_vars());
|
279 |
-
unset($__refs, $__v);
|
280 |
-
|
281 |
-
if(in_array($field["id"], $fields_applicable)) // Field applicable?
|
282 |
-
{
|
283 |
-
$field_var = preg_replace("/[^a-z0-9]/i", "_", strtolower($field["id"]));
|
284 |
-
$field_id_class = preg_replace("/_/", "-", $field_var);
|
285 |
-
|
286 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
287 |
-
if(apply_filters("ws_plugin__s2member_during_users_list_edit_cols_during_custom_fields_display", true, get_defined_vars()))
|
288 |
-
{
|
289 |
-
if(!empty($field["section"]) && $field["section"] === "yes") // Starts a new section?
|
290 |
-
echo '<tr><td colspan="2"><div class="ws-plugin--s2member-profile-divider-section'.((!empty($field["sectitle"])) ? '-title' : '').'">'.((!empty($field["sectitle"])) ? $field["sectitle"] : '').'</div></td></tr>';
|
291 |
-
|
292 |
-
echo '<tr>'."\n";
|
293 |
-
echo '<th><label for="ws-plugin--s2member-profile-'.esc_attr($field_id_class).'">'.((preg_match("/^(checkbox|pre_checkbox)$/", $field["type"])) ? ucwords(preg_replace("/_/", " ", $field_var)) : $field["label"]).':</label></th>'."\n";
|
294 |
-
echo '<td>'.c_ws_plugin__s2member_custom_reg_fields::custom_field_gen(__FUNCTION__, $field, "ws_plugin__s2member_profile_", "ws-plugin--s2member-profile-", "", ((preg_match("/^(text|textarea|select|selects)$/", $field["type"])) ? "width:99%;" : ""), "", "", $fields, @$fields[$field_var], "administrative").'</td>'."\n";
|
295 |
-
echo '</tr>'."\n";
|
296 |
-
}
|
297 |
-
unset($__refs, $__v);
|
298 |
-
}
|
299 |
-
|
300 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
301 |
-
do_action("ws_plugin__s2member_during_users_list_edit_cols_during_custom_fields_after", get_defined_vars());
|
302 |
-
unset($__refs, $__v);
|
303 |
-
}
|
304 |
-
|
305 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
306 |
-
do_action("ws_plugin__s2member_during_users_list_edit_cols_after_custom_fields", get_defined_vars());
|
307 |
-
unset($__refs, $__v);
|
308 |
-
|
309 |
-
echo '<tr>'."\n";
|
310 |
-
echo '<td colspan="2">'."\n";
|
311 |
-
echo '<div style="height:1px; line-height:1px; background:#CCCCCC;"></div>'."\n";
|
312 |
-
echo '</td>'."\n";
|
313 |
-
echo '</tr>'."\n";
|
314 |
-
}
|
315 |
-
|
316 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
317 |
-
do_action("ws_plugin__s2member_during_users_list_edit_cols_before_notes", get_defined_vars());
|
318 |
-
unset($__refs, $__v);
|
319 |
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
324 |
|
325 |
-
|
326 |
-
|
327 |
-
unset($__refs, $__v);
|
328 |
|
329 |
-
|
330 |
-
|
331 |
-
|
|
|
332 |
|
333 |
-
|
334 |
|
335 |
-
|
336 |
-
|
337 |
|
338 |
-
|
339 |
-
|
340 |
-
if /* Only if configured. */($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"])
|
341 |
-
if($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level($level, "profile"))
|
342 |
-
{
|
343 |
-
echo '<div style="margin:25px 0 25px 0; height:1px; line-height:1px; background:#CCCCCC;"></div>'."\n";
|
344 |
-
|
345 |
-
echo '<h3>'._x("Additional Profile Fields", "s2member-front", "s2member").((is_multisite()) ? ' '._x("(for this site)", "s2member-front", "s2member") : "").'</h3>'."\n";
|
346 |
-
|
347 |
-
echo '<table class="form-table">'."\n";
|
348 |
-
|
349 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
350 |
-
do_action("ws_plugin__s2member_during_users_list_edit_cols_before", get_defined_vars());
|
351 |
-
unset($__refs, $__v);
|
352 |
-
|
353 |
-
$fields = get_user_option("s2member_custom_fields", $user_id); // Existing fields.
|
354 |
-
|
355 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
356 |
-
do_action("ws_plugin__s2member_during_users_list_edit_cols_before_custom_fields", get_defined_vars());
|
357 |
-
unset($__refs, $__v);
|
358 |
-
|
359 |
-
foreach(json_decode($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"], true) as $field)
|
360 |
-
{
|
361 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
362 |
-
do_action("ws_plugin__s2member_during_users_list_edit_cols_during_custom_fields_before", get_defined_vars());
|
363 |
-
unset($__refs, $__v);
|
364 |
-
|
365 |
-
if(in_array($field["id"], $fields_applicable)) // Field applicable?
|
366 |
-
{
|
367 |
-
$field_var = preg_replace("/[^a-z0-9]/i", "_", strtolower($field["id"]));
|
368 |
-
$field_id_class = preg_replace("/_/", "-", $field_var);
|
369 |
-
|
370 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
371 |
-
if(apply_filters("ws_plugin__s2member_during_users_list_edit_cols_during_custom_fields_display", true, get_defined_vars()))
|
372 |
-
{
|
373 |
-
if(!empty($field["section"]) && $field["section"] === "yes") // Starts a new section?
|
374 |
-
echo '<tr><td colspan="2"><div class="ws-plugin--s2member-profile-divider-section'.((!empty($field["sectitle"])) ? '-title' : '').'">'.((!empty($field["sectitle"])) ? $field["sectitle"] : '').'</div></td></tr>';
|
375 |
-
|
376 |
-
echo '<tr>'."\n";
|
377 |
-
echo '<th><label for="ws-plugin--s2member-profile-'.esc_attr($field_id_class).'">'.((preg_match("/^(checkbox|pre_checkbox)$/", $field["type"])) ? ucwords(preg_replace("/_/", " ", $field_var)) : $field["label"]).':</label></th>'."\n";
|
378 |
-
echo '<td>'.c_ws_plugin__s2member_custom_reg_fields::custom_field_gen(__FUNCTION__, $field, "ws_plugin__s2member_profile_", "ws-plugin--s2member-profile-", "", ((preg_match("/^(text|textarea|select|selects)$/", $field["type"])) ? "width:99%;" : ""), "", "", $fields, $fields[$field_var], "profile").'</td>'."\n";
|
379 |
-
echo '</tr>'."\n";
|
380 |
-
}
|
381 |
-
unset($__refs, $__v);
|
382 |
-
}
|
383 |
-
|
384 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
385 |
-
do_action("ws_plugin__s2member_during_users_list_edit_cols_during_custom_fields_after", get_defined_vars());
|
386 |
-
unset($__refs, $__v);
|
387 |
-
}
|
388 |
-
|
389 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
390 |
-
do_action("ws_plugin__s2member_during_users_list_edit_cols_after_custom_fields", get_defined_vars());
|
391 |
-
unset($__refs, $__v);
|
392 |
-
|
393 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
394 |
-
do_action("ws_plugin__s2member_during_users_list_edit_cols_after", get_defined_vars());
|
395 |
-
unset($__refs, $__v);
|
396 |
-
|
397 |
-
echo '</table>'."\n";
|
398 |
-
|
399 |
-
echo '<div style="margin:25px 0 25px 0; height:1px; line-height:1px; background:#CCCCCC;"></div>'."\n";
|
400 |
-
}
|
401 |
-
}
|
402 |
-
}
|
403 |
|
404 |
-
|
405 |
-
|
406 |
-
unset($__refs, $__v);
|
407 |
|
408 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
409 |
}
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
* @since 3.5
|
415 |
-
*
|
416 |
-
* @attaches-to ``add_action("edit_user_profile_update");``
|
417 |
-
* @attaches-to ``add_action("personal_options_update");``
|
418 |
-
*
|
419 |
-
* @param int|string $user_id Expects a numeric WordPress User ID passed in by the Action Hook.
|
420 |
-
* @return null
|
421 |
-
*/
|
422 |
-
public static function users_list_update_cols($user_id = FALSE)
|
423 |
{
|
424 |
-
|
|
|
425 |
|
426 |
-
|
427 |
-
|
428 |
-
|
|
|
|
|
429 |
|
430 |
-
|
431 |
-
|
|
|
|
|
432 |
|
433 |
-
|
434 |
-
|
435 |
-
|
|
|
|
|
|
|
|
|
436 |
{
|
437 |
-
if(
|
438 |
-
|
439 |
-
|
440 |
-
$old_role = c_ws_plugin__s2member_user_access::user_access_role($old_user);
|
441 |
-
|
442 |
-
$role = /* Might be empty! */ (isset($_p["role"]) && $_p["role"] !== $old_role) ? $_p["role"] : $old_role;
|
443 |
-
$level = /* Might be `-1`. */ c_ws_plugin__s2member_user_access::user_access_role_to_level($role);
|
444 |
-
|
445 |
-
$user->roles = (isset($_p["role"]) && $_p["role"] !== $old_role) ? /* Might be empty! */ array($_p["role"]): $old_user->roles;
|
446 |
-
$user->user_email = (isset($_p["email"]) && is_email($_p["email"]) && $_p["email"] !== $old_user->user_email && !email_exists($_p["email"])) ? $_p["email"] : $old_user->user_email;
|
447 |
-
$user->first_name = (isset($_p["first_name"]) && $_p["first_name"] !== $old_user->first_name) ? $_p["first_name"] : $old_user->first_name;
|
448 |
-
$user->last_name = (isset($_p["last_name"]) && $_p["last_name"] !== $old_user->last_name) ? $_p["last_name"] : $old_user->last_name;
|
449 |
-
|
450 |
-
$auto_eot_time = (!empty($_p["ws_plugin__s2member_profile_s2member_auto_eot_time"])) ? strtotime($_p["ws_plugin__s2member_profile_s2member_auto_eot_time"]) : "";
|
451 |
-
|
452 |
-
if($role !== $old_role) // In this case, we need to fire Hook: `ws_plugin__s2member_during_collective_mods`.
|
453 |
-
do_action("ws_plugin__s2member_during_collective_mods", $user_id, get_defined_vars(), "user-role-change", "modification", $role, $user, $old_user);
|
454 |
-
|
455 |
-
if(isset($_p["ws_plugin__s2member_profile_s2member_originating_blog"]) && is_multisite() && is_super_admin())
|
456 |
-
update_user_meta($user_id, "s2member_originating_blog", $_p["ws_plugin__s2member_profile_s2member_originating_blog"]);
|
457 |
-
|
458 |
-
if(isset($_p["ws_plugin__s2member_profile_s2member_subscr_gateway"]))
|
459 |
-
update_user_option($user_id, "s2member_subscr_gateway", $_p["ws_plugin__s2member_profile_s2member_subscr_gateway"]);
|
460 |
-
|
461 |
-
if(isset($_p["ws_plugin__s2member_profile_s2member_subscr_id"]))
|
462 |
-
update_user_option($user_id, "s2member_subscr_id", $_p["ws_plugin__s2member_profile_s2member_subscr_id"]);
|
463 |
-
|
464 |
-
if(isset($_p["ws_plugin__s2member_profile_s2member_subscr_cid"]))
|
465 |
-
update_user_option($user_id, "s2member_subscr_cid", $_p["ws_plugin__s2member_profile_s2member_subscr_cid"]);
|
466 |
-
|
467 |
-
if(isset($_p["ws_plugin__s2member_profile_s2member_custom"]))
|
468 |
-
update_user_option($user_id, "s2member_custom", $_p["ws_plugin__s2member_profile_s2member_custom"]);
|
469 |
-
|
470 |
-
if(isset($_p["ws_plugin__s2member_profile_s2member_registration_ip"]))
|
471 |
-
update_user_option($user_id, "s2member_registration_ip", $_p["ws_plugin__s2member_profile_s2member_registration_ip"]);
|
472 |
-
|
473 |
-
if(isset($_p["ws_plugin__s2member_profile_s2member_notes"]))
|
474 |
-
update_user_option($user_id, "s2member_notes", $_p["ws_plugin__s2member_profile_s2member_notes"]);
|
475 |
-
|
476 |
-
if(isset($_p["ws_plugin__s2member_profile_s2member_auto_eot_time"]) && isset($auto_eot_time))
|
477 |
-
update_user_option($user_id, "s2member_auto_eot_time", $auto_eot_time);
|
478 |
-
|
479 |
-
if(isset($_p["ws_plugin__s2member_profile_s2member_ccaps"]))
|
480 |
-
{
|
481 |
-
foreach($user->allcaps as $cap => $cap_enabled)
|
482 |
-
if(preg_match("/^access_s2member_ccap_/", $cap))
|
483 |
-
$user->remove_cap($ccap = $cap);
|
484 |
-
|
485 |
-
if(!empty($_p["ws_plugin__s2member_profile_s2member_ccaps"]))
|
486 |
-
foreach(preg_split("/[\r\n\t\s;,]+/", $_p["ws_plugin__s2member_profile_s2member_ccaps"]) as $ccap)
|
487 |
-
if(strlen($ccap = trim(strtolower(preg_replace("/[^a-z_0-9]/i", "", $ccap)))))
|
488 |
-
$user->add_cap("access_s2member_ccap_".$ccap);
|
489 |
-
}
|
490 |
-
if($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"])
|
491 |
-
{
|
492 |
-
foreach(json_decode($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"], true) as $field)
|
493 |
-
{
|
494 |
-
$field_var = preg_replace("/[^a-z0-9]/i", "_", strtolower($field["id"]));
|
495 |
-
$field_id_class = preg_replace("/_/", "-", $field_var);
|
496 |
-
|
497 |
-
if /* Field being set? */(isset($_p["ws_plugin__s2member_profile_".$field_var]))
|
498 |
-
{
|
499 |
-
if((is_array($_p["ws_plugin__s2member_profile_".$field_var]) && !empty($_p["ws_plugin__s2member_profile_".$field_var])) || (is_string($_p["ws_plugin__s2member_profile_".$field_var]) && strlen($_p["ws_plugin__s2member_profile_".$field_var])))
|
500 |
-
$fields[$field_var] = $_p["ws_plugin__s2member_profile_".$field_var];
|
501 |
-
else if(isset($fields)) unset($fields[$field_var]);
|
502 |
-
}
|
503 |
-
else if(isset($fields)) unset($fields[$field_var]);
|
504 |
-
}
|
505 |
-
}
|
506 |
-
if(!empty($fields))
|
507 |
-
update_user_option($user_id, "s2member_custom_fields", $fields);
|
508 |
-
else delete_user_option($user_id, "s2member_custom_fields");
|
509 |
-
|
510 |
-
if /* We ONLY process this if they are higher than Level #0. */($level > 0)
|
511 |
-
{
|
512 |
-
$pr_times = get_user_option("s2member_paid_registration_times", $user_id);
|
513 |
-
$pr_times["level"] = (empty($pr_times["level"])) ? time() : $pr_times["level"];
|
514 |
-
$pr_times["level".$level] = (empty($pr_times["level".$level])) ? time() : $pr_times["level".$level];
|
515 |
-
update_user_option($user_id, "s2member_paid_registration_times", $pr_times); // Update now.
|
516 |
-
}
|
517 |
-
if /* Should we process List Servers? */(!empty($_p["ws_plugin__s2member_profile_opt_in"]) && !empty($role) && $level >= 0)
|
518 |
-
c_ws_plugin__s2member_list_servers::process_list_servers($role, $level, $user->user_login, ((!empty($_p["pass1"])) ? $_p["pass1"] : ""), $user->user_email, $user->first_name, $user->last_name, false, true, true, $user_id);
|
519 |
-
|
520 |
-
if /* Delete/reset IP Restrictions? */(!empty($_p["ws_plugin__s2member_profile_ip_restrictions"]))
|
521 |
-
c_ws_plugin__s2member_ip_restrictions::delete_reset_specific_ip_restrictions(strtolower($user->user_login));
|
522 |
-
|
523 |
-
if /* Reset password & resend email notification? */ (!empty($_p["ws_plugin__s2member_profile_reset_pass_resend"]) && c_ws_plugin__s2member_utils_conds::pro_is_installed())
|
524 |
-
c_ws_plugin__s2member_email_configs::reset_pass_resend_new_user_notification($user_id, ((!empty($_p["pass1"])) ? $_p["pass1"] : ""), array("user"), $user->user_email);
|
525 |
-
|
526 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
527 |
-
do_action("ws_plugin__s2member_during_users_list_update_cols", get_defined_vars());
|
528 |
-
unset($__refs, $__v);
|
529 |
-
}
|
530 |
}
|
531 |
-
|
532 |
{
|
533 |
-
if(
|
534 |
-
|
535 |
-
|
536 |
-
$level = c_ws_plugin__s2member_user_access::user_access_role_to_level($role);
|
537 |
-
|
538 |
-
if($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"])
|
539 |
-
if($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level($level, "profile"))
|
540 |
-
{
|
541 |
-
$_existing_fields = get_user_option("s2member_custom_fields", $user_id);
|
542 |
-
|
543 |
-
foreach(json_decode($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"], true) as $field)
|
544 |
-
{
|
545 |
-
$field_var = preg_replace("/[^a-z0-9]/i", "_", strtolower($field["id"]));
|
546 |
-
$field_id_class = preg_replace("/_/", "-", $field_var);
|
547 |
-
|
548 |
-
if(!in_array($field["id"], $fields_applicable) || strpos($field["editable"], "no") === 0)
|
549 |
-
{
|
550 |
-
if(isset($_existing_fields[$field_var]) && ((is_array($_existing_fields[$field_var]) && !empty($_existing_fields[$field_var])) || (is_string($_existing_fields[$field_var]) && strlen($_existing_fields[$field_var]))))
|
551 |
-
$fields[$field_var] = $_existing_fields[$field_var];
|
552 |
-
else // Else ``unset()``.
|
553 |
-
unset($fields[$field_var]);
|
554 |
-
}
|
555 |
-
else if($field["required"] === "yes" && (!isset($_p["ws_plugin__s2member_profile_".$field_var]) || (!is_array($_p["ws_plugin__s2member_profile_".$field_var]) && !is_string($_p["ws_plugin__s2member_profile_".$field_var])) || (is_array($_p["ws_plugin__s2member_profile_".$field_var]) && empty($_p["ws_plugin__s2member_profile_".$field_var])) || (is_string($_p["ws_plugin__s2member_profile_".$field_var]) && !strlen($_p["ws_plugin__s2member_profile_".$field_var]))))
|
556 |
-
{
|
557 |
-
if(isset($_existing_fields[$field_var]) && ((is_array($_existing_fields[$field_var]) && !empty($_existing_fields[$field_var])) || (is_string($_existing_fields[$field_var]) && strlen($_existing_fields[$field_var]))))
|
558 |
-
$fields[$field_var] = $_existing_fields[$field_var];
|
559 |
-
else // Else ``unset()``.
|
560 |
-
unset($fields[$field_var]);
|
561 |
-
}
|
562 |
-
else if(isset($_p["ws_plugin__s2member_profile_".$field_var]))
|
563 |
-
{
|
564 |
-
if((is_array($_p["ws_plugin__s2member_profile_".$field_var]) && !empty($_p["ws_plugin__s2member_profile_".$field_var])) || (is_string($_p["ws_plugin__s2member_profile_".$field_var]) && strlen($_p["ws_plugin__s2member_profile_".$field_var])))
|
565 |
-
$fields[$field_var] = $_p["ws_plugin__s2member_profile_".$field_var];
|
566 |
-
else unset($fields[$field_var]);
|
567 |
-
}
|
568 |
-
else unset($fields[$field_var]);
|
569 |
-
}
|
570 |
-
if(!empty($fields))
|
571 |
-
update_user_option($user_id, "s2member_custom_fields", $fields);
|
572 |
-
else delete_user_option($user_id, "s2member_custom_fields");
|
573 |
-
}
|
574 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
575 |
-
do_action("ws_plugin__s2member_during_users_list_update_cols", get_defined_vars());
|
576 |
-
unset($__refs, $__v);
|
577 |
-
}
|
578 |
}
|
|
|
|
|
|
|
|
|
|
|
579 |
}
|
580 |
-
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]
|
581 |
-
do_action("
|
582 |
unset($__refs, $__v);
|
583 |
-
|
584 |
-
return /* Return for uniformity. */;
|
585 |
}
|
|
|
586 |
}
|
|
|
|
|
|
|
|
|
587 |
}
|
588 |
-
|
1 |
<?php
|
2 |
/**
|
3 |
+
* Users list (inner processing routines).
|
4 |
+
*
|
5 |
+
* Copyright: © 2009-2011
|
6 |
+
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
|
7 |
+
* (coded in the USA)
|
8 |
+
*
|
9 |
+
* Released under the terms of the GNU General Public License.
|
10 |
+
* You should have received a copy of the GNU General Public License,
|
11 |
+
* along with this software. In the main directory, see: /licensing/
|
12 |
+
* If not, see: {@link http://www.gnu.org/licenses/}.
|
13 |
+
*
|
14 |
+
* @package s2Member\Users_List
|
15 |
+
* @since 3.5
|
16 |
+
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_users_list_in"))
|
21 |
+
{
|
22 |
+
/**
|
23 |
+
* Users list (inner processing routines).
|
24 |
+
*
|
25 |
+
* @package s2Member\Users_List
|
26 |
+
* @since 3.5
|
27 |
+
*/
|
28 |
+
class c_ws_plugin__s2member_users_list_in
|
29 |
{
|
30 |
/**
|
31 |
+
* Adds Custom Fields to the admin Profile editing page.
|
32 |
+
*
|
33 |
+
* @package s2Member\Users_List
|
34 |
+
* @since 3.5
|
35 |
+
*
|
36 |
+
* @attaches-to ``add_action("edit_user_profile");``
|
37 |
+
* @attaches-to ``add_action("show_user_profile");``
|
38 |
+
*
|
39 |
+
* @param $user \WP_User Expects a `WP_User` object passed in by the Action Hook.
|
40 |
+
*/
|
41 |
+
public static function users_list_edit_cols($user = NULL)
|
42 |
+
{
|
43 |
+
global $current_site, $current_blog; // Multisite networks.
|
44 |
+
|
45 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
46 |
+
do_action("ws_plugin__s2member_before_users_list_edit_cols", get_defined_vars());
|
47 |
+
unset($__refs, $__v);
|
48 |
+
|
49 |
+
$current_user = is_user_logged_in() ? wp_get_current_user() : FALSE; // Current User.
|
50 |
+
|
51 |
+
if(is_object($user) && !empty($user->ID) && ($user_id = $user->ID) && is_object($current_user) && !empty($current_user->ID))
|
52 |
{
|
53 |
+
$role = c_ws_plugin__s2member_user_access::user_access_role($user); // This User's current WordPress Role.
|
54 |
+
$level = c_ws_plugin__s2member_user_access::user_access_level($user); // User's Access Level for s2Member.
|
55 |
+
|
56 |
+
if(current_user_can("edit_users") && (!is_multisite() || is_super_admin() || is_user_member_of_blog($user_id)))
|
57 |
+
{
|
58 |
+
echo '<div style="margin:25px 0 25px 0; height:1px; line-height:1px; background:#CCCCCC;"></div>'."\n";
|
59 |
+
|
60 |
+
echo '<h3 style="position:relative;"><img src="'.esc_attr($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]).'/images/large-icon.png" title="s2Member (a Membership management system for WordPress)" alt="" style="position:absolute; top:-15px; right:0; border:0;" />s2Member Configuration & Profile Fields'.((is_multisite()) ? ' (for this Blog)' : '').'</h3>'."\n";
|
61 |
+
|
62 |
+
echo '<table class="form-table">'."\n";
|
63 |
+
|
64 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
65 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_before", get_defined_vars());
|
66 |
+
unset($__refs, $__v);
|
67 |
+
|
68 |
+
if(is_multisite() && is_super_admin()) // Super Admins can edit this.
|
69 |
{
|
70 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
71 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_before_originating_blog", get_defined_vars());
|
72 |
+
unset($__refs, $__v);
|
73 |
+
|
74 |
+
echo '<tr>'."\n";
|
75 |
+
echo '<th><label for="ws-plugin--s2member-profile-s2member-originating-blog">Originating Blog ID#:</label> <a href="#" onclick="alert(\'On a Multisite Network, this is how s2Member keeps track of which Blog each User/Member originated from. So this ID#, is automatically associated with a Blog in your Network, matching the User\\\'s point of origin. ~ ONLY a Super Admin can modify this.\\n\\nOn a Multisite Blog Farm, the Originating Blog ID# for your own Customers, will ALWAYS be associated with your (Main Site). It is NOT likely that you\\\'ll need to modify this manually, but s2Member makes it available; just in case.\\n\\n*Tip* - If you add Users (and/or Blogs) with the `Super Admin` Network Administration panel inside WordPress, then you WILL need to set everything manually. s2Member does NOT tamper with automation routines whenever YOU (as a Super Administrator) are working in that area.\'); return false;" tabindex="-1">[?]</a></th>'."\n";
|
76 |
+
echo '<td><input type="text" autocomplete="off" name="ws_plugin__s2member_profile_s2member_originating_blog" id="ws-plugin--s2member-profile-s2member-originating-blog" value="'.format_to_edit(get_user_meta($user_id, "s2member_originating_blog", TRUE)).'" class="regular-text" /></td>'."\n";
|
77 |
+
echo '</tr>'."\n";
|
78 |
|
79 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
80 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_after_originating_blog", get_defined_vars());
|
81 |
+
unset($__refs, $__v);
|
82 |
+
}
|
83 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
84 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_before_subscr_gateway", get_defined_vars());
|
85 |
+
unset($__refs, $__v);
|
86 |
+
|
87 |
+
echo '<tr>'."\n";
|
88 |
+
echo '<th><label for="ws-plugin--s2member-profile-s2member-subscr-gateway">Paid Subscr. Gateway:</label> <a href="#" onclick="alert(\'A Payment Gateway Code is associated with the Paid Subscr. ID below. A Paid Subscription ID (or a Buy Now Transaction ID) is only valid for paid Members. Also known as a Recurring Profile ID, a ClickBank Receipt #, a Google Order ID, an AliPay Trade No.\\n\\nThis will be filled automatically by s2Member. This field will be empty for Free Subscribers, and/or anyone who is NOT paying you. This field is only editable for Customer Service purposes; just in case you ever need to update the Paid Subscr. Gateway/ID manually.\\n\\nThe value of Paid Subscr. ID can be a PayPal Standard Subscription ID, or a PayPal Pro Recurring Profile ID, or a PayPal Transaction ID; depending on the type of sale. Your PayPal account will supply this information.\\n\\nIf you are using Stripe, please use the customer\\\'s Subscription ID (if applicable); else a Charge ID or an Invoice ID.\\n\\nIf you\\\'re using Google Wallet, use the Google Order ID. ClickBank provides a Receipt #, ccBill provides a Subscription ID, Authorize.Net provides a Subscription ID, and AliPay provides a Transaction ID.\\n\\nThe general rule is... IF there\\\'s a Subscription ID, use that! If there\\\'s NOT, use the Transaction ID.\'); return false;" tabindex="-1">[?]</a></th>'."\n";
|
89 |
+
echo '<td><select name="ws_plugin__s2member_profile_s2member_subscr_gateway" id="ws-plugin--s2member-profile-s2member-subscr-gateway" style="width:25em;"><option value=""></option>'."\n";
|
90 |
+
foreach(apply_filters("ws_plugin__s2member_profile_s2member_subscr_gateways", array("paypal" => "PayPal (code: paypal)"), get_defined_vars()) as $gateway => $gateway_name)
|
91 |
+
echo '<option value="'.esc_attr($gateway).'"'.(($gateway === get_user_option("s2member_subscr_gateway", $user_id)) ? ' selected="selected"' : '').'>'.esc_html($gateway_name).'</option>'."\n";
|
92 |
+
echo '</select>'."\n";
|
93 |
+
echo '</td>'."\n";
|
94 |
+
echo '</tr>'."\n";
|
95 |
+
|
96 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
97 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_after_subscr_gateway", get_defined_vars());
|
98 |
+
unset($__refs, $__v);
|
99 |
+
|
100 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
101 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_before_subscr_id", get_defined_vars());
|
102 |
+
unset($__refs, $__v);
|
103 |
+
|
104 |
+
echo '<tr>'."\n";
|
105 |
+
echo '<th><label for="ws-plugin--s2member-profile-s2member-subscr-id">Paid Subscr. ID:</label> <a href="#" onclick="alert(\'A Paid Subscription ID (or a Buy Now Transaction ID) is only valid for paid Members. Also known as a Recurring Profile ID, a ClickBank Receipt #, a Google Order ID, an AliPay Trade No.\\n\\nThis will be filled automatically by s2Member. This field will be empty for Free Subscribers, and/or anyone who is NOT paying you. This field is only editable for Customer Service purposes; just in case you ever need to update the Paid Subscr. Gateway/ID manually.\\n\\nThe value of Paid Subscr. ID can be a PayPal Standard Subscription ID, or a PayPal Pro Recurring Profile ID, or a PayPal Transaction ID; depending on the type of sale. Your PayPal account will supply this information.\\n\\nIf you are using Stripe, please use the customer\\\'s Subscription ID (if applicable); else a Charge ID or an Invoice ID.\\n\\nIf you\\\'re using Google Wallet, use the Google Order ID. ClickBank provides a Receipt #, ccBill provides a Subscription ID, Authorize.Net provides a Subscription ID, and AliPay provides a Transaction ID.\\n\\nThe general rule is... IF there\\\'s a Subscription ID, use that! If there\\\'s NOT, use the Transaction ID.\'); return false;" tabindex="-1">[?]</a></th>'."\n";
|
106 |
+
echo '<td><input type="text" autocomplete="off" name="ws_plugin__s2member_profile_s2member_subscr_id" id="ws-plugin--s2member-profile-s2member-subscr-id" value="'.format_to_edit(get_user_option("s2member_subscr_id", $user_id)).'" class="regular-text" /></td>'."\n";
|
107 |
+
echo '</tr>'."\n";
|
108 |
+
|
109 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
110 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_after_subscr_id", get_defined_vars());
|
111 |
+
unset($__refs, $__v);
|
112 |
+
|
113 |
+
if(c_ws_plugin__s2member_utils_conds::pro_is_installed())
|
114 |
+
if(in_array('stripe', $GLOBALS['WS_PLUGIN__']['s2member']['o']['pro_gateways_enabled']))
|
115 |
+
{
|
116 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
117 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_before_subscr_cid", get_defined_vars());
|
118 |
+
unset($__refs, $__v);
|
119 |
+
|
120 |
+
echo '<tr>'."\n";
|
121 |
+
echo '<th><label for="ws-plugin--s2member-profile-s2member-subscr-cid">Paid Subscr. CID:</label> <a href="#" onclick="alert(\'A Paid Subscription CID; i.e. a Customer\\\'s ID. Applicable only with Stripe integration. s2Member fills this in automatically. This is the Customer\\\'s ID in Stripe, which remains constant throughout any & all future payments. Each Stripe Customer has this Customer ID; and also a Subscription and/or Transaction ID.\\n\\nIn all other cases, the Paid Subscr. CID is simply set to the Paid Subscr. ID value; i.e. it is a duplicate of Paid Subscr. ID when running anything other than Stripe.\\n\\nThis field will be empty for Free Subscribers, and/or anyone who is NOT paying you. This field is only editable for Customer Service purposes; just in case you ever need to update the Paid Subscr. Gateway/ID/CID manually.\'); return false;" tabindex="-1">[?]</a></th>'."\n";
|
122 |
+
echo '<td><input type="text" autocomplete="off" name="ws_plugin__s2member_profile_s2member_subscr_cid" id="ws-plugin--s2member-profile-s2member-subscr-cid" value="'.format_to_edit(get_user_option("s2member_subscr_cid", $user_id)).'" class="regular-text" /></td>'."\n";
|
123 |
+
echo '</tr>'."\n";
|
124 |
+
|
125 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
126 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_after_subscr_cid", get_defined_vars());
|
127 |
+
unset($__refs, $__v);
|
128 |
+
}
|
129 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
130 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_before_custom", get_defined_vars());
|
131 |
+
unset($__refs, $__v);
|
132 |
+
|
133 |
+
echo '<tr>'."\n";
|
134 |
+
echo '<th><label for="ws-plugin--s2member-profile-s2member-custom">Custom Value:</label> <a href="#" onclick="alert(\'A Paid Subscription is always associated with a Custom String that is passed through the custom=\\\'\\\''.c_ws_plugin__s2member_utils_strings::esc_js_sq(esc_attr($_SERVER["HTTP_HOST"]), 3).'\\\'\\\' attribute of your Shortcode. This Custom Value, MUST always start with your domain name. However, you can also pipe delimit additional values after your domain, if you need to.\\n\\nFor example:\n'.c_ws_plugin__s2member_utils_strings::esc_js_sq(esc_attr($_SERVER["HTTP_HOST"]), 3).'|cv1|cv2|cv3\'); return false;" tabindex="-1">[?]</a></th>'."\n";
|
135 |
+
echo '<td><input type="text" autocomplete="off" name="ws_plugin__s2member_profile_s2member_custom" id="ws-plugin--s2member-profile-s2member-custom" value="'.format_to_edit(get_user_option("s2member_custom", $user_id)).'" class="regular-text" /></td>'."\n";
|
136 |
+
echo '</tr>'."\n";
|
137 |
+
|
138 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
139 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_after_custom", get_defined_vars());
|
140 |
+
unset($__refs, $__v);
|
141 |
+
|
142 |
+
if(c_ws_plugin__s2member_utils_conds::pro_is_installed())
|
143 |
+
{
|
144 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
145 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_before_coupon_codes", get_defined_vars());
|
146 |
unset($__refs, $__v);
|
147 |
|
148 |
+
echo '<tr>'."\n";
|
149 |
+
echo '<th><label for="ws-plugin--s2member-profile-s2member-coupon-codes">Coupon Code(s):</label> <a href="#" onclick="alert(\'This is a comma-delimited list of the Coupon Codes associated with this user; i.e. the Coupon Code(s) that have been used to complete checkout. s2Member updates this list automatically. This field is only editable for Customer Service purposes; i.e. just in case you ever need to update the list manually.\'); return false;" tabindex="-1">[?]</a></th>'."\n";
|
150 |
+
echo '<td><input type="text" autocomplete="off" name="ws_plugin__s2member_profile_s2member_coupon_codes" id="ws-plugin--s2member-profile-s2member-coupon-codes" value="'.format_to_edit(implode(',', is_array($_user_coupon_codes = get_user_option("s2member_coupon_codes", $user_id)) ? $_user_coupon_codes : array())).'" class="regular-text" /></td>'."\n";
|
151 |
+
echo '</tr>'."\n";
|
152 |
|
153 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
154 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_after_coupon_codes", get_defined_vars());
|
155 |
+
unset($__refs, $__v);
|
156 |
+
}
|
157 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
158 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_before_registration_ip", get_defined_vars());
|
159 |
+
unset($__refs, $__v);
|
160 |
|
161 |
+
echo '<tr>'."\n";
|
162 |
+
echo '<th><label for="ws-plugin--s2member-profile-s2member-registration-ip">Registration IP:</label> <a href="#" onclick="alert(\'This is the IP Address the User had at the time of registration. If you don\\\'t know the User\\\'s IP Address, just leave this blank. If this is left empty, s2Member will make attempts in the future to grab the User\\\'s IP Address.\'); return false;" tabindex="-1">[?]</a></th>'."\n";
|
163 |
+
echo '<td><input type="text" autocomplete="off" name="ws_plugin__s2member_profile_s2member_registration_ip" id="ws-plugin--s2member-profile-s2member-registration-ip" value="'.format_to_edit(get_user_option("s2member_registration_ip", $user_id)).'" class="regular-text" /></td>'."\n";
|
164 |
+
echo '</tr>'."\n";
|
165 |
|
166 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
167 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_after_registration_ip", get_defined_vars());
|
168 |
+
unset($__refs, $__v);
|
169 |
|
170 |
+
if(!is_multisite() || !c_ws_plugin__s2member_utils_conds::is_multisite_farm() || is_main_site()) // Will change once Custom Capabilities are compatible with a Blog Farm.
|
171 |
+
{
|
172 |
+
foreach($user->allcaps as $cap => $cap_enabled)
|
173 |
+
if(preg_match("/^access_s2member_ccap_/", $cap))
|
174 |
+
$ccaps[] = preg_replace("/^access_s2member_ccap_/", "", $cap);
|
175 |
|
176 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
177 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_before_ccaps", get_defined_vars());
|
178 |
+
unset($__refs, $__v);
|
179 |
|
180 |
+
echo '<tr>'."\n";
|
181 |
+
echo '<th><label for="ws-plugin--s2member-profile-s2member-ccaps">Custom Capabilities:</label> <a href="#" onclick="alert(\'Optional. This is VERY advanced.\\nSee: s2Member -› API Scripting -› Custom Capabilities.'.((is_multisite()) ? '\\n\\nCustom Capabilities are assigned on a per-Blog basis. So having a set of Custom Capabilities for one Blog, and having NO Custom Capabilities on another Blog - is very common. This is how permissions are designed to work.' : '').'\'); return false;" tabindex="-1">[?]</a>'.((is_multisite()) ? '<br /><small>(for this Blog)</small>' : '').'</th>'."\n";
|
182 |
+
echo '<td><input type="text" autocomplete="off" name="ws_plugin__s2member_profile_s2member_ccaps" id="ws-plugin--s2member-profile-s2member-ccaps" value="'.format_to_edit(((!empty($ccaps)) ? implode(",", $ccaps) : "")).'" class="regular-text" onkeyup="if(this.value.match(/[^a-z_0-9,]/)) this.value = jQuery.trim (jQuery.trim (this.value).replace (/[ \-]/g, \'_\').replace (/[^a-z_0-9,]/gi, \'\').toLowerCase ());" /></td>'."\n";
|
183 |
+
echo '</tr>'."\n";
|
|
|
|
|
184 |
|
185 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
186 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_after_ccaps", get_defined_vars());
|
187 |
+
unset($__refs, $__v);
|
188 |
+
}
|
189 |
+
if(!$user->has_cap("administrator")) // Do NOT present these details for Administrator accounts.
|
190 |
+
{
|
191 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
192 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_before_auto_eot_time", get_defined_vars());
|
193 |
+
unset($__refs, $__v);
|
194 |
|
195 |
+
echo '<tr>'."\n";
|
196 |
+
$auto_eot_time = get_user_option("s2member_auto_eot_time", $user_id);
|
197 |
+
$auto_eot_time = ($auto_eot_time) ? date("D M j, Y g:i a T", $auto_eot_time) : "";
|
198 |
+
echo '<th><label for="ws-plugin--s2member-profile-s2member-auto-eot-time">Automatic EOT Time:</label> <a href="#" onclick="alert(\'EOT = End Of Term. ( i.e. Account Expiration / Termination. ).\\n\\nIf you leave this empty, s2Member will configure an EOT Time automatically, based on the paid Subscription associated with this account. In other words, if a paid Subscription expires, is cancelled, terminated, refunded, reversed, or charged back to you; s2Member will deal with the EOT automatically.\\n\\nThat being said, if you would rather take control over this, you can. If you type in a date manually, s2Member will obey the Auto-EOT Time that you\\\'ve given, no matter what. In other words, you can force certain Members to expire automatically, at a time that you specify. s2Member will obey.\\n\\nValid formats for Automatic EOT Time:\\n\\nmm/dd/yyyy\\nyyyy-mm-dd\\n+1 year\\n+2 weeks\\n+2 months\\n+10 minutes\\nnext thursday\\ntomorrow\\ntoday\\n\\n* anything compatible with PHP\\\'s strtotime() function.\'); return false;" tabindex="-1">[?]</a>'.(($auto_eot_time) ? '<br /><small>(<a href="http://en.wikipedia.org/wiki/Coordinated_Universal_Time" target="_blank" rel="external">Universal Time / GMT</a>)</small>' : '').'</th>'."\n";
|
199 |
+
echo '<td><input type="text" autocomplete="off" name="ws_plugin__s2member_profile_s2member_auto_eot_time" id="ws-plugin--s2member-profile-s2member-auto-eot-time" value="'.format_to_edit($auto_eot_time).'" class="regular-text" /></td>'."\n";
|
200 |
+
echo '</tr>'."\n";
|
201 |
|
202 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
203 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_after_auto_eot_time", get_defined_vars());
|
204 |
+
unset($__refs, $__v);
|
205 |
|
206 |
+
if(c_ws_plugin__s2member_utils_conds::pro_is_installed())
|
207 |
+
{
|
208 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
209 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_before_reset_pass_resend", get_defined_vars());
|
210 |
+
unset($__refs, $__v);
|
211 |
+
|
212 |
+
echo '<tr>'."\n";
|
213 |
+
echo '<th><label for="ws-plugin--s2member-profile-reset-pass-resend">Reset Password & Resend Welcome Email Message:</label> <a href="#" onclick="alert(\'Checking this box will tell s2Member to reset this User\\\'s password and then reprocess the New User Email Notification message against this User\\\'s account. This way they\\\'ll get an email message with their Username/Password.\\n\\nThis can be helpful in cases where a User/Member missed the original email message for some reason.\\n\\nThe User\\\'s password is reset to a new auto-generated password by default. However, you can provide a custom password by entering a new password of your choosing in the field above — provided by WordPress itself.\\n\\nIt is also possible to customize the New User Email Notification message with s2Member. Please see: `Dashboard -› s2Member -› General Options -› Email Configuration -› New User Notifications`.\'); return false;" tabindex="-1">[?]</a></th>'."\n";
|
214 |
+
echo '<td><label><input type="checkbox" name="ws_plugin__s2member_profile_reset_pass_resend" id="ws-plugin--s2member-profile-reset-pass-resend" value="1" /> Yes, reset password & resend welcome email message to this User.</label></td>'."\n";
|
215 |
+
echo '</tr>'."\n";
|
216 |
+
|
217 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
218 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_after_reset_pass_resend", get_defined_vars());
|
219 |
+
unset($__refs, $__v);
|
220 |
+
}
|
221 |
+
}
|
222 |
+
if(c_ws_plugin__s2member_list_servers::list_servers_integrated()) // Only if integrated with s2Member.
|
223 |
+
{
|
224 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
225 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_before_opt_in", get_defined_vars());
|
226 |
+
unset($__refs, $__v);
|
227 |
|
228 |
+
echo '<tr>'."\n";
|
229 |
+
echo '<th><label for="ws-plugin--s2member-profile-opt-in">Re-process List Servers:</label> <a href="#" onclick="alert(\'You have at least one List Server integrated with s2Member. Would you like to re-process a confirmation request for this User? If not, just leave the box un-checked.\'); return false;" tabindex="-1">[?]</a></th>'."\n";
|
230 |
+
echo '<td><label><input type="checkbox" name="ws_plugin__s2member_profile_opt_in" id="ws-plugin--s2member-profile-opt-in" value="1" /> Yes, send a mailing list confirmation email to this User.</label></td>'."\n";
|
231 |
+
echo '</tr>'."\n";
|
232 |
|
233 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
234 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_after_opt_in", get_defined_vars());
|
235 |
+
unset($__refs, $__v);
|
236 |
|
237 |
+
if($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_auto_opt_out_transitions"])
|
238 |
+
if(($custom_reg_auto_op_outs = c_ws_plugin__s2member_utils_strings::wrap_deep($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_auto_opt_outs"], "/^", "$/i")))
|
239 |
+
if(c_ws_plugin__s2member_utils_arrays::in_regex_array("user-role-change", $custom_reg_auto_op_outs) || c_ws_plugin__s2member_utils_arrays::in_regex_array("modification", $custom_reg_auto_op_outs))
|
240 |
+
{
|
241 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
242 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_before_auto_opt_out_transitions", get_defined_vars());
|
243 |
+
unset($__refs, $__v);
|
244 |
+
|
245 |
+
echo '<tr>'."\n";
|
246 |
+
echo '<th><label for="ws-plugin--s2member-custom-reg-auto-opt-out-transitions">Allow List Transitioning:</label> <a href="#" onclick="alert(\'You\\\'ve configured s2Member with List Transitions enabled. By leaving this box checked, s2Member will Transition the User\\\'s mailing list subscription(s) automatically. For example, if a Member is demoted from Level #2, down to Level #1; s2Member will add them to the Level #1 List(s) after it removes them from the Level #2 List(s).\\n\\nDepending on your configuration of s2Member, a transition may ONLY occur if s2Member IS able to successfully remove them from an existing List. In other words, if they are currently NOT subscribed to any List(s), s2Member may NOT transition them to any new Lists (depending on your configuration).\'); return false;" tabindex="-1">[?]</a></th>'."\n";
|
247 |
+
echo '<td><label><input type="checkbox" name="ws_plugin__s2member_custom_reg_auto_opt_out_transitions" id="ws-plugin--s2member-custom-reg-auto-opt-out-transitions" value="1" checked="checked" /> Yes, automatically transition this User\'s mailing list subscription(s) when/if I change their Role.</label></td>'."\n";
|
248 |
+
echo '</tr>'."\n";
|
249 |
+
|
250 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
251 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_after_auto_opt_out_transitions", get_defined_vars());
|
252 |
+
unset($__refs, $__v);
|
253 |
+
}
|
254 |
+
}
|
255 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
256 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_before_ip_restrictions", get_defined_vars());
|
257 |
+
unset($__refs, $__v);
|
258 |
+
|
259 |
+
echo '<tr>'."\n";
|
260 |
+
echo '<th><label for="ws-plugin--s2member-profile-ip-restrictions">Reset IP Restrictions:</label> <a href="#" onclick="alert(\'A single Username is only valid for a certain number of unique IP addresses (as configured in your s2Member -› General Options). Once that limit is reached, s2Member assumes there has been a security breach. At that time, s2Member will place a temporary ban (preventing access).\\n\\nIf you have spoken to a legitimate Customer that is receiving an error upon logging in (ex: 503 / too many IP addresses), you can remove this temporary ban by checking the box below. If the abusive behavior continues, s2Member will automatically re-instate IP Restrictions in the future. If you would like to gain further control over IP Restrictions, please check your General Options panel for s2Member.\'); return false;" tabindex="-1">[?]</a></th>'."\n";
|
261 |
+
echo '<td><label><input type="checkbox" name="ws_plugin__s2member_profile_ip_restrictions" id="ws-plugin--s2member-profile-ip-restrictions" value="1" /> Yes, delete/reset IP Restrictions associated with this Username.</label>'.((c_ws_plugin__s2member_ip_restrictions::specific_ip_restriction_at_or_above_max(strtolower($user->user_login)) || c_ws_plugin__s2member_ip_restrictions::specific_ip_restriction_breached_security(strtolower($user->user_login))) ? '<br /><em>*WARNING* this User is at (or above) max allowable IP addresses (based on your IP Restrictions).</em>' : '<br /><em>*Note* this User is NOT currently banned by any of your IP Restrictions.</em>').'</td>'."\n";
|
262 |
+
echo '</tr>'."\n";
|
263 |
+
|
264 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
265 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_after_ip_restrictions", get_defined_vars());
|
266 |
+
unset($__refs, $__v);
|
267 |
+
|
268 |
+
if($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"]) // Only if configured.
|
269 |
+
if($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level($level, "administrative"))
|
270 |
+
{
|
271 |
+
echo '<tr>'."\n";
|
272 |
+
echo '<td colspan="2">'."\n";
|
273 |
+
echo '<div style="height:1px; line-height:1px; background:#CCCCCC;"></div>'."\n";
|
274 |
+
echo '</td>'."\n";
|
275 |
+
echo '</tr>'."\n";
|
276 |
+
|
277 |
+
$fields = get_user_option("s2member_custom_fields", $user_id); // Existing fields.
|
278 |
+
|
279 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
280 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_before_custom_fields", get_defined_vars());
|
281 |
+
unset($__refs, $__v);
|
282 |
+
|
283 |
+
foreach(json_decode($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"], TRUE) as $field)
|
284 |
+
{
|
285 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
286 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_during_custom_fields_before", get_defined_vars());
|
287 |
+
unset($__refs, $__v);
|
288 |
|
289 |
+
if(in_array($field["id"], $fields_applicable)) // Field applicable?
|
290 |
+
{
|
291 |
+
$field_var = preg_replace("/[^a-z0-9]/i", "_", strtolower($field["id"]));
|
292 |
+
$field_id_class = preg_replace("/_/", "-", $field_var);
|
293 |
+
|
294 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
295 |
+
if(apply_filters("ws_plugin__s2member_during_users_list_edit_cols_during_custom_fields_display", TRUE, get_defined_vars()))
|
296 |
+
{
|
297 |
+
if(!empty($field["section"]) && $field["section"] === "yes") // Starts a new section?
|
298 |
+
echo '<tr><td colspan="2"><div class="ws-plugin--s2member-profile-divider-section'.((!empty($field["sectitle"])) ? '-title' : '').'">'.((!empty($field["sectitle"])) ? $field["sectitle"] : '').'</div></td></tr>';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
299 |
|
300 |
echo '<tr>'."\n";
|
301 |
+
echo '<th><label for="ws-plugin--s2member-profile-'.esc_attr($field_id_class).'">'.((preg_match("/^(checkbox|pre_checkbox)$/", $field["type"])) ? ucwords(preg_replace("/_/", " ", $field_var)) : $field["label"]).':</label></th>'."\n";
|
302 |
+
echo '<td>'.c_ws_plugin__s2member_custom_reg_fields::custom_field_gen(__FUNCTION__, $field, "ws_plugin__s2member_profile_", "ws-plugin--s2member-profile-", "", ((preg_match("/^(text|textarea|select|selects)$/", $field["type"])) ? "width:99%;" : ""), "", "", $fields, @$fields[$field_var], "administrative").'</td>'."\n";
|
303 |
echo '</tr>'."\n";
|
304 |
+
}
|
305 |
+
unset($__refs, $__v);
|
306 |
+
}
|
307 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
308 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_during_custom_fields_after", get_defined_vars());
|
309 |
+
unset($__refs, $__v);
|
310 |
+
}
|
311 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
312 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_after_custom_fields", get_defined_vars());
|
313 |
+
unset($__refs, $__v);
|
314 |
+
|
315 |
+
echo '<tr>'."\n";
|
316 |
+
echo '<td colspan="2">'."\n";
|
317 |
+
echo '<div style="height:1px; line-height:1px; background:#CCCCCC;"></div>'."\n";
|
318 |
+
echo '</td>'."\n";
|
319 |
+
echo '</tr>'."\n";
|
320 |
+
}
|
321 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
322 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_before_notes", get_defined_vars());
|
323 |
+
unset($__refs, $__v);
|
324 |
+
|
325 |
+
echo '<tr>'."\n";
|
326 |
+
echo '<th><label for="ws-plugin--s2member-profile-s2member-notes">Administrative Notes:</label> <a href="#" onclick="alert(\'This is for Administrative purposes. You can keep a list of Notations about this account. These Notations are private; Users/Members will never see these.\\n\\n*Note* The s2Member software may `append` Notes to this field occasionally, under special circumstances. For example, when/if s2Member demotes a paid Member to a Free Subscriber, s2Member will leave a Note in this field.\'); return false;" tabindex="-1">[?]</a><br /><br /><small>These Notations are private; Users/Members will never see any of these notes.</small></th>'."\n";
|
327 |
+
echo '<td><textarea name="ws_plugin__s2member_profile_s2member_notes" id="ws-plugin--s2member-profile-s2member-notes" rows="5" wrap="off" spellcheck="false" style="width:99%;">'.format_to_edit(get_user_option("s2member_notes", $user_id)).'</textarea></td>'."\n";
|
328 |
+
echo '</tr>'."\n";
|
329 |
+
|
330 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
331 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_after_notes", get_defined_vars());
|
332 |
+
unset($__refs, $__v);
|
333 |
+
|
334 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
335 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_after", get_defined_vars());
|
336 |
+
unset($__refs, $__v);
|
337 |
+
|
338 |
+
echo '</table>'."\n";
|
339 |
+
|
340 |
+
echo '<div style="margin:25px 0 25px 0; height:1px; line-height:1px; background:#CCCCCC;"></div>'."\n";
|
341 |
+
}
|
342 |
+
else if($current_user->ID === $user->ID) // Otherwise, a User can always edit their own Profile.
|
343 |
+
{
|
344 |
+
if($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"] /* Only if configured. */)
|
345 |
+
if($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level($level, "profile"))
|
346 |
+
{
|
347 |
+
echo '<div style="margin:25px 0 25px 0; height:1px; line-height:1px; background:#CCCCCC;"></div>'."\n";
|
348 |
+
|
349 |
+
echo '<h3>'._x("Additional Profile Fields", "s2member-front", "s2member").((is_multisite()) ? ' '._x("(for this site)", "s2member-front", "s2member") : "").'</h3>'."\n";
|
350 |
+
|
351 |
+
echo '<table class="form-table">'."\n";
|
352 |
+
|
353 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
354 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_before", get_defined_vars());
|
355 |
+
unset($__refs, $__v);
|
356 |
+
|
357 |
+
$fields = get_user_option("s2member_custom_fields", $user_id); // Existing fields.
|
358 |
+
|
359 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
360 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_before_custom_fields", get_defined_vars());
|
361 |
+
unset($__refs, $__v);
|
362 |
+
|
363 |
+
foreach(json_decode($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"], TRUE) as $field)
|
364 |
+
{
|
365 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
366 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_during_custom_fields_before", get_defined_vars());
|
367 |
+
unset($__refs, $__v);
|
368 |
|
369 |
+
if(in_array($field["id"], $fields_applicable)) // Field applicable?
|
370 |
+
{
|
371 |
+
$field_var = preg_replace("/[^a-z0-9]/i", "_", strtolower($field["id"]));
|
372 |
+
$field_id_class = preg_replace("/_/", "-", $field_var);
|
373 |
|
374 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
375 |
+
if(apply_filters("ws_plugin__s2member_during_users_list_edit_cols_during_custom_fields_display", TRUE, get_defined_vars()))
|
376 |
+
{
|
377 |
+
if(!empty($field["section"]) && $field["section"] === "yes") // Starts a new section?
|
378 |
+
echo '<tr><td colspan="2"><div class="ws-plugin--s2member-profile-divider-section'.((!empty($field["sectitle"])) ? '-title' : '').'">'.((!empty($field["sectitle"])) ? $field["sectitle"] : '').'</div></td></tr>';
|
379 |
|
380 |
echo '<tr>'."\n";
|
381 |
+
echo '<th><label for="ws-plugin--s2member-profile-'.esc_attr($field_id_class).'">'.((preg_match("/^(checkbox|pre_checkbox)$/", $field["type"])) ? ucwords(preg_replace("/_/", " ", $field_var)) : $field["label"]).':</label></th>'."\n";
|
382 |
+
echo '<td>'.c_ws_plugin__s2member_custom_reg_fields::custom_field_gen(__FUNCTION__, $field, "ws_plugin__s2member_profile_", "ws-plugin--s2member-profile-", "", ((preg_match("/^(text|textarea|select|selects)$/", $field["type"])) ? "width:99%;" : ""), "", "", $fields, $fields[$field_var], "profile").'</td>'."\n";
|
383 |
echo '</tr>'."\n";
|
384 |
+
}
|
385 |
+
unset($__refs, $__v);
|
386 |
+
}
|
387 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
388 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_during_custom_fields_after", get_defined_vars());
|
389 |
+
unset($__refs, $__v);
|
390 |
+
}
|
391 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
392 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_after_custom_fields", get_defined_vars());
|
393 |
+
unset($__refs, $__v);
|
394 |
|
395 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
396 |
+
do_action("ws_plugin__s2member_during_users_list_edit_cols_after", get_defined_vars());
|
397 |
+
unset($__refs, $__v);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
398 |
|
399 |
+
echo '</table>'."\n";
|
|
|
|
|
|
|
400 |
|
401 |
+
echo '<div style="margin:25px 0 25px 0; height:1px; line-height:1px; background:#CCCCCC;"></div>'."\n";
|
402 |
+
}
|
403 |
+
}
|
404 |
+
}
|
405 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
406 |
+
do_action("ws_plugin__s2member_after_users_list_edit_cols", get_defined_vars());
|
407 |
+
unset($__refs, $__v);
|
408 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
409 |
|
410 |
+
/**
|
411 |
+
* Saves Custom Fields after an admin updates Profile.
|
412 |
+
*
|
413 |
+
* @package s2Member\Users_List
|
414 |
+
* @since 3.5
|
415 |
+
*
|
416 |
+
* @attaches-to ``add_action("edit_user_profile_update");``
|
417 |
+
* @attaches-to ``add_action("personal_options_update");``
|
418 |
+
*
|
419 |
+
* @param int|string $user_id Expects a numeric WordPress User ID passed in by the Action Hook.
|
420 |
+
*/
|
421 |
+
public static function users_list_update_cols($user_id = '')
|
422 |
+
{
|
423 |
+
global $current_site, $current_blog; // Multisite networks.
|
424 |
+
|
425 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
426 |
+
do_action("ws_plugin__s2member_before_users_list_update_cols", get_defined_vars());
|
427 |
+
unset($__refs, $__v);
|
428 |
+
|
429 |
+
$user = new WP_User($user_id); // We need both of these objects. `$user` and `$current_user`.
|
430 |
+
$current_user = (is_user_logged_in()) ? wp_get_current_user() : FALSE; // Current user.
|
431 |
+
|
432 |
+
if(is_object($user) && !empty($user->ID) && ($user_id = $user->ID) && is_object($current_user) && !empty($current_user->ID))
|
433 |
+
{
|
434 |
+
if(current_user_can("edit_users") && (!is_multisite() || is_super_admin() || is_user_member_of_blog($user_id)))
|
435 |
+
{
|
436 |
+
if(!empty($_POST) && is_array($_p = c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST))))
|
437 |
+
{
|
438 |
+
$old_user = unserialize(serialize($user)); // Copy existing User obj.
|
439 |
+
$old_role = c_ws_plugin__s2member_user_access::user_access_role($old_user);
|
440 |
|
441 |
+
$role = isset($_p["role"]) && $_p["role"] !== $old_role ? $_p["role"] : $old_role;
|
442 |
+
$level = c_ws_plugin__s2member_user_access::user_access_role_to_level($role);
|
|
|
443 |
|
444 |
+
$user->roles = isset($_p["role"]) && $_p["role"] !== $old_role ? array($_p["role"]) : $old_user->roles;
|
445 |
+
$user->user_email = isset($_p["email"]) && is_email($_p["email"]) && $_p["email"] !== $old_user->user_email && !email_exists($_p["email"]) ? $_p["email"] : $old_user->user_email;
|
446 |
+
$user->first_name = isset($_p["first_name"]) && $_p["first_name"] !== $old_user->first_name ? $_p["first_name"] : $old_user->first_name;
|
447 |
+
$user->last_name = isset($_p["last_name"]) && $_p["last_name"] !== $old_user->last_name ? $_p["last_name"] : $old_user->last_name;
|
448 |
|
449 |
+
$auto_eot_time = !empty($_p["ws_plugin__s2member_profile_s2member_auto_eot_time"]) ? strtotime($_p["ws_plugin__s2member_profile_s2member_auto_eot_time"]) : "";
|
450 |
|
451 |
+
if($role !== $old_role) // In this case, we need to fire Hook: `ws_plugin__s2member_during_collective_mods`.
|
452 |
+
do_action("ws_plugin__s2member_during_collective_mods", $user_id, get_defined_vars(), "user-role-change", "modification", $role, $user, $old_user);
|
453 |
|
454 |
+
if(isset($_p["ws_plugin__s2member_profile_s2member_originating_blog"]) && is_multisite() && is_super_admin())
|
455 |
+
update_user_meta($user_id, "s2member_originating_blog", $_p["ws_plugin__s2member_profile_s2member_originating_blog"]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
456 |
|
457 |
+
if(isset($_p["ws_plugin__s2member_profile_s2member_subscr_gateway"]))
|
458 |
+
update_user_option($user_id, "s2member_subscr_gateway", $_p["ws_plugin__s2member_profile_s2member_subscr_gateway"]);
|
|
|
459 |
|
460 |
+
if(isset($_p["ws_plugin__s2member_profile_s2member_subscr_id"]))
|
461 |
+
update_user_option($user_id, "s2member_subscr_id", $_p["ws_plugin__s2member_profile_s2member_subscr_id"]);
|
462 |
+
|
463 |
+
if(isset($_p["ws_plugin__s2member_profile_s2member_subscr_cid"]))
|
464 |
+
update_user_option($user_id, "s2member_subscr_cid", $_p["ws_plugin__s2member_profile_s2member_subscr_cid"]);
|
465 |
+
|
466 |
+
if(isset($_p["ws_plugin__s2member_profile_s2member_custom"]))
|
467 |
+
update_user_option($user_id, "s2member_custom", $_p["ws_plugin__s2member_profile_s2member_custom"]);
|
468 |
+
|
469 |
+
if(isset($_p["ws_plugin__s2member_profile_s2member_coupon_codes"]))
|
470 |
+
update_user_option($user_id, "s2member_coupon_codes", array_map('trim', preg_split('/,+/', $_p["ws_plugin__s2member_profile_s2member_coupon_codes"], NULL, PREG_SPLIT_NO_EMPTY)));
|
471 |
+
|
472 |
+
if(isset($_p["ws_plugin__s2member_profile_s2member_registration_ip"]))
|
473 |
+
update_user_option($user_id, "s2member_registration_ip", $_p["ws_plugin__s2member_profile_s2member_registration_ip"]);
|
474 |
+
|
475 |
+
if(isset($_p["ws_plugin__s2member_profile_s2member_notes"]))
|
476 |
+
update_user_option($user_id, "s2member_notes", $_p["ws_plugin__s2member_profile_s2member_notes"]);
|
477 |
+
|
478 |
+
if(isset($_p["ws_plugin__s2member_profile_s2member_auto_eot_time"]) && isset($auto_eot_time))
|
479 |
+
update_user_option($user_id, "s2member_auto_eot_time", $auto_eot_time);
|
480 |
+
|
481 |
+
if(isset($_p["ws_plugin__s2member_profile_s2member_ccaps"]))
|
482 |
+
{
|
483 |
+
foreach($user->allcaps as $cap => $cap_enabled)
|
484 |
+
if(preg_match("/^access_s2member_ccap_/", $cap))
|
485 |
+
$user->remove_cap($ccap = $cap);
|
486 |
+
|
487 |
+
if(!empty($_p["ws_plugin__s2member_profile_s2member_ccaps"]))
|
488 |
+
foreach(preg_split("/[\r\n\t\s;,]+/", $_p["ws_plugin__s2member_profile_s2member_ccaps"]) as $ccap)
|
489 |
+
if(strlen($ccap = trim(strtolower(preg_replace("/[^a-z_0-9]/i", "", $ccap)))))
|
490 |
+
$user->add_cap("access_s2member_ccap_".$ccap);
|
491 |
+
}
|
492 |
+
if($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"])
|
493 |
+
{
|
494 |
+
foreach(json_decode($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"], TRUE) as $field)
|
495 |
+
{
|
496 |
+
$field_var = preg_replace("/[^a-z0-9]/i", "_", strtolower($field["id"]));
|
497 |
+
$field_id_class = preg_replace("/_/", "-", $field_var);
|
498 |
+
|
499 |
+
if(isset($_p["ws_plugin__s2member_profile_".$field_var]) /* Field being set? */)
|
500 |
+
{
|
501 |
+
if((is_array($_p["ws_plugin__s2member_profile_".$field_var]) && !empty($_p["ws_plugin__s2member_profile_".$field_var])) || (is_string($_p["ws_plugin__s2member_profile_".$field_var]) && strlen($_p["ws_plugin__s2member_profile_".$field_var])))
|
502 |
+
$fields[$field_var] = $_p["ws_plugin__s2member_profile_".$field_var];
|
503 |
+
else if(isset($fields)) unset($fields[$field_var]);
|
504 |
+
}
|
505 |
+
else if(isset($fields)) unset($fields[$field_var]);
|
506 |
+
}
|
507 |
+
}
|
508 |
+
if(!empty($fields))
|
509 |
+
update_user_option($user_id, "s2member_custom_fields", $fields);
|
510 |
+
else delete_user_option($user_id, "s2member_custom_fields");
|
511 |
+
|
512 |
+
if($level > 0 /* We only process this if they are higher than Level #0. */)
|
513 |
+
{
|
514 |
+
$pr_times = get_user_option("s2member_paid_registration_times", $user_id);
|
515 |
+
$pr_times["level"] = (empty($pr_times["level"])) ? time() : $pr_times["level"];
|
516 |
+
$pr_times["level".$level] = (empty($pr_times["level".$level])) ? time() : $pr_times["level".$level];
|
517 |
+
update_user_option($user_id, "s2member_paid_registration_times", $pr_times); // Update now.
|
518 |
+
}
|
519 |
+
if(!empty($_p["ws_plugin__s2member_profile_opt_in"]) && !empty($role) && $level >= 0 /* Should we process List Servers? */)
|
520 |
+
c_ws_plugin__s2member_list_servers::process_list_servers($role, $level, $user->user_login, ((!empty($_p["pass1"])) ? $_p["pass1"] : ""), $user->user_email, $user->first_name, $user->last_name, FALSE, TRUE, TRUE, $user_id);
|
521 |
+
|
522 |
+
if(!empty($_p["ws_plugin__s2member_profile_ip_restrictions"]) /* Delete/reset IP Restrictions? */)
|
523 |
+
c_ws_plugin__s2member_ip_restrictions::delete_reset_specific_ip_restrictions(strtolower($user->user_login));
|
524 |
+
|
525 |
+
if(!empty($_p["ws_plugin__s2member_profile_reset_pass_resend"]) && c_ws_plugin__s2member_utils_conds::pro_is_installed() /* Reset password & resend email notification? */)
|
526 |
+
c_ws_plugin__s2member_email_configs::reset_pass_resend_new_user_notification($user_id, ((!empty($_p["pass1"])) ? $_p["pass1"] : ""), array("user"), $user->user_email);
|
527 |
+
|
528 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
529 |
+
do_action("ws_plugin__s2member_during_users_list_update_cols", get_defined_vars());
|
530 |
+
unset($__refs, $__v);
|
531 |
}
|
532 |
+
}
|
533 |
+
else if($current_user->ID === $user->ID /* Otherwise, a User can always edit their own Profile. */)
|
534 |
+
{
|
535 |
+
if(!empty($_POST) && is_array($_p = c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST))))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
536 |
{
|
537 |
+
$role = c_ws_plugin__s2member_user_access::user_access_role($user /* Role is not changing here. */);
|
538 |
+
$level = c_ws_plugin__s2member_user_access::user_access_role_to_level($role);
|
539 |
|
540 |
+
if($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"])
|
541 |
+
if($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level($level, "profile"))
|
542 |
+
{
|
543 |
+
$fields = array(); // Initialize.
|
544 |
+
$_existing_fields = get_user_option("s2member_custom_fields", $user_id);
|
545 |
|
546 |
+
foreach(json_decode($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"], TRUE) as $field)
|
547 |
+
{
|
548 |
+
$field_var = preg_replace("/[^a-z0-9]/i", "_", strtolower($field["id"]));
|
549 |
+
$field_id_class = preg_replace("/_/", "-", $field_var);
|
550 |
|
551 |
+
if(!in_array($field["id"], $fields_applicable) || strpos($field["editable"], "no") === 0)
|
552 |
+
{
|
553 |
+
if(isset($_existing_fields[$field_var]) && ((is_array($_existing_fields[$field_var]) && !empty($_existing_fields[$field_var])) || (is_string($_existing_fields[$field_var]) && strlen($_existing_fields[$field_var]))))
|
554 |
+
$fields[$field_var] = $_existing_fields[$field_var];
|
555 |
+
else unset($fields[$field_var]);
|
556 |
+
}
|
557 |
+
else if($field["required"] === "yes" && (!isset($_p["ws_plugin__s2member_profile_".$field_var]) || (!is_array($_p["ws_plugin__s2member_profile_".$field_var]) && !is_string($_p["ws_plugin__s2member_profile_".$field_var])) || (is_array($_p["ws_plugin__s2member_profile_".$field_var]) && empty($_p["ws_plugin__s2member_profile_".$field_var])) || (is_string($_p["ws_plugin__s2member_profile_".$field_var]) && !strlen($_p["ws_plugin__s2member_profile_".$field_var]))))
|
558 |
{
|
559 |
+
if(isset($_existing_fields[$field_var]) && ((is_array($_existing_fields[$field_var]) && !empty($_existing_fields[$field_var])) || (is_string($_existing_fields[$field_var]) && strlen($_existing_fields[$field_var]))))
|
560 |
+
$fields[$field_var] = $_existing_fields[$field_var];
|
561 |
+
else unset($fields[$field_var]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
562 |
}
|
563 |
+
else if(isset($_p["ws_plugin__s2member_profile_".$field_var]))
|
564 |
{
|
565 |
+
if((is_array($_p["ws_plugin__s2member_profile_".$field_var]) && !empty($_p["ws_plugin__s2member_profile_".$field_var])) || (is_string($_p["ws_plugin__s2member_profile_".$field_var]) && strlen($_p["ws_plugin__s2member_profile_".$field_var])))
|
566 |
+
$fields[$field_var] = $_p["ws_plugin__s2member_profile_".$field_var];
|
567 |
+
else unset($fields[$field_var]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
568 |
}
|
569 |
+
else unset($fields[$field_var]);
|
570 |
+
}
|
571 |
+
if(!empty($fields))
|
572 |
+
update_user_option($user_id, "s2member_custom_fields", $fields);
|
573 |
+
else delete_user_option($user_id, "s2member_custom_fields");
|
574 |
}
|
575 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
576 |
+
do_action("ws_plugin__s2member_during_users_list_update_cols", get_defined_vars());
|
577 |
unset($__refs, $__v);
|
|
|
|
|
578 |
}
|
579 |
+
}
|
580 |
}
|
581 |
+
foreach(array_keys(get_defined_vars()) as $__v) $__refs[$__v] =& $$__v;
|
582 |
+
do_action("ws_plugin__s2member_after_users_list_update_cols", get_defined_vars());
|
583 |
+
unset($__refs, $__v);
|
584 |
+
}
|
585 |
}
|
586 |
+
}
|
includes/classes/users-list.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Users_List
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_users_list"))
|
14 |
* @package s2Member\Users_List
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_users_list"))
|
includes/classes/utilities.inc.php
CHANGED
@@ -1,208 +1,215 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* General utilities.
|
4 |
-
*
|
5 |
-
* Copyright: © 2009-2011
|
6 |
-
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
|
7 |
-
* (coded in the USA)
|
8 |
-
*
|
9 |
-
* Released under the terms of the GNU General Public License.
|
10 |
-
* You should have received a copy of the GNU General Public License,
|
11 |
-
* along with this software. In the main directory, see: /licensing/
|
12 |
-
* If not, see: {@link http://www.gnu.org/licenses/}.
|
13 |
-
*
|
14 |
-
* @package s2Member\Utilities
|
15 |
-
* @since 3.5
|
16 |
-
*/
|
17 |
-
if
|
18 |
-
exit (
|
19 |
-
|
20 |
-
if
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
{
|
22 |
/**
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
{
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
if(is_array($vars) && !empty($vars))
|
42 |
-
extract($vars, EXTR_PREFIX_SAME, '_extract_');
|
43 |
-
|
44 |
-
ob_start (); // Output buffer.
|
45 |
-
|
46 |
-
eval ("?>" . trim ($code));
|
47 |
-
|
48 |
-
return ob_get_clean ();
|
49 |
-
}
|
50 |
-
/**
|
51 |
-
* Buffers (gets) function output.
|
52 |
-
*
|
53 |
-
* A variable length of additional arguments are possible.
|
54 |
-
* Additional parameters get passed into the ``$function``.
|
55 |
-
*
|
56 |
-
* @package s2Member\Utilities
|
57 |
-
* @since 3.5
|
58 |
-
*
|
59 |
-
* @param string $function Name of a function to call upon.
|
60 |
-
* @return string Output after call to function.
|
61 |
-
* Any output is buffered and returned.
|
62 |
-
*/
|
63 |
-
public static function get ($function = FALSE)
|
64 |
-
{
|
65 |
-
$args = func_get_args ();
|
66 |
-
$function = array_shift ($args);
|
67 |
-
|
68 |
-
if (is_string ($function) && $function)
|
69 |
-
{
|
70 |
-
ob_start ();
|
71 |
-
|
72 |
-
if (is_array($args) && !empty($args))
|
73 |
-
{
|
74 |
-
$return = call_user_func_array($function, $args);
|
75 |
-
}
|
76 |
-
else // There are no additional arguments to pass.
|
77 |
-
{
|
78 |
-
$return = call_user_func ($function);
|
79 |
-
}
|
80 |
-
|
81 |
-
$echo = ob_get_clean ();
|
82 |
-
|
83 |
-
return (!strlen ($echo) && strlen ($return)) ? $return : $echo;
|
84 |
-
}
|
85 |
-
else // Else return null.
|
86 |
-
return;
|
87 |
-
}
|
88 |
-
/**
|
89 |
-
* Builds a version checksum for this installation.
|
90 |
-
*
|
91 |
-
* @package s2Member\Utilities
|
92 |
-
* @since 3.5
|
93 |
-
*
|
94 |
-
* @return string String with `[version]-[pro version]-[consolidated checksum]`.
|
95 |
-
*/
|
96 |
-
public static function ver_checksum ()
|
97 |
-
{
|
98 |
-
$checksum = WS_PLUGIN__S2MEMBER_VERSION; // Software version string.
|
99 |
-
$checksum .= (c_ws_plugin__s2member_utils_conds::pro_is_installed ()) ? "-" . WS_PLUGIN__S2MEMBER_PRO_VERSION : ""; // Pro version string?
|
100 |
-
$checksum .= "-" . abs (crc32 ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["checksum"] . $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["options_checksum"] . $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["options_version"]));
|
101 |
-
|
102 |
-
return $checksum; // (i.e. version-pro version-checksum)
|
103 |
-
}
|
104 |
-
/**
|
105 |
-
* String with current time details.
|
106 |
-
*
|
107 |
-
* @package s2Member\Utilities
|
108 |
-
* @since 130210
|
109 |
-
*
|
110 |
-
* @return string String with time representation (in UTC time).
|
111 |
-
*/
|
112 |
-
public static function time_details ()
|
113 |
-
{
|
114 |
-
$time = time(); // The time at this very moment.
|
115 |
-
$details = date ("D M jS, Y", $time)." @ precisely " . date ("g:i a e", $time);
|
116 |
-
|
117 |
-
return $details; // Return all details.
|
118 |
-
}
|
119 |
-
/**
|
120 |
-
* String with all version details *(for PHP, WordPress, s2Member, and Pro)*.
|
121 |
-
*
|
122 |
-
* @package s2Member\Utilities
|
123 |
-
* @since 3.5
|
124 |
-
*
|
125 |
-
* @return string String with `PHP vX.XX :: WordPress vX.XX :: s2Member vX.XX :: s2Member Pro vX.XX`.
|
126 |
-
*/
|
127 |
-
public static function ver_details ()
|
128 |
-
{
|
129 |
-
$details = "PHP v" . PHP_VERSION . " :: WordPress v" . get_bloginfo ("version") . " :: s2Member v" . WS_PLUGIN__S2MEMBER_VERSION;
|
130 |
-
$details .= (c_ws_plugin__s2member_utils_conds::pro_is_installed ()) ? " :: s2Member Pro v" . WS_PLUGIN__S2MEMBER_PRO_VERSION : "";
|
131 |
-
|
132 |
-
return $details; // Return all details.
|
133 |
-
}
|
134 |
-
/**
|
135 |
-
* Generates s2Member Security Badge.
|
136 |
-
*
|
137 |
-
* @package s2Member\Utilities
|
138 |
-
* @since 3.5
|
139 |
-
*
|
140 |
-
* @param string $v A variation number to display. Defaults to `1`.
|
141 |
-
* @param bool $no_cache Defaults to false. If true, the HTML markup will contain query string params that prevent caching.
|
142 |
-
* @param bool $display_on_failure. Defaults to false. True if we need to display the "NOT yet verified" version inside admin panels.
|
143 |
-
* @return string HTML markup for display of s2Member Security Badge.
|
144 |
-
*/
|
145 |
-
public static function s_badge_gen ($v = "1", $no_cache = FALSE, $display_on_failure = FALSE)
|
146 |
-
{
|
147 |
-
if ($v && file_exists (($template = dirname (dirname (__FILE__)) . "/templates/badges/s-badge.php")))
|
148 |
-
{
|
149 |
-
$badge = trim (c_ws_plugin__s2member_utilities::evl (file_get_contents ($template)));
|
150 |
-
$badge = preg_replace ("/%%site_url%%/i", urlencode (home_url ()), preg_replace ("/%%v%%/i", (string)$v, $badge));
|
151 |
-
$badge = preg_replace ("/%%no_cache%%/i", (($no_cache) ? "&no_cache=" . urlencode (mt_rand (0, PHP_INT_MAX)) : ""), $badge);
|
152 |
-
$badge = preg_replace ("/%%display_on_failure%%/i", (($display_on_failure) ? "&display_on_failure=1" : ""), $badge);
|
153 |
-
}
|
154 |
-
|
155 |
-
return (!empty($badge)) ? $badge : ""; // Return Security Badge.
|
156 |
-
}
|
157 |
-
/**
|
158 |
-
* Acquires information about memory usage.
|
159 |
-
*
|
160 |
-
* @package s2Member\Utilities
|
161 |
-
* @since 110815
|
162 |
-
*
|
163 |
-
* @return string String with `Memory x MB :: Real Memory x MB :: Peak Memory x MB :: Real Peak Memory x MB`.
|
164 |
-
*/
|
165 |
-
public static function mem_details ()
|
166 |
-
{
|
167 |
-
$memory = number_format (memory_get_usage () / 1048576, 2, ".", "");
|
168 |
-
$real_memory = number_format (memory_get_usage (true) / 1048576, 2, ".", "");
|
169 |
-
$peak_memory = number_format (memory_get_peak_usage () / 1048576, 2, ".", "");
|
170 |
-
$real_peak_memory = number_format (memory_get_peak_usage (true) / 1048576, 2, ".", "");
|
171 |
-
|
172 |
-
$details = "Memory " . $memory . " MB :: Real Memory " . $real_memory . " MB :: Peak Memory " . $peak_memory . " MB :: Real Peak Memory " . $real_peak_memory . " MB";
|
173 |
-
|
174 |
-
return $details; // Return all details.
|
175 |
-
}
|
176 |
-
/**
|
177 |
-
* Acquires s2Member options for the Main Site of a Multisite Network.
|
178 |
-
*
|
179 |
-
* @package s2Member\Utilities
|
180 |
-
* @since 110912
|
181 |
-
*
|
182 |
-
* @return array Array of s2Member options for the Main Site.
|
183 |
-
*/
|
184 |
-
public static function mms_options ()
|
185 |
-
{
|
186 |
-
return (is_multisite ()) ? (array)get_site_option ("ws_plugin__s2member_options") : array();
|
187 |
-
}
|
188 |
-
/**
|
189 |
-
* Builds an array of backtrace callers.
|
190 |
-
*
|
191 |
-
* @package s2Member\Utilities
|
192 |
-
* @since 110912
|
193 |
-
*
|
194 |
-
* @param array $debug_backtrace Optional. Defaults to ``debug_backtrace()``.
|
195 |
-
* @return array Array of backtrace callers (lowercase).
|
196 |
-
*/
|
197 |
-
public static function callers ($debug_backtrace = FALSE)
|
198 |
-
{
|
199 |
-
$callers = array(); // Initialize array.
|
200 |
-
foreach (($debug_backtrace = (is_array($debug_backtrace)) ? $debug_backtrace : debug_backtrace ()) as $caller)
|
201 |
-
if (isset ($caller["class"], $caller["function"]) || (!isset ($caller["class"]) && isset ($caller["function"])))
|
202 |
-
$callers[] = (isset ($caller["class"])) ? $caller["class"] . "::" . $caller["function"] : $caller["function"];
|
203 |
-
|
204 |
-
return array_map ("strtolower", array_unique ($callers));
|
205 |
-
}
|
206 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
207 |
}
|
208 |
-
|
1 |
<?php
|
2 |
/**
|
3 |
+
* General utilities.
|
4 |
+
*
|
5 |
+
* Copyright: © 2009-2011
|
6 |
+
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
|
7 |
+
* (coded in the USA)
|
8 |
+
*
|
9 |
+
* Released under the terms of the GNU General Public License.
|
10 |
+
* You should have received a copy of the GNU General Public License,
|
11 |
+
* along with this software. In the main directory, see: /licensing/
|
12 |
+
* If not, see: {@link http://www.gnu.org/licenses/}.
|
13 |
+
*
|
14 |
+
* @package s2Member\Utilities
|
15 |
+
* @since 3.5
|
16 |
+
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
+
exit ('Do not access this file directly.');
|
19 |
+
|
20 |
+
if(!class_exists('c_ws_plugin__s2member_utilities'))
|
21 |
+
{
|
22 |
+
/**
|
23 |
+
* General utilities.
|
24 |
+
*
|
25 |
+
* @package s2Member\Utilities
|
26 |
+
* @since 3.5
|
27 |
+
*/
|
28 |
+
class c_ws_plugin__s2member_utilities
|
29 |
{
|
30 |
/**
|
31 |
+
* Evaluates PHP code, and 'returns' output.
|
32 |
+
*
|
33 |
+
* @package s2Member\Utilities
|
34 |
+
* @since 3.5
|
35 |
+
*
|
36 |
+
* @param string $code A string of data, possibly with embedded PHP code.
|
37 |
+
* @param array $vars Variables to put into the scope of `eval()`.
|
38 |
+
*
|
39 |
+
* @return string Output after PHP evaluation.
|
40 |
+
*/
|
41 |
+
public static function evl($code = '', $vars = array())
|
42 |
+
{
|
43 |
+
if(is_array($vars) && !empty($vars))
|
44 |
+
extract($vars, EXTR_PREFIX_SAME, '_extract_');
|
45 |
+
|
46 |
+
ob_start(); // Output buffer.
|
47 |
+
|
48 |
+
eval ('?>'.trim($code));
|
49 |
+
|
50 |
+
return ob_get_clean();
|
51 |
+
}
|
52 |
+
|
53 |
+
/**
|
54 |
+
* Buffers (gets) function output.
|
55 |
+
*
|
56 |
+
* A variable length of additional arguments are possible.
|
57 |
+
* Additional parameters get passed into the ``$function``.
|
58 |
+
*
|
59 |
+
* @package s2Member\Utilities
|
60 |
+
* @since 3.5
|
61 |
+
*
|
62 |
+
* @param string $function Name of a function to call upon.
|
63 |
+
*
|
64 |
+
* @return string Output after call to function.
|
65 |
+
* Any output is buffered and returned.
|
66 |
+
*/
|
67 |
+
public static function get($function = '')
|
68 |
+
{
|
69 |
+
$args = func_get_args();
|
70 |
+
$function = array_shift($args);
|
71 |
+
|
72 |
+
if(is_string($function) && $function)
|
73 |
{
|
74 |
+
ob_start(); // Open output buffer.
|
75 |
+
|
76 |
+
if(is_array($args) && !empty($args))
|
77 |
+
$return = call_user_func_array($function, $args);
|
78 |
+
|
79 |
+
else // There are no additional arguments to pass.
|
80 |
+
$return = call_user_func($function);
|
81 |
+
|
82 |
+
$echo = ob_get_clean(); // Close buffer.
|
83 |
+
|
84 |
+
return !strlen($echo) && strlen($return) ? $return : $echo;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
85 |
}
|
86 |
+
return NULL;
|
87 |
+
}
|
88 |
+
|
89 |
+
/**
|
90 |
+
* Builds a version checksum for this installation.
|
91 |
+
*
|
92 |
+
* @package s2Member\Utilities
|
93 |
+
* @since 3.5
|
94 |
+
*
|
95 |
+
* @return string String with `[version]-[pro version]-[consolidated checksum]`.
|
96 |
+
*/
|
97 |
+
public static function ver_checksum()
|
98 |
+
{
|
99 |
+
$checksum = WS_PLUGIN__S2MEMBER_VERSION; // Software version string.
|
100 |
+
$checksum .= (c_ws_plugin__s2member_utils_conds::pro_is_installed()) ? '-'.WS_PLUGIN__S2MEMBER_PRO_VERSION : ''; // Pro version string?
|
101 |
+
$checksum .= '-'.abs(crc32($GLOBALS['WS_PLUGIN__']['s2member']['c']['checksum'].$GLOBALS['WS_PLUGIN__']['s2member']['o']['options_checksum'].$GLOBALS['WS_PLUGIN__']['s2member']['o']['options_version']));
|
102 |
+
|
103 |
+
return $checksum; // (i.e. version-pro version-checksum)
|
104 |
+
}
|
105 |
+
|
106 |
+
/**
|
107 |
+
* String with current time details.
|
108 |
+
*
|
109 |
+
* @package s2Member\Utilities
|
110 |
+
* @since 130210
|
111 |
+
*
|
112 |
+
* @return string String with time representation (in UTC time).
|
113 |
+
*/
|
114 |
+
public static function time_details()
|
115 |
+
{
|
116 |
+
$time = time(); // The time at this very moment.
|
117 |
+
$details = date('D M jS, Y', $time).' @ precisely '.date('g:i a e', $time);
|
118 |
+
|
119 |
+
return $details; // Return all details.
|
120 |
+
}
|
121 |
+
|
122 |
+
/**
|
123 |
+
* String with all version details *(for PHP, WordPress, s2Member, and Pro)*.
|
124 |
+
*
|
125 |
+
* @package s2Member\Utilities
|
126 |
+
* @since 3.5
|
127 |
+
*
|
128 |
+
* @return string String with `PHP vX.XX :: WordPress vX.XX :: s2Member vX.XX :: s2Member Pro vX.XX`.
|
129 |
+
*/
|
130 |
+
public static function ver_details()
|
131 |
+
{
|
132 |
+
$details = 'PHP v'.PHP_VERSION.' :: WordPress v'.get_bloginfo('version').' :: s2Member v'.WS_PLUGIN__S2MEMBER_VERSION;
|
133 |
+
$details .= (c_ws_plugin__s2member_utils_conds::pro_is_installed()) ? ' :: s2Member Pro v'.WS_PLUGIN__S2MEMBER_PRO_VERSION : '';
|
134 |
+
|
135 |
+
return $details; // Return all details.
|
136 |
+
}
|
137 |
+
|
138 |
+
/**
|
139 |
+
* Generates s2Member Security Badge.
|
140 |
+
*
|
141 |
+
* @package s2Member\Utilities
|
142 |
+
* @since 3.5
|
143 |
+
*
|
144 |
+
* @param string $v A variation number to display. Defaults to `1`.
|
145 |
+
* @param bool $no_cache Defaults to false. If true, the HTML markup will contain query string params that prevent caching.
|
146 |
+
* @param bool $display_on_failure . Defaults to false. True if we need to display the 'NOT yet verified' version inside admin panels.
|
147 |
+
*
|
148 |
+
* @return string HTML markup for display of s2Member Security Badge.
|
149 |
+
*/
|
150 |
+
public static function s_badge_gen($v = '1', $no_cache = FALSE, $display_on_failure = FALSE)
|
151 |
+
{
|
152 |
+
if($v && file_exists(($template = dirname(dirname(__FILE__)).'/templates/badges/s-badge.php')))
|
153 |
+
{
|
154 |
+
$badge = trim(c_ws_plugin__s2member_utilities::evl(file_get_contents($template)));
|
155 |
+
$badge = preg_replace('/%%site_url%%/i', urlencode(home_url()), preg_replace('/%%v%%/i', (string)$v, $badge));
|
156 |
+
$badge = preg_replace('/%%no_cache%%/i', (($no_cache) ? '&no_cache='.urlencode(mt_rand(0, PHP_INT_MAX)) : ''), $badge);
|
157 |
+
$badge = preg_replace('/%%display_on_failure%%/i', (($display_on_failure) ? '&display_on_failure=1' : ''), $badge);
|
158 |
+
}
|
159 |
+
return (!empty($badge)) ? $badge : ''; // Return Security Badge.
|
160 |
+
}
|
161 |
+
|
162 |
+
/**
|
163 |
+
* Acquires information about memory usage.
|
164 |
+
*
|
165 |
+
* @package s2Member\Utilities
|
166 |
+
* @since 110815
|
167 |
+
*
|
168 |
+
* @return string String with `Memory x MB :: Real Memory x MB :: Peak Memory x MB :: Real Peak Memory x MB`.
|
169 |
+
*/
|
170 |
+
public static function mem_details()
|
171 |
+
{
|
172 |
+
$memory = number_format(memory_get_usage() / 1048576, 2, '.', '');
|
173 |
+
$real_memory = number_format(memory_get_usage(TRUE) / 1048576, 2, '.', '');
|
174 |
+
$peak_memory = number_format(memory_get_peak_usage() / 1048576, 2, '.', '');
|
175 |
+
$real_peak_memory = number_format(memory_get_peak_usage(TRUE) / 1048576, 2, '.', '');
|
176 |
+
|
177 |
+
$details = 'Memory '.$memory.' MB :: Real Memory '.$real_memory.' MB :: Peak Memory '.$peak_memory.' MB :: Real Peak Memory '.$real_peak_memory.' MB';
|
178 |
+
|
179 |
+
return $details; // Return all details.
|
180 |
+
}
|
181 |
+
|
182 |
+
/**
|
183 |
+
* Acquires s2Member options for the Main Site of a Multisite Network.
|
184 |
+
*
|
185 |
+
* @package s2Member\Utilities
|
186 |
+
* @since 110912
|
187 |
+
*
|
188 |
+
* @return array Array of s2Member options for the Main Site.
|
189 |
+
*/
|
190 |
+
public static function mms_options()
|
191 |
+
{
|
192 |
+
return (is_multisite()) ? (array)get_site_option('ws_plugin__s2member_options') : array();
|
193 |
+
}
|
194 |
+
|
195 |
+
/**
|
196 |
+
* Builds an array of backtrace callers.
|
197 |
+
*
|
198 |
+
* @package s2Member\Utilities
|
199 |
+
* @since 110912
|
200 |
+
*
|
201 |
+
* @param array $debug_backtrace Optional. Defaults to ``debug_backtrace()``.
|
202 |
+
*
|
203 |
+
* @return array Array of backtrace callers (lowercase).
|
204 |
+
*/
|
205 |
+
public static function callers($debug_backtrace = array())
|
206 |
+
{
|
207 |
+
$callers = array(); // Initialize array.
|
208 |
+
foreach(($debug_backtrace = (is_array($debug_backtrace)) ? $debug_backtrace : debug_backtrace()) as $caller)
|
209 |
+
if(isset ($caller['class'], $caller['function']) || (!isset ($caller['class']) && isset ($caller['function'])))
|
210 |
+
$callers[] = (isset ($caller['class'])) ? $caller['class'].'::'.$caller['function'] : $caller['function'];
|
211 |
+
|
212 |
+
return array_map('strtolower', array_unique($callers));
|
213 |
+
}
|
214 |
}
|
215 |
+
}
|
includes/classes/utils-arrays.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Utilities
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_utils_arrays"))
|
14 |
* @package s2Member\Utilities
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_utils_arrays"))
|
includes/classes/utils-captchas.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Utilities
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_utils_captchas"))
|
14 |
* @package s2Member\Utilities
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_utils_captchas"))
|
includes/classes/utils-conds.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Utilities
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_utils_conds'))
|
14 |
* @package s2Member\Utilities
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_utils_conds'))
|
includes/classes/utils-css.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Utilities
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_utils_css"))
|
14 |
* @package s2Member\Utilities
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_utils_css"))
|
includes/classes/utils-cur.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Utilities
|
15 |
* @since 110531
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_utils_cur'))
|
14 |
* @package s2Member\Utilities
|
15 |
* @since 110531
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_utils_cur'))
|
includes/classes/utils-dirs.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Utilities
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_utils_dirs"))
|
14 |
* @package s2Member\Utilities
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_utils_dirs"))
|
includes/classes/utils-encryption.inc.php
CHANGED
@@ -1,186 +1,234 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* Encryption utilities.
|
4 |
-
*
|
5 |
-
* Copyright: © 2009-2011
|
6 |
-
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
|
7 |
-
* (coded in the USA)
|
8 |
-
*
|
9 |
-
* Released under the terms of the GNU General Public License.
|
10 |
-
* You should have received a copy of the GNU General Public License,
|
11 |
-
* along with this software. In the main directory, see: /licensing/
|
12 |
-
* If not, see: {@link http://www.gnu.org/licenses/}.
|
13 |
-
*
|
14 |
-
* @package s2Member\Utilities
|
15 |
-
* @since 3.5
|
16 |
-
*/
|
17 |
-
if
|
18 |
-
exit (
|
19 |
-
|
20 |
-
if
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
{
|
22 |
/**
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
}
|
46 |
-
/**
|
47 |
-
* RIJNDAEL 256: two-way encryption/decryption, with a URL-safe base64 wrapper.
|
48 |
-
*
|
49 |
-
* Falls back on XOR encryption/decryption when/if mcrypt is not possible.
|
50 |
-
*
|
51 |
-
* @package s2Member\Utilities
|
52 |
-
* @since 3.5
|
53 |
-
*
|
54 |
-
* @param string $string A string of data to encrypt.
|
55 |
-
* @param string $key Optional. Key used for encryption. Defaults to the one configured for s2Member. Short of that, defaults to: ``wp_salt()``.
|
56 |
-
* @param bool $w_md5_cs Optional. Defaults to true. When true, an MD5 checksum is used in the encrypted string *(recommended)*.
|
57 |
-
* @return string Encrypted string.
|
58 |
-
*/
|
59 |
-
public static function encrypt ($string = FALSE, $key = FALSE, $w_md5_cs = TRUE)
|
60 |
-
{
|
61 |
-
if (function_exists ("mcrypt_encrypt") && in_array("rijndael-256", mcrypt_list_algorithms ()) && in_array("cbc", mcrypt_list_modes ()))
|
62 |
-
{
|
63 |
-
$string = /* Force a valid string value here. */ (is_string ($string)) ? $string : "";
|
64 |
-
$string = /* Indicating this is an RIJNDAEL 256 encrypted string. */ (strlen ($string)) ? "~r2|" . $string : "";
|
65 |
-
|
66 |
-
$key = /* Obtain encryption/decryption key. */ c_ws_plugin__s2member_utils_encryption::key ($key);
|
67 |
-
$key = /* Proper key length. */ substr ($key, 0, mcrypt_get_key_size (MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC));
|
68 |
|
69 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
|
71 |
-
|
72 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
|
74 |
-
|
75 |
-
|
76 |
-
else // Fallback on XOR encryption.
|
77 |
-
return c_ws_plugin__s2member_utils_encryption::xencrypt ($string, $key, $w_md5_cs);
|
78 |
-
}
|
79 |
-
/**
|
80 |
-
* RIJNDAEL 256: two-way encryption/decryption, with a URL-safe base64 wrapper.
|
81 |
-
*
|
82 |
-
* Falls back on XOR encryption/decryption when mcrypt is not available.
|
83 |
-
*
|
84 |
-
* @package s2Member\Utilities
|
85 |
-
* @since 3.5
|
86 |
-
*
|
87 |
-
* @param string $base64 A string of data to decrypt. Should still be base64 encoded.
|
88 |
-
* @param string $key Optional. Key used originally for encryption. Defaults to the one configured for s2Member. Short of that, defaults to: ``wp_salt()``.
|
89 |
-
* @return string Decrypted string.
|
90 |
-
*/
|
91 |
-
public static function decrypt ($base64 = FALSE, $key = FALSE)
|
92 |
-
{
|
93 |
-
$base64 = /* Force a valid string value here. */ (is_string ($base64)) ? $base64 : "";
|
94 |
-
$e = (strlen ($base64)) ? c_ws_plugin__s2member_utils_strings::base64_url_safe_decode ($base64) : "";
|
95 |
|
96 |
-
|
97 |
-
&& strlen ($e) /* And, is this an RIJNDAEL 256 encrypted string? */ && preg_match ("/^~r2\:([a-zA-Z0-9]+)(?:\:([a-zA-Z0-9]+))?\|(.*?)$/s", $e, $iv_md5_e))
|
98 |
-
{
|
99 |
-
$key = /* Obtain encryption/decryption key. */ c_ws_plugin__s2member_utils_encryption::key ($key);
|
100 |
-
$key = /* Proper key length. */ substr ($key, 0, mcrypt_get_key_size (MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC));
|
101 |
|
102 |
-
|
103 |
-
|
104 |
|
105 |
-
|
|
|
|
|
|
|
|
|
|
|
106 |
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
132 |
|
133 |
-
|
|
|
|
|
|
|
134 |
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
142 |
|
143 |
-
|
144 |
-
|
145 |
-
/**
|
146 |
-
* XOR two-way encryption/decryption, with a base64 wrapper.
|
147 |
-
*
|
148 |
-
* @package s2Member\Utilities
|
149 |
-
* @since 3.5
|
150 |
-
*
|
151 |
-
* @param string $base64 A string of data to decrypt. Should still be base64 encoded.
|
152 |
-
* @param string $key Optional. Key used originally for encryption. Defaults to the one configured for s2Member. Short of that, defaults to: ``wp_salt()``.
|
153 |
-
* @return string Decrypted string.
|
154 |
-
*/
|
155 |
-
public static function xdecrypt ($base64 = FALSE, $key = FALSE)
|
156 |
{
|
157 |
-
$
|
158 |
-
$
|
159 |
-
|
160 |
-
if (strlen ($e) /* And, is this an XOR encrypted string? */ && preg_match ("/^~xe(?:\:([a-zA-Z0-9]+))?\|(.*?)$/s", $e, $md5_e))
|
161 |
-
{
|
162 |
-
$key = /* Obtain encryption/decryption key. */ c_ws_plugin__s2member_utils_encryption::key ($key);
|
163 |
-
|
164 |
-
if (strlen ($md5_e[2]) && ( /* No checksum? */!$md5_e[1] || /* Or a matching checksum? */ $md5_e[1] === md5 ($md5_e[2])))
|
165 |
-
|
166 |
-
for ($i = 1, $d = ""; $i <= /* Will NOT run if ``$md5_e[2]`` has no length. */ strlen ($md5_e[2]); $i++)
|
167 |
-
{
|
168 |
-
$char = substr ($md5_e[2], $i - 1, 1);
|
169 |
-
$keychar = substr ($key, ($i % strlen ($key)) - 1, 1);
|
170 |
-
$d .= chr (ord ($char) - ord ($keychar));
|
171 |
-
}
|
172 |
-
if (isset ($d) && /* Was ``$md5_e[2]`` decrypted successfully? */ is_string ($d) && strlen ($d))
|
173 |
-
|
174 |
-
if (strlen ($d = preg_replace ("/^~xe\|/", "", $d, 1, $xe)) && $xe)
|
175 |
-
$d = /* Just re-assign this here. Nothing more to do. */ $d;
|
176 |
-
else // Else we need to empty this out.
|
177 |
-
$d = /* Empty string. Invalid. */ "";
|
178 |
-
|
179 |
-
return (isset ($d) && is_string ($d) && strlen ($d)) ? ($string = $d) : "";
|
180 |
-
}
|
181 |
-
else // Otherwise we must fail here with an empty string value.
|
182 |
-
return /* Just return an empty string in this case. */ "";
|
183 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
184 |
}
|
|
|
|
|
185 |
}
|
186 |
-
|
1 |
<?php
|
2 |
/**
|
3 |
+
* Encryption utilities.
|
4 |
+
*
|
5 |
+
* Copyright: © 2009-2011
|
6 |
+
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
|
7 |
+
* (coded in the USA)
|
8 |
+
*
|
9 |
+
* Released under the terms of the GNU General Public License.
|
10 |
+
* You should have received a copy of the GNU General Public License,
|
11 |
+
* along with this software. In the main directory, see: /licensing/
|
12 |
+
* If not, see: {@link http://www.gnu.org/licenses/}.
|
13 |
+
*
|
14 |
+
* @package s2Member\Utilities
|
15 |
+
* @since 3.5
|
16 |
+
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
+
exit ('Do not access this file directly.');
|
19 |
+
|
20 |
+
if(!class_exists('c_ws_plugin__s2member_utils_encryption'))
|
21 |
+
{
|
22 |
+
/**
|
23 |
+
* Encryption utilities.
|
24 |
+
*
|
25 |
+
* @package s2Member\Utilities
|
26 |
+
* @since 3.5
|
27 |
+
*/
|
28 |
+
class c_ws_plugin__s2member_utils_encryption
|
29 |
{
|
30 |
/**
|
31 |
+
* Determines the proper encryption/decryption Key to use.
|
32 |
+
*
|
33 |
+
* @package s2Member\Utilities
|
34 |
+
* @since 111106
|
35 |
+
*
|
36 |
+
* @param string $key Optional. Attempt to force a specific Key. Defaults to the one configured for s2Member. Short of that, defaults to: ``wp_salt()``.
|
37 |
+
*
|
38 |
+
* @return string Proper encryption/decryption Key. If ``$key`` is passed in, and it validates, we'll return that. Otherwise use a default Key.
|
39 |
+
*/
|
40 |
+
public static function key($key = '')
|
41 |
+
{
|
42 |
+
if(($key = trim((string)$key)))
|
43 |
+
return $key;
|
44 |
+
|
45 |
+
if(($key = trim($GLOBALS['WS_PLUGIN__']['s2member']['o']['sec_encryption_key'])))
|
46 |
+
return $key;
|
47 |
+
|
48 |
+
if(($key = trim(wp_salt())))
|
49 |
+
return $key;
|
50 |
+
|
51 |
+
return ($key = md5($_SERVER['HTTP_HOST']));
|
52 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
|
54 |
+
/**
|
55 |
+
* A unique, unguessable, non-numeric, caSe-insensitive key (20 chars max).
|
56 |
+
*
|
57 |
+
* @since 150124 Adding gift code generation.
|
58 |
+
*
|
59 |
+
* @note 32-bit systems usually have `PHP_INT_MAX` = `2147483647`.
|
60 |
+
* We limit `mt_rand()` to a max of `999999999`.
|
61 |
+
*
|
62 |
+
* @note A max possible length of 20 chars assumes this function
|
63 |
+
* will not be called after `Sat, 20 Nov 2286 17:46:39 GMT`.
|
64 |
+
* At which point a UNIX timestamp will grow in size.
|
65 |
+
*
|
66 |
+
* @note Key always begins with a `k` to prevent PHP's `is_numeric()`
|
67 |
+
* function from ever thinking it's a number in a different representation.
|
68 |
+
* See: <http://php.net/manual/en/function.is-numeric.php> for further details.
|
69 |
+
*
|
70 |
+
* @return string A unique, unguessable, non-numeric, caSe-insensitive key (20 chars max).
|
71 |
+
*/
|
72 |
+
public static function uunnci_key_20_max()
|
73 |
+
{
|
74 |
+
$microtime_19_max = number_format(microtime(TRUE), 9, '.', '');
|
75 |
+
// e.g. `9999999999`.`999999999` (max decimals: `9`, max overall precision: `19`).
|
76 |
+
// Assuming timestamp is never > 10 digits; i.e. before `Sat, 20 Nov 2286 17:46:39 GMT`.
|
77 |
+
|
78 |
+
list($seconds_10_max, $microseconds_9_max) = explode('.', $microtime_19_max, 2);
|
79 |
+
// e.g. `array(`9999999999`, `999999999`)`. Max total digits combined: `19`.
|
80 |
+
|
81 |
+
$seconds_base36 = base_convert($seconds_10_max, '10', '36'); // e.g. max `9999999999`, to base 36.
|
82 |
+
$microseconds_base36 = base_convert($microseconds_9_max, '10', '36'); // e.g. max `999999999`, to base 36.
|
83 |
+
$mt_rand_base36 = base_convert(mt_rand(1, 999999999), '10', '36'); // e.g. max `999999999`, to base 36.
|
84 |
+
$key = 'k'.$mt_rand_base36.$seconds_base36.$microseconds_base36; // e.g. `kgjdgxr4ldqpdrgjdgxr`.
|
85 |
+
|
86 |
+
return $key; // Max possible value: `kgjdgxr4ldqpdrgjdgxr` (20 chars).
|
87 |
+
}
|
88 |
|
89 |
+
/**
|
90 |
+
* RIJNDAEL 256: two-way encryption/decryption, with a URL-safe base64 wrapper.
|
91 |
+
*
|
92 |
+
* Falls back on XOR encryption/decryption when/if mcrypt is not possible.
|
93 |
+
*
|
94 |
+
* @package s2Member\Utilities
|
95 |
+
* @since 3.5
|
96 |
+
*
|
97 |
+
* @param string $string A string of data to encrypt.
|
98 |
+
* @param string $key Optional. Key used for encryption. Defaults to the one configured for s2Member. Short of that, defaults to: ``wp_salt()``.
|
99 |
+
* @param bool $w_md5_cs Optional. Defaults to true. When true, an MD5 checksum is used in the encrypted string *(recommended)*.
|
100 |
+
*
|
101 |
+
* @return string Encrypted string.
|
102 |
+
*/
|
103 |
+
public static function encrypt($string = '', $key = '', $w_md5_cs = TRUE)
|
104 |
+
{
|
105 |
+
if(function_exists('mcrypt_encrypt') && in_array('rijndael-256', mcrypt_list_algorithms()) && in_array('cbc', mcrypt_list_modes()))
|
106 |
+
{
|
107 |
+
$string = is_string($string) ? $string : '';
|
108 |
+
$string = isset($string[0]) ? '~r2|'.$string : '';
|
109 |
|
110 |
+
$key = c_ws_plugin__s2member_utils_encryption::key($key);
|
111 |
+
$key = substr($key, 0, mcrypt_get_key_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
|
113 |
+
$iv = c_ws_plugin__s2member_utils_strings::random_str_gen(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC), FALSE);
|
|
|
|
|
|
|
|
|
114 |
|
115 |
+
if(isset($string[0]) && is_string($e = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $string, MCRYPT_MODE_CBC, $iv)) && isset($e[0]))
|
116 |
+
$e = '~r2:'.$iv.($w_md5_cs ? ':'.md5($e) : '').'|'.$e;
|
117 |
|
118 |
+
return isset($e) && is_string($e) && isset($e[0])
|
119 |
+
? ($base64 = c_ws_plugin__s2member_utils_strings::base64_url_safe_encode($e))
|
120 |
+
: ''; // Default to empty string.
|
121 |
+
}
|
122 |
+
return c_ws_plugin__s2member_utils_encryption::xencrypt($string, $key, $w_md5_cs);
|
123 |
+
}
|
124 |
|
125 |
+
/**
|
126 |
+
* RIJNDAEL 256: two-way encryption/decryption, with a URL-safe base64 wrapper.
|
127 |
+
*
|
128 |
+
* Falls back on XOR encryption/decryption when mcrypt is not available.
|
129 |
+
*
|
130 |
+
* @package s2Member\Utilities
|
131 |
+
* @since 3.5
|
132 |
+
*
|
133 |
+
* @param string $base64 A string of data to decrypt. Should still be base64 encoded.
|
134 |
+
* @param string $key Optional. Key used originally for encryption. Defaults to the one configured for s2Member. Short of that, defaults to: ``wp_salt()``.
|
135 |
+
*
|
136 |
+
* @return string Decrypted string.
|
137 |
+
*/
|
138 |
+
public static function decrypt($base64 = '', $key = '')
|
139 |
+
{
|
140 |
+
$base64 = is_string($base64) ? $base64 : '';
|
141 |
+
$e = isset($base64[0]) ? c_ws_plugin__s2member_utils_strings::base64_url_safe_decode($base64) : '';
|
142 |
+
|
143 |
+
if(function_exists('mcrypt_decrypt') && in_array('rijndael-256', mcrypt_list_algorithms()) && in_array('cbc', mcrypt_list_modes()))
|
144 |
+
if(isset($e[0]) && preg_match('/^~r2\:([a-zA-Z0-9]+)(?:\:([a-zA-Z0-9]+))?\|(.*?)$/s', $e, $iv_md5_e))
|
145 |
+
{
|
146 |
+
$key = c_ws_plugin__s2member_utils_encryption::key($key);
|
147 |
+
$key = substr($key, 0, mcrypt_get_key_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC));
|
148 |
+
|
149 |
+
if(isset($iv_md5_e[3][0]) && (empty($iv_md5_e[2]) || $iv_md5_e[2] === md5($iv_md5_e[3])))
|
150 |
+
$d = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $iv_md5_e[3], MCRYPT_MODE_CBC, $iv_md5_e[1]);
|
151 |
+
|
152 |
+
if(isset($d) && is_string($d) && isset($d[0]))
|
153 |
+
if(strlen($d = preg_replace('/^~r2\|/', '', $d, 1, $r2)) && $r2)
|
154 |
+
$d = rtrim($d, "\0\4"); // See: <http://www.asciitable.com/>.
|
155 |
+
else $d = ''; // Force empty string; bad decryption.
|
156 |
+
|
157 |
+
return isset($d) && is_string($d) && isset($d[0])
|
158 |
+
? ($string = $d) // Decrypted string.
|
159 |
+
: ''; // Default to empty string.
|
160 |
+
}
|
161 |
+
return c_ws_plugin__s2member_utils_encryption::xdecrypt($base64, $key);
|
162 |
+
}
|
163 |
|
164 |
+
/**
|
165 |
+
* XOR two-way encryption/decryption, with a base64 wrapper.
|
166 |
+
*
|
167 |
+
* @package s2Member\Utilities
|
168 |
+
* @since 3.5
|
169 |
+
*
|
170 |
+
* @param string $string A string of data to encrypt.
|
171 |
+
* @param string $key Optional. Key used for encryption. Defaults to the one configured for s2Member. Short of that, defaults to: ``wp_salt()``.
|
172 |
+
* @param bool $w_md5_cs Optional. Defaults to true. When true, an MD5 checksum is used in the encrypted string *(recommended)*.
|
173 |
+
*
|
174 |
+
* @return string Encrypted string.
|
175 |
+
*/
|
176 |
+
public static function xencrypt($string = '', $key = '', $w_md5_cs = TRUE)
|
177 |
+
{
|
178 |
+
$string = is_string($string) ? $string : '';
|
179 |
+
$string = isset($string[0]) ? '~xe|'.$string : '';
|
180 |
+
|
181 |
+
$key = c_ws_plugin__s2member_utils_encryption::key($key);
|
182 |
+
|
183 |
+
for($i = 1, $e = ''; $i <= strlen($string); $i++)
|
184 |
+
{
|
185 |
+
$char = substr($string, $i - 1, 1);
|
186 |
+
$keychar = substr($key, ($i % strlen($key)) - 1, 1);
|
187 |
+
$e .= chr(ord($char) + ord($keychar));
|
188 |
+
}
|
189 |
+
$e = isset($e[0]) ? '~xe'.($w_md5_cs ? ':'.md5($e) : '').'|'.$e : '';
|
190 |
|
191 |
+
return isset($e) && is_string($e) && isset($e[0])
|
192 |
+
? ($base64 = c_ws_plugin__s2member_utils_strings::base64_url_safe_encode($e))
|
193 |
+
: ''; // Default to empty string.
|
194 |
+
}
|
195 |
|
196 |
+
/**
|
197 |
+
* XOR two-way encryption/decryption, with a base64 wrapper.
|
198 |
+
*
|
199 |
+
* @package s2Member\Utilities
|
200 |
+
* @since 3.5
|
201 |
+
*
|
202 |
+
* @param string $base64 A string of data to decrypt. Should still be base64 encoded.
|
203 |
+
* @param string $key Optional. Key used originally for encryption. Defaults to the one configured for s2Member. Short of that, defaults to: ``wp_salt()``.
|
204 |
+
*
|
205 |
+
* @return string Decrypted string.
|
206 |
+
*/
|
207 |
+
public static function xdecrypt($base64 = '', $key = '')
|
208 |
+
{
|
209 |
+
$base64 = is_string($base64) ? $base64 : '';
|
210 |
+
$e = isset($base64[0]) ? c_ws_plugin__s2member_utils_strings::base64_url_safe_decode($base64) : '';
|
211 |
+
|
212 |
+
if(isset($e[0]) && preg_match('/^~xe(?:\:([a-zA-Z0-9]+))?\|(.*?)$/s', $e, $md5_e))
|
213 |
+
{
|
214 |
+
$key = c_ws_plugin__s2member_utils_encryption::key($key);
|
215 |
|
216 |
+
if(isset($md5_e[2][0]) && (empty($md5_e[1]) || $md5_e[1] === md5($md5_e[2])))
|
217 |
+
for($i = 1, $d = ''; $i <= strlen($md5_e[2]); $i++)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
218 |
{
|
219 |
+
$char = substr($md5_e[2], $i - 1, 1);
|
220 |
+
$keychar = substr($key, ($i % strlen($key)) - 1, 1);
|
221 |
+
$d .= chr(ord($char) - ord($keychar));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
222 |
}
|
223 |
+
if(isset($d) && is_string($d) && isset($d[0]))
|
224 |
+
if(!strlen($d = preg_replace('/^~xe\|/', '', $d, 1, $xe)) || !$xe)
|
225 |
+
$d = ''; // Force empty string; bad decryption.
|
226 |
+
|
227 |
+
return isset($d) && is_string($d) && isset($d[0])
|
228 |
+
? ($string = $d) // Decrypted string.
|
229 |
+
: ''; // Default to empty string.
|
230 |
}
|
231 |
+
return ''; // Default to empty string.
|
232 |
+
}
|
233 |
}
|
234 |
+
}
|
includes/classes/utils-forms.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Utilities
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_utils_forms"))
|
14 |
* @package s2Member\Utilities
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_utils_forms"))
|
includes/classes/utils-gets.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Utilities
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_utils_gets'))
|
14 |
* @package s2Member\Utilities
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_utils_gets'))
|
includes/classes/utils-html.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Utilities
|
15 |
* @since 110720
|
16 |
*/
|
17 |
-
if
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_utils_html"))
|
14 |
* @package s2Member\Utilities
|
15 |
* @since 110720
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_utils_html"))
|
includes/classes/utils-logs.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Utilities
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_utils_logs'))
|
14 |
* @package s2Member\Utilities
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_utils_logs'))
|
includes/classes/utils-s2o.inc.php
CHANGED
@@ -1,136 +1,142 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* s2Member-only utilities.
|
4 |
-
*
|
5 |
-
* Copyright: © 2009-2011
|
6 |
-
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
|
7 |
-
* (coded in the USA)
|
8 |
-
*
|
9 |
-
* Released under the terms of the GNU General Public License.
|
10 |
-
* You should have received a copy of the GNU General Public License,
|
11 |
-
* along with this software. In the main directory, see: /licensing/
|
12 |
-
* If not, see: {@link http://www.gnu.org/licenses/}.
|
13 |
-
*
|
14 |
-
* @package s2Member\Utilities
|
15 |
-
* @since 110912
|
16 |
-
*/
|
17 |
-
if
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
{
|
19 |
/**
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
* @param string $alt_starting_dir An alternate directory to search from.
|
35 |
-
* @return string|null WordPress directory, else exits script execution on failure.
|
36 |
-
*/
|
37 |
-
public static function wp_dir ($starting_dir = FALSE, $alt_starting_dir = FALSE)
|
38 |
-
{
|
39 |
-
if(!empty($_SERVER['WP_DIR']))
|
40 |
-
return (string)$_SERVER['WP_DIR'];
|
41 |
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
{
|
65 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
66 |
{
|
67 |
-
$
|
68 |
-
|
|
|
|
|
|
|
|
|
|
|
69 |
{
|
70 |
-
if
|
71 |
-
|
72 |
-
|
73 |
-
$
|
74 |
-
|
75 |
-
{
|
76 |
-
$nw_plugins_section = "/[\r\n\t\s ]+foreach *\( *wp_get_active_network_plugins *\( *\) *as *\\\$network_plugin *\)[\r\n\t\s ]*\{?[\r\n\t\s ]*include_once *\( *\\\$network_plugin *\);[\r\n\t\s ]*\}?[\r\n\t\s ]*unset *\( *\\\$network_plugin *\);/";
|
77 |
-
$nw_plugins_replace = "\n\n" . c_ws_plugin__s2member_utils_s2o::esc_ds (trim (c_ws_plugin__s2member_utils_s2o::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/cfg-files/s2o-nw-plugins.php")))) . "\n";
|
78 |
-
if (($_wp_settings = preg_replace ($nw_plugins_section, $nw_plugins_replace, $_wp_settings, 1, $nw_plugins_replaced)) && $nw_plugins_replaced)
|
79 |
-
{
|
80 |
-
$st_plugins_section = "/[\r\n\t\s ]+foreach *\( *wp_get_active_and_valid_plugins *\( *\) *as *\\\$plugin *\)[\r\n\t\s ]*\{?[\r\n\t\s ]*include_once *\( *\\\$plugin *\);[\r\n\t\s ]*\}?[\r\n\t\s ]*unset *\( *\\\$plugin *\);/";
|
81 |
-
$st_plugins_replace = "\n\n" . c_ws_plugin__s2member_utils_s2o::esc_ds (trim (c_ws_plugin__s2member_utils_s2o::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/cfg-files/s2o-st-plugins.php")))) . "\n";
|
82 |
-
if (($_wp_settings = preg_replace ($st_plugins_section, $st_plugins_replace, $_wp_settings, 1, $st_plugins_replaced)) && $st_plugins_replaced)
|
83 |
-
{
|
84 |
-
$th_funcs_section = "/[\r\n\t\s ]+if *\( *\! *defined *\( *['\"]WP_INSTALLING['\"] *\) *\|\| *['\"]wp-activate.php['\"] *\=\=\= *\\\$pagenow *\)[\r\n\t\s ]*\{[\r\n\t\s ]*if *\( *TEMPLATEPATH *\!\=\= *STYLESHEETPATH *&& *file_exists *\( *STYLESHEETPATH *\. *['\"]\/functions\.php['\"] *\) *\)[\r\n\t\s ]*\{?[\r\n\t\s ]*include *\( *STYLESHEETPATH *\. *['\"]\/functions\.php['\"] *\);[\r\n\t\s ]*\}?[\r\n\t\s ]*if *\( *file_exists *\( *TEMPLATEPATH *\. *['\"]\/functions\.php['\"] *\) *\)[\r\n\t\s ]*\{?[\r\n\t\s ]*include *\( *TEMPLATEPATH *\. *['\"]\/functions\.php['\"] *\);[\r\n\t\s ]*\}?[\r\n\t\s ]*\}/";
|
85 |
-
$th_funcs_replace = "\n\n" . c_ws_plugin__s2member_utils_s2o::esc_ds (trim (c_ws_plugin__s2member_utils_s2o::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/cfg-files/s2o-th-funcs.php")))) . "\n";
|
86 |
-
if (($_wp_settings = preg_replace ($th_funcs_section, $th_funcs_replace, $_wp_settings, 1, $th_funcs_replaced)) && $th_funcs_replaced)
|
87 |
-
{
|
88 |
-
if (($_wp_settings = str_replace ("__FILE__", '"' . str_replace ('"', '\"', $o_file) . '"', $_wp_settings))) // Eval compatible.
|
89 |
-
{
|
90 |
-
if (($_wp_settings = trim ($_wp_settings))) // WordPress, with s2Member only.
|
91 |
-
return ($wp_settings_as = $_wp_settings); // After ``SHORTINIT``.
|
92 |
-
}
|
93 |
-
}
|
94 |
-
}
|
95 |
-
}
|
96 |
-
}
|
97 |
-
}
|
98 |
}
|
|
|
99 |
}
|
100 |
-
|
101 |
-
}
|
102 |
-
/**
|
103 |
-
* Escapes dollars signs (for regex patterns).
|
104 |
-
*
|
105 |
-
* @package s2Member\Utilities
|
106 |
-
* @since 110917
|
107 |
-
*
|
108 |
-
* @param string $string Input string.
|
109 |
-
* @param int $times Mumber of escapes. Defaults to 1.
|
110 |
-
* @return string Output string after dollar signs are escaped.
|
111 |
-
*/
|
112 |
-
public static function esc_ds ($string = FALSE, $times = FALSE)
|
113 |
-
{
|
114 |
-
$times = (is_numeric ($times) && $times >= 0) ? (int)$times : 1;
|
115 |
-
return str_replace ('$', str_repeat ("\\", $times) . '$', (string)$string);
|
116 |
}
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
* @since 110917
|
122 |
-
*
|
123 |
-
* @param string $code A string of data, possibly with embedded PHP code.
|
124 |
-
* @return string Output after PHP evaluation.
|
125 |
-
*/
|
126 |
-
public static function evl ($code = FALSE)
|
127 |
-
{
|
128 |
-
ob_start (); // Output buffer.
|
129 |
|
130 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
131 |
|
132 |
-
|
133 |
-
|
134 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
135 |
}
|
136 |
-
|
1 |
<?php
|
2 |
/**
|
3 |
+
* s2Member-only utilities.
|
4 |
+
*
|
5 |
+
* Copyright: © 2009-2011
|
6 |
+
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
|
7 |
+
* (coded in the USA)
|
8 |
+
*
|
9 |
+
* Released under the terms of the GNU General Public License.
|
10 |
+
* You should have received a copy of the GNU General Public License,
|
11 |
+
* along with this software. In the main directory, see: /licensing/
|
12 |
+
* If not, see: {@link http://www.gnu.org/licenses/}.
|
13 |
+
*
|
14 |
+
* @package s2Member\Utilities
|
15 |
+
* @since 110912
|
16 |
+
*/
|
17 |
+
if(!class_exists('c_ws_plugin__s2member_utils_s2o'))
|
18 |
+
{
|
19 |
+
/**
|
20 |
+
* s2Member-only utilities.
|
21 |
+
*
|
22 |
+
* @package s2Member\Utilities
|
23 |
+
* @since 110912
|
24 |
+
*/
|
25 |
+
class c_ws_plugin__s2member_utils_s2o
|
26 |
{
|
27 |
/**
|
28 |
+
* WordPress directory.
|
29 |
+
*
|
30 |
+
* @package s2Member\Utilities
|
31 |
+
* @since 110912
|
32 |
+
*
|
33 |
+
* @param string $starting_dir A directory to start searching from.
|
34 |
+
* @param string $alt_starting_dir An alternate directory to search from.
|
35 |
+
*
|
36 |
+
* @return string|null WordPress directory, else exits script execution on failure.
|
37 |
+
*/
|
38 |
+
public static function wp_dir($starting_dir = '', $alt_starting_dir = '')
|
39 |
+
{
|
40 |
+
if(!empty($_SERVER['WP_DIR']))
|
41 |
+
return (string)$_SERVER['WP_DIR'];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
|
43 |
+
foreach(array($starting_dir, $alt_starting_dir) as $_directory)
|
44 |
+
if($_directory && is_string($_directory) && is_dir($_directory))
|
45 |
+
for($_i = 0, $_dir = $_directory; $_i <= 20; $_i++, $_dir = dirname($_dir))
|
46 |
+
if(file_exists($_dir.'/wp-settings.php'))
|
47 |
+
return ($wp_dir = $_dir);
|
48 |
|
49 |
+
header('HTTP/1.0 500 Error');
|
50 |
+
header('Content-Type: text/plain; charset=UTF-8');
|
51 |
+
while(@ob_end_clean()) ; // Clean any existing output buffers.
|
52 |
+
exit ('ERROR: s2Member unable to locate WordPress directory.');
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* WordPress settings, after ``SHORTINIT`` section.
|
57 |
+
*
|
58 |
+
* @package s2Member\Utilities
|
59 |
+
* @since 110912
|
60 |
+
*
|
61 |
+
* @param string $wp_dir WordPress directory path.
|
62 |
+
* @param string $o_file Location of calling `*-o.php` file.
|
63 |
+
*
|
64 |
+
* @return string|bool WordPress settings, else false on failure.
|
65 |
+
*/
|
66 |
+
public static function wp_settings_as($wp_dir = '', $o_file = '')
|
67 |
+
{
|
68 |
+
if($wp_dir && is_dir($wp_dir) && is_readable($wp_settings = $wp_dir.'/wp-settings.php') && $o_file && is_file($o_file) && ($_wp_settings = trim(file_get_contents($wp_settings))))
|
69 |
+
{
|
70 |
+
$wp_shortinit_section = '/if\s*\(\s*SHORTINIT\s*\)['."\r\n\t".'\s]*\{?['."\r\n\t".'\s]*return\s+false;['."\r\n\t".'\s]*\}?['."\r\n\t".'\s]*/'; // Run ``preg_match()`` to confirm existence.
|
71 |
+
if(preg_match($wp_shortinit_section, $_wp_settings) && ($_wp_settings_parts = preg_split($wp_shortinit_section, $_wp_settings, 2)) && ($_wp_settings = trim($_wp_settings_parts[1])) && ($_wp_settings = '<?php'."\n".$_wp_settings))
|
72 |
+
{
|
73 |
+
if(($_wp_settings = str_replace('__FILE__', "'".str_replace("'", "'", $wp_settings)."'", $_wp_settings))) // Eval compatible. Hard-code the ``__FILE__`` location here.
|
74 |
{
|
75 |
+
$mu_plugins_section = '/['."\r\n\t".'\s]+foreach\s*\(\s*wp_get_mu_plugins\s*\(\s*\)\s*as\s*\$mu_plugin\s*\)['."\r\n\t".'\s]*\{?['."\r\n\t".'\s]*include_once\s*\(\s*\$mu_plugin\s*\)\s*;['."\r\n\t".'\s]*\}?['."\r\n\t".'\s]*unset\s*\(\s*\$mu_plugin\s*\)\s*;/';
|
76 |
+
$mu_plugins_replace = "\n\n".c_ws_plugin__s2member_utils_s2o::esc_ds(trim(c_ws_plugin__s2member_utils_s2o::evl(file_get_contents(dirname(dirname(__FILE__)).'/templates/cfg-files/s2o-mu-plugins.php'))))."\n";
|
77 |
+
if(($_wp_settings = preg_replace($mu_plugins_section, $mu_plugins_replace, $_wp_settings, 1, $mu_plugins_replaced)) && $mu_plugins_replaced)
|
78 |
+
{
|
79 |
+
$nw_plugins_section = '/['."\r\n\t".'\s]+foreach\s*\(\s*wp_get_active_network_plugins\s*\(\s*\)\s*as\s*\$network_plugin\s*\)['."\r\n\t".'\s]*\{?['."\r\n\t".'\s]*wp_register_plugin_realpath\s*\(\s*\$network_plugin\s*\)\s*;['."\r\n\t".'\s]*include_once\s*\(\s*\$network_plugin\s*\)\s*;['."\r\n\t".'\s]*\}?['."\r\n\t".'\s]*unset\s*\(\s*\$network_plugin\s*\)\s*;/';
|
80 |
+
$nw_plugins_replace = "\n\n".c_ws_plugin__s2member_utils_s2o::esc_ds(trim(c_ws_plugin__s2member_utils_s2o::evl(file_get_contents(dirname(dirname(__FILE__)).'/templates/cfg-files/s2o-nw-plugins.php'))))."\n";
|
81 |
+
if(($_wp_settings = preg_replace($nw_plugins_section, $nw_plugins_replace, $_wp_settings, 1, $nw_plugins_replaced)) && $nw_plugins_replaced)
|
82 |
{
|
83 |
+
$st_plugins_section = '/['."\r\n\t".'\s]+foreach\s*\(\s*wp_get_active_and_valid_plugins\s*\(\s*\)\s*as\s*\$plugin\s*\)['."\r\n\t".'\s]*\{?['."\r\n\t".'\s]*wp_register_plugin_realpath\s*\(\s*\$plugin\s*\)\s*;['."\r\n\t".'\s]*include_once\s*\(\s*\$plugin\s*\)\s*;['."\r\n\t".'\s]*\}?['."\r\n\t".'\s ]*unset\s*\(\s*\$plugin\s*\)\s*;/';
|
84 |
+
$st_plugins_replace = "\n\n".c_ws_plugin__s2member_utils_s2o::esc_ds(trim(c_ws_plugin__s2member_utils_s2o::evl(file_get_contents(dirname(dirname(__FILE__)).'/templates/cfg-files/s2o-st-plugins.php'))))."\n";
|
85 |
+
if(($_wp_settings = preg_replace($st_plugins_section, $st_plugins_replace, $_wp_settings, 1, $st_plugins_replaced)) && $st_plugins_replaced)
|
86 |
+
{
|
87 |
+
$th_funcs_section = '/['."\r\n\t".'\s]+if\s*\(\s*\!\s*defined\s*\(\s*[\'"]WP_INSTALLING[\'"]\s*\)\s*\|\|\s*[\'"]wp\-activate\.php[\'"]\s*\=\=\=\s*\$pagenow\s*\)['."\r\n\t".'\s]*\{['."\r\n\t".'\s]*if\s*\(\s*TEMPLATEPATH\s*\!\=\=\s*STYLESHEETPATH\s*&&\s*file_exists\s*\(\s*STYLESHEETPATH\s*\.\s*[\'"]\/functions\.php[\'"]\s*\)\s*\)['."\r\n\t".'\s]*\{?['."\r\n\t".'\s]*include\s*\(\s*STYLESHEETPATH\s*\.\s*[\'"]\/functions\.php[\'"]\s*\);['."\r\n\t".'\s]*\}?['."\r\n\t".'\s]*if\s*\(\s*file_exists\s*\(\s*TEMPLATEPATH\s*\.\s*[\'"]\/functions\.php[\'"]\s*\)\s*\)['."\r\n\t".'\s]*\{?['."\r\n\t".'\s]*include\s*\(\s*TEMPLATEPATH\s*\.\s*[\'"]\/functions\.php[\'"]\s*\);['."\r\n\t".'\s]*\}?['."\r\n\t".'\s]*\}/';
|
88 |
+
$th_funcs_replace = "\n\n".c_ws_plugin__s2member_utils_s2o::esc_ds(trim(c_ws_plugin__s2member_utils_s2o::evl(file_get_contents(dirname(dirname(__FILE__)).'/templates/cfg-files/s2o-th-funcs.php'))))."\n";
|
89 |
+
if(($_wp_settings = preg_replace($th_funcs_section, $th_funcs_replace, $_wp_settings, 1, $th_funcs_replaced)) && $th_funcs_replaced)
|
90 |
{
|
91 |
+
if(($_wp_settings = str_replace('__FILE__', '"'.str_replace('"', '\"', $o_file).'"', $_wp_settings))) // Eval compatible.
|
92 |
+
{
|
93 |
+
if(($_wp_settings = trim($_wp_settings))) // WordPress, with s2Member only.
|
94 |
+
return ($wp_settings_as = $_wp_settings); // After ``SHORTINIT``.
|
95 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
}
|
97 |
+
}
|
98 |
}
|
99 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
}
|
101 |
+
}
|
102 |
+
}
|
103 |
+
return FALSE;
|
104 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
|
106 |
+
/**
|
107 |
+
* Escapes dollars signs (for regex patterns).
|
108 |
+
*
|
109 |
+
* @package s2Member\Utilities
|
110 |
+
* @since 110917
|
111 |
+
*
|
112 |
+
* @param string $string Input string.
|
113 |
+
* @param int $times Mumber of escapes. Defaults to 1.
|
114 |
+
*
|
115 |
+
* @return string Output string after dollar signs are escaped.
|
116 |
+
*/
|
117 |
+
public static function esc_ds($string = '', $times = 0)
|
118 |
+
{
|
119 |
+
$times = is_numeric($times) && $times >= 0 ? (int)$times : 1;
|
120 |
+
return str_replace('$', str_repeat('\\', $times).'$', (string)$string);
|
121 |
+
}
|
122 |
|
123 |
+
/**
|
124 |
+
* Evaluates PHP code, and 'returns' output.
|
125 |
+
*
|
126 |
+
* @package s2Member\Utilities
|
127 |
+
* @since 110917
|
128 |
+
*
|
129 |
+
* @param string $code A string of data, possibly with embedded PHP code.
|
130 |
+
*
|
131 |
+
* @return string Output after PHP evaluation.
|
132 |
+
*/
|
133 |
+
public static function evl($code = '')
|
134 |
+
{
|
135 |
+
ob_start(); // Output buffer.
|
136 |
+
|
137 |
+
eval ('?>'.trim($code));
|
138 |
+
|
139 |
+
return ob_get_clean();
|
140 |
+
}
|
141 |
}
|
142 |
+
}
|
includes/classes/utils-strings.inc.php
CHANGED
@@ -1,574 +1,664 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* String utilities.
|
4 |
-
*
|
5 |
-
* Copyright: © 2009-2011
|
6 |
-
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
|
7 |
-
* (coded in the USA)
|
8 |
-
*
|
9 |
-
* Released under the terms of the GNU General Public License.
|
10 |
-
* You should have received a copy of the GNU General Public License,
|
11 |
-
* along with this software. In the main directory, see: /licensing/
|
12 |
-
* If not, see: {@link http://www.gnu.org/licenses/}.
|
13 |
-
*
|
14 |
-
* @package s2Member\Utilities
|
15 |
-
* @since 3.5
|
16 |
-
*/
|
17 |
-
if(
|
18 |
-
exit(
|
19 |
-
|
20 |
-
if(!class_exists(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
{
|
22 |
/**
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
*
|
38 |
-
* @var array
|
39 |
-
*/
|
40 |
-
public static $ampersand_entities = array("&" => "&", "�*38;" => "&", "&#[xX]0*26;" => "&");
|
41 |
-
/**
|
42 |
-
* Array of all quote entities *(and entities for quote variations)*.
|
43 |
-
*
|
44 |
-
* Array keys are actually regex patterns *(very useful)*.
|
45 |
-
*
|
46 |
-
* @package s2Member\Utilities
|
47 |
-
* @since 111106
|
48 |
-
*
|
49 |
-
* @var array
|
50 |
-
*/
|
51 |
-
public static $quote_entities_w_variations = array("'" => "'", "�*39;" => "'", "&#[xX]0*27;" => "'", "‘" => "‘", "�*8216;" => "‘", "&#[xX]0*2018;" => "‘", "’" => "’", "�*8217;" => "’", "&#[xX]0*2019;" => "’", """ => """, "�*34;" => """, "&#[xX]0*22;" => """, "“" => "“", "�*8220;" => "“", "&#[xX]0*201[cC];" => "“", "”" => "”", "�*8221;" => "”", "&#[xX]0*201[dD];" => "”");
|
52 |
-
/**
|
53 |
-
* Escapes double quotes.
|
54 |
-
*
|
55 |
-
* @package s2Member\Utilities
|
56 |
-
* @since 3.5
|
57 |
-
*
|
58 |
-
* @param string $string Input string.
|
59 |
-
* @param int $times Number of escapes. Defaults to 1.
|
60 |
-
* @param string $escape_char The character to be used in escapes.
|
61 |
-
* @return string Output string after double quotes are escaped.
|
62 |
-
*/
|
63 |
-
public static function esc_dq($string = FALSE, $times = FALSE, $escape_char = "\\")
|
64 |
-
{
|
65 |
-
$times = (is_numeric($times) && $times >= 0) ? (int)$times : 1;
|
66 |
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
|
99 |
-
|
100 |
-
|
101 |
-
/**
|
102 |
-
* Escapes dollars signs (for regex patterns).
|
103 |
-
*
|
104 |
-
* @package s2Member\Utilities
|
105 |
-
* @since 3.5
|
106 |
-
*
|
107 |
-
* @param string $string Input string.
|
108 |
-
* @param int $times Number of escapes. Defaults to 1.
|
109 |
-
* @return string Output string after dollar signs are escaped.
|
110 |
-
*
|
111 |
-
* @deprecated Starting with s2Member v120103, please use:
|
112 |
-
* ``c_ws_plugin__s2member_utils_strings::esc_refs()``.
|
113 |
-
*/
|
114 |
-
public static function esc_ds($string = FALSE, $times = FALSE)
|
115 |
-
{
|
116 |
-
$times = (is_numeric($times) && $times >= 0) ? (int)$times : 1;
|
117 |
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
$times = (is_numeric($times) && $times >= 0) ? (int)$times : 1;
|
133 |
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
185 |
|
186 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
187 |
Note, we do NOT use ``array_map()`` here, because multiple args to ``array_map()`` causes a loss of string keys.
|
188 |
For further details, see: <http://php.net/manual/en/function.array-map.php>. */
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
/**
|
197 |
-
* Trims double quotes deeply.
|
198 |
-
*
|
199 |
-
* @package s2Member\Utilities
|
200 |
-
* @since 3.5
|
201 |
-
*
|
202 |
-
* @param string|array $value Either a string, an array, or a multi-dimensional array, filled with integer and/or string values.
|
203 |
-
* @return str|array Either the input string, or the input array; after all data is trimmed up.
|
204 |
-
*/
|
205 |
-
public static function trim_dq_deep($value = FALSE)
|
206 |
-
{
|
207 |
-
return c_ws_plugin__s2member_utils_strings::trim_deep($value, false, '"');
|
208 |
-
}
|
209 |
-
/**
|
210 |
-
* Trims single quotes deeply.
|
211 |
-
*
|
212 |
-
* @package s2Member\Utilities
|
213 |
-
* @since 111106
|
214 |
-
*
|
215 |
-
* @param string|array $value Either a string, an array, or a multi-dimensional array, filled with integer and/or string values.
|
216 |
-
* @return str|array Either the input string, or the input array; after all data is trimmed up.
|
217 |
-
*/
|
218 |
-
public static function trim_sq_deep($value = FALSE)
|
219 |
-
{
|
220 |
-
return c_ws_plugin__s2member_utils_strings::trim_deep($value, false, "'");
|
221 |
-
}
|
222 |
-
/**
|
223 |
-
* Trims double and single quotes deeply.
|
224 |
-
*
|
225 |
-
* @package s2Member\Utilities
|
226 |
-
* @since 111106
|
227 |
-
*
|
228 |
-
* @param string|array $value Either a string, an array, or a multi-dimensional array, filled with integer and/or string values.
|
229 |
-
* @return str|array Either the input string, or the input array; after all data is trimmed up.
|
230 |
-
*/
|
231 |
-
public static function trim_dsq_deep($value = FALSE)
|
232 |
-
{
|
233 |
-
return c_ws_plugin__s2member_utils_strings::trim_deep($value, false, "'".'"');
|
234 |
-
}
|
235 |
-
/**
|
236 |
-
* Trims all single/double quote entity variations deeply.
|
237 |
-
*
|
238 |
-
* This is useful on Shortcode attributes mangled by a Visual Editor.
|
239 |
-
*
|
240 |
-
* @package s2Member\Utilities
|
241 |
-
* @since 111011
|
242 |
-
*
|
243 |
-
* @param string|array $value Either a string, an array, or a multi-dimensional array, filled with integer and/or string values.
|
244 |
-
* @return str|array Either the input string, or the input array; after all data is trimmed up.
|
245 |
-
*/
|
246 |
-
public static function trim_qts_deep($value = FALSE)
|
247 |
-
{
|
248 |
-
$qts = implode("|", array_keys /* Keys are regex patterns. */(c_ws_plugin__s2member_utils_strings::$quote_entities_w_variations));
|
249 |
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
285 |
Note, we do NOT use ``array_map()`` here, because multiple args to ``array_map()`` causes a loss of string keys.
|
286 |
For further details, see: <http://php.net/manual/en/function.array-map.php>. */
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
|
|
|
|
307 |
Note, we do NOT use ``array_map()`` here, because multiple args to ``array_map()`` causes a loss of string keys.
|
308 |
For further details, see: <http://php.net/manual/en/function.array-map.php>. */
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
/**
|
317 |
-
* Generates a random string with letters/numbers/symbols.
|
318 |
-
*
|
319 |
-
* @package s2Member\Utilities
|
320 |
-
* @since 3.5
|
321 |
-
*
|
322 |
-
* @param int $length Optional. Defaults to `12`. Length of the random string.
|
323 |
-
* @param bool $special_chars Defaults to true. If false, special chars are NOT included.
|
324 |
-
* @param bool $extra_special_chars Defaults to false. If true, extra special chars are included.
|
325 |
-
* @return string A randomly generated string, based on parameter configuration.
|
326 |
-
*/
|
327 |
-
public static function random_str_gen($length = FALSE, $special_chars = TRUE, $extra_special_chars = FALSE)
|
328 |
-
{
|
329 |
-
$length = (is_numeric($length) && $length >= 0) ? (int)$length : 12;
|
330 |
|
331 |
-
|
332 |
-
|
333 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
334 |
|
335 |
-
|
336 |
-
|
|
|
337 |
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
367 |
Note, we do NOT use ``array_map()`` here, because multiple args to ``array_map()`` causes a loss of string keys.
|
368 |
For further details, see: <http://php.net/manual/en/function.array-map.php>. */
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
else if(strpos($section, "@") !== false)
|
382 |
-
$emails[] = $section;
|
383 |
-
}
|
384 |
-
return /* Array. */ (!empty($emails)) ? $emails : array();
|
385 |
-
}
|
386 |
-
/**
|
387 |
-
* Base64 URL-safe encoding.
|
388 |
-
*
|
389 |
-
* @package s2Member\Utilities
|
390 |
-
* @since 110913
|
391 |
-
*
|
392 |
-
* @param string $string Input string to be base64 encoded.
|
393 |
-
* @param array $url_unsafe_chars Optional. An array of un-safe characters. Defaults to: ``array("+", "/")``.
|
394 |
-
* @param array $url_safe_chars Optional. An array of safe character replacements. Defaults to: ``array("-", "_")``.
|
395 |
-
* @param string $trim_padding_chars Optional. A string of padding chars to rtrim. Defaults to: `=~.`.
|
396 |
-
* @return string The base64 URL-safe encoded string.
|
397 |
-
*/
|
398 |
-
public static function base64_url_safe_encode($string = FALSE, $url_unsafe_chars = array("+", "/"), $url_safe_chars = array("-", "_"), $trim_padding_chars = "=~.")
|
399 |
-
{
|
400 |
-
$string = (string)$string; // Force string values here. String MUST be a string.
|
401 |
-
$trim_padding_chars = (string)$trim_padding_chars; // And force this one too.
|
402 |
|
403 |
-
|
404 |
-
|
|
|
|
|
|
|
405 |
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
public static function base64_url_safe_decode($base64_url_safe = FALSE, $url_unsafe_chars = array("+", "/"), $url_safe_chars = array("-", "_"), $trim_padding_chars = "=~.")
|
424 |
-
{
|
425 |
-
$base64_url_safe = (string)$base64_url_safe; // Force string values here. This MUST be a string.
|
426 |
-
$trim_padding_chars = (string)$trim_padding_chars; // And force this one too.
|
427 |
|
428 |
-
|
429 |
-
|
430 |
-
$string = (string)base64_decode(str_replace((array)$url_safe_chars, (array)$url_unsafe_chars, $string));
|
431 |
|
432 |
-
|
433 |
-
|
434 |
-
/**
|
435 |
-
* Generates an RSA-SHA1 signature.
|
436 |
-
*
|
437 |
-
* @package s2Member\Utilities
|
438 |
-
* @since 111017
|
439 |
-
*
|
440 |
-
* @param string $string Input string/data, to be signed by this routine.
|
441 |
-
* @param string $key The secret key that will be used in this signature.
|
442 |
-
* @return str|bool An RSA-SHA1 signature string, or false on failure.
|
443 |
-
*/
|
444 |
-
public static function rsa_sha1_sign($string = FALSE, $key = FALSE)
|
445 |
-
{
|
446 |
-
$key = /* Fixes key wrappers. */ c_ws_plugin__s2member_utils_strings::_rsa_sha1_key_fix_wrappers((string)$key);
|
447 |
|
448 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
449 |
|
450 |
-
|
451 |
-
|
|
|
452 |
|
453 |
-
|
454 |
-
|
455 |
|
456 |
-
|
457 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
458 |
|
459 |
-
|
460 |
-
trigger_error("s2Member was unable to generate an RSA-SHA1 signature.".
|
461 |
-
" Please make sure your installation of PHP is compiled with OpenSSL: `openssl_sign()`.".
|
462 |
-
" See: http://php.net/manual/en/function.openssl-sign.php", E_USER_ERROR);
|
463 |
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
507 |
{
|
508 |
-
|
509 |
-
|
510 |
-
foreach(($lines = c_ws_plugin__s2member_utils_strings::trim_deep(preg_split("/[\r\n]+/", $key))) as $line => $value)
|
511 |
-
if(strpos($value, "-") === 0) // Begins with a boundary identifying character ( a hyphen `-` )?
|
512 |
-
{
|
513 |
-
$boundaries = (empty($boundaries)) ? 1 : $boundaries + 1; // Counter.
|
514 |
-
unset($lines[$line]); // Remove this boundary line. We'll fix these below.
|
515 |
-
}
|
516 |
-
if(empty($boundaries) || $boundaries <= 2) // Do NOT modify keys with more than 2 boundaries.
|
517 |
-
$key = "-----BEGIN RSA PRIVATE KEY-----\n".implode("\n", $lines)."\n-----END RSA PRIVATE KEY-----";
|
518 |
-
}
|
519 |
-
return $key; // Always a trimmed string here.
|
520 |
}
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
*
|
527 |
-
* @param string $string Input string/data, to be signed by this routine.
|
528 |
-
* @param string $key The secret key that will be used in this signature.
|
529 |
-
* @return string An HMAC-SHA1 signature string.
|
530 |
-
*/
|
531 |
-
public static function hmac_sha1_sign($string = FALSE, $key = FALSE)
|
532 |
-
{
|
533 |
-
$key_64 = str_pad(((strlen((string)$key) > 64) ? pack('H*', sha1((string)$key)) : (string)$key), 64, chr(0x00));
|
534 |
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
553 |
Note, we do NOT use ``array_map()`` here, because multiple args to ``array_map()`` causes a loss of string keys.
|
554 |
For further details, see: <http://php.net/manual/en/function.array-map.php>. */
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
|
567 |
-
|
568 |
-
|
569 |
|
570 |
-
|
571 |
-
|
572 |
-
}
|
573 |
}
|
574 |
-
|
1 |
<?php
|
2 |
/**
|
3 |
+
* String utilities.
|
4 |
+
*
|
5 |
+
* Copyright: © 2009-2011
|
6 |
+
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
|
7 |
+
* (coded in the USA)
|
8 |
+
*
|
9 |
+
* Released under the terms of the GNU General Public License.
|
10 |
+
* You should have received a copy of the GNU General Public License,
|
11 |
+
* along with this software. In the main directory, see: /licensing/
|
12 |
+
* If not, see: {@link http://www.gnu.org/licenses/}.
|
13 |
+
*
|
14 |
+
* @package s2Member\Utilities
|
15 |
+
* @since 3.5
|
16 |
+
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
+
exit('Do not access this file directly.');
|
19 |
+
|
20 |
+
if(!class_exists('c_ws_plugin__s2member_utils_strings'))
|
21 |
+
{
|
22 |
+
/**
|
23 |
+
* String utilities.
|
24 |
+
*
|
25 |
+
* @package s2Member\Utilities
|
26 |
+
* @since 3.5
|
27 |
+
*/
|
28 |
+
class c_ws_plugin__s2member_utils_strings
|
29 |
{
|
30 |
/**
|
31 |
+
* Array of all ampersand entities.
|
32 |
+
*
|
33 |
+
* Array keys are actually regex patterns *(very useful)*.
|
34 |
+
*
|
35 |
+
* @package s2Member\Utilities
|
36 |
+
* @since 111106
|
37 |
+
*
|
38 |
+
* @var array
|
39 |
+
*/
|
40 |
+
public static $ampersand_entities = array(
|
41 |
+
'&' => '&',
|
42 |
+
'�*38;' => '&',
|
43 |
+
'&#[xX]0*26;' => '&'
|
44 |
+
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
|
46 |
+
/**
|
47 |
+
* Array of all quote entities *(and entities for quote variations)*.
|
48 |
+
*
|
49 |
+
* Array keys are actually regex patterns *(very useful)*.
|
50 |
+
*
|
51 |
+
* @package s2Member\Utilities
|
52 |
+
* @since 111106
|
53 |
+
*
|
54 |
+
* @var array
|
55 |
+
*/
|
56 |
+
public static $quote_entities_w_variations = array(
|
57 |
+
''' => ''',
|
58 |
+
'�*39;' => ''',
|
59 |
+
'&#[xX]0*27;' => ''',
|
60 |
+
'‘' => '‘',
|
61 |
+
'�*8216;' => '‘',
|
62 |
+
'&#[xX]0*2018;' => '‘',
|
63 |
+
'’' => '’',
|
64 |
+
'�*8217;' => '’',
|
65 |
+
'&#[xX]0*2019;' => '’',
|
66 |
+
'"' => '"',
|
67 |
+
'�*34;' => '"',
|
68 |
+
'&#[xX]0*22;' => '"',
|
69 |
+
'“' => '“',
|
70 |
+
'�*8220;' => '“',
|
71 |
+
'&#[xX]0*201[cC];' => '“',
|
72 |
+
'”' => '”',
|
73 |
+
'�*8221;' => '”',
|
74 |
+
'&#[xX]0*201[dD];' => '”'
|
75 |
+
);
|
76 |
|
77 |
+
/**
|
78 |
+
* Escapes double quotes.
|
79 |
+
*
|
80 |
+
* @package s2Member\Utilities
|
81 |
+
* @since 3.5
|
82 |
+
*
|
83 |
+
* @param string $string Input string.
|
84 |
+
* @param int $times Number of escapes. Defaults to 1.
|
85 |
+
* @param string $escape_char The character to be used in escapes.
|
86 |
+
*
|
87 |
+
* @return string Output string after double quotes are escaped.
|
88 |
+
*/
|
89 |
+
public static function esc_dq($string = '', $times = NULL, $escape_char = '\\')
|
90 |
+
{
|
91 |
+
$times = (is_numeric($times) && $times >= 0) ? (int)$times : 1;
|
92 |
|
93 |
+
return str_replace('"', str_repeat($escape_char, $times).'"', (string)$string);
|
94 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
95 |
|
96 |
+
/**
|
97 |
+
* Escapes single quotes.
|
98 |
+
*
|
99 |
+
* @package s2Member\Utilities
|
100 |
+
* @since 3.5
|
101 |
+
*
|
102 |
+
* @param string $string Input string.
|
103 |
+
* @param int $times Number of escapes. Defaults to 1.
|
104 |
+
*
|
105 |
+
* @return string Output string after single quotes are escaped.
|
106 |
+
*/
|
107 |
+
public static function esc_sq($string = '', $times = NULL)
|
108 |
+
{
|
109 |
+
$times = (is_numeric($times) && $times >= 0) ? (int)$times : 1;
|
|
|
110 |
|
111 |
+
return str_replace("'", str_repeat('\\', $times)."'", (string)$string);
|
112 |
+
}
|
113 |
+
|
114 |
+
/**
|
115 |
+
* Escapes JavaScript and single quotes.
|
116 |
+
*
|
117 |
+
* @package s2Member\Utilities
|
118 |
+
* @since 110901
|
119 |
+
*
|
120 |
+
* @param string $string Input string.
|
121 |
+
* @param int $times Number of escapes. Defaults to 1.
|
122 |
+
*
|
123 |
+
* @return string Output string after JavaScript and single quotes are escaped.
|
124 |
+
*/
|
125 |
+
public static function esc_js_sq($string = '', $times = NULL)
|
126 |
+
{
|
127 |
+
$times = (is_numeric($times) && $times >= 0) ? (int)$times : 1;
|
128 |
+
|
129 |
+
return str_replace("'", str_repeat('\\', $times)."'", str_replace(array("\r", "\n"), array('', '\\n'), str_replace("\\'", "'", (string)$string)));
|
130 |
+
}
|
131 |
+
|
132 |
+
/**
|
133 |
+
* Escapes dollars signs (for regex patterns).
|
134 |
+
*
|
135 |
+
* @package s2Member\Utilities
|
136 |
+
* @since 3.5
|
137 |
+
*
|
138 |
+
* @param string $string Input string.
|
139 |
+
* @param int $times Number of escapes. Defaults to 1.
|
140 |
+
*
|
141 |
+
* @return string Output string after dollar signs are escaped.
|
142 |
+
*
|
143 |
+
* @deprecated Starting with s2Member v120103, please use:
|
144 |
+
* ``c_ws_plugin__s2member_utils_strings::esc_refs()``.
|
145 |
+
*/
|
146 |
+
public static function esc_ds($string = '', $times = NULL)
|
147 |
+
{
|
148 |
+
$times = (is_numeric($times) && $times >= 0) ? (int)$times : 1;
|
149 |
+
|
150 |
+
return str_replace('$', str_repeat('\\', $times).'$', (string)$string);
|
151 |
+
}
|
152 |
+
|
153 |
+
/**
|
154 |
+
* Escapes backreferences (for regex patterns).
|
155 |
+
*
|
156 |
+
* @package s2Member\Utilities
|
157 |
+
* @since 120103
|
158 |
+
*
|
159 |
+
* @param string $string Input string.
|
160 |
+
* @param int $times Number of escapes. Defaults to 1.
|
161 |
+
*
|
162 |
+
* @return string Output string after backreferences are escaped.
|
163 |
+
*/
|
164 |
+
public static function esc_refs($string = NULL, $times = NULL)
|
165 |
+
{
|
166 |
+
$times = (is_numeric($times) && $times >= 0) ? (int)$times : 1;
|
167 |
+
|
168 |
+
return str_replace(array('\\', '$'), array(str_repeat('\\', $times).'\\', str_repeat('\\', $times).'$'), (string)$string);
|
169 |
+
}
|
170 |
+
|
171 |
+
/**
|
172 |
+
* Sanitizes a string; by stripping characters NOT on a standard U.S. keyboard.
|
173 |
+
*
|
174 |
+
* @package s2Member\Utilities
|
175 |
+
* @since 111106
|
176 |
+
*
|
177 |
+
* @param string $string Input string.
|
178 |
+
*
|
179 |
+
* @return string Output string, after characters NOT on a standard U.S. keyboard have been stripped.
|
180 |
+
*/
|
181 |
+
public static function strip_2_kb_chars($string = '')
|
182 |
+
{
|
183 |
+
return preg_replace('/[^0-9A-Z'."\r\n\t".'\s`\=\[\]\\\;\',\.\/~\!@#\$%\^&\*\(\)_\+\|\}\{\:"\?\>\<\-]/i', '', remove_accents((string)$string));
|
184 |
+
}
|
185 |
|
186 |
+
/**
|
187 |
+
* Trims deeply; alias of ``trim_deep``.
|
188 |
+
*
|
189 |
+
* @package s2Member\Utilities
|
190 |
+
* @since 111106
|
191 |
+
*
|
192 |
+
* @see s2Member\Utilities\c_ws_plugin__s2member_utils_strings::trim_deep()
|
193 |
+
* @see http://php.net/manual/en/function.trim.php
|
194 |
+
*
|
195 |
+
* @param string|array $value Either a string, an array, or a multi-dimensional array, filled with integer and/or string values.
|
196 |
+
* @param string|bool $chars Optional. Defaults to false, indicating the default trim chars ` \t\n\r\0\x0B`. Or, set to a specific string of chars.
|
197 |
+
* @param string|bool $extra_chars Optional. This is NOT possible with PHP alone, but here you can specify extra chars; in addition to ``$chars``.
|
198 |
+
*
|
199 |
+
* @return string|array Either the input string, or the input array; after all data is trimmed up according to arguments passed in.
|
200 |
+
*/
|
201 |
+
public static function trim($value = '', $chars = FALSE, $extra_chars = FALSE)
|
202 |
+
{
|
203 |
+
return c_ws_plugin__s2member_utils_strings::trim_deep($value, $chars, $extra_chars);
|
204 |
+
}
|
205 |
+
|
206 |
+
/**
|
207 |
+
* Trims deeply; or use {@link s2Member\Utilities\c_ws_plugin__s2member_utils_strings::trim()}.
|
208 |
+
*
|
209 |
+
* @package s2Member\Utilities
|
210 |
+
* @since 3.5
|
211 |
+
*
|
212 |
+
* @see s2Member\Utilities\c_ws_plugin__s2member_utils_strings::trim()
|
213 |
+
* @see http://php.net/manual/en/function.trim.php
|
214 |
+
*
|
215 |
+
* @param string|array $value Either a string, an array, or a multi-dimensional array, filled with integer and/or string values.
|
216 |
+
* @param string|bool $chars Optional. Defaults to false, indicating the default trim chars ` \t\n\r\0\x0B`. Or, set to a specific string of chars.
|
217 |
+
* @param string|bool $extra_chars Optional. This is NOT possible with PHP alone, but here you can specify extra chars; in addition to ``$chars``.
|
218 |
+
*
|
219 |
+
* @return string|array Either the input string, or the input array; after all data is trimmed up according to arguments passed in.
|
220 |
+
*/
|
221 |
+
public static function trim_deep($value = '', $chars = FALSE, $extra_chars = FALSE)
|
222 |
+
{
|
223 |
+
$chars = (is_string($chars)) ? $chars : " \t\n\r\0\x0B";
|
224 |
+
$chars = (is_string($extra_chars)) ? $chars.$extra_chars : $chars;
|
225 |
+
|
226 |
+
if(is_array($value)) /* Handles all types of arrays.
|
227 |
Note, we do NOT use ``array_map()`` here, because multiple args to ``array_map()`` causes a loss of string keys.
|
228 |
For further details, see: <http://php.net/manual/en/function.array-map.php>. */
|
229 |
+
{
|
230 |
+
foreach($value as &$r) // Reference.
|
231 |
+
$r = c_ws_plugin__s2member_utils_strings::trim_deep($r, $chars);
|
232 |
+
return $value; // Return modified array.
|
233 |
+
}
|
234 |
+
return trim((string)$value, $chars);
|
235 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
236 |
|
237 |
+
/**
|
238 |
+
* Trims double quotes deeply.
|
239 |
+
*
|
240 |
+
* @package s2Member\Utilities
|
241 |
+
* @since 3.5
|
242 |
+
*
|
243 |
+
* @param string|array $value Either a string, an array, or a multi-dimensional array, filled with integer and/or string values.
|
244 |
+
*
|
245 |
+
* @return string|array Either the input string, or the input array; after all data is trimmed up.
|
246 |
+
*/
|
247 |
+
public static function trim_dq_deep($value = '')
|
248 |
+
{
|
249 |
+
return c_ws_plugin__s2member_utils_strings::trim_deep($value, FALSE, '"');
|
250 |
+
}
|
251 |
+
|
252 |
+
/**
|
253 |
+
* Trims single quotes deeply.
|
254 |
+
*
|
255 |
+
* @package s2Member\Utilities
|
256 |
+
* @since 111106
|
257 |
+
*
|
258 |
+
* @param string|array $value Either a string, an array, or a multi-dimensional array, filled with integer and/or string values.
|
259 |
+
*
|
260 |
+
* @return string|array Either the input string, or the input array; after all data is trimmed up.
|
261 |
+
*/
|
262 |
+
public static function trim_sq_deep($value = '')
|
263 |
+
{
|
264 |
+
return c_ws_plugin__s2member_utils_strings::trim_deep($value, FALSE, "'");
|
265 |
+
}
|
266 |
+
|
267 |
+
/**
|
268 |
+
* Trims double and single quotes deeply.
|
269 |
+
*
|
270 |
+
* @package s2Member\Utilities
|
271 |
+
* @since 111106
|
272 |
+
*
|
273 |
+
* @param string|array $value Either a string, an array, or a multi-dimensional array, filled with integer and/or string values.
|
274 |
+
*
|
275 |
+
* @return string|array Either the input string, or the input array; after all data is trimmed up.
|
276 |
+
*/
|
277 |
+
public static function trim_dsq_deep($value = '')
|
278 |
+
{
|
279 |
+
return c_ws_plugin__s2member_utils_strings::trim_deep($value, FALSE, "'".'"');
|
280 |
+
}
|
281 |
+
|
282 |
+
/**
|
283 |
+
* Trims all single/double quote entity variations deeply.
|
284 |
+
*
|
285 |
+
* This is useful on Shortcode attributes mangled by a Visual Editor.
|
286 |
+
*
|
287 |
+
* @package s2Member\Utilities
|
288 |
+
* @since 111011
|
289 |
+
*
|
290 |
+
* @param string|array $value Either a string, an array, or a multi-dimensional array, filled with integer and/or string values.
|
291 |
+
*
|
292 |
+
* @return string|array Either the input string, or the input array; after all data is trimmed up.
|
293 |
+
*/
|
294 |
+
public static function trim_qts_deep($value = '')
|
295 |
+
{
|
296 |
+
$qts = implode('|', array_keys(c_ws_plugin__s2member_utils_strings::$quote_entities_w_variations));
|
297 |
+
|
298 |
+
return is_array($value) ? array_map('c_ws_plugin__s2member_utils_strings::trim_qts_deep', $value) : preg_replace('/^(?:'.$qts.')+|(?:'.$qts.')+$/', '', (string)$value);
|
299 |
+
}
|
300 |
+
|
301 |
+
/**
|
302 |
+
* Trims HTML whitespace.
|
303 |
+
*
|
304 |
+
* This is useful on Shortcode content.
|
305 |
+
*
|
306 |
+
* @package s2Member\Utilities
|
307 |
+
* @since 140124
|
308 |
+
*
|
309 |
+
* @param string $string Input string to trim.
|
310 |
+
*
|
311 |
+
* @return string Output string with all HTML whitespace trimmed away.
|
312 |
+
*/
|
313 |
+
public static function trim_html($string = '')
|
314 |
+
{
|
315 |
+
$whitespace = ' |\<br\>|\<br\s*\/\>|\<p\>(?: )*\<\/p\>';
|
316 |
+
return preg_replace('/^(?:'.$whitespace.')+|(?:'.$whitespace.')+$/', '', (string)$string);
|
317 |
+
}
|
318 |
+
|
319 |
+
/**
|
320 |
+
* Wraps a string with the characters provided.
|
321 |
+
*
|
322 |
+
* This is useful when preparing an input array for ``c_ws_plugin__s2member_utils_arrays::in_regex_array()``.
|
323 |
+
*
|
324 |
+
* @package s2Member\Utilities
|
325 |
+
* @since 3.5
|
326 |
+
*
|
327 |
+
* @param string|array $value Either a string, an array, or a multi-dimensional array, filled with integer and/or string values.
|
328 |
+
* @param string $beg Optional. A string value to wrap at the beginning of each value.
|
329 |
+
* @param string $end Optional. A string value to wrap at the ending of each value.
|
330 |
+
* @param bool $wrap_e Optional. Defaults to false. Should empty strings be wrapped too?
|
331 |
+
*
|
332 |
+
* @return string|array Either the input string, or the input array; after all data is wrapped up.
|
333 |
+
*/
|
334 |
+
public static function wrap_deep($value = '', $beg = '', $end = '', $wrap_e = FALSE)
|
335 |
+
{
|
336 |
+
if(is_array($value)) /* Handles all types of arrays.
|
337 |
Note, we do NOT use ``array_map()`` here, because multiple args to ``array_map()`` causes a loss of string keys.
|
338 |
For further details, see: <http://php.net/manual/en/function.array-map.php>. */
|
339 |
+
{
|
340 |
+
foreach($value as &$r) // Reference.
|
341 |
+
$r = c_ws_plugin__s2member_utils_strings::wrap_deep($r, $beg, $end, $wrap_e);
|
342 |
+
return $value; // Return modified array.
|
343 |
+
}
|
344 |
+
return (strlen((string)$value) || $wrap_e) ? (string)$beg.(string)$value.(string)$end : (string)$value;
|
345 |
+
}
|
346 |
+
|
347 |
+
/**
|
348 |
+
* Escapes meta characters with ``preg_quote()`` deeply.
|
349 |
+
*
|
350 |
+
* @package s2Member\Utilities
|
351 |
+
* @since 110926
|
352 |
+
*
|
353 |
+
* @param string|array $value Either a string, an array, or a multi-dimensional array, filled with integer and/or string values.
|
354 |
+
* @param string $delimiter Optional. If a delimiting character is specified, it will also be escaped via ``preg_quote()``.
|
355 |
+
*
|
356 |
+
* @return string|array Either the input string, or the input array; after all data is escaped with ``preg_quote()``.
|
357 |
+
*/
|
358 |
+
public static function preg_quote_deep($value = '', $delimiter = '')
|
359 |
+
{
|
360 |
+
if(is_array($value)) /* Handles all types of arrays.
|
361 |
Note, we do NOT use ``array_map()`` here, because multiple args to ``array_map()`` causes a loss of string keys.
|
362 |
For further details, see: <http://php.net/manual/en/function.array-map.php>. */
|
363 |
+
{
|
364 |
+
foreach($value as &$r) // Reference.
|
365 |
+
$r = c_ws_plugin__s2member_utils_strings::preg_quote_deep($r, $delimiter);
|
366 |
+
return $value; // Return modified array.
|
367 |
+
}
|
368 |
+
return preg_quote((string)$value, (string)$delimiter);
|
369 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
370 |
|
371 |
+
/**
|
372 |
+
* Generates a random string with letters/numbers/symbols.
|
373 |
+
*
|
374 |
+
* @package s2Member\Utilities
|
375 |
+
* @since 3.5
|
376 |
+
*
|
377 |
+
* @param int $length Optional. Defaults to `12`. Length of the random string.
|
378 |
+
* @param bool $special_chars Defaults to true. If false, special chars are NOT included.
|
379 |
+
* @param bool $extra_special_chars Defaults to false. If true, extra special chars are included.
|
380 |
+
*
|
381 |
+
* @return string A randomly generated string, based on parameter configuration.
|
382 |
+
*/
|
383 |
+
public static function random_str_gen($length = 0, $special_chars = TRUE, $extra_special_chars = FALSE)
|
384 |
+
{
|
385 |
+
$length = (is_numeric($length) && $length >= 0) ? (int)$length : 12;
|
386 |
|
387 |
+
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
388 |
+
$chars .= ($extra_special_chars) ? '-_ []{}<>~`+=,.;:/?|' : '';
|
389 |
+
$chars .= ($special_chars) ? '!@#$%^&*()' : '';
|
390 |
|
391 |
+
for($i = 0, $random_str = ''; $i < $length; $i++)
|
392 |
+
$random_str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
|
393 |
+
|
394 |
+
return $random_str;
|
395 |
+
}
|
396 |
+
|
397 |
+
/**
|
398 |
+
* Highlights PHP, and also Shortcodes.
|
399 |
+
*
|
400 |
+
* @package s2Member\Utilities
|
401 |
+
* @since 3.5
|
402 |
+
*
|
403 |
+
* @param string $string Input string to be highlighted.
|
404 |
+
*
|
405 |
+
* @return string The highlighted string.
|
406 |
+
*/
|
407 |
+
public static function highlight_php($string = '')
|
408 |
+
{
|
409 |
+
$string = highlight_string(trim((string)$string), TRUE); // Start with PHP syntax, then Shortcodes.
|
410 |
+
$string = preg_replace('/\[\/?_*s2[a-z0-9_\-]+.*?\]/i', '<span style="color:#164A61;">$0</span>', $string);
|
411 |
+
return str_replace('<code>', '<code class="highlight-php">', $string);
|
412 |
+
}
|
413 |
+
|
414 |
+
/**
|
415 |
+
* Parses email addresses from a string or array.
|
416 |
+
*
|
417 |
+
* @package s2Member\Utilities
|
418 |
+
* @since 111009
|
419 |
+
*
|
420 |
+
* @param string|array $value Input string or an array is also fine.
|
421 |
+
*
|
422 |
+
* @return array Array of parsed email addresses.
|
423 |
+
*/
|
424 |
+
public static function parse_emails($value = '')
|
425 |
+
{
|
426 |
+
if(is_array($value)) /* Handles all types of arrays.
|
427 |
Note, we do NOT use ``array_map()`` here, because multiple args to ``array_map()`` causes a loss of string keys.
|
428 |
For further details, see: <http://php.net/manual/en/function.array-map.php>. */
|
429 |
+
{
|
430 |
+
$emails = array(); // Initialize array.
|
431 |
+
foreach($value as $v) // Loop through array.
|
432 |
+
$emails = array_merge($emails, c_ws_plugin__s2member_utils_strings::parse_emails($v));
|
433 |
+
return $emails; // Return array.
|
434 |
+
}
|
435 |
+
$delimiter = (strpos((string)$value, ';') !== FALSE) ? ';' : ',';
|
436 |
+
foreach(c_ws_plugin__s2member_utils_strings::trim_deep(preg_split('/'.preg_quote($delimiter, '/').'+/', (string)$value)) as $section)
|
437 |
+
{
|
438 |
+
if(preg_match('/\<(.+?)\>/', $section, $m) && strpos($m[1], '@') !== FALSE)
|
439 |
+
$emails[] = $m[1]; // Email inside <brackets>.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
440 |
|
441 |
+
else if(strpos($section, '@') !== FALSE)
|
442 |
+
$emails[] = $section;
|
443 |
+
}
|
444 |
+
return (!empty($emails)) ? $emails : array();
|
445 |
+
}
|
446 |
|
447 |
+
/**
|
448 |
+
* Base64 URL-safe encoding.
|
449 |
+
*
|
450 |
+
* @package s2Member\Utilities
|
451 |
+
* @since 110913
|
452 |
+
*
|
453 |
+
* @param string $string Input string to be base64 encoded.
|
454 |
+
* @param array $url_unsafe_chars Optional. An array of un-safe characters. Defaults to: ``array('+', '/')``.
|
455 |
+
* @param array $url_safe_chars Optional. An array of safe character replacements. Defaults to: ``array('-', '_')``.
|
456 |
+
* @param string $trim_padding_chars Optional. A string of padding chars to rtrim. Defaults to: `=~.`.
|
457 |
+
*
|
458 |
+
* @return string The base64 URL-safe encoded string.
|
459 |
+
*/
|
460 |
+
public static function base64_url_safe_encode($string = '', $url_unsafe_chars = array('+', '/'), $url_safe_chars = array('-', '_'), $trim_padding_chars = '=~.')
|
461 |
+
{
|
462 |
+
$string = (string)$string; // Force string values here. String MUST be a string.
|
463 |
+
$trim_padding_chars = (string)$trim_padding_chars; // And force this one too.
|
|
|
|
|
|
|
|
|
464 |
|
465 |
+
$base64_url_safe = str_replace((array)$url_unsafe_chars, (array)$url_safe_chars, (string)base64_encode($string));
|
466 |
+
$base64_url_safe = (strlen($trim_padding_chars)) ? rtrim($base64_url_safe, $trim_padding_chars) : $base64_url_safe;
|
|
|
467 |
|
468 |
+
return $base64_url_safe; // Base64 encoded, with URL-safe replacements.
|
469 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
470 |
|
471 |
+
/**
|
472 |
+
* Base64 URL-safe decoding.
|
473 |
+
*
|
474 |
+
* Note, this function is backward compatible with routines supplied by s2Member in the past;
|
475 |
+
* where padding characters were replaced with `~` or `.`, instead of being stripped completely.
|
476 |
+
*
|
477 |
+
* @package s2Member\Utilities
|
478 |
+
* @since 110913
|
479 |
+
*
|
480 |
+
* @param string $base64_url_safe Input string to be base64 decoded.
|
481 |
+
* @param array $url_unsafe_chars Optional. An array of un-safe character replacements. Defaults to: ``array('+', '/')``.
|
482 |
+
* @param array $url_safe_chars Optional. An array of safe characters. Defaults to: ``array('-', '_')``.
|
483 |
+
* @param string $trim_padding_chars Optional. A string of padding chars to rtrim. Defaults to: `=~.`.
|
484 |
+
*
|
485 |
+
* @return string The decoded string.
|
486 |
+
*/
|
487 |
+
public static function base64_url_safe_decode($base64_url_safe = '', $url_unsafe_chars = array('+', '/'), $url_safe_chars = array('-', '_'), $trim_padding_chars = '=~.')
|
488 |
+
{
|
489 |
+
$base64_url_safe = (string)$base64_url_safe; // Force string values here. This MUST be a string.
|
490 |
+
$trim_padding_chars = (string)$trim_padding_chars; // And force this one too.
|
491 |
|
492 |
+
$string = (strlen($trim_padding_chars)) ? rtrim($base64_url_safe, $trim_padding_chars) : $base64_url_safe;
|
493 |
+
$string = (strlen($trim_padding_chars)) ? str_pad($string, strlen($string) % 4, '=', STR_PAD_RIGHT) : $string;
|
494 |
+
$string = (string)base64_decode(str_replace((array)$url_safe_chars, (array)$url_unsafe_chars, $string));
|
495 |
|
496 |
+
return $string; // Base64 decoded, with URL-safe replacements.
|
497 |
+
}
|
498 |
|
499 |
+
/**
|
500 |
+
* Generates an RSA-SHA1 signature.
|
501 |
+
*
|
502 |
+
* @package s2Member\Utilities
|
503 |
+
* @since 111017
|
504 |
+
*
|
505 |
+
* @param string $string Input string/data, to be signed by this routine.
|
506 |
+
* @param string $key The secret key that will be used in this signature.
|
507 |
+
*
|
508 |
+
* @return string|bool An RSA-SHA1 signature string, or false on failure.
|
509 |
+
*/
|
510 |
+
public static function rsa_sha1_sign($string = '', $key = '')
|
511 |
+
{
|
512 |
+
$key = c_ws_plugin__s2member_utils_strings::_rsa_sha1_key_fix_wrappers((string)$key);
|
513 |
|
514 |
+
$signature = c_ws_plugin__s2member_utils_strings::_rsa_sha1_shell_sign((string)$string, (string)$key);
|
|
|
|
|
|
|
515 |
|
516 |
+
if(empty($signature) && stripos(PHP_OS, 'win') === 0 && file_exists(($openssl = 'c:\\openssl-win32\\bin\\openssl.exe')))
|
517 |
+
$signature = c_ws_plugin__s2member_utils_strings::_rsa_sha1_shell_sign((string)$string, (string)$key, $openssl);
|
518 |
+
|
519 |
+
if(empty($signature) && stripos(PHP_OS, 'win') === 0 && file_exists(($openssl = 'c:\\openssl-win64\\bin\\openssl.exe')))
|
520 |
+
$signature = c_ws_plugin__s2member_utils_strings::_rsa_sha1_shell_sign((string)$string, (string)$key, $openssl);
|
521 |
+
|
522 |
+
if(empty($signature) && function_exists('openssl_get_privatekey') && function_exists('openssl_sign') && is_resource($private_key = openssl_get_privatekey((string)$key)))
|
523 |
+
openssl_sign((string)$string, $signature, $private_key, OPENSSL_ALGO_SHA1).openssl_free_key($private_key);
|
524 |
+
|
525 |
+
if(empty($signature)) // Now, if we're still empty, trigger an error here.
|
526 |
+
trigger_error('s2Member was unable to generate an RSA-SHA1 signature.'.
|
527 |
+
' Please make sure your installation of PHP is compiled with OpenSSL: `openssl_sign()`.'.
|
528 |
+
' See: http://php.net/manual/en/function.openssl-sign.php', E_USER_ERROR);
|
529 |
+
|
530 |
+
return (!empty($signature)) ? $signature : FALSE;
|
531 |
+
}
|
532 |
+
|
533 |
+
/**
|
534 |
+
* Generates an RSA-SHA1 signature from the command line.
|
535 |
+
*
|
536 |
+
* Used by {@link s2Member\Utilities\c_ws_plugin__s2member_utils_strings::rsa_sha1_sign()}.
|
537 |
+
*
|
538 |
+
* @package s2Member\Utilities
|
539 |
+
* @since 111017
|
540 |
+
*
|
541 |
+
* @param string $string Input string/data, to be signed by this routine.
|
542 |
+
* @param string $key The secret key that will be used in this signature.
|
543 |
+
* @param string $openssl Optional. Defaults to `openssl`. Path to OpenSSL executable.
|
544 |
+
*
|
545 |
+
* @return string|bool An RSA-SHA1 signature string, or false on failure.
|
546 |
+
*/
|
547 |
+
public static function _rsa_sha1_shell_sign($string = '', $key = '', $openssl = '')
|
548 |
+
{
|
549 |
+
if(function_exists('shell_exec') && ($esa = 'escapeshellarg') && ($openssl = (($openssl && is_string($openssl)) ? $openssl : 'openssl')) && ($temp_dir = c_ws_plugin__s2member_utils_dirs::get_temp_dir()))
|
550 |
+
{
|
551 |
+
file_put_contents(($string_file = $temp_dir.'/'.md5(uniqid('', TRUE).'rsa-sha1-string').'.tmp'), (string)$string);
|
552 |
+
file_put_contents(($private_key_file = $temp_dir.'/'.md5(uniqid('', TRUE).'rsa-sha1-private-key').'.tmp'), (string)$key);
|
553 |
+
file_put_contents(($rsa_sha1_sig_file = $temp_dir.'/'.md5(uniqid('', TRUE).'rsa-sha1-sig').'.tmp'), '');
|
554 |
+
|
555 |
+
@shell_exec($esa($openssl).' sha1 -sign '.$esa($private_key_file).' -out '.$esa($rsa_sha1_sig_file).' '.$esa($string_file));
|
556 |
+
$signature = file_get_contents($rsa_sha1_sig_file); // Do NOT trim here. Was the signature was written?
|
557 |
+
unlink($rsa_sha1_sig_file).unlink($private_key_file).unlink($string_file); // Cleanup.
|
558 |
+
}
|
559 |
+
return (!empty($signature)) ? $signature : FALSE;
|
560 |
+
}
|
561 |
+
|
562 |
+
/**
|
563 |
+
* Fixes incomplete private key wrappers for RSA-SHA1 signing.
|
564 |
+
*
|
565 |
+
* Used by {@link s2Member\Utilities\c_ws_plugin__s2member_utils_strings::rsa_sha1_sign()}.
|
566 |
+
*
|
567 |
+
* @package s2Member\Utilities
|
568 |
+
* @since 111017
|
569 |
+
*
|
570 |
+
* @param string $key The secret key to be used in an RSA-SHA1 signature.
|
571 |
+
*
|
572 |
+
* @return string Key with incomplete wrappers corrected, when/if possible.
|
573 |
+
*
|
574 |
+
* @see http://www.faqs.org/qa/qa-14736.html
|
575 |
+
*/
|
576 |
+
public static function _rsa_sha1_key_fix_wrappers($key = '')
|
577 |
+
{
|
578 |
+
if(($key = trim((string)$key)) && (strpos($key, '-----BEGIN RSA PRIVATE KEY-----') === FALSE || strpos($key, '-----END RSA PRIVATE KEY-----') === FALSE))
|
579 |
+
{
|
580 |
+
foreach(($lines = c_ws_plugin__s2member_utils_strings::trim_deep(preg_split('/['."\r\n".']+/', $key))) as $line => $value)
|
581 |
+
if(strpos($value, '-') === 0) // Begins with a boundary identifying character ( a hyphen `-` )?
|
582 |
{
|
583 |
+
$boundaries = (empty($boundaries)) ? 1 : $boundaries + 1; // Counter.
|
584 |
+
unset($lines[$line]); // Remove this boundary line. We'll fix these below.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
585 |
}
|
586 |
+
if(empty($boundaries) || $boundaries <= 2) // Do NOT modify keys with more than 2 boundaries.
|
587 |
+
$key = '-----BEGIN RSA PRIVATE KEY-----'."\n".implode("\n", $lines)."\n".'-----END RSA PRIVATE KEY-----';
|
588 |
+
}
|
589 |
+
return $key; // Always a trimmed string here.
|
590 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
591 |
|
592 |
+
/**
|
593 |
+
* Generates an HMAC-SHA1 signature.
|
594 |
+
*
|
595 |
+
* @package s2Member\Utilities
|
596 |
+
* @since 111017
|
597 |
+
*
|
598 |
+
* @param string $string Input string/data, to be signed by this routine.
|
599 |
+
* @param string $key The secret key that will be used in this signature.
|
600 |
+
*
|
601 |
+
* @return string An HMAC-SHA1 signature string.
|
602 |
+
*/
|
603 |
+
public static function hmac_sha1_sign($string = '', $key = '')
|
604 |
+
{
|
605 |
+
$key_64 = str_pad(((strlen((string)$key) > 64) ? pack('H*', sha1((string)$key)) : (string)$key), 64, chr(0x00));
|
606 |
+
|
607 |
+
return pack('H*', sha1(($key_64 ^ str_repeat(chr(0x5c), 64)).pack('H*', sha1(($key_64 ^ str_repeat(chr(0x36), 64)).(string)$string))));
|
608 |
+
}
|
609 |
+
|
610 |
+
/**
|
611 |
+
* Generates an HMAC-SHA256 signature.
|
612 |
+
*
|
613 |
+
* @package s2Member\Utilities
|
614 |
+
* @since 111017
|
615 |
+
*
|
616 |
+
* @param string $string Input string/data, to be signed by this routine.
|
617 |
+
* @param string $key The secret key that will be used in this signature.
|
618 |
+
* @param boolean $binary Return binary format?
|
619 |
+
*
|
620 |
+
* @return string An HMAC-SHA256 signature string.
|
621 |
+
*/
|
622 |
+
public static function hmac_sha256_sign($string = '', $key = '', $binary = FALSE)
|
623 |
+
{
|
624 |
+
return hash_hmac('sha256', $string, $key, $binary);
|
625 |
+
}
|
626 |
+
|
627 |
+
/**
|
628 |
+
* Decodes unreserved chars encoded by PHP's ``urlencode()``, deeply.
|
629 |
+
*
|
630 |
+
* For further details regarding unreserved chars, see: {@link http://www.faqs.org/rfcs/rfc3986.html}.
|
631 |
+
*
|
632 |
+
* @package s2Member\Utilities
|
633 |
+
* @since 111017
|
634 |
+
*
|
635 |
+
* @see http://www.faqs.org/rfcs/rfc3986.html
|
636 |
+
*
|
637 |
+
* @param string|array $value Either a string, an array, or a multi-dimensional array, filled with integer and/or string values.
|
638 |
+
*
|
639 |
+
* @return string|array Either the input string, or the input array; after all unreserved chars are decoded properly.
|
640 |
+
*/
|
641 |
+
public static function urldecode_ur_chars_deep($value = array())
|
642 |
+
{
|
643 |
+
if(is_array($value)) /* Handles all types of arrays.
|
644 |
Note, we do NOT use ``array_map()`` here, because multiple args to ``array_map()`` causes a loss of string keys.
|
645 |
For further details, see: <http://php.net/manual/en/function.array-map.php>. */
|
646 |
+
{
|
647 |
+
foreach($value as &$r) // Reference.
|
648 |
+
$r = c_ws_plugin__s2member_utils_strings::urldecode_ur_chars_deep($r);
|
649 |
+
return $value; // Return modified array.
|
650 |
+
}
|
651 |
+
return str_replace(array('%2D', '%2E', '%5F', '%7E'), array('-', '.', '_', '~'), (string)$value);
|
652 |
+
}
|
653 |
|
654 |
+
public static function like_escape($string)
|
655 |
+
{
|
656 |
+
global $wpdb; // Global DB object reference.
|
657 |
|
658 |
+
if(method_exists($wpdb, 'esc_like'))
|
659 |
+
return $wpdb->esc_like($string);
|
660 |
|
661 |
+
return like_escape($string); // Deprecated in WP v4.0.
|
662 |
+
}
|
|
|
663 |
}
|
664 |
+
}
|
includes/classes/utils-time.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Utilities
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_utils_time'))
|
14 |
* @package s2Member\Utilities
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_utils_time'))
|
includes/classes/utils-urls.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Utilities
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_utils_urls"))
|
@@ -196,8 +196,6 @@ if(!class_exists("c_ws_plugin__s2member_utils_urls"))
|
|
196 |
|
197 |
$args["s2member"] = WS_PLUGIN__S2MEMBER_VERSION; // Indicates this is an s2Member connection.
|
198 |
|
199 |
-
$args["sslverify"] = (!isset($args["sslverify"])) ? /* Off. */ false : $args["sslverify"];
|
200 |
-
|
201 |
$args["httpversion"] = (!isset($args["httpversion"])) ? "1.1" : $args["httpversion"];
|
202 |
|
203 |
if((is_array($post_vars) || is_string($post_vars)) && !empty($post_vars))
|
14 |
* @package s2Member\Utilities
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_utils_urls"))
|
196 |
|
197 |
$args["s2member"] = WS_PLUGIN__S2MEMBER_VERSION; // Indicates this is an s2Member connection.
|
198 |
|
|
|
|
|
199 |
$args["httpversion"] = (!isset($args["httpversion"])) ? "1.1" : $args["httpversion"];
|
200 |
|
201 |
if((is_array($post_vars) || is_string($post_vars)) && !empty($post_vars))
|
includes/classes/utils-users.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Utilities
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_utils_users'))
|
14 |
* @package s2Member\Utilities
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
|
20 |
if(!class_exists('c_ws_plugin__s2member_utils_users'))
|
includes/classes/wp-footer.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\WP_Footer
|
15 |
* @since 110524RC
|
16 |
*/
|
17 |
-
if
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_wp_footer"))
|
14 |
* @package s2Member\WP_Footer
|
15 |
* @since 110524RC
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_wp_footer"))
|
includes/codes.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
/*
|
20 |
Add WordPress Editor Shortcodes.
|
14 |
* @package s2Member
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
/*
|
20 |
Add WordPress Editor Shortcodes.
|
includes/funcs.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ('Do not access this file directly.');
|
19 |
/*
|
20 |
Include all of the functions that came with this plugin.
|
14 |
* @package s2Member
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ('Do not access this file directly.');
|
19 |
/*
|
20 |
Include all of the functions that came with this plugin.
|
includes/functions/api-functions.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\API_Functions
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
-
if(
|
18 |
exit("Do not access this file directly.");
|
19 |
/**
|
20 |
* Conditional to determine if the current User is NOT logged in.
|
14 |
* @package s2Member\API_Functions
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
/**
|
20 |
* Conditional to determine if the current User is NOT logged in.
|
includes/functions/class-autoloader.inc.php
CHANGED
@@ -18,7 +18,7 @@
|
|
18 |
* @package s2Member
|
19 |
* @since 3.5
|
20 |
*/
|
21 |
-
if(
|
22 |
exit ('Do not access this file directly.');
|
23 |
|
24 |
if(!function_exists('ws_plugin__s2member_classes'))
|
18 |
* @package s2Member
|
19 |
* @since 3.5
|
20 |
*/
|
21 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
22 |
exit ('Do not access this file directly.');
|
23 |
|
24 |
if(!function_exists('ws_plugin__s2member_classes'))
|
includes/functions/deprecated.inc.php
CHANGED
@@ -16,7 +16,7 @@
|
|
16 |
* @package s2Member
|
17 |
* @since 3.5
|
18 |
*/
|
19 |
-
if
|
20 |
exit ("Do not access this file directly.");
|
21 |
/**
|
22 |
* Deprecated in s2Member v3.5+.
|
16 |
* @package s2Member
|
17 |
* @since 3.5
|
18 |
*/
|
19 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
20 |
exit ("Do not access this file directly.");
|
21 |
/**
|
22 |
* Deprecated in s2Member v3.5+.
|
includes/functions/pluggables.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member
|
15 |
* @since 110707
|
16 |
*/
|
17 |
-
if
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!function_exists ("wp_new_user_notification"))
|
14 |
* @package s2Member
|
15 |
* @since 110707
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if (!function_exists ("wp_new_user_notification"))
|
includes/hooks.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
-
if(
|
18 |
exit('Do not access this file directly.');
|
19 |
/*
|
20 |
Add the plugin Actions/Filters here.
|
14 |
* @package s2Member
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit('Do not access this file directly.');
|
19 |
/*
|
20 |
Add the plugin Actions/Filters here.
|
includes/menu-pages/api-ops.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
-
if(
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_menu_page_api_ops"))
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_menu_page_api_ops"))
|
includes/menu-pages/down-ops.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
-
if(
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
|
@@ -270,6 +270,33 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
|
|
270 |
echo '<tbody>'."\n";
|
271 |
echo '<tr>'."\n";
|
272 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
273 |
echo '<th style="padding-top:0;">'."\n";
|
274 |
echo '<label for="ws-plugin--s2member-amazon-s3-files-bucket">'."\n";
|
275 |
echo 'Amazon S3 File Bucket Name (where protected files are):'."\n";
|
@@ -493,97 +520,97 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
|
|
493 |
|
494 |
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_after_amazon_cf", get_defined_vars());
|
495 |
}
|
496 |
-
/* if(apply_filters("ws_plugin__s2member_during_down_ops_page_during_left_sections_display_amazon_s3_comp", TRUE, get_defined_vars()))
|
497 |
-
|
498 |
-
|
499 |
|
500 |
-
|
501 |
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
|
506 |
-
|
507 |
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
|
518 |
-
|
519 |
-
|
520 |
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
|
526 |
-
|
527 |
-
|
528 |
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
|
535 |
-
|
536 |
-
|
537 |
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
|
544 |
-
|
545 |
-
|
546 |
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
|
553 |
-
|
554 |
-
|
555 |
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
|
561 |
-
|
562 |
-
|
563 |
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
|
570 |
-
|
571 |
-
|
572 |
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
|
583 |
-
|
584 |
|
585 |
-
|
586 |
-
|
587 |
if(apply_filters("ws_plugin__s2member_during_down_ops_page_during_left_sections_display_rtmp_streaming", TRUE, get_defined_vars()))
|
588 |
{
|
589 |
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_before_rtmp_streaming", get_defined_vars());
|
@@ -592,7 +619,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
|
|
592 |
|
593 |
echo '<div class="ws-menu-page-section ws-plugin--s2member-rtmp-streaming-section">'."\n";
|
594 |
echo '<h3>JW Player v6 & RTMP Protocol Examples</h3>'."\n";
|
595 |
-
echo '<a href="http://www.
|
596 |
echo '<p>While it is possible to serve audio/video files protected by s2Member, without needing to integrate Amazon S3 or CloudFront; we DO highly recommend that you integrate both Amazon S3 and Amazon CloudFront in order to maximize speed and compatibility across various viewing platforms. That being said, there are code samples below that will serve audio/video files both with and without Amazon S3/CloudFront. You can also check the <a href="'.esc_attr(c_ws_plugin__s2member_readmes::parse_readme_value("Forum URI")).'" target="_blank" rel="external">s2Member Support Forums</a> for tips/tricks if you like.</p>'."\n";
|
597 |
echo '<p><strong>One of the great things about Amazon CloudFront</strong>, is its ability to <strong>stream/seek media files</strong> in the truest sense of the word. For sites delivering protected <em>FLV/MP4/OGG/WEBM</em> and other streaming audio/video file types over the <em>RTMP</em> protocol, Amazon CloudFront is our recommendation. Once you\'ve successfully configured s2Member to use both Amazon S3 and Amazon CloudFront together, please review the code samples below. s2Member can automatically serve your protected files over the <em>RTMP</em> protocol using an Amazon CloudFront Streaming Distribution.</p>'."\n";
|
598 |
echo '<p><strong>See also:</strong> This KB article: <a href="http://www.s2member.com/kb/jwplayer-s2stream-shortcodes/" target="_blank" rel="external">JW Player w/ <code>[s2Stream /]</code> Shortcodes</a>.</p>'."\n";
|
@@ -605,42 +632,42 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
|
|
605 |
echo '<h3><code>[s2Stream /]</code> Video Shortcode Examples (recommended — it\'s the easiest way)</h3>'."\n";
|
606 |
|
607 |
echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-s2stream-mp4\').toggle(); return false;" class="ws-dotted-link">JW Player (MP4 file, via Rewrite URLs. Amazon S3/CloudFront NOT required)</a></p>'."\n";
|
608 |
-
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-s2stream-mp4" style="display:none;">Download <a href="http://www.
|
609 |
|
610 |
echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-s2stream-mp4-rtmp\').toggle(); return false;" class="ws-dotted-link">JW Player (RTMP streaming MP4, via s2Member\'s Amazon S3/CloudFront integration)</a></p>'."\n";
|
611 |
-
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-s2stream-mp4-rtmp" style="display:none;">Download <a href="http://www.
|
612 |
|
613 |
echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-s2stream-mp4-rtmp-only\').toggle(); return false;" class="ws-dotted-link">JW Player (RTMP streaming MP4 only, via s2Member\'s Amazon S3/CloudFront integration)</a></p>'."\n";
|
614 |
-
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-s2stream-mp4-rtmp-only" style="display:none;">Download <a href="http://www.
|
615 |
|
616 |
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
617 |
|
618 |
echo '<h3><code>[s2Stream /]</code> Audio Shortcode Examples (recommended — it\'s the easiest way)</h3>'."\n";
|
619 |
|
620 |
echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-s2stream-mp3\').toggle(); return false;" class="ws-dotted-link">JW Player (MP3 file, via Rewrite URLs. Amazon S3/CloudFront NOT required)</a></p>'."\n";
|
621 |
-
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-s2stream-mp3" style="display:none;">Download <a href="http://www.
|
622 |
|
623 |
echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-s2stream-mp3-rtmp\').toggle(); return false;" class="ws-dotted-link">JW Player (RTMP streaming MP3, via s2Member\'s Amazon S3/CloudFront integration)</a></p>'."\n";
|
624 |
-
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-s2stream-mp3-rtmp" style="display:none;">Download <a href="http://www.
|
625 |
|
626 |
echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-s2stream-mp3-rtmp-only\').toggle(); return false;" class="ws-dotted-link">JW Player (RTMP streaming MP3 only, via s2Member\'s Amazon S3/CloudFront integration)</a></p>'."\n";
|
627 |
-
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-s2stream-mp3-rtmp-only" style="display:none;">Download <a href="http://www.
|
628 |
|
629 |
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
630 |
|
631 |
echo '<h3>PHP Code Examples (for more advanced integrations via PHP — in WordPress themes)</h3>'."\n";
|
632 |
|
633 |
echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-standard-mp4\').toggle(); return false;" class="ws-dotted-link">JW Player (MP4 file, via Rewrite URLs. Amazon S3/CloudFront NOT required)</a></p>'."\n";
|
634 |
-
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-standard-mp4" style="display:none;">Download <a href="http://www.
|
635 |
|
636 |
echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-streaming-mp4\').toggle(); return false;" class="ws-dotted-link">JW Player (RTMP streaming MP4, via s2Member\'s Amazon S3/CloudFront integration)</a></p>'."\n";
|
637 |
-
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-streaming-mp4" style="display:none;">Download <a href="http://www.
|
638 |
|
639 |
echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-streaming-mp4-sca\').toggle(); return false;" class="ws-dotted-link">JW Player (RTMP streaming MP4, via s2Member\'s JSON/Shortcode alternative)</a></p>'."\n";
|
640 |
-
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-streaming-mp4-sca" style="display:none;">Download <a href="http://www.
|
641 |
|
642 |
echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-streaming-mp4-webm\').toggle(); return false;" class="ws-dotted-link">JW Player (RTMP streaming MP4, advanced w/ multiple fallbacks)</a></p>'."\n";
|
643 |
-
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-streaming-mp4-webm" style="display:none;">Download <a href="http://www.
|
644 |
|
645 |
echo '</div>'."\n";
|
646 |
|
@@ -729,10 +756,10 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
|
|
729 |
echo '<li><code>file_download="video.mp4"</code> Location of the audio/video file, relative to the <code>/'.esc_html(c_ws_plugin__s2member_utils_dirs::basename_dir_app_data($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"])).'/</code> directory; or, relative to the root of your Amazon S3 Bucket, when applicable.</li>'."\n";
|
730 |
echo '<li><code>player="jwplayer-v6-rtmp"</code> Required. Current supported players in this Shortcode include: <code>jwplayer-v6</code> (works with any audio/video file, and you do NOT need to have Amazon S3 or CloudFront integrated for this to work), <code>jwplayer-v6-rtmp</code> (streams with the RTMP protocol, plus there is a full download fallback of the source file if streaming is not possible on a particular device; this requires both Amazon S3 and CloudFront integration), <code>jwplayer-v6-rtmp-only</code> (streams with the RTMP protocol only, with no access to the source file, only to the RTMP stream; this requires both Amazon S3 and CloudFront integration).</li>'."\n";
|
731 |
echo '<li><code>player_id=""</code> Optional. HTML div ID for the audio/video player. Defaults to a unique ID generated by s2Member for each instance of your Shortcode.</li>'."\n";
|
732 |
-
echo '<li><code>player_path="/jwplayer/jwplayer.js"</code> Required. Path to the player\'s JavaScript file (ex: <code>/jwplayer/jwplayer.js</code> — you should upload the <a href="http://www.
|
733 |
echo '<li><code>player_resolutions=""</code> Optional (requires s2Member Pro). This is a comma-delimited list of all available resolution options (should you decide to offer more than just one file download at a single resolution). Please review the full list of Shortcode Attributes (i.e. click the "Shortcode Attributes (Explained)" tab) in <a href="http://www.s2member.com/kb/jwplayer-s2stream-shortcodes/#using-s2stream-shortcodes" target="_blank" rel="external">this KB article</a> for further details, requirements, and an example of use.</li>'."\n";
|
734 |
-
echo '<li><code>player_{setting}=""</code> Optional. Any additional configuration attributes supported by your audio/video player, prefixed with <code>player_</code>. For JW Player v6, see <a href="http://www.
|
735 |
-
echo '<li><code>player_option_blocks=""</code> Optional. Any "Advanced Option Blocks" supported by your audio/video player. For JW Player v6, see <a href="http://www.
|
736 |
echo '<li>Please check the <strong>Shortcode Attributes</strong> Tab in <a href="http://www.s2member.com/kb/jwplayer-s2stream-shortcodes/#using-s2stream-shortcodes" target="_blank" rel="external">this KB article</a> for further details on everything here.</li>'."\n";
|
737 |
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_during_shortcode_attrs_s2stream_lis", get_defined_vars());
|
738 |
echo '</ul>'."\n";
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
|
270 |
echo '<tbody>'."\n";
|
271 |
echo '<tr>'."\n";
|
272 |
|
273 |
+
echo '<th style="padding-top:0;">'."\n";
|
274 |
+
echo '<label for="ws-plugin--s2member-amazon-s3-files-bucket-region">'."\n";
|
275 |
+
echo 'Amazon S3 File Bucket Region (please choose):'."\n";
|
276 |
+
echo '</label>'."\n";
|
277 |
+
echo '</th>'."\n";
|
278 |
+
|
279 |
+
echo '</tr>'."\n";
|
280 |
+
echo '<tr>'."\n";
|
281 |
+
|
282 |
+
echo '<td>'."\n";
|
283 |
+
echo '<select name="ws_plugin__s2member_amazon_s3_files_bucket_region" id="ws-plugin--s2member-amazon-s3-files-bucket-region">'."\n";
|
284 |
+
echo '<option value="us-east-1"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_s3_files_bucket_region"] === 'us-east-1') ? ' selected="selected"' : '').'>us-east-1</option>'."\n";
|
285 |
+
echo '<option value="us-west-1"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_s3_files_bucket_region"] === 'us-west-1') ? ' selected="selected"' : '').'>us-west-1</option>'."\n";
|
286 |
+
echo '<option value="us-west-2"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_s3_files_bucket_region"] === 'us-west-2') ? ' selected="selected"' : '').'>us-west-2</option>'."\n";
|
287 |
+
echo '<option value="eu-west-1"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_s3_files_bucket_region"] === 'eu-west-1') ? ' selected="selected"' : '').'>eu-west-1</option>'."\n";
|
288 |
+
echo '<option value="eu-central-1"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_s3_files_bucket_region"] === 'eu-central-1') ? ' selected="selected"' : '').'>eu-central-1</option>'."\n";
|
289 |
+
echo '<option value="ap-southeast-1"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_s3_files_bucket_region"] === 'ap-southeast-1') ? ' selected="selected"' : '').'>ap-southeast-1</option>'."\n";
|
290 |
+
echo '<option value="ap-southeast-2"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_s3_files_bucket_region"] === 'ap-southeast-2') ? ' selected="selected"' : '').'>ap-southeast-2</option>'."\n";
|
291 |
+
echo '<option value="ap-northeast-1"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_s3_files_bucket_region"] === 'ap-northeast-1') ? ' selected="selected"' : '').'>ap-northeast-1</option>'."\n";
|
292 |
+
echo '<option value="sa-east-1"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_s3_files_bucket_region"] === 'sa-east-1') ? ' selected="selected"' : '').'>sa-east-1</option>'."\n";
|
293 |
+
echo '<option value="us-gov-west-1"'.(($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_s3_files_bucket_region"] === 'us-gov-west-1') ? ' selected="selected"' : '').'>us-gov-west-1</option>'."\n";
|
294 |
+
echo '</select><br />'."\n";
|
295 |
+
echo 'See: <a href="http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region" target="_blank">http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region</a>'."\n";
|
296 |
+
echo '</td>'."\n";
|
297 |
+
echo '</tr>'."\n";
|
298 |
+
echo '<tr>'."\n";
|
299 |
+
|
300 |
echo '<th style="padding-top:0;">'."\n";
|
301 |
echo '<label for="ws-plugin--s2member-amazon-s3-files-bucket">'."\n";
|
302 |
echo 'Amazon S3 File Bucket Name (where protected files are):'."\n";
|
520 |
|
521 |
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_after_amazon_cf", get_defined_vars());
|
522 |
}
|
523 |
+
/* if(apply_filters("ws_plugin__s2member_during_down_ops_page_during_left_sections_display_amazon_s3_comp", TRUE, get_defined_vars()))
|
524 |
+
{
|
525 |
+
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_before_amazon_s3_comp", get_defined_vars());
|
526 |
|
527 |
+
echo '<div class="ws-menu-page-group" title="S3-Compatible Content Delivery (e.g. DreamObjects, etc.)">'."\n";
|
528 |
|
529 |
+
echo '<div class="ws-menu-page-section ws-plugin--s2member-amazon-s3-comp-section">'."\n";
|
530 |
+
echo '<h3>S3-Compatible Content Delivery (optional)</h3>'."\n";
|
531 |
+
echo '<p>[Documentation goes here.]</p>'."\n";
|
532 |
|
533 |
+
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
534 |
|
535 |
+
echo '<table class="form-table" style="margin-top:0;">'."\n";
|
536 |
+
echo '<tbody>'."\n";
|
537 |
+
echo '<tr>'."\n";
|
538 |
|
539 |
+
echo '<th style="padding-top:0;">'."\n";
|
540 |
+
echo '<label for="ws-plugin--s2member-amazon-s3-comp-files-bucket">'."\n";
|
541 |
+
echo 'API Endpoint URL:'."\n";
|
542 |
+
echo '</label>'."\n";
|
543 |
+
echo '</th>'."\n";
|
544 |
|
545 |
+
echo '</tr>'."\n";
|
546 |
+
echo '<tr>'."\n";
|
547 |
|
548 |
+
echo '<td>'."\n";
|
549 |
+
echo '<input type="text" autocomplete="off" name="ws_plugin__s2member_amazon_s3_comp_api_endpoint" id="ws-plugin--s2member-amazon-s3-comp-api-endpoint" value="'.format_to_edit($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_s3_comp_api_endpoint"]).'" /><br />'."\n";
|
550 |
+
echo 'Please type the S3-Compatible API Endpoint URL'."\n";
|
551 |
+
echo '</td>'."\n";
|
552 |
|
553 |
+
echo '</tr>'."\n";
|
554 |
+
echo '<tr>'."\n";
|
555 |
|
556 |
+
echo '<th style="padding-top:0;">'."\n";
|
557 |
+
echo '<label for="ws-plugin--s2member-amazon-s3-comp-files-bucket">'."\n";
|
558 |
+
echo 'S3-Compatible Bucket Name (where protected files are):'."\n";
|
559 |
+
echo '</label>'."\n";
|
560 |
+
echo '</th>'."\n";
|
561 |
|
562 |
+
echo '</tr>'."\n";
|
563 |
+
echo '<tr>'."\n";
|
564 |
|
565 |
+
echo '<td>'."\n";
|
566 |
+
echo '<input type="text" autocomplete="off" name="ws_plugin__s2member_amazon_s3_comp_files_bucket" id="ws-plugin--s2member-amazon-s3-comp-files-bucket" value="'.format_to_edit($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_s3_comp_files_bucket"]).'" /><br />'."\n";
|
567 |
+
echo 'Your S3-Compatible Bucket will be used, instead of the <code>/'.esc_html(c_ws_plugin__s2member_utils_dirs::basename_dir_app_data($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"])).'/</code> directory.<br />'."\n";
|
568 |
+
echo 'Please type the name of your Bucket. Ex: <code>mys3compbucket</code>'."\n";
|
569 |
+
echo '</td>'."\n";
|
570 |
|
571 |
+
echo '</tr>'."\n";
|
572 |
+
echo '<tr>'."\n";
|
573 |
|
574 |
+
echo '<th>'."\n";
|
575 |
+
echo '<label for="ws-plugin--s2member-amazon-s3-comp-files-access-key">'."\n";
|
576 |
+
echo 'Access Key (Access Key ID):'."\n";
|
577 |
+
echo '</label>'."\n";
|
578 |
+
echo '</th>'."\n";
|
579 |
|
580 |
+
echo '</tr>'."\n";
|
581 |
+
echo '<tr>'."\n";
|
582 |
|
583 |
+
echo '<td>'."\n";
|
584 |
+
echo '<input type="password" autocomplete="off" name="ws_plugin__s2member_amazon_s3_comp_files_access_key" id="ws-plugin--s2member-amazon-s3-comp-files-access-key" value="'.format_to_edit($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_s3_comp_files_access_key"]).'" /><br />'."\n";
|
585 |
+
echo 'Please type the Access Key.'."\n";
|
586 |
+
echo '</td>'."\n";
|
587 |
|
588 |
+
echo '</tr>'."\n";
|
589 |
+
echo '<tr>'."\n";
|
590 |
|
591 |
+
echo '<th>'."\n";
|
592 |
+
echo '<label for="ws-plugin--s2member-amazon-s3-comp-files-secret-key">'."\n";
|
593 |
+
echo 'Secret Key (Secret Access Key):'."\n";
|
594 |
+
echo '</label>'."\n";
|
595 |
+
echo '</th>'."\n";
|
596 |
|
597 |
+
echo '</tr>'."\n";
|
598 |
+
echo '<tr>'."\n";
|
599 |
|
600 |
+
echo '<td>'."\n";
|
601 |
+
echo '<input type="password" autocomplete="off" name="ws_plugin__s2member_amazon_s3_comp_files_secret_key" id="ws-plugin--s2member-amazon-s3-comp-files-secret-key" value="'.format_to_edit($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_s3_comp_files_secret_key"]).'" /><br />'."\n";
|
602 |
+
echo 'Please type the Secret Key.'."\n";
|
603 |
+
echo '</td>'."\n";
|
604 |
|
605 |
+
echo '</tr>'."\n";
|
606 |
+
echo '</tbody>'."\n";
|
607 |
+
echo '</table>'."\n";
|
608 |
+
echo '</div>'."\n";
|
609 |
|
610 |
+
echo '</div>'."\n";
|
611 |
|
612 |
+
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_after_amazon_s3_comp", get_defined_vars());
|
613 |
+
}*/
|
614 |
if(apply_filters("ws_plugin__s2member_during_down_ops_page_during_left_sections_display_rtmp_streaming", TRUE, get_defined_vars()))
|
615 |
{
|
616 |
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_before_rtmp_streaming", get_defined_vars());
|
619 |
|
620 |
echo '<div class="ws-menu-page-section ws-plugin--s2member-rtmp-streaming-section">'."\n";
|
621 |
echo '<h3>JW Player v6 & RTMP Protocol Examples</h3>'."\n";
|
622 |
+
echo '<a href="http://www.s2member.com/r/jw-player-download/" target="_blank"><img src="'.esc_attr($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]).'/images/jwplayer-logo.png" class="ws-menu-page-right" style="width:179px; height:58px; border:0; border-radius:3px; background:#FFFFFF; padding:15px;" alt="." /></a>'."\n";
|
623 |
echo '<p>While it is possible to serve audio/video files protected by s2Member, without needing to integrate Amazon S3 or CloudFront; we DO highly recommend that you integrate both Amazon S3 and Amazon CloudFront in order to maximize speed and compatibility across various viewing platforms. That being said, there are code samples below that will serve audio/video files both with and without Amazon S3/CloudFront. You can also check the <a href="'.esc_attr(c_ws_plugin__s2member_readmes::parse_readme_value("Forum URI")).'" target="_blank" rel="external">s2Member Support Forums</a> for tips/tricks if you like.</p>'."\n";
|
624 |
echo '<p><strong>One of the great things about Amazon CloudFront</strong>, is its ability to <strong>stream/seek media files</strong> in the truest sense of the word. For sites delivering protected <em>FLV/MP4/OGG/WEBM</em> and other streaming audio/video file types over the <em>RTMP</em> protocol, Amazon CloudFront is our recommendation. Once you\'ve successfully configured s2Member to use both Amazon S3 and Amazon CloudFront together, please review the code samples below. s2Member can automatically serve your protected files over the <em>RTMP</em> protocol using an Amazon CloudFront Streaming Distribution.</p>'."\n";
|
625 |
echo '<p><strong>See also:</strong> This KB article: <a href="http://www.s2member.com/kb/jwplayer-s2stream-shortcodes/" target="_blank" rel="external">JW Player w/ <code>[s2Stream /]</code> Shortcodes</a>.</p>'."\n";
|
632 |
echo '<h3><code>[s2Stream /]</code> Video Shortcode Examples (recommended — it\'s the easiest way)</h3>'."\n";
|
633 |
|
634 |
echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-s2stream-mp4\').toggle(); return false;" class="ws-dotted-link">JW Player (MP4 file, via Rewrite URLs. Amazon S3/CloudFront NOT required)</a></p>'."\n";
|
635 |
+
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-s2stream-mp4" style="display:none;">Download <a href="http://www.s2member.com/r/jw-player-download/" target="_blank" rel="external">JW Player here</a>, and upload <code>/jwplayer/</code> to your website\'s root directory.<br />Works with any audio/video file. This does NOT require s2Member to be integrated with Amazon S3/CloudFront.<br /><br />'.c_ws_plugin__s2member_utils_strings::highlight_php(file_get_contents(dirname(__FILE__)."/code-samples/jwplayer-s2stream-mp4.x-php")).'</p>'."\n";
|
636 |
|
637 |
echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-s2stream-mp4-rtmp\').toggle(); return false;" class="ws-dotted-link">JW Player (RTMP streaming MP4, via s2Member\'s Amazon S3/CloudFront integration)</a></p>'."\n";
|
638 |
+
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-s2stream-mp4-rtmp" style="display:none;">Download <a href="http://www.s2member.com/r/jw-player-download/" target="_blank" rel="external">JW Player here</a>, and upload <code>/jwplayer/</code> to your website\'s root directory.<br />Streams with the RTMP protocol, plus there is a full download fallback of the MP4 source file if streaming is not possible on a particular device.<br />This requires s2Member to be integrated with Amazon S3/CloudFront.<br /><br />'.c_ws_plugin__s2member_utils_strings::highlight_php(file_get_contents(dirname(__FILE__)."/code-samples/jwplayer-s2stream-mp4-rtmp.x-php")).'</p>'."\n";
|
639 |
|
640 |
echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-s2stream-mp4-rtmp-only\').toggle(); return false;" class="ws-dotted-link">JW Player (RTMP streaming MP4 only, via s2Member\'s Amazon S3/CloudFront integration)</a></p>'."\n";
|
641 |
+
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-s2stream-mp4-rtmp-only" style="display:none;">Download <a href="http://www.s2member.com/r/jw-player-download/" target="_blank" rel="external">JW Player here</a>, and upload <code>/jwplayer/</code> to your website\'s root directory.<br />Streams with the RTMP protocol only, with no access to the source file, only to the RTMP stream.<br />This requires s2Member to be integrated with Amazon S3/CloudFront.<br /><br />'.c_ws_plugin__s2member_utils_strings::highlight_php(file_get_contents(dirname(__FILE__)."/code-samples/jwplayer-s2stream-mp4-rtmp-only.x-php")).'</p>'."\n";
|
642 |
|
643 |
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
644 |
|
645 |
echo '<h3><code>[s2Stream /]</code> Audio Shortcode Examples (recommended — it\'s the easiest way)</h3>'."\n";
|
646 |
|
647 |
echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-s2stream-mp3\').toggle(); return false;" class="ws-dotted-link">JW Player (MP3 file, via Rewrite URLs. Amazon S3/CloudFront NOT required)</a></p>'."\n";
|
648 |
+
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-s2stream-mp3" style="display:none;">Download <a href="http://www.s2member.com/r/jw-player-download/" target="_blank" rel="external">JW Player here</a>, and upload <code>/jwplayer/</code> to your website\'s root directory.<br />Works with any audio/video file. This does NOT require s2Member to be integrated with Amazon S3/CloudFront.<br /><br />'.c_ws_plugin__s2member_utils_strings::highlight_php(file_get_contents(dirname(__FILE__)."/code-samples/jwplayer-s2stream-mp3.x-php")).'</p>'."\n";
|
649 |
|
650 |
echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-s2stream-mp3-rtmp\').toggle(); return false;" class="ws-dotted-link">JW Player (RTMP streaming MP3, via s2Member\'s Amazon S3/CloudFront integration)</a></p>'."\n";
|
651 |
+
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-s2stream-mp3-rtmp" style="display:none;">Download <a href="http://www.s2member.com/r/jw-player-download/" target="_blank" rel="external">JW Player here</a>, and upload <code>/jwplayer/</code> to your website\'s root directory.<br />Streams with the RTMP protocol, plus there is a full download fallback of the MP3 source file if streaming is not possible on a particular device.<br />This requires s2Member to be integrated with Amazon S3/CloudFront.<br /><br />'.c_ws_plugin__s2member_utils_strings::highlight_php(file_get_contents(dirname(__FILE__)."/code-samples/jwplayer-s2stream-mp3-rtmp.x-php")).'</p>'."\n";
|
652 |
|
653 |
echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-s2stream-mp3-rtmp-only\').toggle(); return false;" class="ws-dotted-link">JW Player (RTMP streaming MP3 only, via s2Member\'s Amazon S3/CloudFront integration)</a></p>'."\n";
|
654 |
+
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-s2stream-mp3-rtmp-only" style="display:none;">Download <a href="http://www.s2member.com/r/jw-player-download/" target="_blank" rel="external">JW Player here</a>, and upload <code>/jwplayer/</code> to your website\'s root directory.<br />Streams with the RTMP protocol only, with no access to the source file, only to the RTMP stream.<br />This requires s2Member to be integrated with Amazon S3/CloudFront.<br /><br />'.c_ws_plugin__s2member_utils_strings::highlight_php(file_get_contents(dirname(__FILE__)."/code-samples/jwplayer-s2stream-mp3-rtmp-only.x-php")).'</p>'."\n";
|
655 |
|
656 |
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
657 |
|
658 |
echo '<h3>PHP Code Examples (for more advanced integrations via PHP — in WordPress themes)</h3>'."\n";
|
659 |
|
660 |
echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-standard-mp4\').toggle(); return false;" class="ws-dotted-link">JW Player (MP4 file, via Rewrite URLs. Amazon S3/CloudFront NOT required)</a></p>'."\n";
|
661 |
+
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-standard-mp4" style="display:none;">Download <a href="http://www.s2member.com/r/jw-player-download/" target="_blank" rel="external">JW Player here</a>, and upload <code>/jwplayer/</code> to your website\'s root directory.<br />This does NOT require s2Member to be integrated with Amazon S3/CloudFront.<br />Also see: <code>s2Member -› Download Options -› Advanced Mod Rewrite Linkage</code>.<br /><br />'.c_ws_plugin__s2member_utils_strings::highlight_php(file_get_contents(dirname(__FILE__)."/code-samples/jwplayer-standard-mp4.x-php")).'</p>'."\n";
|
662 |
|
663 |
echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-streaming-mp4\').toggle(); return false;" class="ws-dotted-link">JW Player (RTMP streaming MP4, via s2Member\'s Amazon S3/CloudFront integration)</a></p>'."\n";
|
664 |
+
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-streaming-mp4" style="display:none;">Download <a href="http://www.s2member.com/r/jw-player-download/" target="_blank" rel="external">JW Player here</a>, and upload <code>/jwplayer/</code> to your website\'s root directory.<br />This requires s2Member to be integrated with Amazon S3/CloudFront.<br />Also see: <a href="http://www.s2member.com/codex/stable/s2member/api_functions/package-summary/" target="_blank" rel="external">s2Member Codex -› API Functions</a>.<br /><br />'.c_ws_plugin__s2member_utils_strings::highlight_php(file_get_contents(dirname(__FILE__)."/code-samples/jwplayer-streaming-mp4.x-php")).'</p>'."\n";
|
665 |
|
666 |
echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-streaming-mp4-sca\').toggle(); return false;" class="ws-dotted-link">JW Player (RTMP streaming MP4, via s2Member\'s JSON/Shortcode alternative)</a></p>'."\n";
|
667 |
+
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-streaming-mp4-sca" style="display:none;">Download <a href="http://www.s2member.com/r/jw-player-download/" target="_blank" rel="external">JW Player here</a>, and upload <code>/jwplayer/</code> to your website\'s root directory.<br />This requires s2Member to be integrated with Amazon S3/CloudFront.<br />Also see: <a href="http://www.s2member.com/codex/stable/s2member/api_functions/package-summary/" target="_blank" rel="external">s2Member Codex -› API Functions</a>.<br /><br />'.c_ws_plugin__s2member_utils_strings::highlight_php(file_get_contents(dirname(__FILE__)."/code-samples/jwplayer-streaming-mp4-sca.x-php")).'</p>'."\n";
|
668 |
|
669 |
echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-streaming-mp4-webm\').toggle(); return false;" class="ws-dotted-link">JW Player (RTMP streaming MP4, advanced w/ multiple fallbacks)</a></p>'."\n";
|
670 |
+
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-streaming-mp4-webm" style="display:none;">Download <a href="http://www.s2member.com/r/jw-player-download/" target="_blank" rel="external">JW Player here</a>, and upload <code>/jwplayer/</code> to your website\'s root directory.<br />This requires s2Member to be integrated with Amazon S3/CloudFront.<br />Also see: <a href="http://www.s2member.com/codex/stable/s2member/api_functions/package-summary/" target="_blank" rel="external">s2Member Codex -› API Functions</a>.<br /><br />'.c_ws_plugin__s2member_utils_strings::highlight_php(file_get_contents(dirname(__FILE__)."/code-samples/jwplayer-streaming-mp4-webm.x-php")).'</p>'."\n";
|
671 |
|
672 |
echo '</div>'."\n";
|
673 |
|
756 |
echo '<li><code>file_download="video.mp4"</code> Location of the audio/video file, relative to the <code>/'.esc_html(c_ws_plugin__s2member_utils_dirs::basename_dir_app_data($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"])).'/</code> directory; or, relative to the root of your Amazon S3 Bucket, when applicable.</li>'."\n";
|
757 |
echo '<li><code>player="jwplayer-v6-rtmp"</code> Required. Current supported players in this Shortcode include: <code>jwplayer-v6</code> (works with any audio/video file, and you do NOT need to have Amazon S3 or CloudFront integrated for this to work), <code>jwplayer-v6-rtmp</code> (streams with the RTMP protocol, plus there is a full download fallback of the source file if streaming is not possible on a particular device; this requires both Amazon S3 and CloudFront integration), <code>jwplayer-v6-rtmp-only</code> (streams with the RTMP protocol only, with no access to the source file, only to the RTMP stream; this requires both Amazon S3 and CloudFront integration).</li>'."\n";
|
758 |
echo '<li><code>player_id=""</code> Optional. HTML div ID for the audio/video player. Defaults to a unique ID generated by s2Member for each instance of your Shortcode.</li>'."\n";
|
759 |
+
echo '<li><code>player_path="/jwplayer/jwplayer.js"</code> Required. Path to the player\'s JavaScript file (ex: <code>/jwplayer/jwplayer.js</code> — you should upload the <a href="http://www.s2member.com/r/jw-player-download/" target="_blank" rel="external">/jwplayer</a> folder to the root of your web directory).</li>'."\n";
|
760 |
echo '<li><code>player_resolutions=""</code> Optional (requires s2Member Pro). This is a comma-delimited list of all available resolution options (should you decide to offer more than just one file download at a single resolution). Please review the full list of Shortcode Attributes (i.e. click the "Shortcode Attributes (Explained)" tab) in <a href="http://www.s2member.com/kb/jwplayer-s2stream-shortcodes/#using-s2stream-shortcodes" target="_blank" rel="external">this KB article</a> for further details, requirements, and an example of use.</li>'."\n";
|
761 |
+
echo '<li><code>player_{setting}=""</code> Optional. Any additional configuration attributes supported by your audio/video player, prefixed with <code>player_</code>. For JW Player v6, see <a href="http://www.s2member.com/r/jw-player-config-options/" target="_blank" rel="external">this article please</a>. Examples: <code>player_width="480"</code>, <code>player_height="270"</code>, <code>player_title="My Video"</code>, <code>player_description="A video about something."</code>, <code>player_image="http://www.example.com/wp-content/uploads/video-preview.jpg"</code>, <code>player_mediaid="video_ei0wsx23"</code>, <code>player_autostart="true"</code>, <code>player_skin="/jwplayer/my-skin.xml"</code>, <code>player_key="my-license-key"</code>, <code>player_captions="{file:\'/assets/captions-en.vtt\',label:\'English\'}"</code> (<em>With <a href="http://www.s2member.com/r/jw-player-video-captions/" target="_blank" rel="external">Captions</a>, you can exclude the square array brackets to avoid Shortcode parsing issues. s2Member will automatically wrap your Caption objects with square array brackets.</em>). Please note that "Advanced Options Blocks" listed on <a href="http://www.s2member.com/r/jw-player-config-options/" target="_blank" rel="external">this page</a> are NOT supported here. For those, please use: <code>player_option_blocks=""</code> (see below).</li>'."\n";
|
762 |
+
echo '<li><code>player_option_blocks=""</code> Optional. Any "Advanced Option Blocks" supported by your audio/video player. For JW Player v6, see <a href="http://www.s2member.com/r/jw-player-config-options/" target="_blank" rel="external">this article please</a>. Here are some examples: <code>player_option_blocks="sharing:{}"</code>, <code>player_option_blocks="sharing:{}, logo: {file: \'/logo.png\', link: \'http://example.com\'}"</code>. Or: <code>player_option_blocks="c2hhcmluZzoge30="</code> (base64 encoded version of <code>sharing:{}</code>). Please note that "Advanced Options Blocks" can be defined in plain text or with a <a href="http://www.base64encode.org/" target="_blank" rel="external">base64 encoded string</a>. Advanced Option Blocks are JavaScript objects with properties. If you have trouble defining JavaScript object properties inside a Shortcode Attribute, please use <a href="http://www.base64encode.org/" target="_blank" rel="external">this tool</a> to base64 encode your Advanced Option Blocks, so that you end up with a string that\'s compatible with Shortcode Attributes.</li>'."\n";
|
763 |
echo '<li>Please check the <strong>Shortcode Attributes</strong> Tab in <a href="http://www.s2member.com/kb/jwplayer-s2stream-shortcodes/#using-s2stream-shortcodes" target="_blank" rel="external">this KB article</a> for further details on everything here.</li>'."\n";
|
764 |
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_during_shortcode_attrs_s2stream_lis", get_defined_vars());
|
765 |
echo '</ul>'."\n";
|
includes/menu-pages/els-ops.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
-
if(
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_menu_page_els_ops"))
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_menu_page_els_ops"))
|
includes/menu-pages/gen-ops.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
-
if(
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_menu_page_gen_ops"))
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_menu_page_gen_ops"))
|
includes/menu-pages/info.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
-
if
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_menu_page_info"))
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_menu_page_info"))
|
includes/menu-pages/integrations.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
-
if(
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_menu_page_integrations"))
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_menu_page_integrations"))
|
includes/menu-pages/logs.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 130210
|
16 |
*/
|
17 |
-
if(
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_menu_page_logs"))
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 130210
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_menu_page_logs"))
|
includes/menu-pages/menu-pages.css
CHANGED
@@ -15,7 +15,7 @@
|
|
15 |
* @package WebSharks\Menu Pages
|
16 |
* @since x.xx
|
17 |
*/
|
18 |
-
@import url('//maxcdn.bootstrapcdn.com/font-awesome/4.
|
19 |
/*
|
20 |
Alter WordPress wrap on s2Member menu pages.
|
21 |
*/
|
@@ -147,10 +147,11 @@ div.ws-menu-page pre.code > code
|
|
147 |
display : block;
|
148 |
box-shadow : 0 0 5px 1px #000000 inset, 0 0 1px 1px rgba(223, 245, 165, 0.5);
|
149 |
}
|
150 |
-
div.ws-menu-page code.highlight-php
|
|
|
151 |
{
|
152 |
font-size : 90%;
|
153 |
-
color : #
|
154 |
background : #FFFFFF;
|
155 |
overflow : auto;
|
156 |
max-width : 100%;
|
@@ -233,6 +234,14 @@ div.ws-menu-page .ws-menu-page-bright-hilite
|
|
233 |
border-radius : 3px;
|
234 |
padding : 0 0.2em;
|
235 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
236 |
div.ws-menu-page .ws-menu-page-error-hilite
|
237 |
{
|
238 |
color : #FFFFFF;
|
@@ -500,7 +509,7 @@ div.ws-menu-page div.ws-menu-page-groups-hide:active
|
|
500 |
div.ws-menu-page div.ws-menu-page-toolbox
|
501 |
{
|
502 |
float : right;
|
503 |
-
max-width :
|
504 |
|
505 |
z-index : 1;
|
506 |
position : relative;
|
@@ -822,6 +831,80 @@ table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr >
|
|
822 |
box-shadow : 0 0 1px 0 rgba(0, 0, 0, 0.5) inset, 0 0 1px 1px rgba(223, 245, 165, 0.5);
|
823 |
}
|
824 |
/*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
825 |
Specifically for info pages with readme files.
|
826 |
These CSS selectors address common layout styles.
|
827 |
*/
|
15 |
* @package WebSharks\Menu Pages
|
16 |
* @since x.xx
|
17 |
*/
|
18 |
+
@import url('//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css');
|
19 |
/*
|
20 |
Alter WordPress wrap on s2Member menu pages.
|
21 |
*/
|
147 |
display : block;
|
148 |
box-shadow : 0 0 5px 1px #000000 inset, 0 0 1px 1px rgba(223, 245, 165, 0.5);
|
149 |
}
|
150 |
+
div.ws-menu-page code.highlight-php,
|
151 |
+
div.ws-menu-page code.highlight-shortcodes
|
152 |
{
|
153 |
font-size : 90%;
|
154 |
+
color : #000000;
|
155 |
background : #FFFFFF;
|
156 |
overflow : auto;
|
157 |
max-width : 100%;
|
234 |
border-radius : 3px;
|
235 |
padding : 0 0.2em;
|
236 |
}
|
237 |
+
div.ws-menu-page .ws-menu-page-warning-hilite
|
238 |
+
{
|
239 |
+
color : #FFFFFF;
|
240 |
+
background : #AC3204;
|
241 |
+
|
242 |
+
border-radius : 3px;
|
243 |
+
padding : 0 0.2em;
|
244 |
+
}
|
245 |
div.ws-menu-page .ws-menu-page-error-hilite
|
246 |
{
|
247 |
color : #FFFFFF;
|
509 |
div.ws-menu-page div.ws-menu-page-toolbox
|
510 |
{
|
511 |
float : right;
|
512 |
+
max-width : 320px;
|
513 |
|
514 |
z-index : 1;
|
515 |
position : relative;
|
831 |
box-shadow : 0 0 1px 0 rgba(0, 0, 0, 0.5) inset, 0 0 1px 1px rgba(223, 245, 165, 0.5);
|
832 |
}
|
833 |
/*
|
834 |
+
Coupons table.
|
835 |
+
*/
|
836 |
+
table.ws-menu-page-table table.coupons-table
|
837 |
+
{
|
838 |
+
margin : 0;
|
839 |
+
padding : 0;
|
840 |
+
width : 100%;
|
841 |
+
box-sizing : border-box;
|
842 |
+
table-layout : auto;
|
843 |
+
}
|
844 |
+
table.ws-menu-page-table table.coupons-table thead::after
|
845 |
+
{
|
846 |
+
content : ' ';
|
847 |
+
display : block;
|
848 |
+
margin : 0 0 15px 0;
|
849 |
+
}
|
850 |
+
table.ws-menu-page-table table.coupons-table thead th:not(:last-child)
|
851 |
+
{
|
852 |
+
background : rgba(255, 255, 255, 0.25);
|
853 |
+
border-radius : .25em;
|
854 |
+
}
|
855 |
+
table.ws-menu-page-table table.coupons-table th,
|
856 |
+
table.ws-menu-page-table table.coupons-table td
|
857 |
+
{
|
858 |
+
margin : 0;
|
859 |
+
padding : .1em;
|
860 |
+
text-align : center;
|
861 |
+
vertical-align : middle;
|
862 |
+
width : 10%;
|
863 |
+
}
|
864 |
+
table.ws-menu-page-table table.coupons-table th
|
865 |
+
{
|
866 |
+
padding : .2em;
|
867 |
+
}
|
868 |
+
table.ws-menu-page-table table.coupons-table th:first-child,
|
869 |
+
table.ws-menu-page-table table.coupons-table td:first-child
|
870 |
+
{
|
871 |
+
width : 20%;
|
872 |
+
}
|
873 |
+
table.ws-menu-page-table table.coupons-table th i.fa
|
874 |
+
{
|
875 |
+
display : block;
|
876 |
+
}
|
877 |
+
table.ws-menu-page-table table.coupons-table td:last-child
|
878 |
+
{
|
879 |
+
width : 5%;
|
880 |
+
font-size : 110%;
|
881 |
+
white-space : nowrap;
|
882 |
+
}
|
883 |
+
table.ws-menu-page-table table.coupons-table td:last-child a
|
884 |
+
{
|
885 |
+
width : 40%;
|
886 |
+
display : inline-block;
|
887 |
+
}
|
888 |
+
table.ws-menu-page-table table.coupons-table td:last-child a.-delete:hover
|
889 |
+
{
|
890 |
+
color : #AC0000;
|
891 |
+
}
|
892 |
+
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr > td > table.coupons-table input[type='text']
|
893 |
+
{
|
894 |
+
box-sizing : border-box;
|
895 |
+
width : 100% !important;
|
896 |
+
}
|
897 |
+
table.ws-menu-page-table div.coupon-add
|
898 |
+
{
|
899 |
+
margin : .5em 0 1em 5px;
|
900 |
+
}
|
901 |
+
table.ws-menu-page-table div.coupon-add > a
|
902 |
+
{
|
903 |
+
font-size : 120%;
|
904 |
+
font-weight : bold;
|
905 |
+
text-decoration : none;
|
906 |
+
}
|
907 |
+
/*
|
908 |
Specifically for info pages with readme files.
|
909 |
These CSS selectors address common layout styles.
|
910 |
*/
|
includes/menu-pages/mms-ops.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
-
if(
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_menu_page_mms_ops"))
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_menu_page_mms_ops"))
|
includes/menu-pages/paypal-buttons.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
-
if
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_menu_page_paypal_buttons"))
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_menu_page_paypal_buttons"))
|
includes/menu-pages/paypal-ops.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
-
if(
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_menu_page_paypal_ops"))
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_menu_page_paypal_ops"))
|
includes/menu-pages/res-ops.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
-
if(
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_menu_page_res_ops"))
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_menu_page_res_ops"))
|
includes/menu-pages/scripting.inc.php
CHANGED
@@ -16,7 +16,7 @@
|
|
16 |
*
|
17 |
* @TODO Shortcode equivalents using [else] syntax.
|
18 |
*/
|
19 |
-
if
|
20 |
exit ("Do not access this file directly.");
|
21 |
|
22 |
if (!class_exists ("c_ws_plugin__s2member_menu_page_scripting"))
|
@@ -363,7 +363,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_scripting"))
|
|
363 |
|
364 |
echo '<div class="ws-menu-page-section ws-plugin--s2member-custom-capabilities-section">' . "\n";
|
365 |
echo '<h3>Packaging Together Custom Capabilities w/ Membership</h3>' . "\n";
|
366 |
-
echo '<
|
367 |
echo '<p>Using one of s2Member\'s Payment Button and/or Form Generators, you can add Custom Capabilities in comma-delimited format. s2Member builds upon existing functionality offered by <a href="http://codex.wordpress.org/Roles_and_Capabilities" target="_blank" rel="external">WordPress Roles/Capabilities</a>. s2Member supports Free Subscribers <em>(at Level #0)</em>, and several Primary Roles created by the s2Member plugin <em>(i.e. s2Member Levels 1-4, or up to the number of configured Levels)</em>. Each s2Member Level <em>(aka: s2Member Role)</em> provides the Capability <code>current_user_can("access_s2member_level0"), 1, 2, 3, 4</code>, where <code>access_s2member_level[0-4]</code> is the Capability associated with each Role; and Membership Levels provide incremental access <em>(i.e. Level #4 Members can also access content at Levels 0, 1, 2, and 3 beneath them)</em>. In short, these Level-based permissions are the default Capabilities that come with each Membership Level being sold on your site.</p>' . "\n";
|
368 |
echo '<p>Now, if you\'d like to package together some variations of each Membership Level that you\'re selling, you can! All you do is add <strong>Custom Capabilities</strong> whenever you create your Payment Button and/or Form Shortcode (<em>there is a field in the Button & Form Generators where you can enter Custom Capabilities</em>). You can sell Membership Packages that come with Custom Capabilities, and even with custom prices.</p>' . "\n";
|
369 |
echo '<p>Custom Capabilities are an extension to a feature that already exists in WordPress. The <code>current_user_can()</code> function, can be used to test for these additional Capabilities that you allow. Whenever a Member completes the checkout process, after having purchased a Membership from you (one that included Custom Capabilities), s2Member will add those Custom Capabilities to the account for that specific Member.</p>' . "\n";
|
16 |
*
|
17 |
* @TODO Shortcode equivalents using [else] syntax.
|
18 |
*/
|
19 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
20 |
exit ("Do not access this file directly.");
|
21 |
|
22 |
if (!class_exists ("c_ws_plugin__s2member_menu_page_scripting"))
|
363 |
|
364 |
echo '<div class="ws-menu-page-section ws-plugin--s2member-custom-capabilities-section">' . "\n";
|
365 |
echo '<h3>Packaging Together Custom Capabilities w/ Membership</h3>' . "\n";
|
366 |
+
echo '<iframe width="560" height="315" src="https://www.youtube.com/embed/_F91xzrmq-Q" frameborder="0" allowscriptaccess="always" allowfullscreen="true" style="float:right; margin:0 0 20px 20px; width:300px; height:200px;"></iframe>' . "\n";
|
367 |
echo '<p>Using one of s2Member\'s Payment Button and/or Form Generators, you can add Custom Capabilities in comma-delimited format. s2Member builds upon existing functionality offered by <a href="http://codex.wordpress.org/Roles_and_Capabilities" target="_blank" rel="external">WordPress Roles/Capabilities</a>. s2Member supports Free Subscribers <em>(at Level #0)</em>, and several Primary Roles created by the s2Member plugin <em>(i.e. s2Member Levels 1-4, or up to the number of configured Levels)</em>. Each s2Member Level <em>(aka: s2Member Role)</em> provides the Capability <code>current_user_can("access_s2member_level0"), 1, 2, 3, 4</code>, where <code>access_s2member_level[0-4]</code> is the Capability associated with each Role; and Membership Levels provide incremental access <em>(i.e. Level #4 Members can also access content at Levels 0, 1, 2, and 3 beneath them)</em>. In short, these Level-based permissions are the default Capabilities that come with each Membership Level being sold on your site.</p>' . "\n";
|
368 |
echo '<p>Now, if you\'d like to package together some variations of each Membership Level that you\'re selling, you can! All you do is add <strong>Custom Capabilities</strong> whenever you create your Payment Button and/or Form Shortcode (<em>there is a field in the Button & Form Generators where you can enter Custom Capabilities</em>). You can sell Membership Packages that come with Custom Capabilities, and even with custom prices.</p>' . "\n";
|
369 |
echo '<p>Custom Capabilities are an extension to a feature that already exists in WordPress. The <code>current_user_can()</code> function, can be used to test for these additional Capabilities that you allow. Whenever a Member completes the checkout process, after having purchased a Membership from you (one that included Custom Capabilities), s2Member will add those Custom Capabilities to the account for that specific Member.</p>' . "\n";
|
includes/menu-pages/start.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
-
if
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_menu_page_start"))
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit ("Do not access this file directly.");
|
19 |
|
20 |
if (!class_exists ("c_ws_plugin__s2member_menu_page_start"))
|
includes/menu-pages/trk-ops.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
-
if(
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_menu_page_trk_ops"))
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 3.0
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_menu_page_trk_ops"))
|
includes/menu-pages/updates.inc.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 111205
|
16 |
*/
|
17 |
-
if(
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_menu_pages_updates"))
|
14 |
* @package s2Member\Menu_Pages
|
15 |
* @since 111205
|
16 |
*/
|
17 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
18 |
exit("Do not access this file directly.");
|
19 |
|
20 |
if(!class_exists("c_ws_plugin__s2member_menu_pages_updates"))
|
includes/syscon.inc.php
CHANGED
@@ -17,7 +17,7 @@
|
|
17 |
* @package s2Member
|
18 |
* @since 3.0
|
19 |
*/
|
20 |
-
if(
|
21 |
exit('Do not access this file directly.');
|
22 |
/*
|
23 |
Determine the directory.
|
@@ -85,7 +85,7 @@ $GLOBALS['WS_PLUGIN__']['s2member']['c']['recaptcha'] = array('public_key' => '6
|
|
85 |
/*
|
86 |
Configure the right menu options panel for s2Member.
|
87 |
*/
|
88 |
-
$GLOBALS['WS_PLUGIN__']['s2member']['c']['menu_pages'] = array('updates' => TRUE, 'upsell-pro' => TRUE, 'installation' => FALSE, 'tools' => FALSE, 'kb' => TRUE, 'videos' => TRUE, 'support' => TRUE, 'donations' => TRUE);
|
89 |
/*
|
90 |
Check if s2Member has been configured *should be set after the first config via options panel*.
|
91 |
*/
|
@@ -299,9 +299,10 @@ if(!function_exists('ws_plugin__s2member_configure_options_and_their_defaults'))
|
|
299 |
$default_options['file_download_stream_extensions'] = '';
|
300 |
$default_options['file_download_content_encodong_none'] = '0';
|
301 |
|
302 |
-
$default_options['amazon_s3_files_bucket']
|
303 |
-
$default_options['
|
304 |
-
$default_options['
|
|
|
305 |
|
306 |
$default_options['amazon_cf_files_private_key'] = '';
|
307 |
$default_options['amazon_cf_files_private_key_id'] = '';
|
17 |
* @package s2Member
|
18 |
* @since 3.0
|
19 |
*/
|
20 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
21 |
exit('Do not access this file directly.');
|
22 |
/*
|
23 |
Determine the directory.
|
85 |
/*
|
86 |
Configure the right menu options panel for s2Member.
|
87 |
*/
|
88 |
+
$GLOBALS['WS_PLUGIN__']['s2member']['c']['menu_pages'] = array('updates' => TRUE, 'upsell-pro' => TRUE, 'installation' => FALSE, 'tools' => FALSE, 'kb' => TRUE, 'videos' => TRUE, 'support' => TRUE, 'donations' => TRUE, 'beta' => TRUE);
|
89 |
/*
|
90 |
Check if s2Member has been configured *should be set after the first config via options panel*.
|
91 |
*/
|
299 |
$default_options['file_download_stream_extensions'] = '';
|
300 |
$default_options['file_download_content_encodong_none'] = '0';
|
301 |
|
302 |
+
$default_options['amazon_s3_files_bucket'] = '';
|
303 |
+
$default_options['amazon_s3_files_bucket_region'] = '';
|
304 |
+
$default_options['amazon_s3_files_access_key'] = '';
|
305 |
+
$default_options['amazon_s3_files_secret_key'] = '';
|
306 |
|
307 |
$default_options['amazon_cf_files_private_key'] = '';
|
308 |
$default_options['amazon_cf_files_private_key_id'] = '';
|
includes/templates/badges/s-badge.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
if(
|
3 |
exit("Do not access this file directly.");
|
4 |
|
5 |
switch('%%v%%')
|
1 |
<?php
|
2 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
3 |
exit("Do not access this file directly.");
|
4 |
|
5 |
switch('%%v%%')
|
includes/templates/buttons/paypal-cancellation-button.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
if
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
1 |
<?php
|
2 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
includes/templates/buttons/paypal-ccaps-checkout-button.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
if
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
1 |
<?php
|
2 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
includes/templates/buttons/paypal-checkout-button.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
if
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
1 |
<?php
|
2 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
includes/templates/buttons/paypal-sp-checkout-button.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
if
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
1 |
<?php
|
2 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
includes/templates/cfg-files/s2-cross-xml.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
-
if
|
3 |
-
exit(
|
4 |
?>
|
5 |
|
6 |
<?php echo '<?xml version="1.0"?>'."\n"; ?>
|
1 |
<?php
|
2 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
3 |
+
exit('Do not access this file directly.');
|
4 |
?>
|
5 |
|
6 |
<?php echo '<?xml version="1.0"?>'."\n"; ?>
|
includes/templates/cfg-files/s2member-files-no-gzip.php
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<?php
|
2 |
-
if
|
3 |
-
exit(
|
4 |
|
5 |
global /* A Multisite ``$base`` configuration? */ $base;
|
6 |
-
$ws_plugin__s2member_temp_s_base = (!empty($base)) ? $base : c_ws_plugin__s2member_utils_urls::parse_url (network_home_url (
|
7 |
// This works on Multisite installs too. The function ``network_home_url ()`` defaults to ``home_url ()`` on standard WordPress installs.
|
8 |
// Do NOT use ``site`` URL. Must use the `home` URL here, because that's what WordPress uses in its own `mod_rewrite` implementation.
|
9 |
?>
|
1 |
<?php
|
2 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
3 |
+
exit('Do not access this file directly.');
|
4 |
|
5 |
global /* A Multisite ``$base`` configuration? */ $base;
|
6 |
+
$ws_plugin__s2member_temp_s_base = (!empty($base)) ? $base : c_ws_plugin__s2member_utils_urls::parse_url (network_home_url ('/'), PHP_URL_PATH);
|
7 |
// This works on Multisite installs too. The function ``network_home_url ()`` defaults to ``home_url ()`` on standard WordPress installs.
|
8 |
// Do NOT use ``site`` URL. Must use the `home` URL here, because that's what WordPress uses in its own `mod_rewrite` implementation.
|
9 |
?>
|
includes/templates/cfg-files/s2member-files.php
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<?php
|
2 |
-
if
|
3 |
-
exit(
|
4 |
|
5 |
global /* A Multisite ``$base`` configuration? */ $base;
|
6 |
-
$ws_plugin__s2member_temp_s_base = (!empty($base)) ? $base : c_ws_plugin__s2member_utils_urls::parse_url (network_home_url (
|
7 |
// This works on Multisite installs too. The function ``network_home_url ()`` defaults to ``home_url ()`` on standard WordPress installs.
|
8 |
// Do NOT use ``site`` URL. Must use the `home` URL here, because that's what WordPress uses in its own `mod_rewrite` implementation.
|
9 |
?>
|
@@ -27,7 +27,7 @@ $ws_plugin__s2member_temp_s_base = (!empty($base)) ? $base : c_ws_plugin__s2memb
|
|
27 |
|
28 |
# Handle virtual directories, common on multisite networks.
|
29 |
RewriteCond %{ENV:s2member_file_download_wp_vdir_check} !^complete$
|
30 |
-
RewriteCond %{THE_REQUEST} ^(?:GET|HEAD)(?:[\ ]+)(?:<?php echo preg_quote ($ws_plugin__s2member_temp_s_base,
|
31 |
RewriteRule ^(.*)$ - [E=s2member_file_download_wp_vdir:,E=s2member_file_download_wp_vdir:%1,E=s2member_file_download_wp_vdir_check:complete]
|
32 |
|
33 |
# Handle streaming download requests via the rewrite engine.
|
@@ -111,7 +111,4 @@ $ws_plugin__s2member_temp_s_base = (!empty($base)) ? $base : c_ws_plugin__s2memb
|
|
111 |
</IfModule>
|
112 |
</IfModule>
|
113 |
|
114 |
-
# Disallow directory indexing here.
|
115 |
-
Options -Indexes
|
116 |
-
|
117 |
<?php unset($ws_plugin__s2member_temp_s_base); ?>
|
1 |
<?php
|
2 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
3 |
+
exit('Do not access this file directly.');
|
4 |
|
5 |
global /* A Multisite ``$base`` configuration? */ $base;
|
6 |
+
$ws_plugin__s2member_temp_s_base = (!empty($base)) ? $base : c_ws_plugin__s2member_utils_urls::parse_url (network_home_url ('/'), PHP_URL_PATH);
|
7 |
// This works on Multisite installs too. The function ``network_home_url ()`` defaults to ``home_url ()`` on standard WordPress installs.
|
8 |
// Do NOT use ``site`` URL. Must use the `home` URL here, because that's what WordPress uses in its own `mod_rewrite` implementation.
|
9 |
?>
|
27 |
|
28 |
# Handle virtual directories, common on multisite networks.
|
29 |
RewriteCond %{ENV:s2member_file_download_wp_vdir_check} !^complete$
|
30 |
+
RewriteCond %{THE_REQUEST} ^(?:GET|HEAD)(?:[\ ]+)(?:<?php echo preg_quote ($ws_plugin__s2member_temp_s_base, ' '); ?>)([_0-9a-zA-Z\-]+/)(?:wp-content/)
|
31 |
RewriteRule ^(.*)$ - [E=s2member_file_download_wp_vdir:,E=s2member_file_download_wp_vdir:%1,E=s2member_file_download_wp_vdir_check:complete]
|
32 |
|
33 |
# Handle streaming download requests via the rewrite engine.
|
111 |
</IfModule>
|
112 |
</IfModule>
|
113 |
|
|
|
|
|
|
|
114 |
<?php unset($ws_plugin__s2member_temp_s_base); ?>
|
includes/templates/cfg-files/s2member-logs.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
-
if
|
3 |
-
exit(
|
4 |
?>
|
5 |
|
6 |
<IfModule authz_core_module>
|
@@ -8,7 +8,4 @@ if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
|
8 |
</IfModule>
|
9 |
<IfModule !authz_core_module>
|
10 |
deny from all
|
11 |
-
</IfModule>
|
12 |
-
|
13 |
-
# Disallow directory indexing here.
|
14 |
-
Options -Indexes
|
1 |
<?php
|
2 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
3 |
+
exit('Do not access this file directly.');
|
4 |
?>
|
5 |
|
6 |
<IfModule authz_core_module>
|
8 |
</IfModule>
|
9 |
<IfModule !authz_core_module>
|
10 |
deny from all
|
11 |
+
</IfModule>
|
|
|
|
|
|
includes/templates/cfg-files/s2o-mu-plugins.php
CHANGED
@@ -1,36 +1,36 @@
|
|
1 |
<?php
|
2 |
-
if
|
3 |
-
exit(
|
4 |
?>
|
5 |
|
6 |
// s2Member-only mode. Only load (o)nly/(a)ll files.
|
7 |
|
8 |
-
if
|
9 |
-
include_once WPMU_PLUGIN_DIR
|
10 |
|
11 |
-
else if
|
12 |
-
include_once WPMU_PLUGIN_DIR
|
13 |
|
14 |
// --------------------------------------------------
|
15 |
|
16 |
-
if
|
17 |
-
include_once WPMU_PLUGIN_DIR
|
18 |
|
19 |
-
else if
|
20 |
-
include_once WPMU_PLUGIN_DIR
|
21 |
|
22 |
// --------------------------------------------------
|
23 |
|
24 |
-
if
|
25 |
-
include_once WPMU_PLUGIN_DIR
|
26 |
|
27 |
-
else if
|
28 |
-
include_once WPMU_PLUGIN_DIR
|
29 |
|
30 |
// --------------------------------------------------
|
31 |
|
32 |
-
if
|
33 |
-
include_once WPMU_PLUGIN_DIR
|
34 |
|
35 |
-
else if
|
36 |
-
include_once WPMU_PLUGIN_DIR
|
1 |
<?php
|
2 |
+
if(!defined('_WS_PLUGIN__S2MEMBER_ONLY'))
|
3 |
+
exit('Do not access this file directly.');
|
4 |
?>
|
5 |
|
6 |
// s2Member-only mode. Only load (o)nly/(a)ll files.
|
7 |
|
8 |
+
if(is_file(WPMU_PLUGIN_DIR.'/s2member-o-hacks.php'))
|
9 |
+
include_once WPMU_PLUGIN_DIR.'/s2member-o-hacks.php';
|
10 |
|
11 |
+
else if(is_file(WPMU_PLUGIN_DIR.'/s2-o-hacks.php'))
|
12 |
+
include_once WPMU_PLUGIN_DIR.'/s2-o-hacks.php';
|
13 |
|
14 |
// --------------------------------------------------
|
15 |
|
16 |
+
if(is_file(WPMU_PLUGIN_DIR.'/s2member-a-hacks.php'))
|
17 |
+
include_once WPMU_PLUGIN_DIR.'/s2member-a-hacks.php';
|
18 |
|
19 |
+
else if(is_file(WPMU_PLUGIN_DIR.'/s2-a-hacks.php'))
|
20 |
+
include_once WPMU_PLUGIN_DIR.'/s2-a-hacks.php';
|
21 |
|
22 |
// --------------------------------------------------
|
23 |
|
24 |
+
if(is_file(WPMU_PLUGIN_DIR.'/s2member-o.php'))
|
25 |
+
include_once WPMU_PLUGIN_DIR.'/s2member-o.php';
|
26 |
|
27 |
+
else if(is_file(WPMU_PLUGIN_DIR.'/s2-o.php'))
|
28 |
+
include_once WPMU_PLUGIN_DIR.'/s2-o.php';
|
29 |
|
30 |
// --------------------------------------------------
|
31 |
|
32 |
+
if(is_file(WPMU_PLUGIN_DIR.'/s2member-a.php'))
|
33 |
+
include_once WPMU_PLUGIN_DIR.'/s2member-a.php';
|
34 |
|
35 |
+
else if(is_file(WPMU_PLUGIN_DIR.'/s2-a.php'))
|
36 |
+
include_once WPMU_PLUGIN_DIR.'/s2-a.php';
|
includes/templates/cfg-files/s2o-nw-plugins.php
CHANGED
@@ -1,21 +1,21 @@
|
|
1 |
<?php
|
2 |
-
if
|
3 |
-
exit(
|
4 |
?>
|
5 |
|
6 |
// s2Member-only mode. Only load the s2Member plugin, exclude all others.
|
7 |
|
8 |
-
$o_ws_plugin__s2member
|
9 |
-
$o_ws_plugin__s2member_is_loaded_already =
|
10 |
-
$o_ws_plugin__plugins_s2member
|
11 |
|
12 |
-
if
|
13 |
include_once $o_ws_plugin__s2member; // s2Member in a strange location?
|
14 |
|
15 |
-
else if
|
16 |
include_once $o_ws_plugin__plugins_s2member;
|
17 |
|
18 |
-
else if
|
19 |
include_once $o_ws_plugin__s2member;
|
20 |
|
21 |
unset($o_ws_plugin__plugins_s2member, $o_ws_plugin__s2member_is_loaded_already, $o_ws_plugin__s2member);
|
1 |
<?php
|
2 |
+
if(!defined('_WS_PLUGIN__S2MEMBER_ONLY'))
|
3 |
+
exit('Do not access this file directly.');
|
4 |
?>
|
5 |
|
6 |
// s2Member-only mode. Only load the s2Member plugin, exclude all others.
|
7 |
|
8 |
+
$o_ws_plugin__s2member = preg_replace('/-o\.php$/', '.php', __FILE__);
|
9 |
+
$o_ws_plugin__s2member_is_loaded_already = defined('WS_PLUGIN__S2MEMBER_VERSION') ? TRUE : FALSE;
|
10 |
+
$o_ws_plugin__plugins_s2member = WP_PLUGIN_DIR.'/'.basename(dirname($o_ws_plugin__s2member)).'/'.basename($o_ws_plugin__s2member);
|
11 |
|
12 |
+
if((!is_file($o_ws_plugin__plugins_s2member) || @is_link($o_ws_plugin__plugins_s2member)) && is_file($o_ws_plugin__s2member) && !$o_ws_plugin__s2member_is_loaded_already)
|
13 |
include_once $o_ws_plugin__s2member; // s2Member in a strange location?
|
14 |
|
15 |
+
else if(in_array($o_ws_plugin__plugins_s2member, wp_get_active_network_plugins()) && is_file($o_ws_plugin__plugins_s2member) && !$o_ws_plugin__s2member_is_loaded_already)
|
16 |
include_once $o_ws_plugin__plugins_s2member;
|
17 |
|
18 |
+
else if(apply_filters('ws_plugin_s2member_o_force', FALSE) && !$o_ws_plugin__s2member_is_loaded_already) // Off by default. Force s2Member to load?
|
19 |
include_once $o_ws_plugin__s2member;
|
20 |
|
21 |
unset($o_ws_plugin__plugins_s2member, $o_ws_plugin__s2member_is_loaded_already, $o_ws_plugin__s2member);
|
includes/templates/cfg-files/s2o-st-plugins.php
CHANGED
@@ -1,21 +1,21 @@
|
|
1 |
<?php
|
2 |
-
if
|
3 |
-
exit(
|
4 |
?>
|
5 |
|
6 |
// s2Member-only mode. Only load the s2Member plugin, exclude all others.
|
7 |
|
8 |
-
$o_ws_plugin__s2member
|
9 |
-
$o_ws_plugin__s2member_is_loaded_already =
|
10 |
-
$o_ws_plugin__plugins_s2member
|
11 |
|
12 |
-
if
|
13 |
include_once $o_ws_plugin__s2member; // s2Member in a strange location?
|
14 |
|
15 |
-
else if
|
16 |
include_once $o_ws_plugin__plugins_s2member;
|
17 |
|
18 |
-
else if
|
19 |
include_once $o_ws_plugin__s2member;
|
20 |
|
21 |
unset($o_ws_plugin__plugins_s2member, $o_ws_plugin__s2member_is_loaded_already, $o_ws_plugin__s2member);
|
1 |
<?php
|
2 |
+
if(!defined('_WS_PLUGIN__S2MEMBER_ONLY'))
|
3 |
+
exit('Do not access this file directly.');
|
4 |
?>
|
5 |
|
6 |
// s2Member-only mode. Only load the s2Member plugin, exclude all others.
|
7 |
|
8 |
+
$o_ws_plugin__s2member = preg_replace('/-o\.php$/', '.php', __FILE__);
|
9 |
+
$o_ws_plugin__s2member_is_loaded_already = defined('WS_PLUGIN__S2MEMBER_VERSION') ? TRUE : FALSE;
|
10 |
+
$o_ws_plugin__plugins_s2member = WP_PLUGIN_DIR.'/'.basename(dirname($o_ws_plugin__s2member)).'/'.basename($o_ws_plugin__s2member);
|
11 |
|
12 |
+
if((!is_file($o_ws_plugin__plugins_s2member) || @is_link($o_ws_plugin__plugins_s2member)) && is_file($o_ws_plugin__s2member) && !$o_ws_plugin__s2member_is_loaded_already)
|
13 |
include_once $o_ws_plugin__s2member; // s2Member in a strange location?
|
14 |
|
15 |
+
else if(in_array($o_ws_plugin__plugins_s2member, wp_get_active_and_valid_plugins()) && is_file($o_ws_plugin__plugins_s2member) && !$o_ws_plugin__s2member_is_loaded_already)
|
16 |
include_once $o_ws_plugin__plugins_s2member;
|
17 |
|
18 |
+
else if(apply_filters('ws_plugin_s2member_o_force', FALSE) && !$o_ws_plugin__s2member_is_loaded_already) // Off by default. Force s2Member to load?
|
19 |
include_once $o_ws_plugin__s2member;
|
20 |
|
21 |
unset($o_ws_plugin__plugins_s2member, $o_ws_plugin__s2member_is_loaded_already, $o_ws_plugin__s2member);
|
includes/templates/cfg-files/s2o-th-funcs.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
-
if
|
3 |
-
exit(
|
4 |
?>
|
5 |
|
6 |
// s2Member-only mode. Do NOT load theme functions, exclude all themes.
|
1 |
<?php
|
2 |
+
if(!defined('_WS_PLUGIN__S2MEMBER_ONLY'))
|
3 |
+
exit('Do not access this file directly.');
|
4 |
?>
|
5 |
|
6 |
// s2Member-only mode. Do NOT load theme functions, exclude all themes.
|
includes/templates/errors/ip-restrictions.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
if
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
1 |
<?php
|
2 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
includes/templates/options/paypal-currencies.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
if
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
1 |
<?php
|
2 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
includes/templates/options/paypal-membership-ccap-terms.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
if
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
1 |
<?php
|
2 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
includes/templates/options/paypal-membership-regular-terms.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
if
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
1 |
<?php
|
2 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
includes/templates/options/paypal-membership-trial-terms.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
if
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
1 |
<?php
|
2 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
includes/templates/options/paypal-sp-hours.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
if
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
1 |
<?php
|
2 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
includes/templates/players/jwplayer-v6-rtmp-only.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
if
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
1 |
<?php
|
2 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
includes/templates/players/jwplayer-v6-rtmp.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
if
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
1 |
<?php
|
2 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
includes/templates/players/jwplayer-v6.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
if
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
1 |
<?php
|
2 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
includes/templates/returns/default-return.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
if
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
1 |
<?php
|
2 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
includes/templates/shortcodes/paypal-cancellation-button-shortcode.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
if
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
1 |
<?php
|
2 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
includes/templates/shortcodes/paypal-ccaps-checkout-button-shortcode.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
if
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
1 |
<?php
|
2 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
includes/templates/shortcodes/paypal-checkout-button-shortcode.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
if
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
1 |
<?php
|
2 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
includes/templates/shortcodes/paypal-sp-checkout-button-shortcode.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
if
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
1 |
<?php
|
2 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
3 |
exit("Do not access this file directly.");
|
4 |
?>
|
5 |
|
includes/translations/s2member.pot
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
# This file is distributed under the same license as the package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version:
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/s2member\n"
|
7 |
-
"POT-Creation-Date: 2015-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -12,316 +12,287 @@ msgstr ""
|
|
12 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
13 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
14 |
|
15 |
-
#:
|
16 |
msgctxt "s2member-front"
|
17 |
msgid "Max failed logins. Please wait %s and try again."
|
18 |
msgstr ""
|
19 |
|
20 |
-
#:
|
21 |
-
#:
|
22 |
-
#:
|
23 |
-
#:
|
24 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-checkout-form.php:66
|
25 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-registration-form.php:47
|
26 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:66
|
27 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-checkout-form.php:66
|
28 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-registration-form.php:47
|
29 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:66
|
30 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-checkout-form.php:66
|
31 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-registration-form.php:47
|
32 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-sp-checkout-form.php:66
|
33 |
msgctxt "s2member-front"
|
34 |
msgid "First Name"
|
35 |
msgstr ""
|
36 |
|
37 |
-
#:
|
38 |
-
#:
|
39 |
-
#:
|
40 |
-
#:
|
41 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-checkout-form.php:72
|
42 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-registration-form.php:53
|
43 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:72
|
44 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-checkout-form.php:72
|
45 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-registration-form.php:53
|
46 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:72
|
47 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-checkout-form.php:72
|
48 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-registration-form.php:53
|
49 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-sp-checkout-form.php:72
|
50 |
msgctxt "s2member-front"
|
51 |
msgid "Last Name"
|
52 |
msgstr ""
|
53 |
|
54 |
-
#:
|
55 |
-
#:
|
56 |
-
#:
|
57 |
-
#:
|
58 |
-
#:
|
59 |
-
#:
|
60 |
msgctxt "s2member-front"
|
61 |
msgid "Please type your Password twice to confirm."
|
62 |
msgstr ""
|
63 |
|
64 |
-
#:
|
65 |
msgctxt "s2member-front"
|
66 |
msgid "Password (please type it twice)"
|
67 |
msgstr ""
|
68 |
|
69 |
-
#:
|
70 |
-
#:
|
71 |
-
#:
|
72 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-checkout-form.php:94
|
73 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-registration-form.php:75
|
74 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-checkout-form.php:94
|
75 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-registration-form.php:75
|
76 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-checkout-form.php:94
|
77 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-registration-form.php:75
|
78 |
msgctxt "s2member-front"
|
79 |
msgid "password strength indicator"
|
80 |
msgstr ""
|
81 |
|
82 |
-
#:
|
83 |
-
#:
|
84 |
msgctxt "s2member-front"
|
85 |
msgid "Invalid data type. Expecting a string."
|
86 |
msgstr ""
|
87 |
|
88 |
-
#:
|
89 |
msgctxt "s2member-front"
|
90 |
msgid "Invalid data type. Expecting an array."
|
91 |
msgstr ""
|
92 |
|
93 |
-
#:
|
94 |
-
#:
|
95 |
-
#:
|
96 |
msgctxt "s2member-front"
|
97 |
msgid "This is a required field, please try again."
|
98 |
msgstr ""
|
99 |
|
100 |
-
#:
|
101 |
-
#:
|
102 |
msgctxt "s2member-front"
|
103 |
msgid "Required. This box must be checked."
|
104 |
msgstr ""
|
105 |
|
106 |
-
#:
|
107 |
-
#:
|
108 |
msgctxt "s2member-front"
|
109 |
msgid "Please check at least one of the boxes."
|
110 |
msgstr ""
|
111 |
|
112 |
-
#:
|
113 |
-
#:
|
114 |
-
#:
|
115 |
msgctxt "s2member-front"
|
116 |
msgid "Please select one of the options."
|
117 |
msgstr ""
|
118 |
|
119 |
-
#:
|
120 |
-
#:
|
121 |
msgctxt "s2member-front"
|
122 |
msgid "Please select at least one of the options."
|
123 |
msgstr ""
|
124 |
|
125 |
-
#:
|
126 |
-
#:
|
127 |
msgctxt "s2member-front"
|
128 |
msgid "Must be numeric (with or without decimals, commas allowed)."
|
129 |
msgstr ""
|
130 |
|
131 |
-
#:
|
132 |
-
#:
|
133 |
msgctxt "s2member-front"
|
134 |
msgid "Must be numeric (with or without decimals, no commas)."
|
135 |
msgstr ""
|
136 |
|
137 |
-
#:
|
138 |
-
#:
|
139 |
msgctxt "s2member-front"
|
140 |
msgid "Must be an integer (a whole number, without any decimals)."
|
141 |
msgstr ""
|
142 |
|
143 |
-
#:
|
144 |
msgctxt "s2member-front"
|
145 |
msgid "Must be an integer > 0 (whole number, no decimals, greater than 0)."
|
146 |
msgstr ""
|
147 |
|
148 |
-
#:
|
149 |
-
#:
|
150 |
msgctxt "s2member-front"
|
151 |
msgid "Must be a float (floating point number, decimals required)."
|
152 |
msgstr ""
|
153 |
|
154 |
-
#:
|
155 |
msgctxt "s2member-front"
|
156 |
msgid "Must be a float > 0 (floating point number, decimals required, greater than 0)."
|
157 |
msgstr ""
|
158 |
|
159 |
-
#:
|
160 |
-
#:
|
161 |
msgctxt "s2member-front"
|
162 |
msgid "Must be a date (required date format: dd/mm/yyyy)."
|
163 |
msgstr ""
|
164 |
|
165 |
-
#:
|
166 |
-
#:
|
167 |
msgctxt "s2member-front"
|
168 |
msgid "Must be a valid email address."
|
169 |
msgstr ""
|
170 |
|
171 |
-
#:
|
172 |
msgctxt "s2member-front"
|
173 |
msgid "Please use a personal email address. Addresses like <%s@> are problematic."
|
174 |
msgstr ""
|
175 |
|
176 |
-
#:
|
177 |
-
#:
|
178 |
msgctxt "s2member-front"
|
179 |
msgid "Must be a full URL (starting with http or https)."
|
180 |
msgstr ""
|
181 |
|
182 |
-
#:
|
183 |
-
#:
|
184 |
msgctxt "s2member-front"
|
185 |
msgid "Must be a domain name (domain name only, without http)."
|
186 |
msgstr ""
|
187 |
|
188 |
-
#:
|
189 |
-
#:
|
190 |
msgctxt "s2member-front"
|
191 |
msgid "Must be a phone # (10 digits w/possible hyphens, spaces, brackets)."
|
192 |
msgstr ""
|
193 |
|
194 |
-
#:
|
195 |
-
#:
|
196 |
msgctxt "s2member-front"
|
197 |
msgid "Must be a US zipcode (5-9 digits w/ possible hyphen)."
|
198 |
msgstr ""
|
199 |
|
200 |
-
#:
|
201 |
msgctxt "s2member-front"
|
202 |
msgid "Must be a Canadian zipcode (6 alpha-numerics w/ possible space)."
|
203 |
msgstr ""
|
204 |
|
205 |
-
#:
|
206 |
-
#:
|
207 |
msgctxt "s2member-front"
|
208 |
msgid "Must be a zipcode (either a US or Canadian zipcode)."
|
209 |
msgstr ""
|
210 |
|
211 |
-
#:
|
212 |
msgctxt "s2member-front"
|
213 |
msgid "Please use alphanumerics, spaces & punctuation only."
|
214 |
msgstr ""
|
215 |
|
216 |
-
#:
|
217 |
msgctxt "s2member-front"
|
218 |
msgid "Please use alphanumerics & spaces only."
|
219 |
msgstr ""
|
220 |
|
221 |
-
#:
|
222 |
msgctxt "s2member-front"
|
223 |
msgid "Please use alphanumerics & punctuation only (no spaces)."
|
224 |
msgstr ""
|
225 |
|
226 |
-
#:
|
227 |
-
#:
|
228 |
msgctxt "s2member-front"
|
229 |
msgid "Please use alphanumerics only (no spaces/punctuation)."
|
230 |
msgstr ""
|
231 |
|
232 |
-
#:
|
233 |
-
#:
|
234 |
msgctxt "s2member-front"
|
235 |
msgid "Please use alphabetics only (no digits/spaces/punctuation)."
|
236 |
msgstr ""
|
237 |
|
238 |
-
#:
|
239 |
-
#:
|
240 |
msgctxt "s2member-front"
|
241 |
msgid "Please use numeric digits only."
|
242 |
msgstr ""
|
243 |
|
244 |
-
#:
|
245 |
-
#:
|
246 |
-
#:
|
247 |
-
#: s2member/includes/s2member.js:462
|
248 |
msgctxt "s2member-front"
|
249 |
msgid "digit"
|
250 |
msgstr ""
|
251 |
|
252 |
-
#:
|
253 |
-
#:
|
254 |
-
#:
|
255 |
-
#: s2member/includes/s2member.js:462
|
256 |
msgctxt "s2member-front"
|
257 |
msgid "digits"
|
258 |
msgstr ""
|
259 |
|
260 |
-
#:
|
261 |
-
#:
|
262 |
-
#:
|
263 |
-
#: s2member/includes/s2member.js:462
|
264 |
msgctxt "s2member-front"
|
265 |
msgid "character"
|
266 |
msgstr ""
|
267 |
|
268 |
-
#:
|
269 |
-
#:
|
270 |
-
#:
|
271 |
-
#: s2member/includes/s2member.js:462
|
272 |
msgctxt "s2member-front"
|
273 |
msgid "characters"
|
274 |
msgstr ""
|
275 |
|
276 |
-
#:
|
277 |
-
#:
|
278 |
msgctxt "s2member-front"
|
279 |
msgid "Must be exactly %s %s."
|
280 |
msgstr ""
|
281 |
|
282 |
-
#:
|
283 |
-
#:
|
284 |
msgctxt "s2member-front"
|
285 |
msgid "Must be at least %s %s."
|
286 |
msgstr ""
|
287 |
|
288 |
-
#:
|
289 |
msgctxt "s2member-front"
|
290 |
msgid "as a Member"
|
291 |
msgstr ""
|
292 |
|
293 |
-
#:
|
294 |
-
#: s2member/includes/classes/files-in.inc.php:265
|
295 |
msgctxt "s2member-front"
|
296 |
msgid "<strong>404: Sorry, file not found.</strong> Please contact Support for assistance."
|
297 |
msgstr ""
|
298 |
|
299 |
-
#:
|
300 |
msgctxt "s2member-front"
|
301 |
msgid "<strong>503 (Invalid Key):</strong> Sorry, your access to this file has expired. Please contact Support for assistance."
|
302 |
msgstr ""
|
303 |
|
304 |
-
#:
|
305 |
msgctxt "s2member-front"
|
306 |
msgid "<strong>503: Basic File Downloads are NOT enabled yet.</strong> Please contact Support for assistance. If you are the site owner, please configure: <code>s2Member -› General Options -› Membership Options Page</code>."
|
307 |
msgstr ""
|
308 |
|
309 |
-
#:
|
310 |
msgctxt "s2member-front"
|
311 |
msgid "<strong>503: Basic File Downloads are NOT enabled yet.</strong> Please contact Support for assistance. If you are the site owner, please configure: <code>s2Member -› Download Options -› Basic Download Restrictions</code>."
|
312 |
msgstr ""
|
313 |
|
314 |
-
#:
|
315 |
msgctxt "s2member-front"
|
316 |
msgid "<strong>503: Access denied.</strong> Invalid File Download specs."
|
317 |
msgstr ""
|
318 |
|
319 |
-
#:
|
320 |
msgctxt "s2member-front"
|
321 |
msgid "Members Only"
|
322 |
msgstr ""
|
323 |
|
324 |
-
#:
|
325 |
msgctxt "s2member-front"
|
326 |
msgid "<strong>401:</strong> Sorry, access denied."
|
327 |
msgstr ""
|
@@ -329,12 +300,12 @@ msgstr ""
|
|
329 |
#. translators: In this translation, `%s` may be filled with an English
|
330 |
#. message, which comes from the Amazon S3 API call. Feel free to exclude `%s`
|
331 |
#. if you like.
|
332 |
-
#:
|
333 |
msgctxt "s2member-admin"
|
334 |
msgid "Unable to update existing Amazon S3 Cross-Domain Policy. %s"
|
335 |
msgstr ""
|
336 |
|
337 |
-
#:
|
338 |
msgctxt "s2member-admin"
|
339 |
msgid "Unable to update existing Amazon S3 Cross-Domain Policy. Connection failed."
|
340 |
msgstr ""
|
@@ -342,12 +313,12 @@ msgstr ""
|
|
342 |
#. translators: In this translation, `%s` may be filled with an English
|
343 |
#. message, which comes from the Amazon S3 API call. Feel free to exclude `%s`
|
344 |
#. if you like.
|
345 |
-
#:
|
346 |
msgctxt "s2member-admin"
|
347 |
msgid "Unable to update existing Amazon S3 Bucket Policy. %s"
|
348 |
msgstr ""
|
349 |
|
350 |
-
#:
|
351 |
msgctxt "s2member-admin"
|
352 |
msgid "Unable to update existing Amazon S3 Bucket Policy. Connection failed."
|
353 |
msgstr ""
|
@@ -355,17 +326,17 @@ msgstr ""
|
|
355 |
#. translators: In this translation, `%s` may be filled with an English
|
356 |
#. message, which comes from the Amazon S3 API call. Feel free to exclude `%s`
|
357 |
#. if you like.
|
358 |
-
#:
|
359 |
msgctxt "s2member-admin"
|
360 |
msgid "Unable to update existing Amazon S3 Bucket ACLs. %s"
|
361 |
msgstr ""
|
362 |
|
363 |
-
#:
|
364 |
msgctxt "s2member-admin"
|
365 |
msgid "Unable to update existing Amazon S3 Bucket ACLs. Connection failed."
|
366 |
msgstr ""
|
367 |
|
368 |
-
#:
|
369 |
msgctxt "s2member-admin"
|
370 |
msgid "Unable to acquire/read existing Amazon S3 Bucket ACLs. Unexpected response."
|
371 |
msgstr ""
|
@@ -373,22 +344,22 @@ msgstr ""
|
|
373 |
#. translators: In this translation, `%s` may be filled with an English
|
374 |
#. message, which comes from the Amazon S3 API call. Feel free to exclude `%s`
|
375 |
#. if you like.
|
376 |
-
#:
|
377 |
msgctxt "s2member-admin"
|
378 |
msgid "Unable to acquire existing Amazon S3 Bucket ACLs. %s"
|
379 |
msgstr ""
|
380 |
|
381 |
-
#:
|
382 |
msgctxt "s2member-admin"
|
383 |
msgid "Unable to acquire existing Amazon S3 Bucket ACLs. Connection failed."
|
384 |
msgstr ""
|
385 |
|
386 |
-
#:
|
387 |
msgctxt "s2member-admin"
|
388 |
msgid "Unable to auto-configure existing Amazon S3 Bucket ACLs. Incomplete Amazon S3 configuration options. Missing one of: Amazon S3 Bucket, Access Key, or Secret Key."
|
389 |
msgstr ""
|
390 |
|
391 |
-
#:
|
392 |
msgctxt "s2member-admin"
|
393 |
msgid "Unable to delete existing Amazon CloudFront Downloads Distro. Still in a `pending` state. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
|
394 |
msgstr ""
|
@@ -396,12 +367,12 @@ msgstr ""
|
|
396 |
#. translators: In this translation, `%s` may be filled with an English
|
397 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
398 |
#. exclude `%s` if you like.
|
399 |
-
#:
|
400 |
msgctxt "s2member-admin"
|
401 |
msgid "Unable to delete existing Amazon CloudFront Downloads Distro. %s"
|
402 |
msgstr ""
|
403 |
|
404 |
-
#:
|
405 |
msgctxt "s2member-admin"
|
406 |
msgid "Unable to delete existing Amazon CloudFront Streaming Distro. Still in a `pending` state. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
|
407 |
msgstr ""
|
@@ -409,7 +380,7 @@ msgstr ""
|
|
409 |
#. translators: In this translation, `%s` may be filled with an English
|
410 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
411 |
#. exclude `%s` if you like.
|
412 |
-
#:
|
413 |
msgctxt "s2member-admin"
|
414 |
msgid "Unable to delete existing Amazon CloudFront Streaming Distro. %s"
|
415 |
msgstr ""
|
@@ -417,8 +388,8 @@ msgstr ""
|
|
417 |
#. translators: In this translation, `%s` may be filled with an English
|
418 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
419 |
#. exclude `%s` if you like.
|
420 |
-
#:
|
421 |
-
#:
|
422 |
msgctxt "s2member-admin"
|
423 |
msgid "Unable to delete existing Amazon CloudFront Origin Access Identity. %s"
|
424 |
msgstr ""
|
@@ -426,12 +397,12 @@ msgstr ""
|
|
426 |
#. translators: In this translation, `%s` may be filled with an English
|
427 |
#. message, which comes from the Amazon S3 API call. Feel free to exclude `%s`
|
428 |
#. if you like.
|
429 |
-
#:
|
430 |
msgctxt "s2member-admin"
|
431 |
msgid "Unable to update existing Amazon S3 ACLs. %s"
|
432 |
msgstr ""
|
433 |
|
434 |
-
#:
|
435 |
msgctxt "s2member-admin"
|
436 |
msgid "Unable to update existing Amazon S3 ACLs. Connection failed."
|
437 |
msgstr ""
|
@@ -439,14 +410,14 @@ msgstr ""
|
|
439 |
#. translators: In this translation, `%s` may be filled with an English
|
440 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
441 |
#. exclude `%s` if you like.
|
442 |
-
#:
|
443 |
-
#:
|
444 |
msgctxt "s2member-admin"
|
445 |
msgid "Unable to create Amazon CloudFront Streaming Distro. %s"
|
446 |
msgstr ""
|
447 |
|
448 |
-
#:
|
449 |
-
#:
|
450 |
msgctxt "s2member-admin"
|
451 |
msgid "Unable to create Amazon CloudFront Streaming Distro. Connection failed."
|
452 |
msgstr ""
|
@@ -454,14 +425,14 @@ msgstr ""
|
|
454 |
#. translators: In this translation, `%s` may be filled with an English
|
455 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
456 |
#. exclude `%s` if you like.
|
457 |
-
#:
|
458 |
-
#:
|
459 |
msgctxt "s2member-admin"
|
460 |
msgid "Unable to create Amazon CloudFront Downloads Distro. %s"
|
461 |
msgstr ""
|
462 |
|
463 |
-
#:
|
464 |
-
#:
|
465 |
msgctxt "s2member-admin"
|
466 |
msgid "Unable to create Amazon CloudFront Downloads Distro. Connection failed."
|
467 |
msgstr ""
|
@@ -469,19 +440,19 @@ msgstr ""
|
|
469 |
#. translators: In this translation, `%s` may be filled with an English
|
470 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
471 |
#. exclude `%s` if you like.
|
472 |
-
#:
|
473 |
-
#:
|
474 |
msgctxt "s2member-admin"
|
475 |
msgid "Unable to create Amazon CloudFront Origin Access Identity. %s"
|
476 |
msgstr ""
|
477 |
|
478 |
-
#:
|
479 |
-
#:
|
480 |
msgctxt "s2member-admin"
|
481 |
msgid "Unable to create Amazon CloudFront Origin Access Identity. Connection failed."
|
482 |
msgstr ""
|
483 |
|
484 |
-
#:
|
485 |
msgctxt "s2member-admin"
|
486 |
msgid "Unable to clear existing Amazon CloudFront Origin Access Identity."
|
487 |
msgstr ""
|
@@ -489,19 +460,19 @@ msgstr ""
|
|
489 |
#. translators: In this translation, `%s` may be filled with an English
|
490 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
491 |
#. exclude `%s` if you like.
|
492 |
-
#:
|
493 |
-
#:
|
494 |
msgctxt "s2member-admin"
|
495 |
msgid "Unable to acquire existing Amazon CloudFront Origin Access Identity. %s"
|
496 |
msgstr ""
|
497 |
|
498 |
-
#:
|
499 |
-
#:
|
500 |
msgctxt "s2member-admin"
|
501 |
msgid "Unable to acquire existing Amazon CloudFront Origin Access Identity. Connection failed."
|
502 |
msgstr ""
|
503 |
|
504 |
-
#:
|
505 |
msgctxt "s2member-admin"
|
506 |
msgid "Unable to clear existing Amazon CloudFront Streaming Distro."
|
507 |
msgstr ""
|
@@ -509,17 +480,17 @@ msgstr ""
|
|
509 |
#. translators: In this translation, `%s` may be filled with an English
|
510 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
511 |
#. exclude `%s` if you like.
|
512 |
-
#:
|
513 |
msgctxt "s2member-admin"
|
514 |
msgid "Unable to acquire existing Amazon CloudFront Streaming Distro. %s"
|
515 |
msgstr ""
|
516 |
|
517 |
-
#:
|
518 |
msgctxt "s2member-admin"
|
519 |
msgid "Unable to acquire existing Amazon CloudFront Streaming Distro. Connection failed."
|
520 |
msgstr ""
|
521 |
|
522 |
-
#:
|
523 |
msgctxt "s2member-admin"
|
524 |
msgid "Unable to clear existing Amazon CloudFront Downloads Distro."
|
525 |
msgstr ""
|
@@ -527,22 +498,22 @@ msgstr ""
|
|
527 |
#. translators: In this translation, `%s` may be filled with an English
|
528 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
529 |
#. exclude `%s` if you like.
|
530 |
-
#:
|
531 |
msgctxt "s2member-admin"
|
532 |
msgid "Unable to acquire existing Amazon CloudFront Downloads Distro. %s"
|
533 |
msgstr ""
|
534 |
|
535 |
-
#:
|
536 |
msgctxt "s2member-admin"
|
537 |
msgid "Unable to acquire existing Amazon CloudFront Downloads Distro. Connection failed."
|
538 |
msgstr ""
|
539 |
|
540 |
-
#:
|
541 |
msgctxt "s2member-admin"
|
542 |
msgid "Unable to auto-configure Amazon CloudFront Distros. Incomplete Amazon CloudFront configuration options. Missing of one: Amazon CloudFront Private Key-Pair-ID, or Private Key file contents."
|
543 |
msgstr ""
|
544 |
|
545 |
-
#:
|
546 |
msgctxt "s2member-admin"
|
547 |
msgid "Unable to auto-configure Amazon S3/CloudFront Distros. Incomplete Amazon S3 configuration options. Missing one of: Amazon S3 Bucket, Access Key, or Secret Key. You must provide s2Member with an Amazon S3 configuration before enabling CloudFront."
|
548 |
msgstr ""
|
@@ -550,34 +521,34 @@ msgstr ""
|
|
550 |
#. translators: In this translation, `%s` may be filled with an English
|
551 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
552 |
#. exclude `%s` if you like.
|
553 |
-
#:
|
554 |
msgctxt "s2member-admin"
|
555 |
msgid "Existing Amazon CloudFront Origin Access Identity NOT found. %s"
|
556 |
msgstr ""
|
557 |
|
558 |
-
#:
|
559 |
msgctxt "s2member-admin"
|
560 |
msgid "Unable to acquire existing Amazon CloudFront Origin Access Identity. Invalid Access ID."
|
561 |
msgstr ""
|
562 |
|
563 |
-
#:
|
564 |
msgctxt "s2member-admin"
|
565 |
msgid "Unable to delete existing Amazon CloudFront Origin Access Identity. Connection failed."
|
566 |
msgstr ""
|
567 |
|
568 |
-
#:
|
569 |
msgctxt "s2member-admin"
|
570 |
msgid "Unable to delete existing Amazon CloudFront Origin Access Identity. Invalid Access ID, ETag, or XML config."
|
571 |
msgstr ""
|
572 |
|
573 |
-
#:
|
574 |
-
#:
|
575 |
-
#:
|
576 |
msgctxt "s2member-admin"
|
577 |
msgid "Created by s2Member, for S3 Bucket: %s."
|
578 |
msgstr ""
|
579 |
|
580 |
-
#:
|
581 |
msgctxt "s2member-admin"
|
582 |
msgid "Unable to create/read Amazon CloudFront Origin Access Identity. Unexpected response."
|
583 |
msgstr ""
|
@@ -585,7 +556,7 @@ msgstr ""
|
|
585 |
#. translators: In this translation, `%s` may be filled with an English
|
586 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
587 |
#. exclude `%s` if you like.
|
588 |
-
#:
|
589 |
msgctxt "s2member-admin"
|
590 |
msgid "Existing Amazon CloudFront Distro NOT found. %s"
|
591 |
msgstr ""
|
@@ -593,17 +564,17 @@ msgstr ""
|
|
593 |
#. translators: In this translation, `%s` may be filled with an English
|
594 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
595 |
#. exclude `%s` if you like.
|
596 |
-
#:
|
597 |
msgctxt "s2member-admin"
|
598 |
msgid "Unable to acquire existing Amazon CloudFront Distro. %s"
|
599 |
msgstr ""
|
600 |
|
601 |
-
#:
|
602 |
msgctxt "s2member-admin"
|
603 |
msgid "Unable to acquire existing Amazon CloudFront Distro. Connection failed."
|
604 |
msgstr ""
|
605 |
|
606 |
-
#:
|
607 |
msgctxt "s2member-admin"
|
608 |
msgid "Unable to acquire existing Amazon CloudFront Distro. Invalid Distro ID and/or Distro type."
|
609 |
msgstr ""
|
@@ -611,24 +582,24 @@ msgstr ""
|
|
611 |
#. translators: In this translation, `%s` may be filled with an English
|
612 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
613 |
#. exclude `%s` if you like.
|
614 |
-
#:
|
615 |
-
#:
|
616 |
msgctxt "s2member-admin"
|
617 |
msgid "Unable to disable existing Amazon CloudFront Distro. %s"
|
618 |
msgstr ""
|
619 |
|
620 |
-
#:
|
621 |
-
#:
|
622 |
msgctxt "s2member-admin"
|
623 |
msgid "Unable to disable existing Amazon CloudFront Distro. Connection failed."
|
624 |
msgstr ""
|
625 |
|
626 |
-
#:
|
627 |
msgctxt "s2member-admin"
|
628 |
msgid "Existing Amazon CloudFront Distro cannot be disabled at this time. Still in a `pending` state. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
|
629 |
msgstr ""
|
630 |
|
631 |
-
#:
|
632 |
msgctxt "s2member-admin"
|
633 |
msgid "Unable to disable existing Amazon CloudFront Distro. Invalid Distro ID, ETag, or XML config."
|
634 |
msgstr ""
|
@@ -636,12 +607,12 @@ msgstr ""
|
|
636 |
#. translators: In this translation, `%s` may be filled with an English
|
637 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
638 |
#. exclude `%s` if you like.
|
639 |
-
#:
|
640 |
msgctxt "s2member-admin"
|
641 |
msgid "Unable to delete existing Amazon CloudFront Distro. %s"
|
642 |
msgstr ""
|
643 |
|
644 |
-
#:
|
645 |
msgctxt "s2member-admin"
|
646 |
msgid "Unable to delete existing Amazon CloudFront Distro. Connection failed."
|
647 |
msgstr ""
|
@@ -649,7 +620,7 @@ msgstr ""
|
|
649 |
#. translators: In this translation, `%s` may be filled with an English
|
650 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
651 |
#. exclude `%s` if you like.
|
652 |
-
#:
|
653 |
msgctxt "s2member-admin"
|
654 |
msgid "Existing Amazon CloudFront Distro cannot be deleted at this time. Still in a `pending` state after having been disabled by s2Member. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
|
655 |
msgstr ""
|
@@ -657,185 +628,185 @@ msgstr ""
|
|
657 |
#. translators: In this translation, `%s` may be filled with an English
|
658 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
659 |
#. exclude `%s` if you like.
|
660 |
-
#:
|
661 |
msgctxt "s2member-admin"
|
662 |
msgid "Unable to check status of existing Amazon CloudFront Distro. %s"
|
663 |
msgstr ""
|
664 |
|
665 |
-
#:
|
666 |
msgctxt "s2member-admin"
|
667 |
msgid "Unable to check status of existing Amazon CloudFront Distro. Connection failed."
|
668 |
msgstr ""
|
669 |
|
670 |
-
#:
|
671 |
msgctxt "s2member-admin"
|
672 |
msgid "Existing Amazon CloudFront Distro cannot be deleted at this time. Still in a `pending` state. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
|
673 |
msgstr ""
|
674 |
|
675 |
-
#:
|
676 |
msgctxt "s2member-admin"
|
677 |
msgid "Unable to delete existing Amazon CloudFront Distro. Invalid Distro ID or ETag."
|
678 |
msgstr ""
|
679 |
|
680 |
-
#:
|
681 |
msgctxt "s2member-admin"
|
682 |
msgid "Unable to create/read Amazon CloudFront Downloads Distro. Unexpected response."
|
683 |
msgstr ""
|
684 |
|
685 |
-
#:
|
686 |
msgctxt "s2member-admin"
|
687 |
msgid "Unable to create/read Amazon CloudFront Streaming Distro. Unexpected response."
|
688 |
msgstr ""
|
689 |
|
690 |
-
#:
|
691 |
msgctxt "s2member-admin"
|
692 |
msgid "Unable to create Amazon CloudFront Distro. Invalid Distro type."
|
693 |
msgstr ""
|
694 |
|
695 |
-
#:
|
696 |
msgctxt "s2member-front"
|
697 |
msgid "<strong>ERROR</strong>: Invalid username for this site."
|
698 |
msgstr ""
|
699 |
|
700 |
-
#:
|
701 |
msgctxt "s2member-front"
|
702 |
msgid "<strong>ERROR</strong>: Max simultaneous logins for username: %1$s. Please wait %2$s and try again."
|
703 |
msgstr ""
|
704 |
|
705 |
-
#:
|
706 |
-
#:
|
707 |
msgctxt "s2member-front"
|
708 |
msgid "<strong>Thank you! (you MUST check your email before proceeding).</strong><br /><br />* Note: It can take <em>(up to 15 minutes)</em> for Email Confirmation with important details. If you don't receive email confirmation in the next 15 minutes, please contact Support."
|
709 |
msgstr ""
|
710 |
|
711 |
-
#:
|
712 |
-
#:
|
713 |
msgctxt "s2member-front"
|
714 |
msgid "<strong>** Sandbox Mode **</strong> You may NOT receive this Email in Sandbox Mode. Sandbox addresses are usually bogus (for testing)."
|
715 |
msgstr ""
|
716 |
|
717 |
-
#:
|
718 |
-
#:
|
719 |
-
#:
|
720 |
-
#:
|
721 |
-
#:
|
722 |
-
#:
|
723 |
-
#:
|
724 |
-
#:
|
725 |
-
#:
|
726 |
-
#:
|
727 |
-
#:
|
728 |
-
#:
|
729 |
-
#:
|
730 |
msgctxt "s2member-front"
|
731 |
msgid "Back To Home Page"
|
732 |
msgstr ""
|
733 |
|
734 |
-
#:
|
735 |
msgctxt "s2member-front"
|
736 |
msgid "<strong>Thank you! (this is a preview, no action necessary).</strong><br /><br />* Note: each of your Customers are returned back to your site immediately after they complete checkout. This Return Page displays a message and instructions for the Customer. s2Member may change the message and instructions dynamically, based on what the Customer is actually doing <em>(i.e. based on the type of transaction that is taking place)</em>.<br /><br /><em>* With <a href=\"%s\" target=\"_blank\">s2Member Pro</a> installed, it is possible to customize this Return Page in various ways.</em>"
|
737 |
msgstr ""
|
738 |
|
739 |
-
#:
|
740 |
-
#:
|
741 |
msgctxt "s2member-front"
|
742 |
msgid "Continue (Click Here)"
|
743 |
msgstr ""
|
744 |
|
745 |
-
#:
|
746 |
-
#:
|
747 |
msgctxt "s2member-front"
|
748 |
msgid "Thank you! You've been updated to:"
|
749 |
msgstr ""
|
750 |
|
751 |
-
#:
|
752 |
-
#:
|
753 |
-
#:
|
754 |
msgctxt "s2member-front"
|
755 |
msgid "Please Log Back In (Click Here)"
|
756 |
msgstr ""
|
757 |
|
758 |
-
#:
|
759 |
-
#:
|
760 |
msgctxt "s2member-front"
|
761 |
msgid "<strong>ERROR:</strong> Unable to modify Subscription.<br />Please contact Support for assistance.<br /><br />The existing User ID is associated with an Administrator. Stopping here. Otherwise, an Administrator could lose access. Please make sure that you are NOT logged in as an Administrator while testing."
|
762 |
msgstr ""
|
763 |
|
764 |
-
#:
|
765 |
-
#:
|
766 |
msgctxt "s2member-front"
|
767 |
msgid "<strong>ERROR:</strong> Unable to modify Subscription.<br />Please contact Support for assistance.<br /><br />Could not get the existing User ID from the DB."
|
768 |
msgstr ""
|
769 |
|
770 |
-
#:
|
771 |
-
#:
|
772 |
-
#:
|
773 |
-
#:
|
774 |
msgctxt "s2member-front"
|
775 |
msgid "Thank you! Please check your email for further details regarding your purchase."
|
776 |
msgstr ""
|
777 |
|
778 |
-
#:
|
779 |
-
#:
|
780 |
-
#:
|
781 |
-
#:
|
782 |
msgctxt "s2member-front"
|
783 |
msgid "Return to Home Page"
|
784 |
msgstr ""
|
785 |
|
786 |
-
#:
|
787 |
-
#:
|
788 |
msgctxt "s2member-front"
|
789 |
msgid "<strong>Thank you! Your account has been approved.<br />The next step is to Register a Username for immediate access.</strong>"
|
790 |
msgstr ""
|
791 |
|
792 |
-
#:
|
793 |
-
#:
|
794 |
msgctxt "s2member-front"
|
795 |
msgid "Please Register Now (Click Here)"
|
796 |
msgstr ""
|
797 |
|
798 |
-
#:
|
799 |
msgctxt "s2member-front"
|
800 |
msgid "Thank you! You now have access to:"
|
801 |
msgstr ""
|
802 |
|
803 |
-
#:
|
804 |
msgctxt "s2member-front"
|
805 |
msgid "<strong>ERROR:</strong> Unable to add new Capabilities.<br />Please contact Support for assistance.<br /><br />The existing User ID is associated with an Administrator. Stopping here. Otherwise, an Administrator could lose access. Please make sure that you are NOT logged in as an Administrator while testing."
|
806 |
msgstr ""
|
807 |
|
808 |
-
#:
|
809 |
msgctxt "s2member-front"
|
810 |
msgid "<strong>ERROR:</strong> Unable to add new Capabilities.<br />Please contact Support for assistance.<br /><br />Could not get the existing User ID from the DB."
|
811 |
msgstr ""
|
812 |
|
813 |
-
#:
|
814 |
msgctxt "s2member-front"
|
815 |
msgid "<strong>ERROR:</strong> Unable to add new Capabilities.<br />Please contact Support for assistance.<br /><br />Missing User/Member details."
|
816 |
msgstr ""
|
817 |
|
818 |
-
#:
|
819 |
msgctxt "s2member-front"
|
820 |
msgid "<strong>Thank You! Your transaction has been approved.</strong>"
|
821 |
msgstr ""
|
822 |
|
823 |
-
#:
|
824 |
msgctxt "s2member-front"
|
825 |
msgid "<strong>ERROR:</strong> Unable to generate Access Link.<br />Please contact Support for assistance."
|
826 |
msgstr ""
|
827 |
|
828 |
-
#:
|
829 |
msgctxt "s2member-front"
|
830 |
msgid "<strong>ERROR:</strong> Unexpected <code>txn_type/status</code>.<br />The <code>txn_type/status</code> did not meet requirements.<br />Please contact Support for assistance."
|
831 |
msgstr ""
|
832 |
|
833 |
-
#:
|
834 |
msgctxt "s2member-front"
|
835 |
msgid "<strong>ERROR:</strong> Unable to verify <code>$_SERVER[\"HTTP_HOST\"]</code>.<br />Please contact Support for assistance.<br /><br />If you are the site owner, please check the <code>custom</code> value in your Button Code. It MUST start with your domain name."
|
836 |
msgstr ""
|
837 |
|
838 |
-
#:
|
839 |
msgctxt "s2member-front"
|
840 |
msgid "<strong>ERROR:</strong> Unable to verify <code>$_POST</code> vars.<br />Please contact Support for assistance.<br /><br />This is most likely related to an invalid configuration of s2Member, or a problem with server compatibility. If you are the site owner, and you're absolutely SURE that your configuration is valid, you may want to run some tests on your server, just to be sure <code>$_POST</code> variables are populated, and that your server is able to connect/communicate with your Payment Gateway over an HTTPS connection.<br /><br />s2Member uses the <code>WP_Http</code> class for remote connections; which will try to use <code>cURL</code> first, and then fall back on the <code>FOPEN</code> method when <code>cURL</code> is not available. On a Windows server, you may have to disable your <code>cURL</code> extension; and instead, set <code>allow_url_fopen = yes</code> in your php.ini file. The <code>cURL</code> extension (usually) does NOT support SSL connections on a Windows server.<br /><br />Please see <a href=\"http://www.s2member.com/forums/topic/ideal-server-configuration-for-s2member/\" target=\"_blank\">this thread</a> for details regarding the ideal server configuration for s2Member."
|
841 |
msgstr ""
|
@@ -844,27 +815,25 @@ msgstr ""
|
|
844 |
#. by PayPal. Replace `%2$s` and `%3$s` with: `Unable to process, please try
|
845 |
#. again`, or something to that affect. Or, if you prefer, you could Filter
|
846 |
#. ``$response["__error"]`` with `ws_plugin__s2member_paypal_api_response`.
|
847 |
-
#:
|
848 |
msgctxt "s2member-front"
|
849 |
msgid "Error #%1$s. %2$s. %3$s."
|
850 |
msgstr ""
|
851 |
|
852 |
-
#:
|
853 |
-
#:
|
854 |
-
#:
|
855 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:97
|
856 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:325
|
857 |
msgctxt "s2member-front"
|
858 |
msgid "Error. Please contact Support for assistance."
|
859 |
msgstr ""
|
860 |
|
861 |
-
#:
|
862 |
-
#:
|
863 |
msgctxt "s2member-front"
|
864 |
msgid "Error #%s. Transaction declined. Please use an alternate funding source."
|
865 |
msgstr ""
|
866 |
|
867 |
-
#:
|
868 |
msgctxt "s2member-front"
|
869 |
msgid "Error #%s. Transaction declined. Express Checkout was NOT confirmed."
|
870 |
msgstr ""
|
@@ -873,175 +842,148 @@ msgstr ""
|
|
873 |
#. Replace `%2$s` with: `Unable to process, please try again`, or something to
|
874 |
#. that affect. Or, if you prefer, you could Filter ``$response["__error"]``
|
875 |
#. with `ws_plugin__s2member_paypal_payflow_api_response`.
|
876 |
-
|
877 |
-
|
878 |
-
#. again`, or something to that affect. Or, if you prefer, you could Filter
|
879 |
-
#. ``$response["__error"]`` with
|
880 |
-
#. `ws_plugin__s2member_pro_authnet_aim_response`.
|
881 |
-
#. translators: Exclude `%2$s`. This is an English error returned by
|
882 |
-
#. Authorize.Net. Please replace `%2$s` with: `Unable to process, please try
|
883 |
-
#. again`, or something to that affect. Or, if you prefer, you could Filter
|
884 |
-
#. ``$response["__error"]`` with
|
885 |
-
#. `ws_plugin__s2member_pro_authnet_arb_response`.
|
886 |
-
#: s2member/includes/classes/paypal-utilities.inc.php:314
|
887 |
-
#: s2member/includes/classes/paypal-utilities.inc.php:322
|
888 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:94
|
889 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:322
|
890 |
msgctxt "s2member-front"
|
891 |
msgid "Error #%1$s. %2$s."
|
892 |
msgstr ""
|
893 |
|
894 |
-
#:
|
895 |
msgctxt "s2member-front"
|
896 |
msgid " Please contact PayPal Merchant Technical Support (www.paypal.com/mts) and request `Recurring Billing` service, and also ask to have `Reference Transactions` enabled for Recurring Billing via Express Checkout."
|
897 |
msgstr ""
|
898 |
|
899 |
-
#:
|
900 |
-
#:
|
901 |
-
#: s2member-pro/s2member-pro/includes/classes/login-widget.inc.php:130
|
902 |
msgctxt "s2member-front"
|
903 |
msgid "Username"
|
904 |
msgstr ""
|
905 |
|
906 |
-
#:
|
907 |
-
#:
|
908 |
msgctxt "s2member-front"
|
909 |
msgid "(cannot be changed)"
|
910 |
msgstr ""
|
911 |
|
912 |
-
#:
|
913 |
-
#:
|
914 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/google/google-min.js:1
|
915 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/google/google.js:39
|
916 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-checkout-form.php:78
|
917 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-registration-form.php:59
|
918 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:78
|
919 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-checkout-form.php:78
|
920 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-registration-form.php:59
|
921 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:78
|
922 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-checkout-form.php:78
|
923 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-registration-form.php:59
|
924 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-sp-checkout-form.php:78
|
925 |
msgctxt "s2member-front"
|
926 |
msgid "Email Address"
|
927 |
msgstr ""
|
928 |
|
929 |
-
#:
|
930 |
-
#:
|
931 |
msgctxt "s2member-front"
|
932 |
msgid "Display Name"
|
933 |
msgstr ""
|
934 |
|
935 |
-
#:
|
936 |
-
#:
|
937 |
msgctxt "s2member-front"
|
938 |
msgid "New Password?"
|
939 |
msgstr ""
|
940 |
|
941 |
-
#:
|
942 |
-
#:
|
943 |
msgctxt "s2member-front"
|
944 |
msgid "(please type it twice)"
|
945 |
msgstr ""
|
946 |
|
947 |
-
#:
|
948 |
-
#:
|
949 |
msgctxt "s2member-front"
|
950 |
msgid "Only if changing password, otherwise leave blank."
|
951 |
msgstr ""
|
952 |
|
953 |
-
#:
|
954 |
-
#:
|
955 |
msgctxt "s2member-front"
|
956 |
msgid "Save All Changes"
|
957 |
msgstr ""
|
958 |
|
959 |
-
#:
|
960 |
-
#:
|
961 |
-
#:
|
962 |
-
#:
|
963 |
msgctxt "s2member-front"
|
964 |
msgid "Profile updated successfully."
|
965 |
msgstr ""
|
966 |
|
967 |
-
#:
|
968 |
-
#:
|
969 |
msgctxt "s2member-front"
|
970 |
msgid "<strong>Your Link Expired:</strong><br />Please contact Support if you need assistance."
|
971 |
msgstr ""
|
972 |
|
973 |
-
#:
|
974 |
msgctxt "s2member-front"
|
975 |
msgid "s2Member security violation. You attempted to POST administrative variables that will NOT be trusted in a NON-administrative zone!"
|
976 |
msgstr ""
|
977 |
|
978 |
-
#:
|
979 |
msgctxt "s2member-front"
|
980 |
msgid "Continue"
|
981 |
msgstr ""
|
982 |
|
983 |
-
#:
|
984 |
msgctxt "s2member-front"
|
985 |
msgid "Thank you. Please click the link below."
|
986 |
msgstr ""
|
987 |
|
988 |
-
#:
|
989 |
msgctxt "s2member-front"
|
990 |
msgid "[ %s ] <strong><em>says…</em></strong>"
|
991 |
msgstr ""
|
992 |
|
993 |
-
#:
|
994 |
msgctxt "s2member-front"
|
995 |
msgid "If you need assistance, please <a href=\"%s\" target=\"_blank\">contact support</a>."
|
996 |
msgstr ""
|
997 |
|
998 |
-
#:
|
999 |
-
#:
|
1000 |
-
#:
|
1001 |
-
#:
|
1002 |
-
#:
|
1003 |
-
#:
|
1004 |
-
#:
|
1005 |
-
#:
|
1006 |
-
#:
|
1007 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
1008 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:293
|
1009 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:593
|
1010 |
msgctxt "s2member-front paypal-button-lang-code"
|
1011 |
msgid "en_US"
|
1012 |
msgstr ""
|
1013 |
|
1014 |
-
#:
|
1015 |
msgctxt "s2member-front"
|
1016 |
msgid "Username:"
|
1017 |
msgstr ""
|
1018 |
|
1019 |
-
#:
|
1020 |
msgctxt "s2member-front"
|
1021 |
msgid "My Password:"
|
1022 |
msgstr ""
|
1023 |
|
1024 |
-
#:
|
1025 |
msgctxt "s2member-front"
|
1026 |
msgid "Username *"
|
1027 |
msgstr ""
|
1028 |
|
1029 |
-
#:
|
1030 |
msgctxt "s2member-front"
|
1031 |
msgid "Password *"
|
1032 |
msgstr ""
|
1033 |
|
1034 |
-
#:
|
1035 |
msgctxt "s2member-front"
|
1036 |
msgid "Email Address *"
|
1037 |
msgstr ""
|
1038 |
|
1039 |
-
#:
|
1040 |
msgctxt "s2member-front"
|
1041 |
msgid "Registration complete. Please log in."
|
1042 |
msgstr ""
|
1043 |
|
1044 |
-
#:
|
1045 |
msgctxt "s2member-front"
|
1046 |
msgid ""
|
1047 |
"You have been invited to join `%1$s` at\n"
|
@@ -1050,252 +992,252 @@ msgid ""
|
|
1050 |
"%4$s\n"
|
1051 |
msgstr ""
|
1052 |
|
1053 |
-
#:
|
1054 |
msgctxt "s2member-front"
|
1055 |
msgid "Your account is now active. <a href=\"%1$s\">Visit site</a> or <a href=\"%2$s\">Log in</a>."
|
1056 |
msgstr ""
|
1057 |
|
1058 |
-
#:
|
1059 |
-
#:
|
1060 |
msgctxt "s2member-front"
|
1061 |
msgid "By filling out the form below, you can <strong>add a site to your account</strong>."
|
1062 |
msgstr ""
|
1063 |
|
1064 |
-
#:
|
1065 |
msgctxt "s2member-front"
|
1066 |
msgid "You may create <strong>%s</strong> site."
|
1067 |
msgid_plural "You may create up to <strong>%s</strong> sites."
|
1068 |
msgstr[0] ""
|
1069 |
msgstr[1] ""
|
1070 |
|
1071 |
-
#:
|
1072 |
msgctxt "s2member-front"
|
1073 |
msgid "You may create up to <strong>%s</strong> site."
|
1074 |
msgid_plural "You may create up to <strong>%s</strong> sites."
|
1075 |
msgstr[0] ""
|
1076 |
msgstr[1] ""
|
1077 |
|
1078 |
-
#:
|
1079 |
msgctxt "s2member-front"
|
1080 |
msgid "Additional Profile Fields"
|
1081 |
msgstr ""
|
1082 |
|
1083 |
-
#:
|
1084 |
msgctxt "s2member-front"
|
1085 |
msgid "(for this site)"
|
1086 |
msgstr ""
|
1087 |
|
1088 |
-
#:
|
1089 |
msgctxt "s2member-front"
|
1090 |
msgid "less than a minute"
|
1091 |
msgstr ""
|
1092 |
|
1093 |
-
#:
|
1094 |
msgctxt "s2member-front"
|
1095 |
msgid "1 minute"
|
1096 |
msgstr ""
|
1097 |
|
1098 |
-
#:
|
1099 |
msgctxt "s2member-front"
|
1100 |
msgid "%s minute"
|
1101 |
msgid_plural "%s minutes"
|
1102 |
msgstr[0] ""
|
1103 |
msgstr[1] ""
|
1104 |
|
1105 |
-
#:
|
1106 |
msgctxt "s2member-front"
|
1107 |
msgid "about 1 hour"
|
1108 |
msgstr ""
|
1109 |
|
1110 |
-
#:
|
1111 |
msgctxt "s2member-front"
|
1112 |
msgid "1 hour"
|
1113 |
msgstr ""
|
1114 |
|
1115 |
-
#:
|
1116 |
msgctxt "s2member-front"
|
1117 |
msgid "%s hour"
|
1118 |
msgid_plural "%s hours"
|
1119 |
msgstr[0] ""
|
1120 |
msgstr[1] ""
|
1121 |
|
1122 |
-
#:
|
1123 |
msgctxt "s2member-front"
|
1124 |
msgid "about 1 day"
|
1125 |
msgstr ""
|
1126 |
|
1127 |
-
#:
|
1128 |
msgctxt "s2member-front"
|
1129 |
msgid "1 day"
|
1130 |
msgstr ""
|
1131 |
|
1132 |
-
#:
|
1133 |
msgctxt "s2member-front"
|
1134 |
msgid "%s day"
|
1135 |
msgid_plural "%s days"
|
1136 |
msgstr[0] ""
|
1137 |
msgstr[1] ""
|
1138 |
|
1139 |
-
#:
|
1140 |
msgctxt "s2member-front"
|
1141 |
msgid "about 1 week"
|
1142 |
msgstr ""
|
1143 |
|
1144 |
-
#:
|
1145 |
msgctxt "s2member-front"
|
1146 |
msgid "1 week"
|
1147 |
msgstr ""
|
1148 |
|
1149 |
-
#:
|
1150 |
msgctxt "s2member-front"
|
1151 |
msgid "%s week"
|
1152 |
msgid_plural "%s weeks"
|
1153 |
msgstr[0] ""
|
1154 |
msgstr[1] ""
|
1155 |
|
1156 |
-
#:
|
1157 |
msgctxt "s2member-front"
|
1158 |
msgid "about 1 month"
|
1159 |
msgstr ""
|
1160 |
|
1161 |
-
#:
|
1162 |
msgctxt "s2member-front"
|
1163 |
msgid "1 month"
|
1164 |
msgstr ""
|
1165 |
|
1166 |
-
#:
|
1167 |
msgctxt "s2member-front"
|
1168 |
msgid "%s month"
|
1169 |
msgid_plural "%s months"
|
1170 |
msgstr[0] ""
|
1171 |
msgstr[1] ""
|
1172 |
|
1173 |
-
#:
|
1174 |
msgctxt "s2member-front"
|
1175 |
msgid "about 1 year"
|
1176 |
msgstr ""
|
1177 |
|
1178 |
-
#:
|
1179 |
msgctxt "s2member-front"
|
1180 |
msgid "1 year"
|
1181 |
msgstr ""
|
1182 |
|
1183 |
-
#:
|
1184 |
msgctxt "s2member-front"
|
1185 |
msgid "%s year"
|
1186 |
msgid_plural "%s years"
|
1187 |
msgstr[0] ""
|
1188 |
msgstr[1] ""
|
1189 |
|
1190 |
-
#:
|
1191 |
msgctxt "s2member-front"
|
1192 |
msgid "Daily"
|
1193 |
msgstr ""
|
1194 |
|
1195 |
-
#:
|
1196 |
msgctxt "s2member-front"
|
1197 |
msgid "Weekly"
|
1198 |
msgstr ""
|
1199 |
|
1200 |
-
#:
|
1201 |
msgctxt "s2member-front"
|
1202 |
msgid "Monthly"
|
1203 |
msgstr ""
|
1204 |
|
1205 |
-
#:
|
1206 |
msgctxt "s2member-front"
|
1207 |
msgid "Yearly"
|
1208 |
msgstr ""
|
1209 |
|
1210 |
-
#:
|
1211 |
-
#:
|
1212 |
msgctxt "s2member-front"
|
1213 |
msgid "Lifetime"
|
1214 |
msgstr ""
|
1215 |
|
1216 |
-
#:
|
1217 |
msgctxt "s2member-front"
|
1218 |
msgid "Bi-Weekly"
|
1219 |
msgstr ""
|
1220 |
|
1221 |
-
#:
|
1222 |
msgctxt "s2member-front"
|
1223 |
msgid "Bi-Monthly"
|
1224 |
msgstr ""
|
1225 |
|
1226 |
-
#:
|
1227 |
msgctxt "s2member-front"
|
1228 |
msgid "Quarterly"
|
1229 |
msgstr ""
|
1230 |
|
1231 |
-
#:
|
1232 |
msgctxt "s2member-front"
|
1233 |
msgid "Semi-Yearly"
|
1234 |
msgstr ""
|
1235 |
|
1236 |
-
#:
|
1237 |
msgctxt "s2member-front"
|
1238 |
msgid "Day"
|
1239 |
msgstr ""
|
1240 |
|
1241 |
-
#:
|
1242 |
msgctxt "s2member-front"
|
1243 |
msgid "Week"
|
1244 |
msgstr ""
|
1245 |
|
1246 |
-
#:
|
1247 |
msgctxt "s2member-front"
|
1248 |
msgid "Month"
|
1249 |
msgstr ""
|
1250 |
|
1251 |
-
#:
|
1252 |
msgctxt "s2member-front"
|
1253 |
msgid "Year"
|
1254 |
msgstr ""
|
1255 |
|
1256 |
-
#:
|
1257 |
msgctxt "s2member-front"
|
1258 |
msgid "Days"
|
1259 |
msgstr ""
|
1260 |
|
1261 |
-
#:
|
1262 |
msgctxt "s2member-front"
|
1263 |
msgid "Weeks"
|
1264 |
msgstr ""
|
1265 |
|
1266 |
-
#:
|
1267 |
msgctxt "s2member-front"
|
1268 |
msgid "Months"
|
1269 |
msgstr ""
|
1270 |
|
1271 |
-
#:
|
1272 |
msgctxt "s2member-front"
|
1273 |
msgid "Years"
|
1274 |
msgstr ""
|
1275 |
|
1276 |
-
#:
|
1277 |
msgctxt "s2member-front"
|
1278 |
msgid "Lifetimes"
|
1279 |
msgstr ""
|
1280 |
|
1281 |
#. translators: Each cycle ( i.e. `each day/week/month` or `every 2
|
1282 |
#. days/weeks/months`, etc. ). Cycles are translated elsewhere.
|
1283 |
-
#:
|
1284 |
-
#:
|
1285 |
msgctxt "s2member-front"
|
1286 |
msgid "each %2$s"
|
1287 |
msgid_plural "every %1$s %3$s"
|
1288 |
msgstr[0] ""
|
1289 |
msgstr[1] ""
|
1290 |
|
1291 |
-
#:
|
1292 |
msgctxt "s2member-front"
|
1293 |
msgid "lifetime"
|
1294 |
msgstr ""
|
1295 |
|
1296 |
#. translators: Membership cycle ( i.e. `1 day/week/month` or `2
|
1297 |
#. days/weeks/months`, etc. ). Most of this is translated elsewhere.
|
1298 |
-
#:
|
1299 |
msgctxt "s2member-front"
|
1300 |
msgid "%1$s %2$s"
|
1301 |
msgid_plural "%1$s %3$s"
|
@@ -1304,239 +1246,174 @@ msgstr[1] ""
|
|
1304 |
|
1305 |
#. translators: Cycle ( i.e. `for 1 day/week/month` or `for 2
|
1306 |
#. days/weeks/months`, etc. ). Most of this is translated elsewhere.
|
1307 |
-
#:
|
1308 |
msgctxt "s2member-front"
|
1309 |
msgid "for %1$s %2$s"
|
1310 |
msgid_plural "for %1$s %3$s"
|
1311 |
msgstr[0] ""
|
1312 |
msgstr[1] ""
|
1313 |
|
1314 |
-
#:
|
1315 |
msgctxt "s2member-front"
|
1316 |
msgid "— Confirm File Download —"
|
1317 |
msgstr ""
|
1318 |
|
1319 |
-
#:
|
1320 |
msgctxt "s2member-front"
|
1321 |
msgid "You`ve downloaded %s protected %s in the last %s."
|
1322 |
msgstr ""
|
1323 |
|
1324 |
-
#:
|
1325 |
msgctxt "s2member-front"
|
1326 |
msgid "file"
|
1327 |
msgstr ""
|
1328 |
|
1329 |
-
#:
|
1330 |
msgctxt "s2member-front"
|
1331 |
msgid "files"
|
1332 |
msgstr ""
|
1333 |
|
1334 |
-
#:
|
1335 |
msgctxt "s2member-front"
|
1336 |
msgid "24 hours"
|
1337 |
msgstr ""
|
1338 |
|
1339 |
-
#:
|
1340 |
msgctxt "s2member-front"
|
1341 |
msgid "%s days"
|
1342 |
msgstr ""
|
1343 |
|
1344 |
-
#:
|
1345 |
msgctxt "s2member-front"
|
1346 |
msgid "You`re entitled to UNLIMITED downloads though (so, no worries)."
|
1347 |
msgstr ""
|
1348 |
|
1349 |
-
#:
|
1350 |
msgctxt "s2member-front"
|
1351 |
msgid "You`re entitled to %s unique %s %s."
|
1352 |
msgstr ""
|
1353 |
|
1354 |
-
#:
|
1355 |
msgctxt "s2member-front"
|
1356 |
msgid "download"
|
1357 |
msgstr ""
|
1358 |
|
1359 |
-
#:
|
1360 |
msgctxt "s2member-front"
|
1361 |
msgid "downloads"
|
1362 |
msgstr ""
|
1363 |
|
1364 |
-
#:
|
1365 |
msgctxt "s2member-front"
|
1366 |
msgid "each day"
|
1367 |
msgstr ""
|
1368 |
|
1369 |
-
#:
|
1370 |
msgctxt "s2member-front"
|
1371 |
msgid "every %s-day period"
|
1372 |
msgstr ""
|
1373 |
|
1374 |
-
#:
|
1375 |
-
#: s2member
|
1376 |
-
#: s2member
|
1377 |
-
#:
|
1378 |
-
#: s2member/includes/s2member.js:219 s2member/includes/s2member.js:248
|
1379 |
-
#: s2member/includes/s2member.js:273
|
1380 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
1381 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:66
|
1382 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:73
|
1383 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:160
|
1384 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:167
|
1385 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:255
|
1386 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:262
|
1387 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:269
|
1388 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:276
|
1389 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:520
|
1390 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:527
|
1391 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:792
|
1392 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:799
|
1393 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:806
|
1394 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:813
|
1395 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
1396 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:66
|
1397 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:73
|
1398 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:160
|
1399 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:167
|
1400 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:255
|
1401 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:262
|
1402 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:269
|
1403 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:276
|
1404 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:568
|
1405 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:575
|
1406 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:888
|
1407 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:895
|
1408 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:902
|
1409 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:909
|
1410 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe-min.js:1
|
1411 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:101
|
1412 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:106
|
1413 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:187
|
1414 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:192
|
1415 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:197
|
1416 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:202
|
1417 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:312
|
1418 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:317
|
1419 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:595
|
1420 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:600
|
1421 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:605
|
1422 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:610
|
1423 |
msgctxt "s2member-front"
|
1424 |
msgid "— Oops, you missed something: —"
|
1425 |
msgstr ""
|
1426 |
|
1427 |
-
#:
|
1428 |
-
#: s2member/includes/s2member.js:185
|
1429 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
1430 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:262
|
1431 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:799
|
1432 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
1433 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:262
|
1434 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:895
|
1435 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe-min.js:1
|
1436 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:192
|
1437 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:600
|
1438 |
msgctxt "s2member-front"
|
1439 |
msgid "Passwords do not match up. Please try again."
|
1440 |
msgstr ""
|
1441 |
|
1442 |
-
#:
|
1443 |
-
#: s2member/includes/s2member.js:190
|
1444 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
1445 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:269
|
1446 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:806
|
1447 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
1448 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:269
|
1449 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:902
|
1450 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe-min.js:1
|
1451 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:197
|
1452 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:605
|
1453 |
msgctxt "s2member-front"
|
1454 |
msgid "Password MUST be at least 6 characters. Please try again."
|
1455 |
msgstr ""
|
1456 |
|
1457 |
-
#:
|
1458 |
msgctxt "s2member-front"
|
1459 |
msgid "Strength indicator"
|
1460 |
msgstr ""
|
1461 |
|
1462 |
-
#:
|
1463 |
msgctxt "s2member-front"
|
1464 |
msgid "Very weak"
|
1465 |
msgstr ""
|
1466 |
|
1467 |
-
#:
|
1468 |
msgctxt "s2member-front"
|
1469 |
msgid "Weak"
|
1470 |
msgstr ""
|
1471 |
|
1472 |
-
#:
|
1473 |
msgctxt "s2member-front"
|
1474 |
msgid "Medium"
|
1475 |
msgstr ""
|
1476 |
|
1477 |
-
#:
|
1478 |
msgctxt "s2member-front"
|
1479 |
msgid "Strong"
|
1480 |
msgstr ""
|
1481 |
|
1482 |
-
#:
|
1483 |
msgctxt "s2member-front"
|
1484 |
msgid "Mismatch"
|
1485 |
msgstr ""
|
1486 |
|
1487 |
-
#:
|
1488 |
msgctxt "s2member-front"
|
1489 |
msgid "Must be an integer > 0 (whole number, no decimals, greater than 0)."
|
1490 |
msgstr ""
|
1491 |
|
1492 |
-
#:
|
1493 |
msgctxt "s2member-front"
|
1494 |
msgid "Must be a float > 0 (floating point number, decimals required, greater than 0)."
|
1495 |
msgstr ""
|
1496 |
|
1497 |
-
#:
|
1498 |
msgctxt "s2member-front"
|
1499 |
msgid ""
|
1500 |
"Please use a personal email address.\n"
|
1501 |
"Addresses like <%s@> are problematic."
|
1502 |
msgstr ""
|
1503 |
|
1504 |
-
#:
|
1505 |
msgctxt "s2member-front"
|
1506 |
msgid "Must be a Canadian zipcode (6 alpha-numerics w/possible space)."
|
1507 |
msgstr ""
|
1508 |
|
1509 |
-
#:
|
1510 |
msgctxt "s2member-front"
|
1511 |
msgid "Please use alphanumerics, spaces & punctuation only."
|
1512 |
msgstr ""
|
1513 |
|
1514 |
-
#:
|
1515 |
msgctxt "s2member-front"
|
1516 |
msgid "Please use alphanumerics & spaces only."
|
1517 |
msgstr ""
|
1518 |
|
1519 |
-
#:
|
1520 |
msgctxt "s2member-front"
|
1521 |
msgid "Please use alphanumerics & punctuation only (no spaces)."
|
1522 |
msgstr ""
|
1523 |
|
1524 |
-
#:
|
1525 |
msgctxt "s2member-front recaptcha-lang-code"
|
1526 |
msgid "en"
|
1527 |
msgstr ""
|
1528 |
|
1529 |
-
#:
|
1530 |
msgctxt "s2member-front"
|
1531 |
msgid "Yes, I want to receive updates via email."
|
1532 |
msgstr ""
|
1533 |
|
1534 |
-
#:
|
1535 |
msgctxt "s2member-front"
|
1536 |
msgid "[%s] Username/Password"
|
1537 |
msgstr ""
|
1538 |
|
1539 |
-
#:
|
1540 |
msgctxt "s2member-front"
|
1541 |
msgid ""
|
1542 |
"Your Username/Password for:\n"
|
@@ -1547,12 +1424,12 @@ msgid ""
|
|
1547 |
"%%%%wp_login_url%%%%"
|
1548 |
msgstr ""
|
1549 |
|
1550 |
-
#:
|
1551 |
msgctxt "s2member-front"
|
1552 |
msgid "[%s] New User Registration"
|
1553 |
msgstr ""
|
1554 |
|
1555 |
-
#:
|
1556 |
msgctxt "s2member-front"
|
1557 |
msgid ""
|
1558 |
"New User Registration on your site:\n"
|
@@ -1564,13 +1441,12 @@ msgid ""
|
|
1564 |
"IP Address: %%%%user_ip%%%%"
|
1565 |
msgstr ""
|
1566 |
|
1567 |
-
#:
|
1568 |
-
#: s2member-pro/s2member-pro/includes/syscon.inc.php:95
|
1569 |
msgctxt "s2member-front"
|
1570 |
msgid "Congratulations! (your membership has been approved)"
|
1571 |
msgstr ""
|
1572 |
|
1573 |
-
#:
|
1574 |
msgctxt "s2member-front"
|
1575 |
msgid ""
|
1576 |
"Thanks %%%%first_name%%%%! Your membership has been approved.\n"
|
@@ -1586,12 +1462,12 @@ msgid ""
|
|
1586 |
"%s"
|
1587 |
msgstr ""
|
1588 |
|
1589 |
-
#:
|
1590 |
msgctxt "s2member-front"
|
1591 |
msgid "Thank you! Your account has been updated."
|
1592 |
msgstr ""
|
1593 |
|
1594 |
-
#:
|
1595 |
msgctxt "s2member-front"
|
1596 |
msgid ""
|
1597 |
"Thanks %%%%first_name%%%%! Your account now has access to: %%%%item_name%%%%.\n"
|
@@ -1602,13 +1478,12 @@ msgid ""
|
|
1602 |
"%s"
|
1603 |
msgstr ""
|
1604 |
|
1605 |
-
#:
|
1606 |
-
#: s2member-pro/s2member-pro/includes/syscon.inc.php:99
|
1607 |
msgctxt "s2member-front"
|
1608 |
msgid "Thank You! (instructions for access)"
|
1609 |
msgstr ""
|
1610 |
|
1611 |
-
#:
|
1612 |
msgctxt "s2member-front"
|
1613 |
msgid ""
|
1614 |
"Thanks %%%%first_name%%%%!\n"
|
@@ -1625,3563 +1500,530 @@ msgid ""
|
|
1625 |
"%s"
|
1626 |
msgstr ""
|
1627 |
|
1628 |
-
#:
|
1629 |
msgctxt "s2member-front"
|
1630 |
msgid "Free Subscriber"
|
1631 |
msgstr ""
|
1632 |
|
1633 |
-
#:
|
1634 |
msgctxt "s2member-front"
|
1635 |
msgid "Bronze Member"
|
1636 |
msgstr ""
|
1637 |
|
1638 |
-
#:
|
1639 |
msgctxt "s2member-front"
|
1640 |
msgid "Silver Member"
|
1641 |
msgstr ""
|
1642 |
|
1643 |
-
#:
|
1644 |
msgctxt "s2member-front"
|
1645 |
msgid "Gold Member"
|
1646 |
msgstr ""
|
1647 |
|
1648 |
-
#:
|
1649 |
msgctxt "s2member-front"
|
1650 |
msgid "Platinum Member"
|
1651 |
msgstr ""
|
1652 |
|
1653 |
-
#:
|
1654 |
msgctxt "s2member-front"
|
1655 |
msgid "Level %s Member"
|
1656 |
msgstr ""
|
1657 |
|
1658 |
-
#:
|
1659 |
msgctxt "s2member-front"
|
1660 |
msgid "s2Member® ( Security for WordPress® )"
|
1661 |
msgstr ""
|
1662 |
|
1663 |
-
#:
|
1664 |
-
#:
|
1665 |
-
#:
|
1666 |
msgctxt "s2member-admin"
|
1667 |
msgid "Instant Payment Notification & Return Page Details"
|
1668 |
msgstr ""
|
1669 |
|
1670 |
-
#:
|
1671 |
-
#:
|
1672 |
-
#:
|
1673 |
msgctxt "s2member-admin"
|
1674 |
msgid "Configures Basic Checkout Fields"
|
1675 |
msgstr ""
|
1676 |
|
1677 |
-
#:
|
1678 |
-
#:
|
1679 |
-
#:
|
1680 |
-
#:
|
1681 |
-
#:
|
1682 |
-
#:
|
1683 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/alipay-ccaps-checkout-button-shortcode.php:6
|
1684 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/alipay-checkout-button-shortcode.php:6
|
1685 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/alipay-sp-checkout-button-shortcode.php:6
|
1686 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/authnet-ccaps-checkout-form-shortcode.php:6
|
1687 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/authnet-checkout-form-shortcode.php:6
|
1688 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/authnet-sp-checkout-form-shortcode.php:6
|
1689 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/ccbill-ccaps-checkout-button-shortcode.php:6
|
1690 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/ccbill-checkout-button-shortcode.php:6
|
1691 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/ccbill-sp-checkout-button-shortcode.php:6
|
1692 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/clickbank-ccaps-checkout-button-shortcode.php:6
|
1693 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/clickbank-checkout-button-shortcode.php:6
|
1694 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/clickbank-sp-checkout-button-shortcode.php:6
|
1695 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/google-ccaps-checkout-button-shortcode.php:6
|
1696 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/google-checkout-button-shortcode.php:6
|
1697 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/google-sp-checkout-button-shortcode.php:6
|
1698 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/paypal-ccaps-checkout-form-shortcode.php:6
|
1699 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/paypal-checkout-form-shortcode.php:6
|
1700 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/paypal-sp-checkout-form-shortcode.php:6
|
1701 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/stripe-ccaps-checkout-form-shortcode.php:6
|
1702 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/stripe-checkout-form-shortcode.php:6
|
1703 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/stripe-sp-checkout-form-shortcode.php:6
|
1704 |
msgctxt "s2member-admin"
|
1705 |
msgid "Description and pricing details here."
|
1706 |
msgstr ""
|
1707 |
|
1708 |
-
#:
|
1709 |
-
#:
|
1710 |
-
#:
|
1711 |
msgctxt "s2member-admin"
|
1712 |
msgid "Configures s2Member's Unique Invoice ID/Code"
|
1713 |
msgstr ""
|
1714 |
|
1715 |
-
#:
|
1716 |
-
#:
|
1717 |
msgctxt "s2member-admin"
|
1718 |
msgid "Associates Purchase With A User/Member (when/if applicable)"
|
1719 |
msgstr ""
|
1720 |
|
1721 |
-
#:
|
1722 |
-
#:
|
1723 |
-
#:
|
1724 |
msgctxt "s2member-admin"
|
1725 |
msgid "Identifies The Customer's IP Address For Tracking"
|
1726 |
msgstr ""
|
1727 |
|
1728 |
-
#:
|
1729 |
-
#:
|
1730 |
-
#:
|
1731 |
msgctxt "s2member-admin"
|
1732 |
msgid "Displays The PayPal Image Button"
|
1733 |
msgstr ""
|
1734 |
|
1735 |
-
#:
|
1736 |
msgctxt "s2member-admin"
|
1737 |
msgid "Identifies/Updates An Existing User/Member (when/if applicable)"
|
1738 |
msgstr ""
|
1739 |
|
1740 |
-
#:
|
1741 |
msgctxt "s2member-admin"
|
1742 |
msgid "Controls Modify Behavior At PayPal Checkout"
|
1743 |
msgstr ""
|
1744 |
|
1745 |
-
#:
|
1746 |
msgctxt "s2member-admin"
|
1747 |
msgid "Customizes Prices, Payments & Billing Cycle"
|
1748 |
msgstr ""
|
1749 |
|
1750 |
-
#:
|
1751 |
msgctxt "s2member-front"
|
1752 |
msgid "503: Service Temporarily Unavailable"
|
1753 |
msgstr ""
|
1754 |
|
1755 |
-
#:
|
1756 |
msgctxt "s2member-front"
|
1757 |
msgid "<strong>503: Service Temporarily Unavailable</strong><br />Too many IP addresses accessing one secure area<em>!</em><br />Please contact Support if you need assistance."
|
1758 |
msgstr ""
|
1759 |
|
1760 |
-
#:
|
1761 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-currencies.php:6
|
1762 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-currencies.php:6
|
1763 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-currencies.php:6
|
1764 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-currencies.php:6
|
1765 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-currencies.php:6
|
1766 |
msgctxt "s2member-admin"
|
1767 |
msgid "Currency"
|
1768 |
msgstr ""
|
1769 |
|
1770 |
-
#:
|
1771 |
-
#:
|
1772 |
msgctxt "s2member-admin"
|
1773 |
msgid "PayPal (Buy Now)"
|
1774 |
msgstr ""
|
1775 |
|
1776 |
-
#:
|
1777 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-ccap-terms.php:7
|
1778 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-ccap-terms.php:7
|
1779 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-ccap-terms.php:7
|
1780 |
msgctxt "s2member-admin"
|
1781 |
msgid "One Time (for lifetime access, non-recurring)"
|
1782 |
msgstr ""
|
1783 |
|
1784 |
-
#:
|
1785 |
-
#:
|
1786 |
msgctxt "s2member-admin"
|
1787 |
msgid "PayPal® (Subscriptions)"
|
1788 |
msgstr ""
|
1789 |
|
1790 |
-
#:
|
1791 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:7
|
1792 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:7
|
1793 |
msgctxt "s2member-admin"
|
1794 |
msgid "Daily (recurring charge, for ongoing access)"
|
1795 |
msgstr ""
|
1796 |
|
1797 |
-
#:
|
1798 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:7
|
1799 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:7
|
1800 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:8
|
1801 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:8
|
1802 |
msgctxt "s2member-admin"
|
1803 |
msgid "Weekly (recurring charge, for ongoing access)"
|
1804 |
msgstr ""
|
1805 |
|
1806 |
-
#:
|
1807 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:8
|
1808 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:8
|
1809 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:9
|
1810 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:9
|
1811 |
msgctxt "s2member-admin"
|
1812 |
msgid "Bi-Weekly (recurring charge, for ongoing access)"
|
1813 |
msgstr ""
|
1814 |
|
1815 |
-
#:
|
1816 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:9
|
1817 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-membership-regular-terms.php:7
|
1818 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-regular-terms.php:7
|
1819 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:9
|
1820 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:10
|
1821 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:10
|
1822 |
msgctxt "s2member-admin"
|
1823 |
msgid "Monthly (recurring charge, for ongoing access)"
|
1824 |
msgstr ""
|
1825 |
|
1826 |
-
#:
|
1827 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:10
|
1828 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-membership-regular-terms.php:8
|
1829 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:11
|
1830 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:11
|
1831 |
msgctxt "s2member-admin"
|
1832 |
msgid "Bi-Monthly (recurring charge, for ongoing access)"
|
1833 |
msgstr ""
|
1834 |
|
1835 |
-
#:
|
1836 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:11
|
1837 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-membership-regular-terms.php:9
|
1838 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:10
|
1839 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:12
|
1840 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:12
|
1841 |
msgctxt "s2member-admin"
|
1842 |
msgid "Quarterly (recurring charge, for ongoing access)"
|
1843 |
msgstr ""
|
1844 |
|
1845 |
-
#:
|
1846 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:12
|
1847 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:11
|
1848 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:13
|
1849 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:13
|
1850 |
msgctxt "s2member-admin"
|
1851 |
msgid "Semi-Yearly (recurring charge, for ongoing access)"
|
1852 |
msgstr ""
|
1853 |
|
1854 |
-
#:
|
1855 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:13
|
1856 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:12
|
1857 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:14
|
1858 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:14
|
1859 |
msgctxt "s2member-admin"
|
1860 |
msgid "Yearly (recurring charge, for ongoing access)"
|
1861 |
msgstr ""
|
1862 |
|
1863 |
-
#:
|
1864 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:18
|
1865 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:20
|
1866 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:20
|
1867 |
msgctxt "s2member-admin"
|
1868 |
msgid "One Time (for 1 day access, non-recurring)"
|
1869 |
msgstr ""
|
1870 |
|
1871 |
-
#:
|
1872 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:19
|
1873 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:21
|
1874 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:21
|
1875 |
msgctxt "s2member-admin"
|
1876 |
msgid "One Time (for 2 day access, non-recurring)"
|
1877 |
msgstr ""
|
1878 |
|
1879 |
-
#:
|
1880 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:20
|
1881 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:22
|
1882 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:22
|
1883 |
msgctxt "s2member-admin"
|
1884 |
msgid "One Time (for 3 day access, non-recurring)"
|
1885 |
msgstr ""
|
1886 |
|
1887 |
-
#:
|
1888 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:21
|
1889 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:23
|
1890 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:23
|
1891 |
msgctxt "s2member-admin"
|
1892 |
msgid "One Time (for 4 day access, non-recurring)"
|
1893 |
msgstr ""
|
1894 |
|
1895 |
-
#:
|
1896 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:22
|
1897 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:24
|
1898 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:24
|
1899 |
msgctxt "s2member-admin"
|
1900 |
msgid "One Time (for 5 day access, non-recurring)"
|
1901 |
msgstr ""
|
1902 |
|
1903 |
-
#:
|
1904 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:23
|
1905 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:25
|
1906 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:25
|
1907 |
msgctxt "s2member-admin"
|
1908 |
msgid "One Time (for 6 day access, non-recurring)"
|
1909 |
msgstr ""
|
1910 |
|
1911 |
-
#:
|
1912 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:19
|
1913 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:25
|
1914 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:27
|
1915 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:27
|
1916 |
msgctxt "s2member-admin"
|
1917 |
msgid "One Time (for 1 week access, non-recurring)"
|
1918 |
msgstr ""
|
1919 |
|
1920 |
-
#:
|
1921 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:20
|
1922 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:26
|
1923 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:28
|
1924 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:28
|
1925 |
msgctxt "s2member-admin"
|
1926 |
msgid "One Time (for 2 week access, non-recurring)"
|
1927 |
msgstr ""
|
1928 |
|
1929 |
-
#:
|
1930 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:21
|
1931 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:27
|
1932 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:29
|
1933 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:29
|
1934 |
msgctxt "s2member-admin"
|
1935 |
msgid "One Time (for 3 week access, non-recurring)"
|
1936 |
msgstr ""
|
1937 |
|
1938 |
-
#:
|
1939 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:23
|
1940 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-regular-terms.php:13
|
1941 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:29
|
1942 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:31
|
1943 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:31
|
1944 |
msgctxt "s2member-admin"
|
1945 |
msgid "One Time (for 1 month access, non-recurring)"
|
1946 |
msgstr ""
|
1947 |
|
1948 |
-
#:
|
1949 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:24
|
1950 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:30
|
1951 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:32
|
1952 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:32
|
1953 |
msgctxt "s2member-admin"
|
1954 |
msgid "One Time (for 2 month access, non-recurring)"
|
1955 |
msgstr ""
|
1956 |
|
1957 |
-
#:
|
1958 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:25
|
1959 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:31
|
1960 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:33
|
1961 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:33
|
1962 |
msgctxt "s2member-admin"
|
1963 |
msgid "One Time (for 3 month access, non-recurring)"
|
1964 |
msgstr ""
|
1965 |
|
1966 |
-
#:
|
1967 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:26
|
1968 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:32
|
1969 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:34
|
1970 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:34
|
1971 |
msgctxt "s2member-admin"
|
1972 |
msgid "One Time (for 4 month access, non-recurring)"
|
1973 |
msgstr ""
|
1974 |
|
1975 |
-
#:
|
1976 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:27
|
1977 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:33
|
1978 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:35
|
1979 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:35
|
1980 |
msgctxt "s2member-admin"
|
1981 |
msgid "One Time (for 5 month access, non-recurring)"
|
1982 |
msgstr ""
|
1983 |
|
1984 |
-
#:
|
1985 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:28
|
1986 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:34
|
1987 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:36
|
1988 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:36
|
1989 |
msgctxt "s2member-admin"
|
1990 |
msgid "One Time (for 6 month access, non-recurring)"
|
1991 |
msgstr ""
|
1992 |
|
1993 |
-
#:
|
1994 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:30
|
1995 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:36
|
1996 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:38
|
1997 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:38
|
1998 |
msgctxt "s2member-admin"
|
1999 |
msgid "One Time (for 1 year access, non-recurring)"
|
2000 |
msgstr ""
|
2001 |
|
2002 |
-
#:
|
2003 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:36
|
2004 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-regular-terms.php:19
|
2005 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:42
|
2006 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:44
|
2007 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:44
|
2008 |
msgctxt "s2member-admin"
|
2009 |
msgid "One Time (for 1 day access, non-recurring, no trial)"
|
2010 |
msgstr ""
|
2011 |
|
2012 |
-
#:
|
2013 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:37
|
2014 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-membership-regular-terms.php:15
|
2015 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-regular-terms.php:20
|
2016 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:43
|
2017 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:45
|
2018 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:45
|
2019 |
msgctxt "s2member-admin"
|
2020 |
msgid "One Time (for 2 day access, non-recurring, no trial)"
|
2021 |
msgstr ""
|
2022 |
|
2023 |
-
#:
|
2024 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:38
|
2025 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-membership-regular-terms.php:16
|
2026 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-regular-terms.php:21
|
2027 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:44
|
2028 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:46
|
2029 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:46
|
2030 |
msgctxt "s2member-admin"
|
2031 |
msgid "One Time (for 3 day access, non-recurring, no trial)"
|
2032 |
msgstr ""
|
2033 |
|
2034 |
-
#:
|
2035 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:39
|
2036 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-membership-regular-terms.php:17
|
2037 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-regular-terms.php:22
|
2038 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:45
|
2039 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:47
|
2040 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:47
|
2041 |
msgctxt "s2member-admin"
|
2042 |
msgid "One Time (for 4 day access, non-recurring, no trial)"
|
2043 |
msgstr ""
|
2044 |
|
2045 |
-
#:
|
2046 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:40
|
2047 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-membership-regular-terms.php:18
|
2048 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-regular-terms.php:23
|
2049 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:46
|
2050 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:48
|
2051 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:48
|
2052 |
msgctxt "s2member-admin"
|
2053 |
msgid "One Time (for 5 day access, non-recurring, no trial)"
|
2054 |
msgstr ""
|
2055 |
|
2056 |
-
#:
|
2057 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:41
|
2058 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-membership-regular-terms.php:19
|
2059 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-regular-terms.php:24
|
2060 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:47
|
2061 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:49
|
2062 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:49
|
2063 |
msgctxt "s2member-admin"
|
2064 |
msgid "One Time (for 6 day access, non-recurring, no trial)"
|
2065 |
msgstr ""
|
2066 |
|
2067 |
-
#:
|
2068 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:43
|
2069 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-membership-regular-terms.php:21
|
2070 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-regular-terms.php:26
|
2071 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:49
|
2072 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:51
|
2073 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:51
|
2074 |
msgctxt "s2member-admin"
|
2075 |
msgid "One Time (for 1 week access, non-recurring, no trial)"
|
2076 |
msgstr ""
|
2077 |
|
2078 |
-
#:
|
2079 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:44
|
2080 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-membership-regular-terms.php:22
|
2081 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-regular-terms.php:27
|
2082 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:50
|
2083 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:52
|
2084 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:52
|
2085 |
msgctxt "s2member-admin"
|
2086 |
msgid "One Time (for 2 week access, non-recurring, no trial)"
|
2087 |
msgstr ""
|
2088 |
|
2089 |
-
#:
|
2090 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:45
|
2091 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-membership-regular-terms.php:23
|
2092 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-regular-terms.php:28
|
2093 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:51
|
2094 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:53
|
2095 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:53
|
2096 |
msgctxt "s2member-admin"
|
2097 |
msgid "One Time (for 3 week access, non-recurring, no trial)"
|
2098 |
msgstr ""
|
2099 |
|
2100 |
-
#:
|
2101 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:47
|
2102 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-membership-regular-terms.php:25
|
2103 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-regular-terms.php:30
|
2104 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:53
|
2105 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:55
|
2106 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:55
|
2107 |
msgctxt "s2member-admin"
|
2108 |
msgid "One Time (for 1 month access, non-recurring, no trial)"
|
2109 |
msgstr ""
|
2110 |
|
2111 |
-
#:
|
2112 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:48
|
2113 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-membership-regular-terms.php:26
|
2114 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-regular-terms.php:31
|
2115 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:54
|
2116 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:56
|
2117 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:56
|
2118 |
msgctxt "s2member-admin"
|
2119 |
msgid "One Time (for 2 month access, non-recurring, no trial)"
|
2120 |
msgstr ""
|
2121 |
|
2122 |
-
#:
|
2123 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:49
|
2124 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-membership-regular-terms.php:27
|
2125 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-regular-terms.php:32
|
2126 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:55
|
2127 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:57
|
2128 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:57
|
2129 |
msgctxt "s2member-admin"
|
2130 |
msgid "One Time (for 3 month access, non-recurring, no trial)"
|
2131 |
msgstr ""
|
2132 |
|
2133 |
-
#:
|
2134 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:50
|
2135 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-membership-regular-terms.php:28
|
2136 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-regular-terms.php:33
|
2137 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:56
|
2138 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:58
|
2139 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:58
|
2140 |
msgctxt "s2member-admin"
|
2141 |
msgid "One Time (for 4 month access, non-recurring, no trial)"
|
2142 |
msgstr ""
|
2143 |
|
2144 |
-
#:
|
2145 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:51
|
2146 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-membership-regular-terms.php:29
|
2147 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-regular-terms.php:34
|
2148 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:57
|
2149 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:59
|
2150 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:59
|
2151 |
msgctxt "s2member-admin"
|
2152 |
msgid "One Time (for 5 month access, non-recurring, no trial)"
|
2153 |
msgstr ""
|
2154 |
|
2155 |
-
#:
|
2156 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:52
|
2157 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-membership-regular-terms.php:30
|
2158 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-regular-terms.php:35
|
2159 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:58
|
2160 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:60
|
2161 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:60
|
2162 |
msgctxt "s2member-admin"
|
2163 |
msgid "One Time (for 6 month access, non-recurring, no trial)"
|
2164 |
msgstr ""
|
2165 |
|
2166 |
-
#:
|
2167 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:54
|
2168 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-membership-regular-terms.php:32
|
2169 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-regular-terms.php:37
|
2170 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:60
|
2171 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:62
|
2172 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:62
|
2173 |
msgctxt "s2member-admin"
|
2174 |
msgid "One Time (for 1 year access, non-recurring, no trial)"
|
2175 |
msgstr ""
|
2176 |
|
2177 |
-
#:
|
2178 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:55
|
2179 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-regular-terms.php:38
|
2180 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:61
|
2181 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:63
|
2182 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:63
|
2183 |
msgctxt "s2member-admin"
|
2184 |
msgid "One Time (for 2 year access, non-recurring, no trial)"
|
2185 |
msgstr ""
|
2186 |
|
2187 |
-
#:
|
2188 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:56
|
2189 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-regular-terms.php:39
|
2190 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:62
|
2191 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:64
|
2192 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:64
|
2193 |
msgctxt "s2member-admin"
|
2194 |
msgid "One Time (for 3 year access, non-recurring, no trial)"
|
2195 |
msgstr ""
|
2196 |
|
2197 |
-
#:
|
2198 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:57
|
2199 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-regular-terms.php:40
|
2200 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:63
|
2201 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:65
|
2202 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:65
|
2203 |
msgctxt "s2member-admin"
|
2204 |
msgid "One Time (for 4 year access, non-recurring, no trial)"
|
2205 |
msgstr ""
|
2206 |
|
2207 |
-
#:
|
2208 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:58
|
2209 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-regular-terms.php:41
|
2210 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:64
|
2211 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:66
|
2212 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:66
|
2213 |
msgctxt "s2member-admin"
|
2214 |
msgid "One Time (for 5 year access, non-recurring, no trial)"
|
2215 |
msgstr ""
|
2216 |
|
2217 |
-
#:
|
2218 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:60
|
2219 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-regular-terms.php:43
|
2220 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:66
|
2221 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:68
|
2222 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:68
|
2223 |
msgctxt "s2member-admin"
|
2224 |
msgid "One Time (for lifetime access, non-recurring, no trial)"
|
2225 |
msgstr ""
|
2226 |
|
2227 |
-
#:
|
2228 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-trial-terms.php:6
|
2229 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-membership-trial-terms.php:6
|
2230 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-trial-terms.php:6
|
2231 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-trial-terms.php:6
|
2232 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-trial-terms.php:6
|
2233 |
msgctxt "s2member-admin"
|
2234 |
msgid "Days"
|
2235 |
msgstr ""
|
2236 |
|
2237 |
-
#:
|
2238 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-trial-terms.php:7
|
2239 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-trial-terms.php:7
|
2240 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-trial-terms.php:7
|
2241 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-trial-terms.php:7
|
2242 |
msgctxt "s2member-admin"
|
2243 |
msgid "Weeks"
|
2244 |
msgstr ""
|
2245 |
|
2246 |
-
#:
|
2247 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-trial-terms.php:8
|
2248 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-trial-terms.php:8
|
2249 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-trial-terms.php:8
|
2250 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-trial-terms.php:8
|
2251 |
msgctxt "s2member-admin"
|
2252 |
msgid "Months"
|
2253 |
msgstr ""
|
2254 |
|
2255 |
-
#:
|
2256 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-trial-terms.php:9
|
2257 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-trial-terms.php:9
|
2258 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-trial-terms.php:9
|
2259 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-trial-terms.php:9
|
2260 |
msgctxt "s2member-admin"
|
2261 |
msgid "Years"
|
2262 |
msgstr ""
|
2263 |
|
2264 |
-
#:
|
2265 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:6
|
2266 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:6
|
2267 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:6
|
2268 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:6
|
2269 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:6
|
2270 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:6
|
2271 |
msgctxt "s2member-admin"
|
2272 |
msgid "Expires In Hours"
|
2273 |
msgstr ""
|
2274 |
|
2275 |
-
#:
|
2276 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:7
|
2277 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:7
|
2278 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:7
|
2279 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:7
|
2280 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:7
|
2281 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:7
|
2282 |
msgctxt "s2member-admin"
|
2283 |
msgid "Buy Now (Specific Post/Page, link valid for 2 hours)"
|
2284 |
msgstr ""
|
2285 |
|
2286 |
-
#:
|
2287 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:8
|
2288 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:8
|
2289 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:8
|
2290 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:8
|
2291 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:8
|
2292 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:8
|
2293 |
msgctxt "s2member-admin"
|
2294 |
msgid "Buy Now (Specific Post/Page, link valid for 4 hours)"
|
2295 |
msgstr ""
|
2296 |
|
2297 |
-
#:
|
2298 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:9
|
2299 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:9
|
2300 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:9
|
2301 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:9
|
2302 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:9
|
2303 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:9
|
2304 |
msgctxt "s2member-admin"
|
2305 |
msgid "Buy Now (Specific Post/Page, link valid for 6 hours)"
|
2306 |
msgstr ""
|
2307 |
|
2308 |
-
#:
|
2309 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:10
|
2310 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:10
|
2311 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:10
|
2312 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:10
|
2313 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:10
|
2314 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:10
|
2315 |
msgctxt "s2member-admin"
|
2316 |
msgid "Buy Now (Specific Post/Page, link valid for 8 hours)"
|
2317 |
msgstr ""
|
2318 |
|
2319 |
-
#:
|
2320 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:11
|
2321 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:11
|
2322 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:11
|
2323 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:11
|
2324 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:11
|
2325 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:11
|
2326 |
msgctxt "s2member-admin"
|
2327 |
msgid "Buy Now (Specific Post/Page, link valid for 10 hours)"
|
2328 |
msgstr ""
|
2329 |
|
2330 |
-
#:
|
2331 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:12
|
2332 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:12
|
2333 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:12
|
2334 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:12
|
2335 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:12
|
2336 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:12
|
2337 |
msgctxt "s2member-admin"
|
2338 |
msgid "Buy Now (Specific Post/Page, link valid for 12 hours)"
|
2339 |
msgstr ""
|
2340 |
|
2341 |
-
#:
|
2342 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:17
|
2343 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:17
|
2344 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-sp-hours.php:6
|
2345 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:17
|
2346 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:17
|
2347 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:17
|
2348 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:17
|
2349 |
msgctxt "s2member-admin"
|
2350 |
msgid "Expires In Days"
|
2351 |
msgstr ""
|
2352 |
|
2353 |
-
#:
|
2354 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:18
|
2355 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:18
|
2356 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:18
|
2357 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:18
|
2358 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:18
|
2359 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:18
|
2360 |
msgctxt "s2member-admin"
|
2361 |
msgid "Buy Now (Specific Post/Page, link valid for 1 day)"
|
2362 |
msgstr ""
|
2363 |
|
2364 |
-
#:
|
2365 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:19
|
2366 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:19
|
2367 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-sp-hours.php:7
|
2368 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:19
|
2369 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:19
|
2370 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:19
|
2371 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:19
|
2372 |
msgctxt "s2member-admin"
|
2373 |
msgid "Buy Now (Specific Post/Page, link valid for 2 days)"
|
2374 |
msgstr ""
|
2375 |
|
2376 |
-
#:
|
2377 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:20
|
2378 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:20
|
2379 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-sp-hours.php:8
|
2380 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:20
|
2381 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:20
|
2382 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:20
|
2383 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:20
|
2384 |
msgctxt "s2member-admin"
|
2385 |
msgid "Buy Now (Specific Post/Page, link valid for 3 days)"
|
2386 |
msgstr ""
|
2387 |
|
2388 |
-
#:
|
2389 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:21
|
2390 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:21
|
2391 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-sp-hours.php:9
|
2392 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:21
|
2393 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:21
|
2394 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:21
|
2395 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:21
|
2396 |
msgctxt "s2member-admin"
|
2397 |
msgid "Buy Now (Specific Post/Page, link valid for 4 days)"
|
2398 |
msgstr ""
|
2399 |
|
2400 |
-
#:
|
2401 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:22
|
2402 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:22
|
2403 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-sp-hours.php:10
|
2404 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:22
|
2405 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:22
|
2406 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:22
|
2407 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:22
|
2408 |
msgctxt "s2member-admin"
|
2409 |
msgid "Buy Now (Specific Post/Page, link valid for 5 days)"
|
2410 |
msgstr ""
|
2411 |
|
2412 |
-
#:
|
2413 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:23
|
2414 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:23
|
2415 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-sp-hours.php:11
|
2416 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:23
|
2417 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:23
|
2418 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:23
|
2419 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:23
|
2420 |
msgctxt "s2member-admin"
|
2421 |
msgid "Buy Now (Specific Post/Page, link valid for 6 days)"
|
2422 |
msgstr ""
|
2423 |
|
2424 |
-
#:
|
2425 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:28
|
2426 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:28
|
2427 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-sp-hours.php:16
|
2428 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:28
|
2429 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:28
|
2430 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:28
|
2431 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:28
|
2432 |
msgctxt "s2member-admin"
|
2433 |
msgid "Expires In Weeks"
|
2434 |
msgstr ""
|
2435 |
|
2436 |
-
#:
|
2437 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:29
|
2438 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:29
|
2439 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-sp-hours.php:17
|
2440 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:29
|
2441 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:29
|
2442 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:29
|
2443 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:29
|
2444 |
msgctxt "s2member-admin"
|
2445 |
msgid "Buy Now (Specific Post/Page, link valid for 1 week)"
|
2446 |
msgstr ""
|
2447 |
|
2448 |
-
#:
|
2449 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:30
|
2450 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:30
|
2451 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-sp-hours.php:18
|
2452 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:30
|
2453 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:30
|
2454 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:30
|
2455 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:30
|
2456 |
msgctxt "s2member-admin"
|
2457 |
msgid "Buy Now (Specific Post/Page, link valid for 2 weeks)"
|
2458 |
msgstr ""
|
2459 |
|
2460 |
-
#:
|
2461 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:31
|
2462 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:31
|
2463 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-sp-hours.php:19
|
2464 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:31
|
2465 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:31
|
2466 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:31
|
2467 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:31
|
2468 |
msgctxt "s2member-admin"
|
2469 |
msgid "Buy Now (Specific Post/Page, link valid for 3 weeks)"
|
2470 |
msgstr ""
|
2471 |
|
2472 |
-
#:
|
2473 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:36
|
2474 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:36
|
2475 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-sp-hours.php:24
|
2476 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:36
|
2477 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:36
|
2478 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:36
|
2479 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:36
|
2480 |
msgctxt "s2member-admin"
|
2481 |
msgid "Expires In Months"
|
2482 |
msgstr ""
|
2483 |
|
2484 |
-
#:
|
2485 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:37
|
2486 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:37
|
2487 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-sp-hours.php:25
|
2488 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:37
|
2489 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:37
|
2490 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:37
|
2491 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:37
|
2492 |
msgctxt "s2member-admin"
|
2493 |
msgid "Buy Now (Specific Post/Page, link valid for 1 month)"
|
2494 |
msgstr ""
|
2495 |
|
2496 |
-
#:
|
2497 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:38
|
2498 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:38
|
2499 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-sp-hours.php:26
|
2500 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:38
|
2501 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:38
|
2502 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:38
|
2503 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:38
|
2504 |
msgctxt "s2member-admin"
|
2505 |
msgid "Buy Now (Specific Post/Page, link valid for 2 months)"
|
2506 |
msgstr ""
|
2507 |
|
2508 |
-
#:
|
2509 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:39
|
2510 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:39
|
2511 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-sp-hours.php:27
|
2512 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:39
|
2513 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:39
|
2514 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:39
|
2515 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:39
|
2516 |
msgctxt "s2member-admin"
|
2517 |
msgid "Buy Now (Specific Post/Page, link valid for 3 months)"
|
2518 |
msgstr ""
|
2519 |
|
2520 |
-
#:
|
2521 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:40
|
2522 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:40
|
2523 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-sp-hours.php:28
|
2524 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:40
|
2525 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:40
|
2526 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:40
|
2527 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:40
|
2528 |
msgctxt "s2member-admin"
|
2529 |
msgid "Buy Now (Specific Post/Page, link valid for 6 months)"
|
2530 |
msgstr ""
|
2531 |
|
2532 |
-
#:
|
2533 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:45
|
2534 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:45
|
2535 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-sp-hours.php:33
|
2536 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:45
|
2537 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:45
|
2538 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:45
|
2539 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:45
|
2540 |
msgctxt "s2member-admin"
|
2541 |
msgid "Expires In Years"
|
2542 |
msgstr ""
|
2543 |
|
2544 |
-
#:
|
2545 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:46
|
2546 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:46
|
2547 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-sp-hours.php:34
|
2548 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:46
|
2549 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:46
|
2550 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:46
|
2551 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:46
|
2552 |
msgctxt "s2member-admin"
|
2553 |
msgid "Buy Now (Specific Post/Page, link valid for 1 year)"
|
2554 |
msgstr ""
|
2555 |
|
2556 |
-
#:
|
2557 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:47
|
2558 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:47
|
2559 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-sp-hours.php:35
|
2560 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:47
|
2561 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:47
|
2562 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:47
|
2563 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:47
|
2564 |
msgctxt "s2member-admin"
|
2565 |
msgid "Buy Now (Specific Post/Page, link valid for 2 years)"
|
2566 |
msgstr ""
|
2567 |
|
2568 |
-
#:
|
2569 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:48
|
2570 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:48
|
2571 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-sp-hours.php:36
|
2572 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:48
|
2573 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:48
|
2574 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:48
|
2575 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:48
|
2576 |
msgctxt "s2member-admin"
|
2577 |
msgid "Buy Now (Specific Post/Page, link valid for 3 years)"
|
2578 |
msgstr ""
|
2579 |
|
2580 |
-
#:
|
2581 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:49
|
2582 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:49
|
2583 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-sp-hours.php:37
|
2584 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:49
|
2585 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:49
|
2586 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:49
|
2587 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:49
|
2588 |
msgctxt "s2member-admin"
|
2589 |
msgid "Buy Now (Specific Post/Page, link valid for 4 years)"
|
2590 |
msgstr ""
|
2591 |
|
2592 |
-
#:
|
2593 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:50
|
2594 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:50
|
2595 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-sp-hours.php:38
|
2596 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:50
|
2597 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:50
|
2598 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:50
|
2599 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:50
|
2600 |
msgctxt "s2member-admin"
|
2601 |
msgid "Buy Now (Specific Post/Page, link valid for 5 years)"
|
2602 |
msgstr ""
|
2603 |
|
2604 |
-
#:
|
2605 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-sp-hours.php:51
|
2606 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-sp-hours.php:51
|
2607 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-sp-hours.php:39
|
2608 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-sp-hours.php:51
|
2609 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-sp-hours.php:51
|
2610 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-sp-hours.php:51
|
2611 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-sp-hours.php:51
|
2612 |
msgctxt "s2member-admin"
|
2613 |
msgid "Buy Now (Specific Post/Page, link valid for 50 years)"
|
2614 |
msgstr ""
|
2615 |
-
|
2616 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/alipay/alipay-return-in.inc.php:117
|
2617 |
-
msgctxt "s2member-front"
|
2618 |
-
msgid ""
|
2619 |
-
"ERROR: Unexpected status. Please contact Support for assistance.\n"
|
2620 |
-
"\n"
|
2621 |
-
"The AliPay status did NOT match a required action."
|
2622 |
-
msgstr ""
|
2623 |
-
|
2624 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/alipay/alipay-return-in.inc.php:132
|
2625 |
-
msgctxt "s2member-front"
|
2626 |
-
msgid ""
|
2627 |
-
"ERROR: Unable to verify POST vars. Please contact Support for assistance.\n"
|
2628 |
-
"\n"
|
2629 |
-
"This is most likely related to an invalid AliPay configuration. If you are the site owner, please check: s2Member -› AliPay Options."
|
2630 |
-
msgstr ""
|
2631 |
-
|
2632 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-cancellation-in.inc.php:114
|
2633 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-cancellation-in.inc.php:115
|
2634 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-cancellation-pf-in.inc.php:115
|
2635 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-cancellation-in.inc.php:116
|
2636 |
-
msgctxt "s2member-front"
|
2637 |
-
msgid "<strong>Billing termination confirmed.</strong> Your account has been cancelled."
|
2638 |
-
msgstr ""
|
2639 |
-
|
2640 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-cancellation-in.inc.php:122
|
2641 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-cancellation-in.inc.php:130
|
2642 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-cancellation-in.inc.php:138
|
2643 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-cancellation-in.inc.php:127
|
2644 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-cancellation-in.inc.php:139
|
2645 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-cancellation-in.inc.php:147
|
2646 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-cancellation-pf-in.inc.php:127
|
2647 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-cancellation-pf-in.inc.php:144
|
2648 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-cancellation-pf-in.inc.php:157
|
2649 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-cancellation-in.inc.php:127
|
2650 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-cancellation-in.inc.php:137
|
2651 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-cancellation-in.inc.php:147
|
2652 |
-
msgctxt "s2member-front"
|
2653 |
-
msgid "<strong>Billing terminated.</strong> Your account has been cancelled."
|
2654 |
-
msgstr ""
|
2655 |
-
|
2656 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-cancellation-in.inc.php:145
|
2657 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-update-in.inc.php:136
|
2658 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-cancellation-in.inc.php:156
|
2659 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-cancellation-pf-in.inc.php:169
|
2660 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-in.inc.php:153
|
2661 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-pf-in.inc.php:145
|
2662 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-cancellation-in.inc.php:156
|
2663 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-update-in.inc.php:101
|
2664 |
-
msgctxt "s2member-front"
|
2665 |
-
msgid "You're <strong>NOT</strong> logged in."
|
2666 |
-
msgstr ""
|
2667 |
-
|
2668 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:290
|
2669 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:630
|
2670 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:343
|
2671 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:668
|
2672 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:411
|
2673 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:751
|
2674 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:478
|
2675 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:917
|
2676 |
-
msgctxt "s2member-front"
|
2677 |
-
msgid "<strong>Thank you.</strong> Your account has been updated.<br />— Please <a href=\"%s\" rel=\"nofollow\">log back in</a> now."
|
2678 |
-
msgstr ""
|
2679 |
-
|
2680 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:494
|
2681 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:747
|
2682 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:503
|
2683 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:821
|
2684 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:588
|
2685 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:903
|
2686 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:746
|
2687 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:1071
|
2688 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-checkout-in.inc.php:407
|
2689 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-checkout-in.inc.php:602
|
2690 |
-
msgctxt "s2member-front"
|
2691 |
-
msgid "<strong>Thank you.</strong> Your account has been approved.<br />— Please <a href=\"%s\" rel=\"nofollow\">login</a>."
|
2692 |
-
msgstr ""
|
2693 |
-
|
2694 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:503
|
2695 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:527
|
2696 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:756
|
2697 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:777
|
2698 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-registration-in.inc.php:124
|
2699 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-registration-in.inc.php:141
|
2700 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:512
|
2701 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:533
|
2702 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:830
|
2703 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:851
|
2704 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:597
|
2705 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:618
|
2706 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:912
|
2707 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:933
|
2708 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:755
|
2709 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:776
|
2710 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:1080
|
2711 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:1101
|
2712 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-registration-in.inc.php:124
|
2713 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-registration-in.inc.php:141
|
2714 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-checkout-in.inc.php:419
|
2715 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-checkout-in.inc.php:614
|
2716 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-registration-in.inc.php:126
|
2717 |
-
msgctxt "s2member-front"
|
2718 |
-
msgid "<strong>Oops.</strong> A slight problem. Please contact Support for assistance."
|
2719 |
-
msgstr ""
|
2720 |
-
|
2721 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:518
|
2722 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:768
|
2723 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:524
|
2724 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:842
|
2725 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:609
|
2726 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:924
|
2727 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:767
|
2728 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:1092
|
2729 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-checkout-in.inc.php:408
|
2730 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-checkout-in.inc.php:603
|
2731 |
-
msgctxt "s2member-front"
|
2732 |
-
msgid "<strong>Thank you.</strong> Your account has been approved.<br />— You'll receive an email momentarily."
|
2733 |
-
msgstr ""
|
2734 |
-
|
2735 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-checkout-in.inc.php:788
|
2736 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:862
|
2737 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php:944
|
2738 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:1112
|
2739 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-pf-in.inc.php:136
|
2740 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-checkout-in.inc.php:618
|
2741 |
-
msgctxt "s2member-front"
|
2742 |
-
msgid "<strong>Unknown error.</strong> Please contact Support for assistance."
|
2743 |
-
msgstr ""
|
2744 |
-
|
2745 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:162
|
2746 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:273
|
2747 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:426
|
2748 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:566
|
2749 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:777
|
2750 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:167
|
2751 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:278
|
2752 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:432
|
2753 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:572
|
2754 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:785
|
2755 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-form-in.inc.php:162
|
2756 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-form-in.inc.php:243
|
2757 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-form-in.inc.php:317
|
2758 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-form-in.inc.php:386
|
2759 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-form-in.inc.php:514
|
2760 |
-
msgctxt "s2member-front"
|
2761 |
-
msgid "Security Code"
|
2762 |
-
msgstr ""
|
2763 |
-
|
2764 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:240
|
2765 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:744
|
2766 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:246
|
2767 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:753
|
2768 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-form-in.inc.php:216
|
2769 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-form-in.inc.php:487
|
2770 |
-
msgctxt "s2member-front"
|
2771 |
-
msgid "Additional Info"
|
2772 |
-
msgstr ""
|
2773 |
-
|
2774 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:381
|
2775 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:521
|
2776 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:696
|
2777 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:387
|
2778 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:527
|
2779 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:705
|
2780 |
-
msgctxt "s2member-front"
|
2781 |
-
msgid "Visa"
|
2782 |
-
msgstr ""
|
2783 |
-
|
2784 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:381
|
2785 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:521
|
2786 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:696
|
2787 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:387
|
2788 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:527
|
2789 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:705
|
2790 |
-
msgctxt "s2member-front"
|
2791 |
-
msgid "MasterCard"
|
2792 |
-
msgstr ""
|
2793 |
-
|
2794 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:381
|
2795 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:521
|
2796 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:696
|
2797 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:387
|
2798 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:527
|
2799 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:705
|
2800 |
-
msgctxt "s2member-front"
|
2801 |
-
msgid "Discover"
|
2802 |
-
msgstr ""
|
2803 |
-
|
2804 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:381
|
2805 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:521
|
2806 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:696
|
2807 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:387
|
2808 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:527
|
2809 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:705
|
2810 |
-
msgctxt "s2member-front"
|
2811 |
-
msgid "American Express"
|
2812 |
-
msgstr ""
|
2813 |
-
|
2814 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:391
|
2815 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:531
|
2816 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:706
|
2817 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:397
|
2818 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:537
|
2819 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:715
|
2820 |
-
msgctxt "s2member-front"
|
2821 |
-
msgid "01 January"
|
2822 |
-
msgstr ""
|
2823 |
-
|
2824 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:391
|
2825 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:531
|
2826 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:706
|
2827 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:397
|
2828 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:537
|
2829 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:715
|
2830 |
-
msgctxt "s2member-front"
|
2831 |
-
msgid "02 February"
|
2832 |
-
msgstr ""
|
2833 |
-
|
2834 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:391
|
2835 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:531
|
2836 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:706
|
2837 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:397
|
2838 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:537
|
2839 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:715
|
2840 |
-
msgctxt "s2member-front"
|
2841 |
-
msgid "03 March"
|
2842 |
-
msgstr ""
|
2843 |
-
|
2844 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:391
|
2845 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:531
|
2846 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:706
|
2847 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:397
|
2848 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:537
|
2849 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:715
|
2850 |
-
msgctxt "s2member-front"
|
2851 |
-
msgid "04 April"
|
2852 |
-
msgstr ""
|
2853 |
-
|
2854 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:391
|
2855 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:531
|
2856 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:706
|
2857 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:397
|
2858 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:537
|
2859 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:715
|
2860 |
-
msgctxt "s2member-front"
|
2861 |
-
msgid "05 May"
|
2862 |
-
msgstr ""
|
2863 |
-
|
2864 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:391
|
2865 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:531
|
2866 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:706
|
2867 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:397
|
2868 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:537
|
2869 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:715
|
2870 |
-
msgctxt "s2member-front"
|
2871 |
-
msgid "06 June"
|
2872 |
-
msgstr ""
|
2873 |
-
|
2874 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:391
|
2875 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:531
|
2876 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:706
|
2877 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:397
|
2878 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:537
|
2879 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:715
|
2880 |
-
msgctxt "s2member-front"
|
2881 |
-
msgid "07 July"
|
2882 |
-
msgstr ""
|
2883 |
-
|
2884 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:391
|
2885 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:531
|
2886 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:706
|
2887 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:397
|
2888 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:537
|
2889 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:715
|
2890 |
-
msgctxt "s2member-front"
|
2891 |
-
msgid "08 August"
|
2892 |
-
msgstr ""
|
2893 |
-
|
2894 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:391
|
2895 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:531
|
2896 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:706
|
2897 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:397
|
2898 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:537
|
2899 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:715
|
2900 |
-
msgctxt "s2member-front"
|
2901 |
-
msgid "09 September"
|
2902 |
-
msgstr ""
|
2903 |
-
|
2904 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:391
|
2905 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:531
|
2906 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:706
|
2907 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:397
|
2908 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:537
|
2909 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:715
|
2910 |
-
msgctxt "s2member-front"
|
2911 |
-
msgid "10 October"
|
2912 |
-
msgstr ""
|
2913 |
-
|
2914 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:391
|
2915 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:531
|
2916 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:706
|
2917 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:397
|
2918 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:537
|
2919 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:715
|
2920 |
-
msgctxt "s2member-front"
|
2921 |
-
msgid "11 November"
|
2922 |
-
msgstr ""
|
2923 |
-
|
2924 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:391
|
2925 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:531
|
2926 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-form-in.inc.php:706
|
2927 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:397
|
2928 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:537
|
2929 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:715
|
2930 |
-
msgctxt "s2member-front"
|
2931 |
-
msgid "12 December"
|
2932 |
-
msgstr ""
|
2933 |
-
|
2934 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-registration-in.inc.php:117
|
2935 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-registration-in.inc.php:117
|
2936 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-registration-in.inc.php:118
|
2937 |
-
msgctxt "s2member-front"
|
2938 |
-
msgid "<strong>Thank you.</strong> Please <a href=\"%s\" rel=\"nofollow\">login</a>."
|
2939 |
-
msgstr ""
|
2940 |
-
|
2941 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-registration-in.inc.php:134
|
2942 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-registration-in.inc.php:134
|
2943 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-registration-in.inc.php:119
|
2944 |
-
msgctxt "s2member-front"
|
2945 |
-
msgid "<strong>Thank you.</strong> You'll receive an email momentarily."
|
2946 |
-
msgstr ""
|
2947 |
-
|
2948 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:205
|
2949 |
-
msgctxt "s2member-admin"
|
2950 |
-
msgid "Authorize.Net configuration error. Please configure your Authorize.Net API Login ID."
|
2951 |
-
msgstr ""
|
2952 |
-
|
2953 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:208
|
2954 |
-
msgctxt "s2member-admin"
|
2955 |
-
msgid "Authorize.Net configuration error. Your Authorize.Net API Transaction Key is not yet configured."
|
2956 |
-
msgstr ""
|
2957 |
-
|
2958 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:211
|
2959 |
-
msgctxt "s2member-admin"
|
2960 |
-
msgid "Authorize.Net configuration error. Your Authorize.Net Secret MD5 Hash is not yet configured."
|
2961 |
-
msgstr ""
|
2962 |
-
|
2963 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:233
|
2964 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:517
|
2965 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:236
|
2966 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:595
|
2967 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:243
|
2968 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:526
|
2969 |
-
msgctxt "s2member-front"
|
2970 |
-
msgid "You must <a href=\"%s\" rel=\"nofollow\">log in</a> to cancel your account."
|
2971 |
-
msgstr ""
|
2972 |
-
|
2973 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:236
|
2974 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:239
|
2975 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:246
|
2976 |
-
msgctxt "s2member-front"
|
2977 |
-
msgid "Nothing to cancel. You're NOT a paid Member."
|
2978 |
-
msgstr ""
|
2979 |
-
|
2980 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:241
|
2981 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:244
|
2982 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:244
|
2983 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:250
|
2984 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:259
|
2985 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:265
|
2986 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:249
|
2987 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:252
|
2988 |
-
msgctxt "s2member-front"
|
2989 |
-
msgid "Nothing to cancel. You have NO recurring fees."
|
2990 |
-
msgstr ""
|
2991 |
-
|
2992 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:250
|
2993 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:528
|
2994 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:271
|
2995 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:606
|
2996 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:257
|
2997 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:537
|
2998 |
-
msgctxt "s2member-front"
|
2999 |
-
msgid "You must <a href=\"%s\" rel=\"nofollow\">log in</a> to update your billing information."
|
3000 |
-
msgstr ""
|
3001 |
-
|
3002 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:253
|
3003 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:274
|
3004 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:260
|
3005 |
-
msgctxt "s2member-front"
|
3006 |
-
msgid "Nothing to update. You're NOT a paid Member."
|
3007 |
-
msgstr ""
|
3008 |
-
|
3009 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:258
|
3010 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:261
|
3011 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:279
|
3012 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:288
|
3013 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:300
|
3014 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:306
|
3015 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:263
|
3016 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:266
|
3017 |
-
msgctxt "s2member-front"
|
3018 |
-
msgid "Nothing to update. You have NO recurring fees. Or, your billing profile is no longer active. Please contact Support if you need assistance."
|
3019 |
-
msgstr ""
|
3020 |
-
|
3021 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:267
|
3022 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:312
|
3023 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:271
|
3024 |
-
msgctxt "s2member-admin"
|
3025 |
-
msgid "Invalid form configuration. Missing \"level\" attribute. Membership Level. Must be numeric [0-%s]."
|
3026 |
-
msgstr ""
|
3027 |
-
|
3028 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:270
|
3029 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:315
|
3030 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:274
|
3031 |
-
msgctxt "s2member-admin"
|
3032 |
-
msgid "Invalid form configuration. Invalid \"level\" attribute. Membership Level. Must be numeric [0-%s]."
|
3033 |
-
msgstr ""
|
3034 |
-
|
3035 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:273
|
3036 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:361
|
3037 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:318
|
3038 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:424
|
3039 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:277
|
3040 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:368
|
3041 |
-
msgctxt "s2member-admin"
|
3042 |
-
msgid "Invalid form configuration. Invalid \"ccaps\" attribute. Custom Capabilities. When provided, must be all lowercase [a-z_0-9,]. A preceding `-all,` directive is also acceptable."
|
3043 |
-
msgstr ""
|
3044 |
-
|
3045 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:276
|
3046 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:385
|
3047 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:321
|
3048 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:466
|
3049 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:280
|
3050 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:392
|
3051 |
-
msgctxt "s2member-admin"
|
3052 |
-
msgid "Invalid form configuration. Invalid \"tp\" attribute. The Trial Period. When provided, must be numeric."
|
3053 |
-
msgstr ""
|
3054 |
-
|
3055 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:279
|
3056 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:388
|
3057 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:324
|
3058 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:469
|
3059 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:283
|
3060 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:395
|
3061 |
-
msgctxt "s2member-admin"
|
3062 |
-
msgid "Invalid form configuration. Invalid \"tp\" attribute. The Trial Period. When provided, must be >= 1."
|
3063 |
-
msgstr ""
|
3064 |
-
|
3065 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:282
|
3066 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:391
|
3067 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:327
|
3068 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:472
|
3069 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:286
|
3070 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:398
|
3071 |
-
msgctxt "s2member-admin"
|
3072 |
-
msgid "Invalid form configuration. Missing \"tt\" attribute. The Trial Term. When \"tp\" is provided, \"tt\" (Trial Term) must be one of D,W,M,Y."
|
3073 |
-
msgstr ""
|
3074 |
-
|
3075 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:285
|
3076 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:394
|
3077 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:330
|
3078 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:475
|
3079 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:289
|
3080 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:401
|
3081 |
-
msgctxt "s2member-admin"
|
3082 |
-
msgid "Invalid form configuration. Invalid \"tt\" attribute. The Trial Term. When \"tp\" is provided, \"tt\" (Trial Term) must be one of D,W,M,Y."
|
3083 |
-
msgstr ""
|
3084 |
-
|
3085 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:288
|
3086 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:333
|
3087 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:292
|
3088 |
-
msgctxt "s2member-admin"
|
3089 |
-
msgid "Invalid form configuration. Invalid \"custom\" attribute. When provided, must start with your domain name."
|
3090 |
-
msgstr ""
|
3091 |
-
|
3092 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:293
|
3093 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:338
|
3094 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:297
|
3095 |
-
msgctxt "s2member-admin"
|
3096 |
-
msgid "Invalid form configuration. Missing \"ids\" attribute. Must contain comma-delimited Post/Page IDs."
|
3097 |
-
msgstr ""
|
3098 |
-
|
3099 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:296
|
3100 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:341
|
3101 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:300
|
3102 |
-
msgctxt "s2member-admin"
|
3103 |
-
msgid "Invalid form configuration. Invalid \"ids\" attribute. Must contain comma-delimited Post/Page IDs. Must contain [0-9,] only."
|
3104 |
-
msgstr ""
|
3105 |
-
|
3106 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:299
|
3107 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:344
|
3108 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:303
|
3109 |
-
msgctxt "s2member-admin"
|
3110 |
-
msgid "Invalid form configuration. Missing \"exp\" attribute. Specific Post/Page Expiration (in hours). Must be numeric."
|
3111 |
-
msgstr ""
|
3112 |
-
|
3113 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:302
|
3114 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:347
|
3115 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:306
|
3116 |
-
msgctxt "s2member-admin"
|
3117 |
-
msgid "Invalid form configuration. Invalid \"exp\" attribute. Specific Post/Page Expiration (in hours). Must be numeric."
|
3118 |
-
msgstr ""
|
3119 |
-
|
3120 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:305
|
3121 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:350
|
3122 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:309
|
3123 |
-
msgctxt "s2member-admin"
|
3124 |
-
msgid "Invalid form configuration. Invalid \"exp\" attribute. Specific Post/Page Expiration (in hours). Must be >= 1."
|
3125 |
-
msgstr ""
|
3126 |
-
|
3127 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:308
|
3128 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:353
|
3129 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:312
|
3130 |
-
msgctxt "s2member-admin"
|
3131 |
-
msgid "Invalid form configuration. Invalid \"exp\" attribute. Specific Post/Page Expiration (in hours). Must be <= 43800."
|
3132 |
-
msgstr ""
|
3133 |
-
|
3134 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:311
|
3135 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:356
|
3136 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:315
|
3137 |
-
msgctxt "s2member-admin"
|
3138 |
-
msgid "Invalid form configuration. Missing \"sp_ids_exp\" internal attribute. Please check Shortcode Attributes."
|
3139 |
-
msgstr ""
|
3140 |
-
|
3141 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:314
|
3142 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:359
|
3143 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:318
|
3144 |
-
msgctxt "s2member-admin"
|
3145 |
-
msgid "Invalid form configuration. Invalid \"sp_ids_exp\" internal attribute. Please check Shortcode Attributes."
|
3146 |
-
msgstr ""
|
3147 |
-
|
3148 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:317
|
3149 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:367
|
3150 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:362
|
3151 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:430
|
3152 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:321
|
3153 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:374
|
3154 |
-
msgctxt "s2member-admin"
|
3155 |
-
msgid "Invalid form configuration. Missing \"desc\" attribute. Please provide a Description for this form."
|
3156 |
-
msgstr ""
|
3157 |
-
|
3158 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:320
|
3159 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:370
|
3160 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:365
|
3161 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:433
|
3162 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:324
|
3163 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:377
|
3164 |
-
msgctxt "s2member-admin"
|
3165 |
-
msgid "Invalid form configuration. Your \"desc\" (Description) attribute must be <= 100 characters long."
|
3166 |
-
msgstr ""
|
3167 |
-
|
3168 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:323
|
3169 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:373
|
3170 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:368
|
3171 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:436
|
3172 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:327
|
3173 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:380
|
3174 |
-
msgctxt "s2member-admin"
|
3175 |
-
msgid "Invalid form configuration. Missing \"custom\" attribute. Must start with your domain name."
|
3176 |
-
msgstr ""
|
3177 |
-
|
3178 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:326
|
3179 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:371
|
3180 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:330
|
3181 |
-
msgctxt "s2member-admin"
|
3182 |
-
msgid "Invalid form configuration. Invalid \"custom\" attribute. Must start with your domain name."
|
3183 |
-
msgstr ""
|
3184 |
-
|
3185 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:329
|
3186 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:379
|
3187 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:374
|
3188 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:442
|
3189 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:333
|
3190 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:386
|
3191 |
-
msgctxt "s2member-admin"
|
3192 |
-
msgid "Invalid form configuration. Missing \"cc\" attribute. Must be a 3 character Currency Code."
|
3193 |
-
msgstr ""
|
3194 |
-
|
3195 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:332
|
3196 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:382
|
3197 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:377
|
3198 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:445
|
3199 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:336
|
3200 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:389
|
3201 |
-
msgctxt "s2member-admin"
|
3202 |
-
msgid "Invalid form configuration. Invalid \"cc\" attribute. Must be a 3 character Currency Code."
|
3203 |
-
msgstr ""
|
3204 |
-
|
3205 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:335
|
3206 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:463
|
3207 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:398
|
3208 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:535
|
3209 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:339
|
3210 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:467
|
3211 |
-
msgctxt "s2member-admin"
|
3212 |
-
msgid "Invalid form configuration. Missing \"ra\" attribute. The Regular Amount. Must be >= 0.00."
|
3213 |
-
msgstr ""
|
3214 |
-
|
3215 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:338
|
3216 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:466
|
3217 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:401
|
3218 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:538
|
3219 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:342
|
3220 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:470
|
3221 |
-
msgctxt "s2member-admin"
|
3222 |
-
msgid "Invalid form configuration. Invalid \"ra\" attribute. The Regular Amount. Must be numeric."
|
3223 |
-
msgstr ""
|
3224 |
-
|
3225 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:341
|
3226 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:469
|
3227 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:404
|
3228 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:541
|
3229 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:345
|
3230 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:473
|
3231 |
-
msgctxt "s2member-admin"
|
3232 |
-
msgid "Invalid form configuration. Invalid \"ra\" attribute. The Regular Amount. Must be >= 0.00."
|
3233 |
-
msgstr ""
|
3234 |
-
|
3235 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:344
|
3236 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:472
|
3237 |
-
msgctxt "s2member-admin"
|
3238 |
-
msgid "Invalid form configuration. Invalid \"ra\" attribute. The Regular Amount. Must be <= 99999.00."
|
3239 |
-
msgstr ""
|
3240 |
-
|
3241 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:349
|
3242 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:412
|
3243 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:356
|
3244 |
-
msgctxt "s2member-front"
|
3245 |
-
msgid "You must <a href=\"%s\" rel=\"nofollow\">login</a> to update your billing plan."
|
3246 |
-
msgstr ""
|
3247 |
-
|
3248 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:352
|
3249 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:415
|
3250 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:359
|
3251 |
-
msgctxt "s2member-front"
|
3252 |
-
msgid "You must <a href=\"%s\" rel=\"nofollow\">login</a> before making this purchase."
|
3253 |
-
msgstr ""
|
3254 |
-
|
3255 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:355
|
3256 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:418
|
3257 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:362
|
3258 |
-
msgctxt "s2member-admin"
|
3259 |
-
msgid "Invalid form configuration. Missing \"level\" attribute. Membership Level. Must be numeric [1-%s], or an asterisk (*)."
|
3260 |
-
msgstr ""
|
3261 |
-
|
3262 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:358
|
3263 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:421
|
3264 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:365
|
3265 |
-
msgctxt "s2member-admin"
|
3266 |
-
msgid "Invalid form configuration. Invalid \"level\" attribute. Membership Level. Must be numeric [1-%s], or an asterisk (*)."
|
3267 |
-
msgstr ""
|
3268 |
-
|
3269 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:364
|
3270 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:427
|
3271 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:371
|
3272 |
-
msgctxt "s2member-admin"
|
3273 |
-
msgid "Invalid form configuration. Missing or invalid \"ccaps\" attribute. When \"level\" is \"*\" for (Independent Custom Capabilities), \"ccaps\" is required. All lowercase [a-z_0-9,]. A preceding `-all,` directive is also acceptable."
|
3274 |
-
msgstr ""
|
3275 |
-
|
3276 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:376
|
3277 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:439
|
3278 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:383
|
3279 |
-
msgctxt "s2member-admin"
|
3280 |
-
msgid "Invalid form configuration. Invalid \"custom\" attribute. Must start with matching domain."
|
3281 |
-
msgstr ""
|
3282 |
-
|
3283 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:397
|
3284 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:404
|
3285 |
-
msgctxt "s2member-admin"
|
3286 |
-
msgid "Invalid form configuration. Invalid \"tt, tp\" attributes. There is an Intial/Trial amount, and \"tt\" (Trial Term) attribute is \"D\", and \"tp\" (Trial Period) > 365."
|
3287 |
-
msgstr ""
|
3288 |
-
|
3289 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:400
|
3290 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:407
|
3291 |
-
msgctxt "s2member-admin"
|
3292 |
-
msgid "Invalid form configuration. Invalid \"tt, tp\" attributes. There is an Intial/Trial amount, and \"tt\" (Trial Term) attribute is \"W\", and \"tp\" (Trial Period) > 52."
|
3293 |
-
msgstr ""
|
3294 |
-
|
3295 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:403
|
3296 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:410
|
3297 |
-
msgctxt "s2member-admin"
|
3298 |
-
msgid "Invalid form configuration. Invalid \"tt, tp\" attributes. There is an Intial/Trial amount, and \"tt\" (Trial Term) attribute is \"M\", and \"tp\" (Trial Period) > 12."
|
3299 |
-
msgstr ""
|
3300 |
-
|
3301 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:406
|
3302 |
-
msgctxt "s2member-admin"
|
3303 |
-
msgid "Invalid form configuration. Invalid \"tt, tp\" attributes. There is an Intial/Trial amount, and \"tt\" (Trial Term) attribute is \"Y\", and \"tp\" (Trial Period) > 1."
|
3304 |
-
msgstr ""
|
3305 |
-
|
3306 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:409
|
3307 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:478
|
3308 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:416
|
3309 |
-
msgctxt "s2member-admin"
|
3310 |
-
msgid "Invalid form configuration. Invalid \"ta\" attribute. The Trial Amount. When provided, must be numeric."
|
3311 |
-
msgstr ""
|
3312 |
-
|
3313 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:412
|
3314 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:481
|
3315 |
-
msgctxt "s2member-admin"
|
3316 |
-
msgid "Invalid form configuration. Invalid \"ta\" attribute. The Trial Amount. When provided, must be >= 0.00."
|
3317 |
-
msgstr ""
|
3318 |
-
|
3319 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:415
|
3320 |
-
msgctxt "s2member-admin"
|
3321 |
-
msgid "Invalid form configuration. Invalid \"ta\" attribute. The Trial Amount. When provided, must be <= 99999.00."
|
3322 |
-
msgstr ""
|
3323 |
-
|
3324 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:418
|
3325 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:487
|
3326 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:425
|
3327 |
-
msgctxt "s2member-admin"
|
3328 |
-
msgid "Invalid form configuration. Missing \"rp\" attribute. The Regular Period. Must be >= 1."
|
3329 |
-
msgstr ""
|
3330 |
-
|
3331 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:421
|
3332 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:490
|
3333 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:428
|
3334 |
-
msgctxt "s2member-admin"
|
3335 |
-
msgid "Invalid form configuration. Invalid \"rp\" attribute. The Regular Period. Must be numeric."
|
3336 |
-
msgstr ""
|
3337 |
-
|
3338 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:424
|
3339 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:493
|
3340 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:431
|
3341 |
-
msgctxt "s2member-admin"
|
3342 |
-
msgid "Invalid form configuration. Invalid \"rp\" attribute. The Regular Period. Must be >= 1."
|
3343 |
-
msgstr ""
|
3344 |
-
|
3345 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:427
|
3346 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:496
|
3347 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:434
|
3348 |
-
msgctxt "s2member-admin"
|
3349 |
-
msgid "Invalid form configuration. Missing \"rt\" attribute. The Regular Term. Must be one of D,W,M,Y,L."
|
3350 |
-
msgstr ""
|
3351 |
-
|
3352 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:430
|
3353 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:499
|
3354 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:437
|
3355 |
-
msgctxt "s2member-admin"
|
3356 |
-
msgid "Invalid form configuration. Invalid \"rt\" attribute. The Regular Term. Must be one of D,W,M,Y,L."
|
3357 |
-
msgstr ""
|
3358 |
-
|
3359 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:433
|
3360 |
-
msgctxt "s2member-admin"
|
3361 |
-
msgid "Invalid form configuration. Invalid \"rt, rp, rr\" attributes. The \"rt\" (Regular Term) attribute is \"D\", \"rp\" (Regular Period) is < 7, and \"rr\" is not \"BN\" (Buy Now)."
|
3362 |
-
msgstr ""
|
3363 |
-
|
3364 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:436
|
3365 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:502
|
3366 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:440
|
3367 |
-
msgctxt "s2member-admin"
|
3368 |
-
msgid "Invalid form configuration. Invalid \"rt, rp, rr\" attributes. The \"rt\" (Regular Term) attribute is \"D\", \"rp\" (Regular Period) > 365, and \"rr\" is not \"BN\" (Buy Now)."
|
3369 |
-
msgstr ""
|
3370 |
-
|
3371 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:439
|
3372 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:505
|
3373 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:443
|
3374 |
-
msgctxt "s2member-admin"
|
3375 |
-
msgid "Invalid form configuration. Invalid \"rt, rp, rr\" attributes. The \"rt\" (Regular Term) attribute is \"W\", \"rp\" (Regular Period) > 52, and \"rr\" is not \"BN\" (Buy Now)."
|
3376 |
-
msgstr ""
|
3377 |
-
|
3378 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:442
|
3379 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:508
|
3380 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:446
|
3381 |
-
msgctxt "s2member-admin"
|
3382 |
-
msgid "Invalid form configuration. Invalid \"rt, rp, rr\" attributes. The \"rt\" (Regular Term) attribute is \"M\", \"rp\" (Regular Period) > 12, and \"rr\" is not \"BN\" (Buy Now)."
|
3383 |
-
msgstr ""
|
3384 |
-
|
3385 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:445
|
3386 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:517
|
3387 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:449
|
3388 |
-
msgctxt "s2member-admin"
|
3389 |
-
msgid "Invalid form configuration. Invalid \"rt, rp, rr\" attributes. The \"rt\" (Regular Term) attribute is \"Y\", \"rp\" (Regular Period) > 1, and \"rr\" is not \"BN\" (Buy Now)."
|
3390 |
-
msgstr ""
|
3391 |
-
|
3392 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:448
|
3393 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:520
|
3394 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:452
|
3395 |
-
msgctxt "s2member-admin"
|
3396 |
-
msgid "Invalid form configuration. Invalid \"rp, rt\" attributes. The \"rt\" (Regular Term) attribute is \"L\" (Lifetime), and \"rp\" (Regular Period) > 1."
|
3397 |
-
msgstr ""
|
3398 |
-
|
3399 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:451
|
3400 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:523
|
3401 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:455
|
3402 |
-
msgctxt "s2member-admin"
|
3403 |
-
msgid "Invalid form configuration. Invalid \"rt, rr\" attributes. The \"rt\" (Regular Term) attribute is \"L\" (Lifetime), and \"rr\" is not \"BN\" (Buy Now)."
|
3404 |
-
msgstr ""
|
3405 |
-
|
3406 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:454
|
3407 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:526
|
3408 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:458
|
3409 |
-
msgctxt "s2member-admin"
|
3410 |
-
msgid "Invalid form configuration. Missing \"level_ccaps_eotper\" attribute. Please check Shortcode Attributes."
|
3411 |
-
msgstr ""
|
3412 |
-
|
3413 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:457
|
3414 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:460
|
3415 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:529
|
3416 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:532
|
3417 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:461
|
3418 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:464
|
3419 |
-
msgctxt "s2member-admin"
|
3420 |
-
msgid "Invalid form configuration. Invalid \"level_ccaps_eotper\" attribute. Please check Shortcode Attributes."
|
3421 |
-
msgstr ""
|
3422 |
-
|
3423 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:475
|
3424 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:547
|
3425 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:482
|
3426 |
-
msgctxt "s2member-admin"
|
3427 |
-
msgid "Invalid form configuration. Invalid \"rr\" attribute. Regular Recurring. When provided, must be 0, 1, or BN."
|
3428 |
-
msgstr ""
|
3429 |
-
|
3430 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:478
|
3431 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:550
|
3432 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:485
|
3433 |
-
msgctxt "s2member-admin"
|
3434 |
-
msgid "Invalid form configuration. Invalid \"rr, tp\" attributes. The \"rr\" (Regular Recurring) attribute is \"BN\" (Buy Now), and \"tp\" (Trial Period) is not \"0\"."
|
3435 |
-
msgstr ""
|
3436 |
-
|
3437 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:481
|
3438 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:553
|
3439 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:488
|
3440 |
-
msgctxt "s2member-admin"
|
3441 |
-
msgid "Invalid form configuration. Invalid \"level, rr\" attributes. The \"level\" (Level) attribute is \"*\" for (Independent Custom Capabilities), and \"rr\" is not \"BN\" (Buy Now)."
|
3442 |
-
msgstr ""
|
3443 |
-
|
3444 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:484
|
3445 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:556
|
3446 |
-
msgctxt "s2member-admin"
|
3447 |
-
msgid "Invalid form configuration. Invalid \"ta, tp, tt\" attributes. Trial Period. When provided, these cannot be exactly the same as your \"ra, rp, rt\" attributes."
|
3448 |
-
msgstr ""
|
3449 |
-
|
3450 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:487
|
3451 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:559
|
3452 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:494
|
3453 |
-
msgctxt "s2member-admin"
|
3454 |
-
msgid "Invalid form configuration. Invalid \"rrt\" attribute. Recurring Times (fixed). When provided, must be numeric."
|
3455 |
-
msgstr ""
|
3456 |
-
|
3457 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:490
|
3458 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:562
|
3459 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:497
|
3460 |
-
msgctxt "s2member-admin"
|
3461 |
-
msgid "Invalid form configuration. Invalid \"rrt\" attribute. Recurring Times (fixed). When provided, must be >= 1."
|
3462 |
-
msgstr ""
|
3463 |
-
|
3464 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:493
|
3465 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:565
|
3466 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:500
|
3467 |
-
msgctxt "s2member-admin"
|
3468 |
-
msgid "Invalid form configuration. Invalid \"rr, rrt\" attributes. When \"rrt\" (Recurring Times) is provided, \"rr\" (Regular Recurring) must be 1."
|
3469 |
-
msgstr ""
|
3470 |
-
|
3471 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:520
|
3472 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:570
|
3473 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:617
|
3474 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:673
|
3475 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:768
|
3476 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:598
|
3477 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:648
|
3478 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:695
|
3479 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:751
|
3480 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:846
|
3481 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:529
|
3482 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:546
|
3483 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:595
|
3484 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:624
|
3485 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:694
|
3486 |
-
msgctxt "s2member-front"
|
3487 |
-
msgid "Missing or invalid Security Code. Please try again."
|
3488 |
-
msgstr ""
|
3489 |
-
|
3490 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:523
|
3491 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:531
|
3492 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:684
|
3493 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:601
|
3494 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:609
|
3495 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:762
|
3496 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:532
|
3497 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:540
|
3498 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:637
|
3499 |
-
msgctxt "s2member-admin"
|
3500 |
-
msgid "Unable to process. You are an Administrator. Stopping here for security. Otherwise, an Administrator could lose access."
|
3501 |
-
msgstr ""
|
3502 |
-
|
3503 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:534
|
3504 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:634
|
3505 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:729
|
3506 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:612
|
3507 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:712
|
3508 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:807
|
3509 |
-
msgctxt "s2member-front"
|
3510 |
-
msgid "Missing Card Type (Billing Method). Please try again."
|
3511 |
-
msgstr ""
|
3512 |
-
|
3513 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:537
|
3514 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:637
|
3515 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:640
|
3516 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:732
|
3517 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:735
|
3518 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:615
|
3519 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:715
|
3520 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:718
|
3521 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:810
|
3522 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:813
|
3523 |
-
msgctxt "s2member-front"
|
3524 |
-
msgid "Invalid Card Type (Billing Method). Please try again."
|
3525 |
-
msgstr ""
|
3526 |
-
|
3527 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:540
|
3528 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:643
|
3529 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:738
|
3530 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:618
|
3531 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:721
|
3532 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:816
|
3533 |
-
msgctxt "s2member-front"
|
3534 |
-
msgid "Missing Card Number. Please try again."
|
3535 |
-
msgstr ""
|
3536 |
-
|
3537 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:543
|
3538 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:646
|
3539 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:741
|
3540 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:621
|
3541 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:724
|
3542 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:819
|
3543 |
-
msgctxt "s2member-front"
|
3544 |
-
msgid "Missing Card Expiration Date (mm/yyyy). Please try again."
|
3545 |
-
msgstr ""
|
3546 |
-
|
3547 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:546
|
3548 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:649
|
3549 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:744
|
3550 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:624
|
3551 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:727
|
3552 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:822
|
3553 |
-
msgctxt "s2member-front"
|
3554 |
-
msgid "Invalid Card Expiration Date. Must be in this format (mm/yyyy). Please try again."
|
3555 |
-
msgstr ""
|
3556 |
-
|
3557 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:549
|
3558 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:652
|
3559 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:747
|
3560 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:627
|
3561 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:730
|
3562 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:825
|
3563 |
-
msgctxt "s2member-front"
|
3564 |
-
msgid "Missing Card Verification Code. It's on the back of your Card. 3-4 digits. Please try again."
|
3565 |
-
msgstr ""
|
3566 |
-
|
3567 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:552
|
3568 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:655
|
3569 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:750
|
3570 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:630
|
3571 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:733
|
3572 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:828
|
3573 |
-
msgctxt "s2member-front"
|
3574 |
-
msgid "Missing Card Start Date, or Issue #. Required for Maestro/Solo. Please try again."
|
3575 |
-
msgstr ""
|
3576 |
-
|
3577 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:555
|
3578 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:658
|
3579 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:753
|
3580 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:633
|
3581 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:736
|
3582 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:831
|
3583 |
-
msgctxt "s2member-front"
|
3584 |
-
msgid "Missing Street Address. Please try again."
|
3585 |
-
msgstr ""
|
3586 |
-
|
3587 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:558
|
3588 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:661
|
3589 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:756
|
3590 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:636
|
3591 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:739
|
3592 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:834
|
3593 |
-
msgctxt "s2member-front"
|
3594 |
-
msgid "Missing City/Town. Please try again."
|
3595 |
-
msgstr ""
|
3596 |
-
|
3597 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:561
|
3598 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:664
|
3599 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:759
|
3600 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:639
|
3601 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:742
|
3602 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:837
|
3603 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:615
|
3604 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:685
|
3605 |
-
msgctxt "s2member-front"
|
3606 |
-
msgid "Missing State/Province. Please try again."
|
3607 |
-
msgstr ""
|
3608 |
-
|
3609 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:564
|
3610 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:667
|
3611 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:762
|
3612 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:642
|
3613 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:745
|
3614 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:840
|
3615 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:618
|
3616 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:688
|
3617 |
-
msgctxt "s2member-front"
|
3618 |
-
msgid "Missing Country. Please try again."
|
3619 |
-
msgstr ""
|
3620 |
-
|
3621 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:567
|
3622 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:670
|
3623 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:765
|
3624 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:645
|
3625 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:748
|
3626 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:843
|
3627 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:621
|
3628 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:691
|
3629 |
-
msgctxt "s2member-front"
|
3630 |
-
msgid "Missing Postal/Zip Code. Please try again."
|
3631 |
-
msgstr ""
|
3632 |
-
|
3633 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:575
|
3634 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:622
|
3635 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:687
|
3636 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:653
|
3637 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:700
|
3638 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:765
|
3639 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:553
|
3640 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:600
|
3641 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:640
|
3642 |
-
msgctxt "s2member-front"
|
3643 |
-
msgid "Missing First Name. Please try again."
|
3644 |
-
msgstr ""
|
3645 |
-
|
3646 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:578
|
3647 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:625
|
3648 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:690
|
3649 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:656
|
3650 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:703
|
3651 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:768
|
3652 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:556
|
3653 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:603
|
3654 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:643
|
3655 |
-
msgctxt "s2member-front"
|
3656 |
-
msgid "Missing Last Name. Please try again."
|
3657 |
-
msgstr ""
|
3658 |
-
|
3659 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:581
|
3660 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:628
|
3661 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:693
|
3662 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:659
|
3663 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:706
|
3664 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:771
|
3665 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:559
|
3666 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:606
|
3667 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:646
|
3668 |
-
msgctxt "s2member-front"
|
3669 |
-
msgid "Missing or invalid Email Address. Please try again."
|
3670 |
-
msgstr ""
|
3671 |
-
|
3672 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:584
|
3673 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:631
|
3674 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:696
|
3675 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:662
|
3676 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:709
|
3677 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:774
|
3678 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:562
|
3679 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:609
|
3680 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:649
|
3681 |
-
msgctxt "s2member-front"
|
3682 |
-
msgid "Invalid Email Address. Please try again."
|
3683 |
-
msgstr ""
|
3684 |
-
|
3685 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:587
|
3686 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:699
|
3687 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:665
|
3688 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:777
|
3689 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:565
|
3690 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:652
|
3691 |
-
msgctxt "s2member-front"
|
3692 |
-
msgid "That Email Address is already in use. Please try again."
|
3693 |
-
msgstr ""
|
3694 |
-
|
3695 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:590
|
3696 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:702
|
3697 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:668
|
3698 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:780
|
3699 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:568
|
3700 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:655
|
3701 |
-
msgctxt "s2member-front"
|
3702 |
-
msgid "Missing or invalid Username. Please try again."
|
3703 |
-
msgstr ""
|
3704 |
-
|
3705 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:593
|
3706 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:705
|
3707 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:671
|
3708 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:783
|
3709 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:571
|
3710 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:658
|
3711 |
-
msgctxt "s2member-front"
|
3712 |
-
msgid "Invalid Username. Please try again. Use ONLY lowercase alphanumerics."
|
3713 |
-
msgstr ""
|
3714 |
-
|
3715 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:596
|
3716 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:708
|
3717 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:674
|
3718 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:786
|
3719 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:574
|
3720 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:661
|
3721 |
-
msgctxt "s2member-front"
|
3722 |
-
msgid "That Username is already in use. Please try again."
|
3723 |
-
msgstr ""
|
3724 |
-
|
3725 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:602
|
3726 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:714
|
3727 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:680
|
3728 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:792
|
3729 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:580
|
3730 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:667
|
3731 |
-
msgctxt "s2member-front"
|
3732 |
-
msgid "Missing Password. Please try again."
|
3733 |
-
msgstr ""
|
3734 |
-
|
3735 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:605
|
3736 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:717
|
3737 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:683
|
3738 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:795
|
3739 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:583
|
3740 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:670
|
3741 |
-
msgctxt "s2member-front"
|
3742 |
-
msgid "Invalid Password. Must be at least 6 characters. Please try again."
|
3743 |
-
msgstr ""
|
3744 |
-
|
3745 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:608
|
3746 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:720
|
3747 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:686
|
3748 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:798
|
3749 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:586
|
3750 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:673
|
3751 |
-
msgctxt "s2member-front"
|
3752 |
-
msgid "Invalid Password. Max length is 20 characters. Please try again."
|
3753 |
-
msgstr ""
|
3754 |
-
|
3755 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:611
|
3756 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:723
|
3757 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:689
|
3758 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:801
|
3759 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:589
|
3760 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:676
|
3761 |
-
msgctxt "s2member-front"
|
3762 |
-
msgid "Password fields do NOT match. Please try again."
|
3763 |
-
msgstr ""
|
3764 |
-
|
3765 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:678
|
3766 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:756
|
3767 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:631
|
3768 |
-
msgctxt "s2member-front"
|
3769 |
-
msgid "You must <a href=\"%s\" rel=\"nofollow\">log in</a> to modify your billing plan."
|
3770 |
-
msgstr ""
|
3771 |
-
|
3772 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:681
|
3773 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:759
|
3774 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:634
|
3775 |
-
msgctxt "s2member-front"
|
3776 |
-
msgid "You must <a href=\"%s\" rel=\"nofollow\">log in</a> before making this purchase."
|
3777 |
-
msgstr ""
|
3778 |
-
|
3779 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php:771
|
3780 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:849
|
3781 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:697
|
3782 |
-
msgctxt "s2member-front"
|
3783 |
-
msgid "Unknown form submission type. Please contact Support."
|
3784 |
-
msgstr ""
|
3785 |
-
|
3786 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-sp-checkout-in.inc.php:169
|
3787 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-sp-checkout-in.inc.php:288
|
3788 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-sp-checkout-in.inc.php:154
|
3789 |
-
msgctxt "s2member-front"
|
3790 |
-
msgid "<strong>Thank you.</strong> Your purchase has been approved.<br />— Please <a href=\"%s\" rel=\"nofollow\">click here</a> to proceed."
|
3791 |
-
msgstr ""
|
3792 |
-
|
3793 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-sp-checkout-in.inc.php:176
|
3794 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-sp-checkout-in.inc.php:295
|
3795 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-sp-checkout-in.inc.php:161
|
3796 |
-
msgctxt "s2member-front"
|
3797 |
-
msgid "<strong>Oops.</strong> Unable to generate Access Link. Please contact Support for assistance."
|
3798 |
-
msgstr ""
|
3799 |
-
|
3800 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-update-in.inc.php:110
|
3801 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-in.inc.php:115
|
3802 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-pf-in.inc.php:118
|
3803 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-update-in.inc.php:88
|
3804 |
-
msgctxt "s2member-front"
|
3805 |
-
msgid "<strong>Confirmed.</strong> Your billing information has been updated."
|
3806 |
-
msgstr ""
|
3807 |
-
|
3808 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-update-in.inc.php:122
|
3809 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-in.inc.php:131
|
3810 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-pf-in.inc.php:130
|
3811 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-update-in.inc.php:97
|
3812 |
-
msgctxt "s2member-front"
|
3813 |
-
msgid "<strong>Unable to update.</strong> You have NO recurring fees. Or, your billing profile is no longer active. Please contact Support if you need assistance."
|
3814 |
-
msgstr ""
|
3815 |
-
|
3816 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-update-in.inc.php:131
|
3817 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-in.inc.php:148
|
3818 |
-
msgctxt "s2member-front"
|
3819 |
-
msgid "<strong>Oops.</strong> No Subscr. ID. Please contact Support for assistance."
|
3820 |
-
msgstr ""
|
3821 |
-
|
3822 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:663
|
3823 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:806
|
3824 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:311
|
3825 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:467
|
3826 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:857
|
3827 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1011
|
3828 |
-
msgctxt "s2member-front percentage-symbol"
|
3829 |
-
msgid "%"
|
3830 |
-
msgstr ""
|
3831 |
-
|
3832 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:805
|
3833 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:466
|
3834 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1010
|
3835 |
-
msgctxt "s2member-front"
|
3836 |
-
msgid " + tax"
|
3837 |
-
msgstr ""
|
3838 |
-
|
3839 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:850
|
3840 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:902
|
3841 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:915
|
3842 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:937
|
3843 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:997
|
3844 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1012
|
3845 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:512
|
3846 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:564
|
3847 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:577
|
3848 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:597
|
3849 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:657
|
3850 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:672
|
3851 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1056
|
3852 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1108
|
3853 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1121
|
3854 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1141
|
3855 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1201
|
3856 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1216
|
3857 |
-
msgctxt "s2member-front"
|
3858 |
-
msgid "COUPON %s off. (Now: %s)"
|
3859 |
-
msgstr ""
|
3860 |
-
|
3861 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:851
|
3862 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:903
|
3863 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:916
|
3864 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:938
|
3865 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:998
|
3866 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1013
|
3867 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:513
|
3868 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:565
|
3869 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:578
|
3870 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:598
|
3871 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:658
|
3872 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:673
|
3873 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1057
|
3874 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1109
|
3875 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1122
|
3876 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1142
|
3877 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1202
|
3878 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1217
|
3879 |
-
msgctxt "s2member-front"
|
3880 |
-
msgid "<div>Coupon: <strong>%s off</strong>. (Now: <strong>%s</strong>)</div>"
|
3881 |
-
msgstr ""
|
3882 |
-
|
3883 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:863
|
3884 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:876
|
3885 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:889
|
3886 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:952
|
3887 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:967
|
3888 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:982
|
3889 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:525
|
3890 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:538
|
3891 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:551
|
3892 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:612
|
3893 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:627
|
3894 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:642
|
3895 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1069
|
3896 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1082
|
3897 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1095
|
3898 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1156
|
3899 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1171
|
3900 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1186
|
3901 |
-
msgctxt "s2member-front"
|
3902 |
-
msgid "COUPON %s off. (Now: %s, then %s)"
|
3903 |
-
msgstr ""
|
3904 |
-
|
3905 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:864
|
3906 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:877
|
3907 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:890
|
3908 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:953
|
3909 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:968
|
3910 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:983
|
3911 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:526
|
3912 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:539
|
3913 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:552
|
3914 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:613
|
3915 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:628
|
3916 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:643
|
3917 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1070
|
3918 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1083
|
3919 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1096
|
3920 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1157
|
3921 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1172
|
3922 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1187
|
3923 |
-
msgctxt "s2member-front"
|
3924 |
-
msgid "<div>Coupon: <strong>%s off</strong>. (Now: <strong>%s, then %s</strong>)</div>"
|
3925 |
-
msgstr ""
|
3926 |
-
|
3927 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:920
|
3928 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1017
|
3929 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:581
|
3930 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:676
|
3931 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1125
|
3932 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1220
|
3933 |
-
msgctxt "s2member-front"
|
3934 |
-
msgid "<div>Sorry, your Coupon is not applicable.</div>"
|
3935 |
-
msgstr ""
|
3936 |
-
|
3937 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1021
|
3938 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:679
|
3939 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1224
|
3940 |
-
msgctxt "s2member-front"
|
3941 |
-
msgid "<div>Coupon: <strong>%s0.00 off</strong>.</div>"
|
3942 |
-
msgstr ""
|
3943 |
-
|
3944 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1025
|
3945 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:682
|
3946 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1228
|
3947 |
-
msgctxt "s2member-front"
|
3948 |
-
msgid "<div>Sorry, your Coupon cannot be applied to this particular purchase.</div>"
|
3949 |
-
msgstr ""
|
3950 |
-
|
3951 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1029
|
3952 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:685
|
3953 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1232
|
3954 |
-
msgctxt "s2member-front"
|
3955 |
-
msgid "<div>Sorry, your Coupon <strong>expired</strong>: <em>%s</em>.</div>"
|
3956 |
-
msgstr ""
|
3957 |
-
|
3958 |
-
#. translators: `%1$s` is new price/description, after coupon applied. `%2$s`
|
3959 |
-
#. is original description.
|
3960 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1035
|
3961 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:690
|
3962 |
-
msgctxt "s2member-front"
|
3963 |
-
msgid "%1$s ~ ORIGINALLY: %2$s"
|
3964 |
-
msgstr ""
|
3965 |
-
|
3966 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1064
|
3967 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/authnet/authnet-utilities.inc.php:1067
|
3968 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:719
|
3969 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-utilities.inc.php:722
|
3970 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1266
|
3971 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1269
|
3972 |
-
msgctxt "s2member-front"
|
3973 |
-
msgid "<div>Sorry, your Coupon is N/A, invalid or expired.</div>"
|
3974 |
-
msgstr ""
|
3975 |
-
|
3976 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/clickbank/clickbank-return-in.inc.php:187
|
3977 |
-
msgctxt "s2member-front"
|
3978 |
-
msgid "ERROR: Unexpected txnType. Please contact Support for assistance.\\n\\nThe ClickBank txnType did not match a required action."
|
3979 |
-
msgstr ""
|
3980 |
-
|
3981 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/clickbank/clickbank-return-in.inc.php:222
|
3982 |
-
msgctxt "s2member-front"
|
3983 |
-
msgid "ERROR: Unable to verify POST vars. Please contact Support for assistance.\\n\\nThis is most likely related to an invalid ClickBank configuration. If you are the site owner, please check: s2Member -› ClickBank Options."
|
3984 |
-
msgstr ""
|
3985 |
-
|
3986 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/clickbank/clickbank-utilities.inc.php:237
|
3987 |
-
msgctxt "s2member-front"
|
3988 |
-
msgid "<strong>Reminder:</strong> Purchases at this site will appear on your credit card or bank statement as: <code>ClickBank</code> or <code>CLKBANK*COM</code>."
|
3989 |
-
msgstr ""
|
3990 |
-
|
3991 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-cancellation-in.inc.php:123
|
3992 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:247
|
3993 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:262
|
3994 |
-
msgctxt "s2member-front"
|
3995 |
-
msgid "<strong>Unable to cancel at this time.</strong> Your account is pending other changes. Please try again in 15 minutes."
|
3996 |
-
msgstr ""
|
3997 |
-
|
3998 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-cancellation-in.inc.php:135
|
3999 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-cancellation-pf-in.inc.php:140
|
4000 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:257
|
4001 |
-
msgctxt "s2member-front"
|
4002 |
-
msgid "Please <a href=\"%s\" rel=\"nofollow\">log in at PayPal</a> to cancel your Subscription."
|
4003 |
-
msgstr ""
|
4004 |
-
|
4005 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:355
|
4006 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-in.inc.php:680
|
4007 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:495
|
4008 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php:929
|
4009 |
-
msgctxt "s2member-front"
|
4010 |
-
msgid "<strong>Sorry.</strong> Your account is pending other changes. Please try again in 15 minutes."
|
4011 |
-
msgstr ""
|
4012 |
-
|
4013 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:387
|
4014 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:527
|
4015 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:705
|
4016 |
-
msgctxt "s2member-front"
|
4017 |
-
msgid "Maestro"
|
4018 |
-
msgstr ""
|
4019 |
-
|
4020 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:387
|
4021 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:527
|
4022 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:705
|
4023 |
-
msgctxt "s2member-front"
|
4024 |
-
msgid "Solo"
|
4025 |
-
msgstr ""
|
4026 |
-
|
4027 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:527
|
4028 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:705
|
4029 |
-
msgctxt "s2member-front"
|
4030 |
-
msgid "PayPal"
|
4031 |
-
msgstr ""
|
4032 |
-
|
4033 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:620
|
4034 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-form-in.inc.php:834
|
4035 |
-
msgctxt "s2member-front"
|
4036 |
-
msgid "We Accept PayPal"
|
4037 |
-
msgstr ""
|
4038 |
-
|
4039 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:205
|
4040 |
-
msgctxt "s2member-admin"
|
4041 |
-
msgid "PayPal configuration error. Please configure your PayPal Email Address."
|
4042 |
-
msgstr ""
|
4043 |
-
|
4044 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:208
|
4045 |
-
msgctxt "s2member-admin"
|
4046 |
-
msgid "PayPal configuration error. Your PayPal API Username is not yet configured."
|
4047 |
-
msgstr ""
|
4048 |
-
|
4049 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:211
|
4050 |
-
msgctxt "s2member-admin"
|
4051 |
-
msgid "PayPal configuration error. Your PayPal API Password is not yet configured."
|
4052 |
-
msgstr ""
|
4053 |
-
|
4054 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:214
|
4055 |
-
msgctxt "s2member-admin"
|
4056 |
-
msgid "PayPal configuration error. Your PayPal API Signature is not yet configured."
|
4057 |
-
msgstr ""
|
4058 |
-
|
4059 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:282
|
4060 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:295
|
4061 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:298
|
4062 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-in.inc.php:79
|
4063 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-in.inc.php:135
|
4064 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-in.inc.php:139
|
4065 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-pf-in.inc.php:79
|
4066 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-pf-in.inc.php:134
|
4067 |
-
msgctxt "s2member-front"
|
4068 |
-
msgid "Please <a href=\"%s\" rel=\"nofollow\">log in at PayPal</a> to update your billing information."
|
4069 |
-
msgstr ""
|
4070 |
-
|
4071 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:285
|
4072 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:303
|
4073 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-in.inc.php:127
|
4074 |
-
msgctxt "s2member-front"
|
4075 |
-
msgid "<strong>Unable to update at this time.</strong> Your account is pending other changes. Please try again in 15 minutes."
|
4076 |
-
msgstr ""
|
4077 |
-
|
4078 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:380
|
4079 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:448
|
4080 |
-
msgctxt "s2member-admin"
|
4081 |
-
msgid "Invalid form configuration. Missing \"dg\" attribute. Digital indicator. Must be numeric [0-1]."
|
4082 |
-
msgstr ""
|
4083 |
-
|
4084 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:383
|
4085 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:451
|
4086 |
-
msgctxt "s2member-admin"
|
4087 |
-
msgid "Invalid form configuration. Invalid \"dg\" attribute. Digital indicator. Must be numeric [0-1]."
|
4088 |
-
msgstr ""
|
4089 |
-
|
4090 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:386
|
4091 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:454
|
4092 |
-
msgctxt "s2member-admin"
|
4093 |
-
msgid "Invalid form configuration. Missing \"ns\" attribute. Shipping configuration. Must be numeric [0-2]."
|
4094 |
-
msgstr ""
|
4095 |
-
|
4096 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:389
|
4097 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:457
|
4098 |
-
msgctxt "s2member-admin"
|
4099 |
-
msgid "Invalid form configuration. Invalid \"ns\" attribute. Shipping configuration. Must be numeric [0-2]."
|
4100 |
-
msgstr ""
|
4101 |
-
|
4102 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:392
|
4103 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:460
|
4104 |
-
msgctxt "s2member-admin"
|
4105 |
-
msgid "Invalid form configuration. Invalid \"ns\" attribute. Shipping configuration. Must be 1 with \"dg\" (digital) items."
|
4106 |
-
msgstr ""
|
4107 |
-
|
4108 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:395
|
4109 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:463
|
4110 |
-
msgctxt "s2member-admin"
|
4111 |
-
msgid "Invalid form configuration. Invalid \"lc\" attribute. Locale Code. When provided, must be a 2 character country code."
|
4112 |
-
msgstr ""
|
4113 |
-
|
4114 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:407
|
4115 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:544
|
4116 |
-
msgctxt "s2member-admin"
|
4117 |
-
msgid "Invalid form configuration. Invalid \"ra\" attribute. The Regular Amount. Must be <= 10000.00."
|
4118 |
-
msgstr ""
|
4119 |
-
|
4120 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:484
|
4121 |
-
msgctxt "s2member-admin"
|
4122 |
-
msgid "Invalid form configuration. Invalid \"ta\" attribute. The Trial Amount. When provided, must be <= 10000.00."
|
4123 |
-
msgstr ""
|
4124 |
-
|
4125 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:511
|
4126 |
-
msgctxt "s2member-admin"
|
4127 |
-
msgid "Invalid Payflow form configuration. Invalid \"rt, rp, rr\" attributes. Payflow supports a specific set of recurring intervals. Pro Forms can be configured to charge: weekly, bi-weekly, monthly, quarterly, semi-yearly or yearly. Any other combination results in this error. This is a Payflow limitation."
|
4128 |
-
msgstr ""
|
4129 |
-
|
4130 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:514
|
4131 |
-
msgctxt "s2member-admin"
|
4132 |
-
msgid "Invalid form configuration. Invalid \"rt, rp, rr\" attributes. The \"rt\" (Regular Term) attribute is \"Y\", \"rp\" (Regular Period) > 5, and \"rr\" is not \"BN\" (Buy Now)."
|
4133 |
-
msgstr ""
|
4134 |
-
|
4135 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:568
|
4136 |
-
msgctxt "s2member-admin"
|
4137 |
-
msgid "Invalid form configuration. Invalid \"rr, rra\" attributes. When \"rr\" (Regular Recurring) is 0 or 1, \"rra\" (Recurring Retry Attempts) must be numeric."
|
4138 |
-
msgstr ""
|
4139 |
-
|
4140 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-responses.inc.php:571
|
4141 |
-
msgctxt "s2member-admin"
|
4142 |
-
msgid "Invalid form configuration. Invalid \"rr, rra\" attributes. When \"rr\" (Regular Recurring) is 0 or 1, \"rra\" (Recurring Retry Attempts) must be >= 0."
|
4143 |
-
msgstr ""
|
4144 |
-
|
4145 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/paypal/paypal-update-pf-in.inc.php:140
|
4146 |
-
msgctxt "s2member-front"
|
4147 |
-
msgid "<strong>No Subscr. ID.</strong> Please contact Support for assistance."
|
4148 |
-
msgstr ""
|
4149 |
-
|
4150 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-cancellation-in.inc.php:123
|
4151 |
-
msgctxt "s2member-front"
|
4152 |
-
msgid "API failure. Please contact Support for assistance."
|
4153 |
-
msgstr ""
|
4154 |
-
|
4155 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-checkout-in.inc.php:248
|
4156 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-checkout-in.inc.php:495
|
4157 |
-
msgctxt "s2member-front"
|
4158 |
-
msgid "<strong>Thank you.</strong> Your account has been updated :-)"
|
4159 |
-
msgstr ""
|
4160 |
-
|
4161 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:216
|
4162 |
-
msgctxt "s2member-admin"
|
4163 |
-
msgid "Stripe configuration error. Please configure your Publishable Stripe API Key."
|
4164 |
-
msgstr ""
|
4165 |
-
|
4166 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:219
|
4167 |
-
msgctxt "s2member-admin"
|
4168 |
-
msgid "Stripe configuration error. Your Secret Stripe API Key is not yet configured."
|
4169 |
-
msgstr ""
|
4170 |
-
|
4171 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:348
|
4172 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:476
|
4173 |
-
msgctxt "s2member-admin"
|
4174 |
-
msgid "Invalid form configuration. Invalid \"ra\" attribute. The Regular Amount (when greater than 0.00), must be >= 0.50; i.e. the minimum amount that Stripe will charge is 0.50"
|
4175 |
-
msgstr ""
|
4176 |
-
|
4177 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:351
|
4178 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:479
|
4179 |
-
msgctxt "s2member-admin"
|
4180 |
-
msgid "Invalid form configuration. Invalid \"ra\" attribute. The Regular Amount. Must be <= 999999.99."
|
4181 |
-
msgstr ""
|
4182 |
-
|
4183 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:413
|
4184 |
-
msgctxt "s2member-admin"
|
4185 |
-
msgid "Invalid form configuration. Invalid \"tt, tp\" attributes. There is an Intial/Trial amount, and \"tt\" (Trial Term) attribute is \"Y\", and \"tp\" (Trial Period) > 2."
|
4186 |
-
msgstr ""
|
4187 |
-
|
4188 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:419
|
4189 |
-
msgctxt "s2member-admin"
|
4190 |
-
msgid "Invalid form configuration. Invalid \"ta\" attribute. The Trial Amount. When provided, must be >= 0.50."
|
4191 |
-
msgstr ""
|
4192 |
-
|
4193 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:422
|
4194 |
-
msgctxt "s2member-admin"
|
4195 |
-
msgid "Invalid form configuration. Invalid \"ta\" attribute. The Trial Amount. When provided, must be <= 999999.99."
|
4196 |
-
msgstr ""
|
4197 |
-
|
4198 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:543
|
4199 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:612
|
4200 |
-
msgctxt "s2member-front"
|
4201 |
-
msgid "Missing Billing Info. Please try again."
|
4202 |
-
msgstr ""
|
4203 |
-
|
4204 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-responses.inc.php:682
|
4205 |
-
msgctxt "s2member-front"
|
4206 |
-
msgid "Missing Billing Method. Please try again."
|
4207 |
-
msgstr ""
|
4208 |
-
|
4209 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-update-in.inc.php:99
|
4210 |
-
msgctxt "s2member-front"
|
4211 |
-
msgid "<strong>Oops.</strong> No Customer|Subscr. ID. Please contact Support for assistance."
|
4212 |
-
msgstr ""
|
4213 |
-
|
4214 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:630
|
4215 |
-
msgctxt "s2member-front"
|
4216 |
-
msgid "Error code: <code>%1$s</code>. %2$s."
|
4217 |
-
msgstr ""
|
4218 |
-
|
4219 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:634
|
4220 |
-
msgctxt "s2member-front"
|
4221 |
-
msgid "Invalid parameters to Stripe; please contact the site owner."
|
4222 |
-
msgstr ""
|
4223 |
-
|
4224 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:637
|
4225 |
-
msgctxt "s2member-front"
|
4226 |
-
msgid "Invalid Stripe API keys; please contact the site owner."
|
4227 |
-
msgstr ""
|
4228 |
-
|
4229 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:640
|
4230 |
-
msgctxt "s2member-front"
|
4231 |
-
msgid "Network communication failure with Stripe; please try again."
|
4232 |
-
msgstr ""
|
4233 |
-
|
4234 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:643
|
4235 |
-
msgctxt "s2member-front"
|
4236 |
-
msgid "Stripe API error; please try again."
|
4237 |
-
msgstr ""
|
4238 |
-
|
4239 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:645
|
4240 |
-
msgctxt "s2member-front"
|
4241 |
-
msgid "Stripe error; please try again."
|
4242 |
-
msgstr ""
|
4243 |
-
|
4244 |
-
#. translators: `%1$s` is new price/description, after coupon applied. `%2$s`
|
4245 |
-
#. is original description.
|
4246 |
-
#: s2member-pro/s2member-pro/includes/classes/gateways/stripe/stripe-utilities.inc.php:1237
|
4247 |
-
msgctxt "s2member-front"
|
4248 |
-
msgid "%1$s %2$s ~ ORIGINALLY: %3$s"
|
4249 |
-
msgstr ""
|
4250 |
-
|
4251 |
-
#: s2member-pro/s2member-pro/includes/classes/login-widget.inc.php:135
|
4252 |
-
msgctxt "s2member-front"
|
4253 |
-
msgid "Password"
|
4254 |
-
msgstr ""
|
4255 |
-
|
4256 |
-
#: s2member-pro/s2member-pro/includes/classes/login-widget.inc.php:141
|
4257 |
-
msgctxt "s2member-front"
|
4258 |
-
msgid "signup now"
|
4259 |
-
msgstr ""
|
4260 |
-
|
4261 |
-
#: s2member-pro/s2member-pro/includes/classes/login-widget.inc.php:142
|
4262 |
-
msgctxt "s2member-front"
|
4263 |
-
msgid "forgot password?"
|
4264 |
-
msgstr ""
|
4265 |
-
|
4266 |
-
#: s2member-pro/s2member-pro/includes/classes/login-widget.inc.php:146
|
4267 |
-
msgctxt "s2member-front"
|
4268 |
-
msgid "Remember Me"
|
4269 |
-
msgstr ""
|
4270 |
-
|
4271 |
-
#: s2member-pro/s2member-pro/includes/classes/login-widget.inc.php:152
|
4272 |
-
msgctxt "s2member-front"
|
4273 |
-
msgid "Log Me In"
|
4274 |
-
msgstr ""
|
4275 |
-
|
4276 |
-
#: s2member-pro/s2member-pro/includes/classes/login-widget.inc.php:202
|
4277 |
-
msgctxt "s2member-front"
|
4278 |
-
msgid "My Account"
|
4279 |
-
msgstr ""
|
4280 |
-
|
4281 |
-
#: s2member-pro/s2member-pro/includes/classes/login-widget.inc.php:203
|
4282 |
-
msgctxt "s2member-front"
|
4283 |
-
msgid "Please disable popup blockers and try again!"
|
4284 |
-
msgstr ""
|
4285 |
-
|
4286 |
-
#: s2member-pro/s2member-pro/includes/classes/login-widget.inc.php:203
|
4287 |
-
msgctxt "s2member-front"
|
4288 |
-
msgid "Edit My Profile"
|
4289 |
-
msgstr ""
|
4290 |
-
|
4291 |
-
#: s2member-pro/s2member-pro/includes/classes/login-widget.inc.php:204
|
4292 |
-
msgctxt "s2member-front"
|
4293 |
-
msgid "Logout"
|
4294 |
-
msgstr ""
|
4295 |
-
|
4296 |
-
#: s2member-pro/s2member-pro/includes/classes/login-widget.inc.php:341
|
4297 |
-
msgctxt "s2member-front"
|
4298 |
-
msgid "Membership Login"
|
4299 |
-
msgstr ""
|
4300 |
-
|
4301 |
-
#: s2member-pro/s2member-pro/includes/classes/login-widget.inc.php:341
|
4302 |
-
msgctxt "s2member-front"
|
4303 |
-
msgid "My Profile Summary"
|
4304 |
-
msgstr ""
|
4305 |
-
|
4306 |
-
#: s2member-pro/s2member-pro/includes/classes/sc-member-list-in.inc.php:209
|
4307 |
-
msgctxt "s2member-front"
|
4308 |
-
msgid "Search users..."
|
4309 |
-
msgstr ""
|
4310 |
-
|
4311 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
4312 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:73
|
4313 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:167
|
4314 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:276
|
4315 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:527
|
4316 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:813
|
4317 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
4318 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:73
|
4319 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:167
|
4320 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:276
|
4321 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:575
|
4322 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:909
|
4323 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe-min.js:1
|
4324 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:106
|
4325 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:202
|
4326 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:317
|
4327 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:610
|
4328 |
-
msgctxt "s2member-front"
|
4329 |
-
msgid "Security Code missing. Please try again."
|
4330 |
-
msgstr ""
|
4331 |
-
|
4332 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
4333 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:142
|
4334 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:502
|
4335 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:774
|
4336 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
4337 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:142
|
4338 |
-
msgctxt "s2member-front"
|
4339 |
-
msgid "Please choose a Billing Method."
|
4340 |
-
msgstr ""
|
4341 |
-
|
4342 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
4343 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:346
|
4344 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:598
|
4345 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
4346 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:350
|
4347 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:650
|
4348 |
-
msgctxt "s2member-front"
|
4349 |
-
msgid "Calculating Sales Tax..."
|
4350 |
-
msgstr ""
|
4351 |
-
|
4352 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
4353 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:346
|
4354 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:598
|
4355 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
4356 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:350
|
4357 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:650
|
4358 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe-min.js:1
|
4359 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:466
|
4360 |
-
msgctxt "s2member-front"
|
4361 |
-
msgid "calculating sales tax..."
|
4362 |
-
msgstr ""
|
4363 |
-
|
4364 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
4365 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:357
|
4366 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:609
|
4367 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
4368 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:361
|
4369 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:661
|
4370 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe-min.js:1
|
4371 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:483
|
4372 |
-
msgctxt "s2member-front"
|
4373 |
-
msgid "<strong>Sales Tax%s:</strong> %s<br /><strong>— Total%s:</strong> %s"
|
4374 |
-
msgstr ""
|
4375 |
-
|
4376 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
4377 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:357
|
4378 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:609
|
4379 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
4380 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:361
|
4381 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:661
|
4382 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe-min.js:1
|
4383 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:483
|
4384 |
-
msgctxt "s2member-front"
|
4385 |
-
msgid "Today"
|
4386 |
-
msgstr ""
|
4387 |
-
|
4388 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
4389 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:671
|
4390 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
4391 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:723
|
4392 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe-min.js:1
|
4393 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:411
|
4394 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-checkout-form.php:62
|
4395 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-registration-form.php:43
|
4396 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-checkout-form.php:62
|
4397 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-registration-form.php:43
|
4398 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-checkout-form.php:62
|
4399 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-registration-form.php:43
|
4400 |
-
msgctxt "s2member-front"
|
4401 |
-
msgid "Create Profile"
|
4402 |
-
msgstr ""
|
4403 |
-
|
4404 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
4405 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/authnet/authnet.js:672
|
4406 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
4407 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:724
|
4408 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe-min.js:1
|
4409 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:412
|
4410 |
-
msgctxt "s2member-front"
|
4411 |
-
msgid "Your Profile"
|
4412 |
-
msgstr ""
|
4413 |
-
|
4414 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/google/google-min.js:1
|
4415 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/google/google.js:49
|
4416 |
-
msgctxt "s2member-front"
|
4417 |
-
msgid "Thank you! Please check your email for further details."
|
4418 |
-
msgstr ""
|
4419 |
-
|
4420 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
4421 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:292
|
4422 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:293
|
4423 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:592
|
4424 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/paypal/paypal.js:593
|
4425 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-cancellation-form.php:36
|
4426 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-checkout-form.php:199
|
4427 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-registration-form.php:94
|
4428 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:180
|
4429 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-update-form.php:118
|
4430 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-cancellation-form.php:36
|
4431 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-checkout-form.php:199
|
4432 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-registration-form.php:94
|
4433 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:180
|
4434 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-update-form.php:118
|
4435 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-cancellation-form.php:36
|
4436 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-checkout-form.php:161
|
4437 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-registration-form.php:94
|
4438 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-sp-checkout-form.php:142
|
4439 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-update-form.php:52
|
4440 |
-
msgctxt "s2member-front"
|
4441 |
-
msgid "Submit Form"
|
4442 |
-
msgstr ""
|
4443 |
-
|
4444 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe-min.js:1
|
4445 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:277
|
4446 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:557
|
4447 |
-
msgctxt "s2member-front"
|
4448 |
-
msgid "Add"
|
4449 |
-
msgstr ""
|
4450 |
-
|
4451 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe-min.js:1
|
4452 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:296
|
4453 |
-
#: s2member-pro/s2member-pro/includes/separates/gateways/stripe/stripe.js:580
|
4454 |
-
msgctxt "s2member-front"
|
4455 |
-
msgid "No Billing Method; please try again."
|
4456 |
-
msgstr ""
|
4457 |
-
|
4458 |
-
#: s2member-pro/s2member-pro/includes/syscon.inc.php:96
|
4459 |
-
msgctxt "s2member-front"
|
4460 |
-
msgid ""
|
4461 |
-
"Thanks %%%%first_name%%%%! Your membership has been approved.\n"
|
4462 |
-
"\n"
|
4463 |
-
"%%%%item_name%%%%\n"
|
4464 |
-
"\n"
|
4465 |
-
"Subscr. ID: %%%%subscr_id%%%%\n"
|
4466 |
-
"Charges today: %%%%currency_symbol%%%%%%%%initial%%%%\n"
|
4467 |
-
"Recurring charges: %%%%currency_symbol%%%%%%%%recurring/regular_cycle%%%%\n"
|
4468 |
-
"\n"
|
4469 |
-
"Your Username/Password will arrive shortly, in a separate email. If you have any trouble, please feel free to contact us.\n"
|
4470 |
-
"\n"
|
4471 |
-
"Best Regards,\n"
|
4472 |
-
"%s"
|
4473 |
-
msgstr ""
|
4474 |
-
|
4475 |
-
#: s2member-pro/s2member-pro/includes/syscon.inc.php:100
|
4476 |
-
msgctxt "s2member-front"
|
4477 |
-
msgid ""
|
4478 |
-
"Thanks %%%%first_name%%%%!\n"
|
4479 |
-
"\n"
|
4480 |
-
"%%%%item_name%%%%\n"
|
4481 |
-
"\n"
|
4482 |
-
"Transaction ID: %%%%txn_id%%%%\n"
|
4483 |
-
"Charges today: %%%%currency_symbol%%%%%%%%amount%%%%\n"
|
4484 |
-
"\n"
|
4485 |
-
"Your order can be retrieved here:\n"
|
4486 |
-
"%%%%sp_access_url%%%%\n"
|
4487 |
-
"( link expires in %%%%sp_access_exp%%%% )\n"
|
4488 |
-
"\n"
|
4489 |
-
"If you have any trouble, please feel free to contact us.\n"
|
4490 |
-
"\n"
|
4491 |
-
"Best Regards,\n"
|
4492 |
-
"%s"
|
4493 |
-
msgstr ""
|
4494 |
-
|
4495 |
-
#: s2member-pro/s2member-pro/includes/syscon.inc.php:122
|
4496 |
-
msgctxt "s2member-front"
|
4497 |
-
msgid "<div><small style=\"font-size:70%;\">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.</small></div><p>%1$s <strong><em>says…</em></strong></p>"
|
4498 |
-
msgstr ""
|
4499 |
-
|
4500 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-cancellation-form.php:32
|
4501 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-cancellation-form.php:32
|
4502 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-cancellation-form.php:32
|
4503 |
-
msgctxt "s2member-front"
|
4504 |
-
msgid "Confirm Cancellation"
|
4505 |
-
msgstr ""
|
4506 |
-
|
4507 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-checkout-form.php:21
|
4508 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:21
|
4509 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-checkout-form.php:21
|
4510 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:21
|
4511 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-checkout-form.php:21
|
4512 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-sp-checkout-form.php:21
|
4513 |
-
msgctxt "s2member-front"
|
4514 |
-
msgid "Checkout Options"
|
4515 |
-
msgstr ""
|
4516 |
-
|
4517 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-checkout-form.php:42
|
4518 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:42
|
4519 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-checkout-form.php:42
|
4520 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:42
|
4521 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-checkout-form.php:42
|
4522 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-sp-checkout-form.php:42
|
4523 |
-
msgctxt "s2member-front"
|
4524 |
-
msgid "Coupon Code"
|
4525 |
-
msgstr ""
|
4526 |
-
|
4527 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-checkout-form.php:49
|
4528 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:49
|
4529 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-checkout-form.php:49
|
4530 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:49
|
4531 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-checkout-form.php:49
|
4532 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-sp-checkout-form.php:49
|
4533 |
-
msgctxt "s2member-front"
|
4534 |
-
msgid "Have a Coupon Code?"
|
4535 |
-
msgstr ""
|
4536 |
-
|
4537 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-checkout-form.php:52
|
4538 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:52
|
4539 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-checkout-form.php:52
|
4540 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:52
|
4541 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-checkout-form.php:52
|
4542 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-sp-checkout-form.php:52
|
4543 |
-
msgctxt "s2member-front"
|
4544 |
-
msgid "Apply Coupon"
|
4545 |
-
msgstr ""
|
4546 |
-
|
4547 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-checkout-form.php:84
|
4548 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-registration-form.php:65
|
4549 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-checkout-form.php:84
|
4550 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-registration-form.php:65
|
4551 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-checkout-form.php:84
|
4552 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-registration-form.php:65
|
4553 |
-
msgctxt "s2member-front"
|
4554 |
-
msgid "Username (lowercase letters and/or numbers)"
|
4555 |
-
msgstr ""
|
4556 |
-
|
4557 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-checkout-form.php:90
|
4558 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-registration-form.php:71
|
4559 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-checkout-form.php:90
|
4560 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-registration-form.php:71
|
4561 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-checkout-form.php:90
|
4562 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-registration-form.php:71
|
4563 |
-
msgctxt "s2member-front"
|
4564 |
-
msgid "Password (type this twice please)"
|
4565 |
-
msgstr ""
|
4566 |
-
|
4567 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-checkout-form.php:106
|
4568 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:88
|
4569 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-checkout-form.php:106
|
4570 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:88
|
4571 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-checkout-form.php:106
|
4572 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-sp-checkout-form.php:88
|
4573 |
-
msgctxt "s2member-front"
|
4574 |
-
msgid "Billing Method"
|
4575 |
-
msgstr ""
|
4576 |
-
|
4577 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-checkout-form.php:113
|
4578 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:95
|
4579 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-update-form.php:36
|
4580 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-checkout-form.php:113
|
4581 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:95
|
4582 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-update-form.php:36
|
4583 |
-
msgctxt "s2member-front"
|
4584 |
-
msgid "Card Number (no dashes or spaces)"
|
4585 |
-
msgstr ""
|
4586 |
-
|
4587 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-checkout-form.php:119
|
4588 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:101
|
4589 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-update-form.php:42
|
4590 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-checkout-form.php:119
|
4591 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:101
|
4592 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-update-form.php:42
|
4593 |
-
msgctxt "s2member-front"
|
4594 |
-
msgid "Card Expiration Date (mm/yyyy)"
|
4595 |
-
msgstr ""
|
4596 |
-
|
4597 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-checkout-form.php:131
|
4598 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:113
|
4599 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-update-form.php:54
|
4600 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-checkout-form.php:131
|
4601 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:113
|
4602 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-update-form.php:54
|
4603 |
-
msgctxt "s2member-front"
|
4604 |
-
msgid "Card Verification Code (3-4 digits)"
|
4605 |
-
msgstr ""
|
4606 |
-
|
4607 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-checkout-form.php:131
|
4608 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:113
|
4609 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-update-form.php:54
|
4610 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-checkout-form.php:131
|
4611 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:113
|
4612 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-update-form.php:54
|
4613 |
-
msgctxt "s2member-front"
|
4614 |
-
msgid "need help?"
|
4615 |
-
msgstr ""
|
4616 |
-
|
4617 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-checkout-form.php:138
|
4618 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:120
|
4619 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-update-form.php:61
|
4620 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-checkout-form.php:138
|
4621 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:120
|
4622 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-update-form.php:61
|
4623 |
-
msgctxt "s2member-front"
|
4624 |
-
msgid "Card Start Date (mm/yyyy), or Issue Number"
|
4625 |
-
msgstr ""
|
4626 |
-
|
4627 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-checkout-form.php:148
|
4628 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:130
|
4629 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-update-form.php:71
|
4630 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-checkout-form.php:148
|
4631 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:130
|
4632 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-update-form.php:71
|
4633 |
-
msgctxt "s2member-front"
|
4634 |
-
msgid "Billing Address"
|
4635 |
-
msgstr ""
|
4636 |
-
|
4637 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-checkout-form.php:152
|
4638 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:134
|
4639 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-update-form.php:75
|
4640 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-checkout-form.php:152
|
4641 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:134
|
4642 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-update-form.php:75
|
4643 |
-
msgctxt "s2member-front"
|
4644 |
-
msgid "Street Address"
|
4645 |
-
msgstr ""
|
4646 |
-
|
4647 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-checkout-form.php:158
|
4648 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:140
|
4649 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-update-form.php:81
|
4650 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-checkout-form.php:158
|
4651 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:140
|
4652 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-update-form.php:81
|
4653 |
-
msgctxt "s2member-front"
|
4654 |
-
msgid "City / Town"
|
4655 |
-
msgstr ""
|
4656 |
-
|
4657 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-checkout-form.php:164
|
4658 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:146
|
4659 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-update-form.php:87
|
4660 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-checkout-form.php:164
|
4661 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:146
|
4662 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-update-form.php:87
|
4663 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-checkout-form.php:126
|
4664 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-sp-checkout-form.php:108
|
4665 |
-
msgctxt "s2member-front"
|
4666 |
-
msgid "State / Province"
|
4667 |
-
msgstr ""
|
4668 |
-
|
4669 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-checkout-form.php:170
|
4670 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:152
|
4671 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-update-form.php:93
|
4672 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-checkout-form.php:170
|
4673 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:152
|
4674 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-update-form.php:93
|
4675 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-checkout-form.php:132
|
4676 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-sp-checkout-form.php:114
|
4677 |
-
msgctxt "s2member-front"
|
4678 |
-
msgid "Postal / Zip Code"
|
4679 |
-
msgstr ""
|
4680 |
-
|
4681 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-checkout-form.php:176
|
4682 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:158
|
4683 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-update-form.php:99
|
4684 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-checkout-form.php:176
|
4685 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:158
|
4686 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-update-form.php:99
|
4687 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-checkout-form.php:138
|
4688 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-sp-checkout-form.php:120
|
4689 |
-
msgctxt "s2member-front"
|
4690 |
-
msgid "Country"
|
4691 |
-
msgstr ""
|
4692 |
-
|
4693 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-checkout-form.php:194
|
4694 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:176
|
4695 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-checkout-form.php:194
|
4696 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:176
|
4697 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-checkout-form.php:156
|
4698 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-sp-checkout-form.php:138
|
4699 |
-
msgctxt "s2member-front"
|
4700 |
-
msgid "Checkout Now"
|
4701 |
-
msgstr ""
|
4702 |
-
|
4703 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-registration-form.php:21
|
4704 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-registration-form.php:21
|
4705 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-registration-form.php:21
|
4706 |
-
msgctxt "s2member-front"
|
4707 |
-
msgid "Registration Options"
|
4708 |
-
msgstr ""
|
4709 |
-
|
4710 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-registration-form.php:89
|
4711 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-registration-form.php:89
|
4712 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-registration-form.php:89
|
4713 |
-
msgctxt "s2member-front"
|
4714 |
-
msgid "Complete Registration"
|
4715 |
-
msgstr ""
|
4716 |
-
|
4717 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:62
|
4718 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:62
|
4719 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-sp-checkout-form.php:62
|
4720 |
-
msgctxt "s2member-front"
|
4721 |
-
msgid "Contact Info"
|
4722 |
-
msgstr ""
|
4723 |
-
|
4724 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-update-form.php:29
|
4725 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-update-form.php:29
|
4726 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-update-form.php:29
|
4727 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-update-form.php:33
|
4728 |
-
msgctxt "s2member-front"
|
4729 |
-
msgid "New Billing Method"
|
4730 |
-
msgstr ""
|
4731 |
-
|
4732 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/authnet-update-form.php:114
|
4733 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/paypal-update-form.php:114
|
4734 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-update-form.php:48
|
4735 |
-
msgctxt "s2member-front"
|
4736 |
-
msgid "Update Billing Information"
|
4737 |
-
msgstr ""
|
4738 |
-
|
4739 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-checkout-form.php:110
|
4740 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-sp-checkout-form.php:92
|
4741 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-update-form.php:33
|
4742 |
-
msgctxt "s2member-front"
|
4743 |
-
msgid "[+]"
|
4744 |
-
msgstr ""
|
4745 |
-
|
4746 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-checkout-form.php:110
|
4747 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-sp-checkout-form.php:92
|
4748 |
-
msgctxt "s2member-front"
|
4749 |
-
msgid "Add Billing Method"
|
4750 |
-
msgstr ""
|
4751 |
-
|
4752 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-checkout-form.php:122
|
4753 |
-
#: s2member-pro/s2member-pro/includes/templates/forms/stripe-sp-checkout-form.php:104
|
4754 |
-
msgctxt "s2member-front"
|
4755 |
-
msgid "Tax Location"
|
4756 |
-
msgstr ""
|
4757 |
-
|
4758 |
-
#: s2member-pro/s2member-pro/includes/templates/members/member-list-search-box.php:27
|
4759 |
-
msgctxt "s2member-front"
|
4760 |
-
msgid "Search"
|
4761 |
-
msgstr ""
|
4762 |
-
|
4763 |
-
#: s2member-pro/s2member-pro/includes/templates/members/member-list.php:93
|
4764 |
-
msgctxt "s2member-front"
|
4765 |
-
msgid "Page:"
|
4766 |
-
msgstr ""
|
4767 |
-
|
4768 |
-
#: s2member-pro/s2member-pro/includes/templates/members/member-list.php:101
|
4769 |
-
msgctxt "s2member-front"
|
4770 |
-
msgid "Sorry, your search returned 0 results."
|
4771 |
-
msgstr ""
|
4772 |
-
|
4773 |
-
#: s2member-pro/s2member-pro/includes/templates/members/member-list.php:104
|
4774 |
-
msgctxt "s2member-front"
|
4775 |
-
msgid "Sorry, search is not allowed here. The shortcode attribute `enable_list_search` is not enabled by the site owner."
|
4776 |
-
msgstr ""
|
4777 |
-
|
4778 |
-
#: s2member-pro/s2member-pro/includes/templates/members/member-list.php:107
|
4779 |
-
msgctxt "s2member-front"
|
4780 |
-
msgid "Sorry, there are no users to list at this time."
|
4781 |
-
msgstr ""
|
4782 |
-
|
4783 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-membership-ccap-terms.php:6
|
4784 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-membership-regular-terms.php:6
|
4785 |
-
msgctxt "s2member-admin"
|
4786 |
-
msgid "AliPay (Buy Now)"
|
4787 |
-
msgstr ""
|
4788 |
-
|
4789 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-membership-ccap-terms.php:7
|
4790 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-membership-regular-terms.php:31
|
4791 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-membership-ccap-terms.php:7
|
4792 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-ccap-fixed-terms.php:7
|
4793 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-fixed-terms.php:31
|
4794 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-ccap-terms.php:7
|
4795 |
-
msgctxt "s2member-admin"
|
4796 |
-
msgid "One Time (for lifetime access)"
|
4797 |
-
msgstr ""
|
4798 |
-
|
4799 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-membership-regular-terms.php:7
|
4800 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-fixed-terms.php:7
|
4801 |
-
msgctxt "s2member-admin"
|
4802 |
-
msgid "One Time (for 1 day access)"
|
4803 |
-
msgstr ""
|
4804 |
-
|
4805 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-membership-regular-terms.php:8
|
4806 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-fixed-terms.php:8
|
4807 |
-
msgctxt "s2member-admin"
|
4808 |
-
msgid "One Time (for 2 day access)"
|
4809 |
-
msgstr ""
|
4810 |
-
|
4811 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-membership-regular-terms.php:9
|
4812 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-fixed-terms.php:9
|
4813 |
-
msgctxt "s2member-admin"
|
4814 |
-
msgid "One Time (for 3 day access)"
|
4815 |
-
msgstr ""
|
4816 |
-
|
4817 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-membership-regular-terms.php:10
|
4818 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-fixed-terms.php:10
|
4819 |
-
msgctxt "s2member-admin"
|
4820 |
-
msgid "One Time (for 4 day access)"
|
4821 |
-
msgstr ""
|
4822 |
-
|
4823 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-membership-regular-terms.php:11
|
4824 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-fixed-terms.php:11
|
4825 |
-
msgctxt "s2member-admin"
|
4826 |
-
msgid "One Time (for 5 day access)"
|
4827 |
-
msgstr ""
|
4828 |
-
|
4829 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-membership-regular-terms.php:12
|
4830 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-fixed-terms.php:12
|
4831 |
-
msgctxt "s2member-admin"
|
4832 |
-
msgid "One Time (for 6 day access)"
|
4833 |
-
msgstr ""
|
4834 |
-
|
4835 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-membership-regular-terms.php:14
|
4836 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-fixed-terms.php:14
|
4837 |
-
msgctxt "s2member-admin"
|
4838 |
-
msgid "One Time (for 1 week access)"
|
4839 |
-
msgstr ""
|
4840 |
-
|
4841 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-membership-regular-terms.php:15
|
4842 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-fixed-terms.php:15
|
4843 |
-
msgctxt "s2member-admin"
|
4844 |
-
msgid "One Time (for 2 week access)"
|
4845 |
-
msgstr ""
|
4846 |
-
|
4847 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-membership-regular-terms.php:16
|
4848 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-fixed-terms.php:16
|
4849 |
-
msgctxt "s2member-admin"
|
4850 |
-
msgid "One Time (for 3 week access)"
|
4851 |
-
msgstr ""
|
4852 |
-
|
4853 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-membership-regular-terms.php:18
|
4854 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-fixed-terms.php:18
|
4855 |
-
msgctxt "s2member-admin"
|
4856 |
-
msgid "One Time (for 1 month access)"
|
4857 |
-
msgstr ""
|
4858 |
-
|
4859 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-membership-regular-terms.php:19
|
4860 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-fixed-terms.php:19
|
4861 |
-
msgctxt "s2member-admin"
|
4862 |
-
msgid "One Time (for 2 month access)"
|
4863 |
-
msgstr ""
|
4864 |
-
|
4865 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-membership-regular-terms.php:20
|
4866 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-fixed-terms.php:20
|
4867 |
-
msgctxt "s2member-admin"
|
4868 |
-
msgid "One Time (for 3 month access)"
|
4869 |
-
msgstr ""
|
4870 |
-
|
4871 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-membership-regular-terms.php:21
|
4872 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-fixed-terms.php:21
|
4873 |
-
msgctxt "s2member-admin"
|
4874 |
-
msgid "One Time (for 4 month access)"
|
4875 |
-
msgstr ""
|
4876 |
-
|
4877 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-membership-regular-terms.php:22
|
4878 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-fixed-terms.php:22
|
4879 |
-
msgctxt "s2member-admin"
|
4880 |
-
msgid "One Time (for 5 month access)"
|
4881 |
-
msgstr ""
|
4882 |
-
|
4883 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-membership-regular-terms.php:23
|
4884 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-fixed-terms.php:23
|
4885 |
-
msgctxt "s2member-admin"
|
4886 |
-
msgid "One Time (for 6 month access)"
|
4887 |
-
msgstr ""
|
4888 |
-
|
4889 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-membership-regular-terms.php:25
|
4890 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-fixed-terms.php:25
|
4891 |
-
msgctxt "s2member-admin"
|
4892 |
-
msgid "One Time (for 1 year access)"
|
4893 |
-
msgstr ""
|
4894 |
-
|
4895 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-membership-regular-terms.php:26
|
4896 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-fixed-terms.php:26
|
4897 |
-
msgctxt "s2member-admin"
|
4898 |
-
msgid "One Time (for 2 year access)"
|
4899 |
-
msgstr ""
|
4900 |
-
|
4901 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-membership-regular-terms.php:27
|
4902 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-fixed-terms.php:27
|
4903 |
-
msgctxt "s2member-admin"
|
4904 |
-
msgid "One Time (for 3 year access)"
|
4905 |
-
msgstr ""
|
4906 |
-
|
4907 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-membership-regular-terms.php:28
|
4908 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-fixed-terms.php:28
|
4909 |
-
msgctxt "s2member-admin"
|
4910 |
-
msgid "One Time (for 4 year access)"
|
4911 |
-
msgstr ""
|
4912 |
-
|
4913 |
-
#: s2member-pro/s2member-pro/includes/templates/options/alipay-membership-regular-terms.php:29
|
4914 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-fixed-terms.php:29
|
4915 |
-
msgctxt "s2member-admin"
|
4916 |
-
msgid "One Time (for 5 year access)"
|
4917 |
-
msgstr ""
|
4918 |
-
|
4919 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-ccap-terms.php:6
|
4920 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:35
|
4921 |
-
msgctxt "s2member-admin"
|
4922 |
-
msgid "Authorize.Net (Buy Now)"
|
4923 |
-
msgstr ""
|
4924 |
-
|
4925 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:6
|
4926 |
-
#: s2member-pro/s2member-pro/includes/templates/options/authnet-membership-regular-terms.php:18
|
4927 |
-
msgctxt "s2member-admin"
|
4928 |
-
msgid "Authorize.Net (Subscriptions)"
|
4929 |
-
msgstr ""
|
4930 |
-
|
4931 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-membership-ccap-terms.php:6
|
4932 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-membership-regular-terms.php:14
|
4933 |
-
msgctxt "s2member-admin"
|
4934 |
-
msgid "ccBill Non-Recurring / Buy Now"
|
4935 |
-
msgstr ""
|
4936 |
-
|
4937 |
-
#: s2member-pro/s2member-pro/includes/templates/options/ccbill-membership-regular-terms.php:6
|
4938 |
-
msgctxt "s2member-admin"
|
4939 |
-
msgid "ccBill Recurring Plans"
|
4940 |
-
msgstr ""
|
4941 |
-
|
4942 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-ccap-fixed-terms.php:6
|
4943 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-fixed-terms.php:6
|
4944 |
-
msgctxt "s2member-admin"
|
4945 |
-
msgid "ClickBank (Fixed Terms)"
|
4946 |
-
msgstr ""
|
4947 |
-
|
4948 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-ccap-product-types.php:6
|
4949 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-product-types.php:6
|
4950 |
-
msgctxt "s2member-admin"
|
4951 |
-
msgid "Standard"
|
4952 |
-
msgstr ""
|
4953 |
-
|
4954 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-product-types.php:7
|
4955 |
-
msgctxt "s2member-admin"
|
4956 |
-
msgid "Recurring"
|
4957 |
-
msgstr ""
|
4958 |
-
|
4959 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-regular-p3s.php:6
|
4960 |
-
msgctxt "s2member-admin"
|
4961 |
-
msgid "Weekly"
|
4962 |
-
msgstr ""
|
4963 |
-
|
4964 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-regular-p3s.php:7
|
4965 |
-
msgctxt "s2member-admin"
|
4966 |
-
msgid "Bi-Weekly"
|
4967 |
-
msgstr ""
|
4968 |
-
|
4969 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-regular-p3s.php:8
|
4970 |
-
msgctxt "s2member-admin"
|
4971 |
-
msgid "Monthly"
|
4972 |
-
msgstr ""
|
4973 |
-
|
4974 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-regular-p3s.php:9
|
4975 |
-
msgctxt "s2member-admin"
|
4976 |
-
msgid "Quarterly"
|
4977 |
-
msgstr ""
|
4978 |
-
|
4979 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:6
|
4980 |
-
msgctxt "s2member-admin"
|
4981 |
-
msgid "No Trial"
|
4982 |
-
msgstr ""
|
4983 |
-
|
4984 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:7
|
4985 |
-
msgctxt "s2member-admin"
|
4986 |
-
msgid "3 Days"
|
4987 |
-
msgstr ""
|
4988 |
-
|
4989 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:8
|
4990 |
-
msgctxt "s2member-admin"
|
4991 |
-
msgid "4 Days"
|
4992 |
-
msgstr ""
|
4993 |
-
|
4994 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:9
|
4995 |
-
msgctxt "s2member-admin"
|
4996 |
-
msgid "5 Days"
|
4997 |
-
msgstr ""
|
4998 |
-
|
4999 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:10
|
5000 |
-
msgctxt "s2member-admin"
|
5001 |
-
msgid "6 Days"
|
5002 |
-
msgstr ""
|
5003 |
-
|
5004 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:11
|
5005 |
-
msgctxt "s2member-admin"
|
5006 |
-
msgid "7 Days"
|
5007 |
-
msgstr ""
|
5008 |
-
|
5009 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:12
|
5010 |
-
msgctxt "s2member-admin"
|
5011 |
-
msgid "8 Days"
|
5012 |
-
msgstr ""
|
5013 |
-
|
5014 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:13
|
5015 |
-
msgctxt "s2member-admin"
|
5016 |
-
msgid "9 Days"
|
5017 |
-
msgstr ""
|
5018 |
-
|
5019 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:14
|
5020 |
-
msgctxt "s2member-admin"
|
5021 |
-
msgid "10 Days"
|
5022 |
-
msgstr ""
|
5023 |
-
|
5024 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:15
|
5025 |
-
msgctxt "s2member-admin"
|
5026 |
-
msgid "11 Days"
|
5027 |
-
msgstr ""
|
5028 |
-
|
5029 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:16
|
5030 |
-
msgctxt "s2member-admin"
|
5031 |
-
msgid "12 Days"
|
5032 |
-
msgstr ""
|
5033 |
-
|
5034 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:17
|
5035 |
-
msgctxt "s2member-admin"
|
5036 |
-
msgid "13 Days"
|
5037 |
-
msgstr ""
|
5038 |
-
|
5039 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:18
|
5040 |
-
msgctxt "s2member-admin"
|
5041 |
-
msgid "14 Days"
|
5042 |
-
msgstr ""
|
5043 |
-
|
5044 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:19
|
5045 |
-
msgctxt "s2member-admin"
|
5046 |
-
msgid "15 Days"
|
5047 |
-
msgstr ""
|
5048 |
-
|
5049 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:20
|
5050 |
-
msgctxt "s2member-admin"
|
5051 |
-
msgid "16 Days"
|
5052 |
-
msgstr ""
|
5053 |
-
|
5054 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:21
|
5055 |
-
msgctxt "s2member-admin"
|
5056 |
-
msgid "17 Days"
|
5057 |
-
msgstr ""
|
5058 |
-
|
5059 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:22
|
5060 |
-
msgctxt "s2member-admin"
|
5061 |
-
msgid "18 Days"
|
5062 |
-
msgstr ""
|
5063 |
-
|
5064 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:23
|
5065 |
-
msgctxt "s2member-admin"
|
5066 |
-
msgid "19 Days"
|
5067 |
-
msgstr ""
|
5068 |
-
|
5069 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:24
|
5070 |
-
msgctxt "s2member-admin"
|
5071 |
-
msgid "20 Days"
|
5072 |
-
msgstr ""
|
5073 |
-
|
5074 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:25
|
5075 |
-
msgctxt "s2member-admin"
|
5076 |
-
msgid "21 Days"
|
5077 |
-
msgstr ""
|
5078 |
-
|
5079 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:26
|
5080 |
-
msgctxt "s2member-admin"
|
5081 |
-
msgid "22 Days"
|
5082 |
-
msgstr ""
|
5083 |
-
|
5084 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:27
|
5085 |
-
msgctxt "s2member-admin"
|
5086 |
-
msgid "23 Days"
|
5087 |
-
msgstr ""
|
5088 |
-
|
5089 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:28
|
5090 |
-
msgctxt "s2member-admin"
|
5091 |
-
msgid "24 Days"
|
5092 |
-
msgstr ""
|
5093 |
-
|
5094 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:29
|
5095 |
-
msgctxt "s2member-admin"
|
5096 |
-
msgid "25 Days"
|
5097 |
-
msgstr ""
|
5098 |
-
|
5099 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:30
|
5100 |
-
msgctxt "s2member-admin"
|
5101 |
-
msgid "26 Days"
|
5102 |
-
msgstr ""
|
5103 |
-
|
5104 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:31
|
5105 |
-
msgctxt "s2member-admin"
|
5106 |
-
msgid "27 Days"
|
5107 |
-
msgstr ""
|
5108 |
-
|
5109 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:32
|
5110 |
-
msgctxt "s2member-admin"
|
5111 |
-
msgid "28 Days"
|
5112 |
-
msgstr ""
|
5113 |
-
|
5114 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:33
|
5115 |
-
msgctxt "s2member-admin"
|
5116 |
-
msgid "29 Days"
|
5117 |
-
msgstr ""
|
5118 |
-
|
5119 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:34
|
5120 |
-
msgctxt "s2member-admin"
|
5121 |
-
msgid "30 Days"
|
5122 |
-
msgstr ""
|
5123 |
-
|
5124 |
-
#: s2member-pro/s2member-pro/includes/templates/options/clickbank-trial-p1s.php:35
|
5125 |
-
msgctxt "s2member-admin"
|
5126 |
-
msgid "31 Days"
|
5127 |
-
msgstr ""
|
5128 |
-
|
5129 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-ccap-terms.php:6
|
5130 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-regular-terms.php:18
|
5131 |
-
msgctxt "s2member-admin"
|
5132 |
-
msgid "Google (Buy Now)"
|
5133 |
-
msgstr ""
|
5134 |
-
|
5135 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-regular-terms.php:6
|
5136 |
-
#: s2member-pro/s2member-pro/includes/templates/options/google-membership-regular-terms.php:12
|
5137 |
-
msgctxt "s2member-admin"
|
5138 |
-
msgid "Google (Subscriptions)"
|
5139 |
-
msgstr ""
|
5140 |
-
|
5141 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:6
|
5142 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:17
|
5143 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:6
|
5144 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:19
|
5145 |
-
msgctxt "s2member-admin"
|
5146 |
-
msgid "PayPal Pro (Subscriptions)"
|
5147 |
-
msgstr ""
|
5148 |
-
|
5149 |
-
#: s2member-pro/s2member-pro/includes/templates/options/payflow-membership-regular-terms.php:41
|
5150 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-ccap-terms.php:6
|
5151 |
-
#: s2member-pro/s2member-pro/includes/templates/options/paypal-membership-regular-terms.php:43
|
5152 |
-
msgctxt "s2member-admin"
|
5153 |
-
msgid "PayPal Pro (Buy Now)"
|
5154 |
-
msgstr ""
|
5155 |
-
|
5156 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-ccap-terms.php:6
|
5157 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:43
|
5158 |
-
msgctxt "s2member-admin"
|
5159 |
-
msgid "Stripe (Buy Now)"
|
5160 |
-
msgstr ""
|
5161 |
-
|
5162 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:6
|
5163 |
-
#: s2member-pro/s2member-pro/includes/templates/options/stripe-membership-regular-terms.php:19
|
5164 |
-
msgctxt "s2member-admin"
|
5165 |
-
msgid "Stripe (Subscriptions)"
|
5166 |
-
msgstr ""
|
5167 |
-
|
5168 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/authnet-cancellation-form-shortcode.php:6
|
5169 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/paypal-cancellation-form-shortcode.php:6
|
5170 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/stripe-cancellation-form-shortcode.php:6
|
5171 |
-
msgctxt "s2member-front"
|
5172 |
-
msgid "This will cancel your account. Are you sure?"
|
5173 |
-
msgstr ""
|
5174 |
-
|
5175 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/authnet-registration-form-shortcode.php:6
|
5176 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/paypal-registration-form-shortcode.php:6
|
5177 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/stripe-registration-form-shortcode.php:6
|
5178 |
-
msgctxt "s2member-front"
|
5179 |
-
msgid "Signup now, it's Free!"
|
5180 |
-
msgstr ""
|
5181 |
-
|
5182 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/authnet-update-form-shortcode.php:6
|
5183 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/paypal-update-form-shortcode.php:6
|
5184 |
-
#: s2member-pro/s2member-pro/includes/templates/shortcodes/stripe-update-form-shortcode.php:6
|
5185 |
-
msgctxt "s2member-front"
|
5186 |
-
msgid "Update your billing information."
|
5187 |
-
msgstr ""
|
2 |
# This file is distributed under the same license as the package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: 150203\n"
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/s2member\n"
|
7 |
+
"POT-Creation-Date: 2015-02-03 22:16:54+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
13 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
14 |
|
15 |
+
#: includes/classes/brute-force.inc.php:90
|
16 |
msgctxt "s2member-front"
|
17 |
msgid "Max failed logins. Please wait %s and try again."
|
18 |
msgstr ""
|
19 |
|
20 |
+
#: includes/classes/custom-reg-fields.inc.php:338
|
21 |
+
#: includes/classes/custom-reg-fields.inc.php:470
|
22 |
+
#: includes/classes/profile-in.inc.php:116
|
23 |
+
#: includes/classes/sc-profile-in.inc.php:134
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
msgctxt "s2member-front"
|
25 |
msgid "First Name"
|
26 |
msgstr ""
|
27 |
|
28 |
+
#: includes/classes/custom-reg-fields.inc.php:350
|
29 |
+
#: includes/classes/custom-reg-fields.inc.php:485
|
30 |
+
#: includes/classes/profile-in.inc.php:135
|
31 |
+
#: includes/classes/sc-profile-in.inc.php:153
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
msgctxt "s2member-front"
|
33 |
msgid "Last Name"
|
34 |
msgstr ""
|
35 |
|
36 |
+
#: includes/classes/custom-reg-fields.inc.php:443
|
37 |
+
#: includes/classes/custom-reg-fields.inc.php:448
|
38 |
+
#: includes/classes/profile-in.inc.php:225
|
39 |
+
#: includes/classes/profile-in.inc.php:231
|
40 |
+
#: includes/classes/sc-profile-in.inc.php:243
|
41 |
+
#: includes/classes/sc-profile-in.inc.php:249
|
42 |
msgctxt "s2member-front"
|
43 |
msgid "Please type your Password twice to confirm."
|
44 |
msgstr ""
|
45 |
|
46 |
+
#: includes/classes/custom-reg-fields.inc.php:444
|
47 |
msgctxt "s2member-front"
|
48 |
msgid "Password (please type it twice)"
|
49 |
msgstr ""
|
50 |
|
51 |
+
#: includes/classes/custom-reg-fields.inc.php:452
|
52 |
+
#: includes/classes/profile-in.inc.php:235
|
53 |
+
#: includes/classes/sc-profile-in.inc.php:253
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
msgctxt "s2member-front"
|
55 |
msgid "password strength indicator"
|
56 |
msgstr ""
|
57 |
|
58 |
+
#: includes/classes/custom-reg-fields.inc.php:597
|
59 |
+
#: includes/classes/custom-reg-fields.inc.php:608
|
60 |
msgctxt "s2member-front"
|
61 |
msgid "Invalid data type. Expecting a string."
|
62 |
msgstr ""
|
63 |
|
64 |
+
#: includes/classes/custom-reg-fields.inc.php:603
|
65 |
msgctxt "s2member-front"
|
66 |
msgid "Invalid data type. Expecting an array."
|
67 |
msgstr ""
|
68 |
|
69 |
+
#: includes/classes/custom-reg-fields.inc.php:616
|
70 |
+
#: includes/classes/custom-reg-fields.inc.php:647 includes/s2member-min.js:1
|
71 |
+
#: includes/s2member.js:366
|
72 |
msgctxt "s2member-front"
|
73 |
msgid "This is a required field, please try again."
|
74 |
msgstr ""
|
75 |
|
76 |
+
#: includes/classes/custom-reg-fields.inc.php:622 includes/s2member-min.js:1
|
77 |
+
#: includes/s2member.js:351
|
78 |
msgctxt "s2member-front"
|
79 |
msgid "Required. This box must be checked."
|
80 |
msgstr ""
|
81 |
|
82 |
+
#: includes/classes/custom-reg-fields.inc.php:627 includes/s2member-min.js:1
|
83 |
+
#: includes/s2member.js:346
|
84 |
msgctxt "s2member-front"
|
85 |
msgid "Please check at least one of the boxes."
|
86 |
msgstr ""
|
87 |
|
88 |
+
#: includes/classes/custom-reg-fields.inc.php:632
|
89 |
+
#: includes/classes/custom-reg-fields.inc.php:637 includes/s2member-min.js:1
|
90 |
+
#: includes/s2member.js:357
|
91 |
msgctxt "s2member-front"
|
92 |
msgid "Please select one of the options."
|
93 |
msgstr ""
|
94 |
|
95 |
+
#: includes/classes/custom-reg-fields.inc.php:642 includes/s2member-min.js:1
|
96 |
+
#: includes/s2member.js:362
|
97 |
msgctxt "s2member-front"
|
98 |
msgid "Please select at least one of the options."
|
99 |
msgstr ""
|
100 |
|
101 |
+
#: includes/classes/custom-reg-fields.inc.php:658 includes/s2member-min.js:1
|
102 |
+
#: includes/s2member.js:372
|
103 |
msgctxt "s2member-front"
|
104 |
msgid "Must be numeric (with or without decimals, commas allowed)."
|
105 |
msgstr ""
|
106 |
|
107 |
+
#: includes/classes/custom-reg-fields.inc.php:663 includes/s2member-min.js:1
|
108 |
+
#: includes/s2member.js:376
|
109 |
msgctxt "s2member-front"
|
110 |
msgid "Must be numeric (with or without decimals, no commas)."
|
111 |
msgstr ""
|
112 |
|
113 |
+
#: includes/classes/custom-reg-fields.inc.php:668 includes/s2member-min.js:1
|
114 |
+
#: includes/s2member.js:380
|
115 |
msgctxt "s2member-front"
|
116 |
msgid "Must be an integer (a whole number, without any decimals)."
|
117 |
msgstr ""
|
118 |
|
119 |
+
#: includes/classes/custom-reg-fields.inc.php:673
|
120 |
msgctxt "s2member-front"
|
121 |
msgid "Must be an integer > 0 (whole number, no decimals, greater than 0)."
|
122 |
msgstr ""
|
123 |
|
124 |
+
#: includes/classes/custom-reg-fields.inc.php:678 includes/s2member-min.js:1
|
125 |
+
#: includes/s2member.js:388
|
126 |
msgctxt "s2member-front"
|
127 |
msgid "Must be a float (floating point number, decimals required)."
|
128 |
msgstr ""
|
129 |
|
130 |
+
#: includes/classes/custom-reg-fields.inc.php:683
|
131 |
msgctxt "s2member-front"
|
132 |
msgid "Must be a float > 0 (floating point number, decimals required, greater than 0)."
|
133 |
msgstr ""
|
134 |
|
135 |
+
#: includes/classes/custom-reg-fields.inc.php:688 includes/s2member-min.js:1
|
136 |
+
#: includes/s2member.js:396
|
137 |
msgctxt "s2member-front"
|
138 |
msgid "Must be a date (required date format: dd/mm/yyyy)."
|
139 |
msgstr ""
|
140 |
|
141 |
+
#: includes/classes/custom-reg-fields.inc.php:693 includes/s2member-min.js:1
|
142 |
+
#: includes/s2member.js:400
|
143 |
msgctxt "s2member-front"
|
144 |
msgid "Must be a valid email address."
|
145 |
msgstr ""
|
146 |
|
147 |
+
#: includes/classes/custom-reg-fields.inc.php:696
|
148 |
msgctxt "s2member-front"
|
149 |
msgid "Please use a personal email address. Addresses like <%s@> are problematic."
|
150 |
msgstr ""
|
151 |
|
152 |
+
#: includes/classes/custom-reg-fields.inc.php:701 includes/s2member-min.js:1
|
153 |
+
#: includes/s2member.js:408
|
154 |
msgctxt "s2member-front"
|
155 |
msgid "Must be a full URL (starting with http or https)."
|
156 |
msgstr ""
|
157 |
|
158 |
+
#: includes/classes/custom-reg-fields.inc.php:706 includes/s2member-min.js:1
|
159 |
+
#: includes/s2member.js:412
|
160 |
msgctxt "s2member-front"
|
161 |
msgid "Must be a domain name (domain name only, without http)."
|
162 |
msgstr ""
|
163 |
|
164 |
+
#: includes/classes/custom-reg-fields.inc.php:711 includes/s2member-min.js:1
|
165 |
+
#: includes/s2member.js:416
|
166 |
msgctxt "s2member-front"
|
167 |
msgid "Must be a phone # (10 digits w/possible hyphens, spaces, brackets)."
|
168 |
msgstr ""
|
169 |
|
170 |
+
#: includes/classes/custom-reg-fields.inc.php:716 includes/s2member-min.js:1
|
171 |
+
#: includes/s2member.js:420
|
172 |
msgctxt "s2member-front"
|
173 |
msgid "Must be a US zipcode (5-9 digits w/ possible hyphen)."
|
174 |
msgstr ""
|
175 |
|
176 |
+
#: includes/classes/custom-reg-fields.inc.php:721
|
177 |
msgctxt "s2member-front"
|
178 |
msgid "Must be a Canadian zipcode (6 alpha-numerics w/ possible space)."
|
179 |
msgstr ""
|
180 |
|
181 |
+
#: includes/classes/custom-reg-fields.inc.php:726 includes/s2member-min.js:1
|
182 |
+
#: includes/s2member.js:428
|
183 |
msgctxt "s2member-front"
|
184 |
msgid "Must be a zipcode (either a US or Canadian zipcode)."
|
185 |
msgstr ""
|
186 |
|
187 |
+
#: includes/classes/custom-reg-fields.inc.php:732
|
188 |
msgctxt "s2member-front"
|
189 |
msgid "Please use alphanumerics, spaces & punctuation only."
|
190 |
msgstr ""
|
191 |
|
192 |
+
#: includes/classes/custom-reg-fields.inc.php:735
|
193 |
msgctxt "s2member-front"
|
194 |
msgid "Please use alphanumerics & spaces only."
|
195 |
msgstr ""
|
196 |
|
197 |
+
#: includes/classes/custom-reg-fields.inc.php:738
|
198 |
msgctxt "s2member-front"
|
199 |
msgid "Please use alphanumerics & punctuation only (no spaces)."
|
200 |
msgstr ""
|
201 |
|
202 |
+
#: includes/classes/custom-reg-fields.inc.php:741 includes/s2member-min.js:1
|
203 |
+
#: includes/s2member.js:444
|
204 |
msgctxt "s2member-front"
|
205 |
msgid "Please use alphanumerics only (no spaces/punctuation)."
|
206 |
msgstr ""
|
207 |
|
208 |
+
#: includes/classes/custom-reg-fields.inc.php:744 includes/s2member-min.js:1
|
209 |
+
#: includes/s2member.js:448
|
210 |
msgctxt "s2member-front"
|
211 |
msgid "Please use alphabetics only (no digits/spaces/punctuation)."
|
212 |
msgstr ""
|
213 |
|
214 |
+
#: includes/classes/custom-reg-fields.inc.php:747 includes/s2member-min.js:1
|
215 |
+
#: includes/s2member.js:452
|
216 |
msgctxt "s2member-front"
|
217 |
msgid "Please use numeric digits only."
|
218 |
msgstr ""
|
219 |
|
220 |
+
#: includes/classes/custom-reg-fields.inc.php:760
|
221 |
+
#: includes/classes/custom-reg-fields.inc.php:774 includes/s2member-min.js:1
|
222 |
+
#: includes/s2member.js:459 includes/s2member.js:462
|
|
|
223 |
msgctxt "s2member-front"
|
224 |
msgid "digit"
|
225 |
msgstr ""
|
226 |
|
227 |
+
#: includes/classes/custom-reg-fields.inc.php:761
|
228 |
+
#: includes/classes/custom-reg-fields.inc.php:775 includes/s2member-min.js:1
|
229 |
+
#: includes/s2member.js:459 includes/s2member.js:462
|
|
|
230 |
msgctxt "s2member-front"
|
231 |
msgid "digits"
|
232 |
msgstr ""
|
233 |
|
234 |
+
#: includes/classes/custom-reg-fields.inc.php:764
|
235 |
+
#: includes/classes/custom-reg-fields.inc.php:778 includes/s2member-min.js:1
|
236 |
+
#: includes/s2member.js:459 includes/s2member.js:462
|
|
|
237 |
msgctxt "s2member-front"
|
238 |
msgid "character"
|
239 |
msgstr ""
|
240 |
|
241 |
+
#: includes/classes/custom-reg-fields.inc.php:765
|
242 |
+
#: includes/classes/custom-reg-fields.inc.php:779 includes/s2member-min.js:1
|
243 |
+
#: includes/s2member.js:459 includes/s2member.js:462
|
|
|
244 |
msgctxt "s2member-front"
|
245 |
msgid "characters"
|
246 |
msgstr ""
|
247 |
|
248 |
+
#: includes/classes/custom-reg-fields.inc.php:767 includes/s2member-min.js:1
|
249 |
+
#: includes/s2member.js:459
|
250 |
msgctxt "s2member-front"
|
251 |
msgid "Must be exactly %s %s."
|
252 |
msgstr ""
|
253 |
|
254 |
+
#: includes/classes/custom-reg-fields.inc.php:781 includes/s2member-min.js:1
|
255 |
+
#: includes/s2member.js:462
|
256 |
msgctxt "s2member-front"
|
257 |
msgid "Must be at least %s %s."
|
258 |
msgstr ""
|
259 |
|
260 |
+
#: includes/classes/email-configs.inc.php:150
|
261 |
msgctxt "s2member-front"
|
262 |
msgid "as a Member"
|
263 |
msgstr ""
|
264 |
|
265 |
+
#: includes/classes/files-in.inc.php:112 includes/classes/files-in.inc.php:265
|
|
|
266 |
msgctxt "s2member-front"
|
267 |
msgid "<strong>404: Sorry, file not found.</strong> Please contact Support for assistance."
|
268 |
msgstr ""
|
269 |
|
270 |
+
#: includes/classes/files-in.inc.php:123
|
271 |
msgctxt "s2member-front"
|
272 |
msgid "<strong>503 (Invalid Key):</strong> Sorry, your access to this file has expired. Please contact Support for assistance."
|
273 |
msgstr ""
|
274 |
|
275 |
+
#: includes/classes/files-in.inc.php:144
|
276 |
msgctxt "s2member-front"
|
277 |
msgid "<strong>503: Basic File Downloads are NOT enabled yet.</strong> Please contact Support for assistance. If you are the site owner, please configure: <code>s2Member -› General Options -› Membership Options Page</code>."
|
278 |
msgstr ""
|
279 |
|
280 |
+
#: includes/classes/files-in.inc.php:155
|
281 |
msgctxt "s2member-front"
|
282 |
msgid "<strong>503: Basic File Downloads are NOT enabled yet.</strong> Please contact Support for assistance. If you are the site owner, please configure: <code>s2Member -› Download Options -› Basic Download Restrictions</code>."
|
283 |
msgstr ""
|
284 |
|
285 |
+
#: includes/classes/files-in.inc.php:496
|
286 |
msgctxt "s2member-front"
|
287 |
msgid "<strong>503: Access denied.</strong> Invalid File Download specs."
|
288 |
msgstr ""
|
289 |
|
290 |
+
#: includes/classes/files-in.inc.php:592
|
291 |
msgctxt "s2member-front"
|
292 |
msgid "Members Only"
|
293 |
msgstr ""
|
294 |
|
295 |
+
#: includes/classes/files-in.inc.php:598
|
296 |
msgctxt "s2member-front"
|
297 |
msgid "<strong>401:</strong> Sorry, access denied."
|
298 |
msgstr ""
|
300 |
#. translators: In this translation, `%s` may be filled with an English
|
301 |
#. message, which comes from the Amazon S3 API call. Feel free to exclude `%s`
|
302 |
#. if you like.
|
303 |
+
#: includes/classes/files-in.inc.php:905
|
304 |
msgctxt "s2member-admin"
|
305 |
msgid "Unable to update existing Amazon S3 Cross-Domain Policy. %s"
|
306 |
msgstr ""
|
307 |
|
308 |
+
#: includes/classes/files-in.inc.php:908
|
309 |
msgctxt "s2member-admin"
|
310 |
msgid "Unable to update existing Amazon S3 Cross-Domain Policy. Connection failed."
|
311 |
msgstr ""
|
313 |
#. translators: In this translation, `%s` may be filled with an English
|
314 |
#. message, which comes from the Amazon S3 API call. Feel free to exclude `%s`
|
315 |
#. if you like.
|
316 |
+
#: includes/classes/files-in.inc.php:912
|
317 |
msgctxt "s2member-admin"
|
318 |
msgid "Unable to update existing Amazon S3 Bucket Policy. %s"
|
319 |
msgstr ""
|
320 |
|
321 |
+
#: includes/classes/files-in.inc.php:915
|
322 |
msgctxt "s2member-admin"
|
323 |
msgid "Unable to update existing Amazon S3 Bucket Policy. Connection failed."
|
324 |
msgstr ""
|
326 |
#. translators: In this translation, `%s` may be filled with an English
|
327 |
#. message, which comes from the Amazon S3 API call. Feel free to exclude `%s`
|
328 |
#. if you like.
|
329 |
+
#: includes/classes/files-in.inc.php:919
|
330 |
msgctxt "s2member-admin"
|
331 |
msgid "Unable to update existing Amazon S3 Bucket ACLs. %s"
|
332 |
msgstr ""
|
333 |
|
334 |
+
#: includes/classes/files-in.inc.php:922
|
335 |
msgctxt "s2member-admin"
|
336 |
msgid "Unable to update existing Amazon S3 Bucket ACLs. Connection failed."
|
337 |
msgstr ""
|
338 |
|
339 |
+
#: includes/classes/files-in.inc.php:925
|
340 |
msgctxt "s2member-admin"
|
341 |
msgid "Unable to acquire/read existing Amazon S3 Bucket ACLs. Unexpected response."
|
342 |
msgstr ""
|
344 |
#. translators: In this translation, `%s` may be filled with an English
|
345 |
#. message, which comes from the Amazon S3 API call. Feel free to exclude `%s`
|
346 |
#. if you like.
|
347 |
+
#: includes/classes/files-in.inc.php:929
|
348 |
msgctxt "s2member-admin"
|
349 |
msgid "Unable to acquire existing Amazon S3 Bucket ACLs. %s"
|
350 |
msgstr ""
|
351 |
|
352 |
+
#: includes/classes/files-in.inc.php:932
|
353 |
msgctxt "s2member-admin"
|
354 |
msgid "Unable to acquire existing Amazon S3 Bucket ACLs. Connection failed."
|
355 |
msgstr ""
|
356 |
|
357 |
+
#: includes/classes/files-in.inc.php:935
|
358 |
msgctxt "s2member-admin"
|
359 |
msgid "Unable to auto-configure existing Amazon S3 Bucket ACLs. Incomplete Amazon S3 configuration options. Missing one of: Amazon S3 Bucket, Access Key, or Secret Key."
|
360 |
msgstr ""
|
361 |
|
362 |
+
#: includes/classes/files-in.inc.php:1042
|
363 |
msgctxt "s2member-admin"
|
364 |
msgid "Unable to delete existing Amazon CloudFront Downloads Distro. Still in a `pending` state. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
|
365 |
msgstr ""
|
367 |
#. translators: In this translation, `%s` may be filled with an English
|
368 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
369 |
#. exclude `%s` if you like.
|
370 |
+
#: includes/classes/files-in.inc.php:1049
|
371 |
msgctxt "s2member-admin"
|
372 |
msgid "Unable to delete existing Amazon CloudFront Downloads Distro. %s"
|
373 |
msgstr ""
|
374 |
|
375 |
+
#: includes/classes/files-in.inc.php:1061
|
376 |
msgctxt "s2member-admin"
|
377 |
msgid "Unable to delete existing Amazon CloudFront Streaming Distro. Still in a `pending` state. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
|
378 |
msgstr ""
|
380 |
#. translators: In this translation, `%s` may be filled with an English
|
381 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
382 |
#. exclude `%s` if you like.
|
383 |
+
#: includes/classes/files-in.inc.php:1068
|
384 |
msgctxt "s2member-admin"
|
385 |
msgid "Unable to delete existing Amazon CloudFront Streaming Distro. %s"
|
386 |
msgstr ""
|
388 |
#. translators: In this translation, `%s` may be filled with an English
|
389 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
390 |
#. exclude `%s` if you like.
|
391 |
+
#: includes/classes/files-in.inc.php:1084
|
392 |
+
#: includes/classes/files-in.inc.php:1272
|
393 |
msgctxt "s2member-admin"
|
394 |
msgid "Unable to delete existing Amazon CloudFront Origin Access Identity. %s"
|
395 |
msgstr ""
|
397 |
#. translators: In this translation, `%s` may be filled with an English
|
398 |
#. message, which comes from the Amazon S3 API call. Feel free to exclude `%s`
|
399 |
#. if you like.
|
400 |
+
#: includes/classes/files-in.inc.php:1125
|
401 |
msgctxt "s2member-admin"
|
402 |
msgid "Unable to update existing Amazon S3 ACLs. %s"
|
403 |
msgstr ""
|
404 |
|
405 |
+
#: includes/classes/files-in.inc.php:1128
|
406 |
msgctxt "s2member-admin"
|
407 |
msgid "Unable to update existing Amazon S3 ACLs. Connection failed."
|
408 |
msgstr ""
|
410 |
#. translators: In this translation, `%s` may be filled with an English
|
411 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
412 |
#. exclude `%s` if you like.
|
413 |
+
#: includes/classes/files-in.inc.php:1132
|
414 |
+
#: includes/classes/files-in.inc.php:1567
|
415 |
msgctxt "s2member-admin"
|
416 |
msgid "Unable to create Amazon CloudFront Streaming Distro. %s"
|
417 |
msgstr ""
|
418 |
|
419 |
+
#: includes/classes/files-in.inc.php:1135
|
420 |
+
#: includes/classes/files-in.inc.php:1570
|
421 |
msgctxt "s2member-admin"
|
422 |
msgid "Unable to create Amazon CloudFront Streaming Distro. Connection failed."
|
423 |
msgstr ""
|
425 |
#. translators: In this translation, `%s` may be filled with an English
|
426 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
427 |
#. exclude `%s` if you like.
|
428 |
+
#: includes/classes/files-in.inc.php:1139
|
429 |
+
#: includes/classes/files-in.inc.php:1545
|
430 |
msgctxt "s2member-admin"
|
431 |
msgid "Unable to create Amazon CloudFront Downloads Distro. %s"
|
432 |
msgstr ""
|
433 |
|
434 |
+
#: includes/classes/files-in.inc.php:1142
|
435 |
+
#: includes/classes/files-in.inc.php:1548
|
436 |
msgctxt "s2member-admin"
|
437 |
msgid "Unable to create Amazon CloudFront Downloads Distro. Connection failed."
|
438 |
msgstr ""
|
440 |
#. translators: In this translation, `%s` may be filled with an English
|
441 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
442 |
#. exclude `%s` if you like.
|
443 |
+
#: includes/classes/files-in.inc.php:1146
|
444 |
+
#: includes/classes/files-in.inc.php:1318
|
445 |
msgctxt "s2member-admin"
|
446 |
msgid "Unable to create Amazon CloudFront Origin Access Identity. %s"
|
447 |
msgstr ""
|
448 |
|
449 |
+
#: includes/classes/files-in.inc.php:1149
|
450 |
+
#: includes/classes/files-in.inc.php:1321
|
451 |
msgctxt "s2member-admin"
|
452 |
msgid "Unable to create Amazon CloudFront Origin Access Identity. Connection failed."
|
453 |
msgstr ""
|
454 |
|
455 |
+
#: includes/classes/files-in.inc.php:1152
|
456 |
msgctxt "s2member-admin"
|
457 |
msgid "Unable to clear existing Amazon CloudFront Origin Access Identity."
|
458 |
msgstr ""
|
460 |
#. translators: In this translation, `%s` may be filled with an English
|
461 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
462 |
#. exclude `%s` if you like.
|
463 |
+
#: includes/classes/files-in.inc.php:1156
|
464 |
+
#: includes/classes/files-in.inc.php:1227
|
465 |
msgctxt "s2member-admin"
|
466 |
msgid "Unable to acquire existing Amazon CloudFront Origin Access Identity. %s"
|
467 |
msgstr ""
|
468 |
|
469 |
+
#: includes/classes/files-in.inc.php:1159
|
470 |
+
#: includes/classes/files-in.inc.php:1230
|
471 |
msgctxt "s2member-admin"
|
472 |
msgid "Unable to acquire existing Amazon CloudFront Origin Access Identity. Connection failed."
|
473 |
msgstr ""
|
474 |
|
475 |
+
#: includes/classes/files-in.inc.php:1162
|
476 |
msgctxt "s2member-admin"
|
477 |
msgid "Unable to clear existing Amazon CloudFront Streaming Distro."
|
478 |
msgstr ""
|
480 |
#. translators: In this translation, `%s` may be filled with an English
|
481 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
482 |
#. exclude `%s` if you like.
|
483 |
+
#: includes/classes/files-in.inc.php:1166
|
484 |
msgctxt "s2member-admin"
|
485 |
msgid "Unable to acquire existing Amazon CloudFront Streaming Distro. %s"
|
486 |
msgstr ""
|
487 |
|
488 |
+
#: includes/classes/files-in.inc.php:1169
|
489 |
msgctxt "s2member-admin"
|
490 |
msgid "Unable to acquire existing Amazon CloudFront Streaming Distro. Connection failed."
|
491 |
msgstr ""
|
492 |
|
493 |
+
#: includes/classes/files-in.inc.php:1172
|
494 |
msgctxt "s2member-admin"
|
495 |
msgid "Unable to clear existing Amazon CloudFront Downloads Distro."
|
496 |
msgstr ""
|
498 |
#. translators: In this translation, `%s` may be filled with an English
|
499 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
500 |
#. exclude `%s` if you like.
|
501 |
+
#: includes/classes/files-in.inc.php:1176
|
502 |
msgctxt "s2member-admin"
|
503 |
msgid "Unable to acquire existing Amazon CloudFront Downloads Distro. %s"
|
504 |
msgstr ""
|
505 |
|
506 |
+
#: includes/classes/files-in.inc.php:1179
|
507 |
msgctxt "s2member-admin"
|
508 |
msgid "Unable to acquire existing Amazon CloudFront Downloads Distro. Connection failed."
|
509 |
msgstr ""
|
510 |
|
511 |
+
#: includes/classes/files-in.inc.php:1182
|
512 |
msgctxt "s2member-admin"
|
513 |
msgid "Unable to auto-configure Amazon CloudFront Distros. Incomplete Amazon CloudFront configuration options. Missing of one: Amazon CloudFront Private Key-Pair-ID, or Private Key file contents."
|
514 |
msgstr ""
|
515 |
|
516 |
+
#: includes/classes/files-in.inc.php:1185
|
517 |
msgctxt "s2member-admin"
|
518 |
msgid "Unable to auto-configure Amazon S3/CloudFront Distros. Incomplete Amazon S3 configuration options. Missing one of: Amazon S3 Bucket, Access Key, or Secret Key. You must provide s2Member with an Amazon S3 configuration before enabling CloudFront."
|
519 |
msgstr ""
|
521 |
#. translators: In this translation, `%s` may be filled with an English
|
522 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
523 |
#. exclude `%s` if you like.
|
524 |
+
#: includes/classes/files-in.inc.php:1223
|
525 |
msgctxt "s2member-admin"
|
526 |
msgid "Existing Amazon CloudFront Origin Access Identity NOT found. %s"
|
527 |
msgstr ""
|
528 |
|
529 |
+
#: includes/classes/files-in.inc.php:1233
|
530 |
msgctxt "s2member-admin"
|
531 |
msgid "Unable to acquire existing Amazon CloudFront Origin Access Identity. Invalid Access ID."
|
532 |
msgstr ""
|
533 |
|
534 |
+
#: includes/classes/files-in.inc.php:1275
|
535 |
msgctxt "s2member-admin"
|
536 |
msgid "Unable to delete existing Amazon CloudFront Origin Access Identity. Connection failed."
|
537 |
msgstr ""
|
538 |
|
539 |
+
#: includes/classes/files-in.inc.php:1278
|
540 |
msgctxt "s2member-admin"
|
541 |
msgid "Unable to delete existing Amazon CloudFront Origin Access Identity. Invalid Access ID, ETag, or XML config."
|
542 |
msgstr ""
|
543 |
|
544 |
+
#: includes/classes/files-in.inc.php:1305
|
545 |
+
#: includes/classes/files-in.inc.php:1532
|
546 |
+
#: includes/classes/files-in.inc.php:1554
|
547 |
msgctxt "s2member-admin"
|
548 |
msgid "Created by s2Member, for S3 Bucket: %s."
|
549 |
msgstr ""
|
550 |
|
551 |
+
#: includes/classes/files-in.inc.php:1314
|
552 |
msgctxt "s2member-admin"
|
553 |
msgid "Unable to create/read Amazon CloudFront Origin Access Identity. Unexpected response."
|
554 |
msgstr ""
|
556 |
#. translators: In this translation, `%s` may be filled with an English
|
557 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
558 |
#. exclude `%s` if you like.
|
559 |
+
#: includes/classes/files-in.inc.php:1360
|
560 |
msgctxt "s2member-admin"
|
561 |
msgid "Existing Amazon CloudFront Distro NOT found. %s"
|
562 |
msgstr ""
|
564 |
#. translators: In this translation, `%s` may be filled with an English
|
565 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
566 |
#. exclude `%s` if you like.
|
567 |
+
#: includes/classes/files-in.inc.php:1364
|
568 |
msgctxt "s2member-admin"
|
569 |
msgid "Unable to acquire existing Amazon CloudFront Distro. %s"
|
570 |
msgstr ""
|
571 |
|
572 |
+
#: includes/classes/files-in.inc.php:1367
|
573 |
msgctxt "s2member-admin"
|
574 |
msgid "Unable to acquire existing Amazon CloudFront Distro. Connection failed."
|
575 |
msgstr ""
|
576 |
|
577 |
+
#: includes/classes/files-in.inc.php:1370
|
578 |
msgctxt "s2member-admin"
|
579 |
msgid "Unable to acquire existing Amazon CloudFront Distro. Invalid Distro ID and/or Distro type."
|
580 |
msgstr ""
|
582 |
#. translators: In this translation, `%s` may be filled with an English
|
583 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
584 |
#. exclude `%s` if you like.
|
585 |
+
#: includes/classes/files-in.inc.php:1414
|
586 |
+
#: includes/classes/files-in.inc.php:1489
|
587 |
msgctxt "s2member-admin"
|
588 |
msgid "Unable to disable existing Amazon CloudFront Distro. %s"
|
589 |
msgstr ""
|
590 |
|
591 |
+
#: includes/classes/files-in.inc.php:1417
|
592 |
+
#: includes/classes/files-in.inc.php:1492
|
593 |
msgctxt "s2member-admin"
|
594 |
msgid "Unable to disable existing Amazon CloudFront Distro. Connection failed."
|
595 |
msgstr ""
|
596 |
|
597 |
+
#: includes/classes/files-in.inc.php:1420
|
598 |
msgctxt "s2member-admin"
|
599 |
msgid "Existing Amazon CloudFront Distro cannot be disabled at this time. Still in a `pending` state. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
|
600 |
msgstr ""
|
601 |
|
602 |
+
#: includes/classes/files-in.inc.php:1426
|
603 |
msgctxt "s2member-admin"
|
604 |
msgid "Unable to disable existing Amazon CloudFront Distro. Invalid Distro ID, ETag, or XML config."
|
605 |
msgstr ""
|
607 |
#. translators: In this translation, `%s` may be filled with an English
|
608 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
609 |
#. exclude `%s` if you like.
|
610 |
+
#: includes/classes/files-in.inc.php:1471
|
611 |
msgctxt "s2member-admin"
|
612 |
msgid "Unable to delete existing Amazon CloudFront Distro. %s"
|
613 |
msgstr ""
|
614 |
|
615 |
+
#: includes/classes/files-in.inc.php:1474
|
616 |
msgctxt "s2member-admin"
|
617 |
msgid "Unable to delete existing Amazon CloudFront Distro. Connection failed."
|
618 |
msgstr ""
|
620 |
#. translators: In this translation, `%s` may be filled with an English
|
621 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
622 |
#. exclude `%s` if you like.
|
623 |
+
#: includes/classes/files-in.inc.php:1478
|
624 |
msgctxt "s2member-admin"
|
625 |
msgid "Existing Amazon CloudFront Distro cannot be deleted at this time. Still in a `pending` state after having been disabled by s2Member. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
|
626 |
msgstr ""
|
628 |
#. translators: In this translation, `%s` may be filled with an English
|
629 |
#. message, which comes from the Amazon CloudFront API call. Feel free to
|
630 |
#. exclude `%s` if you like.
|
631 |
+
#: includes/classes/files-in.inc.php:1482
|
632 |
msgctxt "s2member-admin"
|
633 |
msgid "Unable to check status of existing Amazon CloudFront Distro. %s"
|
634 |
msgstr ""
|
635 |
|
636 |
+
#: includes/classes/files-in.inc.php:1485
|
637 |
msgctxt "s2member-admin"
|
638 |
msgid "Unable to check status of existing Amazon CloudFront Distro. Connection failed."
|
639 |
msgstr ""
|
640 |
|
641 |
+
#: includes/classes/files-in.inc.php:1495
|
642 |
msgctxt "s2member-admin"
|
643 |
msgid "Existing Amazon CloudFront Distro cannot be deleted at this time. Still in a `pending` state. Please wait 15 minutes, then try again. There is a certain process that s2Member must strictly adhere to when re-configuring your Amazon CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run s2Member's auto-configuration routine many times, because s2Member will likely run into several `pending` challenges, as it works to completely re-configure your Amazon CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again."
|
644 |
msgstr ""
|
645 |
|
646 |
+
#: includes/classes/files-in.inc.php:1498
|
647 |
msgctxt "s2member-admin"
|
648 |
msgid "Unable to delete existing Amazon CloudFront Distro. Invalid Distro ID or ETag."
|
649 |
msgstr ""
|
650 |
|
651 |
+
#: includes/classes/files-in.inc.php:1541
|
652 |
msgctxt "s2member-admin"
|
653 |
msgid "Unable to create/read Amazon CloudFront Downloads Distro. Unexpected response."
|
654 |
msgstr ""
|
655 |
|
656 |
+
#: includes/classes/files-in.inc.php:1563
|
657 |
msgctxt "s2member-admin"
|
658 |
msgid "Unable to create/read Amazon CloudFront Streaming Distro. Unexpected response."
|
659 |
msgstr ""
|
660 |
|
661 |
+
#: includes/classes/files-in.inc.php:1574
|
662 |
msgctxt "s2member-admin"
|
663 |
msgid "Unable to create Amazon CloudFront Distro. Invalid Distro type."
|
664 |
msgstr ""
|
665 |
|
666 |
+
#: includes/classes/login-checks.inc.php:51
|
667 |
msgctxt "s2member-front"
|
668 |
msgid "<strong>ERROR</strong>: Invalid username for this site."
|
669 |
msgstr ""
|
670 |
|
671 |
+
#: includes/classes/login-checks.inc.php:78
|
672 |
msgctxt "s2member-front"
|
673 |
msgid "<strong>ERROR</strong>: Max simultaneous logins for username: %1$s. Please wait %2$s and try again."
|
674 |
msgstr ""
|
675 |
|
676 |
+
#: includes/classes/paypal-return-in-no-tx-data.inc.php:66
|
677 |
+
#: includes/classes/paypal-return-in-proxy-ty-email.inc.php:64
|
678 |
msgctxt "s2member-front"
|
679 |
msgid "<strong>Thank you! (you MUST check your email before proceeding).</strong><br /><br />* Note: It can take <em>(up to 15 minutes)</em> for Email Confirmation with important details. If you don't receive email confirmation in the next 15 minutes, please contact Support."
|
680 |
msgstr ""
|
681 |
|
682 |
+
#: includes/classes/paypal-return-in-no-tx-data.inc.php:66
|
683 |
+
#: includes/classes/paypal-return-in-proxy-ty-email.inc.php:64
|
684 |
msgctxt "s2member-front"
|
685 |
msgid "<strong>** Sandbox Mode **</strong> You may NOT receive this Email in Sandbox Mode. Sandbox addresses are usually bogus (for testing)."
|
686 |
msgstr ""
|
687 |
|
688 |
+
#: includes/classes/paypal-return-in-no-tx-data.inc.php:67
|
689 |
+
#: includes/classes/paypal-return-in-proxy-ty-email.inc.php:65
|
690 |
+
#: includes/classes/paypal-return-in-subscr-modify-w-level.inc.php:207
|
691 |
+
#: includes/classes/paypal-return-in-subscr-modify-w-level.inc.php:218
|
692 |
+
#: includes/classes/paypal-return-in-subscr-or-wa-w-level.inc.php:261
|
693 |
+
#: includes/classes/paypal-return-in-subscr-or-wa-w-level.inc.php:272
|
694 |
+
#: includes/classes/paypal-return-in-wa-ccaps-wo-level.inc.php:163
|
695 |
+
#: includes/classes/paypal-return-in-wa-ccaps-wo-level.inc.php:174
|
696 |
+
#: includes/classes/paypal-return-in-wa-ccaps-wo-level.inc.php:185
|
697 |
+
#: includes/classes/paypal-return-in-web-accept-sp.inc.php:126
|
698 |
+
#: includes/classes/paypal-return-in.inc.php:95
|
699 |
+
#: includes/classes/paypal-return-in.inc.php:111
|
700 |
+
#: includes/classes/paypal-return-in.inc.php:137
|
701 |
msgctxt "s2member-front"
|
702 |
msgid "Back To Home Page"
|
703 |
msgstr ""
|
704 |
|
705 |
+
#: includes/classes/paypal-return-in-proxy-x-preview.inc.php:64
|
706 |
msgctxt "s2member-front"
|
707 |
msgid "<strong>Thank you! (this is a preview, no action necessary).</strong><br /><br />* Note: each of your Customers are returned back to your site immediately after they complete checkout. This Return Page displays a message and instructions for the Customer. s2Member may change the message and instructions dynamically, based on what the Customer is actually doing <em>(i.e. based on the type of transaction that is taking place)</em>.<br /><br /><em>* With <a href=\"%s\" target=\"_blank\">s2Member Pro</a> installed, it is possible to customize this Return Page in various ways.</em>"
|
708 |
msgstr ""
|
709 |
|
710 |
+
#: includes/classes/paypal-return-in-proxy-x-preview.inc.php:65
|
711 |
+
#: includes/classes/paypal-return-in-web-accept-sp.inc.php:115
|
712 |
msgctxt "s2member-front"
|
713 |
msgid "Continue (Click Here)"
|
714 |
msgstr ""
|
715 |
|
716 |
+
#: includes/classes/paypal-return-in-subscr-modify-w-level.inc.php:195
|
717 |
+
#: includes/classes/paypal-return-in-subscr-or-wa-w-level.inc.php:249
|
718 |
msgctxt "s2member-front"
|
719 |
msgid "Thank you! You've been updated to:"
|
720 |
msgstr ""
|
721 |
|
722 |
+
#: includes/classes/paypal-return-in-subscr-modify-w-level.inc.php:196
|
723 |
+
#: includes/classes/paypal-return-in-subscr-or-wa-w-level.inc.php:250
|
724 |
+
#: includes/classes/paypal-return-in-wa-ccaps-wo-level.inc.php:152
|
725 |
msgctxt "s2member-front"
|
726 |
msgid "Please Log Back In (Click Here)"
|
727 |
msgstr ""
|
728 |
|
729 |
+
#: includes/classes/paypal-return-in-subscr-modify-w-level.inc.php:206
|
730 |
+
#: includes/classes/paypal-return-in-subscr-or-wa-w-level.inc.php:260
|
731 |
msgctxt "s2member-front"
|
732 |
msgid "<strong>ERROR:</strong> Unable to modify Subscription.<br />Please contact Support for assistance.<br /><br />The existing User ID is associated with an Administrator. Stopping here. Otherwise, an Administrator could lose access. Please make sure that you are NOT logged in as an Administrator while testing."
|
733 |
msgstr ""
|
734 |
|
735 |
+
#: includes/classes/paypal-return-in-subscr-modify-w-level.inc.php:217
|
736 |
+
#: includes/classes/paypal-return-in-subscr-or-wa-w-level.inc.php:271
|
737 |
msgctxt "s2member-front"
|
738 |
msgid "<strong>ERROR:</strong> Unable to modify Subscription.<br />Please contact Support for assistance.<br /><br />Could not get the existing User ID from the DB."
|
739 |
msgstr ""
|
740 |
|
741 |
+
#: includes/classes/paypal-return-in-subscr-modify-w-level.inc.php:228
|
742 |
+
#: includes/classes/paypal-return-in-subscr-or-wa-w-level.inc.php:383
|
743 |
+
#: includes/classes/paypal-return-in-wa-ccaps-wo-level.inc.php:195
|
744 |
+
#: includes/classes/paypal-return-in-web-accept-sp.inc.php:136
|
745 |
msgctxt "s2member-front"
|
746 |
msgid "Thank you! Please check your email for further details regarding your purchase."
|
747 |
msgstr ""
|
748 |
|
749 |
+
#: includes/classes/paypal-return-in-subscr-modify-w-level.inc.php:229
|
750 |
+
#: includes/classes/paypal-return-in-subscr-or-wa-w-level.inc.php:384
|
751 |
+
#: includes/classes/paypal-return-in-wa-ccaps-wo-level.inc.php:196
|
752 |
+
#: includes/classes/paypal-return-in-web-accept-sp.inc.php:137
|
753 |
msgctxt "s2member-front"
|
754 |
msgid "Return to Home Page"
|
755 |
msgstr ""
|
756 |
|
757 |
+
#: includes/classes/paypal-return-in-subscr-or-wa-w-level.inc.php:344
|
758 |
+
#: includes/classes/paypal-return-in-subscr-or-wa-w-level.inc.php:367
|
759 |
msgctxt "s2member-front"
|
760 |
msgid "<strong>Thank you! Your account has been approved.<br />The next step is to Register a Username for immediate access.</strong>"
|
761 |
msgstr ""
|
762 |
|
763 |
+
#: includes/classes/paypal-return-in-subscr-or-wa-w-level.inc.php:345
|
764 |
+
#: includes/classes/paypal-return-in-subscr-or-wa-w-level.inc.php:368
|
765 |
msgctxt "s2member-front"
|
766 |
msgid "Please Register Now (Click Here)"
|
767 |
msgstr ""
|
768 |
|
769 |
+
#: includes/classes/paypal-return-in-wa-ccaps-wo-level.inc.php:151
|
770 |
msgctxt "s2member-front"
|
771 |
msgid "Thank you! You now have access to:"
|
772 |
msgstr ""
|
773 |
|
774 |
+
#: includes/classes/paypal-return-in-wa-ccaps-wo-level.inc.php:162
|
775 |
msgctxt "s2member-front"
|
776 |
msgid "<strong>ERROR:</strong> Unable to add new Capabilities.<br />Please contact Support for assistance.<br /><br />The existing User ID is associated with an Administrator. Stopping here. Otherwise, an Administrator could lose access. Please make sure that you are NOT logged in as an Administrator while testing."
|
777 |
msgstr ""
|
778 |
|
779 |
+
#: includes/classes/paypal-return-in-wa-ccaps-wo-level.inc.php:173
|
780 |
msgctxt "s2member-front"
|
781 |
msgid "<strong>ERROR:</strong> Unable to add new Capabilities.<br />Please contact Support for assistance.<br /><br />Could not get the existing User ID from the DB."
|
782 |
msgstr ""
|
783 |
|
784 |
+
#: includes/classes/paypal-return-in-wa-ccaps-wo-level.inc.php:184
|
785 |
msgctxt "s2member-front"
|
786 |
msgid "<strong>ERROR:</strong> Unable to add new Capabilities.<br />Please contact Support for assistance.<br /><br />Missing User/Member details."
|
787 |
msgstr ""
|
788 |
|
789 |
+
#: includes/classes/paypal-return-in-web-accept-sp.inc.php:114
|
790 |
msgctxt "s2member-front"
|
791 |
msgid "<strong>Thank You! Your transaction has been approved.</strong>"
|
792 |
msgstr ""
|
793 |
|
794 |
+
#: includes/classes/paypal-return-in-web-accept-sp.inc.php:125
|
795 |
msgctxt "s2member-front"
|
796 |
msgid "<strong>ERROR:</strong> Unable to generate Access Link.<br />Please contact Support for assistance."
|
797 |
msgstr ""
|
798 |
|
799 |
+
#: includes/classes/paypal-return-in.inc.php:94
|
800 |
msgctxt "s2member-front"
|
801 |
msgid "<strong>ERROR:</strong> Unexpected <code>txn_type/status</code>.<br />The <code>txn_type/status</code> did not meet requirements.<br />Please contact Support for assistance."
|
802 |
msgstr ""
|
803 |
|
804 |
+
#: includes/classes/paypal-return-in.inc.php:110
|
805 |
msgctxt "s2member-front"
|
806 |
msgid "<strong>ERROR:</strong> Unable to verify <code>$_SERVER[\"HTTP_HOST\"]</code>.<br />Please contact Support for assistance.<br /><br />If you are the site owner, please check the <code>custom</code> value in your Button Code. It MUST start with your domain name."
|
807 |
msgstr ""
|
808 |
|
809 |
+
#: includes/classes/paypal-return-in.inc.php:136
|
810 |
msgctxt "s2member-front"
|
811 |
msgid "<strong>ERROR:</strong> Unable to verify <code>$_POST</code> vars.<br />Please contact Support for assistance.<br /><br />This is most likely related to an invalid configuration of s2Member, or a problem with server compatibility. If you are the site owner, and you're absolutely SURE that your configuration is valid, you may want to run some tests on your server, just to be sure <code>$_POST</code> variables are populated, and that your server is able to connect/communicate with your Payment Gateway over an HTTPS connection.<br /><br />s2Member uses the <code>WP_Http</code> class for remote connections; which will try to use <code>cURL</code> first, and then fall back on the <code>FOPEN</code> method when <code>cURL</code> is not available. On a Windows server, you may have to disable your <code>cURL</code> extension; and instead, set <code>allow_url_fopen = yes</code> in your php.ini file. The <code>cURL</code> extension (usually) does NOT support SSL connections on a Windows server.<br /><br />Please see <a href=\"http://www.s2member.com/forums/topic/ideal-server-configuration-for-s2member/\" target=\"_blank\">this thread</a> for details regarding the ideal server configuration for s2Member."
|
812 |
msgstr ""
|
815 |
#. by PayPal. Replace `%2$s` and `%3$s` with: `Unable to process, please try
|
816 |
#. again`, or something to that affect. Or, if you prefer, you could Filter
|
817 |
#. ``$response["__error"]`` with `ws_plugin__s2member_paypal_api_response`.
|
818 |
+
#: includes/classes/paypal-utilities.inc.php:185
|
819 |
msgctxt "s2member-front"
|
820 |
msgid "Error #%1$s. %2$s. %3$s."
|
821 |
msgstr ""
|
822 |
|
823 |
+
#: includes/classes/paypal-utilities.inc.php:188
|
824 |
+
#: includes/classes/paypal-utilities.inc.php:316
|
825 |
+
#: includes/classes/paypal-utilities.inc.php:324
|
|
|
|
|
826 |
msgctxt "s2member-front"
|
827 |
msgid "Error. Please contact Support for assistance."
|
828 |
msgstr ""
|
829 |
|
830 |
+
#: includes/classes/paypal-utilities.inc.php:232
|
831 |
+
#: includes/classes/paypal-utilities.inc.php:238
|
832 |
msgctxt "s2member-front"
|
833 |
msgid "Error #%s. Transaction declined. Please use an alternate funding source."
|
834 |
msgstr ""
|
835 |
|
836 |
+
#: includes/classes/paypal-utilities.inc.php:235
|
837 |
msgctxt "s2member-front"
|
838 |
msgid "Error #%s. Transaction declined. Express Checkout was NOT confirmed."
|
839 |
msgstr ""
|
842 |
#. Replace `%2$s` with: `Unable to process, please try again`, or something to
|
843 |
#. that affect. Or, if you prefer, you could Filter ``$response["__error"]``
|
844 |
#. with `ws_plugin__s2member_paypal_payflow_api_response`.
|
845 |
+
#: includes/classes/paypal-utilities.inc.php:314
|
846 |
+
#: includes/classes/paypal-utilities.inc.php:322
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
847 |
msgctxt "s2member-front"
|
848 |
msgid "Error #%1$s. %2$s."
|
849 |
msgstr ""
|
850 |
|
851 |
+
#: includes/classes/paypal-utilities.inc.php:369
|
852 |
msgctxt "s2member-front"
|
853 |
msgid " Please contact PayPal Merchant Technical Support (www.paypal.com/mts) and request `Recurring Billing` service, and also ask to have `Reference Transactions` enabled for Recurring Billing via Express Checkout."
|
854 |
msgstr ""
|
855 |
|
856 |
+
#: includes/classes/profile-in.inc.php:76
|
857 |
+
#: includes/classes/sc-profile-in.inc.php:94
|
|
|
858 |
msgctxt "s2member-front"
|
859 |
msgid "Username"
|
860 |
msgstr ""
|
861 |
|
862 |
+
#: includes/classes/profile-in.inc.php:76
|
863 |
+
#: includes/classes/sc-profile-in.inc.php:94
|
864 |
msgctxt "s2member-front"
|
865 |
msgid "(cannot be changed)"
|
866 |
msgstr ""
|
867 |
|
868 |
+
#: includes/classes/profile-in.inc.php:95
|
869 |
+
#: includes/classes/sc-profile-in.inc.php:113
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
870 |
msgctxt "s2member-front"
|
871 |
msgid "Email Address"
|
872 |
msgstr ""
|
873 |
|
874 |
+
#: includes/classes/profile-in.inc.php:154
|
875 |
+
#: includes/classes/sc-profile-in.inc.php:172
|
876 |
msgctxt "s2member-front"
|
877 |
msgid "Display Name"
|
878 |
msgstr ""
|
879 |
|
880 |
+
#: includes/classes/profile-in.inc.php:226
|
881 |
+
#: includes/classes/sc-profile-in.inc.php:244
|
882 |
msgctxt "s2member-front"
|
883 |
msgid "New Password?"
|
884 |
msgstr ""
|
885 |
|
886 |
+
#: includes/classes/profile-in.inc.php:226
|
887 |
+
#: includes/classes/sc-profile-in.inc.php:244
|
888 |
msgctxt "s2member-front"
|
889 |
msgid "(please type it twice)"
|
890 |
msgstr ""
|
891 |
|
892 |
+
#: includes/classes/profile-in.inc.php:227
|
893 |
+
#: includes/classes/sc-profile-in.inc.php:245
|
894 |
msgctxt "s2member-front"
|
895 |
msgid "Only if changing password, otherwise leave blank."
|
896 |
msgstr ""
|
897 |
|
898 |
+
#: includes/classes/profile-in.inc.php:272
|
899 |
+
#: includes/classes/sc-profile-in.inc.php:291
|
900 |
msgctxt "s2member-front"
|
901 |
msgid "Save All Changes"
|
902 |
msgstr ""
|
903 |
|
904 |
+
#: includes/classes/profile-mods-in.inc.php:149
|
905 |
+
#: includes/classes/profile-mods-in.inc.php:150
|
906 |
+
#: includes/classes/profile-mods-in.inc.php:151
|
907 |
+
#: includes/classes/sc-profile-in.inc.php:71
|
908 |
msgctxt "s2member-front"
|
909 |
msgid "Profile updated successfully."
|
910 |
msgstr ""
|
911 |
|
912 |
+
#: includes/classes/register-in.inc.php:48
|
913 |
+
#: includes/classes/sp-access.inc.php:132
|
914 |
msgctxt "s2member-front"
|
915 |
msgid "<strong>Your Link Expired:</strong><br />Please contact Support if you need assistance."
|
916 |
msgstr ""
|
917 |
|
918 |
+
#: includes/classes/registrations.inc.php:579
|
919 |
msgctxt "s2member-front"
|
920 |
msgid "s2Member security violation. You attempted to POST administrative variables that will NOT be trusted in a NON-administrative zone!"
|
921 |
msgstr ""
|
922 |
|
923 |
+
#: includes/classes/return-templates.inc.php:51
|
924 |
msgctxt "s2member-front"
|
925 |
msgid "Continue"
|
926 |
msgstr ""
|
927 |
|
928 |
+
#: includes/classes/return-templates.inc.php:52
|
929 |
msgctxt "s2member-front"
|
930 |
msgid "Thank you. Please click the link below."
|
931 |
msgstr ""
|
932 |
|
933 |
+
#: includes/classes/return-templates.inc.php:70
|
934 |
msgctxt "s2member-front"
|
935 |
msgid "[ %s ] <strong><em>says…</em></strong>"
|
936 |
msgstr ""
|
937 |
|
938 |
+
#: includes/classes/return-templates.inc.php:74
|
939 |
msgctxt "s2member-front"
|
940 |
msgid "If you need assistance, please <a href=\"%s\" target=\"_blank\">contact support</a>."
|
941 |
msgstr ""
|
942 |
|
943 |
+
#: includes/classes/sc-paypal-button-e.inc.php:77
|
944 |
+
#: includes/classes/sc-paypal-button-in.inc.php:73
|
945 |
+
#: includes/classes/sc-paypal-button-in.inc.php:97
|
946 |
+
#: includes/classes/sc-paypal-button-in.inc.php:152
|
947 |
+
#: includes/classes/sc-paypal-button-in.inc.php:208
|
948 |
+
#: includes/templates/buttons/paypal-cancellation-button.php:7
|
949 |
+
#: includes/templates/buttons/paypal-ccaps-checkout-button.php:34
|
950 |
+
#: includes/templates/buttons/paypal-checkout-button.php:46
|
951 |
+
#: includes/templates/buttons/paypal-sp-checkout-button.php:34
|
|
|
|
|
|
|
952 |
msgctxt "s2member-front paypal-button-lang-code"
|
953 |
msgid "en_US"
|
954 |
msgstr ""
|
955 |
|
956 |
+
#: includes/classes/translations.inc.php:80
|
957 |
msgctxt "s2member-front"
|
958 |
msgid "Username:"
|
959 |
msgstr ""
|
960 |
|
961 |
+
#: includes/classes/translations.inc.php:84
|
962 |
msgctxt "s2member-front"
|
963 |
msgid "My Password:"
|
964 |
msgstr ""
|
965 |
|
966 |
+
#: includes/classes/translations.inc.php:91
|
967 |
msgctxt "s2member-front"
|
968 |
msgid "Username *"
|
969 |
msgstr ""
|
970 |
|
971 |
+
#: includes/classes/translations.inc.php:95
|
972 |
msgctxt "s2member-front"
|
973 |
msgid "Password *"
|
974 |
msgstr ""
|
975 |
|
976 |
+
#: includes/classes/translations.inc.php:99
|
977 |
msgctxt "s2member-front"
|
978 |
msgid "Email Address *"
|
979 |
msgstr ""
|
980 |
|
981 |
+
#: includes/classes/translations.inc.php:106
|
982 |
msgctxt "s2member-front"
|
983 |
msgid "Registration complete. Please log in."
|
984 |
msgstr ""
|
985 |
|
986 |
+
#: includes/classes/translations.inc.php:113
|
987 |
msgctxt "s2member-front"
|
988 |
msgid ""
|
989 |
"You have been invited to join `%1$s` at\n"
|
992 |
"%4$s\n"
|
993 |
msgstr ""
|
994 |
|
995 |
+
#: includes/classes/translations.inc.php:120
|
996 |
msgctxt "s2member-front"
|
997 |
msgid "Your account is now active. <a href=\"%1$s\">Visit site</a> or <a href=\"%2$s\">Log in</a>."
|
998 |
msgstr ""
|
999 |
|
1000 |
+
#: includes/classes/translations.inc.php:140
|
1001 |
+
#: includes/classes/translations.inc.php:161
|
1002 |
msgctxt "s2member-front"
|
1003 |
msgid "By filling out the form below, you can <strong>add a site to your account</strong>."
|
1004 |
msgstr ""
|
1005 |
|
1006 |
+
#: includes/classes/translations.inc.php:140
|
1007 |
msgctxt "s2member-front"
|
1008 |
msgid "You may create <strong>%s</strong> site."
|
1009 |
msgid_plural "You may create up to <strong>%s</strong> sites."
|
1010 |
msgstr[0] ""
|
1011 |
msgstr[1] ""
|
1012 |
|
1013 |
+
#: includes/classes/translations.inc.php:161
|
1014 |
msgctxt "s2member-front"
|
1015 |
msgid "You may create up to <strong>%s</strong> site."
|
1016 |
msgid_plural "You may create up to <strong>%s</strong> sites."
|
1017 |
msgstr[0] ""
|
1018 |
msgstr[1] ""
|
1019 |
|
1020 |
+
#: includes/classes/users-list-in.inc.php:349
|
1021 |
msgctxt "s2member-front"
|
1022 |
msgid "Additional Profile Fields"
|
1023 |
msgstr ""
|
1024 |
|
1025 |
+
#: includes/classes/users-list-in.inc.php:349
|
1026 |
msgctxt "s2member-front"
|
1027 |
msgid "(for this site)"
|
1028 |
msgstr ""
|
1029 |
|
1030 |
+
#: includes/classes/utils-time.inc.php:55
|
1031 |
msgctxt "s2member-front"
|
1032 |
msgid "less than a minute"
|
1033 |
msgstr ""
|
1034 |
|
1035 |
+
#: includes/classes/utils-time.inc.php:56
|
1036 |
msgctxt "s2member-front"
|
1037 |
msgid "1 minute"
|
1038 |
msgstr ""
|
1039 |
|
1040 |
+
#: includes/classes/utils-time.inc.php:57
|
1041 |
msgctxt "s2member-front"
|
1042 |
msgid "%s minute"
|
1043 |
msgid_plural "%s minutes"
|
1044 |
msgstr[0] ""
|
1045 |
msgstr[1] ""
|
1046 |
|
1047 |
+
#: includes/classes/utils-time.inc.php:58
|
1048 |
msgctxt "s2member-front"
|
1049 |
msgid "about 1 hour"
|
1050 |
msgstr ""
|
1051 |
|
1052 |
+
#: includes/classes/utils-time.inc.php:64
|
1053 |
msgctxt "s2member-front"
|
1054 |
msgid "1 hour"
|
1055 |
msgstr ""
|
1056 |
|
1057 |
+
#: includes/classes/utils-time.inc.php:65
|
1058 |
msgctxt "s2member-front"
|
1059 |
msgid "%s hour"
|
1060 |
msgid_plural "%s hours"
|
1061 |
msgstr[0] ""
|
1062 |
msgstr[1] ""
|
1063 |
|
1064 |
+
#: includes/classes/utils-time.inc.php:66
|
1065 |
msgctxt "s2member-front"
|
1066 |
msgid "about 1 day"
|
1067 |
msgstr ""
|
1068 |
|
1069 |
+
#: includes/classes/utils-time.inc.php:72
|
1070 |
msgctxt "s2member-front"
|
1071 |
msgid "1 day"
|
1072 |
msgstr ""
|
1073 |
|
1074 |
+
#: includes/classes/utils-time.inc.php:73
|
1075 |
msgctxt "s2member-front"
|
1076 |
msgid "%s day"
|
1077 |
msgid_plural "%s days"
|
1078 |
msgstr[0] ""
|
1079 |
msgstr[1] ""
|
1080 |
|
1081 |
+
#: includes/classes/utils-time.inc.php:74
|
1082 |
msgctxt "s2member-front"
|
1083 |
msgid "about 1 week"
|
1084 |
msgstr ""
|
1085 |
|
1086 |
+
#: includes/classes/utils-time.inc.php:80
|
1087 |
msgctxt "s2member-front"
|
1088 |
msgid "1 week"
|
1089 |
msgstr ""
|
1090 |
|
1091 |
+
#: includes/classes/utils-time.inc.php:81
|
1092 |
msgctxt "s2member-front"
|
1093 |
msgid "%s week"
|
1094 |
msgid_plural "%s weeks"
|
1095 |
msgstr[0] ""
|
1096 |
msgstr[1] ""
|
1097 |
|
1098 |
+
#: includes/classes/utils-time.inc.php:82
|
1099 |
msgctxt "s2member-front"
|
1100 |
msgid "about 1 month"
|
1101 |
msgstr ""
|
1102 |
|
1103 |
+
#: includes/classes/utils-time.inc.php:88
|
1104 |
msgctxt "s2member-front"
|
1105 |
msgid "1 month"
|
1106 |
msgstr ""
|
1107 |
|
1108 |
+
#: includes/classes/utils-time.inc.php:89
|
1109 |
msgctxt "s2member-front"
|
1110 |
msgid "%s month"
|
1111 |
msgid_plural "%s months"
|
1112 |
msgstr[0] ""
|
1113 |
msgstr[1] ""
|
1114 |
|
1115 |
+
#: includes/classes/utils-time.inc.php:90
|
1116 |
msgctxt "s2member-front"
|
1117 |
msgid "about 1 year"
|
1118 |
msgstr ""
|
1119 |
|
1120 |
+
#: includes/classes/utils-time.inc.php:96
|
1121 |
msgctxt "s2member-front"
|
1122 |
msgid "1 year"
|
1123 |
msgstr ""
|
1124 |
|
1125 |
+
#: includes/classes/utils-time.inc.php:97
|
1126 |
msgctxt "s2member-front"
|
1127 |
msgid "%s year"
|
1128 |
msgid_plural "%s years"
|
1129 |
msgstr[0] ""
|
1130 |
msgstr[1] ""
|
1131 |
|
1132 |
+
#: includes/classes/utils-time.inc.php:241
|
1133 |
msgctxt "s2member-front"
|
1134 |
msgid "Daily"
|
1135 |
msgstr ""
|
1136 |
|
1137 |
+
#: includes/classes/utils-time.inc.php:241
|
1138 |
msgctxt "s2member-front"
|
1139 |
msgid "Weekly"
|
1140 |
msgstr ""
|
1141 |
|
1142 |
+
#: includes/classes/utils-time.inc.php:241
|
1143 |
msgctxt "s2member-front"
|
1144 |
msgid "Monthly"
|
1145 |
msgstr ""
|
1146 |
|
1147 |
+
#: includes/classes/utils-time.inc.php:241
|
1148 |
msgctxt "s2member-front"
|
1149 |
msgid "Yearly"
|
1150 |
msgstr ""
|
1151 |
|
1152 |
+
#: includes/classes/utils-time.inc.php:241
|
1153 |
+
#: includes/classes/utils-time.inc.php:252
|
1154 |
msgctxt "s2member-front"
|
1155 |
msgid "Lifetime"
|
1156 |
msgstr ""
|
1157 |
|
1158 |
+
#: includes/classes/utils-time.inc.php:245
|
1159 |
msgctxt "s2member-front"
|
1160 |
msgid "Bi-Weekly"
|
1161 |
msgstr ""
|
1162 |
|
1163 |
+
#: includes/classes/utils-time.inc.php:246
|
1164 |
msgctxt "s2member-front"
|
1165 |
msgid "Bi-Monthly"
|
1166 |
msgstr ""
|
1167 |
|
1168 |
+
#: includes/classes/utils-time.inc.php:247
|
1169 |
msgctxt "s2member-front"
|
1170 |
msgid "Quarterly"
|
1171 |
msgstr ""
|
1172 |
|
1173 |
+
#: includes/classes/utils-time.inc.php:248
|
1174 |
msgctxt "s2member-front"
|
1175 |
msgid "Semi-Yearly"
|
1176 |
msgstr ""
|
1177 |
|
1178 |
+
#: includes/classes/utils-time.inc.php:252
|
1179 |
msgctxt "s2member-front"
|
1180 |
msgid "Day"
|
1181 |
msgstr ""
|
1182 |
|
1183 |
+
#: includes/classes/utils-time.inc.php:252
|
1184 |
msgctxt "s2member-front"
|
1185 |
msgid "Week"
|
1186 |
msgstr ""
|
1187 |
|
1188 |
+
#: includes/classes/utils-time.inc.php:252
|
1189 |
msgctxt "s2member-front"
|
1190 |
msgid "Month"
|
1191 |
msgstr ""
|
1192 |
|
1193 |
+
#: includes/classes/utils-time.inc.php:252
|
1194 |
msgctxt "s2member-front"
|
1195 |
msgid "Year"
|
1196 |
msgstr ""
|
1197 |
|
1198 |
+
#: includes/classes/utils-time.inc.php:258
|
1199 |
msgctxt "s2member-front"
|
1200 |
msgid "Days"
|
1201 |
msgstr ""
|
1202 |
|
1203 |
+
#: includes/classes/utils-time.inc.php:258
|
1204 |
msgctxt "s2member-front"
|
1205 |
msgid "Weeks"
|
1206 |
msgstr ""
|
1207 |
|
1208 |
+
#: includes/classes/utils-time.inc.php:258
|
1209 |
msgctxt "s2member-front"
|
1210 |
msgid "Months"
|
1211 |
msgstr ""
|
1212 |
|
1213 |
+
#: includes/classes/utils-time.inc.php:258
|
1214 |
msgctxt "s2member-front"
|
1215 |
msgid "Years"
|
1216 |
msgstr ""
|
1217 |
|
1218 |
+
#: includes/classes/utils-time.inc.php:258
|
1219 |
msgctxt "s2member-front"
|
1220 |
msgid "Lifetimes"
|
1221 |
msgstr ""
|
1222 |
|
1223 |
#. translators: Each cycle ( i.e. `each day/week/month` or `every 2
|
1224 |
#. days/weeks/months`, etc. ). Cycles are translated elsewhere.
|
1225 |
+
#: includes/classes/utils-time.inc.php:295
|
1226 |
+
#: includes/classes/utils-time.inc.php:338
|
1227 |
msgctxt "s2member-front"
|
1228 |
msgid "each %2$s"
|
1229 |
msgid_plural "every %1$s %3$s"
|
1230 |
msgstr[0] ""
|
1231 |
msgstr[1] ""
|
1232 |
|
1233 |
+
#: includes/classes/utils-time.inc.php:298
|
1234 |
msgctxt "s2member-front"
|
1235 |
msgid "lifetime"
|
1236 |
msgstr ""
|
1237 |
|
1238 |
#. translators: Membership cycle ( i.e. `1 day/week/month` or `2
|
1239 |
#. days/weeks/months`, etc. ). Most of this is translated elsewhere.
|
1240 |
+
#: includes/classes/utils-time.inc.php:302
|
1241 |
msgctxt "s2member-front"
|
1242 |
msgid "%1$s %2$s"
|
1243 |
msgid_plural "%1$s %3$s"
|
1246 |
|
1247 |
#. translators: Cycle ( i.e. `for 1 day/week/month` or `for 2
|
1248 |
#. days/weeks/months`, etc. ). Most of this is translated elsewhere.
|
1249 |
+
#: includes/classes/utils-time.inc.php:345
|
1250 |
msgctxt "s2member-front"
|
1251 |
msgid "for %1$s %2$s"
|
1252 |
msgid_plural "for %1$s %3$s"
|
1253 |
msgstr[0] ""
|
1254 |
msgstr[1] ""
|
1255 |
|
1256 |
+
#: includes/s2member-min.js:1 includes/s2member.js:35
|
1257 |
msgctxt "s2member-front"
|
1258 |
msgid "— Confirm File Download —"
|
1259 |
msgstr ""
|
1260 |
|
1261 |
+
#: includes/s2member-min.js:1 includes/s2member.js:36
|
1262 |
msgctxt "s2member-front"
|
1263 |
msgid "You`ve downloaded %s protected %s in the last %s."
|
1264 |
msgstr ""
|
1265 |
|
1266 |
+
#: includes/s2member-min.js:1 includes/s2member.js:36
|
1267 |
msgctxt "s2member-front"
|
1268 |
msgid "file"
|
1269 |
msgstr ""
|
1270 |
|
1271 |
+
#: includes/s2member-min.js:1 includes/s2member.js:36
|
1272 |
msgctxt "s2member-front"
|
1273 |
msgid "files"
|
1274 |
msgstr ""
|
1275 |
|
1276 |
+
#: includes/s2member-min.js:1 includes/s2member.js:36
|
1277 |
msgctxt "s2member-front"
|
1278 |
msgid "24 hours"
|
1279 |
msgstr ""
|
1280 |
|
1281 |
+
#: includes/s2member-min.js:1 includes/s2member.js:36
|
1282 |
msgctxt "s2member-front"
|
1283 |
msgid "%s days"
|
1284 |
msgstr ""
|
1285 |
|
1286 |
+
#: includes/s2member-min.js:1 includes/s2member.js:37
|
1287 |
msgctxt "s2member-front"
|
1288 |
msgid "You`re entitled to UNLIMITED downloads though (so, no worries)."
|
1289 |
msgstr ""
|
1290 |
|
1291 |
+
#: includes/s2member-min.js:1 includes/s2member.js:37
|
1292 |
msgctxt "s2member-front"
|
1293 |
msgid "You`re entitled to %s unique %s %s."
|
1294 |
msgstr ""
|
1295 |
|
1296 |
+
#: includes/s2member-min.js:1 includes/s2member.js:37
|
1297 |
msgctxt "s2member-front"
|
1298 |
msgid "download"
|
1299 |
msgstr ""
|
1300 |
|
1301 |
+
#: includes/s2member-min.js:1 includes/s2member.js:37
|
1302 |
msgctxt "s2member-front"
|
1303 |
msgid "downloads"
|
1304 |
msgstr ""
|
1305 |
|
1306 |
+
#: includes/s2member-min.js:1 includes/s2member.js:37
|
1307 |
msgctxt "s2member-front"
|
1308 |
msgid "each day"
|
1309 |
msgstr ""
|
1310 |
|
1311 |
+
#: includes/s2member-min.js:1 includes/s2member.js:37
|
1312 |
msgctxt "s2member-front"
|
1313 |
msgid "every %s-day period"
|
1314 |
msgstr ""
|
1315 |
|
1316 |
+
#: includes/s2member-min.js:1 includes/s2member.js:84 includes/s2member.js:89
|
1317 |
+
#: includes/s2member.js:94 includes/s2member.js:125 includes/s2member.js:180
|
1318 |
+
#: includes/s2member.js:185 includes/s2member.js:190 includes/s2member.js:219
|
1319 |
+
#: includes/s2member.js:248 includes/s2member.js:273
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1320 |
msgctxt "s2member-front"
|
1321 |
msgid "— Oops, you missed something: —"
|
1322 |
msgstr ""
|
1323 |
|
1324 |
+
#: includes/s2member-min.js:1 includes/s2member.js:89 includes/s2member.js:185
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1325 |
msgctxt "s2member-front"
|
1326 |
msgid "Passwords do not match up. Please try again."
|
1327 |
msgstr ""
|
1328 |
|
1329 |
+
#: includes/s2member-min.js:1 includes/s2member.js:94 includes/s2member.js:190
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1330 |
msgctxt "s2member-front"
|
1331 |
msgid "Password MUST be at least 6 characters. Please try again."
|
1332 |
msgstr ""
|
1333 |
|
1334 |
+
#: includes/s2member-min.js:1 includes/s2member.js:313
|
1335 |
msgctxt "s2member-front"
|
1336 |
msgid "Strength indicator"
|
1337 |
msgstr ""
|
1338 |
|
1339 |
+
#: includes/s2member-min.js:1 includes/s2member.js:314
|
1340 |
msgctxt "s2member-front"
|
1341 |
msgid "Very weak"
|
1342 |
msgstr ""
|
1343 |
|
1344 |
+
#: includes/s2member-min.js:1 includes/s2member.js:315
|
1345 |
msgctxt "s2member-front"
|
1346 |
msgid "Weak"
|
1347 |
msgstr ""
|
1348 |
|
1349 |
+
#: includes/s2member-min.js:1 includes/s2member.js:316
|
1350 |
msgctxt "s2member-front"
|
1351 |
msgid "Medium"
|
1352 |
msgstr ""
|
1353 |
|
1354 |
+
#: includes/s2member-min.js:1 includes/s2member.js:317
|
1355 |
msgctxt "s2member-front"
|
1356 |
msgid "Strong"
|
1357 |
msgstr ""
|
1358 |
|
1359 |
+
#: includes/s2member-min.js:1 includes/s2member.js:318
|
1360 |
msgctxt "s2member-front"
|
1361 |
msgid "Mismatch"
|
1362 |
msgstr ""
|
1363 |
|
1364 |
+
#: includes/s2member-min.js:1 includes/s2member.js:384
|
1365 |
msgctxt "s2member-front"
|
1366 |
msgid "Must be an integer > 0 (whole number, no decimals, greater than 0)."
|
1367 |
msgstr ""
|
1368 |
|
1369 |
+
#: includes/s2member-min.js:1 includes/s2member.js:392
|
1370 |
msgctxt "s2member-front"
|
1371 |
msgid "Must be a float > 0 (floating point number, decimals required, greater than 0)."
|
1372 |
msgstr ""
|
1373 |
|
1374 |
+
#: includes/s2member-min.js:1 includes/s2member.js:404
|
1375 |
msgctxt "s2member-front"
|
1376 |
msgid ""
|
1377 |
"Please use a personal email address.\n"
|
1378 |
"Addresses like <%s@> are problematic."
|
1379 |
msgstr ""
|
1380 |
|
1381 |
+
#: includes/s2member-min.js:1 includes/s2member.js:424
|
1382 |
msgctxt "s2member-front"
|
1383 |
msgid "Must be a Canadian zipcode (6 alpha-numerics w/possible space)."
|
1384 |
msgstr ""
|
1385 |
|
1386 |
+
#: includes/s2member-min.js:1 includes/s2member.js:432
|
1387 |
msgctxt "s2member-front"
|
1388 |
msgid "Please use alphanumerics, spaces & punctuation only."
|
1389 |
msgstr ""
|
1390 |
|
1391 |
+
#: includes/s2member-min.js:1 includes/s2member.js:436
|
1392 |
msgctxt "s2member-front"
|
1393 |
msgid "Please use alphanumerics & spaces only."
|
1394 |
msgstr ""
|
1395 |
|
1396 |
+
#: includes/s2member-min.js:1 includes/s2member.js:440
|
1397 |
msgctxt "s2member-front"
|
1398 |
msgid "Please use alphanumerics & punctuation only (no spaces)."
|
1399 |
msgstr ""
|
1400 |
|
1401 |
+
#: includes/syscon.inc.php:84
|
1402 |
msgctxt "s2member-front recaptcha-lang-code"
|
1403 |
msgid "en"
|
1404 |
msgstr ""
|
1405 |
|
1406 |
+
#: includes/syscon.inc.php:154
|
1407 |
msgctxt "s2member-front"
|
1408 |
msgid "Yes, I want to receive updates via email."
|
1409 |
msgstr ""
|
1410 |
|
1411 |
+
#: includes/syscon.inc.php:210
|
1412 |
msgctxt "s2member-front"
|
1413 |
msgid "[%s] Username/Password"
|
1414 |
msgstr ""
|
1415 |
|
1416 |
+
#: includes/syscon.inc.php:211
|
1417 |
msgctxt "s2member-front"
|
1418 |
msgid ""
|
1419 |
"Your Username/Password for:\n"
|
1424 |
"%%%%wp_login_url%%%%"
|
1425 |
msgstr ""
|
1426 |
|
1427 |
+
#: includes/syscon.inc.php:214
|
1428 |
msgctxt "s2member-front"
|
1429 |
msgid "[%s] New User Registration"
|
1430 |
msgstr ""
|
1431 |
|
1432 |
+
#: includes/syscon.inc.php:215
|
1433 |
msgctxt "s2member-front"
|
1434 |
msgid ""
|
1435 |
"New User Registration on your site:\n"
|
1441 |
"IP Address: %%%%user_ip%%%%"
|
1442 |
msgstr ""
|
1443 |
|
1444 |
+
#: includes/syscon.inc.php:237
|
|
|
1445 |
msgctxt "s2member-front"
|
1446 |
msgid "Congratulations! (your membership has been approved)"
|
1447 |
msgstr ""
|
1448 |
|
1449 |
+
#: includes/syscon.inc.php:238
|
1450 |
msgctxt "s2member-front"
|
1451 |
msgid ""
|
1452 |
"Thanks %%%%first_name%%%%! Your membership has been approved.\n"
|
1462 |
"%s"
|
1463 |
msgstr ""
|
1464 |
|
1465 |
+
#: includes/syscon.inc.php:241 includes/syscon.inc.php:245
|
1466 |
msgctxt "s2member-front"
|
1467 |
msgid "Thank you! Your account has been updated."
|
1468 |
msgstr ""
|
1469 |
|
1470 |
+
#: includes/syscon.inc.php:242 includes/syscon.inc.php:246
|
1471 |
msgctxt "s2member-front"
|
1472 |
msgid ""
|
1473 |
"Thanks %%%%first_name%%%%! Your account now has access to: %%%%item_name%%%%.\n"
|
1478 |
"%s"
|
1479 |
msgstr ""
|
1480 |
|
1481 |
+
#: includes/syscon.inc.php:249
|
|
|
1482 |
msgctxt "s2member-front"
|
1483 |
msgid "Thank You! (instructions for access)"
|
1484 |
msgstr ""
|
1485 |
|
1486 |
+
#: includes/syscon.inc.php:250
|
1487 |
msgctxt "s2member-front"
|
1488 |
msgid ""
|
1489 |
"Thanks %%%%first_name%%%%!\n"
|
1500 |
"%s"
|
1501 |
msgstr ""
|
1502 |
|
1503 |
+
#: includes/syscon.inc.php:289
|
1504 |
msgctxt "s2member-front"
|
1505 |
msgid "Free Subscriber"
|
1506 |
msgstr ""
|
1507 |
|
1508 |
+
#: includes/syscon.inc.php:289
|
1509 |
msgctxt "s2member-front"
|
1510 |
msgid "Bronze Member"
|
1511 |
msgstr ""
|
1512 |
|
1513 |
+
#: includes/syscon.inc.php:289
|
1514 |
msgctxt "s2member-front"
|
1515 |
msgid "Silver Member"
|
1516 |
msgstr ""
|
1517 |
|
1518 |
+
#: includes/syscon.inc.php:289
|
1519 |
msgctxt "s2member-front"
|
1520 |
msgid "Gold Member"
|
1521 |
msgstr ""
|
1522 |
|
1523 |
+
#: includes/syscon.inc.php:289
|
1524 |
msgctxt "s2member-front"
|
1525 |
msgid "Platinum Member"
|
1526 |
msgstr ""
|
1527 |
|
1528 |
+
#: includes/syscon.inc.php:289
|
1529 |
msgctxt "s2member-front"
|
1530 |
msgid "Level %s Member"
|
1531 |
msgstr ""
|
1532 |
|
1533 |
+
#: includes/templates/badges/s-badge.php:22
|
1534 |
msgctxt "s2member-front"
|
1535 |
msgid "s2Member® ( Security for WordPress® )"
|
1536 |
msgstr ""
|
1537 |
|
1538 |
+
#: includes/templates/buttons/paypal-ccaps-checkout-button.php:9
|
1539 |
+
#: includes/templates/buttons/paypal-checkout-button.php:9
|
1540 |
+
#: includes/templates/buttons/paypal-sp-checkout-button.php:9
|
1541 |
msgctxt "s2member-admin"
|
1542 |
msgid "Instant Payment Notification & Return Page Details"
|
1543 |
msgstr ""
|
1544 |
|
1545 |
+
#: includes/templates/buttons/paypal-ccaps-checkout-button.php:14
|
1546 |
+
#: includes/templates/buttons/paypal-checkout-button.php:14
|
1547 |
+
#: includes/templates/buttons/paypal-sp-checkout-button.php:14
|
1548 |
msgctxt "s2member-admin"
|
1549 |
msgid "Configures Basic Checkout Fields"
|
1550 |
msgstr ""
|
1551 |
|
1552 |
+
#: includes/templates/buttons/paypal-ccaps-checkout-button.php:22
|
1553 |
+
#: includes/templates/buttons/paypal-checkout-button.php:22
|
1554 |
+
#: includes/templates/buttons/paypal-sp-checkout-button.php:22
|
1555 |
+
#: includes/templates/shortcodes/paypal-ccaps-checkout-button-shortcode.php:6
|
1556 |
+
#: includes/templates/shortcodes/paypal-checkout-button-shortcode.php:6
|
1557 |
+
#: includes/templates/shortcodes/paypal-sp-checkout-button-shortcode.php:6
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1558 |
msgctxt "s2member-admin"
|
1559 |
msgid "Description and pricing details here."
|
1560 |
msgstr ""
|
1561 |
|
1562 |
+
#: includes/templates/buttons/paypal-ccaps-checkout-button.php:25
|
1563 |
+
#: includes/templates/buttons/paypal-checkout-button.php:24
|
1564 |
+
#: includes/templates/buttons/paypal-sp-checkout-button.php:25
|
1565 |
msgctxt "s2member-admin"
|
1566 |
msgid "Configures s2Member's Unique Invoice ID/Code"
|
1567 |
msgstr ""
|
1568 |
|
1569 |
+
#: includes/templates/buttons/paypal-ccaps-checkout-button.php:27
|
1570 |
+
#: includes/templates/buttons/paypal-sp-checkout-button.php:27
|
1571 |
msgctxt "s2member-admin"
|
1572 |
msgid "Associates Purchase With A User/Member (when/if applicable)"
|
1573 |
msgstr ""
|
1574 |
|
1575 |
+
#: includes/templates/buttons/paypal-ccaps-checkout-button.php:30
|
1576 |
+
#: includes/templates/buttons/paypal-checkout-button.php:29
|
1577 |
+
#: includes/templates/buttons/paypal-sp-checkout-button.php:30
|
1578 |
msgctxt "s2member-admin"
|
1579 |
msgid "Identifies The Customer's IP Address For Tracking"
|
1580 |
msgstr ""
|
1581 |
|
1582 |
+
#: includes/templates/buttons/paypal-ccaps-checkout-button.php:33
|
1583 |
+
#: includes/templates/buttons/paypal-checkout-button.php:45
|
1584 |
+
#: includes/templates/buttons/paypal-sp-checkout-button.php:33
|
1585 |
msgctxt "s2member-admin"
|
1586 |
msgid "Displays The PayPal Image Button"
|
1587 |
msgstr ""
|
1588 |
|
1589 |
+
#: includes/templates/buttons/paypal-checkout-button.php:26
|
1590 |
msgctxt "s2member-admin"
|
1591 |
msgid "Identifies/Updates An Existing User/Member (when/if applicable)"
|
1592 |
msgstr ""
|
1593 |
|
1594 |
+
#: includes/templates/buttons/paypal-checkout-button.php:32
|
1595 |
msgctxt "s2member-admin"
|
1596 |
msgid "Controls Modify Behavior At PayPal Checkout"
|
1597 |
msgstr ""
|
1598 |
|
1599 |
+
#: includes/templates/buttons/paypal-checkout-button.php:34
|
1600 |
msgctxt "s2member-admin"
|
1601 |
msgid "Customizes Prices, Payments & Billing Cycle"
|
1602 |
msgstr ""
|
1603 |
|
1604 |
+
#: includes/templates/errors/ip-restrictions.php:10
|
1605 |
msgctxt "s2member-front"
|
1606 |
msgid "503: Service Temporarily Unavailable"
|
1607 |
msgstr ""
|
1608 |
|
1609 |
+
#: includes/templates/errors/ip-restrictions.php:13
|
1610 |
msgctxt "s2member-front"
|
1611 |
msgid "<strong>503: Service Temporarily Unavailable</strong><br />Too many IP addresses accessing one secure area<em>!</em><br />Please contact Support if you need assistance."
|
1612 |
msgstr ""
|
1613 |
|
1614 |
+
#: includes/templates/options/paypal-currencies.php:6
|
|
|
|
|
|
|
|
|
|
|
1615 |
msgctxt "s2member-admin"
|
1616 |
msgid "Currency"
|
1617 |
msgstr ""
|
1618 |
|
1619 |
+
#: includes/templates/options/paypal-membership-ccap-terms.php:6
|
1620 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:43
|
1621 |
msgctxt "s2member-admin"
|
1622 |
msgid "PayPal (Buy Now)"
|
1623 |
msgstr ""
|
1624 |
|
1625 |
+
#: includes/templates/options/paypal-membership-ccap-terms.php:7
|
|
|
|
|
|
|
1626 |
msgctxt "s2member-admin"
|
1627 |
msgid "One Time (for lifetime access, non-recurring)"
|
1628 |
msgstr ""
|
1629 |
|
1630 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:6
|
1631 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:19
|
1632 |
msgctxt "s2member-admin"
|
1633 |
msgid "PayPal® (Subscriptions)"
|
1634 |
msgstr ""
|
1635 |
|
1636 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:7
|
|
|
|
|
1637 |
msgctxt "s2member-admin"
|
1638 |
msgid "Daily (recurring charge, for ongoing access)"
|
1639 |
msgstr ""
|
1640 |
|
1641 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:8
|
|
|
|
|
|
|
|
|
1642 |
msgctxt "s2member-admin"
|
1643 |
msgid "Weekly (recurring charge, for ongoing access)"
|
1644 |
msgstr ""
|
1645 |
|
1646 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:9
|
|
|
|
|
|
|
|
|
1647 |
msgctxt "s2member-admin"
|
1648 |
msgid "Bi-Weekly (recurring charge, for ongoing access)"
|
1649 |
msgstr ""
|
1650 |
|
1651 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:10
|
|
|
|
|
|
|
|
|
|
|
|
|
1652 |
msgctxt "s2member-admin"
|
1653 |
msgid "Monthly (recurring charge, for ongoing access)"
|
1654 |
msgstr ""
|
1655 |
|
1656 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:11
|
|
|
|
|
|
|
|
|
1657 |
msgctxt "s2member-admin"
|
1658 |
msgid "Bi-Monthly (recurring charge, for ongoing access)"
|
1659 |
msgstr ""
|
1660 |
|
1661 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:12
|
|
|
|
|
|
|
|
|
|
|
1662 |
msgctxt "s2member-admin"
|
1663 |
msgid "Quarterly (recurring charge, for ongoing access)"
|
1664 |
msgstr ""
|
1665 |
|
1666 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:13
|
|
|
|
|
|
|
|
|
1667 |
msgctxt "s2member-admin"
|
1668 |
msgid "Semi-Yearly (recurring charge, for ongoing access)"
|
1669 |
msgstr ""
|
1670 |
|
1671 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:14
|
|
|
|
|
|
|
|
|
1672 |
msgctxt "s2member-admin"
|
1673 |
msgid "Yearly (recurring charge, for ongoing access)"
|
1674 |
msgstr ""
|
1675 |
|
1676 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:20
|
|
|
|
|
|
|
1677 |
msgctxt "s2member-admin"
|
1678 |
msgid "One Time (for 1 day access, non-recurring)"
|
1679 |
msgstr ""
|
1680 |
|
1681 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:21
|
|
|
|
|
|
|
1682 |
msgctxt "s2member-admin"
|
1683 |
msgid "One Time (for 2 day access, non-recurring)"
|
1684 |
msgstr ""
|
1685 |
|
1686 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:22
|
|
|
|
|
|
|
1687 |
msgctxt "s2member-admin"
|
1688 |
msgid "One Time (for 3 day access, non-recurring)"
|
1689 |
msgstr ""
|
1690 |
|
1691 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:23
|
|
|
|
|
|
|
1692 |
msgctxt "s2member-admin"
|
1693 |
msgid "One Time (for 4 day access, non-recurring)"
|
1694 |
msgstr ""
|
1695 |
|
1696 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:24
|
|
|
|
|
|
|
1697 |
msgctxt "s2member-admin"
|
1698 |
msgid "One Time (for 5 day access, non-recurring)"
|
1699 |
msgstr ""
|
1700 |
|
1701 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:25
|
|
|
|
|
|
|
1702 |
msgctxt "s2member-admin"
|
1703 |
msgid "One Time (for 6 day access, non-recurring)"
|
1704 |
msgstr ""
|
1705 |
|
1706 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:27
|
|
|
|
|
|
|
|
|
1707 |
msgctxt "s2member-admin"
|
1708 |
msgid "One Time (for 1 week access, non-recurring)"
|
1709 |
msgstr ""
|
1710 |
|
1711 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:28
|
|
|
|
|
|
|
|
|
1712 |
msgctxt "s2member-admin"
|
1713 |
msgid "One Time (for 2 week access, non-recurring)"
|
1714 |
msgstr ""
|
1715 |
|
1716 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:29
|
|
|
|
|
|
|
|
|
1717 |
msgctxt "s2member-admin"
|
1718 |
msgid "One Time (for 3 week access, non-recurring)"
|
1719 |
msgstr ""
|
1720 |
|
1721 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:31
|
|
|
|
|
|
|
|
|
|
|
1722 |
msgctxt "s2member-admin"
|
1723 |
msgid "One Time (for 1 month access, non-recurring)"
|
1724 |
msgstr ""
|
1725 |
|
1726 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:32
|
|
|
|
|
|
|
|
|
1727 |
msgctxt "s2member-admin"
|
1728 |
msgid "One Time (for 2 month access, non-recurring)"
|
1729 |
msgstr ""
|
1730 |
|
1731 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:33
|
|
|
|
|
|
|
|
|
1732 |
msgctxt "s2member-admin"
|
1733 |
msgid "One Time (for 3 month access, non-recurring)"
|
1734 |
msgstr ""
|
1735 |
|
1736 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:34
|
|
|
|
|
|
|
|
|
1737 |
msgctxt "s2member-admin"
|
1738 |
msgid "One Time (for 4 month access, non-recurring)"
|
1739 |
msgstr ""
|
1740 |
|
1741 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:35
|
|
|
|
|
|
|
|
|
1742 |
msgctxt "s2member-admin"
|
1743 |
msgid "One Time (for 5 month access, non-recurring)"
|
1744 |
msgstr ""
|
1745 |
|
1746 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:36
|
|
|
|
|
|
|
|
|
1747 |
msgctxt "s2member-admin"
|
1748 |
msgid "One Time (for 6 month access, non-recurring)"
|
1749 |
msgstr ""
|
1750 |
|
1751 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:38
|
|
|
|
|
|
|
|
|
1752 |
msgctxt "s2member-admin"
|
1753 |
msgid "One Time (for 1 year access, non-recurring)"
|
1754 |
msgstr ""
|
1755 |
|
1756 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:44
|
|
|
|
|
|
|
|
|
|
|
1757 |
msgctxt "s2member-admin"
|
1758 |
msgid "One Time (for 1 day access, non-recurring, no trial)"
|
1759 |
msgstr ""
|
1760 |
|
1761 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:45
|
|
|
|
|
|
|
|
|
|
|
|
|
1762 |
msgctxt "s2member-admin"
|
1763 |
msgid "One Time (for 2 day access, non-recurring, no trial)"
|
1764 |
msgstr ""
|
1765 |
|
1766 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:46
|
|
|
|
|
|
|
|
|
|
|
|
|
1767 |
msgctxt "s2member-admin"
|
1768 |
msgid "One Time (for 3 day access, non-recurring, no trial)"
|
1769 |
msgstr ""
|
1770 |
|
1771 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:47
|
|
|
|
|
|
|
|
|
|
|
|
|
1772 |
msgctxt "s2member-admin"
|
1773 |
msgid "One Time (for 4 day access, non-recurring, no trial)"
|
1774 |
msgstr ""
|
1775 |
|
1776 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:48
|
|
|
|
|
|
|
|
|
|
|
|
|
1777 |
msgctxt "s2member-admin"
|
1778 |
msgid "One Time (for 5 day access, non-recurring, no trial)"
|
1779 |
msgstr ""
|
1780 |
|
1781 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:49
|
|
|
|
|
|
|
|
|
|
|
|
|
1782 |
msgctxt "s2member-admin"
|
1783 |
msgid "One Time (for 6 day access, non-recurring, no trial)"
|
1784 |
msgstr ""
|
1785 |
|
1786 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:51
|
|
|
|
|
|
|
|
|
|
|
|
|
1787 |
msgctxt "s2member-admin"
|
1788 |
msgid "One Time (for 1 week access, non-recurring, no trial)"
|
1789 |
msgstr ""
|
1790 |
|
1791 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:52
|
|
|
|
|
|
|
|
|
|
|
|
|
1792 |
msgctxt "s2member-admin"
|
1793 |
msgid "One Time (for 2 week access, non-recurring, no trial)"
|
1794 |
msgstr ""
|
1795 |
|
1796 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:53
|
|
|
|
|
|
|
|
|
|
|
|
|
1797 |
msgctxt "s2member-admin"
|
1798 |
msgid "One Time (for 3 week access, non-recurring, no trial)"
|
1799 |
msgstr ""
|
1800 |
|
1801 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:55
|
|
|
|
|
|
|
|
|
|
|
|
|
1802 |
msgctxt "s2member-admin"
|
1803 |
msgid "One Time (for 1 month access, non-recurring, no trial)"
|
1804 |
msgstr ""
|
1805 |
|
1806 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:56
|
|
|
|
|
|
|
|
|
|
|
|
|
1807 |
msgctxt "s2member-admin"
|
1808 |
msgid "One Time (for 2 month access, non-recurring, no trial)"
|
1809 |
msgstr ""
|
1810 |
|
1811 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:57
|
|
|
|
|
|
|
|
|
|
|
|
|
1812 |
msgctxt "s2member-admin"
|
1813 |
msgid "One Time (for 3 month access, non-recurring, no trial)"
|
1814 |
msgstr ""
|
1815 |
|
1816 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:58
|
|
|
|
|
|
|
|
|
|
|
|
|
1817 |
msgctxt "s2member-admin"
|
1818 |
msgid "One Time (for 4 month access, non-recurring, no trial)"
|
1819 |
msgstr ""
|
1820 |
|
1821 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:59
|
|
|
|
|
|
|
|
|
|
|
|
|
1822 |
msgctxt "s2member-admin"
|
1823 |
msgid "One Time (for 5 month access, non-recurring, no trial)"
|
1824 |
msgstr ""
|
1825 |
|
1826 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:60
|
|
|
|
|
|
|
|
|
|
|
|
|
1827 |
msgctxt "s2member-admin"
|
1828 |
msgid "One Time (for 6 month access, non-recurring, no trial)"
|
1829 |
msgstr ""
|
1830 |
|
1831 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:62
|
|
|
|
|
|
|
|
|
|
|
|
|
1832 |
msgctxt "s2member-admin"
|
1833 |
msgid "One Time (for 1 year access, non-recurring, no trial)"
|
1834 |
msgstr ""
|
1835 |
|
1836 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:63
|
|
|
|
|
|
|
|
|
|
|
1837 |
msgctxt "s2member-admin"
|
1838 |
msgid "One Time (for 2 year access, non-recurring, no trial)"
|
1839 |
msgstr ""
|
1840 |
|
1841 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:64
|
|
|
|
|
|
|
|
|
|
|
1842 |
msgctxt "s2member-admin"
|
1843 |
msgid "One Time (for 3 year access, non-recurring, no trial)"
|
1844 |
msgstr ""
|
1845 |
|
1846 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:65
|
|
|
|
|
|
|
|
|
|
|
1847 |
msgctxt "s2member-admin"
|
1848 |
msgid "One Time (for 4 year access, non-recurring, no trial)"
|
1849 |
msgstr ""
|
1850 |
|
1851 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:66
|
|
|
|
|
|
|
|
|
|
|
1852 |
msgctxt "s2member-admin"
|
1853 |
msgid "One Time (for 5 year access, non-recurring, no trial)"
|
1854 |
msgstr ""
|
1855 |
|
1856 |
+
#: includes/templates/options/paypal-membership-regular-terms.php:68
|
|
|
|
|
|
|
|
|
|
|
1857 |
msgctxt "s2member-admin"
|
1858 |
msgid "One Time (for lifetime access, non-recurring, no trial)"
|
1859 |
msgstr ""
|
1860 |
|
1861 |
+
#: includes/templates/options/paypal-membership-trial-terms.php:6
|
|
|
|
|
|
|
|
|
|
|
1862 |
msgctxt "s2member-admin"
|
1863 |
msgid "Days"
|
1864 |
msgstr ""
|
1865 |
|
1866 |
+
#: includes/templates/options/paypal-membership-trial-terms.php:7
|
|
|
|
|
|
|
|
|
1867 |
msgctxt "s2member-admin"
|
1868 |
msgid "Weeks"
|
1869 |
msgstr ""
|
1870 |
|
1871 |
+
#: includes/templates/options/paypal-membership-trial-terms.php:8
|
|
|
|
|
|
|
|
|
1872 |
msgctxt "s2member-admin"
|
1873 |
msgid "Months"
|
1874 |
msgstr ""
|
1875 |
|
1876 |
+
#: includes/templates/options/paypal-membership-trial-terms.php:9
|
|
|
|
|
|
|
|
|
1877 |
msgctxt "s2member-admin"
|
1878 |
msgid "Years"
|
1879 |
msgstr ""
|
1880 |
|
1881 |
+
#: includes/templates/options/paypal-sp-hours.php:6
|
|
|
|
|
|
|
|
|
|
|
|
|
1882 |
msgctxt "s2member-admin"
|
1883 |
msgid "Expires In Hours"
|
1884 |
msgstr ""
|
1885 |
|
1886 |
+
#: includes/templates/options/paypal-sp-hours.php:7
|
|
|
|
|
|
|
|
|
|
|
|
|
1887 |
msgctxt "s2member-admin"
|
1888 |
msgid "Buy Now (Specific Post/Page, link valid for 2 hours)"
|
1889 |
msgstr ""
|
1890 |
|
1891 |
+
#: includes/templates/options/paypal-sp-hours.php:8
|
|
|
|
|
|
|
|
|
|
|
|
|
1892 |
msgctxt "s2member-admin"
|
1893 |
msgid "Buy Now (Specific Post/Page, link valid for 4 hours)"
|
1894 |
msgstr ""
|
1895 |
|
1896 |
+
#: includes/templates/options/paypal-sp-hours.php:9
|
|
|
|
|
|
|
|
|
|
|
|
|
1897 |
msgctxt "s2member-admin"
|
1898 |
msgid "Buy Now (Specific Post/Page, link valid for 6 hours)"
|
1899 |
msgstr ""
|
1900 |
|
1901 |
+
#: includes/templates/options/paypal-sp-hours.php:10
|
|
|
|
|
|
|
|
|
|
|
|
|
1902 |
msgctxt "s2member-admin"
|
1903 |
msgid "Buy Now (Specific Post/Page, link valid for 8 hours)"
|
1904 |
msgstr ""
|
1905 |
|
1906 |
+
#: includes/templates/options/paypal-sp-hours.php:11
|
|
|
|
|
|
|
|
|
|
|
|
|
1907 |
msgctxt "s2member-admin"
|
1908 |
msgid "Buy Now (Specific Post/Page, link valid for 10 hours)"
|
1909 |
msgstr ""
|
1910 |
|
1911 |
+
#: includes/templates/options/paypal-sp-hours.php:12
|
|
|
|
|
|
|
|
|
|
|
|
|
1912 |
msgctxt "s2member-admin"
|
1913 |
msgid "Buy Now (Specific Post/Page, link valid for 12 hours)"
|
1914 |
msgstr ""
|
1915 |
|
1916 |
+
#: includes/templates/options/paypal-sp-hours.php:17
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1917 |
msgctxt "s2member-admin"
|
1918 |
msgid "Expires In Days"
|
1919 |
msgstr ""
|
1920 |
|
1921 |
+
#: includes/templates/options/paypal-sp-hours.php:18
|
|
|
|
|
|
|
|
|
|
|
|
|
1922 |
msgctxt "s2member-admin"
|
1923 |
msgid "Buy Now (Specific Post/Page, link valid for 1 day)"
|
1924 |
msgstr ""
|
1925 |
|
1926 |
+
#: includes/templates/options/paypal-sp-hours.php:19
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1927 |
msgctxt "s2member-admin"
|
1928 |
msgid "Buy Now (Specific Post/Page, link valid for 2 days)"
|
1929 |
msgstr ""
|
1930 |
|
1931 |
+
#: includes/templates/options/paypal-sp-hours.php:20
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1932 |
msgctxt "s2member-admin"
|
1933 |
msgid "Buy Now (Specific Post/Page, link valid for 3 days)"
|
1934 |
msgstr ""
|
1935 |
|
1936 |
+
#: includes/templates/options/paypal-sp-hours.php:21
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1937 |
msgctxt "s2member-admin"
|
1938 |
msgid "Buy Now (Specific Post/Page, link valid for 4 days)"
|
1939 |
msgstr ""
|
1940 |
|
1941 |
+
#: includes/templates/options/paypal-sp-hours.php:22
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1942 |
msgctxt "s2member-admin"
|
1943 |
msgid "Buy Now (Specific Post/Page, link valid for 5 days)"
|
1944 |
msgstr ""
|
1945 |
|
1946 |
+
#: includes/templates/options/paypal-sp-hours.php:23
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1947 |
msgctxt "s2member-admin"
|
1948 |
msgid "Buy Now (Specific Post/Page, link valid for 6 days)"
|
1949 |
msgstr ""
|
1950 |
|
1951 |
+
#: includes/templates/options/paypal-sp-hours.php:28
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1952 |
msgctxt "s2member-admin"
|
1953 |
msgid "Expires In Weeks"
|
1954 |
msgstr ""
|
1955 |
|
1956 |
+
#: includes/templates/options/paypal-sp-hours.php:29
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1957 |
msgctxt "s2member-admin"
|
1958 |
msgid "Buy Now (Specific Post/Page, link valid for 1 week)"
|
1959 |
msgstr ""
|
1960 |
|
1961 |
+
#: includes/templates/options/paypal-sp-hours.php:30
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1962 |
msgctxt "s2member-admin"
|
1963 |
msgid "Buy Now (Specific Post/Page, link valid for 2 weeks)"
|
1964 |
msgstr ""
|
1965 |
|
1966 |
+
#: includes/templates/options/paypal-sp-hours.php:31
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1967 |
msgctxt "s2member-admin"
|
1968 |
msgid "Buy Now (Specific Post/Page, link valid for 3 weeks)"
|
1969 |
msgstr ""
|
1970 |
|
1971 |
+
#: includes/templates/options/paypal-sp-hours.php:36
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1972 |
msgctxt "s2member-admin"
|
1973 |
msgid "Expires In Months"
|
1974 |
msgstr ""
|
1975 |
|
1976 |
+
#: includes/templates/options/paypal-sp-hours.php:37
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1977 |
msgctxt "s2member-admin"
|
1978 |
msgid "Buy Now (Specific Post/Page, link valid for 1 month)"
|
1979 |
msgstr ""
|
1980 |
|
1981 |
+
#: includes/templates/options/paypal-sp-hours.php:38
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1982 |
msgctxt "s2member-admin"
|
1983 |
msgid "Buy Now (Specific Post/Page, link valid for 2 months)"
|
1984 |
msgstr ""
|
1985 |
|
1986 |
+
#: includes/templates/options/paypal-sp-hours.php:39
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1987 |
msgctxt "s2member-admin"
|
1988 |
msgid "Buy Now (Specific Post/Page, link valid for 3 months)"
|
1989 |
msgstr ""
|
1990 |
|
1991 |
+
#: includes/templates/options/paypal-sp-hours.php:40
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1992 |
msgctxt "s2member-admin"
|
1993 |
msgid "Buy Now (Specific Post/Page, link valid for 6 months)"
|
1994 |
msgstr ""
|
1995 |
|
1996 |
+
#: includes/templates/options/paypal-sp-hours.php:45
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1997 |
msgctxt "s2member-admin"
|
1998 |
msgid "Expires In Years"
|
1999 |
msgstr ""
|
2000 |
|
2001 |
+
#: includes/templates/options/paypal-sp-hours.php:46
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2002 |
msgctxt "s2member-admin"
|
2003 |
msgid "Buy Now (Specific Post/Page, link valid for 1 year)"
|
2004 |
msgstr ""
|
2005 |
|
2006 |
+
#: includes/templates/options/paypal-sp-hours.php:47
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007 |
msgctxt "s2member-admin"
|
2008 |
msgid "Buy Now (Specific Post/Page, link valid for 2 years)"
|
2009 |
msgstr ""
|
2010 |
|
2011 |
+
#: includes/templates/options/paypal-sp-hours.php:48
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012 |
msgctxt "s2member-admin"
|
2013 |
msgid "Buy Now (Specific Post/Page, link valid for 3 years)"
|
2014 |
msgstr ""
|
2015 |
|
2016 |
+
#: includes/templates/options/paypal-sp-hours.php:49
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2017 |
msgctxt "s2member-admin"
|
2018 |
msgid "Buy Now (Specific Post/Page, link valid for 4 years)"
|
2019 |
msgstr ""
|
2020 |
|
2021 |
+
#: includes/templates/options/paypal-sp-hours.php:50
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022 |
msgctxt "s2member-admin"
|
2023 |
msgid "Buy Now (Specific Post/Page, link valid for 5 years)"
|
2024 |
msgstr ""
|
2025 |
|
2026 |
+
#: includes/templates/options/paypal-sp-hours.php:51
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2027 |
msgctxt "s2member-admin"
|
2028 |
msgid "Buy Now (Specific Post/Page, link valid for 50 years)"
|
2029 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
readme.txt
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
=== s2Member Framework (Member Roles, Capabilities, Membership, PayPal Members) ===
|
2 |
|
3 |
-
Version:
|
4 |
-
Stable tag:
|
5 |
|
6 |
SSL Compatible: yes
|
7 |
bbPress® Compatible: yes
|
@@ -25,11 +25,12 @@ Tested up to PHP: 5.6
|
|
25 |
|
26 |
Copyright: © 2009 WebSharks, Inc.
|
27 |
License: GNU General Public License v2 or later.
|
28 |
-
Contributors: WebSharks, JasWSInc, anguz, raamdev
|
29 |
|
30 |
Author: s2Member® / WebSharks, Inc.
|
31 |
Author URI: http://www.s2member.com/
|
32 |
Donate link: http://www.s2member.com/donate/
|
|
|
33 |
|
34 |
Text Domain: s2member
|
35 |
Domain Path: /includes/translations
|
@@ -174,12 +175,30 @@ Released under the terms of the [GNU General Public License](http://www.gnu.org/
|
|
174 |
|
175 |
== Upgrade Notice ==
|
176 |
|
177 |
-
=
|
178 |
|
179 |
(Maintenance Release) Upgrade immediately.
|
180 |
|
181 |
== Changelog ==
|
182 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
183 |
= v150102 =
|
184 |
|
185 |
- (s2Member/s2Member Pro) **Custom Field Mapping:** This release of s2Member adds an internal mapping from s2Member's Custom Field values for each user, to the `get_user_option()` function in the WordPress core. This makes it possible to retrieve user custom field values like always via `get_user_field()` or now through the native `get_user_option()` function also. The benefit of this is that s2Member's custom fields are now more compatible with other themes/plugins for WordPress.
|
1 |
=== s2Member Framework (Member Roles, Capabilities, Membership, PayPal Members) ===
|
2 |
|
3 |
+
Version: 150203
|
4 |
+
Stable tag: 150203
|
5 |
|
6 |
SSL Compatible: yes
|
7 |
bbPress® Compatible: yes
|
25 |
|
26 |
Copyright: © 2009 WebSharks, Inc.
|
27 |
License: GNU General Public License v2 or later.
|
28 |
+
Contributors: WebSharks, JasWSInc, anguz, raamdev, bruce-caldwell
|
29 |
|
30 |
Author: s2Member® / WebSharks, Inc.
|
31 |
Author URI: http://www.s2member.com/
|
32 |
Donate link: http://www.s2member.com/donate/
|
33 |
+
Beta link: http://www.s2member.com/beta-testers/
|
34 |
|
35 |
Text Domain: s2member
|
36 |
Domain Path: /includes/translations
|
175 |
|
176 |
== Upgrade Notice ==
|
177 |
|
178 |
+
= v150203 =
|
179 |
|
180 |
(Maintenance Release) Upgrade immediately.
|
181 |
|
182 |
== Changelog ==
|
183 |
|
184 |
+
= v150203 =
|
185 |
+
|
186 |
+
- (s2Member Pro) **Gift/Redemption Codes:** This release adds a powerful new shortcode: `[s2Member-Gift-Codes /]`. This makes it easy to generate and sell access to gift codes (i.e. gift certificates) and/or to a list of redemption codes. For instance, where a single team leader might like to purchase multiple accounts they can distribute to others on a team, or in a group. Video demo here: https://www.youtube.com/watch?v=T3N_vygowbM&feature=youtu.be ~ See also: [this GitHub issue](https://github.com/websharks/s2member/issues/386) for additional technical details.
|
187 |
+
- (s2Member Pro) **User-Specific Coupon Codes:** This release of s2Member makes it possible to configure Pro Form Coupon Codes that are connected (i.e. only valid) when entered by specific Users/Members who are logged into the site. See: `Dashboard ⥱ s2Member ⥱ Pro Coupon Codes`. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/403) for additional technical details.
|
188 |
+
- (s2Member Pro) **Coupon Code Max Uses:** This release of s2Member Pro adds the ability to set a maximum number of times that a Coupon Code can be used. This makes it easy to create Coupon Codes that are designed to be used only one time, for instance; or for X number of times. After a Coupon Code is used X number of times, it will expire automatically. See: `Dashboard ⥱ s2Member ⥱ Pro Coupon Codes`. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/285) for technical details.
|
189 |
+
- (s2Member Pro) **Coupon Code Usage Tracking:** This release of s2Member Pro adds the ability to track the number of times that each of your Coupon Codes have been used. It is also possible to alter the number of uses, and/or set a maximum number of uses. See: `Dashboard ⥱ s2Member ⥱ Pro Coupon Codes`. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/285) for technical details.
|
190 |
+
- (s2Member Pro) **Coupon Code Active/Expires Dates:** This release of s2Member Pro makes it possible to establish both a start and end time for each of your Pro Coupon Codes. In previous versions of s2Member, it was only possible to set an expiration date. You can now create Coupon Codes that will become active at some point in the future automatically. See: `Dashboard ⥱ s2Member ⥱ Pro Coupon Codes`. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/285) for technical details.
|
191 |
+
- (s2Member Pro) **Coupon Code UI Enhancements:** This release of s2Member Pro comes with an updated UI that makes it easier to manage your Pro Coupon Codes. See: `Dashboard ⥱ s2Member ⥱ Pro Coupon Codes`. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/285) for technical details.
|
192 |
+
- (s2Member Pro) **Store Coupon Codes for Each User:** s2Member Pro now stores a list of all coupon codes that a customer has used on your site. See: `Dashboard ⥱ Users ⥱ Choose User [Edit]`. Scrolling down to the set of s2-related fields will reveal a new list of coupon codes. This list will be filled for new customers only; i.e. s2Member does not have this data for past purchases; only for new customers that you acquire after updating to the latest release. See also [this GitHub issue](https://github.com/websharks/s2member/issues/462) if you'd additional details.
|
193 |
+
- (s2Member/s2Member Pro) **EOT Custom Value:** In this release of s2Member, the `get_user_option('s2member_custom')` value is preserved after an EOT has taken place, making it possible for site owners to continue to read this value (along with any custom pipe-delimited values they have injected there), even after an EOT has taken place. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/449).
|
194 |
+
- (s2Member/s2Member Pro) **JW Player Broken Links:** This release corrects some broken links referenced by the inline documentation for s2Member in the WordPress Dashboard. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/448) if you'd like further details.
|
195 |
+
- (s2Member/s2Member Pro) **Security:** This release of s2Member checks for the existence of the WordPress PHP Constant: `WPINC` instead of looking for the less reliable `$_SERVER['SCRIPT_FILENAME']`. Some site owners reported this was causing trouble in a localhost environment during testing, or when running s2Member on some hosts that are missing the `SCRIPT_FILENAME` environment variable; e.g. some Windows servers. Fixed in this release. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/454) if you'd like additional details.
|
196 |
+
- (s2Member Pro) **Advanced Import/Export Compat:** This release of s2Member Pro includes compatibility and a bug fix when running on WordPress v4.1+. Three PHP notices during importation, along with some quirky behavior associated with the `role` CSV column have been corrected. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/455) for technical details.
|
197 |
+
- (s2Member Pro) **`[s2Member-List /]` Bug Fix:** This release resolves an issue with pagination in the `[s2Member-List /]` shortcode after recent improvements to the search functionality. See [this GitHub issue](https://github.com/websharks/s2member/issues/155#issuecomment-69403120) if you'd like additional details.
|
198 |
+
- (s2Member Pro) **`[s2Member-List /]` Enhancement:** This release improves search functionality in the `[s2Member-List /]` shortcode, making it so that all searches default to `*[query]*`; i.e. are automatically wrapped by wildcards. If a user enters a wildcard explicitly (or a double quote), this default behavior is overridden and the search query is taken as given in such a scenario. This makes the search functionality easier for end-users to work with, since it no longer requires an exact match. Default behavior is now a fuzzy match. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/394) if you'd like further details.
|
199 |
+
- (s2Member/s2Member Pro) **AWS v4 Authentication:** This release of s2Member adds AWS v4 Authentication support for Amazon Web Service Regions that only accept the AWS v4 authentication scheme. If you had trouble in the recent past when attempting to integrate s2Member with S3 Buckets (or with CloudFront) in regions outside the USA, this release should resolve those issues for you. See also: [this GitHub issue](https://github.com/websharks/s2member/issues/440) if you'd like additional technical details.
|
200 |
+
- (s2Member Pro) **Bug Fix:** Pro Form Checkout Options not working in all cases whenever they are used together with Free Registration Forms. Resolved in this release.
|
201 |
+
|
202 |
= v150102 =
|
203 |
|
204 |
- (s2Member/s2Member Pro) **Custom Field Mapping:** This release of s2Member adds an internal mapping from s2Member's Custom Field values for each user, to the `get_user_option()` function in the WordPress core. This makes it possible to retrieve user custom field values like always via `get_user_field()` or now through the native `get_user_option()` function also. The benefit of this is that s2Member's custom fields are now more compatible with other themes/plugins for WordPress.
|
s2member-o.php
CHANGED
@@ -14,6 +14,8 @@
|
|
14 |
* @package s2Member
|
15 |
* @since 110912
|
16 |
*/
|
|
|
|
|
17 |
include_once dirname(__FILE__).'/includes/classes/utils-s2o.inc.php';
|
18 |
|
19 |
if(($ws_plugin__s2member_o['wp_dir'] = c_ws_plugin__s2member_utils_s2o::wp_dir(dirname(__FILE__), dirname($_SERVER['SCRIPT_FILENAME']))))
|
@@ -29,6 +31,7 @@ if(($ws_plugin__s2member_o['wp_dir'] = c_ws_plugin__s2member_utils_s2o::wp_dir(d
|
|
29 |
* @var bool
|
30 |
*/
|
31 |
define ('SHORTINIT', TRUE);
|
|
|
32 |
/**
|
33 |
* Flag indicating only s2Member is being loaded.
|
34 |
*
|
@@ -38,11 +41,12 @@ if(($ws_plugin__s2member_o['wp_dir'] = c_ws_plugin__s2member_utils_s2o::wp_dir(d
|
|
38 |
* @var bool
|
39 |
*/
|
40 |
define ('WS_PLUGIN__S2MEMBER_ONLY', TRUE);
|
|
|
41 |
/*
|
42 |
Load WordPress.
|
43 |
*/
|
44 |
require($ws_plugin__s2member_o['wp_dir'].'/wp-load.php');
|
45 |
-
eval ('?>'.$ws_plugin__s2member_o['wp_settings_as']);
|
46 |
}
|
47 |
else // Else fallback on full WordPress.
|
48 |
require($ws_plugin__s2member_o['wp_dir'].'/wp-load.php');
|
14 |
* @package s2Member
|
15 |
* @since 110912
|
16 |
*/
|
17 |
+
define ('_WS_PLUGIN__S2MEMBER_ONLY', TRUE);
|
18 |
+
|
19 |
include_once dirname(__FILE__).'/includes/classes/utils-s2o.inc.php';
|
20 |
|
21 |
if(($ws_plugin__s2member_o['wp_dir'] = c_ws_plugin__s2member_utils_s2o::wp_dir(dirname(__FILE__), dirname($_SERVER['SCRIPT_FILENAME']))))
|
31 |
* @var bool
|
32 |
*/
|
33 |
define ('SHORTINIT', TRUE);
|
34 |
+
|
35 |
/**
|
36 |
* Flag indicating only s2Member is being loaded.
|
37 |
*
|
41 |
* @var bool
|
42 |
*/
|
43 |
define ('WS_PLUGIN__S2MEMBER_ONLY', TRUE);
|
44 |
+
|
45 |
/*
|
46 |
Load WordPress.
|
47 |
*/
|
48 |
require($ws_plugin__s2member_o['wp_dir'].'/wp-load.php');
|
49 |
+
eval ('?>'.$ws_plugin__s2member_o['wp_settings_as']);
|
50 |
}
|
51 |
else // Else fallback on full WordPress.
|
52 |
require($ws_plugin__s2member_o['wp_dir'].'/wp-load.php');
|
s2member.php
CHANGED
@@ -19,8 +19,8 @@
|
|
19 |
*/
|
20 |
/* -- This section for WordPress parsing. ------------------------------------------------------------------------------
|
21 |
|
22 |
-
Version:
|
23 |
-
Stable tag:
|
24 |
|
25 |
SSL Compatible: yes
|
26 |
bbPress Compatible: yes
|
@@ -40,7 +40,7 @@ Requires at least: 3.3
|
|
40 |
|
41 |
Copyright: © 2009 WebSharks, Inc.
|
42 |
License: GNU General Public License
|
43 |
-
Contributors: WebSharks
|
44 |
|
45 |
Author: s2Member / WebSharks, Inc.
|
46 |
Author URI: http://www.s2member.com/
|
@@ -64,7 +64,7 @@ Description: s2Member, a powerful (free) membership plugin for WordPress. Protec
|
|
64 |
Tags: s2, s2member, s2 member, membership, users, user, members, member, subscribers, subscriber, members only, roles, capabilities, capability, register, signup, paypal, paypal pro, pay pal, authorize, authorize.net, google wallet, clickbank, click bank, buddypress, buddy press, bbpress, bb press, shopping cart, cart, checkout, ecommerce
|
65 |
|
66 |
-- end section for WordPress parsing. ------------------------------------------------------------------------------- */
|
67 |
-
if(
|
68 |
exit('Do not access this file directly.');
|
69 |
/**
|
70 |
* The installed version of s2Member.
|
@@ -75,7 +75,7 @@ if(realpath(__FILE__) === realpath($_SERVER['SCRIPT_FILENAME']))
|
|
75 |
* @var string
|
76 |
*/
|
77 |
if(!defined('WS_PLUGIN__S2MEMBER_VERSION'))
|
78 |
-
define('WS_PLUGIN__S2MEMBER_VERSION', '
|
79 |
/**
|
80 |
* Minimum PHP version required to run s2Member.
|
81 |
*
|
@@ -105,7 +105,7 @@ if(!defined('WS_PLUGIN__S2MEMBER_MIN_WP_VERSION'))
|
|
105 |
* @var string
|
106 |
*/
|
107 |
if(!defined('WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION'))
|
108 |
-
define('WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION', '
|
109 |
/*
|
110 |
Several compatibility checks.
|
111 |
If all pass, load the s2Member plugin.
|
@@ -132,15 +132,15 @@ if(version_compare(PHP_VERSION, WS_PLUGIN__S2MEMBER_MIN_PHP_VERSION, '>=') && ve
|
|
132 |
/*
|
133 |
Load a possible Pro module, if/when available.
|
134 |
*/
|
135 |
-
if(apply_filters('ws_plugin__s2member_load_pro', TRUE)
|
136 |
{
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
}
|
145 |
/*
|
146 |
Configure options and their defaults.
|
19 |
*/
|
20 |
/* -- This section for WordPress parsing. ------------------------------------------------------------------------------
|
21 |
|
22 |
+
Version: 150203
|
23 |
+
Stable tag: 150203
|
24 |
|
25 |
SSL Compatible: yes
|
26 |
bbPress Compatible: yes
|
40 |
|
41 |
Copyright: © 2009 WebSharks, Inc.
|
42 |
License: GNU General Public License
|
43 |
+
Contributors: WebSharks, JasWSInc, anguz, raamdev, bruce-caldwell
|
44 |
|
45 |
Author: s2Member / WebSharks, Inc.
|
46 |
Author URI: http://www.s2member.com/
|
64 |
Tags: s2, s2member, s2 member, membership, users, user, members, member, subscribers, subscriber, members only, roles, capabilities, capability, register, signup, paypal, paypal pro, pay pal, authorize, authorize.net, google wallet, clickbank, click bank, buddypress, buddy press, bbpress, bb press, shopping cart, cart, checkout, ecommerce
|
65 |
|
66 |
-- end section for WordPress parsing. ------------------------------------------------------------------------------- */
|
67 |
+
if(!defined('WPINC')) // MUST have WordPress.
|
68 |
exit('Do not access this file directly.');
|
69 |
/**
|
70 |
* The installed version of s2Member.
|
75 |
* @var string
|
76 |
*/
|
77 |
if(!defined('WS_PLUGIN__S2MEMBER_VERSION'))
|
78 |
+
define('WS_PLUGIN__S2MEMBER_VERSION', '150203' /* !#distro-version#! */);
|
79 |
/**
|
80 |
* Minimum PHP version required to run s2Member.
|
81 |
*
|
105 |
* @var string
|
106 |
*/
|
107 |
if(!defined('WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION'))
|
108 |
+
define('WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION', '150203' /* !#distro-version#! */);
|
109 |
/*
|
110 |
Several compatibility checks.
|
111 |
If all pass, load the s2Member plugin.
|
132 |
/*
|
133 |
Load a possible Pro module, if/when available.
|
134 |
*/
|
135 |
+
if(apply_filters('ws_plugin__s2member_load_pro', TRUE))
|
136 |
{
|
137 |
+
if(is_file($_s2member_pro = dirname(__FILE__).'-pro/pro-module.php'))
|
138 |
+
include_once $_s2member_pro;
|
139 |
+
|
140 |
+
else if(is_file($_s2member_pro = WP_PLUGIN_DIR.'/'.basename(dirname(__FILE__)).'-pro/pro-module.php'))
|
141 |
+
include_once $_s2member_pro;
|
142 |
+
|
143 |
+
unset($_s2member_pro); // Housekeeping.
|
144 |
}
|
145 |
/*
|
146 |
Configure options and their defaults.
|