Version Description
- 2022-05-05 =
- FEATURE: Added refunds buttons for Stripe and Paypal Express orders. #1948 (@JarrydLong)
- FEATURE: Released Beta version of Stripe Checkout. Add
define('PMPRO_STRIPE_CHECKOUT_BETA_ENABLED', true);
to your wp-config.php to enable this gateway during the beta. #1923 (@dlparker1005) - ENHANCEMENT: Introduced a new set of functions that handle cron-related tasks including:
pmpro_get_crons()
to get the list of PMPro registered crons. #1999 (@sc0ttkclark) - ENHANCEMENT: New filter
pmpro_registered_crons
which you can register new crons to be handled by PMPro. They show up in the PMPro Site Health info and are automatically scheduled when they need to be. #1999 (@sc0ttkclark) - ENHANCEMENT: Added an opt-in stats collection so we can get better insight on how people use Paid Memberships Pro. (@sc0ttkclark, @ideadude)
- ENHANCEMENT: Added Formal German translation files. #1926
- ENHANCEMENT: Tracking library conflicts in Site Health, e.g. when other plugins are loading gateway libraries at the same time as PMPro. (@dparker1005)
- ENHANCEMENT: UI/UX improvements to the Orders admin area for list and single edit view. #2017 (@kimcoleman)
- ENHANCEMENT: Improved the UI for email template variables reference on the Settings > Email Templates admin page. #2018 (@kimcoleman)
- ENHANCEMENT: Various other UI improvements to the admin area. #2019 (@kimcoleman)
- ENHANCEMENT: Improved block names, descriptions, keywords, and organization for discover and usability. #2011 (@kimcoleman)
- ENHANCEMENT: Added "show_noaccess" as a setting on the Membership Required block for swapping in the appropriate content message. #2011 (@kimcoleman)
- ENHANCEMENT: Added filter 'pmpro_braintree_transaction_sale_array' to allow adding or adjusting of the sale transaction method. #2006 (@andrewlimaza)
- ENHANCEMENT: Moved the TOS input inside the label to support multiline i18n. #2002 (#mircobabini)
- ENHANCEMENT: Added new action
pmpro_checkout_after_tos
to output content after the TOS. #2003 (@mircobabini) - ENHANCEMENT: Added filters to change gateway ipn/webhook logfile. #1996 (@mircobabini)
- ENHANCEMENT: Added filter to perform actions during PPHttpPost() method of the PayPal gateways. #1992 (@mircobabini)
- ENHANCEMENT: Added untranslated gateway identifiers to Site Health info. #1989 (@JarrydLong)
- BUG FIX/ENHANCEMENT: Fixed escaping and localization for many strings across the codebase. #1976 (@mircobabini)
- BUG FIX/ENHANCEMENT: Resolve admin area conflicts with other plugins using similar class names. #1991 (@sc0ttkclark)
- BUG FIX: Crons are now automatically rescheduled if they disappear form the cron schedule. #1999 (@sc0ttkclark, @mircobabini)
- BUG FIX: Resolved problems with PHP float precision and prevent passing along faulty floats to the gateway APIs. #1929 (@sc0ttkclark)
- BUG FIX: Fixed issue where TOS setting was not saving when using the PayFast gateway. #1990 (@andrewlimaza)
- BUG FIX: Fixed issue where the is_renewal() method didn't work during the pmpro_added_order hook. (@andrewlimaza)
Download this release
Release Info
Developer | strangerstudios |
Plugin | Paid Memberships Pro |
Version | 2.8 |
Comparing to | |
See all releases |
Code changes from version 2.7.5 to 2.8
- CHANGELOG.txt +26 -0
- adminpages/addons.php +11 -11
- adminpages/admin_footer.php +19 -0
- adminpages/admin_header.php +17 -17
- adminpages/advancedsettings.php +102 -70
- adminpages/dashboard.php +34 -34
- adminpages/discountcodes.php +77 -66
- adminpages/emailsettings.php +14 -14
- adminpages/emailtemplates.php +71 -84
- adminpages/functions.php +4 -4
- adminpages/license.php +24 -22
- adminpages/membershiplevels.php +60 -62
- adminpages/memberslist-csv.php +6 -0
- adminpages/memberslist.php +1 -2
- adminpages/orders.php +442 -263
- adminpages/pagesettings.php +50 -51
- adminpages/paymentsettings.php +47 -30
- adminpages/reports.php +5 -2
- adminpages/reports/login.php +118 -115
- adminpages/reports/memberships.php +58 -59
- adminpages/reports/sales.php +14 -13
- adminpages/templates/orders-email.php +78 -75
- adminpages/templates/orders-print.php +106 -103
- adminpages/updates.php +2 -2
- blocks/account-invoices-section/block.js +15 -6
- blocks/account-links-section/block.js +15 -6
- blocks/account-membership-section/block.js +13 -6
- blocks/account-page/block.js +20 -6
- blocks/account-profile-section/block.js +12 -6
- blocks/billing-page/block.js +12 -6
- blocks/blocks.js +1 -0
- blocks/blocks.php +4 -0
- blocks/cancel-page/block.js +12 -6
- blocks/checkout-button/block.js +8 -5
- blocks/checkout-page/block.js +11 -4
- blocks/confirmation-page/block.js +14 -6
- blocks/invoice-page/block.js +13 -6
- blocks/levels-page/block.js +11 -5
- blocks/login/block.js +35 -34
- blocks/member-profile-edit/block.js +33 -28
- blocks/membership/block.js +40 -11
- blocks/membership/block.php +2 -0
- classes/class-pmpro-admin-activity-email.php +4 -4
- classes/class-pmpro-members-list-table.php +22 -16
- classes/class-pmpro-site-health.php +43 -17
- classes/class-pmpro-wisdom-integration.php +490 -0
- classes/class-pmpro-wisdom-tracker.php +1107 -0
- classes/class.memberorder.php +44 -4
- classes/class.pmproemail.php +133 -0
- classes/gateways/class.pmprogateway_authorizenet.php +11 -11
- classes/gateways/class.pmprogateway_braintree.php +48 -38
- classes/gateways/class.pmprogateway_check.php +3 -3
- classes/gateways/class.pmprogateway_cybersource.php +16 -16
- classes/gateways/class.pmprogateway_payflowpro.php +7 -7
- classes/gateways/class.pmprogateway_paypal.php +42 -22
- classes/gateways/class.pmprogateway_paypalexpress.php +111 -31
- classes/gateways/class.pmprogateway_paypalstandard.php +25 -15
- classes/gateways/class.pmprogateway_stripe.php +718 -175
- classes/gateways/class.pmprogateway_twocheckout.php +26 -20
- css/admin-rtl.css +1 -5
- css/admin.css +188 -92
- css/blocks.editor.css +29 -13
- includes/compatibility.php +46 -1
- includes/crons.php +124 -0
- includes/email-templates.php +30 -0
- includes/functions.php +284 -95
- includes/init.php +1 -1
- includes/lib/Twocheckout/Twocheckout/TwocheckoutCharge.php +5 -5
- includes/license.php +29 -28
- includes/login.php +1 -1
- includes/menus.php +3 -3
- includes/metaboxes.php +2 -2
- includes/notifications.php +3 -3
- includes/privacy.php +1 -0
- includes/profile.php +65 -25
- includes/rest-api.php +62 -0
- includes/updates.php +1 -1
- includes/updates/upgrade_1.php +3 -0
- includes/updates/upgrade_1_8_7.php +5 -5
- includes/updates/upgrade_1_9_4.php +3 -3
- includes/updates/upgrade_2_6.php +1 -1
- includes/upgradecheck.php +11 -2
- js/blocks.build.js +1 -1883
- js/pmpro-admin.js +36 -36
- js/pmpro-confirmation.js +25 -0
- languages/paid-memberships-pro-ca.mo +0 -0
- languages/paid-memberships-pro-ca.po +2147 -2
- languages/paid-memberships-pro-ca_AD.mo +0 -0
- languages/paid-memberships-pro-ca_AD.po +231 -2
CHANGELOG.txt
CHANGED
@@ -1,4 +1,30 @@
|
|
1 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
= 2.7.5 - 2022-03-01 =
|
3 |
* ENHANCEMENT: Now sending "name" separate from the "description" when creating customers for Stripe checkouts. (@ideadude)
|
4 |
* ENHANCEMENT: You can now search the members list on specific user table columns or user meta fields by using a colon in your search term. These queries are faster than the default queries. The format is meta_key:meta_value (no backticks). You can also use login, nicename, email, url, or display_name as the meta_key and the users table will be searched against the related column. (@ideadude)
|
1 |
== Changelog ==
|
2 |
+
= 2.8 - 2022-05-05 =
|
3 |
+
* FEATURE: Added refunds buttons for Stripe and Paypal Express orders. #1948 (@JarrydLong)
|
4 |
+
* FEATURE: Released Beta version of Stripe Checkout. Add `define('PMPRO_STRIPE_CHECKOUT_BETA_ENABLED', true);` to your wp-config.php to enable this gateway during the beta. #1923 (@dlparker1005)
|
5 |
+
* ENHANCEMENT: Introduced a new set of functions that handle cron-related tasks including: `pmpro_get_crons()` to get the list of PMPro registered crons. #1999 (@sc0ttkclark)
|
6 |
+
* ENHANCEMENT: New filter `pmpro_registered_crons` which you can register new crons to be handled by PMPro. They show up in the PMPro Site Health info and are automatically scheduled when they need to be. #1999 (@sc0ttkclark)
|
7 |
+
* ENHANCEMENT: Added an opt-in stats collection so we can get better insight on how people use Paid Memberships Pro. (@sc0ttkclark, @ideadude)
|
8 |
+
* ENHANCEMENT: Added Formal German translation files. #1926
|
9 |
+
* ENHANCEMENT: Tracking library conflicts in Site Health, e.g. when other plugins are loading gateway libraries at the same time as PMPro. (@dparker1005)
|
10 |
+
* ENHANCEMENT: UI/UX improvements to the Orders admin area for list and single edit view. #2017 (@kimcoleman)
|
11 |
+
* ENHANCEMENT: Improved the UI for email template variables reference on the Settings > Email Templates admin page. #2018 (@kimcoleman)
|
12 |
+
* ENHANCEMENT: Various other UI improvements to the admin area. #2019 (@kimcoleman)
|
13 |
+
* ENHANCEMENT: Improved block names, descriptions, keywords, and organization for discover and usability. #2011 (@kimcoleman)
|
14 |
+
* ENHANCEMENT: Added "show_noaccess" as a setting on the Membership Required block for swapping in the appropriate content message. #2011 (@kimcoleman)
|
15 |
+
* ENHANCEMENT: Added filter 'pmpro_braintree_transaction_sale_array' to allow adding or adjusting of the sale transaction method. #2006 (@andrewlimaza)
|
16 |
+
* ENHANCEMENT: Moved the TOS input inside the label to support multiline i18n. #2002 (#mircobabini)
|
17 |
+
* ENHANCEMENT: Added new action `pmpro_checkout_after_tos` to output content after the TOS. #2003 (@mircobabini)
|
18 |
+
* ENHANCEMENT: Added filters to change gateway ipn/webhook logfile. #1996 (@mircobabini)
|
19 |
+
* ENHANCEMENT: Added filter to perform actions during PPHttpPost() method of the PayPal gateways. #1992 (@mircobabini)
|
20 |
+
* ENHANCEMENT: Added untranslated gateway identifiers to Site Health info. #1989 (@JarrydLong)
|
21 |
+
* BUG FIX/ENHANCEMENT: Fixed escaping and localization for many strings across the codebase. #1976 (@mircobabini)
|
22 |
+
* BUG FIX/ENHANCEMENT: Resolve admin area conflicts with other plugins using similar class names. #1991 (@sc0ttkclark)
|
23 |
+
* BUG FIX: Crons are now automatically rescheduled if they disappear form the cron schedule. #1999 (@sc0ttkclark, @mircobabini)
|
24 |
+
* BUG FIX: Resolved problems with PHP float precision and prevent passing along faulty floats to the gateway APIs. #1929 (@sc0ttkclark)
|
25 |
+
* BUG FIX: Fixed issue where TOS setting was not saving when using the PayFast gateway. #1990 (@andrewlimaza)
|
26 |
+
* BUG FIX: Fixed issue where the is_renewal() method didn't work during the pmpro_added_order hook. (@andrewlimaza)
|
27 |
+
|
28 |
= 2.7.5 - 2022-03-01 =
|
29 |
* ENHANCEMENT: Now sending "name" separate from the "description" when creating customers for Stripe checkouts. (@ideadude)
|
30 |
* ENHANCEMENT: You can now search the members list on specific user table columns or user meta fields by using a colon in your search term. These queries are faster than the default queries. The format is meta_key:meta_value (no backticks). You can also use login, nicename, email, url, or display_name as the meta_key and the users table will be searched against the related column. (@ideadude)
|
adminpages/addons.php
CHANGED
@@ -87,15 +87,15 @@
|
|
87 |
|
88 |
<p>
|
89 |
<?php printf(__('Last checked on %s at %s.', 'paid-memberships-pro' ), date_i18n(get_option('date_format'), $addons_timestamp), date_i18n(get_option('time_format'), $addons_timestamp));?>
|
90 |
-
<a class="button" href="<?php echo admin_url("admin.php?page=pmpro-addons&force-check=1&plugin_status=" . $status);?>"><?php
|
91 |
</p>
|
92 |
|
93 |
<ul class="subsubsub">
|
94 |
-
<li class="all"><a href="admin.php?page=pmpro-addons&plugin_status=all" <?php if(empty($status) || $status == "all") { ?>class="current"<?php } ?>><?php
|
95 |
-
<li class="active"><a href="admin.php?page=pmpro-addons&plugin_status=active" <?php if($status == "active") { ?>class="current"<?php } ?>><?php
|
96 |
-
<li class="inactive"><a href="admin.php?page=pmpro-addons&plugin_status=inactive" <?php if($status == "inactive") { ?>class="current"<?php } ?>><?php
|
97 |
-
<li class="update"><a href="admin.php?page=pmpro-addons&plugin_status=update" <?php if($status == "update") { ?>class="current"<?php } ?>><?php
|
98 |
-
<li class="uninstalled"><a href="admin.php?page=pmpro-addons&plugin_status=uninstalled" <?php if($status == "uninstalled") { ?>class="current"<?php } ?>><?php
|
99 |
</ul>
|
100 |
|
101 |
<table class="wp-list-table widefat plugins">
|
@@ -103,12 +103,12 @@
|
|
103 |
<tr>
|
104 |
<th scope="col" id="cb" class="manage-column column-cb check-column" style="">
|
105 |
<?php /*
|
106 |
-
<label class="screen-reader-text" for="cb-select-all-1"><?php
|
107 |
*/ ?>
|
108 |
</th>
|
109 |
-
<th scope="col" id="name" class="manage-column column-name" style=""><?php
|
110 |
-
<th scope="col" id="type" class="manage-column column-type" style=""><?php
|
111 |
-
<th scope="col" id="description" class="manage-column column-description" style=""><?php
|
112 |
</tr>
|
113 |
</thead>
|
114 |
<tbody id="the-list">
|
@@ -132,7 +132,7 @@
|
|
132 |
?>
|
133 |
<tr>
|
134 |
<td></td>
|
135 |
-
<td colspan="3"><p><?php
|
136 |
</tr>
|
137 |
<?php
|
138 |
}
|
87 |
|
88 |
<p>
|
89 |
<?php printf(__('Last checked on %s at %s.', 'paid-memberships-pro' ), date_i18n(get_option('date_format'), $addons_timestamp), date_i18n(get_option('time_format'), $addons_timestamp));?>
|
90 |
+
<a class="button" href="<?php echo esc_url( admin_url("admin.php?page=pmpro-addons&force-check=1&plugin_status=" . $status) );?>"><?php esc_html_e('Check Again', 'paid-memberships-pro' ); ?></a>
|
91 |
</p>
|
92 |
|
93 |
<ul class="subsubsub">
|
94 |
+
<li class="all"><a href="admin.php?page=pmpro-addons&plugin_status=all" <?php if(empty($status) || $status == "all") { ?>class="current"<?php } ?>><?php esc_html_e('All', 'paid-memberships-pro' ); ?> <span class="count">(<?php echo count($all_visible_addons);?>)</span></a> |</li>
|
95 |
+
<li class="active"><a href="admin.php?page=pmpro-addons&plugin_status=active" <?php if($status == "active") { ?>class="current"<?php } ?>><?php esc_html_e('Active', 'paid-memberships-pro' ); ?> <span class="count">(<?php echo count($active_addons);?>)</span></a> |</li>
|
96 |
+
<li class="inactive"><a href="admin.php?page=pmpro-addons&plugin_status=inactive" <?php if($status == "inactive") { ?>class="current"<?php } ?>><?php esc_html_e('Inactive', 'paid-memberships-pro' ); ?> <span class="count">(<?php echo count($inactive_addons);?>)</span></a> |</li>
|
97 |
+
<li class="update"><a href="admin.php?page=pmpro-addons&plugin_status=update" <?php if($status == "update") { ?>class="current"<?php } ?>><?php esc_html_e('Update Available', 'paid-memberships-pro' ); ?> <span class="count">(<?php echo count($update_available_addons);?>)</span></a> |</li>
|
98 |
+
<li class="uninstalled"><a href="admin.php?page=pmpro-addons&plugin_status=uninstalled" <?php if($status == "uninstalled") { ?>class="current"<?php } ?>><?php esc_html_e('Not Installed', 'paid-memberships-pro' ); ?> <span class="count">(<?php echo count($not_installed_addons);?>)</span></a></li>
|
99 |
</ul>
|
100 |
|
101 |
<table class="wp-list-table widefat plugins">
|
103 |
<tr>
|
104 |
<th scope="col" id="cb" class="manage-column column-cb check-column" style="">
|
105 |
<?php /*
|
106 |
+
<label class="screen-reader-text" for="cb-select-all-1"><?php esc_html_e('Select All'); ?></label><input id="cb-select-all-1" type="checkbox">
|
107 |
*/ ?>
|
108 |
</th>
|
109 |
+
<th scope="col" id="name" class="manage-column column-name" style=""><?php esc_html_e('Add On Name', 'paid-memberships-pro' ); ?></th>
|
110 |
+
<th scope="col" id="type" class="manage-column column-type" style=""><?php esc_html_e('Type', 'paid-memberships-pro' ); ?></th>
|
111 |
+
<th scope="col" id="description" class="manage-column column-description" style=""><?php esc_html_e('Description', 'paid-memberships-pro' ); ?></th>
|
112 |
</tr>
|
113 |
</thead>
|
114 |
<tbody id="the-list">
|
132 |
?>
|
133 |
<tr>
|
134 |
<td></td>
|
135 |
+
<td colspan="3"><p><?php esc_html_e('No Add Ons found.', 'paid-memberships-pro' ); ?></p></td>
|
136 |
</tr>
|
137 |
<?php
|
138 |
}
|
adminpages/admin_footer.php
CHANGED
@@ -1,2 +1,21 @@
|
|
1 |
<div class="clear"></div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
</div>
|
1 |
<div class="clear"></div>
|
2 |
+
<?php
|
3 |
+
echo sprintf(
|
4 |
+
wp_kses(
|
5 |
+
/* translators: $1$s - Paid Memberships Pro plugin name; $2$s - WP.org review link. */
|
6 |
+
__( '<p>Please <a href="%1$s" target="_blank" rel="noopener noreferrer">rate us ★★★★★ on WordPress.org</a> to help others find %2$s. Thank you from the %3$s team!</p>', 'paid-memberships-pro' ),
|
7 |
+
[
|
8 |
+
'a' => [
|
9 |
+
'href' => [],
|
10 |
+
'target' => [],
|
11 |
+
'rel' => [],
|
12 |
+
],
|
13 |
+
'p' => [],
|
14 |
+
]
|
15 |
+
),
|
16 |
+
'https://wordpress.org/support/plugin/paid-memberships-pro/reviews/?filter=5#new-post',
|
17 |
+
'Paid Memberships Pro',
|
18 |
+
'PMPro',
|
19 |
+
);
|
20 |
+
?>
|
21 |
</div>
|
adminpages/admin_header.php
CHANGED
@@ -167,11 +167,11 @@
|
|
167 |
|
168 |
<div class="wrap pmpro_admin">
|
169 |
<div class="pmpro_banner">
|
170 |
-
<a class="pmpro_logo" title="Paid Memberships Pro - Membership Plugin for WordPress" target="_blank"
|
171 |
<div class="pmpro_meta">
|
172 |
<span class="pmpro_version">v<?php echo PMPRO_VERSION?></span>
|
173 |
-
<a target="_blank"
|
174 |
-
<a target="_blank" href="https://www.paidmembershipspro.com/pricing/?utm_source=plugin&utm_medium=pmpro-admin-header&utm_campaign=pricing&utm_content=get-support"><?php
|
175 |
|
176 |
<?php if ( pmpro_license_isValid( null, pmpro_license_get_premium_types() ) ) { ?>
|
177 |
<?php printf(__( '<a class="pmpro_license_tag pmpro_license_tag-valid" href="%s">Valid License</a>', 'paid-memberships-pro' ), admin_url( 'admin.php?page=pmpro-license' ) ); ?>
|
@@ -219,62 +219,62 @@
|
|
219 |
if( in_array( $view, $settings_tabs ) ) { ?>
|
220 |
<nav class="nav-tab-wrapper">
|
221 |
<?php if(current_user_can('pmpro_dashboard')) { ?>
|
222 |
-
<a href="<?php echo admin_url('admin.php?page=pmpro-dashboard');?>" class="nav-tab<?php if($view == 'pmpro-dashboard') { ?> nav-tab-active<?php } ?>"><?php
|
223 |
<?php } ?>
|
224 |
|
225 |
<?php if(current_user_can('pmpro_memberslist')) { ?>
|
226 |
-
<a href="<?php echo admin_url('admin.php?page=pmpro-memberslist');?>" class="nav-tab<?php if($view == 'pmpro-memberslist') { ?> nav-tab-active<?php } ?>"><?php
|
227 |
<?php } ?>
|
228 |
|
229 |
<?php if(current_user_can('pmpro_orders')) { ?>
|
230 |
-
<a href="<?php echo admin_url('admin.php?page=pmpro-orders');?>" class="nav-tab<?php if($view == 'pmpro-orders') { ?> nav-tab-active<?php } ?>"><?php
|
231 |
<?php } ?>
|
232 |
|
233 |
<?php if(current_user_can('pmpro_reports')) { ?>
|
234 |
-
<a href="<?php echo admin_url('admin.php?page=pmpro-reports');?>" class="nav-tab<?php if($view == 'pmpro-reports') { ?> nav-tab-active<?php } ?>"><?php
|
235 |
<?php } ?>
|
236 |
|
237 |
<?php if(current_user_can('pmpro_membershiplevels')) { ?>
|
238 |
-
<a href="<?php echo admin_url('admin.php?page=pmpro-membershiplevels');?>" class="nav-tab<?php if( in_array( $view, array( 'pmpro-membershiplevels', 'pmpro-discountcodes', 'pmpro-pagesettings', 'pmpro-paymentsettings', 'pmpro-emailsettings', 'pmpro-emailtemplates', 'pmpro-advancedsettings' ) ) ) { ?> nav-tab-active<?php } ?>"><?php
|
239 |
<?php } ?>
|
240 |
|
241 |
<?php if(current_user_can('pmpro_addons')) { ?>
|
242 |
-
<a href="<?php echo admin_url('admin.php?page=pmpro-addons');?>" class="nav-tab<?php if($view == 'pmpro-addons') { ?> nav-tab-active<?php } ?>"><?php
|
243 |
<?php } ?>
|
244 |
|
245 |
<?php if(current_user_can('manage_options')) { ?>
|
246 |
-
<a href="<?php echo admin_url('admin.php?page=pmpro-license');?>" class="nav-tab<?php if($view == 'pmpro-license') { ?> nav-tab-active<?php } ?>"><?php
|
247 |
<?php } ?>
|
248 |
</nav>
|
249 |
|
250 |
<?php if( $view == 'pmpro-membershiplevels' || $view == 'pmpro-discountcodes' || $view == 'pmpro-pagesettings' || $view == 'pmpro-paymentsettings' || $view == 'pmpro-emailsettings' || $view == 'pmpro-emailtemplates' || $view == 'pmpro-advancedsettings' ) { ?>
|
251 |
<ul class="subsubsub">
|
252 |
<?php if(current_user_can('pmpro_membershiplevels')) { ?>
|
253 |
-
<li><a href="<?php echo admin_url('admin.php?page=pmpro-membershiplevels');?>" title="<?php _e('Membership Levels', 'paid-memberships-pro' );?>" class="<?php if($view == 'pmpro-membershiplevels') { ?>current<?php } ?>"><?php
|
254 |
<?php } ?>
|
255 |
|
256 |
<?php if(current_user_can('pmpro_discountcodes')) { ?>
|
257 |
-
<li><a href="<?php echo admin_url('admin.php?page=pmpro-discountcodes');?>" title="<?php _e('Discount Codes', 'paid-memberships-pro' );?>" class="<?php if($view == 'pmpro-discountcodes') { ?>current<?php } ?>"><?php
|
258 |
<?php } ?>
|
259 |
|
260 |
<?php if(current_user_can('pmpro_pagesettings')) { ?>
|
261 |
-
<li><a href="<?php echo admin_url('admin.php?page=pmpro-pagesettings');?>" title="<?php _e('Page Settings', 'paid-memberships-pro' );?>" class="<?php if($view == 'pmpro-pagesettings') { ?>current<?php } ?>"><?php
|
262 |
<?php } ?>
|
263 |
|
264 |
<?php if(current_user_can('pmpro_paymentsettings')) { ?>
|
265 |
-
<li><a href="<?php echo admin_url('admin.php?page=pmpro-paymentsettings');?>" title="<?php _e('Payment Gateway & SSL Settings', 'paid-memberships-pro' );?>" class="<?php if($view == 'pmpro-paymentsettings') { ?>current<?php } ?>"><?php
|
266 |
<?php } ?>
|
267 |
|
268 |
<?php if(current_user_can('pmpro_emailsettings')) { ?>
|
269 |
-
<li><a href="<?php echo admin_url('admin.php?page=pmpro-emailsettings');?>" title="<?php _e('Email Settings', 'paid-memberships-pro' );?>" class="<?php if($view == 'pmpro-emailsettings') { ?>current<?php } ?>"><?php
|
270 |
<?php } ?>
|
271 |
|
272 |
<?php if(current_user_can('pmpro_emailtemplates')) { ?>
|
273 |
-
<li><a href="<?php echo admin_url('admin.php?page=pmpro-emailtemplates');?>" title="<?php _e('Email Templates', 'paid-memberships-pro' );?>" class="<?php if($view == 'pmpro-emailtemplates') { ?>current<?php } ?>"><?php
|
274 |
<?php } ?>
|
275 |
|
276 |
<?php if(current_user_can('pmpro_advancedsettings')) { ?>
|
277 |
-
<li><a href="<?php echo admin_url('admin.php?page=pmpro-advancedsettings');?>" title="<?php _e('Advanced Settings', 'paid-memberships-pro' );?>" class="<?php if($view == 'pmpro-advancedsettings') { ?>current<?php } ?>"><?php
|
278 |
<?php } ?>
|
279 |
</ul>
|
280 |
<br class="clear" />
|
167 |
|
168 |
<div class="wrap pmpro_admin">
|
169 |
<div class="pmpro_banner">
|
170 |
+
<a class="pmpro_logo" title="Paid Memberships Pro - Membership Plugin for WordPress" target="_blank" rel="noopener noreferrer" href="https://www.paidmembershipspro.com/?utm_source=plugin&utm_medium=pmpro-admin-header&utm_campaign=homepage"><img src="<?php echo esc_url( PMPRO_URL . '/images/Paid-Memberships-Pro.png' ); ?>" width="350" height="75" border="0" alt="Paid Memberships Pro(c) - All Rights Reserved" /></a>
|
171 |
<div class="pmpro_meta">
|
172 |
<span class="pmpro_version">v<?php echo PMPRO_VERSION?></span>
|
173 |
+
<a target="_blank" rel="noopener noreferrer" href="https://www.paidmembershipspro.com/documentation/?utm_source=plugin&utm_medium=pmpro-admin-header&utm_campaign=documentation"><?php esc_html_e('Documentation', 'paid-memberships-pro' ); ?></a>
|
174 |
+
<a target="_blank" href="https://www.paidmembershipspro.com/pricing/?utm_source=plugin&utm_medium=pmpro-admin-header&utm_campaign=pricing&utm_content=get-support"><?php esc_html_e('Get Support', 'paid-memberships-pro' );?></a>
|
175 |
|
176 |
<?php if ( pmpro_license_isValid( null, pmpro_license_get_premium_types() ) ) { ?>
|
177 |
<?php printf(__( '<a class="pmpro_license_tag pmpro_license_tag-valid" href="%s">Valid License</a>', 'paid-memberships-pro' ), admin_url( 'admin.php?page=pmpro-license' ) ); ?>
|
219 |
if( in_array( $view, $settings_tabs ) ) { ?>
|
220 |
<nav class="nav-tab-wrapper">
|
221 |
<?php if(current_user_can('pmpro_dashboard')) { ?>
|
222 |
+
<a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-dashboard' ) );?>" class="nav-tab<?php if($view == 'pmpro-dashboard') { ?> nav-tab-active<?php } ?>"><?php esc_html_e('Dashboard', 'paid-memberships-pro' );?></a>
|
223 |
<?php } ?>
|
224 |
|
225 |
<?php if(current_user_can('pmpro_memberslist')) { ?>
|
226 |
+
<a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-memberslist' ) );?>" class="nav-tab<?php if($view == 'pmpro-memberslist') { ?> nav-tab-active<?php } ?>"><?php esc_html_e('Members', 'paid-memberships-pro' );?></a>
|
227 |
<?php } ?>
|
228 |
|
229 |
<?php if(current_user_can('pmpro_orders')) { ?>
|
230 |
+
<a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-orders' ) );?>" class="nav-tab<?php if($view == 'pmpro-orders') { ?> nav-tab-active<?php } ?>"><?php esc_html_e('Orders', 'paid-memberships-pro' );?></a>
|
231 |
<?php } ?>
|
232 |
|
233 |
<?php if(current_user_can('pmpro_reports')) { ?>
|
234 |
+
<a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-reports' ) );?>" class="nav-tab<?php if($view == 'pmpro-reports') { ?> nav-tab-active<?php } ?>"><?php esc_html_e('Reports', 'paid-memberships-pro' );?></a>
|
235 |
<?php } ?>
|
236 |
|
237 |
<?php if(current_user_can('pmpro_membershiplevels')) { ?>
|
238 |
+
<a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-membershiplevels' ) );?>" class="nav-tab<?php if( in_array( $view, array( 'pmpro-membershiplevels', 'pmpro-discountcodes', 'pmpro-pagesettings', 'pmpro-paymentsettings', 'pmpro-emailsettings', 'pmpro-emailtemplates', 'pmpro-advancedsettings' ) ) ) { ?> nav-tab-active<?php } ?>"><?php esc_html_e('Settings', 'paid-memberships-pro' );?></a>
|
239 |
<?php } ?>
|
240 |
|
241 |
<?php if(current_user_can('pmpro_addons')) { ?>
|
242 |
+
<a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-addons' ) );?>" class="nav-tab<?php if($view == 'pmpro-addons') { ?> nav-tab-active<?php } ?>"><?php esc_html_e('Add Ons', 'paid-memberships-pro' );?></a>
|
243 |
<?php } ?>
|
244 |
|
245 |
<?php if(current_user_can('manage_options')) { ?>
|
246 |
+
<a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-license' ) );?>" class="nav-tab<?php if($view == 'pmpro-license') { ?> nav-tab-active<?php } ?>"><?php esc_html_e('License', 'paid-memberships-pro' );?></a>
|
247 |
<?php } ?>
|
248 |
</nav>
|
249 |
|
250 |
<?php if( $view == 'pmpro-membershiplevels' || $view == 'pmpro-discountcodes' || $view == 'pmpro-pagesettings' || $view == 'pmpro-paymentsettings' || $view == 'pmpro-emailsettings' || $view == 'pmpro-emailtemplates' || $view == 'pmpro-advancedsettings' ) { ?>
|
251 |
<ul class="subsubsub">
|
252 |
<?php if(current_user_can('pmpro_membershiplevels')) { ?>
|
253 |
+
<li><a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-membershiplevels' ) );?>" title="<?php _e('Membership Levels', 'paid-memberships-pro' );?>" class="<?php if($view == 'pmpro-membershiplevels') { ?>current<?php } ?>"><?php esc_html_e('Levels', 'paid-memberships-pro' );?></a> | </li>
|
254 |
<?php } ?>
|
255 |
|
256 |
<?php if(current_user_can('pmpro_discountcodes')) { ?>
|
257 |
+
<li><a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-discountcodes' ) );?>" title="<?php _e('Discount Codes', 'paid-memberships-pro' );?>" class="<?php if($view == 'pmpro-discountcodes') { ?>current<?php } ?>"><?php esc_html_e('Discount Codes', 'paid-memberships-pro' );?></a> | </li>
|
258 |
<?php } ?>
|
259 |
|
260 |
<?php if(current_user_can('pmpro_pagesettings')) { ?>
|
261 |
+
<li><a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-pagesettings' ) );?>" title="<?php _e('Page Settings', 'paid-memberships-pro' );?>" class="<?php if($view == 'pmpro-pagesettings') { ?>current<?php } ?>"><?php esc_html_e('Pages', 'paid-memberships-pro' );?></a> | </li>
|
262 |
<?php } ?>
|
263 |
|
264 |
<?php if(current_user_can('pmpro_paymentsettings')) { ?>
|
265 |
+
<li><a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-paymentsettings' ) );?>" title="<?php _e('Payment Gateway & SSL Settings', 'paid-memberships-pro' );?>" class="<?php if($view == 'pmpro-paymentsettings') { ?>current<?php } ?>"><?php esc_html_e('Payment Gateway & SSL', 'paid-memberships-pro' );?></a> | </li>
|
266 |
<?php } ?>
|
267 |
|
268 |
<?php if(current_user_can('pmpro_emailsettings')) { ?>
|
269 |
+
<li><a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-emailsettings' ) );?>" title="<?php _e('Email Settings', 'paid-memberships-pro' );?>" class="<?php if($view == 'pmpro-emailsettings') { ?>current<?php } ?>"><?php esc_html_e('Email Settings', 'paid-memberships-pro' );?></a> | </li>
|
270 |
<?php } ?>
|
271 |
|
272 |
<?php if(current_user_can('pmpro_emailtemplates')) { ?>
|
273 |
+
<li><a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-emailtemplates' ) );?>" title="<?php _e('Email Templates', 'paid-memberships-pro' );?>" class="<?php if($view == 'pmpro-emailtemplates') { ?>current<?php } ?>"><?php esc_html_e('Email Templates', 'paid-memberships-pro' );?></a> | </li>
|
274 |
<?php } ?>
|
275 |
|
276 |
<?php if(current_user_can('pmpro_advancedsettings')) { ?>
|
277 |
+
<li><a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-advancedsettings' ) );?>" title="<?php _e('Advanced Settings', 'paid-memberships-pro' );?>" class="<?php if($view == 'pmpro-advancedsettings') { ?>current<?php } ?>"><?php esc_html_e('Advanced', 'paid-memberships-pro' );?></a></li>
|
278 |
<?php } ?>
|
279 |
</ul>
|
280 |
<br class="clear" />
|
adminpages/advancedsettings.php
CHANGED
@@ -12,29 +12,29 @@
|
|
12 |
$msg = -1;
|
13 |
$msgt = __("Are you sure you want to do that? Try again.", 'paid-memberships-pro' );
|
14 |
unset($_REQUEST['savesettings']);
|
15 |
-
}
|
16 |
-
|
17 |
//get/set settings
|
18 |
if(!empty($_REQUEST['savesettings']))
|
19 |
{
|
20 |
// Dashboard settings.
|
21 |
pmpro_setOption( 'hide_toolbar' );
|
22 |
pmpro_setOption( 'block_dashboard' );
|
23 |
-
|
24 |
// Message settings.
|
25 |
// These use wp_kses for better security handling.
|
26 |
$nonmembertext = wp_kses(wp_unslash($_POST['nonmembertext']), $allowedposttags);
|
27 |
update_option('pmpro_nonmembertext', $nonmembertext);
|
28 |
-
|
29 |
$notloggedintext = wp_kses(wp_unslash($_POST['notloggedintext']), $allowedposttags);
|
30 |
update_option('pmpro_notloggedintext', $notloggedintext);
|
31 |
-
|
32 |
$rsstext = wp_kses(wp_unslash($_POST['rsstext']), $allowedposttags);
|
33 |
-
update_option('pmpro_rsstext', $rsstext);
|
34 |
-
|
35 |
// Content settings.
|
36 |
pmpro_setOption("filterqueries");
|
37 |
-
pmpro_setOption("showexcerpts");
|
38 |
|
39 |
// Checkout settings.
|
40 |
pmpro_setOption("tospage");
|
@@ -42,7 +42,7 @@
|
|
42 |
pmpro_setOption("recaptcha");
|
43 |
pmpro_setOption("recaptcha_version");
|
44 |
pmpro_setOption("recaptcha_publickey");
|
45 |
-
pmpro_setOption("recaptcha_privatekey");
|
46 |
|
47 |
// Communication settings.
|
48 |
pmpro_setOption("maxnotificationpriority");
|
@@ -50,9 +50,16 @@
|
|
50 |
|
51 |
// Other settings.
|
52 |
pmpro_setOption("hideads");
|
|
|
53 |
pmpro_setOption("hideadslevels");
|
54 |
pmpro_setOption("redirecttosubscription");
|
55 |
-
pmpro_setOption("uninstall");
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
|
57 |
/**
|
58 |
* Filter to add custom settings to the advanced settings page.
|
@@ -63,7 +70,7 @@
|
|
63 |
if(!empty($setting['field_name']))
|
64 |
pmpro_setOption($setting['field_name']);
|
65 |
}
|
66 |
-
|
67 |
// Assume success.
|
68 |
$msg = true;
|
69 |
$msgt = __("Your advanced settings have been updated.", 'paid-memberships-pro' );
|
@@ -72,15 +79,15 @@
|
|
72 |
// Dashboard settings.
|
73 |
$hide_toolbar = pmpro_getOption( 'hide_toolbar' );
|
74 |
$block_dashboard = pmpro_getOption( 'block_dashboard' );
|
75 |
-
|
76 |
// Message settings.
|
77 |
$nonmembertext = pmpro_getOption("nonmembertext");
|
78 |
$notloggedintext = pmpro_getOption("notloggedintext");
|
79 |
$rsstext = pmpro_getOption("rsstext");
|
80 |
-
|
81 |
// Content settings.
|
82 |
$filterqueries = pmpro_getOption('filterqueries');
|
83 |
-
$showexcerpts = pmpro_getOption("showexcerpts");
|
84 |
|
85 |
// Checkout settings.
|
86 |
$tospage = pmpro_getOption("tospage");
|
@@ -96,6 +103,7 @@
|
|
96 |
|
97 |
// Other settings.
|
98 |
$hideads = pmpro_getOption("hideads");
|
|
|
99 |
$hideadslevels = pmpro_getOption("hideadslevels");
|
100 |
if( is_multisite() ) {
|
101 |
$redirecttosubscription = pmpro_getOption("redirecttosubscription");
|
@@ -130,27 +138,26 @@
|
|
130 |
|
131 |
<form action="" method="post" enctype="multipart/form-data">
|
132 |
<?php wp_nonce_field('savesettings', 'pmpro_advancedsettings_nonce');?>
|
133 |
-
|
134 |
-
<h1 class="wp-heading-inline"><?php esc_html_e( 'Advanced Settings', 'paid-memberships-pro' ); ?></h1>
|
135 |
<hr class="wp-header-end">
|
|
|
136 |
<div class="pmpro_admin_section pmpro_admin_section-restrict-dashboard">
|
137 |
<h2 class="title"><?php esc_html_e( 'Restrict Dashboard Access', 'paid-memberships-pro' ); ?></h2>
|
138 |
<table class="form-table">
|
139 |
<tbody>
|
140 |
<tr>
|
141 |
<th scope="row" valign="top">
|
142 |
-
<label for="block_dashboard"><?php
|
143 |
</th>
|
144 |
<td>
|
145 |
-
<input id="block_dashboard" name="block_dashboard" type="checkbox" value="yes" <?php checked( $block_dashboard, 'yes' ); ?> /> <label for="block_dashboard"><?php
|
146 |
</td>
|
147 |
</tr>
|
148 |
<tr>
|
149 |
<th scope="row" valign="top">
|
150 |
-
<label for="hide_toolbar"><?php
|
151 |
</th>
|
152 |
<td>
|
153 |
-
<input id="hide_toolbar" name="hide_toolbar" type="checkbox" value="yes" <?php checked( $hide_toolbar, 'yes' ); ?> /> <label for="hide_toolbar"><?php
|
154 |
</td>
|
155 |
</tr>
|
156 |
</tbody>
|
@@ -163,29 +170,29 @@
|
|
163 |
<tbody>
|
164 |
<tr>
|
165 |
<th scope="row" valign="top">
|
166 |
-
<label for="nonmembertext"><?php
|
167 |
</th>
|
168 |
<td>
|
169 |
<textarea name="nonmembertext" rows="3" cols="50" class="large-text"><?php echo stripslashes($nonmembertext)?></textarea>
|
170 |
-
<p class="description"><?php
|
171 |
</td>
|
172 |
</tr>
|
173 |
<tr>
|
174 |
<th scope="row" valign="top">
|
175 |
-
<label for="notloggedintext"><?php
|
176 |
</th>
|
177 |
<td>
|
178 |
<textarea name="notloggedintext" rows="3" cols="50" class="large-text"><?php echo stripslashes($notloggedintext)?></textarea>
|
179 |
-
<p class="description"><?php
|
180 |
</td>
|
181 |
</tr>
|
182 |
<tr>
|
183 |
<th scope="row" valign="top">
|
184 |
-
<label for="rsstext"><?php
|
185 |
</th>
|
186 |
<td>
|
187 |
<textarea name="rsstext" rows="3" cols="50" class="large-text"><?php echo stripslashes($rsstext)?></textarea>
|
188 |
-
<p class="description"><?php
|
189 |
</td>
|
190 |
</tr>
|
191 |
</tbody>
|
@@ -198,23 +205,23 @@
|
|
198 |
<tbody>
|
199 |
<tr>
|
200 |
<th scope="row" valign="top">
|
201 |
-
<label for="filterqueries"><?php
|
202 |
</th>
|
203 |
<td>
|
204 |
<select id="filterqueries" name="filterqueries">
|
205 |
-
<option value="0" <?php if(!$filterqueries) { ?>selected="selected"<?php } ?>><?php
|
206 |
-
<option value="1" <?php if($filterqueries == 1) { ?>selected="selected"<?php } ?>><?php
|
207 |
</select>
|
208 |
</td>
|
209 |
</tr>
|
210 |
<tr>
|
211 |
<th scope="row" valign="top">
|
212 |
-
<label for="showexcerpts"><?php
|
213 |
</th>
|
214 |
<td>
|
215 |
<select id="showexcerpts" name="showexcerpts">
|
216 |
-
<option value="0" <?php if(!$showexcerpts) { ?>selected="selected"<?php } ?>><?php
|
217 |
-
<option value="1" <?php if($showexcerpts == 1) { ?>selected="selected"<?php } ?>><?php
|
218 |
</select>
|
219 |
</td>
|
220 |
</tr>
|
@@ -228,40 +235,40 @@
|
|
228 |
<tbody>
|
229 |
<tr>
|
230 |
<th scope="row" valign="top">
|
231 |
-
<label for="tospage"><?php
|
232 |
</th>
|
233 |
<td>
|
234 |
<?php
|
235 |
wp_dropdown_pages(array("name"=>"tospage", "show_option_none"=>"No", "selected"=>$tospage));
|
236 |
?>
|
237 |
<br />
|
238 |
-
<p class="description"><?php
|
239 |
</td>
|
240 |
</tr>
|
241 |
<tr>
|
242 |
<th scope="row" valign="top">
|
243 |
-
<label for="spamprotection"><?php
|
244 |
</th>
|
245 |
<td>
|
246 |
<select id="spamprotection" name="spamprotection">
|
247 |
-
<option value="0" <?php if(!$spamprotection) { ?>selected="selected"<?php } ?>><?php
|
248 |
<!-- For reference, removed the Yes - Free memberships only. option -->
|
249 |
-
<option value="2" <?php if( $spamprotection > 0 ) { ?>selected="selected"<?php } ?>><?php
|
250 |
</select>
|
251 |
<p class="description"><?php printf( __( 'Block IPs from checkout if there are more than %d failures within %d minutes.', 'paid-memberships-pro' ), PMPRO_SPAM_ACTION_NUM_LIMIT, round(PMPRO_SPAM_ACTION_TIME_LIMIT/60,2) );?></p>
|
252 |
</td>
|
253 |
</tr>
|
254 |
<tr>
|
255 |
<th scope="row" valign="top">
|
256 |
-
<label for="recaptcha"><?php
|
257 |
</th>
|
258 |
<td>
|
259 |
<select id="recaptcha" name="recaptcha" onchange="pmpro_updateRecaptchaTRs();">
|
260 |
-
<option value="0" <?php if(!$recaptcha) { ?>selected="selected"<?php } ?>><?php
|
261 |
<!-- For reference, removed the Yes - Free memberships only. option -->
|
262 |
-
<option value="2" <?php if( $recaptcha > 0 ) { ?>selected="selected"<?php } ?>><?php
|
263 |
</select>
|
264 |
-
<p class="description"><?php
|
265 |
</td>
|
266 |
</tr>
|
267 |
</tbody>
|
@@ -269,23 +276,23 @@
|
|
269 |
<table class="form-table" id="recaptcha_settings" <?php if(!$recaptcha) { ?>style="display: none;"<?php } ?>>
|
270 |
<tbody>
|
271 |
<tr>
|
272 |
-
<th scope="row" valign="top"><label for="recaptcha_version"><?php
|
273 |
<td>
|
274 |
<select id="recaptcha_version" name="recaptcha_version">
|
275 |
-
<option value="2_checkbox" <?php selected( '2_checkbox', $recaptcha_version ); ?>><?php
|
276 |
-
<option value="3_invisible" <?php selected( '3_invisible', $recaptcha_version ); ?>><?php
|
277 |
</select>
|
278 |
-
<p class="description"><?php
|
279 |
</td>
|
280 |
</tr>
|
281 |
<tr>
|
282 |
-
<th scope="row"><label for="recaptcha_publickey"><?php
|
283 |
<td>
|
284 |
<input type="text" id="recaptcha_publickey" name="recaptcha_publickey" value="<?php echo esc_attr($recaptcha_publickey);?>" class="regular-text code" />
|
285 |
</td>
|
286 |
</tr>
|
287 |
<tr>
|
288 |
-
<th scope="row"><label for="recaptcha_privatekey"><?php
|
289 |
<td>
|
290 |
<input type="text" id="recaptcha_privatekey" name="recaptcha_privatekey" value="<?php echo esc_attr($recaptcha_privatekey);?>" class="regular-text code" />
|
291 |
</td>
|
@@ -298,7 +305,7 @@
|
|
298 |
<h2 class="title"><?php esc_html_e( 'Communication Settings', 'paid-memberships-pro' ); ?></h2>
|
299 |
<table class="form-table">
|
300 |
<tr>
|
301 |
-
<th><?php
|
302 |
<td>
|
303 |
<select name="maxnotificationpriority">
|
304 |
<option value="5" <?php selected( $maxnotificationpriority, 5 ); ?>>
|
@@ -309,12 +316,12 @@
|
|
309 |
</option>
|
310 |
</select>
|
311 |
<br />
|
312 |
-
<p class="description"><?php
|
313 |
</td>
|
314 |
</tr>
|
315 |
<tr>
|
316 |
<th>
|
317 |
-
<label for="activity_email_frequency"><?php
|
318 |
</th>
|
319 |
<td>
|
320 |
<select name="activity_email_frequency">
|
@@ -332,7 +339,7 @@
|
|
332 |
</option>
|
333 |
</select>
|
334 |
<br />
|
335 |
-
<p class="description"><?php
|
336 |
</td>
|
337 |
</tr>
|
338 |
</tbody>
|
@@ -345,29 +352,29 @@
|
|
345 |
<tbody>
|
346 |
<tr>
|
347 |
<th scope="row" valign="top">
|
348 |
-
<label for="hideads"><?php
|
349 |
</th>
|
350 |
<td>
|
351 |
<select id="hideads" name="hideads" onchange="pmpro_updateHideAdsTRs();">
|
352 |
-
<option value="0" <?php if(!$hideads) { ?>selected="selected"<?php } ?>><?php
|
353 |
-
<option value="1" <?php if($hideads == 1) { ?>selected="selected"<?php } ?>><?php
|
354 |
-
<option value="2" <?php if($hideads == 2) { ?>selected="selected"<?php } ?>><?php
|
355 |
</select>
|
356 |
</td>
|
357 |
</tr>
|
358 |
<tr id="hideads_explanation" <?php if($hideads < 2) { ?>style="display: none;"<?php } ?>>
|
359 |
<th scope="row" valign="top"> </th>
|
360 |
<td>
|
361 |
-
<p><?php
|
362 |
<pre lang="PHP">
|
363 |
if ( function_exists( 'pmpro_displayAds' ) && pmpro_displayAds() ) {
|
364 |
//insert ad code here
|
365 |
}</pre>
|
366 |
</td>
|
367 |
-
</tr>
|
368 |
<tr id="hideadslevels_tr" <?php if($hideads != 2) { ?>style="display: none;"<?php } ?>>
|
369 |
<th scope="row" valign="top">
|
370 |
-
<label for="hideadslevels"><?php
|
371 |
</th>
|
372 |
<td>
|
373 |
<?php
|
@@ -404,16 +411,16 @@ if ( function_exists( 'pmpro_displayAds' ) && pmpro_displayAds() ) {
|
|
404 |
<?php if(is_multisite()) { ?>
|
405 |
<tr>
|
406 |
<th scope="row" valign="top">
|
407 |
-
<label for="redirecttosubscription"><?php
|
408 |
</th>
|
409 |
<td>
|
410 |
<select id="redirecttosubscription" name="redirecttosubscription">
|
411 |
-
<option value="0" <?php if(!$redirecttosubscription) { ?>selected="selected"<?php } ?>><?php
|
412 |
-
<option value="1" <?php if($redirecttosubscription == 1) { ?>selected="selected"<?php } ?>><?php
|
413 |
</select>
|
414 |
</td>
|
415 |
</tr>
|
416 |
-
<?php } ?>
|
417 |
<?php
|
418 |
// Filter to Add More Advanced Settings for Misc Plugin Options, etc.
|
419 |
if (has_action('pmpro_custom_advanced_settings')) {
|
@@ -432,7 +439,7 @@ if ( function_exists( 'pmpro_displayAds' ) && pmpro_displayAds() ) {
|
|
432 |
?>
|
433 |
<select id="<?php echo esc_attr( $field['field_name'] ); ?>"
|
434 |
name="<?php echo esc_attr( $field['field_name'] ); ?>">
|
435 |
-
<?php
|
436 |
//For associative arrays, we use the array keys as values. For numerically indexed arrays, we use the array values.
|
437 |
$is_associative = (bool)count(array_filter(array_keys($field['options']), 'is_string'));
|
438 |
foreach ($field['options'] as $key => $option) {
|
@@ -442,7 +449,7 @@ if ( function_exists( 'pmpro_displayAds' ) && pmpro_displayAds() ) {
|
|
442 |
<?php echo esc_textarea($option); ?>
|
443 |
</option>
|
444 |
<?php
|
445 |
-
}
|
446 |
?>
|
447 |
</select>
|
448 |
<?php
|
@@ -483,16 +490,41 @@ if ( function_exists( 'pmpro_displayAds' ) && pmpro_displayAds() ) {
|
|
483 |
</tr>
|
484 |
<?php
|
485 |
}
|
486 |
-
}
|
487 |
?>
|
488 |
<tr>
|
489 |
<th scope="row" valign="top">
|
490 |
-
<label for="
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
491 |
</th>
|
492 |
<td>
|
493 |
<select id="uninstall" name="uninstall">
|
494 |
-
<option value="0" <?php if ( ! $uninstall ) { ?>selected="selected"<?php } ?>><?php
|
495 |
-
<option value="1" <?php if ( $uninstall == 1 ) { ?>selected="selected"<?php } ?>><?php
|
496 |
</select>
|
497 |
<p class="description"><?php esc_html_e( 'To delete all PMPro data from the database, set to Yes, deactivate PMPro, and then click to delete PMPro from the plugins page.', 'paid-memberships-pro' ); ?></p>
|
498 |
</td>
|
@@ -537,9 +569,9 @@ if ( function_exists( 'pmpro_displayAds' ) && pmpro_displayAds() ) {
|
|
537 |
}
|
538 |
pmpro_updateRecaptchaTRs();
|
539 |
</script>
|
540 |
-
</div> <!-- end pmpro_admin_section-other-settings -->
|
541 |
<p class="submit">
|
542 |
-
<input name="savesettings" type="submit" class="button button-primary" value="<?php
|
543 |
</p>
|
544 |
</form>
|
545 |
|
12 |
$msg = -1;
|
13 |
$msgt = __("Are you sure you want to do that? Try again.", 'paid-memberships-pro' );
|
14 |
unset($_REQUEST['savesettings']);
|
15 |
+
}
|
16 |
+
|
17 |
//get/set settings
|
18 |
if(!empty($_REQUEST['savesettings']))
|
19 |
{
|
20 |
// Dashboard settings.
|
21 |
pmpro_setOption( 'hide_toolbar' );
|
22 |
pmpro_setOption( 'block_dashboard' );
|
23 |
+
|
24 |
// Message settings.
|
25 |
// These use wp_kses for better security handling.
|
26 |
$nonmembertext = wp_kses(wp_unslash($_POST['nonmembertext']), $allowedposttags);
|
27 |
update_option('pmpro_nonmembertext', $nonmembertext);
|
28 |
+
|
29 |
$notloggedintext = wp_kses(wp_unslash($_POST['notloggedintext']), $allowedposttags);
|
30 |
update_option('pmpro_notloggedintext', $notloggedintext);
|
31 |
+
|
32 |
$rsstext = wp_kses(wp_unslash($_POST['rsstext']), $allowedposttags);
|
33 |
+
update_option('pmpro_rsstext', $rsstext);
|
34 |
+
|
35 |
// Content settings.
|
36 |
pmpro_setOption("filterqueries");
|
37 |
+
pmpro_setOption("showexcerpts");
|
38 |
|
39 |
// Checkout settings.
|
40 |
pmpro_setOption("tospage");
|
42 |
pmpro_setOption("recaptcha");
|
43 |
pmpro_setOption("recaptcha_version");
|
44 |
pmpro_setOption("recaptcha_publickey");
|
45 |
+
pmpro_setOption("recaptcha_privatekey");
|
46 |
|
47 |
// Communication settings.
|
48 |
pmpro_setOption("maxnotificationpriority");
|
50 |
|
51 |
// Other settings.
|
52 |
pmpro_setOption("hideads");
|
53 |
+
pmpro_setOption("wisdom_opt_out");
|
54 |
pmpro_setOption("hideadslevels");
|
55 |
pmpro_setOption("redirecttosubscription");
|
56 |
+
pmpro_setOption("uninstall");
|
57 |
+
|
58 |
+
// Set up Wisdom tracking cron if needed.
|
59 |
+
if ( (int)pmpro_getOption("wisdom_opt_out") === 0 ) {
|
60 |
+
$wisdom_integration = PMPro_Wisdom_Integration::instance();
|
61 |
+
$wisdom_integration->wisdom_tracker->schedule_tracking();
|
62 |
+
}
|
63 |
|
64 |
/**
|
65 |
* Filter to add custom settings to the advanced settings page.
|
70 |
if(!empty($setting['field_name']))
|
71 |
pmpro_setOption($setting['field_name']);
|
72 |
}
|
73 |
+
|
74 |
// Assume success.
|
75 |
$msg = true;
|
76 |
$msgt = __("Your advanced settings have been updated.", 'paid-memberships-pro' );
|
79 |
// Dashboard settings.
|
80 |
$hide_toolbar = pmpro_getOption( 'hide_toolbar' );
|
81 |
$block_dashboard = pmpro_getOption( 'block_dashboard' );
|
82 |
+
|
83 |
// Message settings.
|
84 |
$nonmembertext = pmpro_getOption("nonmembertext");
|
85 |
$notloggedintext = pmpro_getOption("notloggedintext");
|
86 |
$rsstext = pmpro_getOption("rsstext");
|
87 |
+
|
88 |
// Content settings.
|
89 |
$filterqueries = pmpro_getOption('filterqueries');
|
90 |
+
$showexcerpts = pmpro_getOption("showexcerpts");
|
91 |
|
92 |
// Checkout settings.
|
93 |
$tospage = pmpro_getOption("tospage");
|
103 |
|
104 |
// Other settings.
|
105 |
$hideads = pmpro_getOption("hideads");
|
106 |
+
$wisdom_opt_out = (int)pmpro_getOption("wisdom_opt_out");
|
107 |
$hideadslevels = pmpro_getOption("hideadslevels");
|
108 |
if( is_multisite() ) {
|
109 |
$redirecttosubscription = pmpro_getOption("redirecttosubscription");
|
138 |
|
139 |
<form action="" method="post" enctype="multipart/form-data">
|
140 |
<?php wp_nonce_field('savesettings', 'pmpro_advancedsettings_nonce');?>
|
|
|
|
|
141 |
<hr class="wp-header-end">
|
142 |
+
<h1 class="wp-heading-inline"><?php esc_html_e( 'Advanced Settings', 'paid-memberships-pro' ); ?></h1>
|
143 |
<div class="pmpro_admin_section pmpro_admin_section-restrict-dashboard">
|
144 |
<h2 class="title"><?php esc_html_e( 'Restrict Dashboard Access', 'paid-memberships-pro' ); ?></h2>
|
145 |
<table class="form-table">
|
146 |
<tbody>
|
147 |
<tr>
|
148 |
<th scope="row" valign="top">
|
149 |
+
<label for="block_dashboard"><?php esc_html_e('WordPress Dashboard', 'paid-memberships-pro' );?></label>
|
150 |
</th>
|
151 |
<td>
|
152 |
+
<input id="block_dashboard" name="block_dashboard" type="checkbox" value="yes" <?php checked( $block_dashboard, 'yes' ); ?> /> <label for="block_dashboard"><?php esc_html_e('Block all users with the Subscriber role from accessing the Dashboard.', 'paid-memberships-pro' );?></label>
|
153 |
</td>
|
154 |
</tr>
|
155 |
<tr>
|
156 |
<th scope="row" valign="top">
|
157 |
+
<label for="hide_toolbar"><?php esc_html_e('WordPress Toolbar', 'paid-memberships-pro' );?></label>
|
158 |
</th>
|
159 |
<td>
|
160 |
+
<input id="hide_toolbar" name="hide_toolbar" type="checkbox" value="yes" <?php checked( $hide_toolbar, 'yes' ); ?> /> <label for="hide_toolbar"><?php esc_html_e('Hide the Toolbar from all users with the Subscriber role.', 'paid-memberships-pro' );?></label>
|
161 |
</td>
|
162 |
</tr>
|
163 |
</tbody>
|
170 |
<tbody>
|
171 |
<tr>
|
172 |
<th scope="row" valign="top">
|
173 |
+
<label for="nonmembertext"><?php esc_html_e('Message for Logged-in Non-members', 'paid-memberships-pro' );?>:</label>
|
174 |
</th>
|
175 |
<td>
|
176 |
<textarea name="nonmembertext" rows="3" cols="50" class="large-text"><?php echo stripslashes($nonmembertext)?></textarea>
|
177 |
+
<p class="description"><?php esc_html_e('This message replaces the post content for non-members. Available variables', 'paid-memberships-pro' );?>: <code>!!levels!!</code> <code>!!referrer!!</code> <code>!!levels_page_url!!</code></p>
|
178 |
</td>
|
179 |
</tr>
|
180 |
<tr>
|
181 |
<th scope="row" valign="top">
|
182 |
+
<label for="notloggedintext"><?php esc_html_e('Message for Logged-out Users', 'paid-memberships-pro' );?>:</label>
|
183 |
</th>
|
184 |
<td>
|
185 |
<textarea name="notloggedintext" rows="3" cols="50" class="large-text"><?php echo stripslashes($notloggedintext)?></textarea>
|
186 |
+
<p class="description"><?php esc_html_e('This message replaces the post content for logged-out visitors.', 'paid-memberships-pro' );?> <?php esc_html_e('Available variables', 'paid-memberships-pro' );?>: <code>!!levels!!</code> <code>!!referrer!!</code> <code>!!login_url!!</code> <code>!!levels_page_url!!</code></p>
|
187 |
</td>
|
188 |
</tr>
|
189 |
<tr>
|
190 |
<th scope="row" valign="top">
|
191 |
+
<label for="rsstext"><?php esc_html_e('Message for RSS Feed', 'paid-memberships-pro' );?>:</label>
|
192 |
</th>
|
193 |
<td>
|
194 |
<textarea name="rsstext" rows="3" cols="50" class="large-text"><?php echo stripslashes($rsstext)?></textarea>
|
195 |
+
<p class="description"><?php esc_html_e('This message replaces the post content in RSS feeds.', 'paid-memberships-pro' );?> <?php esc_html_e('Available variables', 'paid-memberships-pro' );?>: <code>!!levels!!</code></p>
|
196 |
</td>
|
197 |
</tr>
|
198 |
</tbody>
|
205 |
<tbody>
|
206 |
<tr>
|
207 |
<th scope="row" valign="top">
|
208 |
+
<label for="filterqueries"><?php esc_html_e("Filter searches and archives?", 'paid-memberships-pro' );?></label>
|
209 |
</th>
|
210 |
<td>
|
211 |
<select id="filterqueries" name="filterqueries">
|
212 |
+
<option value="0" <?php if(!$filterqueries) { ?>selected="selected"<?php } ?>><?php esc_html_e('No - Non-members will see restricted posts/pages in searches and archives.', 'paid-memberships-pro' );?></option>
|
213 |
+
<option value="1" <?php if($filterqueries == 1) { ?>selected="selected"<?php } ?>><?php esc_html_e('Yes - Only members will see restricted posts/pages in searches and archives.', 'paid-memberships-pro' );?></option>
|
214 |
</select>
|
215 |
</td>
|
216 |
</tr>
|
217 |
<tr>
|
218 |
<th scope="row" valign="top">
|
219 |
+
<label for="showexcerpts"><?php esc_html_e('Show Excerpts to Non-Members?', 'paid-memberships-pro' );?></label>
|
220 |
</th>
|
221 |
<td>
|
222 |
<select id="showexcerpts" name="showexcerpts">
|
223 |
+
<option value="0" <?php if(!$showexcerpts) { ?>selected="selected"<?php } ?>><?php esc_html_e('No - Hide excerpts.', 'paid-memberships-pro' );?></option>
|
224 |
+
<option value="1" <?php if($showexcerpts == 1) { ?>selected="selected"<?php } ?>><?php esc_html_e('Yes - Show excerpts.', 'paid-memberships-pro' );?></option>
|
225 |
</select>
|
226 |
</td>
|
227 |
</tr>
|
235 |
<tbody>
|
236 |
<tr>
|
237 |
<th scope="row" valign="top">
|
238 |
+
<label for="tospage"><?php esc_html_e('Require Terms of Service on signups?', 'paid-memberships-pro' );?></label>
|
239 |
</th>
|
240 |
<td>
|
241 |
<?php
|
242 |
wp_dropdown_pages(array("name"=>"tospage", "show_option_none"=>"No", "selected"=>$tospage));
|
243 |
?>
|
244 |
<br />
|
245 |
+
<p class="description"><?php esc_html_e('If yes, create a WordPress page containing your TOS agreement and assign it using the dropdown above.', 'paid-memberships-pro' );?></p>
|
246 |
</td>
|
247 |
</tr>
|
248 |
<tr>
|
249 |
<th scope="row" valign="top">
|
250 |
+
<label for="spamprotection"><?php esc_html_e('Enable Spam Protection?', 'paid-memberships-pro' );?>:</label>
|
251 |
</th>
|
252 |
<td>
|
253 |
<select id="spamprotection" name="spamprotection">
|
254 |
+
<option value="0" <?php if(!$spamprotection) { ?>selected="selected"<?php } ?>><?php esc_html_e('No', 'paid-memberships-pro' );?></option>
|
255 |
<!-- For reference, removed the Yes - Free memberships only. option -->
|
256 |
+
<option value="2" <?php if( $spamprotection > 0 ) { ?>selected="selected"<?php } ?>><?php esc_html_e('Yes - Enable Spam Protection', 'paid-memberships-pro' );?></option>
|
257 |
</select>
|
258 |
<p class="description"><?php printf( __( 'Block IPs from checkout if there are more than %d failures within %d minutes.', 'paid-memberships-pro' ), PMPRO_SPAM_ACTION_NUM_LIMIT, round(PMPRO_SPAM_ACTION_TIME_LIMIT/60,2) );?></p>
|
259 |
</td>
|
260 |
</tr>
|
261 |
<tr>
|
262 |
<th scope="row" valign="top">
|
263 |
+
<label for="recaptcha"><?php esc_html_e('Use reCAPTCHA?', 'paid-memberships-pro' );?>:</label>
|
264 |
</th>
|
265 |
<td>
|
266 |
<select id="recaptcha" name="recaptcha" onchange="pmpro_updateRecaptchaTRs();">
|
267 |
+
<option value="0" <?php if(!$recaptcha) { ?>selected="selected"<?php } ?>><?php esc_html_e('No', 'paid-memberships-pro' );?></option>
|
268 |
<!-- For reference, removed the Yes - Free memberships only. option -->
|
269 |
+
<option value="2" <?php if( $recaptcha > 0 ) { ?>selected="selected"<?php } ?>><?php esc_html_e('Yes - All memberships.', 'paid-memberships-pro' );?></option>
|
270 |
</select>
|
271 |
+
<p class="description"><?php esc_html_e('A free reCAPTCHA key is required.', 'paid-memberships-pro' );?> <a href="https://www.google.com/recaptcha/admin/create" target="_blank" rel="nofollow noopener"><?php esc_html_e('Click here to signup for reCAPTCHA', 'paid-memberships-pro' );?></a>.</p>
|
272 |
</td>
|
273 |
</tr>
|
274 |
</tbody>
|
276 |
<table class="form-table" id="recaptcha_settings" <?php if(!$recaptcha) { ?>style="display: none;"<?php } ?>>
|
277 |
<tbody>
|
278 |
<tr>
|
279 |
+
<th scope="row" valign="top"><label for="recaptcha_version"><?php esc_html_e( 'reCAPTCHA Version', 'paid-memberships-pro' );?>:</label></th>
|
280 |
<td>
|
281 |
<select id="recaptcha_version" name="recaptcha_version">
|
282 |
+
<option value="2_checkbox" <?php selected( '2_checkbox', $recaptcha_version ); ?>><?php esc_html_e( ' v2 - Checkbox', 'paid-memberships-pro' ); ?></option>
|
283 |
+
<option value="3_invisible" <?php selected( '3_invisible', $recaptcha_version ); ?>><?php esc_html_e( 'v3 - Invisible', 'paid-memberships-pro' ); ?></option>
|
284 |
</select>
|
285 |
+
<p class="description"><?php esc_html_e( 'Changing your version will require new API keys.', 'paid-memberships-pro' ); ?></p>
|
286 |
</td>
|
287 |
</tr>
|
288 |
<tr>
|
289 |
+
<th scope="row"><label for="recaptcha_publickey"><?php esc_html_e('reCAPTCHA Site Key', 'paid-memberships-pro' );?>:</label></th>
|
290 |
<td>
|
291 |
<input type="text" id="recaptcha_publickey" name="recaptcha_publickey" value="<?php echo esc_attr($recaptcha_publickey);?>" class="regular-text code" />
|
292 |
</td>
|
293 |
</tr>
|
294 |
<tr>
|
295 |
+
<th scope="row"><label for="recaptcha_privatekey"><?php esc_html_e('reCAPTCHA Secret Key', 'paid-memberships-pro' );?>:</label></th>
|
296 |
<td>
|
297 |
<input type="text" id="recaptcha_privatekey" name="recaptcha_privatekey" value="<?php echo esc_attr($recaptcha_privatekey);?>" class="regular-text code" />
|
298 |
</td>
|
305 |
<h2 class="title"><?php esc_html_e( 'Communication Settings', 'paid-memberships-pro' ); ?></h2>
|
306 |
<table class="form-table">
|
307 |
<tr>
|
308 |
+
<th><?php esc_html_e( 'Notifications', 'paid-memberships-pro' ); ?></th>
|
309 |
<td>
|
310 |
<select name="maxnotificationpriority">
|
311 |
<option value="5" <?php selected( $maxnotificationpriority, 5 ); ?>>
|
316 |
</option>
|
317 |
</select>
|
318 |
<br />
|
319 |
+
<p class="description"><?php esc_html_e('Notifications are occasionally shown on the Paid Memberships Pro settings pages.', 'paid-memberships-pro' );?></p>
|
320 |
</td>
|
321 |
</tr>
|
322 |
<tr>
|
323 |
<th>
|
324 |
+
<label for="activity_email_frequency"><?php esc_html_e('Activity Email Frequency', 'paid-memberships-pro' );?></label>
|
325 |
</th>
|
326 |
<td>
|
327 |
<select name="activity_email_frequency">
|
339 |
</option>
|
340 |
</select>
|
341 |
<br />
|
342 |
+
<p class="description"><?php esc_html_e( 'Send periodic sales and revenue updates from this site to the administration email address.', 'paid-memberships-pro' );?></p>
|
343 |
</td>
|
344 |
</tr>
|
345 |
</tbody>
|
352 |
<tbody>
|
353 |
<tr>
|
354 |
<th scope="row" valign="top">
|
355 |
+
<label for="hideads"><?php esc_html_e("Hide Ads From Members?", 'paid-memberships-pro' );?></label>
|
356 |
</th>
|
357 |
<td>
|
358 |
<select id="hideads" name="hideads" onchange="pmpro_updateHideAdsTRs();">
|
359 |
+
<option value="0" <?php if(!$hideads) { ?>selected="selected"<?php } ?>><?php esc_html_e('No', 'paid-memberships-pro' );?></option>
|
360 |
+
<option value="1" <?php if($hideads == 1) { ?>selected="selected"<?php } ?>><?php esc_html_e('Hide Ads From All Members', 'paid-memberships-pro' );?></option>
|
361 |
+
<option value="2" <?php if($hideads == 2) { ?>selected="selected"<?php } ?>><?php esc_html_e('Hide Ads From Certain Members', 'paid-memberships-pro' );?></option>
|
362 |
</select>
|
363 |
</td>
|
364 |
</tr>
|
365 |
<tr id="hideads_explanation" <?php if($hideads < 2) { ?>style="display: none;"<?php } ?>>
|
366 |
<th scope="row" valign="top"> </th>
|
367 |
<td>
|
368 |
+
<p><?php esc_html_e('To hide ads in your template code, use code like the following', 'paid-memberships-pro' );?>:</p>
|
369 |
<pre lang="PHP">
|
370 |
if ( function_exists( 'pmpro_displayAds' ) && pmpro_displayAds() ) {
|
371 |
//insert ad code here
|
372 |
}</pre>
|
373 |
</td>
|
374 |
+
</tr>
|
375 |
<tr id="hideadslevels_tr" <?php if($hideads != 2) { ?>style="display: none;"<?php } ?>>
|
376 |
<th scope="row" valign="top">
|
377 |
+
<label for="hideadslevels"><?php esc_html_e('Choose Levels to Hide Ads From', 'paid-memberships-pro' );?>:</label>
|
378 |
</th>
|
379 |
<td>
|
380 |
<?php
|
411 |
<?php if(is_multisite()) { ?>
|
412 |
<tr>
|
413 |
<th scope="row" valign="top">
|
414 |
+
<label for="redirecttosubscription"><?php esc_html_e('Redirect all traffic from registration page to /subscription/?', 'paid-memberships-pro' );?>: <em>(<?php esc_html_e('multisite only', 'paid-memberships-pro' );?>)</em></label>
|
415 |
</th>
|
416 |
<td>
|
417 |
<select id="redirecttosubscription" name="redirecttosubscription">
|
418 |
+
<option value="0" <?php if(!$redirecttosubscription) { ?>selected="selected"<?php } ?>><?php esc_html_e('No', 'paid-memberships-pro' );?></option>
|
419 |
+
<option value="1" <?php if($redirecttosubscription == 1) { ?>selected="selected"<?php } ?>><?php esc_html_e('Yes', 'paid-memberships-pro' );?></option>
|
420 |
</select>
|
421 |
</td>
|
422 |
</tr>
|
423 |
+
<?php } ?>
|
424 |
<?php
|
425 |
// Filter to Add More Advanced Settings for Misc Plugin Options, etc.
|
426 |
if (has_action('pmpro_custom_advanced_settings')) {
|
439 |
?>
|
440 |
<select id="<?php echo esc_attr( $field['field_name'] ); ?>"
|
441 |
name="<?php echo esc_attr( $field['field_name'] ); ?>">
|
442 |
+
<?php
|
443 |
//For associative arrays, we use the array keys as values. For numerically indexed arrays, we use the array values.
|
444 |
$is_associative = (bool)count(array_filter(array_keys($field['options']), 'is_string'));
|
445 |
foreach ($field['options'] as $key => $option) {
|
449 |
<?php echo esc_textarea($option); ?>
|
450 |
</option>
|
451 |
<?php
|
452 |
+
}
|
453 |
?>
|
454 |
</select>
|
455 |
<?php
|
490 |
</tr>
|
491 |
<?php
|
492 |
}
|
493 |
+
}
|
494 |
?>
|
495 |
<tr>
|
496 |
<th scope="row" valign="top">
|
497 |
+
<label for="wisdom_opt_out">
|
498 |
+
<?php esc_html_e( 'Enable Tracking', 'paid-memberships-pro' ); ?>
|
499 |
+
</label>
|
500 |
+
</th>
|
501 |
+
<td>
|
502 |
+
<p>
|
503 |
+
<label>
|
504 |
+
<input name="wisdom_opt_out" type="radio" value="0"<?php checked( 0, $wisdom_opt_out ); ?> />
|
505 |
+
<?php esc_html_e( 'Allow usage of Paid Memberships Pro to be tracked.', 'paid-memberships-pro' );?>
|
506 |
+
</label>
|
507 |
+
</p>
|
508 |
+
<p>
|
509 |
+
<label>
|
510 |
+
<input name="wisdom_opt_out" type="radio" value="1"<?php checked( 1, $wisdom_opt_out ); ?> />
|
511 |
+
<?php esc_html_e( 'Do not track usage of Paid Memberships Pro on my site.', 'paid-memberships-pro' );?>
|
512 |
+
</label>
|
513 |
+
</p>
|
514 |
+
<p class="description">
|
515 |
+
<?php esc_html_e( 'Sharing non-sensitive membership site data helps us analyze how our plugin is meeting your needs and identify opportunities to improve. Read about what usage data is tracked:', 'paid-memberships-pro' ); ?>
|
516 |
+
<a href="https://www.paidmembershipspro.com/privacy-policy/usage-tracking/" title="<?php esc_attr_e( 'PaidMembershipsPro.com Usage Tracking', 'paid-memberships-pro' ); ?>" target="_blank" rel="nofollow noopener"><?php esc_html_e( 'Paid Memberships Pro Usage Tracking', 'paid-memberships-pro' ); ?></a>.
|
517 |
+
</p>
|
518 |
+
</td>
|
519 |
+
</tr>
|
520 |
+
<tr>
|
521 |
+
<th scope="row" valign="top">
|
522 |
+
<label for="uninstall"><?php esc_html_e('Uninstall PMPro on deletion?', 'paid-memberships-pro' );?></label>
|
523 |
</th>
|
524 |
<td>
|
525 |
<select id="uninstall" name="uninstall">
|
526 |
+
<option value="0" <?php if ( ! $uninstall ) { ?>selected="selected"<?php } ?>><?php esc_html_e( 'No', 'paid-memberships-pro' );?></option>
|
527 |
+
<option value="1" <?php if ( $uninstall == 1 ) { ?>selected="selected"<?php } ?>><?php esc_html_e( 'Yes - Delete all PMPro Data.', 'paid-memberships-pro' );?></option>
|
528 |
</select>
|
529 |
<p class="description"><?php esc_html_e( 'To delete all PMPro data from the database, set to Yes, deactivate PMPro, and then click to delete PMPro from the plugins page.', 'paid-memberships-pro' ); ?></p>
|
530 |
</td>
|
569 |
}
|
570 |
pmpro_updateRecaptchaTRs();
|
571 |
</script>
|
572 |
+
</div> <!-- end pmpro_admin_section-other-settings -->
|
573 |
<p class="submit">
|
574 |
+
<input name="savesettings" type="submit" class="button button-primary" value="<?php esc_attr_e('Save Settings', 'paid-memberships-pro' );?>" />
|
575 |
</p>
|
576 |
</form>
|
577 |
|
adminpages/dashboard.php
CHANGED
@@ -105,14 +105,14 @@ function pmpro_dashboard_welcome_callback() { ?>
|
|
105 |
<div class="pmpro-dashboard-welcome-columns">
|
106 |
<div class="pmpro-dashboard-welcome-column">
|
107 |
<?php global $pmpro_level_ready, $pmpro_gateway_ready, $pmpro_pages_ready; ?>
|
108 |
-
<h3><?php
|
109 |
<ul>
|
110 |
<?php if ( current_user_can( 'pmpro_membershiplevels' ) ) { ?>
|
111 |
<li>
|
112 |
<?php if ( empty( $pmpro_level_ready ) ) { ?>
|
113 |
-
<a href="<?php echo admin_url( 'admin.php?page=pmpro-membershiplevels&edit=-1' );?>"><i class="dashicons dashicons-admin-users"></i> <?php
|
114 |
<?php } else { ?>
|
115 |
-
<a href="<?php echo admin_url( 'admin.php?page=pmpro-membershiplevels' );?>"><i class="dashicons dashicons-admin-users"></i> <?php
|
116 |
<?php } ?>
|
117 |
</li>
|
118 |
<?php } ?>
|
@@ -120,9 +120,9 @@ function pmpro_dashboard_welcome_callback() { ?>
|
|
120 |
<?php if ( current_user_can( 'pmpro_pagesettings' ) ) { ?>
|
121 |
<li>
|
122 |
<?php if ( empty( $pmpro_pages_ready ) ) { ?>
|
123 |
-
<a href="<?php echo admin_url( 'admin.php?page=pmpro-pagesettings' );?>"><i class="dashicons dashicons-welcome-add-page"></i> <?php
|
124 |
<?php } else { ?>
|
125 |
-
<a href="<?php echo admin_url( 'admin.php?page=pmpro-pagesettings' );?>"><i class="dashicons dashicons-welcome-add-page"></i> <?php
|
126 |
<?php } ?>
|
127 |
</li>
|
128 |
<?php } ?>
|
@@ -130,39 +130,39 @@ function pmpro_dashboard_welcome_callback() { ?>
|
|
130 |
<?php if ( current_user_can( 'pmpro_pagesettings' ) ) { ?>
|
131 |
<li>
|
132 |
<?php if ( empty( $pmpro_gateway_ready ) ) { ?>
|
133 |
-
<a href="<?php echo admin_url( 'admin.php?page=pmpro-paymentsettings' );?>"><i class="dashicons dashicons-cart"></i> <?php
|
134 |
<?php } else { ?>
|
135 |
-
<a href="<?php echo admin_url( 'admin.php?page=pmpro-paymentsettings' );?>"><i class="dashicons dashicons-cart"></i> <?php
|
136 |
<?php } ?>
|
137 |
</li>
|
138 |
<?php } ?>
|
139 |
</ul>
|
140 |
-
<h3><?php
|
141 |
<ul>
|
142 |
<?php if ( current_user_can( 'pmpro_emailsettings' ) ) { ?>
|
143 |
-
<li><a href="<?php echo admin_url( 'admin.php?page=pmpro-emailsettings' );?>"><i class="dashicons dashicons-email"></i> <?php
|
144 |
<?php } ?>
|
145 |
|
146 |
<?php if ( current_user_can( 'pmpro_emailtemplates' ) ) { ?>
|
147 |
-
<li><a href="<?php echo admin_url( 'admin.php?page=pmpro-emailtemplates' );?>"><i class="dashicons dashicons-editor-spellcheck"></i> <?php
|
148 |
<?php } ?>
|
149 |
|
150 |
<?php if ( current_user_can( 'pmpro_advancedsettings' ) ) { ?>
|
151 |
-
<li><a href="<?php echo admin_url( 'admin.php?page=pmpro-advancedsettings' );?>"><i class="dashicons dashicons-admin-settings"></i> <?php
|
152 |
<?php } ?>
|
153 |
|
154 |
<?php if ( current_user_can( 'pmpro_addons' ) ) { ?>
|
155 |
-
<li><a href="<?php echo admin_url( 'admin.php?page=pmpro-addons' );?>"><i class="dashicons dashicons-admin-plugins"></i> <?php
|
156 |
<?php } ?>
|
157 |
</ul>
|
158 |
<hr />
|
159 |
<p class="text-center">
|
160 |
<?php echo esc_html( __( 'For guidance as your begin these steps,', 'paid-memberships-pro' ) ); ?>
|
161 |
-
<a href="https://www.paidmembershipspro.com/documentation/initial-plugin-setup/?utm_source=plugin&utm_medium=pmpro-dashboard&utm_campaign=documentation&utm_content=initial-plugin-setup" target="_blank"><?php
|
162 |
</p>
|
163 |
</div> <!-- end pmpro-dashboard-welcome-column -->
|
164 |
<div class="pmpro-dashboard-welcome-column">
|
165 |
-
<h3><?php
|
166 |
<?php
|
167 |
// Get saved license.
|
168 |
$key = get_option( 'pmpro_license_key', '' );
|
@@ -170,12 +170,12 @@ function pmpro_dashboard_welcome_callback() { ?>
|
|
170 |
?>
|
171 |
<?php if ( ! pmpro_license_isValid() && empty( $key ) ) { ?>
|
172 |
<p class="pmpro_message pmpro_error">
|
173 |
-
<strong><?php
|
174 |
<?php printf(__( '<a href="%s">Enter your key here »</a>', 'paid-memberships-pro' ), admin_url( 'admin.php?page=pmpro-license' ) );?>
|
175 |
</p>
|
176 |
<?php } elseif ( ! pmpro_license_isValid() ) { ?>
|
177 |
<p class="pmpro_message pmpro_alert">
|
178 |
-
<strong><?php
|
179 |
<?php printf(__( '<a href="%s">View your membership account</a> to verify your license key.', 'paid-memberships-pro' ), 'https://www.paidmembershipspro.com/login/?redirect_to=%2Fmembership-account%2F%3Futm_source%3Dplugin%26utm_medium%3Dpmpro-dashboard%26utm_campaign%3Dmembership-account%26utm_content%3Dverify-license-key' );?>
|
180 |
<?php } elseif ( pmpro_license_isValid() && ! pmpro_license_isValid( $key, pmpro_license_get_premium_types() ) ) { ?>
|
181 |
<p class="pmpro_message pmpro_alert"><?php printf(__('Your <strong>%1$s</strong> key is active. %1$s accounts include access to documentation and free downloads.', 'paid-memberships-pro' ), ucwords( $pmpro_license_check['license'] ) );?></p>
|
@@ -185,7 +185,7 @@ function pmpro_dashboard_welcome_callback() { ?>
|
|
185 |
|
186 |
<?php if ( ! pmpro_license_isValid() || pmpro_license_isValid() && ! pmpro_license_isValid( $key, pmpro_license_get_premium_types() ) ) { ?>
|
187 |
<p><?php esc_html_e( 'An annual support license is recommended for websites running Paid Memberships Pro.', 'paid-memberships-pro' ); ?></p>
|
188 |
-
<p><a href="https://www.paidmembershipspro.com/pricing/?utm_source=plugin&utm_medium=pmpro-dashboard&utm_campaign=pricing&utm_content=upgrade" target="_blank" class="button button-primary button-hero"><?php
|
189 |
<?php } ?>
|
190 |
<hr />
|
191 |
<p><?php echo wp_kses_post( sprintf( __( 'Paid Memberships Pro and our Add Ons are distributed under the <a target="_blank" href="%s">GPLv2 license</a>. This means, among other things, that you may use the software on this site or any other site free of charge.', 'paid-memberships-pro' ), 'http://www.gnu.org/licenses/gpl-2.0.html' ) ); ?></p>
|
@@ -222,16 +222,16 @@ function pmpro_dashboard_report_recent_members_callback() {
|
|
222 |
<table class="wp-list-table widefat fixed striped">
|
223 |
<thead>
|
224 |
<tr>
|
225 |
-
<th><?php
|
226 |
-
<th><?php
|
227 |
-
<th><?php
|
228 |
-
<th><?php
|
229 |
</tr>
|
230 |
</thead>
|
231 |
<tbody>
|
232 |
<?php if ( empty( $theusers ) ) { ?>
|
233 |
<tr>
|
234 |
-
<td colspan="4"><p><?php
|
235 |
</tr>
|
236 |
<?php } else {
|
237 |
foreach ( $theusers as $auser ) {
|
@@ -249,7 +249,7 @@ function pmpro_dashboard_report_recent_members_callback() {
|
|
249 |
?>
|
250 |
</strong>
|
251 |
</td>
|
252 |
-
<td><?php
|
253 |
<td><?php echo date_i18n( get_option( 'date_format' ), strtotime( get_date_from_gmt( $theuser->user_registered ), current_time( 'timestamp' ) ) ); ?></td>
|
254 |
<td>
|
255 |
<?php
|
@@ -268,7 +268,7 @@ function pmpro_dashboard_report_recent_members_callback() {
|
|
268 |
</table>
|
269 |
</span>
|
270 |
<?php if ( ! empty( $theusers ) ) { ?>
|
271 |
-
<p class="text-center"><a class="button button-primary" href="<?php echo admin_url( 'admin.php?page=pmpro-memberslist' ); ?>"><?php
|
272 |
<?php } ?>
|
273 |
<?php
|
274 |
}
|
@@ -289,19 +289,19 @@ function pmpro_dashboard_report_recent_orders_callback() {
|
|
289 |
<table class="wp-list-table widefat fixed striped">
|
290 |
<thead>
|
291 |
<tr class="thead">
|
292 |
-
<th><?php
|
293 |
-
<th><?php
|
294 |
-
<th><?php
|
295 |
-
<th><?php
|
296 |
-
<th><?php
|
297 |
-
<th><?php
|
298 |
</tr>
|
299 |
</thead>
|
300 |
<tbody id="orders" class="orders-list">
|
301 |
<?php
|
302 |
if ( empty( $order_ids ) ) { ?>
|
303 |
<tr>
|
304 |
-
<td colspan="6"><p><?php
|
305 |
</tr>
|
306 |
<?php } else {
|
307 |
foreach ( $order_ids as $order_id ) {
|
@@ -359,7 +359,7 @@ function pmpro_dashboard_report_recent_orders_callback() {
|
|
359 |
</table>
|
360 |
</span>
|
361 |
<?php if ( ! empty( $order_ids ) ) { ?>
|
362 |
-
<p class="text-center"><a class="button button-primary" href="<?php echo admin_url( 'admin.php?page=pmpro-orders' ); ?>"><?php
|
363 |
<?php } ?>
|
364 |
<?php
|
365 |
}
|
@@ -390,7 +390,7 @@ function pmpro_dashboard_news_updates_callback() {
|
|
390 |
|
391 |
<ul>
|
392 |
<?php if ( $maxitems == 0 ) : ?>
|
393 |
-
<li><?php
|
394 |
<?php else : ?>
|
395 |
<?php // Loop through each feed item and display each item as a hyperlink. ?>
|
396 |
<?php foreach ( $rss_items as $item ) : ?>
|
@@ -404,7 +404,7 @@ function pmpro_dashboard_news_updates_callback() {
|
|
404 |
<?php endforeach; ?>
|
405 |
<?php endif; ?>
|
406 |
</ul>
|
407 |
-
<p class="text-center"><a class="button button-primary" href="
|
408 |
<?php
|
409 |
}
|
410 |
|
105 |
<div class="pmpro-dashboard-welcome-columns">
|
106 |
<div class="pmpro-dashboard-welcome-column">
|
107 |
<?php global $pmpro_level_ready, $pmpro_gateway_ready, $pmpro_pages_ready; ?>
|
108 |
+
<h3><?php esc_html_e( 'Initial Setup', 'paid-memberships-pro' ); ?></h3>
|
109 |
<ul>
|
110 |
<?php if ( current_user_can( 'pmpro_membershiplevels' ) ) { ?>
|
111 |
<li>
|
112 |
<?php if ( empty( $pmpro_level_ready ) ) { ?>
|
113 |
+
<a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-membershiplevels&edit=-1' ) );?>"><i class="dashicons dashicons-admin-users"></i> <?php esc_html_e( 'Create a Membership Level', 'paid-memberships-pro' ); ?></a>
|
114 |
<?php } else { ?>
|
115 |
+
<a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-membershiplevels' ) );?>"><i class="dashicons dashicons-admin-users"></i> <?php esc_html_e( 'View Membership Levels', 'paid-memberships-pro' ); ?></a>
|
116 |
<?php } ?>
|
117 |
</li>
|
118 |
<?php } ?>
|
120 |
<?php if ( current_user_can( 'pmpro_pagesettings' ) ) { ?>
|
121 |
<li>
|
122 |
<?php if ( empty( $pmpro_pages_ready ) ) { ?>
|
123 |
+
<a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-pagesettings' ) );?>"><i class="dashicons dashicons-welcome-add-page"></i> <?php esc_html_e( 'Generate Membership Pages', 'paid-memberships-pro' ); ?></a>
|
124 |
<?php } else { ?>
|
125 |
+
<a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-pagesettings' ) );?>"><i class="dashicons dashicons-welcome-add-page"></i> <?php esc_html_e( 'Manage Membership Pages', 'paid-memberships-pro' ); ?>
|
126 |
<?php } ?>
|
127 |
</li>
|
128 |
<?php } ?>
|
130 |
<?php if ( current_user_can( 'pmpro_pagesettings' ) ) { ?>
|
131 |
<li>
|
132 |
<?php if ( empty( $pmpro_gateway_ready ) ) { ?>
|
133 |
+
<a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-paymentsettings' ) );?>"><i class="dashicons dashicons-cart"></i> <?php esc_html_e( 'Configure Payment Settings', 'paid-memberships-pro' ); ?></a>
|
134 |
<?php } else { ?>
|
135 |
+
<a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-paymentsettings' ) );?>"><i class="dashicons dashicons-cart"></i> <?php esc_html_e( 'Configure Payment Settings', 'paid-memberships-pro' ); ?></a>
|
136 |
<?php } ?>
|
137 |
</li>
|
138 |
<?php } ?>
|
139 |
</ul>
|
140 |
+
<h3><?php esc_html_e( 'Other Settings', 'paid-memberships-pro' ); ?></h3>
|
141 |
<ul>
|
142 |
<?php if ( current_user_can( 'pmpro_emailsettings' ) ) { ?>
|
143 |
+
<li><a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-emailsettings' ) );?>"><i class="dashicons dashicons-email"></i> <?php esc_html_e( 'Confirm Email Settings', 'paid-memberships-pro' );?></a></li>
|
144 |
<?php } ?>
|
145 |
|
146 |
<?php if ( current_user_can( 'pmpro_emailtemplates' ) ) { ?>
|
147 |
+
<li><a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-emailtemplates' ) );?>"><i class="dashicons dashicons-editor-spellcheck"></i> <?php esc_html_e( 'Customize Email Templates', 'paid-memberships-pro' );?></a></li>
|
148 |
<?php } ?>
|
149 |
|
150 |
<?php if ( current_user_can( 'pmpro_advancedsettings' ) ) { ?>
|
151 |
+
<li><a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-advancedsettings' ) );?>"><i class="dashicons dashicons-admin-settings"></i> <?php esc_html_e( 'View Advanced Settings', 'paid-memberships-pro' ); ?></a></li>
|
152 |
<?php } ?>
|
153 |
|
154 |
<?php if ( current_user_can( 'pmpro_addons' ) ) { ?>
|
155 |
+
<li><a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-addons' ) );?>"><i class="dashicons dashicons-admin-plugins"></i> <?php esc_html_e( 'Explore Add Ons for Additional Features', 'paid-memberships-pro' ); ?></a></li>
|
156 |
<?php } ?>
|
157 |
</ul>
|
158 |
<hr />
|
159 |
<p class="text-center">
|
160 |
<?php echo esc_html( __( 'For guidance as your begin these steps,', 'paid-memberships-pro' ) ); ?>
|
161 |
+
<a href="https://www.paidmembershipspro.com/documentation/initial-plugin-setup/?utm_source=plugin&utm_medium=pmpro-dashboard&utm_campaign=documentation&utm_content=initial-plugin-setup" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'view the Initial Setup Video and Docs.', 'paid-memberships-pro' ); ?></a>
|
162 |
</p>
|
163 |
</div> <!-- end pmpro-dashboard-welcome-column -->
|
164 |
<div class="pmpro-dashboard-welcome-column">
|
165 |
+
<h3><?php esc_html_e( 'Support License', 'paid-memberships-pro' ); ?></h3>
|
166 |
<?php
|
167 |
// Get saved license.
|
168 |
$key = get_option( 'pmpro_license_key', '' );
|
170 |
?>
|
171 |
<?php if ( ! pmpro_license_isValid() && empty( $key ) ) { ?>
|
172 |
<p class="pmpro_message pmpro_error">
|
173 |
+
<strong><?php esc_html_e( 'No support license key found.', 'paid-memberships-pro' ); ?></strong><br />
|
174 |
<?php printf(__( '<a href="%s">Enter your key here »</a>', 'paid-memberships-pro' ), admin_url( 'admin.php?page=pmpro-license' ) );?>
|
175 |
</p>
|
176 |
<?php } elseif ( ! pmpro_license_isValid() ) { ?>
|
177 |
<p class="pmpro_message pmpro_alert">
|
178 |
+
<strong><?php esc_html_e( 'Your license is invalid or expired.', 'paid-memberships-pro' ); ?></strong><br />
|
179 |
<?php printf(__( '<a href="%s">View your membership account</a> to verify your license key.', 'paid-memberships-pro' ), 'https://www.paidmembershipspro.com/login/?redirect_to=%2Fmembership-account%2F%3Futm_source%3Dplugin%26utm_medium%3Dpmpro-dashboard%26utm_campaign%3Dmembership-account%26utm_content%3Dverify-license-key' );?>
|
180 |
<?php } elseif ( pmpro_license_isValid() && ! pmpro_license_isValid( $key, pmpro_license_get_premium_types() ) ) { ?>
|
181 |
<p class="pmpro_message pmpro_alert"><?php printf(__('Your <strong>%1$s</strong> key is active. %1$s accounts include access to documentation and free downloads.', 'paid-memberships-pro' ), ucwords( $pmpro_license_check['license'] ) );?></p>
|
185 |
|
186 |
<?php if ( ! pmpro_license_isValid() || pmpro_license_isValid() && ! pmpro_license_isValid( $key, pmpro_license_get_premium_types() ) ) { ?>
|
187 |
<p><?php esc_html_e( 'An annual support license is recommended for websites running Paid Memberships Pro.', 'paid-memberships-pro' ); ?></p>
|
188 |
+
<p><a href="https://www.paidmembershipspro.com/pricing/?utm_source=plugin&utm_medium=pmpro-dashboard&utm_campaign=pricing&utm_content=upgrade" target="_blank" rel="noopener noreferrer" class="button button-primary button-hero"><?php esc_html_e( 'View Plans and Pricing', 'paid-memberships-pro' ); ?></a>
|
189 |
<?php } ?>
|
190 |
<hr />
|
191 |
<p><?php echo wp_kses_post( sprintf( __( 'Paid Memberships Pro and our Add Ons are distributed under the <a target="_blank" href="%s">GPLv2 license</a>. This means, among other things, that you may use the software on this site or any other site free of charge.', 'paid-memberships-pro' ), 'http://www.gnu.org/licenses/gpl-2.0.html' ) ); ?></p>
|
222 |
<table class="wp-list-table widefat fixed striped">
|
223 |
<thead>
|
224 |
<tr>
|
225 |
+
<th><?php esc_html_e( 'Username', 'paid-memberships-pro' );?></th>
|
226 |
+
<th><?php esc_html_e( 'Level', 'paid-memberships-pro' );?></th>
|
227 |
+
<th><?php esc_html_e( 'Joined', 'paid-memberships-pro' );?></th>
|
228 |
+
<th><?php esc_html_e( 'Expires', 'paid-memberships-pro' ); ?></th>
|
229 |
</tr>
|
230 |
</thead>
|
231 |
<tbody>
|
232 |
<?php if ( empty( $theusers ) ) { ?>
|
233 |
<tr>
|
234 |
+
<td colspan="4"><p><?php esc_html_e( 'No members found.', 'paid-memberships-pro' ); ?></p></td>
|
235 |
</tr>
|
236 |
<?php } else {
|
237 |
foreach ( $theusers as $auser ) {
|
249 |
?>
|
250 |
</strong>
|
251 |
</td>
|
252 |
+
<td><?php echo esc_html( $auser->membership ); ?></td>
|
253 |
<td><?php echo date_i18n( get_option( 'date_format' ), strtotime( get_date_from_gmt( $theuser->user_registered ), current_time( 'timestamp' ) ) ); ?></td>
|
254 |
<td>
|
255 |
<?php
|
268 |
</table>
|
269 |
</span>
|
270 |
<?php if ( ! empty( $theusers ) ) { ?>
|
271 |
+
<p class="text-center"><a class="button button-primary" href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-memberslist' ) ); ?>"><?php esc_html_e( 'View All Members ', 'paid-memberships-pro' ); ?></a></p>
|
272 |
<?php } ?>
|
273 |
<?php
|
274 |
}
|
289 |
<table class="wp-list-table widefat fixed striped">
|
290 |
<thead>
|
291 |
<tr class="thead">
|
292 |
+
<th><?php esc_html_e( 'Code', 'paid-memberships-pro' ); ?></th>
|
293 |
+
<th><?php esc_html_e( 'User', 'paid-memberships-pro' ); ?></th>
|
294 |
+
<th><?php esc_html_e( 'Level', 'paid-memberships-pro' ); ?></th>
|
295 |
+
<th><?php esc_html_e( 'Total', 'paid-memberships-pro' ); ?></th>
|
296 |
+
<th><?php esc_html_e( 'Status', 'paid-memberships-pro' ); ?></th>
|
297 |
+
<th><?php esc_html_e( 'Date', 'paid-memberships-pro' ); ?></th>
|
298 |
</tr>
|
299 |
</thead>
|
300 |
<tbody id="orders" class="orders-list">
|
301 |
<?php
|
302 |
if ( empty( $order_ids ) ) { ?>
|
303 |
<tr>
|
304 |
+
<td colspan="6"><p><?php esc_html_e( 'No orders found.', 'paid-memberships-pro' ); ?></p></td>
|
305 |
</tr>
|
306 |
<?php } else {
|
307 |
foreach ( $order_ids as $order_id ) {
|
359 |
</table>
|
360 |
</span>
|
361 |
<?php if ( ! empty( $order_ids ) ) { ?>
|
362 |
+
<p class="text-center"><a class="button button-primary" href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-orders' ) ); ?>"><?php esc_html_e( 'View All Orders ', 'paid-memberships-pro' ); ?></a></p>
|
363 |
<?php } ?>
|
364 |
<?php
|
365 |
}
|
390 |
|
391 |
<ul>
|
392 |
<?php if ( $maxitems == 0 ) : ?>
|
393 |
+
<li><?php esc_html_e( 'No news found.', 'paid-memberships-pro' ); ?></li>
|
394 |
<?php else : ?>
|
395 |
<?php // Loop through each feed item and display each item as a hyperlink. ?>
|
396 |
<?php foreach ( $rss_items as $item ) : ?>
|
404 |
<?php endforeach; ?>
|
405 |
<?php endif; ?>
|
406 |
</ul>
|
407 |
+
<p class="text-center"><a class="button button-primary" href="https://www.paidmembershipspro.com/blog/?utm_source=plugin&utm_medium=pmpro-dashboard&utm_campaign=blog&utm_content=news-updates-metabox"><?php esc_html_e( 'View More', 'paid-memberships-pro' ); ?></a></p>
|
408 |
<?php
|
409 |
}
|
410 |
|
adminpages/discountcodes.php
CHANGED
@@ -357,7 +357,7 @@
|
|
357 |
}
|
358 |
|
359 |
if( ! empty( $pmpro_msg ) && ! empty( $expiration_warning_flag ) ) {
|
360 |
-
$pmpro_msg .= ' <strong>' . sprintf( __( 'WARNING: A level was set with both a recurring billing amount and an expiration date. You only need to set one of these unless you really want this membership to expire after a specific time period. For more information, <a target="_blank" href="%s">see our post here</a>.', 'paid-memberships-pro' ), 'https://www.paidmembershipspro.com/important-notes-on-recurring-billing-and-expiration-dates-for-membership-levels/?utm_source=plugin&utm_medium=pmpro-discountcodes&utm_campaign=blog&utm_content=important-notes-on-recurring-billing-and-expiration-dates-for-membership-levels' ) . '</strong>';
|
361 |
|
362 |
if( $pmpro_msgt == 'success' ) {
|
363 |
$pmpro_msgt = 'warning';
|
@@ -443,12 +443,12 @@
|
|
443 |
<table class="form-table">
|
444 |
<tbody>
|
445 |
<tr>
|
446 |
-
<th scope="row" valign="top"><label><?php
|
447 |
<td><p class="description"><?php if(!empty($code->id)) echo esc_html( $code->id ); else echo __("This will be generated when you save.", 'paid-memberships-pro' );?></p></td>
|
448 |
</tr>
|
449 |
|
450 |
<tr>
|
451 |
-
<th scope="row" valign="top"><label for="code"><?php
|
452 |
<td><input name="code" type="text" size="20" value="<?php echo esc_attr( $code->code ); ?>" /></td>
|
453 |
</tr>
|
454 |
|
@@ -486,7 +486,7 @@
|
|
486 |
?>
|
487 |
|
488 |
<tr>
|
489 |
-
<th scope="row" valign="top"><label for="starts"><?php
|
490 |
<td>
|
491 |
<select name="starts_month">
|
492 |
<?php
|
@@ -504,7 +504,7 @@
|
|
504 |
</tr>
|
505 |
|
506 |
<tr>
|
507 |
-
<th scope="row" valign="top"><label for="expires"><?php
|
508 |
<td>
|
509 |
<select name="expires_month">
|
510 |
<?php
|
@@ -522,10 +522,10 @@
|
|
522 |
</tr>
|
523 |
|
524 |
<tr>
|
525 |
-
<th scope="row" valign="top"><label for="uses"><?php
|
526 |
<td>
|
527 |
<input name="uses" type="text" size="10" value="<?php if ( ! empty( $code->uses ) ) echo esc_attr( $code->uses ); ?>" />
|
528 |
-
<p class="description"><?php
|
529 |
</td>
|
530 |
</tr>
|
531 |
|
@@ -534,7 +534,7 @@
|
|
534 |
|
535 |
<?php do_action("pmpro_discount_code_after_settings", $edit); ?>
|
536 |
|
537 |
-
<h3><?php
|
538 |
|
539 |
<div class="pmpro_discount_levels">
|
540 |
<?php
|
@@ -573,7 +573,7 @@
|
|
573 |
<table class="form-table">
|
574 |
<tbody>
|
575 |
<tr>
|
576 |
-
<th scope="row" valign="top"><label for="initial_payment"><?php
|
577 |
<td>
|
578 |
<?php
|
579 |
if(pmpro_getCurrencyPosition() == "left")
|
@@ -584,17 +584,17 @@
|
|
584 |
if(pmpro_getCurrencyPosition() == "right")
|
585 |
echo $pmpro_currency_symbol;
|
586 |
?>
|
587 |
-
<p class="description"><?php
|
588 |
</td>
|
589 |
</tr>
|
590 |
|
591 |
<tr>
|
592 |
-
<th scope="row" valign="top"><label><?php
|
593 |
-
<td><input class="recurring_checkbox" id="recurring_<?php echo esc_attr( $level->id );?>" name="recurring[]" type="checkbox" value="<?php echo esc_attr( $level->id ); ?>" <?php if(pmpro_isLevelRecurring($level)) { echo "checked='checked'"; } ?> onclick="if(jQuery(this).prop('checked')) { jQuery(this).parent().parent().siblings('.recurring_info').show(); if(!jQuery('#custom_trial_<?php echo esc_attr( $level->id ); ?>').is(':checked')) jQuery(this).parent().parent().siblings('.trial_info').hide();} else jQuery(this).parent().parent().siblings('.recurring_info').hide();" /> <label for="recurring_<?php echo esc_attr( $level->id ); ?>"><?php
|
594 |
</tr>
|
595 |
|
596 |
<tr class="recurring_info" <?php if(!pmpro_isLevelRecurring($level)) {?>style="display: none;"<?php } ?>>
|
597 |
-
<th scope="row" valign="top"><label for="billing_amount"><?php
|
598 |
<td>
|
599 |
<?php
|
600 |
if(pmpro_getCurrencyPosition() == "left")
|
@@ -617,32 +617,33 @@
|
|
617 |
}
|
618 |
?>
|
619 |
</select>
|
620 |
-
<p class="description"><?php
|
621 |
<?php if($gateway == "braintree") { ?>
|
622 |
-
<strong <?php if(!empty($pmpro_braintree_error)) { ?>class="pmpro_red"<?php } ?>><?php
|
623 |
<?php } elseif($gateway == "stripe") { ?>
|
624 |
-
<p class="description"><strong <?php if(!empty($pmpro_stripe_error)) { ?>class="pmpro_red"<?php } ?>><?php
|
625 |
<?php }?>
|
626 |
</td>
|
627 |
</tr>
|
628 |
|
629 |
<tr class="recurring_info" <?php if(!pmpro_isLevelRecurring($level)) {?>style="display: none;"<?php } ?>>
|
630 |
-
<th scope="row" valign="top"><label for="billing_limit"><?php
|
631 |
<td>
|
632 |
<input name="billing_limit[]" type="text" size="20" value="<?php echo esc_attr( $level->billing_limit ); ?>" />
|
633 |
<p class="description">
|
634 |
<?php _e('The <strong>total</strong> number of recurring billing cycles for this level, including the trial period (if applicable) but not including the initial payment. Set to zero if membership is indefinite.', 'paid-memberships-pro' );?>
|
635 |
<?php if ( ( $gateway == "stripe" ) && ! function_exists( 'pmprosbl_plugin_row_meta' ) ) { ?>
|
636 |
-
<br /><strong <?php if(!empty($pmpro_stripe_error)) { ?>class="pmpro_red"<?php } ?>><?php
|
637 |
<?php if ( ! function_exists( 'pmprosd_pmpro_membership_level_after_other_settings' ) ) {
|
638 |
$allowed_sbl_html = array (
|
639 |
'a' => array (
|
640 |
'href' => array(),
|
641 |
'target' => array(),
|
642 |
'title' => array(),
|
|
|
643 |
),
|
644 |
);
|
645 |
-
echo '<br />' . sprintf( wp_kses( __( 'Optional: Allow billing limits with Stripe using the <a href="%s" title="Paid Memberships Pro - Stripe Billing Limits Add On" target="_blank">Stripe Billing Limits Add On</a>.', 'paid-memberships-pro' ), $allowed_sbl_html ), 'https://www.paidmembershipspro.com/add-ons/pmpro-stripe-billing-limits/?utm_source=plugin&utm_medium=pmpro-membershiplevels&utm_campaign=add-ons&utm_content=stripe-billing-limits' ) . '</em></td></tr>';
|
646 |
} ?>
|
647 |
<?php } ?>
|
648 |
</p>
|
@@ -650,17 +651,17 @@
|
|
650 |
</tr>
|
651 |
|
652 |
<tr class="recurring_info" <?php if (!pmpro_isLevelRecurring($level)) echo "style='display:none;'";?>>
|
653 |
-
<th scope="row" valign="top"><label><?php
|
654 |
<td>
|
655 |
-
<input id="custom_trial_<?php echo esc_attr( $level->id ); ?>" id="custom_trial_<?php echo esc_attr( $level->id ); ?>" name="custom_trial[]" type="checkbox" value="<?php echo esc_attr( $level->id ); ?>" <?php if ( pmpro_isLevelTrial($level) ) { echo "checked='checked'"; } ?> onclick="if(jQuery(this).prop('checked')) jQuery(this).parent().parent().siblings('.trial_info').show(); else jQuery(this).parent().parent().siblings('.trial_info').hide();" /> <label for="custom_trial_<?php echo esc_attr( $level->id );?>"><?php
|
656 |
<?php if($gateway == "twocheckout") { ?>
|
657 |
-
<p class="description"><strong <?php if(!empty($pmpro_twocheckout_error)) { ?>class="pmpro_red"<?php } ?>><?php
|
658 |
<?php } ?>
|
659 |
</td>
|
660 |
</tr>
|
661 |
|
662 |
<tr class="trial_info recurring_info" <?php if (!pmpro_isLevelTrial($level)) echo "style='display:none;'";?>>
|
663 |
-
<th scope="row" valign="top"><label for="trial_amount"><?php
|
664 |
<td>
|
665 |
<?php
|
666 |
if(pmpro_getCurrencyPosition() == "left")
|
@@ -675,22 +676,22 @@
|
|
675 |
<input name="trial_limit[]" type="text" size="10" value="<?php echo esc_attr( $level->trial_limit ); ?>" />
|
676 |
<?php _e('subscription payments', 'paid-memberships-pro' );?>.
|
677 |
<?php if($gateway == "stripe") { ?>
|
678 |
-
<p class="description"><strong <?php if(!empty($pmpro_stripe_error)) { ?>class="pmpro_red"<?php } ?>><?php
|
679 |
<?php } elseif($gateway == "braintree") { ?>
|
680 |
-
<p class="description"><strong <?php if(!empty($pmpro_braintree_error)) { ?>class="pmpro_red"<?php } ?>><?php
|
681 |
<?php } elseif($gateway == "payflowpro") { ?>
|
682 |
-
<p class="description"><strong <?php if(!empty($pmpro_payflow_error)) { ?>class="pmpro_red"<?php } ?>><?php
|
683 |
<?php } ?>
|
684 |
</td>
|
685 |
</tr>
|
686 |
|
687 |
<tr>
|
688 |
-
<th scope="row" valign="top"><label><?php
|
689 |
-
<td><input id="expiration_<?php echo esc_attr( $level->id ); ?>" name="expiration[]" type="checkbox" value="<?php echo esc_attr( $level->id ); ?>" <?php if(pmpro_isLevelExpiring($level)) { echo "checked='checked'"; } ?> onclick="if(jQuery(this).is(':checked')) { jQuery(this).parent().parent().siblings('.expiration_info').show(); } else { jQuery(this).parent().parent().siblings('.expiration_info').hide();}" /> <label for="expiration_<?php echo esc_attr( $level->id ); ?>"><?php
|
690 |
</tr>
|
691 |
|
692 |
<tr class="expiration_info" <?php if(!pmpro_isLevelExpiring($level)) {?>style="display: none;"<?php } ?>>
|
693 |
-
<th scope="row" valign="top"><label for="billing_amount"><?php
|
694 |
<td>
|
695 |
<input id="expiration_number" name="expiration_number[]" type="text" size="10" value="<?php echo esc_attr( $level->expiration_number ); ?>" />
|
696 |
<select id="expiration_period" name="expiration_period[]">
|
@@ -706,7 +707,7 @@
|
|
706 |
?>
|
707 |
|
708 |
</select>
|
709 |
-
<p class="description"><?php
|
710 |
</td>
|
711 |
</tr>
|
712 |
</tbody>
|
@@ -725,18 +726,16 @@
|
|
725 |
</div>
|
726 |
|
727 |
<p class="submit topborder">
|
728 |
-
<input name="save" type="submit" class="button button-primary" value="Save Code" />
|
729 |
-
<input name="cancel" type="button" class="button" value="Cancel" onclick="location.href='<?php echo admin_url( '/admin.php?page=pmpro-discountcodes')?>';" />
|
730 |
</p>
|
731 |
</form>
|
732 |
</div>
|
733 |
|
734 |
<?php } else { ?>
|
735 |
-
|
736 |
<h1 class="wp-heading-inline"><?php esc_html_e( 'Memberships Discount Codes', 'paid-memberships-pro' ); ?></h1>
|
737 |
<a href="admin.php?page=pmpro-discountcodes&edit=-1" class="page-title-action"><?php esc_html_e( 'Add New Discount Code', 'paid-memberships-pro' ); ?></a>
|
738 |
-
<hr class="wp-header-end">
|
739 |
-
|
740 |
<?php
|
741 |
$sqlQuery = "SELECT SQL_CALC_FOUND_ROWS *, UNIX_TIMESTAMP(CONVERT_TZ(starts, '+00:00', @@global.time_zone)) as starts, UNIX_TIMESTAMP(CONVERT_TZ(expires, '+00:00', @@global.time_zone)) as expires FROM $wpdb->pmpro_discount_codes ";
|
742 |
if( ! empty( $s ) ) {
|
@@ -753,10 +752,10 @@
|
|
753 |
|
754 |
if( empty( $s ) && empty( $codes ) ) { ?>
|
755 |
<div class="pmpro-new-install">
|
756 |
-
<h2><?php
|
757 |
-
<h4><?php
|
758 |
-
<a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-discountcodes&edit=-1' ) ) ; ?>" class="button-primary"><?php
|
759 |
-
<a href="<?php echo esc_url( 'https://www.paidmembershipspro.com/documentation/discount-codes/?utm_source=plugin&utm_medium=pmpro-discountcodes&utm_campaign=documentation&utm_content=discount-codes' ); ?>" target="_blank" class="button"><?php
|
760 |
</div> <!-- end pmpro-new-install -->
|
761 |
<?php } else { ?>
|
762 |
|
@@ -764,38 +763,40 @@
|
|
764 |
<div id="message" class="<?php if($pmpro_msgt == "success") echo "updated fade"; else echo "error"; ?>"><p><?php echo $pmpro_msg?></p></div>
|
765 |
<?php } ?>
|
766 |
|
767 |
-
<?php if ( ! empty( $codes ) ) { ?>
|
768 |
-
<p class="subsubsub"><?php printf( __( "%d discount codes found.", 'paid-memberships-pro' ), $totalrows ); ?></span></p>
|
769 |
-
<?php } ?>
|
770 |
-
|
771 |
<form id="posts-filter" method="get" action="">
|
772 |
<p class="search-box">
|
773 |
-
<label class="screen-reader-text" for="post-search-input"><?php
|
774 |
<input type="hidden" name="page" value="pmpro-discountcodes" />
|
775 |
<input id="post-search-input" type="text" value="<?php echo esc_attr( wp_unslash( $s ) ); ?>" name="s" size="30" />
|
776 |
<input class="button" type="submit" value="<?php esc_attr_e('Search', 'paid-memberships-pro' );?>" id="search-submit "/>
|
777 |
</p>
|
778 |
</form>
|
779 |
|
780 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
781 |
|
782 |
-
<table class="widefat">
|
783 |
<thead>
|
784 |
<tr>
|
785 |
-
<th><?php
|
786 |
-
<th><?php
|
787 |
-
<th><?php
|
788 |
-
<th><?php
|
789 |
-
<th><?php
|
790 |
-
<th><?php _e('Levels', 'paid-memberships-pro' );?></th>
|
791 |
<?php do_action("pmpro_discountcodes_extra_cols_header", $codes);?>
|
792 |
</tr>
|
793 |
</thead>
|
794 |
<tbody>
|
795 |
<?php if ( !empty( $s ) && empty( $codes ) ) { ?>
|
796 |
<tr>
|
797 |
-
<td colspan="
|
798 |
-
<?php
|
799 |
</td>
|
800 |
</tr>
|
801 |
<?php } ?>
|
@@ -804,9 +805,8 @@
|
|
804 |
$uses = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->pmpro_discount_codes_uses WHERE code_id = %d", $code->id ) );
|
805 |
?>
|
806 |
<tr<?php if ( ! pmpro_check_discount_code_for_gateway_compatibility( $code->id ) ) { ?> class="pmpro_error"<?php } ?>>
|
807 |
-
<td
|
808 |
-
|
809 |
-
<a title="<?php echo esc_attr( sprintf( __( 'Edit Code: %s', 'paid-memberships-pro' ), $code->code ) ); ?>" href="<?php echo esc_url( add_query_arg( array( 'page' => 'pmpro-discountcodes', 'edit' => $code->id ), admin_url('admin.php' ) ) ); ?>"><?php echo $code->code?></a>
|
810 |
<div class="row-actions">
|
811 |
<?php
|
812 |
$delete_text = esc_html(
|
@@ -830,6 +830,11 @@
|
|
830 |
);
|
831 |
|
832 |
$actions = [
|
|
|
|
|
|
|
|
|
|
|
833 |
'edit' => sprintf(
|
834 |
'<a title="%1$s" href="%2$s">%3$s</a>',
|
835 |
esc_attr__( 'Edit', 'paid-memberships-pro' ),
|
@@ -911,13 +916,13 @@
|
|
911 |
?>
|
912 |
</div>
|
913 |
</td>
|
914 |
-
<td>
|
915 |
<?php echo date_i18n(get_option('date_format'), $code->starts)?>
|
916 |
</td>
|
917 |
-
<td>
|
918 |
<?php echo date_i18n(get_option('date_format'), $code->expires)?>
|
919 |
</td>
|
920 |
-
<td>
|
921 |
<?php
|
922 |
if($code->uses > 0)
|
923 |
echo "<strong>" . (int)$uses . "</strong>/" . $code->uses;
|
@@ -925,7 +930,7 @@
|
|
925 |
echo "<strong>" . (int)$uses . "</strong>/unlimited";
|
926 |
?>
|
927 |
</td>
|
928 |
-
<td>
|
929 |
<?php
|
930 |
$sqlQuery = $wpdb->prepare("
|
931 |
SELECT l.id, l.name
|
@@ -960,11 +965,17 @@
|
|
960 |
?>
|
961 |
</tbody>
|
962 |
</table>
|
963 |
-
|
964 |
-
|
965 |
-
|
966 |
-
|
967 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
968 |
|
969 |
<?php } ?>
|
970 |
|
357 |
}
|
358 |
|
359 |
if( ! empty( $pmpro_msg ) && ! empty( $expiration_warning_flag ) ) {
|
360 |
+
$pmpro_msg .= ' <strong>' . sprintf( __( 'WARNING: A level was set with both a recurring billing amount and an expiration date. You only need to set one of these unless you really want this membership to expire after a specific time period. For more information, <a target="_blank" rel="nofollow noopener" href="%s">see our post here</a>.', 'paid-memberships-pro' ), 'https://www.paidmembershipspro.com/important-notes-on-recurring-billing-and-expiration-dates-for-membership-levels/?utm_source=plugin&utm_medium=pmpro-discountcodes&utm_campaign=blog&utm_content=important-notes-on-recurring-billing-and-expiration-dates-for-membership-levels' ) . '</strong>';
|
361 |
|
362 |
if( $pmpro_msgt == 'success' ) {
|
363 |
$pmpro_msgt = 'warning';
|
443 |
<table class="form-table">
|
444 |
<tbody>
|
445 |
<tr>
|
446 |
+
<th scope="row" valign="top"><label><?php esc_html_e('ID', 'paid-memberships-pro' );?>:</label></th>
|
447 |
<td><p class="description"><?php if(!empty($code->id)) echo esc_html( $code->id ); else echo __("This will be generated when you save.", 'paid-memberships-pro' );?></p></td>
|
448 |
</tr>
|
449 |
|
450 |
<tr>
|
451 |
+
<th scope="row" valign="top"><label for="code"><?php esc_html_e('Code', 'paid-memberships-pro' );?>:</label></th>
|
452 |
<td><input name="code" type="text" size="20" value="<?php echo esc_attr( $code->code ); ?>" /></td>
|
453 |
</tr>
|
454 |
|
486 |
?>
|
487 |
|
488 |
<tr>
|
489 |
+
<th scope="row" valign="top"><label for="starts"><?php esc_html_e('Start Date', 'paid-memberships-pro' );?>:</label></th>
|
490 |
<td>
|
491 |
<select name="starts_month">
|
492 |
<?php
|
504 |
</tr>
|
505 |
|
506 |
<tr>
|
507 |
+
<th scope="row" valign="top"><label for="expires"><?php esc_html_e('Expiration Date', 'paid-memberships-pro' );?>:</label></th>
|
508 |
<td>
|
509 |
<select name="expires_month">
|
510 |
<?php
|
522 |
</tr>
|
523 |
|
524 |
<tr>
|
525 |
+
<th scope="row" valign="top"><label for="uses"><?php esc_html_e('Uses', 'paid-memberships-pro' );?>:</label></th>
|
526 |
<td>
|
527 |
<input name="uses" type="text" size="10" value="<?php if ( ! empty( $code->uses ) ) echo esc_attr( $code->uses ); ?>" />
|
528 |
+
<p class="description"><?php esc_html_e('Leave blank for unlimited uses.', 'paid-memberships-pro' );?></p>
|
529 |
</td>
|
530 |
</tr>
|
531 |
|
534 |
|
535 |
<?php do_action("pmpro_discount_code_after_settings", $edit); ?>
|
536 |
|
537 |
+
<h3><?php esc_html_e('Which Levels Will This Code Apply To?', 'paid-memberships-pro' ); ?></h3>
|
538 |
|
539 |
<div class="pmpro_discount_levels">
|
540 |
<?php
|
573 |
<table class="form-table">
|
574 |
<tbody>
|
575 |
<tr>
|
576 |
+
<th scope="row" valign="top"><label for="initial_payment"><?php esc_html_e('Initial Payment', 'paid-memberships-pro' );?>:</label></th>
|
577 |
<td>
|
578 |
<?php
|
579 |
if(pmpro_getCurrencyPosition() == "left")
|
584 |
if(pmpro_getCurrencyPosition() == "right")
|
585 |
echo $pmpro_currency_symbol;
|
586 |
?>
|
587 |
+
<p class="description"><?php esc_html_e('The initial amount collected at registration.', 'paid-memberships-pro' );?></p>
|
588 |
</td>
|
589 |
</tr>
|
590 |
|
591 |
<tr>
|
592 |
+
<th scope="row" valign="top"><label><?php esc_html_e('Recurring Subscription', 'paid-memberships-pro' );?>:</label></th>
|
593 |
+
<td><input class="recurring_checkbox" id="recurring_<?php echo esc_attr( $level->id );?>" name="recurring[]" type="checkbox" value="<?php echo esc_attr( $level->id ); ?>" <?php if(pmpro_isLevelRecurring($level)) { echo "checked='checked'"; } ?> onclick="if(jQuery(this).prop('checked')) { jQuery(this).parent().parent().siblings('.recurring_info').show(); if(!jQuery('#custom_trial_<?php echo esc_attr( $level->id ); ?>').is(':checked')) jQuery(this).parent().parent().siblings('.trial_info').hide();} else jQuery(this).parent().parent().siblings('.recurring_info').hide();" /> <label for="recurring_<?php echo esc_attr( $level->id ); ?>"><?php esc_html_e('Check if this level has a recurring subscription payment.', 'paid-memberships-pro' );?></label></td>
|
594 |
</tr>
|
595 |
|
596 |
<tr class="recurring_info" <?php if(!pmpro_isLevelRecurring($level)) {?>style="display: none;"<?php } ?>>
|
597 |
+
<th scope="row" valign="top"><label for="billing_amount"><?php esc_html_e('Billing Amount', 'paid-memberships-pro' );?>:</label></th>
|
598 |
<td>
|
599 |
<?php
|
600 |
if(pmpro_getCurrencyPosition() == "left")
|
617 |
}
|
618 |
?>
|
619 |
</select>
|
620 |
+
<p class="description"><?php esc_html_e('The amount to be billed one cycle after the initial payment.', 'paid-memberships-pro' );?></p>
|
621 |
<?php if($gateway == "braintree") { ?>
|
622 |
+
<strong <?php if(!empty($pmpro_braintree_error)) { ?>class="pmpro_red"<?php } ?>><?php esc_html_e('Braintree integration currently only supports billing periods of "Month" or "Year".', 'paid-memberships-pro' );?></strong>
|
623 |
<?php } elseif($gateway == "stripe") { ?>
|
624 |
+
<p class="description"><strong <?php if(!empty($pmpro_stripe_error)) { ?>class="pmpro_red"<?php } ?>><?php esc_html_e('Stripe integration does not allow billing periods longer than 1 year.', 'paid-memberships-pro' );?></strong></p>
|
625 |
<?php }?>
|
626 |
</td>
|
627 |
</tr>
|
628 |
|
629 |
<tr class="recurring_info" <?php if(!pmpro_isLevelRecurring($level)) {?>style="display: none;"<?php } ?>>
|
630 |
+
<th scope="row" valign="top"><label for="billing_limit"><?php esc_html_e('Billing Cycle Limit', 'paid-memberships-pro' );?>:</label></th>
|
631 |
<td>
|
632 |
<input name="billing_limit[]" type="text" size="20" value="<?php echo esc_attr( $level->billing_limit ); ?>" />
|
633 |
<p class="description">
|
634 |
<?php _e('The <strong>total</strong> number of recurring billing cycles for this level, including the trial period (if applicable) but not including the initial payment. Set to zero if membership is indefinite.', 'paid-memberships-pro' );?>
|
635 |
<?php if ( ( $gateway == "stripe" ) && ! function_exists( 'pmprosbl_plugin_row_meta' ) ) { ?>
|
636 |
+
<br /><strong <?php if(!empty($pmpro_stripe_error)) { ?>class="pmpro_red"<?php } ?>><?php esc_html_e('Stripe integration currently does not support billing limits. You can still set an expiration date below.', 'paid-memberships-pro' );?></strong>
|
637 |
<?php if ( ! function_exists( 'pmprosd_pmpro_membership_level_after_other_settings' ) ) {
|
638 |
$allowed_sbl_html = array (
|
639 |
'a' => array (
|
640 |
'href' => array(),
|
641 |
'target' => array(),
|
642 |
'title' => array(),
|
643 |
+
'rel' => array(),
|
644 |
),
|
645 |
);
|
646 |
+
echo '<br />' . sprintf( wp_kses( __( 'Optional: Allow billing limits with Stripe using the <a href="%s" title="Paid Memberships Pro - Stripe Billing Limits Add On" target="_blank" rel="nofollow nopopener">Stripe Billing Limits Add On</a>.', 'paid-memberships-pro' ), $allowed_sbl_html ), 'https://www.paidmembershipspro.com/add-ons/pmpro-stripe-billing-limits/?utm_source=plugin&utm_medium=pmpro-membershiplevels&utm_campaign=add-ons&utm_content=stripe-billing-limits' ) . '</em></td></tr>';
|
647 |
} ?>
|
648 |
<?php } ?>
|
649 |
</p>
|
651 |
</tr>
|
652 |
|
653 |
<tr class="recurring_info" <?php if (!pmpro_isLevelRecurring($level)) echo "style='display:none;'";?>>
|
654 |
+
<th scope="row" valign="top"><label><?php esc_html_e('Custom Trial', 'paid-memberships-pro' );?>:</label></th>
|
655 |
<td>
|
656 |
+
<input id="custom_trial_<?php echo esc_attr( $level->id ); ?>" id="custom_trial_<?php echo esc_attr( $level->id ); ?>" name="custom_trial[]" type="checkbox" value="<?php echo esc_attr( $level->id ); ?>" <?php if ( pmpro_isLevelTrial($level) ) { echo "checked='checked'"; } ?> onclick="if(jQuery(this).prop('checked')) jQuery(this).parent().parent().siblings('.trial_info').show(); else jQuery(this).parent().parent().siblings('.trial_info').hide();" /> <label for="custom_trial_<?php echo esc_attr( $level->id );?>"><?php esc_html_e('Check to add a custom trial period.', 'paid-memberships-pro' );?></label>
|
657 |
<?php if($gateway == "twocheckout") { ?>
|
658 |
+
<p class="description"><strong <?php if(!empty($pmpro_twocheckout_error)) { ?>class="pmpro_red"<?php } ?>><?php esc_html_e('2Checkout integration does not support custom trials. You can do one period trials by setting an initial payment different from the billing amount.', 'paid-memberships-pro' );?></strong></p>
|
659 |
<?php } ?>
|
660 |
</td>
|
661 |
</tr>
|
662 |
|
663 |
<tr class="trial_info recurring_info" <?php if (!pmpro_isLevelTrial($level)) echo "style='display:none;'";?>>
|
664 |
+
<th scope="row" valign="top"><label for="trial_amount"><?php esc_html_e('Trial Billing Amount', 'paid-memberships-pro' );?>:</label></th>
|
665 |
<td>
|
666 |
<?php
|
667 |
if(pmpro_getCurrencyPosition() == "left")
|
676 |
<input name="trial_limit[]" type="text" size="10" value="<?php echo esc_attr( $level->trial_limit ); ?>" />
|
677 |
<?php _e('subscription payments', 'paid-memberships-pro' );?>.
|
678 |
<?php if($gateway == "stripe") { ?>
|
679 |
+
<p class="description"><strong <?php if(!empty($pmpro_stripe_error)) { ?>class="pmpro_red"<?php } ?>><?php esc_html_e('Stripe integration currently does not support trial amounts greater than $0.', 'paid-memberships-pro' );?></strong></p>
|
680 |
<?php } elseif($gateway == "braintree") { ?>
|
681 |
+
<p class="description"><strong <?php if(!empty($pmpro_braintree_error)) { ?>class="pmpro_red"<?php } ?>><?php esc_html_e('Braintree integration currently does not support trial amounts greater than $0.', 'paid-memberships-pro' );?></strong></p>
|
682 |
<?php } elseif($gateway == "payflowpro") { ?>
|
683 |
+
<p class="description"><strong <?php if(!empty($pmpro_payflow_error)) { ?>class="pmpro_red"<?php } ?>><?php esc_html_e('Payflow integration currently does not support trial amounts greater than $0.', 'paid-memberships-pro' );?></strong></p>
|
684 |
<?php } ?>
|
685 |
</td>
|
686 |
</tr>
|
687 |
|
688 |
<tr>
|
689 |
+
<th scope="row" valign="top"><label><?php esc_html_e('Membership Expiration', 'paid-memberships-pro' );?>:</label></th>
|
690 |
+
<td><input id="expiration_<?php echo esc_attr( $level->id ); ?>" name="expiration[]" type="checkbox" value="<?php echo esc_attr( $level->id ); ?>" <?php if(pmpro_isLevelExpiring($level)) { echo "checked='checked'"; } ?> onclick="if(jQuery(this).is(':checked')) { jQuery(this).parent().parent().siblings('.expiration_info').show(); } else { jQuery(this).parent().parent().siblings('.expiration_info').hide();}" /> <label for="expiration_<?php echo esc_attr( $level->id ); ?>"><?php esc_html_e('Check this to set when membership access expires.', 'paid-memberships-pro' );?></label></td>
|
691 |
</tr>
|
692 |
|
693 |
<tr class="expiration_info" <?php if(!pmpro_isLevelExpiring($level)) {?>style="display: none;"<?php } ?>>
|
694 |
+
<th scope="row" valign="top"><label for="billing_amount"><?php esc_html_e('Expires In', 'paid-memberships-pro' );?>:</label></th>
|
695 |
<td>
|
696 |
<input id="expiration_number" name="expiration_number[]" type="text" size="10" value="<?php echo esc_attr( $level->expiration_number ); ?>" />
|
697 |
<select id="expiration_period" name="expiration_period[]">
|
707 |
?>
|
708 |
|
709 |
</select>
|
710 |
+
<p class="description"><?php esc_html_e('Set the duration of membership access. Note that the any future payments (recurring subscription, if any) will be cancelled when the membership expires.', 'paid-memberships-pro' );?></p>
|
711 |
</td>
|
712 |
</tr>
|
713 |
</tbody>
|
726 |
</div>
|
727 |
|
728 |
<p class="submit topborder">
|
729 |
+
<input name="save" type="submit" class="button button-primary" value="<?php esc_attr_e( 'Save Code', 'paid-memberships-pro' ) ?>" />
|
730 |
+
<input name="cancel" type="button" class="button" value="<?php esc_attr_e( 'Cancel', 'paid-memberships-pro' ) ?>" onclick="location.href='<?php echo esc_url( admin_url( '/admin.php?page=pmpro-discountcodes') ); ?>';" />
|
731 |
</p>
|
732 |
</form>
|
733 |
</div>
|
734 |
|
735 |
<?php } else { ?>
|
736 |
+
<hr class="wp-header-end">
|
737 |
<h1 class="wp-heading-inline"><?php esc_html_e( 'Memberships Discount Codes', 'paid-memberships-pro' ); ?></h1>
|
738 |
<a href="admin.php?page=pmpro-discountcodes&edit=-1" class="page-title-action"><?php esc_html_e( 'Add New Discount Code', 'paid-memberships-pro' ); ?></a>
|
|
|
|
|
739 |
<?php
|
740 |
$sqlQuery = "SELECT SQL_CALC_FOUND_ROWS *, UNIX_TIMESTAMP(CONVERT_TZ(starts, '+00:00', @@global.time_zone)) as starts, UNIX_TIMESTAMP(CONVERT_TZ(expires, '+00:00', @@global.time_zone)) as expires FROM $wpdb->pmpro_discount_codes ";
|
741 |
if( ! empty( $s ) ) {
|
752 |
|
753 |
if( empty( $s ) && empty( $codes ) ) { ?>
|
754 |
<div class="pmpro-new-install">
|
755 |
+
<h2><?php esc_html_e( 'No Discount Codes Found', 'paid-memberships-pro' ); ?></h2>
|
756 |
+
<h4><?php esc_html_e( 'Discount codes allow you to override your membership level\'s default pricing.', 'paid-memberships-pro' ); ?></h4>
|
757 |
+
<a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-discountcodes&edit=-1' ) ) ; ?>" class="button-primary"><?php esc_html_e( 'Create a Discount Code', 'paid-memberships-pro' );?></a>
|
758 |
+
<a href="<?php echo esc_url( 'https://www.paidmembershipspro.com/documentation/discount-codes/?utm_source=plugin&utm_medium=pmpro-discountcodes&utm_campaign=documentation&utm_content=discount-codes' ); ?>" target="_blank" rel="nofollow noopener" class="button"><?php esc_html_e( 'Documentation: Discount Codes', 'paid-memberships-pro' ); ?></a>
|
759 |
</div> <!-- end pmpro-new-install -->
|
760 |
<?php } else { ?>
|
761 |
|
763 |
<div id="message" class="<?php if($pmpro_msgt == "success") echo "updated fade"; else echo "error"; ?>"><p><?php echo $pmpro_msg?></p></div>
|
764 |
<?php } ?>
|
765 |
|
|
|
|
|
|
|
|
|
766 |
<form id="posts-filter" method="get" action="">
|
767 |
<p class="search-box">
|
768 |
+
<label class="screen-reader-text" for="post-search-input"><?php esc_html_e('Search Discount Codes', 'paid-memberships-pro' );?>:</label>
|
769 |
<input type="hidden" name="page" value="pmpro-discountcodes" />
|
770 |
<input id="post-search-input" type="text" value="<?php echo esc_attr( wp_unslash( $s ) ); ?>" name="s" size="30" />
|
771 |
<input class="button" type="submit" value="<?php esc_attr_e('Search', 'paid-memberships-pro' );?>" id="search-submit "/>
|
772 |
</p>
|
773 |
</form>
|
774 |
|
775 |
+
<div class="tablenav top">
|
776 |
+
<?php if ( ! empty( $codes ) ) { ?>
|
777 |
+
<div class="tablenav-pages one-page">
|
778 |
+
<span class="displaying-num"><?php printf( __( "%d discount codes found.", 'paid-memberships-pro' ), $totalrows ); ?></span>
|
779 |
+
</div>
|
780 |
+
<?php } ?>
|
781 |
+
<br class="clear" />
|
782 |
+
</div> <!-- end tablenav -->
|
783 |
|
784 |
+
<table class="wp-list-table widefat fixed striped">
|
785 |
<thead>
|
786 |
<tr>
|
787 |
+
<th class="column-code"><?php esc_html_e('Code', 'paid-memberships-pro' );?></th>
|
788 |
+
<th class="column-starts"><?php esc_html_e('Starts', 'paid-memberships-pro' );?></th>
|
789 |
+
<th class="column-expires"><?php esc_html_e('Expires', 'paid-memberships-pro' );?></th>
|
790 |
+
<th class="column-uses"><?php esc_html_e('Uses', 'paid-memberships-pro' );?></th>
|
791 |
+
<th class="column-levels"><?php esc_html_e('Levels', 'paid-memberships-pro' );?></th>
|
|
|
792 |
<?php do_action("pmpro_discountcodes_extra_cols_header", $codes);?>
|
793 |
</tr>
|
794 |
</thead>
|
795 |
<tbody>
|
796 |
<?php if ( !empty( $s ) && empty( $codes ) ) { ?>
|
797 |
<tr>
|
798 |
+
<td colspan="5">
|
799 |
+
<?php esc_html_e( 'Code not found.', 'paid-memberships-pro' ); ?>
|
800 |
</td>
|
801 |
</tr>
|
802 |
<?php } ?>
|
805 |
$uses = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->pmpro_discount_codes_uses WHERE code_id = %d", $code->id ) );
|
806 |
?>
|
807 |
<tr<?php if ( ! pmpro_check_discount_code_for_gateway_compatibility( $code->id ) ) { ?> class="pmpro_error"<?php } ?>>
|
808 |
+
<td class="column-code has-row-actions">
|
809 |
+
<strong><a title="<?php echo esc_attr( sprintf( __( 'Edit Code: %s', 'paid-memberships-pro' ), $code->code ) ); ?>" href="<?php echo esc_url( add_query_arg( array( 'page' => 'pmpro-discountcodes', 'edit' => $code->id ), admin_url('admin.php' ) ) ); ?>"><?php echo $code->code?></a></strong>
|
|
|
810 |
<div class="row-actions">
|
811 |
<?php
|
812 |
$delete_text = esc_html(
|
830 |
);
|
831 |
|
832 |
$actions = [
|
833 |
+
'id' => sprintf(
|
834 |
+
// translators: %s is the Order ID.
|
835 |
+
__( 'ID: %s', 'paid-memberships-pro' ),
|
836 |
+
esc_attr( $code->id ),
|
837 |
+
),
|
838 |
'edit' => sprintf(
|
839 |
'<a title="%1$s" href="%2$s">%3$s</a>',
|
840 |
esc_attr__( 'Edit', 'paid-memberships-pro' ),
|
916 |
?>
|
917 |
</div>
|
918 |
</td>
|
919 |
+
<td class="column-starts">
|
920 |
<?php echo date_i18n(get_option('date_format'), $code->starts)?>
|
921 |
</td>
|
922 |
+
<td class="column-expires">
|
923 |
<?php echo date_i18n(get_option('date_format'), $code->expires)?>
|
924 |
</td>
|
925 |
+
<td class="column-uses">
|
926 |
<?php
|
927 |
if($code->uses > 0)
|
928 |
echo "<strong>" . (int)$uses . "</strong>/" . $code->uses;
|
930 |
echo "<strong>" . (int)$uses . "</strong>/unlimited";
|
931 |
?>
|
932 |
</td>
|
933 |
+
<td class="column-levels">
|
934 |
<?php
|
935 |
$sqlQuery = $wpdb->prepare("
|
936 |
SELECT l.id, l.name
|
965 |
?>
|
966 |
</tbody>
|
967 |
</table>
|
968 |
+
<div class="tablenav bottom">
|
969 |
+
<div class="tablenav-pages">
|
970 |
+
<?php if ( ! empty( $codes ) ) { ?>
|
971 |
+
<span class="displaying-num"><?php printf( __( "%d discount codes found.", 'paid-memberships-pro' ), $totalrows ); ?></span>
|
972 |
+
<?php } ?>
|
973 |
+
<?php
|
974 |
+
$pagination_url = admin_url( "/admin.php?page=pmpro-discountcodes&s=" . $s );
|
975 |
+
echo pmpro_getPaginationString( $pn, $totalrows, $limit, 1, $pagination_url, "&limit=$limit&pn=" );
|
976 |
+
?>
|
977 |
+
</div>
|
978 |
+
</div>
|
979 |
|
980 |
<?php } ?>
|
981 |
|
adminpages/emailsettings.php
CHANGED
@@ -81,17 +81,16 @@
|
|
81 |
|
82 |
<form action="" method="post" enctype="multipart/form-data">
|
83 |
<?php wp_nonce_field('savesettings', 'pmpro_emailsettings_nonce');?>
|
84 |
-
|
85 |
-
<h1 class="wp-heading-inline"><?php esc_html_e( 'Email Settings', 'paid-memberships-pro' ); ?></h1>
|
86 |
<hr class="wp-header-end">
|
87 |
-
<
|
88 |
-
<
|
|
|
89 |
|
90 |
<table class="form-table">
|
91 |
<tbody>
|
92 |
<tr>
|
93 |
<th scope="row" valign="top">
|
94 |
-
<label for="from_email"><?php
|
95 |
</th>
|
96 |
<td>
|
97 |
<input type="text" name="from_email" value="<?php echo esc_attr($from_email);?>" class="regular-text" />
|
@@ -99,7 +98,7 @@
|
|
99 |
</tr>
|
100 |
<tr>
|
101 |
<th scope="row" valign="top">
|
102 |
-
<label for="from_name"><?php
|
103 |
</th>
|
104 |
<td>
|
105 |
<input type="text" name="from_name" value="<?php echo esc_attr($from_name);?>" class="regular-text" />
|
@@ -107,7 +106,7 @@
|
|
107 |
</tr>
|
108 |
<tr>
|
109 |
<th scope="row" valign="top">
|
110 |
-
<label for="only_filter_pmpro_emails"><?php
|
111 |
</th>
|
112 |
<td>
|
113 |
<input type="checkbox" id="only_filter_pmpro_emails" name="only_filter_pmpro_emails" value="1" <?php if(!empty($only_filter_pmpro_emails)) { ?>checked="checked"<?php } ?> />
|
@@ -119,7 +118,7 @@
|
|
119 |
<p class="submit"><input name="savesettings" type="submit" class="button-primary" value="<?php esc_attr_e( 'Save All Settings', 'paid-memberships-pro' ); ?>" /></p>
|
120 |
<hr />
|
121 |
<div class="pmpro_admin_section pmpro_admin_section-email-deliverability">
|
122 |
-
<h2><?php
|
123 |
|
124 |
<p><?php
|
125 |
$allowed_email_troubleshooting_html = array (
|
@@ -127,10 +126,11 @@
|
|
127 |
'href' => array(),
|
128 |
'target' => array(),
|
129 |
'title' => array(),
|
|
|
130 |
),
|
131 |
'em' => array(),
|
132 |
);
|
133 |
-
echo sprintf( wp_kses( __( 'If you are having issues with email delivery from your server, <a href="%s" title="Paid Memberships Pro - Subscription Delays Add On" target="_blank">please read our email troubleshooting guide</a>. As an alternative, Paid Memberships Pro offers built-in integration for SendWP. <em>Optional: SendWP is a third-party service for transactional email in WordPress. <a href="%s" title="Documentation on SendWP and Paid Memberships Pro" target="_blank">Click here to learn more about SendWP and Paid Memberships Pro</a></em>.', 'paid-memberships-pro' ), $allowed_email_troubleshooting_html ), 'https://www.paidmembershipspro.com/troubleshooting-email-issues-sending-sent-spam-delivery-delays/?utm_source=plugin&utm_medium=pmpro-emailsettings&utm_campaign=blog&utm_content=email-troubleshooting', 'https://www.paidmembershipspro.com/documentation/member-communications/email-delivery-sendwp/?utm_source=plugin&utm_medium=pmpro-emailsettings&utm_campaign=documentation&utm_content=sendwp' );
|
134 |
?></p>
|
135 |
|
136 |
<?php
|
@@ -146,7 +146,7 @@
|
|
146 |
$sendwp_email_forwarding = function_exists( 'sendwp_forwarding_enabled' ) && sendwp_forwarding_enabled() ? true : false;
|
147 |
|
148 |
// Messages for connected or not.
|
149 |
-
$connected = __( 'Your site is connected to SendWP.', 'paid-memberships-pro' ) . " <a href='https://app.sendwp.com/dashboard/' target='_blank' rel='nofollow'>" . __( 'View Your SendWP Account', 'paid-memberships-pro' ) . "</a>";
|
150 |
$disconnected = ' ' . sprintf( __( 'Please enable email sending inside %s.', 'paid-memberships-pro' ), '<a href="' . admin_url('/tools.php?page=sendwp') . '">SendWP Settings</a>' );
|
151 |
?>
|
152 |
<p class="description" id="pmpro-sendwp-description"><?php echo $sendwp_email_forwarding ? $connected : $disconnected; ?></p>
|
@@ -159,12 +159,12 @@
|
|
159 |
<tbody>
|
160 |
<tr>
|
161 |
<th scope="row" valign="top">
|
162 |
-
<label for="email_member_notification"><?php
|
163 |
</th>
|
164 |
<td>
|
165 |
<input type="checkbox" id="email_member_notification" name="email_member_notification" value="1" <?php if(!empty($email_member_notification)) { ?>checked="checked"<?php } ?> />
|
166 |
-
<label for="email_member_notification"><?php
|
167 |
-
<p class="description"><?php
|
168 |
</td>
|
169 |
</tr>
|
170 |
</tbody>
|
@@ -175,4 +175,4 @@
|
|
175 |
</form>
|
176 |
|
177 |
<?php
|
178 |
-
require_once(dirname(__FILE__) . "/admin_footer.php");
|
81 |
|
82 |
<form action="" method="post" enctype="multipart/form-data">
|
83 |
<?php wp_nonce_field('savesettings', 'pmpro_emailsettings_nonce');?>
|
|
|
|
|
84 |
<hr class="wp-header-end">
|
85 |
+
<h1 class="wp-heading-inline"><?php esc_html_e( 'Email Settings', 'paid-memberships-pro' ); ?></h1>
|
86 |
+
<h2><?php esc_html_e( 'Send Emails From', 'paid-memberships-pro' ); ?></h2>
|
87 |
+
<p><?php echo wp_kses_post( __( 'By default, system generated emails are sent from <em><strong>wordpress@yourdomain.com</strong></em>. You can update this from address using the fields below.', 'paid-memberships-pro' ) );?></p>
|
88 |
|
89 |
<table class="form-table">
|
90 |
<tbody>
|
91 |
<tr>
|
92 |
<th scope="row" valign="top">
|
93 |
+
<label for="from_email"><?php esc_html_e('From Email', 'paid-memberships-pro' );?>:</label>
|
94 |
</th>
|
95 |
<td>
|
96 |
<input type="text" name="from_email" value="<?php echo esc_attr($from_email);?>" class="regular-text" />
|
98 |
</tr>
|
99 |
<tr>
|
100 |
<th scope="row" valign="top">
|
101 |
+
<label for="from_name"><?php esc_html_e('From Name', 'paid-memberships-pro' );?>:</label>
|
102 |
</th>
|
103 |
<td>
|
104 |
<input type="text" name="from_name" value="<?php echo esc_attr($from_name);?>" class="regular-text" />
|
106 |
</tr>
|
107 |
<tr>
|
108 |
<th scope="row" valign="top">
|
109 |
+
<label for="only_filter_pmpro_emails"><?php esc_html_e('Only Filter PMPro Emails?', 'paid-memberships-pro' );?>:</label>
|
110 |
</th>
|
111 |
<td>
|
112 |
<input type="checkbox" id="only_filter_pmpro_emails" name="only_filter_pmpro_emails" value="1" <?php if(!empty($only_filter_pmpro_emails)) { ?>checked="checked"<?php } ?> />
|
118 |
<p class="submit"><input name="savesettings" type="submit" class="button-primary" value="<?php esc_attr_e( 'Save All Settings', 'paid-memberships-pro' ); ?>" /></p>
|
119 |
<hr />
|
120 |
<div class="pmpro_admin_section pmpro_admin_section-email-deliverability">
|
121 |
+
<h2><?php esc_html_e( 'Email Deliverability', 'paid-memberships-pro' ); ?></h2>
|
122 |
|
123 |
<p><?php
|
124 |
$allowed_email_troubleshooting_html = array (
|
126 |
'href' => array(),
|
127 |
'target' => array(),
|
128 |
'title' => array(),
|
129 |
+
'rel' => array(),
|
130 |
),
|
131 |
'em' => array(),
|
132 |
);
|
133 |
+
echo sprintf( wp_kses( __( 'If you are having issues with email delivery from your server, <a href="%s" title="Paid Memberships Pro - Subscription Delays Add On" target="_blank" rel="nofollow noopener">please read our email troubleshooting guide</a>. As an alternative, Paid Memberships Pro offers built-in integration for SendWP. <em>Optional: SendWP is a third-party service for transactional email in WordPress. <a href="%s" title="Documentation on SendWP and Paid Memberships Pro" target="_blank" rel="nofollow noopener">Click here to learn more about SendWP and Paid Memberships Pro</a></em>.', 'paid-memberships-pro' ), $allowed_email_troubleshooting_html ), 'https://www.paidmembershipspro.com/troubleshooting-email-issues-sending-sent-spam-delivery-delays/?utm_source=plugin&utm_medium=pmpro-emailsettings&utm_campaign=blog&utm_content=email-troubleshooting', 'https://www.paidmembershipspro.com/documentation/member-communications/email-delivery-sendwp/?utm_source=plugin&utm_medium=pmpro-emailsettings&utm_campaign=documentation&utm_content=sendwp' );
|
134 |
?></p>
|
135 |
|
136 |
<?php
|
146 |
$sendwp_email_forwarding = function_exists( 'sendwp_forwarding_enabled' ) && sendwp_forwarding_enabled() ? true : false;
|
147 |
|
148 |
// Messages for connected or not.
|
149 |
+
$connected = __( 'Your site is connected to SendWP.', 'paid-memberships-pro' ) . " <a href='https://app.sendwp.com/dashboard/' target='_blank' rel='nofollow noopener'>" . __( 'View Your SendWP Account', 'paid-memberships-pro' ) . "</a>";
|
150 |
$disconnected = ' ' . sprintf( __( 'Please enable email sending inside %s.', 'paid-memberships-pro' ), '<a href="' . admin_url('/tools.php?page=sendwp') . '">SendWP Settings</a>' );
|
151 |
?>
|
152 |
<p class="description" id="pmpro-sendwp-description"><?php echo $sendwp_email_forwarding ? $connected : $disconnected; ?></p>
|
159 |
<tbody>
|
160 |
<tr>
|
161 |
<th scope="row" valign="top">
|
162 |
+
<label for="email_member_notification"><?php esc_html_e('Send members emails', 'paid-memberships-pro' );?>:</label>
|
163 |
</th>
|
164 |
<td>
|
165 |
<input type="checkbox" id="email_member_notification" name="email_member_notification" value="1" <?php if(!empty($email_member_notification)) { ?>checked="checked"<?php } ?> />
|
166 |
+
<label for="email_member_notification"><?php esc_html_e('Default WP notification email.', 'paid-memberships-pro' );?></label>
|
167 |
+
<p class="description"><?php esc_html_e( 'Recommended: Leave unchecked. Members will still get an email confirmation from PMPro after checkout.', 'paid-memberships-pro' ); ?></p>
|
168 |
</td>
|
169 |
</tr>
|
170 |
</tbody>
|
175 |
</form>
|
176 |
|
177 |
<?php
|
178 |
+
require_once(dirname(__FILE__) . "/admin_footer.php");
|
adminpages/emailtemplates.php
CHANGED
@@ -16,10 +16,8 @@
|
|
16 |
?>
|
17 |
<form action="" method="post" enctype="multipart/form-data">
|
18 |
<?php wp_nonce_field('savesettings', 'pmpro_emailsettings_nonce');?>
|
19 |
-
|
20 |
-
<h1 class="wp-heading-inline"><?php esc_html_e( 'Email Templates', 'paid-memberships-pro' ); ?></h1>
|
21 |
<hr class="wp-header-end">
|
22 |
-
|
23 |
<p><?php esc_html_e( 'Select an email template from the dropdown below to customize the subject and body of emails sent through your membership site. You can also disable a specific email or send a test version through this admin page.', 'paid-memberships-pro' ); ?> <a href="https://www.paidmembershipspro.com/documentation/member-communications/list-of-pmpro-email-templates/" target="_blank"><?php esc_html_e( 'Click here for a description of each email sent to your members and admins at different stages of the member experience.', 'paid-memberships-pro'); ?></a></p>
|
24 |
|
25 |
<div class="pmpro_admin_section pmpro_admin_section-email-templates-content">
|
@@ -111,90 +109,79 @@
|
|
111 |
<hr />
|
112 |
|
113 |
<div class="pmpro-email-templates-variable-reference">
|
114 |
-
<
|
115 |
|
116 |
<p><?php esc_html_e( 'Use the placeholder variables below to customize your member and admin emails with specific user or membership data.', 'paid-memberships-pro' ); ?></p>
|
117 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
118 |
<tbody>
|
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 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
</table>
|
153 |
-
</td>
|
154 |
-
</tr>
|
155 |
-
<tr>
|
156 |
-
<th scope="row"><?php esc_html_e( 'Billing Information', 'paid-memberships-pro' ); ?></th>
|
157 |
-
<td>
|
158 |
-
<table class="widefat striped">
|
159 |
-
<tbody>
|
160 |
-
<?php
|
161 |
-
$email_variables = [
|
162 |
-
'!!billing_address!!' => __( 'Billing Info Complete Address', 'paid-memberships-pro' ),
|
163 |
-
'!!billing_name!!' => __( 'Billing Info Name', 'paid-memberships-pro' ),
|
164 |
-
'!!billing_street!!' => __( 'Billing Info Street Address', 'paid-memberships-pro' ),
|
165 |
-
'!!billing_city!!' => __( 'Billing Info City', 'paid-memberships-pro' ),
|
166 |
-
'!!billing_state!!' => __( 'Billing Info State', 'paid-memberships-pro' ),
|
167 |
-
'!!billing_zip!!' => __( 'Billing Info ZIP Code', 'paid-memberships-pro' ),
|
168 |
-
'!!billing_country!!' => __( 'Billing Info Country', 'paid-memberships-pro' ),
|
169 |
-
'!!billing_phone!!' => __( 'Billing Info Phone #', 'paid-memberships-pro' ),
|
170 |
-
'!!cardtype!!' => __( 'Credit Card Type', 'paid-memberships-pro' ),
|
171 |
-
'!!accountnumber!!' => __( 'Credit Card Number (last 4 digits)', 'paid-memberships-pro' ),
|
172 |
-
'!!expirationmonth!!' => __( 'Credit Card Expiration Month (mm format)', 'paid-memberships-pro' ),
|
173 |
-
'!!expirationyear!!' => __( 'Credit Card Expiration Year (yyyy format)', 'paid-memberships-pro' ),
|
174 |
-
'!!membership_cost!!' => __( 'Membership Level Cost Text', 'paid-memberships-pro' ),
|
175 |
-
'!!instructions!!' => __( 'Payment Instructions (used in Checkout - Email Template)', 'paid-memberships-pro' ),
|
176 |
-
'!!invoice_id!!' => __( 'Invoice ID', 'paid-memberships-pro' ),
|
177 |
-
'!!invoice_total!!' => __( 'Invoice Total', 'paid-memberships-pro' ),
|
178 |
-
'!!invoice_date!!' => __( 'Invoice Date', 'paid-memberships-pro' ),
|
179 |
-
'!!invoice_url!!' => __( 'Invoice Page URL', 'paid-memberships-pro' ),
|
180 |
-
'!!discount_code!!' => __( 'Discount Code Applied', 'paid-memberships-pro' ),
|
181 |
-
'!!membership_level_confirmation_message!!' => __( 'Custom Level Confirmation Message', 'paid-memberships-pro' ),
|
182 |
-
|
183 |
-
];
|
184 |
-
|
185 |
-
foreach ( $email_variables as $email_variable => $description ) {
|
186 |
-
?>
|
187 |
-
<tr>
|
188 |
-
<td><?php echo esc_html( $email_variable ); ?></td>
|
189 |
-
<td><?php echo esc_html( $description ); ?></td>
|
190 |
-
</tr>
|
191 |
-
<?php
|
192 |
-
}
|
193 |
-
?>
|
194 |
-
</tbody>
|
195 |
-
</table>
|
196 |
-
</td>
|
197 |
-
</tr>
|
198 |
</tbody>
|
199 |
</table>
|
200 |
</div> <!-- end pmpro-email-templates-variable-reference -->
|
16 |
?>
|
17 |
<form action="" method="post" enctype="multipart/form-data">
|
18 |
<?php wp_nonce_field('savesettings', 'pmpro_emailsettings_nonce');?>
|
|
|
|
|
19 |
<hr class="wp-header-end">
|
20 |
+
<h1 class="wp-heading-inline"><?php esc_html_e( 'Email Templates', 'paid-memberships-pro' ); ?></h1>
|
21 |
<p><?php esc_html_e( 'Select an email template from the dropdown below to customize the subject and body of emails sent through your membership site. You can also disable a specific email or send a test version through this admin page.', 'paid-memberships-pro' ); ?> <a href="https://www.paidmembershipspro.com/documentation/member-communications/list-of-pmpro-email-templates/" target="_blank"><?php esc_html_e( 'Click here for a description of each email sent to your members and admins at different stages of the member experience.', 'paid-memberships-pro'); ?></a></p>
|
22 |
|
23 |
<div class="pmpro_admin_section pmpro_admin_section-email-templates-content">
|
109 |
<hr />
|
110 |
|
111 |
<div class="pmpro-email-templates-variable-reference">
|
112 |
+
<h2><?php esc_html_e( 'Variable Reference', 'paid-memberships-pro' ); ?></h2>
|
113 |
|
114 |
<p><?php esc_html_e( 'Use the placeholder variables below to customize your member and admin emails with specific user or membership data.', 'paid-memberships-pro' ); ?></p>
|
115 |
+
|
116 |
+
<h3><?php esc_html_e('General Settings / Membership Info', 'paid-memberships-pro'); ?></h3>
|
117 |
+
<table class="widefat fixed striped">
|
118 |
+
<tbody>
|
119 |
+
<?php
|
120 |
+
$email_variables = [
|
121 |
+
'!!name!!' => __( 'Display Name (Profile/Edit User > Display name publicly as)', 'paid-memberships-pro' ),
|
122 |
+
'!!user_login!!' => __( 'Username', 'paid-memberships-pro' ),
|
123 |
+
'!!sitename!!' => __( 'Site Title', 'paid-memberships-pro' ),
|
124 |
+
'!!siteemail!!' => __( 'Site Email Address (General Settings > Email OR Memberships > Settings > Email Settings)', 'paid-memberships-pro' ),
|
125 |
+
'!!membership_id!!' => __( 'Membership Level ID', 'paid-memberships-pro' ),
|
126 |
+
'!!membership_level_name!!' => __( 'Membership Level Name', 'paid-memberships-pro' ),
|
127 |
+
'!!membership_change!!' => __( 'Membership Level Change', 'paid-memberships-pro' ),
|
128 |
+
'!!membership_expiration!!' => __( 'Membership Level Expiration', 'paid-memberships-pro' ),
|
129 |
+
'!!startdate!!' => __( 'Membership Start Date', 'paid-memberships-pro' ),
|
130 |
+
'!!enddate!!' => __( 'Membership End Date', 'paid-memberships-pro' ),
|
131 |
+
'!!display_name!!' => __( 'Display Name (Profile/Edit User > Display name publicly as)', 'paid-memberships-pro' ),
|
132 |
+
'!!user_email!!' => __( 'User Email', 'paid-memberships-pro' ),
|
133 |
+
'!!login_url!!' => __( 'Login URL', 'paid-memberships-pro' ),
|
134 |
+
'!!levels_url!!' => __( 'Membership Levels Page URL', 'paid-memberships-pro' ),
|
135 |
+
];
|
136 |
+
|
137 |
+
foreach ( $email_variables as $email_variable => $description ) {
|
138 |
+
?>
|
139 |
+
<tr>
|
140 |
+
<th><code><?php echo esc_html( $email_variable ); ?></code></th>
|
141 |
+
<td><?php echo esc_html( $description ); ?></td>
|
142 |
+
</tr>
|
143 |
+
<?php
|
144 |
+
}
|
145 |
+
?>
|
146 |
+
</tbody>
|
147 |
+
</table>
|
148 |
+
|
149 |
+
<h3><?php esc_html_e( 'Billing Information', 'paid-memberships-pro' ); ?></h3>
|
150 |
+
<table class="widefat fixed striped">
|
151 |
<tbody>
|
152 |
+
<?php
|
153 |
+
$email_variables = [
|
154 |
+
'!!billing_address!!' => __( 'Billing Info Complete Address', 'paid-memberships-pro' ),
|
155 |
+
'!!billing_name!!' => __( 'Billing Info Name', 'paid-memberships-pro' ),
|
156 |
+
'!!billing_street!!' => __( 'Billing Info Street Address', 'paid-memberships-pro' ),
|
157 |
+
'!!billing_city!!' => __( 'Billing Info City', 'paid-memberships-pro' ),
|
158 |
+
'!!billing_state!!' => __( 'Billing Info State', 'paid-memberships-pro' ),
|
159 |
+
'!!billing_zip!!' => __( 'Billing Info ZIP Code', 'paid-memberships-pro' ),
|
160 |
+
'!!billing_country!!' => __( 'Billing Info Country', 'paid-memberships-pro' ),
|
161 |
+
'!!billing_phone!!' => __( 'Billing Info Phone #', 'paid-memberships-pro' ),
|
162 |
+
'!!cardtype!!' => __( 'Credit Card Type', 'paid-memberships-pro' ),
|
163 |
+
'!!accountnumber!!' => __( 'Credit Card Number (last 4 digits)', 'paid-memberships-pro' ),
|
164 |
+
'!!expirationmonth!!' => __( 'Credit Card Expiration Month (mm format)', 'paid-memberships-pro' ),
|
165 |
+
'!!expirationyear!!' => __( 'Credit Card Expiration Year (yyyy format)', 'paid-memberships-pro' ),
|
166 |
+
'!!membership_cost!!' => __( 'Membership Level Cost Text', 'paid-memberships-pro' ),
|
167 |
+
'!!instructions!!' => __( 'Payment Instructions (used in Checkout - Email Template)', 'paid-memberships-pro' ),
|
168 |
+
'!!invoice_id!!' => __( 'Invoice ID', 'paid-memberships-pro' ),
|
169 |
+
'!!invoice_total!!' => __( 'Invoice Total', 'paid-memberships-pro' ),
|
170 |
+
'!!invoice_date!!' => __( 'Invoice Date', 'paid-memberships-pro' ),
|
171 |
+
'!!invoice_url!!' => __( 'Invoice Page URL', 'paid-memberships-pro' ),
|
172 |
+
'!!discount_code!!' => __( 'Discount Code Applied', 'paid-memberships-pro' ),
|
173 |
+
'!!membership_level_confirmation_message!!' => __( 'Custom Level Confirmation Message', 'paid-memberships-pro' ),
|
174 |
+
];
|
175 |
+
|
176 |
+
foreach ( $email_variables as $email_variable => $description ) {
|
177 |
+
?>
|
178 |
+
<tr>
|
179 |
+
<th><code><?php echo esc_html( $email_variable ); ?></code></th>
|
180 |
+
<td><?php echo esc_html( $description ); ?></td>
|
181 |
+
</tr>
|
182 |
+
<?php
|
183 |
+
}
|
184 |
+
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
185 |
</tbody>
|
186 |
</table>
|
187 |
</div> <!-- end pmpro-email-templates-variable-reference -->
|
adminpages/functions.php
CHANGED
@@ -391,11 +391,11 @@ function pmpro_add_email_order_modal() {
|
|
391 |
$order = new MemberOrder( $_REQUEST['order'] );
|
392 |
if ( ! empty( $user ) && ! empty( $order ) && $email->sendBillableInvoiceEmail( $user, $order ) ) { ?>
|
393 |
<div class="notice notice-success is-dismissible">
|
394 |
-
<p><?php
|
395 |
</div>
|
396 |
<?php } else { ?>
|
397 |
<div class="notice notice-error is-dismissible">
|
398 |
-
<p><?php
|
399 |
</div>
|
400 |
<?php }
|
401 |
}
|
@@ -422,12 +422,12 @@ function pmpro_add_email_order_modal() {
|
|
422 |
</script>
|
423 |
<?php add_thickbox(); ?>
|
424 |
<div id="email_invoice" style="display:none;">
|
425 |
-
<h3><?php
|
426 |
<form method="post" action="">
|
427 |
<input type="hidden" name="order" value=""/>
|
428 |
<?php _e( 'Send an invoice for this order to: ', 'paid-memberships-pro' ); ?>
|
429 |
<input type="text" value="" name="email"/>
|
430 |
-
<button class="button button-primary alignright"><?php
|
431 |
</form>
|
432 |
</div>
|
433 |
<?php
|
391 |
$order = new MemberOrder( $_REQUEST['order'] );
|
392 |
if ( ! empty( $user ) && ! empty( $order ) && $email->sendBillableInvoiceEmail( $user, $order ) ) { ?>
|
393 |
<div class="notice notice-success is-dismissible">
|
394 |
+
<p><?php esc_html_e( 'Invoice emailed successfully.', 'paid-memberships-pro' ); ?></p>
|
395 |
</div>
|
396 |
<?php } else { ?>
|
397 |
<div class="notice notice-error is-dismissible">
|
398 |
+
<p><?php esc_html_e( 'Error emailing invoice.', 'paid-memberships-pro' ); ?></p>
|
399 |
</div>
|
400 |
<?php }
|
401 |
}
|
422 |
</script>
|
423 |
<?php add_thickbox(); ?>
|
424 |
<div id="email_invoice" style="display:none;">
|
425 |
+
<h3><?php esc_html_e( 'Email Invoice', 'paid-memberships-pro' ); ?></h3>
|
426 |
<form method="post" action="">
|
427 |
<input type="hidden" name="order" value=""/>
|
428 |
<?php _e( 'Send an invoice for this order to: ', 'paid-memberships-pro' ); ?>
|
429 |
<input type="text" value="" name="email"/>
|
430 |
+
<button class="button button-primary alignright"><?php esc_html_e( 'Send Email', 'paid-memberships-pro' ); ?></button>
|
431 |
</form>
|
432 |
</div>
|
433 |
<?php
|
adminpages/license.php
CHANGED
@@ -25,24 +25,36 @@ if ( empty( $pmpro_license_check ) ) {
|
|
25 |
$pmpro_license_check = get_option( 'pmpro_license_check', array( 'license' => false, 'enddate' => 0 ) );
|
26 |
}
|
27 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
// HTML for license settings page.
|
29 |
if ( defined( 'PMPRO_DIR' ) ) {
|
30 |
require_once( PMPRO_DIR . '/adminpages/admin_header.php' );
|
31 |
} ?>
|
|
|
32 |
<div class="about-wrap">
|
33 |
-
<h2><?php
|
34 |
|
35 |
<div class="about-text">
|
36 |
<?php if ( is_wp_error( $pmpro_license_check ) ) { ?>
|
37 |
-
<p class="pmpro_message pmpro_error"><strong><?php echo esc_html( sprintf( __( 'There was an issue validating your license key: %s', 'paid-memberships-pro' ), $pmpro_license_check->get_error_message() ) );?></strong> <?php
|
38 |
<?php } elseif( ! pmpro_license_isValid() && empty( $key ) ) { ?>
|
39 |
-
<p class="pmpro_message pmpro_error"
|
40 |
<?php } elseif( ! pmpro_license_isValid() ) { ?>
|
41 |
-
<p class="pmpro_message pmpro_error"><strong><?php
|
42 |
<?php } elseif ( pmpro_license_isValid() && ! pmpro_license_isValid( $key, pmpro_license_get_premium_types() ) ) { ?>
|
43 |
-
<p class="pmpro_message pmpro_alert"><?php
|
44 |
<?php } else { ?>
|
45 |
-
<p class="pmpro_message pmpro_success"><?php
|
46 |
<?php } ?>
|
47 |
|
48 |
<form action="" method="post">
|
@@ -61,13 +73,13 @@ if ( defined( 'PMPRO_DIR' ) ) {
|
|
61 |
|
62 |
<p>
|
63 |
<?php if ( ! pmpro_license_isValid() ) { ?>
|
64 |
-
<a class="button button-primary button-hero" href="https://www.paidmembershipspro.com/pricing/?utm_source=plugin&utm_medium=pmpro-license&utm_campaign=pricing&utm_content=view-plans-pricing" target="_blank"><?php
|
65 |
<?php } else { ?>
|
66 |
-
<a class="button button-primary button-hero" href="https://www.paidmembershipspro.com/login/?redirect_to=%2Fmembership-account%2F%3Futm_source%3Dplugin%26utm_medium%3Dpmpro-license%26utm_campaign%3Dmembership-account%26utm_content%3Dview-account" target="_blank"><?php
|
67 |
<?php if ( pmpro_license_isValid( $key, pmpro_license_get_premium_types() ) ) { ?>
|
68 |
-
<a class="button button-hero" href="https://www.paidmembershipspro.com/login/?redirect_to=%2Fnew-topic%2F%3Futm_source%3Dplugin%26utm_medium%3Dpmpro-license%26utm_campaign%3Dsupport%26utm_content%3Dnew-support-ticket" target="_blank"><?php
|
69 |
<?php } else { ?>
|
70 |
-
<a class="button button-hero" href="https://www.paidmembershipspro.com/login/?redirect_to=%2Fpricing%2F%3Futm_source%3Dplugin%26utm_medium%3Dpmpro-license%26utm_campaign%3Dpricing%26utm_content%3Dupgrade-for-support" target="_blank"><?php
|
71 |
<?php }
|
72 |
} ?>
|
73 |
</p>
|
@@ -76,17 +88,7 @@ if ( defined( 'PMPRO_DIR' ) ) {
|
|
76 |
|
77 |
<div class="clearfix"></div>
|
78 |
|
79 |
-
<img class="pmpro_icon alignright" src="<?php echo PMPRO_URL?>/images/Paid-Memberships-Pro_icon.png" border="0" alt="Paid Memberships Pro(c) - All Rights Reserved" />
|
80 |
-
<?php
|
81 |
-
$allowed_pmpro_license_strings_html = array (
|
82 |
-
'a' => array (
|
83 |
-
'href' => array(),
|
84 |
-
'target' => array(),
|
85 |
-
'title' => array(),
|
86 |
-
),
|
87 |
-
'strong' => array(),
|
88 |
-
'em' => array(), );
|
89 |
-
?>
|
90 |
|
91 |
<?php
|
92 |
echo '<p>' . sprintf( wp_kses( __( 'Paid Memberships Pro and our Add Ons are distributed under the <a href="%s" title="GPLv2 license" target="_blank">GPLv2 license</a>. This means, among other things, that you may use the software on this site or any other site free of charge.', 'paid-memberships-pro' ), $allowed_pmpro_license_strings_html ), 'https://www.paidmembershipspro.com/features/paid-memberships-pro-is-100-gpl/?utm_source=plugin&utm_medium=pmpro-license&utm_campaign=documentation&utm_content=gpl' ) . '</p>';
|
@@ -100,7 +102,7 @@ if ( defined( 'PMPRO_DIR' ) ) {
|
|
100 |
echo '<p>' . wp_kses( __( '<strong>Need help?</strong> Your license allows you to open new tickets in our private support area. Purchases are backed by a 30 day, no questions asked refund policy.', 'paid-memberships-pro' ), $allowed_pmpro_license_strings_html ) . '</p>';
|
101 |
?>
|
102 |
|
103 |
-
<p><a href="https://www.paidmembershipspro.com/pricing/?utm_source=plugin&utm_medium=pmpro-license&utm_campaign=pricing&utm_content=view-license-options" target="_blank"><?php
|
104 |
|
105 |
</div> <!-- end about-text -->
|
106 |
</div> <!-- end about-wrap -->
|
25 |
$pmpro_license_check = get_option( 'pmpro_license_check', array( 'license' => false, 'enddate' => 0 ) );
|
26 |
}
|
27 |
|
28 |
+
// Allowed strings for kses checks below.
|
29 |
+
$allowed_pmpro_license_strings_html = array (
|
30 |
+
'a' => array (
|
31 |
+
'href' => array(),
|
32 |
+
'target' => array(),
|
33 |
+
'title' => array(),
|
34 |
+
),
|
35 |
+
'strong' => array(),
|
36 |
+
'em' => array(),
|
37 |
+
);
|
38 |
+
|
39 |
// HTML for license settings page.
|
40 |
if ( defined( 'PMPRO_DIR' ) ) {
|
41 |
require_once( PMPRO_DIR . '/adminpages/admin_header.php' );
|
42 |
} ?>
|
43 |
+
<hr class="wp-header-end">
|
44 |
<div class="about-wrap">
|
45 |
+
<h2><?php esc_html_e('Paid Memberships Pro Support License', 'paid-memberships-pro' );?></h2>
|
46 |
|
47 |
<div class="about-text">
|
48 |
<?php if ( is_wp_error( $pmpro_license_check ) ) { ?>
|
49 |
+
<p class="pmpro_message pmpro_error"><strong><?php echo esc_html( sprintf( __( 'There was an issue validating your license key: %s', 'paid-memberships-pro' ), $pmpro_license_check->get_error_message() ) );?></strong> <?php echo wp_kses( sprintf( __('Visit the PMPro <a href="%s" target="_blank">Membership Account</a> page to confirm that your account is active and to find your license key.', 'paid-memberships-pro' ), 'https://www.paidmembershipspro.com/login/?redirect_to=%2Fmembership-account%2F%3Futm_source%3Dplugin%26utm_medium%3Dpmpro-license%26utm_campaign%3Dmembership-account%26utm_content%3Dkey-not-valid' ), $allowed_pmpro_license_strings_html );?></p>
|
50 |
<?php } elseif( ! pmpro_license_isValid() && empty( $key ) ) { ?>
|
51 |
+
<p class="pmpro_message pmpro_error"><?php echo wp_kses( sprintf( __( '<strong>Enter your support license key</strong>. Your license key can be found in your membership email receipt or in your <a href="%s" target="_blank">Membership Account</a>.', 'paid-memberships-pro' ), 'https://www.paidmembershipspro.com/login/?redirect_to=%2Fmembership-account%2F%3Futm_source%3Dplugin%26utm_medium%3Dpmpro-license%26utm_campaign%3Dmembership-account%26utm_content%3Dno-key' ), $allowed_pmpro_license_strings_html );?></p>
|
52 |
<?php } elseif( ! pmpro_license_isValid() ) { ?>
|
53 |
+
<p class="pmpro_message pmpro_error"><strong><?php esc_html_e('Your license is invalid or expired.', 'paid-memberships-pro' );?></strong> <?php echo wp_kses( sprintf( __( 'Visit the PMPro <a href="%s" target="_blank">Membership Account</a> page to confirm that your account is active and to find your license key.', 'paid-memberships-pro' ), 'https://www.paidmembershipspro.com/login/?redirect_to=%2Fmembership-account%2F%3Futm_source%3Dplugin%26utm_medium%3Dpmpro-license%26utm_campaign%3Dmembership-account%26utm_content%3Dkey-not-valid' ), $allowed_pmpro_license_strings_html );?></p>
|
54 |
<?php } elseif ( pmpro_license_isValid() && ! pmpro_license_isValid( $key, pmpro_license_get_premium_types() ) ) { ?>
|
55 |
+
<p class="pmpro_message pmpro_alert"><?php echo wp_kses( sprintf( __( 'Your <strong>%1$s</strong> key is active. %1$s accounts include access to documentation and free downloads.', 'paid-memberships-pro' ), ucwords( $pmpro_license_check['license'] ) ), $allowed_pmpro_license_strings_html );?></p>
|
56 |
<?php } else { ?>
|
57 |
+
<p class="pmpro_message pmpro_success"><?php echo wp_kses( sprintf( __('<strong>Thank you!</strong> A valid <strong>%s</strong> license key has been used to activate your support license on this site.', 'paid-memberships-pro' ), ucwords( $pmpro_license_check['license'] ) ), $allowed_pmpro_license_strings_html );?></p>
|
58 |
<?php } ?>
|
59 |
|
60 |
<form action="" method="post">
|
73 |
|
74 |
<p>
|
75 |
<?php if ( ! pmpro_license_isValid() ) { ?>
|
76 |
+
<a class="button button-primary button-hero" href="https://www.paidmembershipspro.com/pricing/?utm_source=plugin&utm_medium=pmpro-license&utm_campaign=pricing&utm_content=view-plans-pricing" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'View Plans and Pricing', 'paid-memberships-pro' ); ?></a>
|
77 |
<?php } else { ?>
|
78 |
+
<a class="button button-primary button-hero" href="https://www.paidmembershipspro.com/login/?redirect_to=%2Fmembership-account%2F%3Futm_source%3Dplugin%26utm_medium%3Dpmpro-license%26utm_campaign%3Dmembership-account%26utm_content%3Dview-account" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'Manage My Account', 'paid-memberships-pro' ); ?></a>
|
79 |
<?php if ( pmpro_license_isValid( $key, pmpro_license_get_premium_types() ) ) { ?>
|
80 |
+
<a class="button button-hero" href="https://www.paidmembershipspro.com/login/?redirect_to=%2Fnew-topic%2F%3Futm_source%3Dplugin%26utm_medium%3Dpmpro-license%26utm_campaign%3Dsupport%26utm_content%3Dnew-support-ticket" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'Open Support Ticket', 'paid-memberships-pro' ); ?></a>
|
81 |
<?php } else { ?>
|
82 |
+
<a class="button button-hero" href="https://www.paidmembershipspro.com/login/?redirect_to=%2Fpricing%2F%3Futm_source%3Dplugin%26utm_medium%3Dpmpro-license%26utm_campaign%3Dpricing%26utm_content%3Dupgrade-for-support" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'Upgrade For Support', 'paid-memberships-pro' ); ?></a>
|
83 |
<?php }
|
84 |
} ?>
|
85 |
</p>
|
88 |
|
89 |
<div class="clearfix"></div>
|
90 |
|
91 |
+
<img class="pmpro_icon alignright" src="<?php echo PMPRO_URL?>/images/Paid-Memberships-Pro_icon.png" border="0" alt="Paid Memberships Pro(c) - All Rights Reserved" />
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
92 |
|
93 |
<?php
|
94 |
echo '<p>' . sprintf( wp_kses( __( 'Paid Memberships Pro and our Add Ons are distributed under the <a href="%s" title="GPLv2 license" target="_blank">GPLv2 license</a>. This means, among other things, that you may use the software on this site or any other site free of charge.', 'paid-memberships-pro' ), $allowed_pmpro_license_strings_html ), 'https://www.paidmembershipspro.com/features/paid-memberships-pro-is-100-gpl/?utm_source=plugin&utm_medium=pmpro-license&utm_campaign=documentation&utm_content=gpl' ) . '</p>';
|
102 |
echo '<p>' . wp_kses( __( '<strong>Need help?</strong> Your license allows you to open new tickets in our private support area. Purchases are backed by a 30 day, no questions asked refund policy.', 'paid-memberships-pro' ), $allowed_pmpro_license_strings_html ) . '</p>';
|
103 |
?>
|
104 |
|
105 |
+
<p><a href="https://www.paidmembershipspro.com/pricing/?utm_source=plugin&utm_medium=pmpro-license&utm_campaign=pricing&utm_content=view-license-options" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'View Support License Options »', 'paid-memberships-pro' ); ?></a></p>
|
106 |
|
107 |
</div> <!-- end about-text -->
|
108 |
</div> <!-- end about-wrap -->
|
adminpages/membershiplevels.php
CHANGED
@@ -166,7 +166,7 @@
|
|
166 |
}
|
167 |
|
168 |
if( ! empty( $msgt ) && $ml_recurring && $ml_expiration ) {
|
169 |
-
$msgt .= ' <strong class="red">' . sprintf( __( 'WARNING: A level was set with both a recurring billing amount and an expiration date. You only need to set one of these unless you really want this membership to expire after a specific time period. For more information, <a target="_blank" href="%s">see our post here</a>.', 'paid-memberships-pro' ), 'https://www.paidmembershipspro.com/important-notes-on-recurring-billing-and-expiration-dates-for-membership-levels/?utm_source=plugin&utm_medium=pmpro-membershiplevels&utm_campaign=blog&utm_content=important-notes-on-recurring-billing-and-expiration-dates-for-membership-levels' ) . '</strong>';
|
170 |
|
171 |
// turn success to errors
|
172 |
if( $msg > 0 ) {
|
@@ -259,7 +259,7 @@
|
|
259 |
<?php
|
260 |
if($edit) {
|
261 |
?>
|
262 |
-
|
263 |
<h1 class="wp-heading-inline">
|
264 |
<?php
|
265 |
if($edit > 0)
|
@@ -268,8 +268,6 @@
|
|
268 |
echo __("Add New Membership Level", 'paid-memberships-pro' );
|
269 |
?>
|
270 |
</h1>
|
271 |
-
<hr class="wp-header-end">
|
272 |
-
|
273 |
<div>
|
274 |
<?php
|
275 |
// get the level...
|
@@ -344,19 +342,19 @@
|
|
344 |
<table class="form-table">
|
345 |
<tbody>
|
346 |
<tr>
|
347 |
-
<th scope="row" valign="top"><label><?php
|
348 |
<td>
|
349 |
-
<?php echo $level->id?>
|
350 |
</td>
|
351 |
</tr>
|
352 |
|
353 |
<tr>
|
354 |
-
<th scope="row" valign="top"><label for="name"><?php
|
355 |
<td><input name="name" type="text" value="<?php echo esc_attr($level->name);?>" class="regular-text" /></td>
|
356 |
</tr>
|
357 |
|
358 |
<tr>
|
359 |
-
<th scope="row" valign="top"><label for="description"><?php
|
360 |
<td>
|
361 |
<div id="poststuff" class="pmpro_description">
|
362 |
<?php
|
@@ -374,7 +372,7 @@
|
|
374 |
</tr>
|
375 |
|
376 |
<tr>
|
377 |
-
<th scope="row" valign="top"><label for="confirmation"><?php
|
378 |
<td>
|
379 |
<div class="pmpro_confirmation">
|
380 |
<?php
|
@@ -388,17 +386,17 @@
|
|
388 |
}
|
389 |
?>
|
390 |
</div>
|
391 |
-
<input id="confirmation_in_email" name="confirmation_in_email" type="checkbox" value="yes" <?php checked( $confirmation_in_email, 1); ?> /> <label for="confirmation_in_email"><?php
|
392 |
</td>
|
393 |
</tr>
|
394 |
</tbody>
|
395 |
</table>
|
396 |
<hr />
|
397 |
-
<h2 class="title"><?php
|
398 |
<table class="form-table">
|
399 |
<tbody>
|
400 |
<tr>
|
401 |
-
<th scope="row" valign="top"><label for="initial_payment"><?php
|
402 |
<td>
|
403 |
<?php
|
404 |
if(pmpro_getCurrencyPosition() == "left")
|
@@ -409,17 +407,17 @@
|
|
409 |
if(pmpro_getCurrencyPosition() == "right")
|
410 |
echo $pmpro_currency_symbol;
|
411 |
?>
|
412 |
-
<p class="description"><?php
|
413 |
</td>
|
414 |
</tr>
|
415 |
|
416 |
<tr>
|
417 |
-
<th scope="row" valign="top"><label><?php
|
418 |
-
<td><input id="recurring" name="recurring" type="checkbox" value="yes" <?php if(pmpro_isLevelRecurring($level)) { echo "checked='checked'"; } ?> onclick="if(jQuery('#recurring').is(':checked')) { jQuery('.recurring_info').show(); if(jQuery('#custom_trial').is(':checked')) {jQuery('.trial_info').show();} else {jQuery('.trial_info').hide();} } else { jQuery('.recurring_info').hide();}" /> <label for="recurring"><?php
|
419 |
</tr>
|
420 |
|
421 |
<tr class="recurring_info" <?php if(!pmpro_isLevelRecurring($level)) {?>style="display: none;"<?php } ?>>
|
422 |
-
<th scope="row" valign="top"><label for="billing_amount"><?php
|
423 |
<td>
|
424 |
<?php
|
425 |
if(pmpro_getCurrencyPosition() == "left")
|
@@ -445,39 +443,40 @@
|
|
445 |
<p class="description">
|
446 |
<?php _e('The amount to be billed one cycle after the initial payment.', 'paid-memberships-pro' );?>
|
447 |
<?php if($gateway == "braintree") { ?>
|
448 |
-
<strong <?php if(!empty($pmpro_braintree_error)) { ?>class="pmpro_red"<?php } ?>><?php
|
449 |
<?php } elseif($gateway == "stripe") { ?>
|
450 |
-
<p class="description"><strong <?php if(!empty($pmpro_stripe_error)) { ?>class="pmpro_red"<?php } ?>><?php
|
451 |
<?php }?>
|
452 |
</p>
|
453 |
<?php if($gateway == "braintree" && $edit < 0) { ?>
|
454 |
-
<p class="pmpro_message"><strong><?php
|
455 |
<?php } elseif($gateway == "braintree") {
|
456 |
$has_bt_plan = PMProGateway_braintree::checkLevelForPlan( $level->id );
|
457 |
?>
|
458 |
<p class="pmpro_message <?php if ( ! $has_bt_plan ) {?>pmpro_error<?php } ?>">
|
459 |
-
<strong><?php
|
460 |
<?php } ?>
|
461 |
</td>
|
462 |
</tr>
|
463 |
|
464 |
<tr class="recurring_info" <?php if(!pmpro_isLevelRecurring($level)) {?>style="display: none;"<?php } ?>>
|
465 |
-
<th scope="row" valign="top"><label for="billing_limit"><?php
|
466 |
<td>
|
467 |
-
<input name="billing_limit" type="text" value="<?php echo $level->billing_limit?>" class="small-text" />
|
468 |
<p class="description">
|
469 |
<?php _e('The <strong>total</strong> number of recurring billing cycles for this level, including the trial period (if applicable) but not including the initial payment. Set to zero if membership is indefinite.', 'paid-memberships-pro' );?>
|
470 |
<?php if ( ( $gateway == "stripe" ) && ! function_exists( 'pmprosbl_plugin_row_meta' ) ) { ?>
|
471 |
-
<br /><strong <?php if(!empty($pmpro_stripe_error)) { ?>class="pmpro_red"<?php } ?>><?php
|
472 |
<?php if ( ! function_exists( 'pmprosd_pmpro_membership_level_after_other_settings' ) ) {
|
473 |
$allowed_sbl_html = array (
|
474 |
'a' => array (
|
475 |
'href' => array(),
|
476 |
'target' => array(),
|
477 |
'title' => array(),
|
|
|
478 |
),
|
479 |
);
|
480 |
-
echo '<br />' . sprintf( wp_kses( __( 'Optional: Allow billing limits with Stripe using the <a href="%s" title="Paid Memberships Pro - Stripe Billing Limits Add On" target="_blank">Stripe Billing Limits Add On</a>.', 'paid-memberships-pro' ), $allowed_sbl_html ), 'https://www.paidmembershipspro.com/add-ons/pmpro-stripe-billing-limits/?utm_source=plugin&utm_medium=pmpro-membershiplevels&utm_campaign=add-ons&utm_content=stripe-billing-limits' ) . '</em></td></tr>';
|
481 |
} ?>
|
482 |
<?php } ?>
|
483 |
</p>
|
@@ -485,12 +484,12 @@
|
|
485 |
</tr>
|
486 |
|
487 |
<tr class="recurring_info" <?php if (!pmpro_isLevelRecurring($level)) echo "style='display:none;'";?>>
|
488 |
-
<th scope="row" valign="top"><label><?php
|
489 |
<td>
|
490 |
-
<input id="custom_trial" name="custom_trial" type="checkbox" value="yes" <?php if ( pmpro_isLevelTrial($level) ) { echo "checked='checked'"; } ?> onclick="jQuery('.trial_info').toggle();" /> <label for="custom_trial"><?php
|
491 |
|
492 |
<?php if($gateway == "twocheckout") { ?>
|
493 |
-
<p class="description"><strong <?php if(!empty($pmpro_twocheckout_error)) { ?>class="pmpro_red"<?php } ?>><?php
|
494 |
<?php } ?>
|
495 |
</td>
|
496 |
</tr>
|
@@ -501,13 +500,14 @@
|
|
501 |
'href' => array(),
|
502 |
'target' => array(),
|
503 |
'title' => array(),
|
|
|
504 |
),
|
505 |
);
|
506 |
-
echo '<tr><th> </th><td><p class="description">' . sprintf( wp_kses( __( 'Optional: Allow more customizable trial periods and renewal dates using the <a href="%s" title="Paid Memberships Pro - Subscription Delays Add On" target="_blank">Subscription Delays Add On</a>.', 'paid-memberships-pro' ), $allowed_sd_html ), 'https://www.paidmembershipspro.com/add-ons/subscription-delays/?utm_source=plugin&utm_medium=pmpro-membershiplevels&utm_campaign=add-ons&utm_content=subscription-delays' ) . '</p></td></tr>';
|
507 |
} ?>
|
508 |
|
509 |
<tr class="trial_info recurring_info" <?php if (!pmpro_isLevelTrial($level)) echo "style='display:none;'";?>>
|
510 |
-
<th scope="row" valign="top"><label for="trial_amount"><?php
|
511 |
<td>
|
512 |
<?php
|
513 |
if(pmpro_getCurrencyPosition() == "left")
|
@@ -522,11 +522,11 @@
|
|
522 |
<input name="trial_limit" type="text" value="<?php echo esc_attr($level->trial_limit);?>" class="small-text" />
|
523 |
<?php _e('subscription payments', 'paid-memberships-pro' );?>.
|
524 |
<?php if($gateway == "stripe") { ?>
|
525 |
-
<p class="description"><strong <?php if(!empty($pmpro_stripe_error)) { ?>class="pmpro_red"<?php } ?>><?php
|
526 |
<?php } elseif($gateway == "braintree") { ?>
|
527 |
-
<p class="description"><strong <?php if(!empty($pmpro_braintree_error)) { ?>class="pmpro_red"<?php } ?>><?php
|
528 |
<?php } elseif($gateway == "payflowpro") { ?>
|
529 |
-
<p class="description"><strong <?php if(!empty($pmpro_payflow_error)) { ?>class="pmpro_red"<?php } ?>><?php
|
530 |
<?php } ?>
|
531 |
</td>
|
532 |
</tr>
|
@@ -551,13 +551,13 @@
|
|
551 |
<table class="form-table">
|
552 |
<tbody>
|
553 |
<tr>
|
554 |
-
<th scope="row" valign="top"><label><?php
|
555 |
-
<td><input id="disable_signups" name="disable_signups" type="checkbox" value="yes" <?php if($level->id && !$level->allow_signups) { ?>checked="checked"<?php } ?> /> <label for="disable_signups"><?php
|
556 |
</tr>
|
557 |
|
558 |
<tr>
|
559 |
-
<th scope="row" valign="top"><label><?php
|
560 |
-
<td><input id="expiration" name="expiration" type="checkbox" value="yes" <?php if(pmpro_isLevelExpiring($level)) { echo "checked='checked'"; } ?> onclick="if(jQuery('#expiration').is(':checked')) { jQuery('.expiration_info').show(); } else { jQuery('.expiration_info').hide();}" /> <label for="expiration"><?php
|
561 |
</tr>
|
562 |
|
563 |
<?php if ( ! function_exists( 'pmprosed_pmpro_membership_level_after_other_settings' ) ) {
|
@@ -566,13 +566,14 @@
|
|
566 |
'href' => array(),
|
567 |
'target' => array(),
|
568 |
'title' => array(),
|
|
|
569 |
),
|
570 |
);
|
571 |
-
echo '<tr><th> </th><td><p class="description">' . sprintf( wp_kses( __( 'Optional: Allow more customizable expiration dates using the <a href="%s" title="Paid Memberships Pro - Set Expiration Date Add On" target="_blank">Set Expiration Date Add On</a>.', 'paid-memberships-pro' ), $allowed_sed_html ), 'https://www.paidmembershipspro.com/add-ons/pmpro-expiration-date/?utm_source=plugin&utm_medium=pmpro-membershiplevels&utm_campaign=add-ons&utm_content=pmpro-expiration-date' ) . '</p></td></tr>';
|
572 |
} ?>
|
573 |
|
574 |
<tr class="expiration_info" <?php if(!pmpro_isLevelExpiring($level)) {?>style="display: none;"<?php } ?>>
|
575 |
-
<th scope="row" valign="top"><label for="billing_amount"><?php
|
576 |
<td>
|
577 |
<input id="expiration_number" name="expiration_number" type="text" value="<?php echo esc_attr($level->expiration_number);?>" class="small-text" />
|
578 |
<select id="expiration_period" name="expiration_period">
|
@@ -583,10 +584,10 @@
|
|
583 |
}
|
584 |
?>
|
585 |
</select>
|
586 |
-
<p class="description"><?php
|
587 |
|
588 |
<div id="pmpro_expiration_warning" style="display: none;" class="notice error inline">
|
589 |
-
<p><?php printf( __( 'WARNING: This level is set with both a recurring billing amount and an expiration date. You only need to set one of these unless you really want this membership to expire after a certain number of payments. For more information, <a target="_blank" href="%s">see our post here</a>.', 'paid-memberships-pro' ), 'https://www.paidmembershipspro.com/important-notes-on-recurring-billing-and-expiration-dates-for-membership-levels/?utm_source=plugin&utm_medium=pmpro-membershiplevels&utm_campaign=blog&utm_content=important-notes-on-recurring-billing-and-expiration-dates-for-membership-levels' ); ?></p>
|
590 |
</div>
|
591 |
<script>
|
592 |
jQuery(document).ready(function() {
|
@@ -651,7 +652,7 @@
|
|
651 |
<table class="form-table">
|
652 |
<tbody>
|
653 |
<tr class="membership_categories">
|
654 |
-
<th scope="row" valign="top"><label><?php
|
655 |
<td>
|
656 |
<?php pmpro_listCategories(0, $level->categories); ?>
|
657 |
</td>
|
@@ -671,8 +672,8 @@
|
|
671 |
?>
|
672 |
|
673 |
<p class="submit topborder">
|
674 |
-
<input name="save" type="submit" class="button button-primary" value="<?php
|
675 |
-
<input name="cancel" type="button" class="button" value="<?php
|
676 |
</p>
|
677 |
</form>
|
678 |
</div>
|
@@ -772,29 +773,26 @@
|
|
772 |
<?php
|
773 |
}
|
774 |
?>
|
775 |
-
|
776 |
<?php if( empty( $s ) && count( $reordered_levels ) === 0 ) { ?>
|
777 |
<div class="pmpro-new-install">
|
778 |
-
<h2><?php
|
779 |
-
<a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-membershiplevels&edit=-1' ) ); ?>" class="button-primary"><?php
|
780 |
-
<a href="
|
781 |
</div> <!-- end pmpro-new-install -->
|
782 |
<?php } else { ?>
|
783 |
-
|
784 |
<form id="posts-filter" method="get" action="">
|
785 |
<p class="search-box">
|
786 |
-
<label class="screen-reader-text" for="post-search-input"><?php
|
787 |
<input type="hidden" name="page" value="pmpro-membershiplevels" />
|
788 |
<input id="post-search-input" type="text" value="<?php echo esc_attr($s); ?>" name="s" size="30" />
|
789 |
-
<input class="button" type="submit" value="<?php
|
790 |
</p>
|
791 |
</form>
|
792 |
<h1 class="wp-heading-inline"><?php esc_html_e( 'Membership Levels', 'paid-memberships-pro' ); ?></h1>
|
793 |
-
<a href="<?php echo add_query_arg( array( 'page' => 'pmpro-membershiplevels', 'edit' => -1 ), admin_url( 'admin.php' ) ); ?>" class="page-title-action"><?php esc_html_e( 'Add New Level', 'paid-memberships-pro' ); ?></a>
|
794 |
-
<hr class="wp-header-end">
|
795 |
-
|
796 |
<?php if(empty($_REQUEST['s']) && count($reordered_levels) > 1) { ?>
|
797 |
-
<p><?php
|
798 |
<?php } ?>
|
799 |
|
800 |
<?php
|
@@ -804,11 +802,11 @@
|
|
804 |
<table class="widefat membership-levels">
|
805 |
<thead>
|
806 |
<tr>
|
807 |
-
<th><?php
|
808 |
-
<th><?php
|
809 |
-
<th><?php
|
810 |
-
<th><?php
|
811 |
-
<th><?php
|
812 |
<?php do_action( 'pmpro_membership_levels_table_extra_cols_header', $reordered_levels ); ?>
|
813 |
</tr>
|
814 |
</thead>
|
@@ -816,7 +814,7 @@
|
|
816 |
<?php if ( !empty( $s ) && empty( $reordered_levels ) ) { ?>
|
817 |
<tr class="alternate">
|
818 |
<td colspan="5">
|
819 |
-
<?php
|
820 |
</td>
|
821 |
</tr>
|
822 |
<?php } ?>
|
@@ -828,7 +826,7 @@
|
|
828 |
<tr class="<?php if($count++ % 2 == 1) { ?>alternate<?php } ?> <?php if(!$level->allow_signups) { ?>pmpro_gray<?php } ?> <?php if(!pmpro_checkLevelForStripeCompatibility($level) || !pmpro_checkLevelForBraintreeCompatibility($level) || !pmpro_checkLevelForPayflowCompatibility($level) || !pmpro_checkLevelForTwoCheckoutCompatibility($level)) { ?>pmpro_error<?php } ?>">
|
829 |
<td><?php echo $level->id?></td>
|
830 |
<td class="level_name has-row-actions">
|
831 |
-
<span class="level-name"><a href="<?php echo add_query_arg( array( 'page' => 'pmpro-membershiplevels', 'edit' => $level->id ), admin_url( 'admin.php' ) ); ?>"><?php
|
832 |
<div class="row-actions">
|
833 |
<?php
|
834 |
$delete_text = esc_html(
|
@@ -933,7 +931,7 @@
|
|
933 |
<td><?php
|
934 |
if($level->allow_signups) {
|
935 |
if ( ! empty( $pmpro_pages['checkout'] ) ) {
|
936 |
-
?><a target="_blank" href="<?php echo add_query_arg( 'level', $level->id, pmpro_url("checkout") );?>"><?php
|
937 |
} else {
|
938 |
_e('Yes', 'paid-memberships-pro' );
|
939 |
}
|
166 |
}
|
167 |
|
168 |
if( ! empty( $msgt ) && $ml_recurring && $ml_expiration ) {
|
169 |
+
$msgt .= ' <strong class="red">' . sprintf( __( 'WARNING: A level was set with both a recurring billing amount and an expiration date. You only need to set one of these unless you really want this membership to expire after a specific time period. For more information, <a target="_blank" rel="nofollow noopener" href="%s">see our post here</a>.', 'paid-memberships-pro' ), 'https://www.paidmembershipspro.com/important-notes-on-recurring-billing-and-expiration-dates-for-membership-levels/?utm_source=plugin&utm_medium=pmpro-membershiplevels&utm_campaign=blog&utm_content=important-notes-on-recurring-billing-and-expiration-dates-for-membership-levels' ) . '</strong>';
|
170 |
|
171 |
// turn success to errors
|
172 |
if( $msg > 0 ) {
|
259 |
<?php
|
260 |
if($edit) {
|
261 |
?>
|
262 |
+
<hr class="wp-header-end">
|
263 |
<h1 class="wp-heading-inline">
|
264 |
<?php
|
265 |
if($edit > 0)
|
268 |
echo __("Add New Membership Level", 'paid-memberships-pro' );
|
269 |
?>
|
270 |
</h1>
|
|
|
|
|
271 |
<div>
|
272 |
<?php
|
273 |
// get the level...
|
342 |
<table class="form-table">
|
343 |
<tbody>
|
344 |
<tr>
|
345 |
+
<th scope="row" valign="top"><label><?php esc_html_e('ID', 'paid-memberships-pro' );?>:</label></th>
|
346 |
<td>
|
347 |
+
<?php echo esc_html( $level->id ); ?>
|
348 |
</td>
|
349 |
</tr>
|
350 |
|
351 |
<tr>
|
352 |
+
<th scope="row" valign="top"><label for="name"><?php esc_html_e('Name', 'paid-memberships-pro' );?>:</label></th>
|
353 |
<td><input name="name" type="text" value="<?php echo esc_attr($level->name);?>" class="regular-text" /></td>
|
354 |
</tr>
|
355 |
|
356 |
<tr>
|
357 |
+
<th scope="row" valign="top"><label for="description"><?php esc_html_e('Description', 'paid-memberships-pro' );?>:</label></th>
|
358 |
<td>
|
359 |
<div id="poststuff" class="pmpro_description">
|
360 |
<?php
|
372 |
</tr>
|
373 |
|
374 |
<tr>
|
375 |
+
<th scope="row" valign="top"><label for="confirmation"><?php esc_html_e('Confirmation Message', 'paid-memberships-pro' );?>:</label></th>
|
376 |
<td>
|
377 |
<div class="pmpro_confirmation">
|
378 |
<?php
|
386 |
}
|
387 |
?>
|
388 |
</div>
|
389 |
+
<input id="confirmation_in_email" name="confirmation_in_email" type="checkbox" value="yes" <?php checked( $confirmation_in_email, 1); ?> /> <label for="confirmation_in_email"><?php esc_html_e('Check to include this message in the membership confirmation email.', 'paid-memberships-pro' );?></label>
|
390 |
</td>
|
391 |
</tr>
|
392 |
</tbody>
|
393 |
</table>
|
394 |
<hr />
|
395 |
+
<h2 class="title"><?php esc_html_e('Billing Details', 'paid-memberships-pro' );?></h2>
|
396 |
<table class="form-table">
|
397 |
<tbody>
|
398 |
<tr>
|
399 |
+
<th scope="row" valign="top"><label for="initial_payment"><?php esc_html_e('Initial Payment', 'paid-memberships-pro' );?>:</label></th>
|
400 |
<td>
|
401 |
<?php
|
402 |
if(pmpro_getCurrencyPosition() == "left")
|
407 |
if(pmpro_getCurrencyPosition() == "right")
|
408 |
echo $pmpro_currency_symbol;
|
409 |
?>
|
410 |
+
<p class="description"><?php esc_html_e('The initial amount collected at registration.', 'paid-memberships-pro' );?></p>
|
411 |
</td>
|
412 |
</tr>
|
413 |
|
414 |
<tr>
|
415 |
+
<th scope="row" valign="top"><label><?php esc_html_e('Recurring Subscription', 'paid-memberships-pro' );?>:</label></th>
|
416 |
+
<td><input id="recurring" name="recurring" type="checkbox" value="yes" <?php if(pmpro_isLevelRecurring($level)) { echo "checked='checked'"; } ?> onclick="if(jQuery('#recurring').is(':checked')) { jQuery('.recurring_info').show(); if(jQuery('#custom_trial').is(':checked')) {jQuery('.trial_info').show();} else {jQuery('.trial_info').hide();} } else { jQuery('.recurring_info').hide();}" /> <label for="recurring"><?php esc_html_e('Check if this level has a recurring subscription payment.', 'paid-memberships-pro' );?></label></td>
|
417 |
</tr>
|
418 |
|
419 |
<tr class="recurring_info" <?php if(!pmpro_isLevelRecurring($level)) {?>style="display: none;"<?php } ?>>
|
420 |
+
<th scope="row" valign="top"><label for="billing_amount"><?php esc_html_e('Billing Amount', 'paid-memberships-pro' );?>:</label></th>
|
421 |
<td>
|
422 |
<?php
|
423 |
if(pmpro_getCurrencyPosition() == "left")
|
443 |
<p class="description">
|
444 |
<?php _e('The amount to be billed one cycle after the initial payment.', 'paid-memberships-pro' );?>
|
445 |
<?php if($gateway == "braintree") { ?>
|
446 |
+
<strong <?php if(!empty($pmpro_braintree_error)) { ?>class="pmpro_red"<?php } ?>><?php esc_html_e('Braintree integration currently only supports billing periods of "Month" or "Year".', 'paid-memberships-pro' );?></strong>
|
447 |
<?php } elseif($gateway == "stripe") { ?>
|
448 |
+
<p class="description"><strong <?php if(!empty($pmpro_stripe_error)) { ?>class="pmpro_red"<?php } ?>><?php esc_html_e('Stripe integration does not allow billing periods longer than 1 year.', 'paid-memberships-pro' );?></strong></p>
|
449 |
<?php }?>
|
450 |
</p>
|
451 |
<?php if($gateway == "braintree" && $edit < 0) { ?>
|
452 |
+
<p class="pmpro_message"><strong><?php esc_html_e('Note', 'paid-memberships-pro' );?>:</strong> <?php echo wp_kses_post( __( 'After saving this level, make note of the ID and create a "Plan" in your Braintree dashboard with the same settings and the "Plan ID" set to <em>pmpro_#</em>, where # is the level ID.', 'paid-memberships-pro' ) );?></p>
|
453 |
<?php } elseif($gateway == "braintree") {
|
454 |
$has_bt_plan = PMProGateway_braintree::checkLevelForPlan( $level->id );
|
455 |
?>
|
456 |
<p class="pmpro_message <?php if ( ! $has_bt_plan ) {?>pmpro_error<?php } ?>">
|
457 |
+
<strong><?php esc_html_e('Note', 'paid-memberships-pro' );?>:</strong> <?php echo esc_html( sprintf( __('You will need to create a "Plan" in your Braintree dashboard with the same settings and the "Plan ID" set to %s.', 'paid-memberships-pro' ), PMProGateway_braintree::get_plan_id( $level->id ) ) ); ?></p>
|
458 |
<?php } ?>
|
459 |
</td>
|
460 |
</tr>
|
461 |
|
462 |
<tr class="recurring_info" <?php if(!pmpro_isLevelRecurring($level)) {?>style="display: none;"<?php } ?>>
|
463 |
+
<th scope="row" valign="top"><label for="billing_limit"><?php esc_html_e('Billing Cycle Limit', 'paid-memberships-pro' );?>:</label></th>
|
464 |
<td>
|
465 |
+
<input name="billing_limit" type="text" value="<?php echo esc_attr( $level->billing_limit ) ?>" class="small-text" />
|
466 |
<p class="description">
|
467 |
<?php _e('The <strong>total</strong> number of recurring billing cycles for this level, including the trial period (if applicable) but not including the initial payment. Set to zero if membership is indefinite.', 'paid-memberships-pro' );?>
|
468 |
<?php if ( ( $gateway == "stripe" ) && ! function_exists( 'pmprosbl_plugin_row_meta' ) ) { ?>
|
469 |
+
<br /><strong <?php if(!empty($pmpro_stripe_error)) { ?>class="pmpro_red"<?php } ?>><?php esc_html_e('Stripe integration currently does not support billing limits. You can still set an expiration date below.', 'paid-memberships-pro' );?></strong>
|
470 |
<?php if ( ! function_exists( 'pmprosd_pmpro_membership_level_after_other_settings' ) ) {
|
471 |
$allowed_sbl_html = array (
|
472 |
'a' => array (
|
473 |
'href' => array(),
|
474 |
'target' => array(),
|
475 |
'title' => array(),
|
476 |
+
'rel' => array(),
|
477 |
),
|
478 |
);
|
479 |
+
echo '<br />' . sprintf( wp_kses( __( 'Optional: Allow billing limits with Stripe using the <a href="%s" title="Paid Memberships Pro - Stripe Billing Limits Add On" target="_blank" rel="nofollow noopener">Stripe Billing Limits Add On</a>.', 'paid-memberships-pro' ), $allowed_sbl_html ), 'https://www.paidmembershipspro.com/add-ons/pmpro-stripe-billing-limits/?utm_source=plugin&utm_medium=pmpro-membershiplevels&utm_campaign=add-ons&utm_content=stripe-billing-limits' ) . '</em></td></tr>';
|
480 |
} ?>
|
481 |
<?php } ?>
|
482 |
</p>
|
484 |
</tr>
|
485 |
|
486 |
<tr class="recurring_info" <?php if (!pmpro_isLevelRecurring($level)) echo "style='display:none;'";?>>
|
487 |
+
<th scope="row" valign="top"><label><?php esc_html_e('Custom Trial', 'paid-memberships-pro' );?>:</label></th>
|
488 |
<td>
|
489 |
+
<input id="custom_trial" name="custom_trial" type="checkbox" value="yes" <?php if ( pmpro_isLevelTrial($level) ) { echo "checked='checked'"; } ?> onclick="jQuery('.trial_info').toggle();" /> <label for="custom_trial"><?php esc_html_e('Check to add a custom trial period.', 'paid-memberships-pro' );?></label>
|
490 |
|
491 |
<?php if($gateway == "twocheckout") { ?>
|
492 |
+
<p class="description"><strong <?php if(!empty($pmpro_twocheckout_error)) { ?>class="pmpro_red"<?php } ?>><?php esc_html_e('2Checkout integration does not support custom trials. You can do one period trials by setting an initial payment different from the billing amount.', 'paid-memberships-pro' );?></strong></p>
|
493 |
<?php } ?>
|
494 |
</td>
|
495 |
</tr>
|
500 |
'href' => array(),
|
501 |
'target' => array(),
|
502 |
'title' => array(),
|
503 |
+
'rel' => array(),
|
504 |
),
|
505 |
);
|
506 |
+
echo '<tr><th> </th><td><p class="description">' . sprintf( wp_kses( __( 'Optional: Allow more customizable trial periods and renewal dates using the <a href="%s" title="Paid Memberships Pro - Subscription Delays Add On" target="_blank" rel="nofollow noopener">Subscription Delays Add On</a>.', 'paid-memberships-pro' ), $allowed_sd_html ), 'https://www.paidmembershipspro.com/add-ons/subscription-delays/?utm_source=plugin&utm_medium=pmpro-membershiplevels&utm_campaign=add-ons&utm_content=subscription-delays' ) . '</p></td></tr>';
|
507 |
} ?>
|
508 |
|
509 |
<tr class="trial_info recurring_info" <?php if (!pmpro_isLevelTrial($level)) echo "style='display:none;'";?>>
|
510 |
+
<th scope="row" valign="top"><label for="trial_amount"><?php esc_html_e('Trial Billing Amount', 'paid-memberships-pro' );?>:</label></th>
|
511 |
<td>
|
512 |
<?php
|
513 |
if(pmpro_getCurrencyPosition() == "left")
|
522 |
<input name="trial_limit" type="text" value="<?php echo esc_attr($level->trial_limit);?>" class="small-text" />
|
523 |
<?php _e('subscription payments', 'paid-memberships-pro' );?>.
|
524 |
<?php if($gateway == "stripe") { ?>
|
525 |
+
<p class="description"><strong <?php if(!empty($pmpro_stripe_error)) { ?>class="pmpro_red"<?php } ?>><?php esc_html_e('Stripe integration currently does not support trial amounts greater than $0.', 'paid-memberships-pro' );?></strong></p>
|
526 |
<?php } elseif($gateway == "braintree") { ?>
|
527 |
+
<p class="description"><strong <?php if(!empty($pmpro_braintree_error)) { ?>class="pmpro_red"<?php } ?>><?php esc_html_e('Braintree integration currently does not support trial amounts greater than $0.', 'paid-memberships-pro' );?></strong></p>
|
528 |
<?php } elseif($gateway == "payflowpro") { ?>
|
529 |
+
<p class="description"><strong <?php if(!empty($pmpro_payflow_error)) { ?>class="pmpro_red"<?php } ?>><?php esc_html_e('Payflow integration currently does not support trial amounts greater than $0.', 'paid-memberships-pro' );?></strong></p>
|
530 |
<?php } ?>
|
531 |
</td>
|
532 |
</tr>
|
551 |
<table class="form-table">
|
552 |
<tbody>
|
553 |
<tr>
|
554 |
+
<th scope="row" valign="top"><label><?php esc_html_e('Disable New Signups', 'paid-memberships-pro' );?>:</label></th>
|
555 |
+
<td><input id="disable_signups" name="disable_signups" type="checkbox" value="yes" <?php if($level->id && !$level->allow_signups) { ?>checked="checked"<?php } ?> /> <label for="disable_signups"><?php esc_html_e('Check to hide this level from the membership levels page and disable registration.', 'paid-memberships-pro' );?></label></td>
|
556 |
</tr>
|
557 |
|
558 |
<tr>
|
559 |
+
<th scope="row" valign="top"><label><?php esc_html_e('Membership Expiration', 'paid-memberships-pro' );?>:</label></th>
|
560 |
+
<td><input id="expiration" name="expiration" type="checkbox" value="yes" <?php if(pmpro_isLevelExpiring($level)) { echo "checked='checked'"; } ?> onclick="if(jQuery('#expiration').is(':checked')) { jQuery('.expiration_info').show(); } else { jQuery('.expiration_info').hide();}" /> <label for="expiration"><?php esc_html_e('Check this to set when membership access expires.', 'paid-memberships-pro' );?></label></a></td>
|
561 |
</tr>
|
562 |
|
563 |
<?php if ( ! function_exists( 'pmprosed_pmpro_membership_level_after_other_settings' ) ) {
|
566 |
'href' => array(),
|
567 |
'target' => array(),
|
568 |
'title' => array(),
|
569 |
+
'rel' => array(),
|
570 |
),
|
571 |
);
|
572 |
+
echo '<tr><th> </th><td><p class="description">' . sprintf( wp_kses( __( 'Optional: Allow more customizable expiration dates using the <a href="%s" title="Paid Memberships Pro - Set Expiration Date Add On" target="_blank" rel="nofollow noopener">Set Expiration Date Add On</a>.', 'paid-memberships-pro' ), $allowed_sed_html ), 'https://www.paidmembershipspro.com/add-ons/pmpro-expiration-date/?utm_source=plugin&utm_medium=pmpro-membershiplevels&utm_campaign=add-ons&utm_content=pmpro-expiration-date' ) . '</p></td></tr>';
|
573 |
} ?>
|
574 |
|
575 |
<tr class="expiration_info" <?php if(!pmpro_isLevelExpiring($level)) {?>style="display: none;"<?php } ?>>
|
576 |
+
<th scope="row" valign="top"><label for="billing_amount"><?php esc_html_e('Expires In', 'paid-memberships-pro' );?>:</label></th>
|
577 |
<td>
|
578 |
<input id="expiration_number" name="expiration_number" type="text" value="<?php echo esc_attr($level->expiration_number);?>" class="small-text" />
|
579 |
<select id="expiration_period" name="expiration_period">
|
584 |
}
|
585 |
?>
|
586 |
</select>
|
587 |
+
<p class="description"><?php esc_html_e('Set the duration of membership access. Note that the any future payments (recurring subscription, if any) will be cancelled when the membership expires.', 'paid-memberships-pro' );?></p>
|
588 |
|
589 |
<div id="pmpro_expiration_warning" style="display: none;" class="notice error inline">
|
590 |
+
<p><?php printf( __( 'WARNING: This level is set with both a recurring billing amount and an expiration date. You only need to set one of these unless you really want this membership to expire after a certain number of payments. For more information, <a target="_blank" rel="nofollow noopener" href="%s">see our post here</a>.', 'paid-memberships-pro' ), 'https://www.paidmembershipspro.com/important-notes-on-recurring-billing-and-expiration-dates-for-membership-levels/?utm_source=plugin&utm_medium=pmpro-membershiplevels&utm_campaign=blog&utm_content=important-notes-on-recurring-billing-and-expiration-dates-for-membership-levels' ); ?></p>
|
591 |
</div>
|
592 |
<script>
|
593 |
jQuery(document).ready(function() {
|
652 |
<table class="form-table">
|
653 |
<tbody>
|
654 |
<tr class="membership_categories">
|
655 |
+
<th scope="row" valign="top"><label><?php esc_html_e('Categories', 'paid-memberships-pro' );?>:</label></th>
|
656 |
<td>
|
657 |
<?php pmpro_listCategories(0, $level->categories); ?>
|
658 |
</td>
|
672 |
?>
|
673 |
|
674 |
<p class="submit topborder">
|
675 |
+
<input name="save" type="submit" class="button button-primary" value="<?php esc_attr_e('Save Level', 'paid-memberships-pro' ); ?>" />
|
676 |
+
<input name="cancel" type="button" class="button" value="<?php esc_attr_e('Cancel', 'paid-memberships-pro' ); ?>" onclick="location.href='<?php echo esc_url( add_query_arg( 'page', 'pmpro-membershiplevels' , admin_url( '/admin.php') ) ); ?>';" />
|
677 |
</p>
|
678 |
</form>
|
679 |
</div>
|
773 |
<?php
|
774 |
}
|
775 |
?>
|
776 |
+
<hr class="wp-header-end">
|
777 |
<?php if( empty( $s ) && count( $reordered_levels ) === 0 ) { ?>
|
778 |
<div class="pmpro-new-install">
|
779 |
+
<h2><?php esc_html_e( 'No Membership Levels Found', 'paid-memberships-pro' ); ?></h2>
|
780 |
+
<a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-membershiplevels&edit=-1' ) ); ?>" class="button-primary"><?php esc_html_e( 'Create a Membership Level', 'paid-memberships-pro' ); ?></a>
|
781 |
+
<a href="https://www.paidmembershipspro.com/documentation/initial-plugin-setup/step-1-add-new-membership-level/?utm_source=plugin&utm_medium=pmpro-membershiplevels&utm_campaign=documentation&utm_content=step-1-add-new-membership-level" target="_blank" rel="noopener noreferrer" class="button"><?php esc_html_e( 'Video: Membership Levels', 'paid-memberships-pro' ); ?></a>
|
782 |
</div> <!-- end pmpro-new-install -->
|
783 |
<?php } else { ?>
|
|
|
784 |
<form id="posts-filter" method="get" action="">
|
785 |
<p class="search-box">
|
786 |
+
<label class="screen-reader-text" for="post-search-input"><?php esc_html_e('Search Levels', 'paid-memberships-pro' );?>:</label>
|
787 |
<input type="hidden" name="page" value="pmpro-membershiplevels" />
|
788 |
<input id="post-search-input" type="text" value="<?php echo esc_attr($s); ?>" name="s" size="30" />
|
789 |
+
<input class="button" type="submit" value="<?php esc_attr_e('Search Levels', 'paid-memberships-pro' );?>" id="search-submit" />
|
790 |
</p>
|
791 |
</form>
|
792 |
<h1 class="wp-heading-inline"><?php esc_html_e( 'Membership Levels', 'paid-memberships-pro' ); ?></h1>
|
793 |
+
<a href="<?php echo esc_url( add_query_arg( array( 'page' => 'pmpro-membershiplevels', 'edit' => -1 ), admin_url( 'admin.php' ) ) ); ?>" class="page-title-action"><?php esc_html_e( 'Add New Level', 'paid-memberships-pro' ); ?></a>
|
|
|
|
|
794 |
<?php if(empty($_REQUEST['s']) && count($reordered_levels) > 1) { ?>
|
795 |
+
<p><?php esc_html_e('Drag and drop membership levels to reorder them on the Levels page.', 'paid-memberships-pro' ); ?></p>
|
796 |
<?php } ?>
|
797 |
|
798 |
<?php
|
802 |
<table class="widefat membership-levels">
|
803 |
<thead>
|
804 |
<tr>
|
805 |
+
<th><?php esc_html_e('ID', 'paid-memberships-pro' );?></th>
|
806 |
+
<th><?php esc_html_e('Name', 'paid-memberships-pro' );?></th>
|
807 |
+
<th><?php esc_html_e('Billing Details', 'paid-memberships-pro' );?></th>
|
808 |
+
<th><?php esc_html_e('Expiration', 'paid-memberships-pro' );?></th>
|
809 |
+
<th><?php esc_html_e('Allow Signups', 'paid-memberships-pro' );?></th>
|
810 |
<?php do_action( 'pmpro_membership_levels_table_extra_cols_header', $reordered_levels ); ?>
|
811 |
</tr>
|
812 |
</thead>
|
814 |
<?php if ( !empty( $s ) && empty( $reordered_levels ) ) { ?>
|
815 |
<tr class="alternate">
|
816 |
<td colspan="5">
|
817 |
+
<?php esc_html_e( 'No Membership Levels Found', 'paid-memberships-pro' ); ?>
|
818 |
</td>
|
819 |
</tr>
|
820 |
<?php } ?>
|
826 |
<tr class="<?php if($count++ % 2 == 1) { ?>alternate<?php } ?> <?php if(!$level->allow_signups) { ?>pmpro_gray<?php } ?> <?php if(!pmpro_checkLevelForStripeCompatibility($level) || !pmpro_checkLevelForBraintreeCompatibility($level) || !pmpro_checkLevelForPayflowCompatibility($level) || !pmpro_checkLevelForTwoCheckoutCompatibility($level)) { ?>pmpro_error<?php } ?>">
|
827 |
<td><?php echo $level->id?></td>
|
828 |
<td class="level_name has-row-actions">
|
829 |
+
<span class="level-name"><a href="<?php echo esc_url( add_query_arg( array( 'page' => 'pmpro-membershiplevels', 'edit' => $level->id ), admin_url( 'admin.php' ) ) ); ?>"><?php echo esc_html( $level->name ); ?></a></span>
|
830 |
<div class="row-actions">
|
831 |
<?php
|
832 |
$delete_text = esc_html(
|
931 |
<td><?php
|
932 |
if($level->allow_signups) {
|
933 |
if ( ! empty( $pmpro_pages['checkout'] ) ) {
|
934 |
+
?><a target="_blank" href="<?php echo esc_url( add_query_arg( 'level', $level->id, pmpro_url("checkout") ) );?>"><?php esc_html_e('Yes', 'paid-memberships-pro' );?></a><?php
|
935 |
} else {
|
936 |
_e('Yes', 'paid-memberships-pro' );
|
937 |
}
|
adminpages/memberslist-csv.php
CHANGED
@@ -163,9 +163,15 @@
|
|
163 |
$search = " AND $key_column LIKE '%" . esc_sql( $s ) . "%' ";
|
164 |
} elseif ( $search_key === 'discount' || $search_key === 'discount_code' || $search_key === 'dc' ) {
|
165 |
$user_ids = $wpdb->get_col( "SELECT dcu.user_id FROM $wpdb->pmpro_discount_codes_uses dcu LEFT JOIN $wpdb->pmpro_discount_codes dc ON dcu.code_id = dc.id WHERE dc.code = '" . esc_sql( $s ) . "'" );
|
|
|
|
|
|
|
166 |
$search = " AND u.ID IN(" . implode( ",", $user_ids ) . ") ";
|
167 |
} else {
|
168 |
$user_ids = $wpdb->get_col( "SELECT user_id FROM $wpdb->usermeta WHERE meta_key = '" . esc_sql( $search_key ) . "' AND meta_value lIKE '%" . esc_sql( $s ) . "%'" );
|
|
|
|
|
|
|
169 |
$search = " AND u.ID IN(" . implode( ",", $user_ids ) . ") ";
|
170 |
}
|
171 |
} else {
|
163 |
$search = " AND $key_column LIKE '%" . esc_sql( $s ) . "%' ";
|
164 |
} elseif ( $search_key === 'discount' || $search_key === 'discount_code' || $search_key === 'dc' ) {
|
165 |
$user_ids = $wpdb->get_col( "SELECT dcu.user_id FROM $wpdb->pmpro_discount_codes_uses dcu LEFT JOIN $wpdb->pmpro_discount_codes dc ON dcu.code_id = dc.id WHERE dc.code = '" . esc_sql( $s ) . "'" );
|
166 |
+
if ( empty( $user_ids ) ) {
|
167 |
+
$user_ids = array(0); // Avoid warning, but ensure 0 results.
|
168 |
+
}
|
169 |
$search = " AND u.ID IN(" . implode( ",", $user_ids ) . ") ";
|
170 |
} else {
|
171 |
$user_ids = $wpdb->get_col( "SELECT user_id FROM $wpdb->usermeta WHERE meta_key = '" . esc_sql( $search_key ) . "' AND meta_value lIKE '%" . esc_sql( $s ) . "%'" );
|
172 |
+
if ( empty( $user_ids ) ) {
|
173 |
+
$user_ids = array(0); // Avoid warning, but ensure 0 results.
|
174 |
+
}
|
175 |
$search = " AND u.ID IN(" . implode( ",", $user_ids ) . ") ";
|
176 |
}
|
177 |
} else {
|
adminpages/memberslist.php
CHANGED
@@ -17,10 +17,9 @@ if ( isset( $_REQUEST['l'] ) ) {
|
|
17 |
|
18 |
// Render the List Table.
|
19 |
?>
|
|
|
20 |
<h1 class="wp-heading-inline"><?php esc_html_e( 'Members List', 'paid-memberships-pro' ); ?></h1>
|
21 |
<a target="_blank" href="<?php echo esc_url( $csv_export_link ); ?>" class="page-title-action"><?php esc_html_e( 'Export to CSV', 'paid-memberships-pro' ); ?></a>
|
22 |
-
<hr class="wp-header-end">
|
23 |
-
|
24 |
<?php do_action( 'pmpro_memberslist_before_table' ); ?>
|
25 |
<form id="member-list-form" method="get">
|
26 |
<input type="hidden" name="page" value="pmpro-memberslist" />
|
17 |
|
18 |
// Render the List Table.
|
19 |
?>
|
20 |
+
<hr class="wp-header-end">
|
21 |
<h1 class="wp-heading-inline"><?php esc_html_e( 'Members List', 'paid-memberships-pro' ); ?></h1>
|
22 |
<a target="_blank" href="<?php echo esc_url( $csv_export_link ); ?>" class="page-title-action"><?php esc_html_e( 'Export to CSV', 'paid-memberships-pro' ); ?></a>
|
|
|
|
|
23 |
<?php do_action( 'pmpro_memberslist_before_table' ); ?>
|
24 |
<form id="member-list-form" method="get">
|
25 |
<input type="hidden" name="page" value="pmpro-memberslist" />
|
adminpages/orders.php
CHANGED
@@ -162,9 +162,10 @@ if ( ! empty( $_REQUEST['delete'] ) ) {
|
|
162 |
$nonceokay = false;
|
163 |
}
|
164 |
|
165 |
-
$
|
|
|
166 |
if ( $nonceokay && $dorder->deleteMe() ) {
|
167 |
-
$pmpro_msg
|
168 |
$pmpro_msgt = 'success';
|
169 |
} else {
|
170 |
$pmpro_msg = __( 'Error deleting order.', 'paid-memberships-pro' );
|
@@ -172,6 +173,31 @@ if ( ! empty( $_REQUEST['delete'] ) ) {
|
|
172 |
}
|
173 |
}
|
174 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
175 |
$thisyear = date( 'Y', $now );
|
176 |
|
177 |
// this array stores fields that should be read only
|
@@ -289,7 +315,8 @@ if ( ! empty( $_REQUEST['save'] ) ) {
|
|
289 |
$day = intval( $_POST['ts_day'] );
|
290 |
$hour = intval( $_POST['ts_hour'] );
|
291 |
$minute = intval( $_POST['ts_minute'] );
|
292 |
-
$
|
|
|
293 |
}
|
294 |
|
295 |
// affiliate stuff
|
@@ -385,14 +412,47 @@ if ( function_exists( 'pmpro_add_email_order_modal' ) ) {
|
|
385 |
|
386 |
<?php if ( ! empty( $order ) ) { ?>
|
387 |
|
388 |
-
<?php if ( ! empty( $order->id ) ) {
|
389 |
-
|
390 |
-
|
391 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
392 |
<?php } else { ?>
|
393 |
<h1 class="wp-heading-inline"><?php esc_html_e( 'New Order', 'paid-memberships-pro' ); ?></h1>
|
394 |
<?php } ?>
|
395 |
-
<hr class="wp-header-end">
|
396 |
|
397 |
<?php if ( ! empty( $pmpro_msg ) ) { ?>
|
398 |
<div id="message" class="
|
@@ -412,42 +472,77 @@ if ( function_exists( 'pmpro_add_email_order_modal' ) ) {
|
|
412 |
<table class="form-table">
|
413 |
<tbody>
|
414 |
<tr>
|
415 |
-
<th scope="row" valign="top"><label
|
416 |
-
<td>
|
417 |
-
<?php
|
418 |
-
if ( ! empty( $order->id ) ) {
|
419 |
-
echo esc_html( $order->id );
|
420 |
-
} else {
|
421 |
-
echo '<p class="description">' . __( 'This will be generated when you save.', 'paid-memberships-pro' ) . '</p>';
|
422 |
-
}
|
423 |
-
?>
|
424 |
-
</td>
|
425 |
-
</tr>
|
426 |
-
|
427 |
-
<tr>
|
428 |
-
<th scope="row" valign="top"><label for="code"><?php _e( 'Code', 'paid-memberships-pro' ); ?>:</label></th>
|
429 |
<td>
|
430 |
<?php
|
431 |
if ( in_array( 'code', $read_only_fields ) ) {
|
432 |
echo esc_html( $order->code );
|
433 |
} else { ?>
|
434 |
-
<input id="code" name="code" type="text" value="<?php echo esc_attr( $order->code ); ?>"
|
435 |
<?php
|
436 |
}
|
437 |
?>
|
|
|
438 |
<?php if ( $order_id < 0 ) { ?>
|
439 |
<p class="description"><?php esc_html_e( 'Randomly generated for you.', 'paid-memberships-pro' ); ?></p>
|
440 |
<?php } ?>
|
441 |
</td>
|
442 |
</tr>
|
443 |
<tr>
|
444 |
-
<th scope="row" valign="top"><label for="
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
445 |
<td>
|
446 |
<?php
|
447 |
if ( in_array( 'user_id', $read_only_fields ) && $order_id > 0 ) {
|
448 |
echo esc_html( $order->user_id );
|
449 |
} else { ?>
|
450 |
-
<input id="user_id" name="user_id" type="text" value="<?php echo esc_attr( $order->user_id ); ?>"
|
451 |
<?php
|
452 |
}
|
453 |
?>
|
@@ -460,12 +555,23 @@ if ( function_exists( 'pmpro_add_email_order_modal' ) ) {
|
|
460 |
if ( in_array( 'membership_id', $read_only_fields ) && $order_id > 0 ) {
|
461 |
echo esc_html( $order->membership_id );
|
462 |
} else { ?>
|
463 |
-
<input id="membership_id" name="membership_id" type="text" value="<?php echo esc_attr( $order->membership_id ); ?>"
|
464 |
<?php
|
465 |
}
|
466 |
?>
|
467 |
</td>
|
468 |
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
469 |
<tr>
|
470 |
<th scope="row" valign="top"><label for="billing_name"><?php esc_html_e( 'Billing Name', 'paid-memberships-pro' ); ?>:</label>
|
471 |
</th>
|
@@ -555,6 +661,22 @@ if ( function_exists( 'pmpro_add_email_order_modal' ) ) {
|
|
555 |
<?php } ?>
|
556 |
</td>
|
557 |
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
558 |
<?php
|
559 |
if ( $order_id > 0 ) {
|
560 |
$order->getDiscountCode();
|
@@ -594,7 +716,7 @@ if ( function_exists( 'pmpro_add_email_order_modal' ) ) {
|
|
594 |
</tr>
|
595 |
<?php } ?>
|
596 |
<tr>
|
597 |
-
<th scope="row" valign="top"><label for="subtotal"><?php
|
598 |
<td>
|
599 |
<?php
|
600 |
if ( in_array( 'subtotal', $read_only_fields ) && $order_id > 0 ) {
|
@@ -711,23 +833,15 @@ if ( function_exists( 'pmpro_add_email_order_modal' ) ) {
|
|
711 |
</tr>
|
712 |
|
713 |
<?php
|
714 |
-
} else {
|
715 |
-
?>
|
716 |
-
<tr>
|
717 |
-
<th scope="row" valign="top"><label
|
718 |
-
for="expirationmonth"><?php esc_html_e( 'Expiration Month', 'paid-memberships-pro' ); ?>:</label></th>
|
719 |
-
<td>
|
720 |
-
<input id="expirationmonth" name="expirationmonth" type="text" size="10"
|
721 |
-
value="<?php echo esc_attr( $order->expirationmonth ); ?>"/>
|
722 |
-
<span class="description">MM</span>
|
723 |
-
</td>
|
724 |
-
</tr>
|
725 |
<tr>
|
726 |
-
<th scope="row" valign="top"><label for="
|
727 |
<td>
|
|
|
|
|
728 |
<input id="expirationyear" name="expirationyear" type="text" size="10"
|
729 |
value="<?php echo esc_attr( $order->expirationyear ); ?>"/>
|
730 |
-
<span class="description"
|
731 |
</td>
|
732 |
</tr>
|
733 |
<?php } ?>
|
@@ -736,7 +850,7 @@ if ( function_exists( 'pmpro_add_email_order_modal' ) ) {
|
|
736 |
<td>
|
737 |
<?php
|
738 |
if ( in_array( 'status', $read_only_fields ) && $order_id > 0 ) {
|
739 |
-
echo esc_html( $order->status );
|
740 |
} else { ?>
|
741 |
<?php
|
742 |
$statuses = pmpro_getOrderStatuses();
|
@@ -752,7 +866,12 @@ if ( function_exists( 'pmpro_add_email_order_modal' ) ) {
|
|
752 |
?>
|
753 |
</td>
|
754 |
</tr>
|
755 |
-
|
|
|
|
|
|
|
|
|
|
|
756 |
<tr>
|
757 |
<th scope="row" valign="top"><label for="gateway"><?php esc_html_e( 'Gateway', 'paid-memberships-pro' ); ?>:</label></th>
|
758 |
<td>
|
@@ -794,7 +913,7 @@ if ( function_exists( 'pmpro_add_email_order_modal' ) ) {
|
|
794 |
|
795 |
<tr>
|
796 |
<th scope="row" valign="top"><label
|
797 |
-
for="payment_transaction_id"><?php
|
798 |
<td>
|
799 |
<?php
|
800 |
if ( in_array( 'payment_transaction_id', $read_only_fields ) && $order_id > 0 ) {
|
@@ -814,56 +933,21 @@ if ( function_exists( 'pmpro_add_email_order_modal' ) ) {
|
|
814 |
<?php
|
815 |
if ( in_array( 'subscription_transaction_id', $read_only_fields ) && $order_id > 0 ) {
|
816 |
echo $order->subscription_transaction_id;
|
817 |
-
} else {
|
818 |
-
|
819 |
-
|
820 |
-
|
|
|
821 |
<?php } ?>
|
822 |
<p class="description"><?php esc_html_e( 'Generated by the gateway. Useful to cross reference subscriptions.', 'paid-memberships-pro' ); ?></p>
|
823 |
</td>
|
824 |
</tr>
|
825 |
-
|
826 |
-
|
827 |
-
|
828 |
-
|
829 |
-
|
830 |
-
|
831 |
-
echo esc_html( date_i18n( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), $order->getTimestamp() ) );
|
832 |
-
} else {
|
833 |
-
// set up date vars
|
834 |
-
if ( ! empty( $order->timestamp ) ) {
|
835 |
-
$timestamp = $order->getTimestamp();
|
836 |
-
} else {
|
837 |
-
$timestamp = current_time( 'timestamp' );
|
838 |
-
}
|
839 |
-
|
840 |
-
$year = date( 'Y', $timestamp );
|
841 |
-
$month = date( 'n', $timestamp );
|
842 |
-
$day = date( 'j', $timestamp );
|
843 |
-
$hour = date( 'H', $timestamp );
|
844 |
-
$minute = date( 'i', $timestamp );
|
845 |
-
$second = date( 's', $timestamp );
|
846 |
-
?>
|
847 |
-
<select id="ts_month" name="ts_month">
|
848 |
-
<?php
|
849 |
-
for ( $i = 1; $i < 13; $i ++ ) {
|
850 |
-
?>
|
851 |
-
<option value="<?php echo esc_attr( $i ); ?>" <?php selected( $i, $month ); ?>>
|
852 |
-
<?php echo esc_html( date_i18n( 'F', mktime( 0, 0, 0, $i, 2 ) ) ); ?>
|
853 |
-
</option>
|
854 |
-
<?php
|
855 |
-
}
|
856 |
-
?>
|
857 |
-
</select>
|
858 |
-
<input name="ts_day" type="text" size="2" value="<?php echo esc_attr( $day ); ?>"/>
|
859 |
-
<input name="ts_year" type="text" size="4" value="<?php echo esc_attr( $year ); ?>"/>
|
860 |
-
<?php esc_html_e( 'at', 'paid-memberships-pro' ); ?>
|
861 |
-
<input name="ts_hour" type="text" size="2" value="<?php echo esc_attr( $hour ); ?>"/> :
|
862 |
-
<input name="ts_minute" type="text" size="2" value="<?php echo esc_attr( $minute ); ?>"/>
|
863 |
-
<?php } ?>
|
864 |
-
</td>
|
865 |
-
</tr>
|
866 |
-
|
867 |
<?php
|
868 |
$affiliates = apply_filters( 'pmpro_orders_show_affiliate_ids', false );
|
869 |
if ( ! empty( $affiliates ) ) {
|
@@ -968,7 +1052,7 @@ if ( function_exists( 'pmpro_add_email_order_modal' ) ) {
|
|
968 |
<form id="posts-filter" method="get" action="">
|
969 |
|
970 |
<h1 class="wp-heading-inline"><?php esc_html_e( 'Orders', 'paid-memberships-pro' ); ?></h1>
|
971 |
-
<a href="<?php echo esc_url( add_query_arg( array( 'page' => 'pmpro-orders', 'order' => -1 ), admin_url( 'admin.php' ) ) ); ?>" class="page-title-action"><?php esc_html_e( 'Add New Order', 'paid-memberships-pro' ); ?></a>
|
972 |
|
973 |
<?php
|
974 |
// build the export URL
|
@@ -989,7 +1073,7 @@ if ( function_exists( 'pmpro_add_email_order_modal' ) ) {
|
|
989 |
);
|
990 |
$export_url = add_query_arg( $url_params, $export_url );
|
991 |
?>
|
992 |
-
<a target="_blank" href="<?php echo esc_url( $export_url ); ?>" class="page-title-action"><?php esc_html_e( 'Export to CSV', 'paid-memberships-pro' ); ?></a>
|
993 |
|
994 |
<hr class="wp-header-end">
|
995 |
|
@@ -1006,114 +1090,117 @@ if ( function_exists( 'pmpro_add_email_order_modal' ) ) {
|
|
1006 |
"><p><?php echo $pmpro_msg; ?></p></div>
|
1007 |
<?php } ?>
|
1008 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1009 |
|
1010 |
-
<
|
1011 |
-
|
1012 |
-
|
1013 |
-
<
|
1014 |
-
|
1015 |
-
|
1016 |
-
|
1017 |
-
|
1018 |
-
|
1019 |
-
|
1020 |
-
|
1021 |
-
|
1022 |
-
|
1023 |
-
|
1024 |
-
|
1025 |
-
|
1026 |
-
|
1027 |
-
|
1028 |
-
|
1029 |
-
|
1030 |
-
|
1031 |
-
<?php
|
1032 |
-
|
1033 |
-
|
1034 |
-
</select>
|
1035 |
|
1036 |
-
|
1037 |
|
1038 |
-
|
1039 |
-
|
1040 |
-
|
1041 |
-
|
1042 |
-
|
1043 |
-
|
1044 |
|
1045 |
-
|
1046 |
-
|
1047 |
-
|
1048 |
-
|
1049 |
|
1050 |
|
1051 |
-
|
1052 |
|
1053 |
-
|
1054 |
-
|
1055 |
-
|
1056 |
-
|
1057 |
-
|
1058 |
-
|
1059 |
|
1060 |
|
1061 |
-
|
1062 |
-
|
1063 |
|
1064 |
-
|
1065 |
|
1066 |
-
|
1067 |
|
1068 |
-
|
1069 |
-
|
1070 |
-
|
1071 |
-
|
1072 |
-
|
1073 |
-
|
1074 |
-
|
1075 |
-
|
1076 |
|
1077 |
-
|
1078 |
|
1079 |
-
|
1080 |
-
|
1081 |
-
|
1082 |
-
|
1083 |
-
|
1084 |
-
|
1085 |
-
|
1086 |
-
|
1087 |
-
|
1088 |
|
1089 |
-
|
1090 |
|
1091 |
-
|
1092 |
-
|
1093 |
-
|
1094 |
-
|
1095 |
-
|
1096 |
-
|
1097 |
-
|
1098 |
-
|
1099 |
-
|
1100 |
-
<?php } ?>
|
1101 |
-
</select>
|
1102 |
<?php } ?>
|
|
|
|
|
1103 |
|
1104 |
-
|
1105 |
-
|
1106 |
-
|
1107 |
-
|
1108 |
-
|
1109 |
-
|
1110 |
-
|
1111 |
-
|
1112 |
-
|
1113 |
|
1114 |
-
|
1115 |
-
</li>
|
1116 |
-
</ul>
|
1117 |
|
1118 |
<script>
|
1119 |
//update month/year when period dropdown is changed
|
@@ -1244,13 +1331,6 @@ if ( function_exists( 'pmpro_add_email_order_modal' ) ) {
|
|
1244 |
|
1245 |
</script>
|
1246 |
|
1247 |
-
<p class="search-box">
|
1248 |
-
<label class="hidden" for="post-search-input"><?php esc_html_e( 'Search Orders', 'paid-memberships-pro' ); ?>:</label>
|
1249 |
-
<input type="hidden" name="page" value="pmpro-orders"/>
|
1250 |
-
<input id="post-search-input" type="text" value="<?php echo esc_attr( wp_unslash( $s ) ); ?>" name="s"/>
|
1251 |
-
<input class="button" type="submit" value="<?php esc_attr_e( 'Search Orders', 'paid-memberships-pro' ); ?>"/>
|
1252 |
-
</p>
|
1253 |
-
|
1254 |
<?php
|
1255 |
if ( $s ) {
|
1256 |
$sqlQuery = "SELECT SQL_CALC_FOUND_ROWS o.id FROM $wpdb->pmpro_membership_orders o LEFT JOIN $wpdb->users u ON o.user_id = u.ID LEFT JOIN $wpdb->pmpro_membership_levels l ON o.membership_id = l.id ";
|
@@ -1321,44 +1401,54 @@ if ( function_exists( 'pmpro_add_email_order_modal' ) ) {
|
|
1321 |
|
1322 |
if ( $order_ids ) {
|
1323 |
?>
|
1324 |
-
<
|
|
|
|
|
1325 |
<?php
|
1326 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1327 |
?>
|
1328 |
-
|
|
|
|
|
|
|
1329 |
<thead>
|
1330 |
<tr class="thead">
|
1331 |
-
<th><?php esc_html_e( '
|
1332 |
-
<th><?php esc_html_e( '
|
1333 |
-
<th><?php esc_html_e( 'User', 'paid-memberships-pro' ); ?></th>
|
1334 |
<?php do_action( 'pmpro_orders_extra_cols_header', $order_ids ); ?>
|
1335 |
-
<th><?php esc_html_e( 'Level', 'paid-memberships-pro' ); ?></th>
|
1336 |
-
<th><?php esc_html_e( 'Total', 'paid-memberships-pro' ); ?></th>
|
1337 |
-
<th><?php esc_html_e( '
|
1338 |
-
<th><?php esc_html_e( 'Gateway', 'paid-memberships-pro' ); ?></th>
|
1339 |
-
<th><?php esc_html_e( 'Transaction IDs', 'paid-memberships-pro' ); ?></th>
|
1340 |
-
<th><?php esc_html_e( 'Status', 'paid-memberships-pro' ); ?></th>
|
1341 |
-
<th><?php esc_html_e( 'Date', 'paid-memberships-pro' ); ?></th>
|
1342 |
-
|
|
|
|
|
1343 |
</tr>
|
1344 |
</thead>
|
1345 |
<tbody id="orders" class="list:order orders-list">
|
1346 |
<?php
|
1347 |
-
$count = 0;
|
1348 |
foreach ( $order_ids as $order_id ) {
|
1349 |
$order = new MemberOrder();
|
1350 |
$order->nogateway = true;
|
1351 |
$order->getMemberOrderByID( $order_id );
|
1352 |
$order->getUser();
|
1353 |
?>
|
1354 |
-
<tr
|
1355 |
-
|
1356 |
-
|
1357 |
-
<a href="admin.php?page=pmpro-orders&order=<?php echo esc_attr( $order->id ); ?>"><?php echo esc_html( $order->id ); ?></a>
|
1358 |
-
</td>
|
1359 |
-
<td class="order_code column-order_code has-row-actions">
|
1360 |
-
<a href="admin.php?page=pmpro-orders&order=<?php echo esc_attr( $order->id ); ?>"><?php echo esc_html( $order->code ); ?></a>
|
1361 |
-
<br />
|
1362 |
<div class="row-actions">
|
1363 |
<?php
|
1364 |
$delete_text = esc_html(
|
@@ -1382,7 +1472,33 @@ if ( function_exists( 'pmpro_add_email_order_modal' ) ) {
|
|
1382 |
'pmpro_orders_nonce'
|
1383 |
);
|
1384 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1385 |
$actions = [
|
|
|
|
|
|
|
|
|
|
|
1386 |
'edit' => sprintf(
|
1387 |
'<a title="%1$s" href="%2$s">%3$s</a>',
|
1388 |
esc_attr__( 'Edit', 'paid-memberships-pro' ),
|
@@ -1412,7 +1528,7 @@ if ( function_exists( 'pmpro_add_email_order_modal' ) ) {
|
|
1412 |
),
|
1413 |
esc_html__( 'Copy', 'paid-memberships-pro' )
|
1414 |
),
|
1415 |
-
'delete'
|
1416 |
'<a title="%1$s" href="%2$s">%3$s</a>',
|
1417 |
esc_attr__( 'Delete', 'paid-memberships-pro' ),
|
1418 |
'javascript:pmpro_askfirst(\'' . esc_js( $delete_text ) . '\', \'' . esc_js( $delete_nonce_url ) . '\'); void(0);',
|
@@ -1441,6 +1557,15 @@ if ( function_exists( 'pmpro_add_email_order_modal' ) ) {
|
|
1441 |
),
|
1442 |
];
|
1443 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1444 |
/**
|
1445 |
* Filter the extra actions for this user on this order.
|
1446 |
*
|
@@ -1466,7 +1591,7 @@ if ( function_exists( 'pmpro_add_email_order_modal' ) ) {
|
|
1466 |
?>
|
1467 |
</div>
|
1468 |
</td>
|
1469 |
-
<td class="
|
1470 |
<?php $order->getUser(); ?>
|
1471 |
<?php if ( ! empty( $order->user ) ) { ?>
|
1472 |
<a href="user-edit.php?user_id=<?php echo esc_attr( $order->user->ID ); ?>"><?php echo esc_html( $order->user->user_login ); ?></a><br />
|
@@ -1478,56 +1603,84 @@ if ( function_exists( 'pmpro_add_email_order_modal' ) ) {
|
|
1478 |
<?php } ?>
|
1479 |
</td>
|
1480 |
<?php do_action( 'pmpro_orders_extra_cols_body', $order ); ?>
|
1481 |
-
<td>
|
1482 |
<?php
|
1483 |
$level = pmpro_getLevel( $order->membership_id );
|
1484 |
if ( ! empty( $level ) ) {
|
1485 |
echo esc_html( $level->name );
|
1486 |
} elseif ( $order->membership_id > 0 ) { ?>
|
1487 |
[<?php esc_html_e( 'deleted', 'paid-memberships-pro' ); ?>]
|
1488 |
-
<?php } else {
|
1489 |
-
|
1490 |
-
|
1491 |
?>
|
1492 |
</td>
|
1493 |
-
<td><?php echo pmpro_escape_price( pmpro_formatPrice( $order->total ) ); ?></td>
|
1494 |
-
<td>
|
1495 |
-
<?php
|
1496 |
-
if ( ! empty( $order->payment_type ) ) {
|
1497 |
-
echo esc_html( $order->payment_type ) . '<br />';
|
1498 |
-
}
|
1499 |
-
?>
|
1500 |
-
<?php if ( ! empty( $order->accountnumber ) ) { ?>
|
1501 |
-
<?php echo esc_html( $order->cardtype ); ?>: x<?php echo esc_html( last4( $order->accountnumber ) ); ?><br/>
|
1502 |
-
<?php } ?>
|
1503 |
-
<?php if ( ! empty( $order->billing->name ) ) { ?>
|
1504 |
-
<?php echo esc_html( $order->billing->name ); ?><br/>
|
1505 |
-
<?php } ?>
|
1506 |
-
<?php if ( ! empty( $order->billing->street ) ) { ?>
|
1507 |
-
<?php echo esc_html( $order->billing->street ); ?><br/>
|
1508 |
-
<?php if ( $order->billing->city && $order->billing->state ) { ?>
|
1509 |
-
<?php echo esc_html( $order->billing->city ); ?>, <?php echo esc_html( $order->billing->state ); ?> <?php echo esc_html( $order->billing->zip ); ?>
|
1510 |
-
<?php
|
1511 |
-
if ( ! empty( $order->billing->country ) ) {
|
1512 |
-
echo esc_html( $order->billing->country ); }
|
1513 |
-
?>
|
1514 |
-
<br/>
|
1515 |
-
<?php } ?>
|
1516 |
-
<?php } ?>
|
1517 |
<?php
|
1518 |
-
|
1519 |
-
|
1520 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1521 |
?>
|
1522 |
</td>
|
1523 |
-
<td
|
1524 |
<?php
|
1525 |
-
|
1526 |
-
|
1527 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1528 |
?>
|
1529 |
</td>
|
1530 |
-
<td>
|
1531 |
<?php esc_html_e( 'Payment', 'paid-memberships-pro' ); ?>:
|
1532 |
<?php
|
1533 |
if ( ! empty( $order->payment_transaction_id ) ) {
|
@@ -1546,18 +1699,38 @@ if ( function_exists( 'pmpro_add_email_order_modal' ) ) {
|
|
1546 |
}
|
1547 |
?>
|
1548 |
</td>
|
1549 |
-
<td
|
1550 |
-
|
1551 |
-
|
1552 |
-
|
1553 |
-
|
1554 |
-
|
1555 |
-
|
1556 |
-
|
1557 |
-
|
1558 |
-
|
1559 |
<?php } ?>
|
1560 |
</td>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1561 |
</tr>
|
1562 |
<?php
|
1563 |
}
|
@@ -1573,12 +1746,18 @@ if ( function_exists( 'pmpro_add_email_order_modal' ) ) {
|
|
1573 |
</tbody>
|
1574 |
</table>
|
1575 |
</form>
|
1576 |
-
|
1577 |
-
|
1578 |
-
|
1579 |
-
|
1580 |
-
|
1581 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
1582 |
<?php } ?>
|
1583 |
<?php
|
1584 |
require_once( dirname( __FILE__ ) . '/admin_footer.php' );
|
162 |
$nonceokay = false;
|
163 |
}
|
164 |
|
165 |
+
$dorder_code = intval( $_REQUEST['delete'] );
|
166 |
+
$dorder = new MemberOrder( $dorder_code );
|
167 |
if ( $nonceokay && $dorder->deleteMe() ) {
|
168 |
+
$pmpro_msg = sprintf( __( 'Order %s deleted successfully.', 'paid-memberships-pro' ), $dorder_code );
|
169 |
$pmpro_msgt = 'success';
|
170 |
} else {
|
171 |
$pmpro_msg = __( 'Error deleting order.', 'paid-memberships-pro' );
|
173 |
}
|
174 |
}
|
175 |
|
176 |
+
// Refund this order
|
177 |
+
if ( ! empty( $_REQUEST['refund'] ) ) {
|
178 |
+
// Check nonce for refunding.
|
179 |
+
$nonceokay = true;
|
180 |
+
if ( empty( $_REQUEST['pmpro_orders_nonce'] ) || ! check_admin_referer( 'refund_order', 'pmpro_orders_nonce' ) ) {
|
181 |
+
$nonceokay = false;
|
182 |
+
}
|
183 |
+
|
184 |
+
$rorder = new MemberOrder( (int) $_REQUEST['refund'] );
|
185 |
+
if ( $nonceokay && !empty( $rorder ) && pmpro_allowed_refunds( $rorder ) ) {
|
186 |
+
|
187 |
+
if( pmpro_refund_order( $rorder ) ) {
|
188 |
+
$pmpro_msg = __( 'Order refunded successfully.', 'paid-memberships-pro' );
|
189 |
+
$pmpro_msgt = 'success';
|
190 |
+
} else {
|
191 |
+
$pmpro_msg = __( 'Error refunding order. Please check the order notes for more information.', 'paid-memberships-pro' );
|
192 |
+
$pmpro_msgt = 'error';
|
193 |
+
}
|
194 |
+
|
195 |
+
} else {
|
196 |
+
$pmpro_msg = __( 'Error refunding order. Please check the order notes for more information.', 'paid-memberships-pro' );
|
197 |
+
$pmpro_msgt = 'error';
|
198 |
+
}
|
199 |
+
}
|
200 |
+
|
201 |
$thisyear = date( 'Y', $now );
|
202 |
|
203 |
// this array stores fields that should be read only
|
315 |
$day = intval( $_POST['ts_day'] );
|
316 |
$hour = intval( $_POST['ts_hour'] );
|
317 |
$minute = intval( $_POST['ts_minute'] );
|
318 |
+
$date = get_gmt_from_date( $year . '-' . $month . '-' . $day . ' ' . $hour . ':' . $minute . ':00' , 'U' );
|
319 |
+
$order->timestamp = $date; // Passed 'U' to get_gmt_from_date() so that we get a Unix timesamp.
|
320 |
}
|
321 |
|
322 |
// affiliate stuff
|
412 |
|
413 |
<?php if ( ! empty( $order ) ) { ?>
|
414 |
|
415 |
+
<?php if ( ! empty( $order->id ) ) {
|
416 |
+
$refund_text = esc_html(
|
417 |
+
sprintf(
|
418 |
+
// translators: %s is the Order Code.
|
419 |
+
__( 'Refund order %s at the payment gateway. This action is permanent. The user and admin will receive an email confirmation after the refund is processed. Are you sure you want to refund this order?', 'paid-memberships-pro' ),
|
420 |
+
str_replace( "'", '', $order->code )
|
421 |
+
)
|
422 |
+
);
|
423 |
+
|
424 |
+
$refund_nonce_url = wp_nonce_url(
|
425 |
+
add_query_arg(
|
426 |
+
[
|
427 |
+
'page' => 'pmpro-orders',
|
428 |
+
'action' => 'refund_order',
|
429 |
+
'refund' => $order->id,
|
430 |
+
'order' => $order->id
|
431 |
+
],
|
432 |
+
admin_url( 'admin.php' )
|
433 |
+
),
|
434 |
+
'refund_order',
|
435 |
+
'pmpro_orders_nonce'
|
436 |
+
);
|
437 |
+
?>
|
438 |
+
<h1 class="wp-heading-inline"><?php esc_html_e( 'Edit Order', 'paid-memberships-pro' ); ?> ID: <?php echo esc_html( $order->id ); ?></h1>
|
439 |
+
<a title="<?php esc_attr_e( 'Print', 'paid-memberships-pro' ); ?>" href="<?php echo esc_url( add_query_arg( array( 'action' => 'pmpro_orders_print_view', 'order' => $order->id ), admin_url( 'admin-ajax.php' ) ) ); ?>" target="_blank" class="page-title-action pmpro-has-icon pmpro-has-icon-printer"><?php esc_html_e( 'Print', 'paid-memberships-pro' ); ?></a>
|
440 |
+
<a title="<?php esc_attr_e( 'Email', 'paid-memberships-pro' ); ?>" href="#TB_inline?width=600&height=200&inlineId=email_invoice" class="thickbox email_link page-title-action pmpro-has-icon pmpro-has-icon-email" data-order="<?php echo esc_html( $order->id ); ?>"><?php esc_html_e( 'Email', 'paid-memberships-pro' ); ?></a>
|
441 |
+
<a title="<?php esc_attr_e( 'View', 'paid-memberships-pro' ); ?>" href="<?php echo esc_url( pmpro_url("invoice", "?invoice=" . $order->code ) ) ?>" target="_blank" class="page-title-action pmpro-has-icon pmpro-has-icon-admin-users"><?php esc_html_e( 'View', 'paid-memberships-pro' ); ?></a>
|
442 |
+
<?php
|
443 |
+
if( pmpro_allowed_refunds( $order ) ) {
|
444 |
+
printf(
|
445 |
+
'<a title="%1$s" href="%2$s" class="page-title-action pmpro-has-icon pmpro-has-icon-image-rotate">%3$s</a>',
|
446 |
+
esc_attr__( 'Refund', 'paid-memberships-pro' ),
|
447 |
+
esc_js( 'javascript:pmpro_askfirst(' . wp_json_encode( $refund_text ) . ', ' . wp_json_encode( $refund_nonce_url ) . '); void(0);' ),
|
448 |
+
esc_html__( 'Refund', 'paid-memberships-pro' )
|
449 |
+
);
|
450 |
+
}
|
451 |
+
?>
|
452 |
+
<hr class="wp-header-end">
|
453 |
<?php } else { ?>
|
454 |
<h1 class="wp-heading-inline"><?php esc_html_e( 'New Order', 'paid-memberships-pro' ); ?></h1>
|
455 |
<?php } ?>
|
|
|
456 |
|
457 |
<?php if ( ! empty( $pmpro_msg ) ) { ?>
|
458 |
<div id="message" class="
|
472 |
<table class="form-table">
|
473 |
<tbody>
|
474 |
<tr>
|
475 |
+
<th scope="row" valign="top"><label for="code"><?php esc_html_e( 'Code', 'paid-memberships-pro' ); ?>:</label></th>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
476 |
<td>
|
477 |
<?php
|
478 |
if ( in_array( 'code', $read_only_fields ) ) {
|
479 |
echo esc_html( $order->code );
|
480 |
} else { ?>
|
481 |
+
<input id="code" name="code" type="text" value="<?php echo esc_attr( $order->code ); ?>" />
|
482 |
<?php
|
483 |
}
|
484 |
?>
|
485 |
+
<p class="description"><?php esc_html_e( 'A randomly generated code that serves as a unique, non-sequential invoice number.', 'paid-memberships-pro' ); ?></p>
|
486 |
<?php if ( $order_id < 0 ) { ?>
|
487 |
<p class="description"><?php esc_html_e( 'Randomly generated for you.', 'paid-memberships-pro' ); ?></p>
|
488 |
<?php } ?>
|
489 |
</td>
|
490 |
</tr>
|
491 |
<tr>
|
492 |
+
<th scope="row" valign="top"><label for="ts_month"><?php esc_html_e( 'Date', 'paid-memberships-pro' ); ?>:</label></th>
|
493 |
+
<td>
|
494 |
+
<?php
|
495 |
+
if ( in_array( 'timestamp', $read_only_fields ) && $order_id > 0 ) {
|
496 |
+
echo esc_html( date_i18n( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), $order->getTimestamp() ) );
|
497 |
+
} else {
|
498 |
+
// set up date vars
|
499 |
+
if ( ! empty( $order->timestamp ) ) {
|
500 |
+
$timestamp = $order->getTimestamp();
|
501 |
+
} else {
|
502 |
+
$timestamp = current_time( 'timestamp' );
|
503 |
+
}
|
504 |
+
|
505 |
+
$year = date( 'Y', $timestamp );
|
506 |
+
$month = date( 'n', $timestamp );
|
507 |
+
$day = date( 'j', $timestamp );
|
508 |
+
$hour = date( 'H', $timestamp );
|
509 |
+
$minute = date( 'i', $timestamp );
|
510 |
+
$second = date( 's', $timestamp );
|
511 |
+
?>
|
512 |
+
<select id="ts_month" name="ts_month">
|
513 |
+
<?php
|
514 |
+
for ( $i = 1; $i < 13; $i ++ ) {
|
515 |
+
?>
|
516 |
+
<option value="<?php echo esc_attr( $i ); ?>" <?php selected( $i, $month ); ?>>
|
517 |
+
<?php echo esc_html( date_i18n( 'F', mktime( 0, 0, 0, $i, 2 ) ) ); ?>
|
518 |
+
</option>
|
519 |
+
<?php
|
520 |
+
}
|
521 |
+
?>
|
522 |
+
</select>
|
523 |
+
<input name="ts_day" type="text" size="2" value="<?php echo esc_attr( $day ); ?>"/>
|
524 |
+
<input name="ts_year" type="text" size="4" value="<?php echo esc_attr( $year ); ?>"/>
|
525 |
+
<?php esc_html_e( 'at', 'paid-memberships-pro' ); ?>
|
526 |
+
<input name="ts_hour" type="text" size="2" value="<?php echo esc_attr( $hour ); ?>"/> :
|
527 |
+
<input name="ts_minute" type="text" size="2" value="<?php echo esc_attr( $minute ); ?>"/>
|
528 |
+
<?php } ?>
|
529 |
+
</td>
|
530 |
+
</tr>
|
531 |
+
</tbody>
|
532 |
+
</table>
|
533 |
+
<hr />
|
534 |
+
<h2><?php esc_html_e( 'Member Information', 'paid-memberships-pro' ); ?></h2>
|
535 |
+
<table class="form-table">
|
536 |
+
<tbody>
|
537 |
+
<tr>
|
538 |
+
<tr>
|
539 |
+
<th scope="row" valign="top"><label for="user_id"><?php esc_html_e( 'User ID', 'paid-memberships-pro' ); ?>:</label></th>
|
540 |
<td>
|
541 |
<?php
|
542 |
if ( in_array( 'user_id', $read_only_fields ) && $order_id > 0 ) {
|
543 |
echo esc_html( $order->user_id );
|
544 |
} else { ?>
|
545 |
+
<input id="user_id" name="user_id" type="text" value="<?php echo esc_attr( $order->user_id ); ?>" size="10" />
|
546 |
<?php
|
547 |
}
|
548 |
?>
|
555 |
if ( in_array( 'membership_id', $read_only_fields ) && $order_id > 0 ) {
|
556 |
echo esc_html( $order->membership_id );
|
557 |
} else { ?>
|
558 |
+
<input id="membership_id" name="membership_id" type="text" value="<?php echo esc_attr( $order->membership_id ); ?>" size="10" />
|
559 |
<?php
|
560 |
}
|
561 |
?>
|
562 |
</td>
|
563 |
</tr>
|
564 |
+
</tbody>
|
565 |
+
</table>
|
566 |
+
<hr />
|
567 |
+
<h2>
|
568 |
+
<?php esc_html_e( 'Billing Address', 'paid-memberships-pro' ); ?>
|
569 |
+
<?php if ( ! $order->has_billing_address() ) { ?>
|
570 |
+
<a href="javascript:void(0);" id="show_billing_action"><?php esc_html_e( 'Show Billing Address Fields', 'paid-memberships-pro' ); ?></a>
|
571 |
+
<?php } ?>
|
572 |
+
</h2>
|
573 |
+
<table id="billing_address_fields" class="form-table"<?php if ( ! $order->has_billing_address() ) { ?> style="display: none;"<?php } ?>>
|
574 |
+
<tbody>
|
575 |
<tr>
|
576 |
<th scope="row" valign="top"><label for="billing_name"><?php esc_html_e( 'Billing Name', 'paid-memberships-pro' ); ?>:</label>
|
577 |
</th>
|
661 |
<?php } ?>
|
662 |
</td>
|
663 |
</tr>
|
664 |
+
</tbody>
|
665 |
+
</table> <!-- end #billing_address_fields -->
|
666 |
+
<script>
|
667 |
+
// Script to show billing fields if they are empty and hidden by default on this form.
|
668 |
+
jQuery(document).ready(function() {
|
669 |
+
jQuery('#show_billing_action').click(function() {
|
670 |
+
jQuery('#show_billing_action').hide();
|
671 |
+
jQuery('#billing_address_fields').show();
|
672 |
+
});
|
673 |
+
});
|
674 |
+
</script>
|
675 |
+
<hr />
|
676 |
+
<h2><?php esc_html_e( 'Payment Information', 'paid-memberships-pro' ); ?></h2>
|
677 |
+
<table class="form-table">
|
678 |
+
<tbody>
|
679 |
+
|
680 |
<?php
|
681 |
if ( $order_id > 0 ) {
|
682 |
$order->getDiscountCode();
|
716 |
</tr>
|
717 |
<?php } ?>
|
718 |
<tr>
|
719 |
+
<th scope="row" valign="top"><label for="subtotal"><?php esc_html_e( 'Sub Total', 'paid-memberships-pro' ); ?>:</label></th>
|
720 |
<td>
|
721 |
<?php
|
722 |
if ( in_array( 'subtotal', $read_only_fields ) && $order_id > 0 ) {
|
833 |
</tr>
|
834 |
|
835 |
<?php
|
836 |
+
} else { ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
837 |
<tr>
|
838 |
+
<th scope="row" valign="top"><label for="expirationmonth"><?php esc_html_e( 'Expiration', 'paid-memberships-pro' ); ?>:</label></th>
|
839 |
<td>
|
840 |
+
<input id="expirationmonth" name="expirationmonth" type="text" size="10"
|
841 |
+
value="<?php echo esc_attr( $order->expirationmonth ); ?>"/> /
|
842 |
<input id="expirationyear" name="expirationyear" type="text" size="10"
|
843 |
value="<?php echo esc_attr( $order->expirationyear ); ?>"/>
|
844 |
+
<span class="description"><?php esc_html_e( 'MM/YYYY', 'paid-memberships-pro' );?></span>
|
845 |
</td>
|
846 |
</tr>
|
847 |
<?php } ?>
|
850 |
<td>
|
851 |
<?php
|
852 |
if ( in_array( 'status', $read_only_fields ) && $order_id > 0 ) {
|
853 |
+
echo esc_html( ucwords( $order->status ) );
|
854 |
} else { ?>
|
855 |
<?php
|
856 |
$statuses = pmpro_getOrderStatuses();
|
866 |
?>
|
867 |
</td>
|
868 |
</tr>
|
869 |
+
</tbody>
|
870 |
+
</table>
|
871 |
+
<hr />
|
872 |
+
<h2><?php esc_html_e( 'Payment Gateway Information', 'paid-memberships-pro' ); ?></h2>
|
873 |
+
<table class="form-table">
|
874 |
+
<tbody>
|
875 |
<tr>
|
876 |
<th scope="row" valign="top"><label for="gateway"><?php esc_html_e( 'Gateway', 'paid-memberships-pro' ); ?>:</label></th>
|
877 |
<td>
|
913 |
|
914 |
<tr>
|
915 |
<th scope="row" valign="top"><label
|
916 |
+
for="payment_transaction_id"><?php esc_html_e( 'Payment Transaction ID', 'paid-memberships-pro' ); ?>:</label></th>
|
917 |
<td>
|
918 |
<?php
|
919 |
if ( in_array( 'payment_transaction_id', $read_only_fields ) && $order_id > 0 ) {
|
933 |
<?php
|
934 |
if ( in_array( 'subscription_transaction_id', $read_only_fields ) && $order_id > 0 ) {
|
935 |
echo $order->subscription_transaction_id;
|
936 |
+
} else { ?>
|
937 |
+
<input id="subscription_transaction_id" name="subscription_transaction_id" type="text" size="50" value="<?php echo esc_attr( $order->subscription_transaction_id ); ?>"/>
|
938 |
+
<?php if ( $order->is_renewal() ) { ?>
|
939 |
+
<a href="<?php echo esc_url( add_query_arg( array( 'page' => 'pmpro-orders', 's' => $order->subscription_transaction_id ), admin_url( 'admin.php' ) ) ); ?>" title="<?php esc_attr_e( 'View all orders for this subscription', 'paid-memberships-pro' ); ?>" class="pmpro_order-renewal"><?php esc_html_e( 'Renewal', 'paid-memberships-pro' ); ?></a>
|
940 |
+
<?php } ?>
|
941 |
<?php } ?>
|
942 |
<p class="description"><?php esc_html_e( 'Generated by the gateway. Useful to cross reference subscriptions.', 'paid-memberships-pro' ); ?></p>
|
943 |
</td>
|
944 |
</tr>
|
945 |
+
</tbody>
|
946 |
+
</table>
|
947 |
+
<hr />
|
948 |
+
<h2><?php esc_html_e( 'Additional Order Information', 'paid-memberships-pro' ); ?></h2>
|
949 |
+
<table class="form-table">
|
950 |
+
<tbody>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
951 |
<?php
|
952 |
$affiliates = apply_filters( 'pmpro_orders_show_affiliate_ids', false );
|
953 |
if ( ! empty( $affiliates ) ) {
|
1052 |
<form id="posts-filter" method="get" action="">
|
1053 |
|
1054 |
<h1 class="wp-heading-inline"><?php esc_html_e( 'Orders', 'paid-memberships-pro' ); ?></h1>
|
1055 |
+
<a href="<?php echo esc_url( add_query_arg( array( 'page' => 'pmpro-orders', 'order' => -1 ), admin_url( 'admin.php' ) ) ); ?>" class="page-title-action pmpro-has-icon pmpro-has-icon-plus"><?php esc_html_e( 'Add New Order', 'paid-memberships-pro' ); ?></a>
|
1056 |
|
1057 |
<?php
|
1058 |
// build the export URL
|
1073 |
);
|
1074 |
$export_url = add_query_arg( $url_params, $export_url );
|
1075 |
?>
|
1076 |
+
<a target="_blank" href="<?php echo esc_url( $export_url ); ?>" class="page-title-action pmpro-has-icon pmpro-has-icon-download"><?php esc_html_e( 'Export to CSV', 'paid-memberships-pro' ); ?></a>
|
1077 |
|
1078 |
<hr class="wp-header-end">
|
1079 |
|
1090 |
"><p><?php echo $pmpro_msg; ?></p></div>
|
1091 |
<?php } ?>
|
1092 |
|
1093 |
+
<p class="search-box">
|
1094 |
+
<label class="hidden" for="post-search-input"><?php esc_html_e( 'Search Orders', 'paid-memberships-pro' ); ?>:</label>
|
1095 |
+
<input type="hidden" name="page" value="pmpro-orders"/>
|
1096 |
+
<input id="post-search-input" type="text" value="<?php echo esc_attr( wp_unslash( $s ) ); ?>" name="s"/>
|
1097 |
+
<input class="button" type="submit" value="<?php esc_attr_e( 'Search Orders', 'paid-memberships-pro' ); ?>"/>
|
1098 |
+
</p>
|
1099 |
|
1100 |
+
<div class="tablenav top">
|
1101 |
+
<?php esc_html_e( 'Show', 'paid-memberships-pro' ); ?>
|
1102 |
+
<select id="filter" name="filter">
|
1103 |
+
<option value="all" <?php selected( $filter, 'all' ); ?>><?php esc_html_e( 'All', 'paid-memberships-pro' ); ?></option>
|
1104 |
+
<option
|
1105 |
+
value="within-a-date-range" <?php selected( $filter, 'within-a-date-range' ); ?>><?php esc_html_e( 'Within a Date Range', 'paid-memberships-pro' ); ?></option>
|
1106 |
+
<option
|
1107 |
+
value="predefined-date-range" <?php selected( $filter, 'predefined-date-range' ); ?>><?php esc_html_e( 'Predefined Date Range', 'paid-memberships-pro' ); ?></option>
|
1108 |
+
<option
|
1109 |
+
value="within-a-level" <?php selected( $filter, 'within-a-level' ); ?>><?php esc_html_e( 'Within a Level', 'paid-memberships-pro' ); ?></option>
|
1110 |
+
<option
|
1111 |
+
value="with-discount-code" <?php selected( $filter, 'with-discount-code' ); ?>><?php esc_html_e( 'With a Discount Code', 'paid-memberships-pro' ); ?></option>
|
1112 |
+
<option
|
1113 |
+
value="within-a-status" <?php selected( $filter, 'within-a-status' ); ?>><?php esc_html_e( 'Within a Status', 'paid-memberships-pro' ); ?></option>
|
1114 |
+
<option
|
1115 |
+
value="only-paid" <?php selected( $filter, 'only-paid' ); ?>><?php esc_html_e( 'Only Paid Orders', 'paid-memberships-pro' ); ?></option>
|
1116 |
+
<option
|
1117 |
+
value="only-free" <?php selected( $filter, 'only-free' ); ?>><?php esc_html_e( 'Only Free Orders', 'paid-memberships-pro' ); ?></option>
|
1118 |
+
|
1119 |
+
<?php $custom_filters = apply_filters( 'pmpro_admin_orders_filters', array() ); ?>
|
1120 |
+
<?php foreach( $custom_filters as $value => $name ) { ?>
|
1121 |
+
<option value="<?php echo esc_attr( $value ); ?>" <?php selected( $filter, $value ); ?>><?php esc_html_e( $name ); ?></option>
|
1122 |
+
<?php } ?>
|
1123 |
+
</select>
|
|
|
1124 |
|
1125 |
+
<span id="from"><?php esc_html_e( 'From', 'paid-memberships-pro' ); ?></span>
|
1126 |
|
1127 |
+
<select id="start-month" name="start-month">
|
1128 |
+
<?php for ( $i = 1; $i < 13; $i ++ ) { ?>
|
1129 |
+
<option
|
1130 |
+
value="<?php echo esc_attr( $i ); ?>" <?php selected( $start_month, $i ); ?>><?php echo esc_html( date_i18n( 'F', mktime( 0, 0, 0, $i, 2 ) ) ); ?></option>
|
1131 |
+
<?php } ?>
|
1132 |
+
</select>
|
1133 |
|
1134 |
+
<input id='start-day' name="start-day" type="text" size="2"
|
1135 |
+
value="<?php echo esc_attr( $start_day ); ?>"/>
|
1136 |
+
<input id='start-year' name="start-year" type="text" size="4"
|
1137 |
+
value="<?php echo esc_attr( $start_year ); ?>"/>
|
1138 |
|
1139 |
|
1140 |
+
<span id="to"><?php esc_html_e( 'To', 'paid-memberships-pro' ); ?></span>
|
1141 |
|
1142 |
+
<select id="end-month" name="end-month">
|
1143 |
+
<?php for ( $i = 1; $i < 13; $i ++ ) { ?>
|
1144 |
+
<option
|
1145 |
+
value="<?php echo esc_attr( $i ); ?>" <?php selected( $end_month, $i ); ?>><?php echo esc_html( date_i18n( 'F', mktime( 0, 0, 0, $i, 2 ) ) ); ?></option>
|
1146 |
+
<?php } ?>
|
1147 |
+
</select>
|
1148 |
|
1149 |
|
1150 |
+
<input id='end-day' name="end-day" type="text" size="2" value="<?php echo esc_attr( $end_day ); ?>"/>
|
1151 |
+
<input id='end-year' name="end-year" type="text" size="4" value="<?php echo esc_attr( $end_year ); ?>"/>
|
1152 |
|
1153 |
+
<span id="filterby"><?php esc_html_e( 'filter by ', 'paid-memberships-pro' ); ?></span>
|
1154 |
|
1155 |
+
<select id="predefined-date" name="predefined-date">
|
1156 |
|
1157 |
+
<option
|
1158 |
+
value="<?php echo 'This Month'; ?>" <?php selected( $predefined_date, 'This Month' ); ?>><?php esc_html_e( 'This Month', 'paid-memberships-pro' ); ?></option>
|
1159 |
+
<option
|
1160 |
+
value="<?php echo 'Last Month'; ?>" <?php selected( $predefined_date, 'Last Month' ); ?>><?php esc_html_e( 'Last Month', 'paid-memberships-pro' ); ?></option>
|
1161 |
+
<option
|
1162 |
+
value="<?php echo 'This Year'; ?>" <?php selected( $predefined_date, 'This Year' ); ?>><?php esc_html_e( 'This Year', 'paid-memberships-pro' ); ?></option>
|
1163 |
+
<option
|
1164 |
+
value="<?php echo 'Last Year'; ?>" <?php selected( $predefined_date, 'Last Year' ); ?>><?php esc_html_e( 'Last Year', 'paid-memberships-pro' ); ?></option>
|
1165 |
|
1166 |
+
</select>
|
1167 |
|
1168 |
+
<?php
|
1169 |
+
// Note: only orders belonging to current levels can be filtered. There is no option for orders belonging to deleted levels
|
1170 |
+
$levels = pmpro_sort_levels_by_order( pmpro_getAllLevels( true, true ) );
|
1171 |
+
?>
|
1172 |
+
<select id="l" name="l">
|
1173 |
+
<?php foreach ( $levels as $level ) { ?>
|
1174 |
+
<option
|
1175 |
+
value="<?php echo esc_attr( $level->id ); ?>" <?php selected( $l, $level->id ); ?>><?php echo esc_html( $level->name ); ?></option>
|
1176 |
+
<?php } ?>
|
1177 |
|
1178 |
+
</select>
|
1179 |
|
1180 |
+
<?php
|
1181 |
+
$sqlQuery = "SELECT SQL_CALC_FOUND_ROWS * FROM $wpdb->pmpro_discount_codes ";
|
1182 |
+
$sqlQuery .= "ORDER BY id DESC ";
|
1183 |
+
$codes = $wpdb->get_results($sqlQuery, OBJECT);
|
1184 |
+
if ( ! empty( $codes ) ) { ?>
|
1185 |
+
<select id="discount-code" name="discount-code">
|
1186 |
+
<?php foreach ( $codes as $code ) { ?>
|
1187 |
+
<option
|
1188 |
+
value="<?php echo esc_attr( $code->id ); ?>" <?php selected( $discount_code, $code->id ); ?>><?php echo esc_html( $code->code ); ?></option>
|
|
|
|
|
1189 |
<?php } ?>
|
1190 |
+
</select>
|
1191 |
+
<?php } ?>
|
1192 |
|
1193 |
+
<?php
|
1194 |
+
$statuses = pmpro_getOrderStatuses();
|
1195 |
+
?>
|
1196 |
+
<select id="status" name="status">
|
1197 |
+
<?php foreach ( $statuses as $the_status ) { ?>
|
1198 |
+
<option
|
1199 |
+
value="<?php echo esc_attr( $the_status ); ?>" <?php selected( $the_status, $status ); ?>><?php echo esc_html( $the_status ); ?></option>
|
1200 |
+
<?php } ?>
|
1201 |
+
</select>
|
1202 |
|
1203 |
+
<input id="submit" class="button" type="submit" value="<?php esc_attr_e( 'Filter', 'paid-memberships-pro' ); ?>"/>
|
|
|
|
|
1204 |
|
1205 |
<script>
|
1206 |
//update month/year when period dropdown is changed
|
1331 |
|
1332 |
</script>
|
1333 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1334 |
<?php
|
1335 |
if ( $s ) {
|
1336 |
$sqlQuery = "SELECT SQL_CALC_FOUND_ROWS o.id FROM $wpdb->pmpro_membership_orders o LEFT JOIN $wpdb->users u ON o.user_id = u.ID LEFT JOIN $wpdb->pmpro_membership_levels l ON o.membership_id = l.id ";
|
1401 |
|
1402 |
if ( $order_ids ) {
|
1403 |
?>
|
1404 |
+
<div class="tablenav-pages one-page">
|
1405 |
+
<span class="displaying-num"><?php printf( __( '%d orders found.', 'paid-memberships-pro' ), $totalrows ); ?></span>
|
1406 |
+
</div>
|
1407 |
<?php
|
1408 |
}
|
1409 |
+
|
1410 |
+
// Get all the gateways so we can reference their name later.
|
1411 |
+
$pmpro_gateways = pmpro_gateways();
|
1412 |
+
|
1413 |
+
// Get the value for whether to show discount codes or now.
|
1414 |
+
if ( $wpdb->get_var( "SELECT id FROM $wpdb->pmpro_discount_codes LIMIT 1" ) ) {
|
1415 |
+
$pmpro_discount_codes = true;
|
1416 |
+
} else {
|
1417 |
+
$pmpro_discount_codes = false;
|
1418 |
+
}
|
1419 |
?>
|
1420 |
+
<br class="clear" />
|
1421 |
+
</div> <!-- end tablenav -->
|
1422 |
+
|
1423 |
+
<table class="wp-list-table widefat striped">
|
1424 |
<thead>
|
1425 |
<tr class="thead">
|
1426 |
+
<th class="column-code"><?php esc_html_e( 'Code', 'paid-memberships-pro' ); ?></th>
|
1427 |
+
<th class="column-username"><?php esc_html_e( 'User', 'paid-memberships-pro' ); ?></th>
|
|
|
1428 |
<?php do_action( 'pmpro_orders_extra_cols_header', $order_ids ); ?>
|
1429 |
+
<th class="column-level"><?php esc_html_e( 'Level', 'paid-memberships-pro' ); ?></th>
|
1430 |
+
<th class="column-total"><?php esc_html_e( 'Total', 'paid-memberships-pro' ); ?></th>
|
1431 |
+
<th class="column-billing"><?php esc_html_e( 'Billing', 'paid-memberships-pro' ); ?></th>
|
1432 |
+
<th class="column-gateway"><?php esc_html_e( 'Gateway', 'paid-memberships-pro' ); ?></th>
|
1433 |
+
<th class="column-transaction-ids"><?php esc_html_e( 'Transaction IDs', 'paid-memberships-pro' ); ?></th>
|
1434 |
+
<th class="column-status"><?php esc_html_e( 'Status', 'paid-memberships-pro' ); ?></th>
|
1435 |
+
<th class="column-date"><?php esc_html_e( 'Date', 'paid-memberships-pro' ); ?></th>
|
1436 |
+
<?php if ( ! empty( $pmpro_discount_codes ) ) { ?>
|
1437 |
+
<th class="column-discount-code"><?php esc_html_e( 'Discount Code', 'paid-memberships-pro' );?></th>
|
1438 |
+
<?php } ?>
|
1439 |
</tr>
|
1440 |
</thead>
|
1441 |
<tbody id="orders" class="list:order orders-list">
|
1442 |
<?php
|
|
|
1443 |
foreach ( $order_ids as $order_id ) {
|
1444 |
$order = new MemberOrder();
|
1445 |
$order->nogateway = true;
|
1446 |
$order->getMemberOrderByID( $order_id );
|
1447 |
$order->getUser();
|
1448 |
?>
|
1449 |
+
<tr>
|
1450 |
+
<td class="column-code has-row-actions">
|
1451 |
+
<strong><a href="admin.php?page=pmpro-orders&order=<?php echo esc_attr( $order->id ); ?>"><?php echo esc_html( $order->code ); ?></a></strong>
|
|
|
|
|
|
|
|
|
|
|
1452 |
<div class="row-actions">
|
1453 |
<?php
|
1454 |
$delete_text = esc_html(
|
1472 |
'pmpro_orders_nonce'
|
1473 |
);
|
1474 |
|
1475 |
+
$refund_text = esc_html(
|
1476 |
+
sprintf(
|
1477 |
+
// translators: %s is the Order Code.
|
1478 |
+
__( 'Refund order %s at the payment gateway. This action is permanent. The user and admin will receive an email confirmation after the refund is processed. Are you sure you want to refund this order?', 'paid-memberships-pro' ),
|
1479 |
+
str_replace( "'", '', $order->code )
|
1480 |
+
)
|
1481 |
+
);
|
1482 |
+
|
1483 |
+
$refund_nonce_url = wp_nonce_url(
|
1484 |
+
add_query_arg(
|
1485 |
+
[
|
1486 |
+
'page' => 'pmpro-orders',
|
1487 |
+
'action' => 'refund_order',
|
1488 |
+
'refund' => $order->id,
|
1489 |
+
],
|
1490 |
+
admin_url( 'admin.php' )
|
1491 |
+
),
|
1492 |
+
'refund_order',
|
1493 |
+
'pmpro_orders_nonce'
|
1494 |
+
);
|
1495 |
+
|
1496 |
$actions = [
|
1497 |
+
'id' => sprintf(
|
1498 |
+
// translators: %s is the Order ID.
|
1499 |
+
__( 'ID: %s', 'paid-memberships-pro' ),
|
1500 |
+
esc_attr( $order->id ),
|
1501 |
+
),
|
1502 |
'edit' => sprintf(
|
1503 |
'<a title="%1$s" href="%2$s">%3$s</a>',
|
1504 |
esc_attr__( 'Edit', 'paid-memberships-pro' ),
|
1528 |
),
|
1529 |
esc_html__( 'Copy', 'paid-memberships-pro' )
|
1530 |
),
|
1531 |
+
'delete' => sprintf(
|
1532 |
'<a title="%1$s" href="%2$s">%3$s</a>',
|
1533 |
esc_attr__( 'Delete', 'paid-memberships-pro' ),
|
1534 |
'javascript:pmpro_askfirst(\'' . esc_js( $delete_text ) . '\', \'' . esc_js( $delete_nonce_url ) . '\'); void(0);',
|
1557 |
),
|
1558 |
];
|
1559 |
|
1560 |
+
if( pmpro_allowed_refunds( $order ) ) {
|
1561 |
+
$actions['refund'] = sprintf(
|
1562 |
+
'<a title="%1$s" href="%2$s">%3$s</a>',
|
1563 |
+
esc_attr__( 'Refund', 'paid-memberships-pro' ),
|
1564 |
+
esc_js( 'javascript:pmpro_askfirst(' . wp_json_encode( $refund_text ) . ', ' . wp_json_encode( $refund_nonce_url ) . '); void(0);' ),
|
1565 |
+
esc_html__( 'Refund', 'paid-memberships-pro' )
|
1566 |
+
);
|
1567 |
+
}
|
1568 |
+
|
1569 |
/**
|
1570 |
* Filter the extra actions for this user on this order.
|
1571 |
*
|
1591 |
?>
|
1592 |
</div>
|
1593 |
</td>
|
1594 |
+
<td class="column-username">
|
1595 |
<?php $order->getUser(); ?>
|
1596 |
<?php if ( ! empty( $order->user ) ) { ?>
|
1597 |
<a href="user-edit.php?user_id=<?php echo esc_attr( $order->user->ID ); ?>"><?php echo esc_html( $order->user->user_login ); ?></a><br />
|
1603 |
<?php } ?>
|
1604 |
</td>
|
1605 |
<?php do_action( 'pmpro_orders_extra_cols_body', $order ); ?>
|
1606 |
+
<td class="column-level">
|
1607 |
<?php
|
1608 |
$level = pmpro_getLevel( $order->membership_id );
|
1609 |
if ( ! empty( $level ) ) {
|
1610 |
echo esc_html( $level->name );
|
1611 |
} elseif ( $order->membership_id > 0 ) { ?>
|
1612 |
[<?php esc_html_e( 'deleted', 'paid-memberships-pro' ); ?>]
|
1613 |
+
<?php } else {
|
1614 |
+
esc_html_e( '—', 'paid-memberships-pro' );
|
1615 |
+
}
|
1616 |
?>
|
1617 |
</td>
|
1618 |
+
<td class="column-total"><?php echo pmpro_escape_price( pmpro_formatPrice( $order->total ) ); ?></td>
|
1619 |
+
<td class="column-billing">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1620 |
<?php
|
1621 |
+
// Build our return variable.
|
1622 |
+
$r = '';
|
1623 |
+
|
1624 |
+
if ( ! empty( $order->payment_type ) ) {
|
1625 |
+
if ( in_array( $order->payment_type, array( 'PayPal Standard', 'PayPal Express' ) ) ) {
|
1626 |
+
$r .= esc_html( 'PayPal', 'paid-memberships-pro' );
|
1627 |
+
} else {
|
1628 |
+
$r .= esc_html( ucwords( $order->payment_type ) );
|
1629 |
+
}
|
1630 |
+
$r .= '<br />';
|
1631 |
+
}
|
1632 |
+
|
1633 |
+
if ( ! empty( $order->accountnumber ) ) {
|
1634 |
+
$r .= esc_html( $order->cardtype ) . ': x' . esc_html( last4( $order->accountnumber ) ) . '<br />';
|
1635 |
+
}
|
1636 |
+
|
1637 |
+
if ( ! empty( $order->billing->name ) ) {
|
1638 |
+
$r .= esc_html( $order->billing->name ) . '<br />';
|
1639 |
+
}
|
1640 |
+
|
1641 |
+
if ( ! empty( $order->billing->street ) ) {
|
1642 |
+
$r .= esc_html( $order->billing->street ) . '<br />';
|
1643 |
+
}
|
1644 |
+
|
1645 |
+
if ( $order->billing->city && $order->billing->state ) {
|
1646 |
+
$r .= esc_html( $order->billing->city ) . ', ';
|
1647 |
+
$r .= esc_html( $order->billing->state ) . ' ';
|
1648 |
+
$r .= esc_html( $order->billing->zip ) . ' ';
|
1649 |
+
if ( ! empty( $order->billing->country ) ) {
|
1650 |
+
$r .= esc_html( $order->billing->country );
|
1651 |
+
}
|
1652 |
+
}
|
1653 |
+
|
1654 |
+
if ( ! empty( $order->billing->phone ) ) {
|
1655 |
+
$r .= '<br />' . esc_html( formatPhone( $order->billing->phone ) );
|
1656 |
+
}
|
1657 |
+
|
1658 |
+
// If this column is completely empty, set $r to a dash.
|
1659 |
+
if ( empty( $r ) ) {
|
1660 |
+
$r .= esc_html( '—', 'paid-memberships-pro' );
|
1661 |
+
}
|
1662 |
+
|
1663 |
+
// Echo the data for this column.
|
1664 |
+
echo $r;
|
1665 |
?>
|
1666 |
</td>
|
1667 |
+
<td class="column-gateway">
|
1668 |
<?php
|
1669 |
+
if ( ! empty( $order->gateway ) ) {
|
1670 |
+
if ( ! empty( $pmpro_gateways[$order->gateway] ) ) {
|
1671 |
+
echo $pmpro_gateways[$order->gateway];
|
1672 |
+
} else {
|
1673 |
+
esc_html_e( ucwords( $order->gateway ) );
|
1674 |
+
}
|
1675 |
+
if ( $order->gateway_environment == 'sandbox' ) {
|
1676 |
+
echo ' (test)';
|
1677 |
+
}
|
1678 |
+
} else {
|
1679 |
+
esc_html_e( '—', 'paid-memberships-pro' );
|
1680 |
+
}
|
1681 |
?>
|
1682 |
</td>
|
1683 |
+
<td class="column-transaction-ids">
|
1684 |
<?php esc_html_e( 'Payment', 'paid-memberships-pro' ); ?>:
|
1685 |
<?php
|
1686 |
if ( ! empty( $order->payment_transaction_id ) ) {
|
1699 |
}
|
1700 |
?>
|
1701 |
</td>
|
1702 |
+
<td class="column-status">
|
1703 |
+
<span class="pmpro_order-status pmpro_order-status-<?php esc_attr_e( $order->status ); ?>">
|
1704 |
+
<?php if ( in_array( $order->status, array( 'success', 'cancelled' ) ) ) {
|
1705 |
+
esc_html_e( 'Paid', 'paid-memberships-pro' );
|
1706 |
+
} else {
|
1707 |
+
esc_html_e( ucwords( $order->status ) );
|
1708 |
+
} ?>
|
1709 |
+
</span>
|
1710 |
+
<?php if ( $order->is_renewal() ) { ?>
|
1711 |
+
<a href="<?php echo esc_url( add_query_arg( array( 'page' => 'pmpro-orders', 's' => $order->subscription_transaction_id ), admin_url( 'admin.php' ) ) ); ?>" title="<?php esc_attr_e( 'View all orders for this subscription', 'paid-memberships-pro' ); ?>" class="pmpro_order-renewal"><?php esc_html_e( 'Renewal', 'paid-memberships-pro' ); ?></a>
|
1712 |
<?php } ?>
|
1713 |
</td>
|
1714 |
+
<td class="column-date">
|
1715 |
+
<?php
|
1716 |
+
echo esc_html( sprintf(
|
1717 |
+
// translators: %1$s is the date and %2$s is the time.
|
1718 |
+
__( '%1$s at %2$s', 'paid-memberships-pro' ),
|
1719 |
+
esc_html( date_i18n( get_option( 'date_format' ), $order->getTimestamp() ) ),
|
1720 |
+
esc_html( date_i18n( get_option( 'time_format' ), $order->getTimestamp() ) ),
|
1721 |
+
) ); ?>
|
1722 |
+
</td>
|
1723 |
+
<?php if ( ! empty( $pmpro_discount_codes ) ) { ?>
|
1724 |
+
<td class="column-discount-code">
|
1725 |
+
<?php if ( $order->getDiscountCode() ) { ?>
|
1726 |
+
<a title="<?php esc_attr_e('edit', 'paid-memberships-pro' ); ?>" href="<?php echo esc_url( add_query_arg( array( 'page' => 'pmpro-discountcodes', 'edit' => $order->discount_code->id ), admin_url('admin.php' ) ) ); ?>">
|
1727 |
+
<?php echo esc_html( $order->discount_code->code ); ?>
|
1728 |
+
</a>
|
1729 |
+
<?php } else {
|
1730 |
+
esc_html_e( '—', 'paid-memberships-pro' );
|
1731 |
+
} ?>
|
1732 |
+
</td>
|
1733 |
+
<?php } ?>
|
1734 |
</tr>
|
1735 |
<?php
|
1736 |
}
|
1746 |
</tbody>
|
1747 |
</table>
|
1748 |
</form>
|
1749 |
+
<div class="tablenav bottom">
|
1750 |
+
<div class="tablenav-pages">
|
1751 |
+
<?php if ( $order_ids ) { ?>
|
1752 |
+
<span class="displaying-num"><?php printf( __( '%d orders found.', 'paid-memberships-pro' ), $totalrows ); ?></span>
|
1753 |
+
<?php } ?>
|
1754 |
+
<?php
|
1755 |
+
// add normal args
|
1756 |
+
$pagination_url = esc_url( add_query_arg( $url_params, admin_url( '/admin.php?page=pmpro-orders' ) ) );
|
1757 |
+
echo pmpro_getPaginationString( $pn, $totalrows, $limit, 1, $pagination_url, "&limit=$limit&pn=" );
|
1758 |
+
?>
|
1759 |
+
</div>
|
1760 |
+
</div>
|
1761 |
<?php } ?>
|
1762 |
<?php
|
1763 |
require_once( dirname( __FILE__ ) . '/admin_footer.php' );
|
adminpages/pagesettings.php
CHANGED
@@ -162,11 +162,10 @@ require_once(dirname(__FILE__) . "/admin_header.php");
|
|
162 |
?>
|
163 |
|
164 |
|
165 |
-
<form action="<?php echo admin_url('admin.php?page=pmpro-pagesettings');?>" method="post" enctype="multipart/form-data">
|
166 |
<?php wp_nonce_field('savesettings', 'pmpro_pagesettings_nonce');?>
|
167 |
-
|
168 |
-
<h1 class="wp-heading-inline"><?php esc_html_e( 'Page Settings', 'paid-memberships-pro' ); ?></h1>
|
169 |
<hr class="wp-header-end">
|
|
|
170 |
<?php
|
171 |
// check if we have all pages
|
172 |
if ( $pmpro_pages['account'] ||
|
@@ -183,17 +182,17 @@ require_once(dirname(__FILE__) . "/admin_header.php");
|
|
183 |
}
|
184 |
|
185 |
if ( $pmpro_some_pages_ready ) { ?>
|
186 |
-
<p><?php
|
187 |
<?php } elseif( ! empty( $_REQUEST['manualpages'] ) ) { ?>
|
188 |
-
<p><?php
|
189 |
-
href="<?php echo wp_nonce_url( admin_url( 'admin.php?page=pmpro-pagesettings&createpages=1' ), 'createpages', 'pmpro_pagesettings_nonce');?>"><?php
|
190 |
</p>
|
191 |
<?php } else { ?>
|
192 |
<div class="pmpro-new-install">
|
193 |
-
<h2><?php
|
194 |
-
<h4><?php
|
195 |
-
<a href="<?php echo wp_nonce_url( admin_url( 'admin.php?page=pmpro-pagesettings&createpages=1'), 'createpages', 'pmpro_pagesettings_nonce' ); ?>" class="button-primary"><?php
|
196 |
-
<a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-pagesettings&manualpages=1' ) ); ?>" class="button"><?php
|
197 |
</div> <!-- end pmpro-new-install -->
|
198 |
<?php } ?>
|
199 |
|
@@ -202,7 +201,7 @@ require_once(dirname(__FILE__) . "/admin_header.php");
|
|
202 |
<tbody>
|
203 |
<tr>
|
204 |
<th scope="row" valign="top">
|
205 |
-
<label for="account_page_id"><?php
|
206 |
</th>
|
207 |
<td>
|
208 |
<?php
|
@@ -217,16 +216,16 @@ require_once(dirname(__FILE__) . "/admin_header.php");
|
|
217 |
?>
|
218 |
<?php if (!empty($pmpro_pages['account'])) { ?>
|
219 |
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['account']; ?>&action=edit"
|
220 |
-
class="button button-secondary pmpro_page_edit"><?php
|
221 |
|
222 |
<a target="_blank" href="<?php echo get_permalink($pmpro_pages['account']); ?>"
|
223 |
-
class="button button-secondary pmpro_page_view"><?php
|
224 |
<?php } ?>
|
225 |
-
<p class="description"><?php
|
226 |
</td>
|
227 |
<tr>
|
228 |
<th scope="row" valign="top">
|
229 |
-
<label for="billing_page_id"><?php
|
230 |
</th>
|
231 |
<td>
|
232 |
<?php
|
@@ -241,16 +240,16 @@ require_once(dirname(__FILE__) . "/admin_header.php");
|
|
241 |
?>
|
242 |
<?php if (!empty($pmpro_pages['billing'])) { ?>
|
243 |
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['billing'] ?>&action=edit"
|
244 |
-
class="button button-secondary pmpro_page_edit"><?php
|
245 |
|
246 |
<a target="_blank" href="<?php echo get_permalink($pmpro_pages['billing']); ?>"
|
247 |
-
class="button button-secondary pmpro_page_view"><?php
|
248 |
<?php } ?>
|
249 |
-
<p class="description"><?php
|
250 |
</td>
|
251 |
<tr>
|
252 |
<th scope="row" valign="top">
|
253 |
-
<label for="cancel_page_id"><?php
|
254 |
</th>
|
255 |
<td>
|
256 |
<?php
|
@@ -265,17 +264,17 @@ require_once(dirname(__FILE__) . "/admin_header.php");
|
|
265 |
?>
|
266 |
<?php if (!empty($pmpro_pages['cancel'])) { ?>
|
267 |
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['cancel'] ?>&action=edit"
|
268 |
-
class="button button-secondary pmpro_page_edit"><?php
|
269 |
|
270 |
<a target="_blank" href="<?php echo get_permalink($pmpro_pages['cancel']); ?>"
|
271 |
-
class="button button-secondary pmpro_page_view"><?php
|
272 |
<?php } ?>
|
273 |
-
<p class="description"><?php
|
274 |
</td>
|
275 |
</tr>
|
276 |
<tr>
|
277 |
<th scope="row" valign="top">
|
278 |
-
<label for="checkout_page_id"><?php
|
279 |
</th>
|
280 |
<td>
|
281 |
<?php
|
@@ -290,17 +289,17 @@ require_once(dirname(__FILE__) . "/admin_header.php");
|
|
290 |
?>
|
291 |
<?php if (!empty($pmpro_pages['checkout'])) { ?>
|
292 |
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['checkout'] ?>&action=edit"
|
293 |
-
class="button button-secondary pmpro_page_edit"><?php
|
294 |
|
295 |
<a target="_blank" href="<?php echo get_permalink($pmpro_pages['checkout']); ?>"
|
296 |
-
class="button button-secondary pmpro_page_view"><?php
|
297 |
<?php } ?>
|
298 |
-
<p class="description"><?php
|
299 |
</td>
|
300 |
</tr>
|
301 |
<tr>
|
302 |
<th scope="row" valign="top">
|
303 |
-
<label for="confirmation_page_id"><?php
|
304 |
</th>
|
305 |
<td>
|
306 |
<?php
|
@@ -315,17 +314,17 @@ require_once(dirname(__FILE__) . "/admin_header.php");
|
|
315 |
?>
|
316 |
<?php if (!empty($pmpro_pages['confirmation'])) { ?>
|
317 |
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['confirmation'] ?>&action=edit"
|
318 |
-
class="button button-secondary pmpro_page_edit"><?php
|
319 |
|
320 |
<a target="_blank" href="<?php echo get_permalink($pmpro_pages['confirmation']); ?>"
|
321 |
-
class="button button-secondary pmpro_page_view"><?php
|
322 |
<?php } ?>
|
323 |
-
<p class="description"><?php
|
324 |
</td>
|
325 |
</tr>
|
326 |
<tr>
|
327 |
<th scope="row" valign="top">
|
328 |
-
<label for="invoice_page_id"><?php
|
329 |
</th>
|
330 |
<td>
|
331 |
<?php
|
@@ -340,17 +339,17 @@ require_once(dirname(__FILE__) . "/admin_header.php");
|
|
340 |
?>
|
341 |
<?php if (!empty($pmpro_pages['invoice'])) { ?>
|
342 |
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['invoice'] ?>&action=edit"
|
343 |
-
class="button button-secondary pmpro_page_edit"><?php
|
344 |
|
345 |
<a target="_blank" href="<?php echo get_permalink($pmpro_pages['invoice']); ?>"
|
346 |
-
class="button button-secondary pmpro_page_view"><?php
|
347 |
<?php } ?>
|
348 |
-
<p class="description"><?php
|
349 |
</td>
|
350 |
</tr>
|
351 |
<tr>
|
352 |
<th scope="row" valign="top">
|
353 |
-
<label for="levels_page_id"><?php
|
354 |
</th>
|
355 |
<td>
|
356 |
<?php
|
@@ -365,12 +364,12 @@ require_once(dirname(__FILE__) . "/admin_header.php");
|
|
365 |
?>
|
366 |
<?php if (!empty($pmpro_pages['levels'])) { ?>
|
367 |
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['levels'] ?>&action=edit"
|
368 |
-
class="button button-secondary pmpro_page_edit"><?php
|
369 |
|
370 |
<a target="_blank" href="<?php echo get_permalink($pmpro_pages['levels']); ?>"
|
371 |
-
class="button button-secondary pmpro_page_view"><?php
|
372 |
<?php } ?>
|
373 |
-
<p class="description"><?php
|
374 |
|
375 |
<?php if ( ! function_exists( 'pmpro_advanced_levels_shortcode' ) ) {
|
376 |
$allowed_advanced_levels_html = array (
|
@@ -386,7 +385,7 @@ require_once(dirname(__FILE__) . "/admin_header.php");
|
|
386 |
</tr>
|
387 |
<tr>
|
388 |
<th scope="row" valign="top">
|
389 |
-
<label for="login_page_id"><?php
|
390 |
</th>
|
391 |
<td>
|
392 |
<?php
|
@@ -402,20 +401,20 @@ require_once(dirname(__FILE__) . "/admin_header.php");
|
|
402 |
|
403 |
<?php if ( ! empty( $pmpro_pages['login'] ) ) { ?>
|
404 |
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['login'] ?>&action=edit"
|
405 |
-
class="button button-secondary pmpro_page_edit"><?php
|
406 |
|
407 |
<a target="_blank" href="<?php echo get_permalink($pmpro_pages['login']); ?>"
|
408 |
-
class="button button-secondary pmpro_page_view"><?php
|
409 |
<?php } elseif ( empty( pmpro_getOption( 'login_page_generated' ) ) ) { ?>
|
410 |
|
411 |
-
<a href="<?php echo wp_nonce_url( add_query_arg( array( 'page' => 'pmpro-pagesettings', 'createpages' => 1, 'page_name' => esc_attr( 'login' ) ), admin_url('admin.php') ), 'createpages', 'pmpro_pagesettings_nonce' ); ?>"><?php
|
412 |
<?php } ?>
|
413 |
<p class="description"><?php printf( esc_html__('Include the shortcode %s or the Log In Form block.', 'paid-memberships-pro' ), '[pmpro_login]' ); ?></p>
|
414 |
</td>
|
415 |
</tr>
|
416 |
<tr>
|
417 |
<th scope="row" valign="top">
|
418 |
-
<label for="member_profile_edit_page_id"><?php
|
419 |
</th>
|
420 |
<td>
|
421 |
<?php
|
@@ -431,13 +430,13 @@ require_once(dirname(__FILE__) . "/admin_header.php");
|
|
431 |
|
432 |
<?php if ( ! empty( $pmpro_pages['member_profile_edit'] ) ) { ?>
|
433 |
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['member_profile_edit'] ?>&action=edit"
|
434 |
-
class="button button-secondary pmpro_page_edit"><?php
|
435 |
|
436 |
<a target="_blank" href="<?php echo get_permalink($pmpro_pages['member_profile_edit']); ?>"
|
437 |
-
class="button button-secondary pmpro_page_view"><?php
|
438 |
<?php } elseif ( empty( pmpro_getOption( 'member_profile_edit_page_generated' ) ) ) { ?>
|
439 |
|
440 |
-
<a href="<?php echo wp_nonce_url( add_query_arg( array( 'page' => 'pmpro-pagesettings', 'createpages' => 1, 'page_name' => esc_attr( 'member_profile_edit' ) ), admin_url('admin.php') ), 'createpages', 'pmpro_pagesettings_nonce' ); ?>"><?php
|
441 |
<?php } ?>
|
442 |
<p class="description"><?php printf( esc_html__('Include the shortcode %s or the Member Profile Edit block.', 'paid-memberships-pro' ), '[pmpro_member_profile_edit]' ); ?></p>
|
443 |
|
@@ -458,7 +457,7 @@ require_once(dirname(__FILE__) . "/admin_header.php");
|
|
458 |
|
459 |
<?php
|
460 |
if (!empty($extra_pages)) { ?>
|
461 |
-
<h2><?php
|
462 |
<table class="form-table">
|
463 |
<tbody>
|
464 |
<?php foreach ($extra_pages as $name => $page) { ?>
|
@@ -490,13 +489,13 @@ require_once(dirname(__FILE__) . "/admin_header.php");
|
|
490 |
if(!empty($pmpro_pages[$name])) {
|
491 |
?>
|
492 |
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages[$name] ?>&action=edit"
|
493 |
-
class="button button-secondary pmpro_page_edit"><?php
|
494 |
|
495 |
<a target="_blank" href="<?php echo get_permalink($pmpro_pages[$name]); ?>"
|
496 |
-
class="button button-secondary pmpro_page_view"><?php
|
497 |
<?php } else { ?>
|
498 |
|
499 |
-
<a href="<?php echo wp_nonce_url( add_query_arg( array( 'page' => 'pmpro-pagesettings', 'createpages' => 1, 'page_name' => esc_attr( $name ) ), admin_url('admin.php') ), 'createpages', 'pmpro_pagesettings_nonce' ); ?>"><?php
|
500 |
<?php } ?>
|
501 |
<?php if(!empty($hint)) { ?>
|
502 |
<p class="description"><?php echo $hint;?></p>
|
@@ -509,7 +508,7 @@ require_once(dirname(__FILE__) . "/admin_header.php");
|
|
509 |
<?php } ?>
|
510 |
<p class="submit">
|
511 |
<input name="savesettings" type="submit" class="button button-primary"
|
512 |
-
value="<?php
|
513 |
</p>
|
514 |
<?php } ?>
|
515 |
</form>
|
162 |
?>
|
163 |
|
164 |
|
165 |
+
<form action="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-pagesettings' ) );?>" method="post" enctype="multipart/form-data">
|
166 |
<?php wp_nonce_field('savesettings', 'pmpro_pagesettings_nonce');?>
|
|
|
|
|
167 |
<hr class="wp-header-end">
|
168 |
+
<h1 class="wp-heading-inline"><?php esc_html_e( 'Page Settings', 'paid-memberships-pro' ); ?></h1>
|
169 |
<?php
|
170 |
// check if we have all pages
|
171 |
if ( $pmpro_pages['account'] ||
|
182 |
}
|
183 |
|
184 |
if ( $pmpro_some_pages_ready ) { ?>
|
185 |
+
<p><?php esc_html_e('Manage the WordPress pages assigned to each required Paid Memberships Pro page.', 'paid-memberships-pro' ); ?></p>
|
186 |
<?php } elseif( ! empty( $_REQUEST['manualpages'] ) ) { ?>
|
187 |
+
<p><?php esc_html_e('Assign the WordPress pages for each required Paid Memberships Pro page or', 'paid-memberships-pro' ); ?> <a
|
188 |
+
href="<?php echo wp_nonce_url( admin_url( 'admin.php?page=pmpro-pagesettings&createpages=1' ), 'createpages', 'pmpro_pagesettings_nonce');?>"><?php esc_html_e('click here to let us generate them for you', 'paid-memberships-pro' ); ?></a>.
|
189 |
</p>
|
190 |
<?php } else { ?>
|
191 |
<div class="pmpro-new-install">
|
192 |
+
<h2><?php esc_html_e( 'Manage Pages', 'paid-memberships-pro' ); ?></h2>
|
193 |
+
<h4><?php esc_html_e( 'Several frontend pages are required for your Paid Memberships Pro site.', 'paid-memberships-pro' ); ?></h4>
|
194 |
+
<a href="<?php echo wp_nonce_url( admin_url( 'admin.php?page=pmpro-pagesettings&createpages=1'), 'createpages', 'pmpro_pagesettings_nonce' ); ?>" class="button-primary"><?php esc_html_e( 'Generate Pages For Me', 'paid-memberships-pro' ); ?></a>
|
195 |
+
<a href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-pagesettings&manualpages=1' ) ); ?>" class="button"><?php esc_html_e( 'Create Pages Manually', 'paid-memberships-pro' ); ?></a>
|
196 |
</div> <!-- end pmpro-new-install -->
|
197 |
<?php } ?>
|
198 |
|
201 |
<tbody>
|
202 |
<tr>
|
203 |
<th scope="row" valign="top">
|
204 |
+
<label for="account_page_id"><?php esc_html_e('Account Page', 'paid-memberships-pro' ); ?>:</label>
|
205 |
</th>
|
206 |
<td>
|
207 |
<?php
|
216 |
?>
|
217 |
<?php if (!empty($pmpro_pages['account'])) { ?>
|
218 |
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['account']; ?>&action=edit"
|
219 |
+
class="button button-secondary pmpro_page_edit"><?php esc_html_e('edit page', 'paid-memberships-pro' ); ?></a>
|
220 |
|
221 |
<a target="_blank" href="<?php echo get_permalink($pmpro_pages['account']); ?>"
|
222 |
+
class="button button-secondary pmpro_page_view"><?php esc_html_e('view page', 'paid-memberships-pro' ); ?></a>
|
223 |
<?php } ?>
|
224 |
+
<p class="description"><?php esc_html_e('Include the shortcode', 'paid-memberships-pro' ); ?> [pmpro_account] <?php esc_html_e('or the Membership Account block', 'paid-memberships-pro' ); ?>.</p>
|
225 |
</td>
|
226 |
<tr>
|
227 |
<th scope="row" valign="top">
|
228 |
+
<label for="billing_page_id"><?php esc_html_e('Billing Information Page', 'paid-memberships-pro' ); ?>:</label>
|
229 |
</th>
|
230 |
<td>
|
231 |
<?php
|
240 |
?>
|
241 |
<?php if (!empty($pmpro_pages['billing'])) { ?>
|
242 |
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['billing'] ?>&action=edit"
|
243 |
+
class="button button-secondary pmpro_page_edit"><?php esc_html_e('edit page', 'paid-memberships-pro' ); ?></a>
|
244 |
|
245 |
<a target="_blank" href="<?php echo get_permalink($pmpro_pages['billing']); ?>"
|
246 |
+
class="button button-secondary pmpro_page_view"><?php esc_html_e('view page', 'paid-memberships-pro' ); ?></a>
|
247 |
<?php } ?>
|
248 |
+
<p class="description"><?php esc_html_e('Include the shortcode', 'paid-memberships-pro' ); ?> [pmpro_billing] <?php esc_html_e('or the Membership Billing block', 'paid-memberships-pro' ); ?>.</p>
|
249 |
</td>
|
250 |
<tr>
|
251 |
<th scope="row" valign="top">
|
252 |
+
<label for="cancel_page_id"><?php esc_html_e('Cancel Page', 'paid-memberships-pro' ); ?>:</label>
|
253 |
</th>
|
254 |
<td>
|
255 |
<?php
|
264 |
?>
|
265 |
<?php if (!empty($pmpro_pages['cancel'])) { ?>
|
266 |
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['cancel'] ?>&action=edit"
|
267 |
+
class="button button-secondary pmpro_page_edit"><?php esc_html_e('edit page', 'paid-memberships-pro' ); ?></a>
|
268 |
|
269 |
<a target="_blank" href="<?php echo get_permalink($pmpro_pages['cancel']); ?>"
|
270 |
+
class="button button-secondary pmpro_page_view"><?php esc_html_e('view page', 'paid-memberships-pro' ); ?></a>
|
271 |
<?php } ?>
|
272 |
+
<p class="description"><?php esc_html_e('Include the shortcode', 'paid-memberships-pro' ); ?> [pmpro_cancel] <?php esc_html_e('or the Membership Cancel block', 'paid-memberships-pro' ); ?>.</p>
|
273 |
</td>
|
274 |
</tr>
|
275 |
<tr>
|
276 |
<th scope="row" valign="top">
|
277 |
+
<label for="checkout_page_id"><?php esc_html_e('Checkout Page', 'paid-memberships-pro' ); ?>:</label>
|
278 |
</th>
|
279 |
<td>
|
280 |
<?php
|
289 |
?>
|
290 |
<?php if (!empty($pmpro_pages['checkout'])) { ?>
|
291 |
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['checkout'] ?>&action=edit"
|
292 |
+
class="button button-secondary pmpro_page_edit"><?php esc_html_e('edit page', 'paid-memberships-pro' ); ?></a>
|
293 |
|
294 |
<a target="_blank" href="<?php echo get_permalink($pmpro_pages['checkout']); ?>"
|
295 |
+
class="button button-secondary pmpro_page_view"><?php esc_html_e('view page', 'paid-memberships-pro' ); ?></a>
|
296 |
<?php } ?>
|
297 |
+
<p class="description"><?php esc_html_e('Include the shortcode', 'paid-memberships-pro' ); ?> [pmpro_checkout] <?php esc_html_e('or the Membership Checkout block', 'paid-memberships-pro' ); ?>.</p>
|
298 |
</td>
|
299 |
</tr>
|
300 |
<tr>
|
301 |
<th scope="row" valign="top">
|
302 |
+
<label for="confirmation_page_id"><?php esc_html_e('Confirmation Page', 'paid-memberships-pro' ); ?>:</label>
|
303 |
</th>
|
304 |
<td>
|
305 |
<?php
|
314 |
?>
|
315 |
<?php if (!empty($pmpro_pages['confirmation'])) { ?>
|
316 |
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['confirmation'] ?>&action=edit"
|
317 |
+
class="button button-secondary pmpro_page_edit"><?php esc_html_e('edit page', 'paid-memberships-pro' ); ?></a>
|
318 |
|
319 |
<a target="_blank" href="<?php echo get_permalink($pmpro_pages['confirmation']); ?>"
|
320 |
+
class="button button-secondary pmpro_page_view"><?php esc_html_e('view page', 'paid-memberships-pro' ); ?></a>
|
321 |
<?php } ?>
|
322 |
+
<p class="description"><?php esc_html_e('Include the shortcode', 'paid-memberships-pro' ); ?> [pmpro_confirmation] <?php esc_html_e('or the Membership Confirmation block', 'paid-memberships-pro' ); ?>.</p>
|
323 |
</td>
|
324 |
</tr>
|
325 |
<tr>
|
326 |
<th scope="row" valign="top">
|
327 |
+
<label for="invoice_page_id"><?php esc_html_e('Invoice Page', 'paid-memberships-pro' ); ?>:</label>
|
328 |
</th>
|
329 |
<td>
|
330 |
<?php
|
339 |
?>
|
340 |
<?php if (!empty($pmpro_pages['invoice'])) { ?>
|
341 |
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['invoice'] ?>&action=edit"
|
342 |
+
class="button button-secondary pmpro_page_edit"><?php esc_html_e('edit page', 'paid-memberships-pro' ); ?></a>
|
343 |
|
344 |
<a target="_blank" href="<?php echo get_permalink($pmpro_pages['invoice']); ?>"
|
345 |
+
class="button button-secondary pmpro_page_view"><?php esc_html_e('view page', 'paid-memberships-pro' ); ?></a>
|
346 |
<?php } ?>
|
347 |
+
<p class="description"><?php esc_html_e('Include the shortcode', 'paid-memberships-pro' ); ?> [pmpro_invoice] <?php esc_html_e('or the Membership Invoice block', 'paid-memberships-pro' ); ?>.</p>
|
348 |
</td>
|
349 |
</tr>
|
350 |
<tr>
|
351 |
<th scope="row" valign="top">
|
352 |
+
<label for="levels_page_id"><?php esc_html_e('Levels Page', 'paid-memberships-pro' ); ?>:</label>
|
353 |
</th>
|
354 |
<td>
|
355 |
<?php
|
364 |
?>
|
365 |
<?php if (!empty($pmpro_pages['levels'])) { ?>
|
366 |
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['levels'] ?>&action=edit"
|
367 |
+
class="button button-secondary pmpro_page_edit"><?php esc_html_e('edit page', 'paid-memberships-pro' ); ?></a>
|
368 |
|
369 |
<a target="_blank" href="<?php echo get_permalink($pmpro_pages['levels']); ?>"
|
370 |
+
class="button button-secondary pmpro_page_view"><?php esc_html_e('view page', 'paid-memberships-pro' ); ?></a>
|
371 |
<?php } ?>
|
372 |
+
<p class="description"><?php esc_html_e('Include the shortcode', 'paid-memberships-pro' ); ?> [pmpro_levels] <?php esc_html_e('or the Membership Levels block', 'paid-memberships-pro' ); ?>.</p>
|
373 |
|
374 |
<?php if ( ! function_exists( 'pmpro_advanced_levels_shortcode' ) ) {
|
375 |
$allowed_advanced_levels_html = array (
|
385 |
</tr>
|
386 |
<tr>
|
387 |
<th scope="row" valign="top">
|
388 |
+
<label for="login_page_id"><?php esc_html_e( 'Log In Page', 'paid-memberships-pro' ); ?>:</label>
|
389 |
</th>
|
390 |
<td>
|
391 |
<?php
|
401 |
|
402 |
<?php if ( ! empty( $pmpro_pages['login'] ) ) { ?>
|
403 |
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['login'] ?>&action=edit"
|
404 |
+
class="button button-secondary pmpro_page_edit"><?php esc_html_e('edit page', 'paid-memberships-pro' ); ?></a>
|
405 |
|
406 |
<a target="_blank" href="<?php echo get_permalink($pmpro_pages['login']); ?>"
|
407 |
+
class="button button-secondary pmpro_page_view"><?php esc_html_e('view page', 'paid-memberships-pro' ); ?></a>
|
408 |
<?php } elseif ( empty( pmpro_getOption( 'login_page_generated' ) ) ) { ?>
|
409 |
|
410 |
+
<a href="<?php echo wp_nonce_url( add_query_arg( array( 'page' => 'pmpro-pagesettings', 'createpages' => 1, 'page_name' => esc_attr( 'login' ) ), admin_url('admin.php') ), 'createpages', 'pmpro_pagesettings_nonce' ); ?>"><?php esc_html_e('Generate Page', 'paid-memberships-pro' ); ?></a>
|
411 |
<?php } ?>
|
412 |
<p class="description"><?php printf( esc_html__('Include the shortcode %s or the Log In Form block.', 'paid-memberships-pro' ), '[pmpro_login]' ); ?></p>
|
413 |
</td>
|
414 |
</tr>
|
415 |
<tr>
|
416 |
<th scope="row" valign="top">
|
417 |
+
<label for="member_profile_edit_page_id"><?php esc_html_e( 'Member Profile Edit Page', 'paid-memberships-pro' ); ?>:</label>
|
418 |
</th>
|
419 |
<td>
|
420 |
<?php
|
430 |
|
431 |
<?php if ( ! empty( $pmpro_pages['member_profile_edit'] ) ) { ?>
|
432 |
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages['member_profile_edit'] ?>&action=edit"
|
433 |
+
class="button button-secondary pmpro_page_edit"><?php esc_html_e('edit page', 'paid-memberships-pro' ); ?></a>
|
434 |
|
435 |
<a target="_blank" href="<?php echo get_permalink($pmpro_pages['member_profile_edit']); ?>"
|
436 |
+
class="button button-secondary pmpro_page_view"><?php esc_html_e('view page', 'paid-memberships-pro' ); ?></a>
|
437 |
<?php } elseif ( empty( pmpro_getOption( 'member_profile_edit_page_generated' ) ) ) { ?>
|
438 |
|
439 |
+
<a href="<?php echo wp_nonce_url( add_query_arg( array( 'page' => 'pmpro-pagesettings', 'createpages' => 1, 'page_name' => esc_attr( 'member_profile_edit' ) ), admin_url('admin.php') ), 'createpages', 'pmpro_pagesettings_nonce' ); ?>"><?php esc_html_e('Generate Page', 'paid-memberships-pro' ); ?></a>
|
440 |
<?php } ?>
|
441 |
<p class="description"><?php printf( esc_html__('Include the shortcode %s or the Member Profile Edit block.', 'paid-memberships-pro' ), '[pmpro_member_profile_edit]' ); ?></p>
|
442 |
|
457 |
|
458 |
<?php
|
459 |
if (!empty($extra_pages)) { ?>
|
460 |
+
<h2><?php esc_html_e('Additional Page Settings', 'paid-memberships-pro' ); ?></h2>
|
461 |
<table class="form-table">
|
462 |
<tbody>
|
463 |
<?php foreach ($extra_pages as $name => $page) { ?>
|
489 |
if(!empty($pmpro_pages[$name])) {
|
490 |
?>
|
491 |
<a target="_blank" href="post.php?post=<?php echo $pmpro_pages[$name] ?>&action=edit"
|
492 |
+
class="button button-secondary pmpro_page_edit"><?php esc_html_e('edit page', 'paid-memberships-pro' ); ?></a>
|
493 |
|
494 |
<a target="_blank" href="<?php echo get_permalink($pmpro_pages[$name]); ?>"
|
495 |
+
class="button button-secondary pmpro_page_view"><?php esc_html_e('view page', 'paid-memberships-pro' ); ?></a>
|
496 |
<?php } else { ?>
|
497 |
|
498 |
+
<a href="<?php echo wp_nonce_url( add_query_arg( array( 'page' => 'pmpro-pagesettings', 'createpages' => 1, 'page_name' => esc_attr( $name ) ), admin_url('admin.php') ), 'createpages', 'pmpro_pagesettings_nonce' ); ?>"><?php esc_html_e('Generate Page', 'paid-memberships-pro' ); ?></a>
|
499 |
<?php } ?>
|
500 |
<?php if(!empty($hint)) { ?>
|
501 |
<p class="description"><?php echo $hint;?></p>
|
508 |
<?php } ?>
|
509 |
<p class="submit">
|
510 |
<input name="savesettings" type="submit" class="button button-primary"
|
511 |
+
value="<?php esc_attr_e('Save Settings', 'paid-memberships-pro' ); ?>"/>
|
512 |
</p>
|
513 |
<?php } ?>
|
514 |
</form>
|
adminpages/paymentsettings.php
CHANGED
@@ -108,23 +108,26 @@
|
|
108 |
|
109 |
<form action="" method="post" enctype="multipart/form-data">
|
110 |
<?php wp_nonce_field('savesettings', 'pmpro_paymentsettings_nonce');?>
|
111 |
-
|
112 |
<h1 class="wp-heading-inline"><?php esc_html_e( 'Payment Gateway', 'paid-memberships-pro' );?> & <?php esc_html_e( 'SSL Settings', 'paid-memberships-pro' ); ?></h1>
|
113 |
-
|
114 |
-
|
115 |
-
|
|
|
|
|
|
|
116 |
|
117 |
<table class="form-table">
|
118 |
<tbody>
|
119 |
<tr class="pmpro_settings_divider">
|
120 |
<td colspan="2">
|
121 |
<hr />
|
122 |
-
<h3><?php
|
123 |
</td>
|
124 |
</tr>
|
125 |
<tr>
|
126 |
<th scope="row" valign="top">
|
127 |
-
<label for="gateway"><?php
|
128 |
</th>
|
129 |
<td>
|
130 |
<select id="gateway" name="gateway">
|
@@ -139,18 +142,20 @@
|
|
139 |
?>
|
140 |
</select>
|
141 |
<?php if( pmpro_onlyFreeLevels() ) { ?>
|
142 |
-
<div id="pmpro-default-gateway-message" style="display:none;"><p class="description"><?php echo
|
|
|
|
|
143 |
<?php } ?>
|
144 |
</td>
|
145 |
</tr>
|
146 |
<tr>
|
147 |
<th scope="row" valign="top">
|
148 |
-
<label for="gateway_environment"><?php
|
149 |
</th>
|
150 |
<td>
|
151 |
<select id="gateway_environment" name="gateway_environment">
|
152 |
-
<option value="sandbox" <?php selected( $gateway_environment, "sandbox" ); ?>><?php
|
153 |
-
<option value="live" <?php selected( $gateway_environment, "live" ); ?>><?php
|
154 |
</select>
|
155 |
<script>
|
156 |
function pmpro_changeGateway()
|
@@ -191,12 +196,12 @@
|
|
191 |
<tr class="pmpro_settings_divider">
|
192 |
<td colspan="2">
|
193 |
<hr />
|
194 |
-
<h3><?php
|
195 |
</td>
|
196 |
</tr>
|
197 |
<tr class="gateway gateway_ <?php echo esc_attr(pmpro_getClassesForPaymentSettingsField("currency"));?>" <?php if(!empty($gateway) && $gateway != "paypal" && $gateway != "paypalexpress" && $gateway != "check" && $gateway != "paypalstandard" && $gateway != "braintree" && $gateway != "twocheckout" && $gateway != "cybersource" && $gateway != "payflowpro" && $gateway != "stripe" && $gateway != "authorizenet" && $gateway != "gourl") { ?>style="display: none;"<?php } ?>>
|
198 |
<th scope="row" valign="top">
|
199 |
-
<label for="currency"><?php
|
200 |
</th>
|
201 |
<td>
|
202 |
<select name="currency">
|
@@ -207,17 +212,17 @@
|
|
207 |
if(is_array($cdescription))
|
208 |
$cdescription = $cdescription['name'];
|
209 |
?>
|
210 |
-
<option value="<?php echo $ccode?>" <?php if($currency == $ccode) { ?>selected="selected"<?php } ?>><?php echo $cdescription?></option>
|
211 |
<?php
|
212 |
}
|
213 |
?>
|
214 |
</select>
|
215 |
-
<p class="description"><?php
|
216 |
</td>
|
217 |
</tr>
|
218 |
<tr class="gateway gateway_ <?php echo esc_attr(pmpro_getClassesForPaymentSettingsField("accepted_credit_cards"));?>" <?php if(!empty($gateway) && $gateway != "authorizenet" && $gateway != "paypal" && $gateway != "stripe" && $gateway != "payflowpro" && $gateway != "braintree" && $gateway != "twocheckout" && $gateway != "cybersource") { ?>style="display: none;"<?php } ?>>
|
219 |
<th scope="row" valign="top">
|
220 |
-
<label for="creditcards"><?php
|
221 |
</th>
|
222 |
<td>
|
223 |
<input type="checkbox" id="creditcards_visa" name="creditcards_visa" value="1" <?php if(in_array("Visa", $pmpro_accepted_credit_cards)) { ?>checked="checked"<?php } ?> /> <label for="creditcards_visa">Visa</label><br />
|
@@ -231,43 +236,49 @@
|
|
231 |
</tr>
|
232 |
<tr class="gateway gateway_ <?php echo esc_attr(pmpro_getClassesForPaymentSettingsField("tax_rate"));?>" <?php if(!empty($gateway) && $gateway != "stripe" && $gateway != "authorizenet" && $gateway != "paypal" && $gateway != "paypalexpress" && $gateway != "check" && $gateway != "paypalstandard" && $gateway != "payflowpro" && $gateway != "braintree" && $gateway != "twocheckout" && $gateway != "cybersource") { ?>style="display: none;"<?php } ?>>
|
233 |
<th scope="row" valign="top">
|
234 |
-
<label for="tax"><?php
|
235 |
</th>
|
236 |
<td>
|
237 |
<?php _e('Tax State', 'paid-memberships-pro' );?>:
|
238 |
<input type="text" id="tax_state" name="tax_state" value="<?php echo esc_attr($tax_state)?>" class="small-text" /> (<?php _e('abbreviation, e.g. "PA"', 'paid-memberships-pro' );?>)
|
239 |
<?php _e('Tax Rate', 'paid-memberships-pro' ); ?>:
|
240 |
-
<input type="text" id="tax_rate" name="tax_rate" size="10" value="<?php echo esc_attr($tax_rate)?>" class="small-text" /> (<?php _e('decimal, e.g. "0.06"', 'paid-memberships-pro' );?>)
|
241 |
-
<p class="description"
|
|
|
|
|
|
|
|
|
|
|
|
|
242 |
</td>
|
243 |
</tr>
|
244 |
|
245 |
<tr class="pmpro_settings_divider">
|
246 |
<td colspan="2">
|
247 |
<hr />
|
248 |
-
<h3><?php
|
249 |
</td>
|
250 |
</tr>
|
251 |
<tr class="gateway gateway_ <?php echo esc_attr(pmpro_getClassesForPaymentSettingsField("use_ssl"));?>">
|
252 |
<th scope="row" valign="top">
|
253 |
-
<label for="use_ssl"><?php
|
254 |
</th>
|
255 |
<td>
|
256 |
<?php
|
257 |
if( pmpro_check_site_url_for_https() ) {
|
258 |
//entire site is over HTTPS
|
259 |
?>
|
260 |
-
<p class="description"><?php
|
261 |
<?php
|
262 |
} else {
|
263 |
//site is not over HTTPS, show setting
|
264 |
?>
|
265 |
<select id="use_ssl" name="use_ssl">
|
266 |
-
<option value="0" <?php if(empty($use_ssl)) { ?>selected="selected"<?php } ?>><?php
|
267 |
-
<option value="1" <?php if(!empty($use_ssl) && $use_ssl == 1) { ?>selected="selected"<?php } ?>><?php
|
268 |
-
<option value="2" <?php if(!empty($use_ssl) && $use_ssl == 2) { ?>selected="selected"<?php } ?>><?php
|
269 |
</select>
|
270 |
-
<p class="description"><?php
|
271 |
<?php
|
272 |
}
|
273 |
?>
|
@@ -275,26 +286,32 @@
|
|
275 |
</tr>
|
276 |
<tr>
|
277 |
<th scope="row" valign="top">
|
278 |
-
<label for="sslseal"><?php
|
279 |
</th>
|
280 |
<td>
|
281 |
<textarea id="sslseal" name="sslseal" rows="3" cols="50" class="large-text"><?php echo stripslashes(esc_textarea($sslseal))?></textarea>
|
282 |
-
<p class="description"
|
|
|
|
|
|
|
|
|
|
|
|
|
283 |
</td>
|
284 |
</tr>
|
285 |
<tr>
|
286 |
<th scope="row" valign="top">
|
287 |
-
<label for="nuclear_HTTPS"><?php
|
288 |
</th>
|
289 |
<td>
|
290 |
-
<input type="checkbox" id="nuclear_HTTPS" name="nuclear_HTTPS" value="1" <?php if(!empty($nuclear_HTTPS)) { ?>checked="checked"<?php } ?> /> <label for="nuclear_HTTPS"><?php
|
291 |
</td>
|
292 |
</tr>
|
293 |
|
294 |
</tbody>
|
295 |
</table>
|
296 |
<p class="submit">
|
297 |
-
<input name="savesettings" type="submit" class="button button-primary" value="<?php
|
298 |
</p>
|
299 |
</form>
|
300 |
|
108 |
|
109 |
<form action="" method="post" enctype="multipart/form-data">
|
110 |
<?php wp_nonce_field('savesettings', 'pmpro_paymentsettings_nonce');?>
|
111 |
+
<hr class="wp-header-end">
|
112 |
<h1 class="wp-heading-inline"><?php esc_html_e( 'Payment Gateway', 'paid-memberships-pro' );?> & <?php esc_html_e( 'SSL Settings', 'paid-memberships-pro' ); ?></h1>
|
113 |
+
<p><?php
|
114 |
+
$gateway_settings_link = '<a title="' . esc_html__( 'Paid Memberships Pro - Payment Gateway Settings', 'paid-memberships-pro' ) . '" target="_blank" rel="nofollow noopener" href="https://www.paidmembershipspro.com/documentation/admin/payment-ssl-settings/?utm_source=plugin&utm_medium=pmpro-paymentsettings&utm_campaign=documentation&utm_content=payment-gateway-settings">' . esc_html__( 'Payment Gateway Settings', 'paid-memberships-pro' ) . '</a>';
|
115 |
+
$ssl_settings_link = '<a title="' . esc_html__( 'Paid Memberships Pro - SSL Settings', 'paid-memberships-pro' ) . '" target="_blank" rel="nofollow noopener" href="https://www.paidmembershipspro.com/documentation/initial-plugin-setup/ssl/?utm_source=plugin&utm_medium=pmpro-paymentsettings&utm_campaign=documentation&utm_content=ssl&utm_term=link1">' . esc_html__( 'SSL', 'paid-memberships-pro' ) . '</a>';
|
116 |
+
// translators: %s and %s: Links to Payment Gateway Settings and SSL Settings docs.
|
117 |
+
printf( esc_html__('Learn more about %s and %s.', 'paid-memberships-pro' ), $gateway_settings_link, $ssl_settings_link );
|
118 |
+
?></p>
|
119 |
|
120 |
<table class="form-table">
|
121 |
<tbody>
|
122 |
<tr class="pmpro_settings_divider">
|
123 |
<td colspan="2">
|
124 |
<hr />
|
125 |
+
<h3><?php esc_html_e('Choose a Gateway', 'paid-memberships-pro' ); ?></h3>
|
126 |
</td>
|
127 |
</tr>
|
128 |
<tr>
|
129 |
<th scope="row" valign="top">
|
130 |
+
<label for="gateway"><?php esc_html_e('Payment Gateway', 'paid-memberships-pro' );?>:</label>
|
131 |
</th>
|
132 |
<td>
|
133 |
<select id="gateway" name="gateway">
|
142 |
?>
|
143 |
</select>
|
144 |
<?php if( pmpro_onlyFreeLevels() ) { ?>
|
145 |
+
<div id="pmpro-default-gateway-message" style="display:none;"><p class="description"><?php echo esc_html__( 'This gateway is for membership sites with Free levels or for sites that accept payment offline.', 'paid-memberships-pro' )
|
146 |
+
. '<br/>'
|
147 |
+
. esc_html__( 'It is not connected to a live gateway environment and cannot accept payments.', 'paid-memberships-pro' ); ?></p></div>
|
148 |
<?php } ?>
|
149 |
</td>
|
150 |
</tr>
|
151 |
<tr>
|
152 |
<th scope="row" valign="top">
|
153 |
+
<label for="gateway_environment"><?php esc_html_e('Gateway Environment', 'paid-memberships-pro' );?>:</label>
|
154 |
</th>
|
155 |
<td>
|
156 |
<select id="gateway_environment" name="gateway_environment">
|
157 |
+
<option value="sandbox" <?php selected( $gateway_environment, "sandbox" ); ?>><?php esc_html_e('Sandbox/Testing', 'paid-memberships-pro' );?></option>
|
158 |
+
<option value="live" <?php selected( $gateway_environment, "live" ); ?>><?php esc_html_e('Live/Production', 'paid-memberships-pro' );?></option>
|
159 |
</select>
|
160 |
<script>
|
161 |
function pmpro_changeGateway()
|
196 |
<tr class="pmpro_settings_divider">
|
197 |
<td colspan="2">
|
198 |
<hr />
|
199 |
+
<h3><?php esc_html_e('Currency and Tax Settings', 'paid-memberships-pro' ); ?></h3>
|
200 |
</td>
|
201 |
</tr>
|
202 |
<tr class="gateway gateway_ <?php echo esc_attr(pmpro_getClassesForPaymentSettingsField("currency"));?>" <?php if(!empty($gateway) && $gateway != "paypal" && $gateway != "paypalexpress" && $gateway != "check" && $gateway != "paypalstandard" && $gateway != "braintree" && $gateway != "twocheckout" && $gateway != "cybersource" && $gateway != "payflowpro" && $gateway != "stripe" && $gateway != "authorizenet" && $gateway != "gourl") { ?>style="display: none;"<?php } ?>>
|
203 |
<th scope="row" valign="top">
|
204 |
+
<label for="currency"><?php esc_html_e('Currency', 'paid-memberships-pro' );?>:</label>
|
205 |
</th>
|
206 |
<td>
|
207 |
<select name="currency">
|
212 |
if(is_array($cdescription))
|
213 |
$cdescription = $cdescription['name'];
|
214 |
?>
|
215 |
+
<option value="<?php echo esc_attr( $ccode ) ?>" <?php if($currency == $ccode) { ?>selected="selected"<?php } ?>><?php echo esc_html( $cdescription ); ?></option>
|
216 |
<?php
|
217 |
}
|
218 |
?>
|
219 |
</select>
|
220 |
+
<p class="description"><?php esc_html_e( 'Not all currencies will be supported by every gateway. Please check with your gateway.', 'paid-memberships-pro' ); ?></p>
|
221 |
</td>
|
222 |
</tr>
|
223 |
<tr class="gateway gateway_ <?php echo esc_attr(pmpro_getClassesForPaymentSettingsField("accepted_credit_cards"));?>" <?php if(!empty($gateway) && $gateway != "authorizenet" && $gateway != "paypal" && $gateway != "stripe" && $gateway != "payflowpro" && $gateway != "braintree" && $gateway != "twocheckout" && $gateway != "cybersource") { ?>style="display: none;"<?php } ?>>
|
224 |
<th scope="row" valign="top">
|
225 |
+
<label for="creditcards"><?php esc_html_e('Accepted Credit Card Types', 'paid-memberships-pro' );?></label>
|
226 |
</th>
|
227 |
<td>
|
228 |
<input type="checkbox" id="creditcards_visa" name="creditcards_visa" value="1" <?php if(in_array("Visa", $pmpro_accepted_credit_cards)) { ?>checked="checked"<?php } ?> /> <label for="creditcards_visa">Visa</label><br />
|
236 |
</tr>
|
237 |
<tr class="gateway gateway_ <?php echo esc_attr(pmpro_getClassesForPaymentSettingsField("tax_rate"));?>" <?php if(!empty($gateway) && $gateway != "stripe" && $gateway != "authorizenet" && $gateway != "paypal" && $gateway != "paypalexpress" && $gateway != "check" && $gateway != "paypalstandard" && $gateway != "payflowpro" && $gateway != "braintree" && $gateway != "twocheckout" && $gateway != "cybersource") { ?>style="display: none;"<?php } ?>>
|
238 |
<th scope="row" valign="top">
|
239 |
+
<label for="tax"><?php esc_html_e('Sales Tax', 'paid-memberships-pro' );?> (<?php esc_html_e('optional', 'paid-memberships-pro' );?>)</label>
|
240 |
</th>
|
241 |
<td>
|
242 |
<?php _e('Tax State', 'paid-memberships-pro' );?>:
|
243 |
<input type="text" id="tax_state" name="tax_state" value="<?php echo esc_attr($tax_state)?>" class="small-text" /> (<?php _e('abbreviation, e.g. "PA"', 'paid-memberships-pro' );?>)
|
244 |
<?php _e('Tax Rate', 'paid-memberships-pro' ); ?>:
|
245 |
+
<input type="text" id="tax_rate" name="tax_rate" size="10" value="<?php echo esc_attr($tax_rate)?>" class="small-text" /> (<?php _e('decimal, e.g. "0.06"', 'paid-memberships-pro' );?>)
|
246 |
+
<p class="description">
|
247 |
+
<?php
|
248 |
+
$filter_link = '<a target="_blank" rel="nofollow noopener" href="https://www.paidmembershipspro.com/non-us-taxes-paid-memberships-pro/?utm_source=plugin&utm_medium=pmpro-paymentsettings&utm_campaign=blog&utm_content=non-us-taxes-paid-memberships-pro">pmpro_tax filter</a>';
|
249 |
+
// translators: %s: A link to the docs for the pmpro_tax filter.
|
250 |
+
printf( __('US only. If values are given, tax will be applied for any members ordering from the selected state. For non-US or more complex tax rules, use the %s.', 'paid-memberships-pro' ), $filter_link );
|
251 |
+
?>
|
252 |
+
</p>
|
253 |
</td>
|
254 |
</tr>
|
255 |
|
256 |
<tr class="pmpro_settings_divider">
|
257 |
<td colspan="2">
|
258 |
<hr />
|
259 |
+
<h3><?php esc_html_e('SSL Settings', 'paid-memberships-pro' ); ?></h3>
|
260 |
</td>
|
261 |
</tr>
|
262 |
<tr class="gateway gateway_ <?php echo esc_attr(pmpro_getClassesForPaymentSettingsField("use_ssl"));?>">
|
263 |
<th scope="row" valign="top">
|
264 |
+
<label for="use_ssl"><?php esc_html_e('Force SSL', 'paid-memberships-pro' );?>:</label>
|
265 |
</th>
|
266 |
<td>
|
267 |
<?php
|
268 |
if( pmpro_check_site_url_for_https() ) {
|
269 |
//entire site is over HTTPS
|
270 |
?>
|
271 |
+
<p class="description"><?php esc_html_e( 'Your Site URL starts with https:// and so PMPro will allow your entire site to be served over HTTPS.', 'paid-memberships-pro' ); ?></p>
|
272 |
<?php
|
273 |
} else {
|
274 |
//site is not over HTTPS, show setting
|
275 |
?>
|
276 |
<select id="use_ssl" name="use_ssl">
|
277 |
+
<option value="0" <?php if(empty($use_ssl)) { ?>selected="selected"<?php } ?>><?php esc_html_e('No', 'paid-memberships-pro' );?></option>
|
278 |
+
<option value="1" <?php if(!empty($use_ssl) && $use_ssl == 1) { ?>selected="selected"<?php } ?>><?php esc_html_e('Yes', 'paid-memberships-pro' );?></option>
|
279 |
+
<option value="2" <?php if(!empty($use_ssl) && $use_ssl == 2) { ?>selected="selected"<?php } ?>><?php esc_html_e('Yes (with JavaScript redirects)', 'paid-memberships-pro' );?></option>
|
280 |
</select>
|
281 |
+
<p class="description"><?php esc_html_e('Recommended: Yes. Try the JavaScript redirects setting if you are having issues with infinite redirect loops.', 'paid-memberships-pro' ); ?></p>
|
282 |
<?php
|
283 |
}
|
284 |
?>
|
286 |
</tr>
|
287 |
<tr>
|
288 |
<th scope="row" valign="top">
|
289 |
+
<label for="sslseal"><?php esc_html_e('SSL Seal Code', 'paid-memberships-pro' );?>:</label>
|
290 |
</th>
|
291 |
<td>
|
292 |
<textarea id="sslseal" name="sslseal" rows="3" cols="50" class="large-text"><?php echo stripslashes(esc_textarea($sslseal))?></textarea>
|
293 |
+
<p class="description">
|
294 |
+
<?php
|
295 |
+
$ssl_certificate_link = '<a target="_blank" rel="nofollow noopener" href="https://www.paidmembershipspro.com/documentation/initial-plugin-setup/ssl/?utm_source=plugin&utm_medium=pmpro-paymentsettings&utm_campaign=documentation&utm_content=ssl&utm_term=link2">' . esc_html__( 'SSL Certificate', 'paid-memberships-pro' ) . '</a>';
|
296 |
+
// translators: %s: Link to SSL Certificate docs.
|
297 |
+
printf( esc_html__('Your %s must be installed by your web host. Use this field to display your seal or other trusted merchant images. This field does not accept JavaScript.', 'paid-memberships-pro' ), $ssl_certificate_link );
|
298 |
+
?>
|
299 |
+
</p>
|
300 |
</td>
|
301 |
</tr>
|
302 |
<tr>
|
303 |
<th scope="row" valign="top">
|
304 |
+
<label for="nuclear_HTTPS"><?php esc_html_e('Extra HTTPS URL Filter', 'paid-memberships-pro' );?>:</label>
|
305 |
</th>
|
306 |
<td>
|
307 |
+
<input type="checkbox" id="nuclear_HTTPS" name="nuclear_HTTPS" value="1" <?php if(!empty($nuclear_HTTPS)) { ?>checked="checked"<?php } ?> /> <label for="nuclear_HTTPS"><?php esc_html_e('Pass all generated HTML through a URL filter to add HTTPS to URLs used on secure pages. Check this if you are using SSL and have warnings on your checkout pages.', 'paid-memberships-pro' );?></label>
|
308 |
</td>
|
309 |
</tr>
|
310 |
|
311 |
</tbody>
|
312 |
</table>
|
313 |
<p class="submit">
|
314 |
+
<input name="savesettings" type="submit" class="button button-primary" value="<?php esc_attr_e('Save Settings', 'paid-memberships-pro' );?>" />
|
315 |
</p>
|
316 |
</form>
|
317 |
|
adminpages/reports.php
CHANGED
@@ -8,14 +8,17 @@ global $pmpro_reports;
|
|
8 |
/**
|
9 |
* Load the Paid Memberships Pro dashboard-area header
|
10 |
*/
|
11 |
-
require_once( dirname( __FILE__ ) . '/admin_header.php' );
|
12 |
|
|
|
|
|
|
|
13 |
// View a single report if requested.
|
14 |
if ( ! empty( $_REQUEST[ 'report' ] ) ) {
|
15 |
//view a single report
|
16 |
$report = sanitize_text_field( $_REQUEST[ 'report' ] );
|
17 |
call_user_func( 'pmpro_report_' . $report . '_page' ); ?>
|
18 |
-
<a class="button button-primary" href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-reports' ) );?>"><?php esc_html_e( 'Back to Reports Dashboard', 'paid-memberships-pro' ); ?></a>
|
19 |
|
20 |
<?php
|
21 |
} else {
|
8 |
/**
|
9 |
* Load the Paid Memberships Pro dashboard-area header
|
10 |
*/
|
11 |
+
require_once( dirname( __FILE__ ) . '/admin_header.php' ); ?>
|
12 |
|
13 |
+
<hr class="wp-header-end">
|
14 |
+
|
15 |
+
<?php
|
16 |
// View a single report if requested.
|
17 |
if ( ! empty( $_REQUEST[ 'report' ] ) ) {
|
18 |
//view a single report
|
19 |
$report = sanitize_text_field( $_REQUEST[ 'report' ] );
|
20 |
call_user_func( 'pmpro_report_' . $report . '_page' ); ?>
|
21 |
+
<p><a class="button button-primary" href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-reports' ) );?>"><?php esc_html_e( 'Back to Reports Dashboard', 'paid-memberships-pro' ); ?></a></p>
|
22 |
|
23 |
<?php
|
24 |
} else {
|
adminpages/reports/login.php
CHANGED
@@ -28,38 +28,38 @@ function pmpro_report_login_widget() {
|
|
28 |
<thead>
|
29 |
<tr>
|
30 |
<th scope="col"> </th>
|
31 |
-
<th scope="col"><?php
|
32 |
-
<th scope="col"><?php
|
33 |
-
<th scope="col"><?php
|
34 |
</tr>
|
35 |
</thead>
|
36 |
<tbody>
|
37 |
<tr>
|
38 |
-
<th scope="row"><?php
|
39 |
<td><?php echo number_format_i18n($visits['today']); ?></td>
|
40 |
<td><?php echo number_format_i18n($views['today']); ?></td>
|
41 |
<td><?php echo number_format_i18n($logins['today']);?></td>
|
42 |
</tr>
|
43 |
<tr>
|
44 |
-
<th scope="row"><?php
|
45 |
<td><?php echo number_format_i18n($visits['week']); ?></td>
|
46 |
<td><?php echo number_format_i18n($views['week']); ?></td>
|
47 |
<td><?php echo number_format_i18n($logins['week']); ?></td>
|
48 |
</tr>
|
49 |
<tr>
|
50 |
-
<th scope="row"><?php
|
51 |
<td><?php echo number_format_i18n($visits['month']); ?></td>
|
52 |
<td><?php echo number_format_i18n($views['month']); ?></td>
|
53 |
<td><?php echo number_format_i18n($logins['month']); ?></td>
|
54 |
</tr>
|
55 |
<tr>
|
56 |
-
<th scope="row"><?php
|
57 |
<td><?php echo number_format_i18n($visits['ytd']); ?></td>
|
58 |
<td><?php echo number_format_i18n($views['ytd']); ?></td>
|
59 |
<td><?php echo number_format_i18n($logins['ytd']);?></td>
|
60 |
</tr>
|
61 |
<tr>
|
62 |
-
<th scope="row"><?php
|
63 |
<td><?php echo number_format_i18n($visits['alltime']); ?></td>
|
64 |
<td><?php echo number_format_i18n($views['alltime']);?></td>
|
65 |
<td><?php echo number_format_i18n($logins['alltime']); ?></td>
|
@@ -68,7 +68,7 @@ function pmpro_report_login_widget() {
|
|
68 |
</table>
|
69 |
<?php if ( function_exists( 'pmpro_report_login_page' ) ) { ?>
|
70 |
<p class="pmpro_report-button">
|
71 |
-
<a class="button button-primary" href="<?php echo admin_url( 'admin.php?page=pmpro-reports&report=login' ); ?>"><?php
|
72 |
</p>
|
73 |
<?php } ?>
|
74 |
</span>
|
@@ -97,118 +97,121 @@ function pmpro_report_login_page()
|
|
97 |
<form id="posts-filter" method="get" action="">
|
98 |
<h1>
|
99 |
<?php _e('Visits, Views, and Logins Report', 'paid-memberships-pro');?>
|
100 |
-
</h1>
|
101 |
-
<ul class="subsubsub">
|
102 |
-
<li>
|
103 |
-
<?php _e( 'Show', 'Dropdown label, e.g. Show All Users', 'paid-memberships-pro' )?> <select name="l" onchange="jQuery('#posts-filter').submit();">
|
104 |
-
<option value="" <?php if(!$l) { ?>selected="selected"<?php } ?>><?php _e('All Users', 'paid-memberships-pro')?></option>
|
105 |
-
<option value="all" <?php if($l == "all") { ?>selected="selected"<?php } ?>><?php _e('All Levels', 'paid-memberships-pro')?></option>
|
106 |
-
<?php
|
107 |
-
$levels = $wpdb->get_results("SELECT id, name FROM $wpdb->pmpro_membership_levels ORDER BY name");
|
108 |
-
$levels = pmpro_sort_levels_by_order( $levels );
|
109 |
-
foreach($levels as $level)
|
110 |
-
{
|
111 |
-
?>
|
112 |
-
<option value="<?php echo $level->id?>" <?php if($l == $level->id) { ?>selected="selected"<?php } ?>><?php echo $level->name?></option>
|
113 |
-
<?php
|
114 |
-
}
|
115 |
-
?>
|
116 |
-
</select>
|
117 |
-
</li>
|
118 |
-
</ul>
|
119 |
<p class="search-box">
|
120 |
-
<label class="hidden" for="post-search-input"><?php
|
121 |
<input type="hidden" name="page" value="pmpro-reports" />
|
122 |
<input type="hidden" name="report" value="login" />
|
123 |
<input id="post-search-input" type="text" value="<?php echo esc_attr($s)?>" name="s"/>
|
124 |
-
<input class="button" type="submit" value="Search Members"/>
|
125 |
</p>
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
140 |
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
$
|
147 |
-
|
148 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
149 |
|
150 |
-
|
151 |
-
|
152 |
-
else
|
153 |
-
{
|
154 |
-
$sqlQuery = "SELECT SQL_CALC_FOUND_ROWS u.ID, u.user_login, u.user_email, UNIX_TIMESTAMP(CONVERT_TZ(u.user_registered, '+00:00', @@global.time_zone)) as joindate, mu.membership_id, mu.initial_payment, mu.billing_amount, mu.cycle_period, mu.cycle_number, mu.billing_limit, mu.trial_amount, mu.trial_limit, UNIX_TIMESTAMP(CONVERT_TZ(mu.startdate, '+00:00', @@global.time_zone)) as startdate, UNIX_TIMESTAMP(CONVERT_TZ(mu.enddate, '+00:00', @@global.time_zone)) as enddate, m.name as membership FROM $wpdb->users u LEFT JOIN $wpdb->pmpro_memberships_users mu ON u.ID = mu.user_id AND mu.status = 'active' LEFT JOIN $wpdb->pmpro_membership_levels m ON mu.membership_id = m.id";
|
155 |
-
$sqlQuery .= " WHERE 1=1 ";
|
156 |
-
|
157 |
-
if($l == "all")
|
158 |
-
$sqlQuery .= " AND mu.membership_id > 0 AND mu.status = 'active' ";
|
159 |
-
elseif($l)
|
160 |
-
$sqlQuery .= " AND mu.membership_id = '" . esc_sql($l) . "' ";
|
161 |
-
$sqlQuery .= "GROUP BY u.ID ORDER BY user_registered DESC LIMIT $start, $limit";
|
162 |
-
}
|
163 |
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
<
|
173 |
-
|
174 |
-
}
|
175 |
-
?>
|
176 |
<table class="widefat">
|
177 |
<thead>
|
178 |
<tr class="thead">
|
179 |
-
<th><?php
|
180 |
-
<th><?php
|
181 |
-
<th><?php
|
182 |
-
<th><?php
|
183 |
-
<th><?php
|
184 |
-
<th><?php
|
185 |
-
<th><?php
|
186 |
-
<th><?php
|
187 |
-
<th><?php
|
188 |
-
<th><?php
|
189 |
-
<th><?php
|
190 |
-
<th><?php
|
191 |
-
<th><?php
|
192 |
-
<th><?php
|
193 |
-
<th><?php
|
194 |
-
<th><?php
|
195 |
-
<th><?php
|
196 |
-
<th><?php
|
197 |
-
<th><?php
|
198 |
-
<th><?php
|
199 |
</tr>
|
200 |
</thead>
|
201 |
-
<tbody id="users" class="list:user user-list">
|
202 |
-
<?php
|
203 |
-
$count = 0;
|
204 |
foreach($theusers as $auser)
|
205 |
{
|
206 |
-
//get meta
|
207 |
-
$theuser = get_userdata($auser->ID);
|
208 |
$visits = pmpro_reports_get_values_for_user("visits", $auser->ID);
|
209 |
$views = pmpro_reports_get_values_for_user("views", $auser->ID);
|
210 |
$logins = pmpro_reports_get_values_for_user("logins", $auser->ID);
|
211 |
-
|
212 |
if(empty($logins))
|
213 |
$logins = array("last"=>"N/A", "week"=>"N/A", "month"=>"N/A", "ytd"=>"N/A", "alltime"=>"N/A");
|
214 |
?>
|
@@ -221,17 +224,17 @@ function pmpro_report_login_page()
|
|
221 |
$userlink = '<a href="user-edit.php?user_id=' . $theuser->ID . '">' . $theuser->user_login . '</a>';
|
222 |
$userlink = apply_filters("pmpro_members_list_user_link", $userlink, $theuser);
|
223 |
echo $userlink;
|
224 |
-
?>
|
225 |
</strong>
|
226 |
-
</td>
|
227 |
<td>
|
228 |
<?php echo $theuser->display_name;?>
|
229 |
</td>
|
230 |
-
<td><?php echo $auser->membership?></td>
|
231 |
<td><?php echo date_i18n( 'm/d/Y', strtotime( get_date_from_gmt( $theuser->user_registered ), current_time( 'timestamp' ) ) ); ?></td>
|
232 |
|
233 |
<td>
|
234 |
-
<?php
|
235 |
if($auser->enddate)
|
236 |
echo date_i18n(get_option('date_format'), $auser->enddate);
|
237 |
else
|
@@ -255,16 +258,16 @@ function pmpro_report_login_page()
|
|
255 |
</tr>
|
256 |
<?php
|
257 |
}
|
258 |
-
|
259 |
if(!$theusers)
|
260 |
{
|
261 |
?>
|
262 |
<tr>
|
263 |
-
<td colspan="9"><p><?php
|
264 |
</tr>
|
265 |
<?php
|
266 |
}
|
267 |
-
?>
|
268 |
</tbody>
|
269 |
</table>
|
270 |
</form>
|
@@ -379,7 +382,7 @@ function pmpro_reports_get_all_values($type) {
|
|
379 |
$allvalues['thismonth'] = $thismonth;
|
380 |
$update = true;
|
381 |
}
|
382 |
-
|
383 |
if(!isset($allvalues['thisyear']) || $thisyear != $allvalues['thisyear'])
|
384 |
{
|
385 |
$allvalues['ytd'] = 0;
|
@@ -448,7 +451,7 @@ function pmpro_report_track_values($type, $user_id = NULL) {
|
|
448 |
$values['week'] = 1;
|
449 |
$values['thisweek'] = $thisweek;
|
450 |
}
|
451 |
-
|
452 |
if($thismonth == $values['thismonth'])
|
453 |
$values['month'] = $values['month'] + 1;
|
454 |
else
|
@@ -456,15 +459,15 @@ function pmpro_report_track_values($type, $user_id = NULL) {
|
|
456 |
$values['month'] = 1;
|
457 |
$values['thismonth'] = $thismonth;
|
458 |
}
|
459 |
-
|
460 |
if($thisyear == $values['thisyear'])
|
461 |
$values['ytd'] = $values['ytd'] + 1;
|
462 |
else
|
463 |
{
|
464 |
$values['ytd'] = 1;
|
465 |
$values['thisyear'] = $thisyear;
|
466 |
-
}
|
467 |
-
|
468 |
//update user data
|
469 |
update_user_meta($user_id, "pmpro_" . $type, $values);
|
470 |
}
|
28 |
<thead>
|
29 |
<tr>
|
30 |
<th scope="col"> </th>
|
31 |
+
<th scope="col"><?php esc_html_e('Visits','paid-memberships-pro'); ?></th>
|
32 |
+
<th scope="col"><?php esc_html_e('Views','paid-memberships-pro'); ?></th>
|
33 |
+
<th scope="col"><?php esc_html_e('Logins','paid-memberships-pro'); ?></th>
|
34 |
</tr>
|
35 |
</thead>
|
36 |
<tbody>
|
37 |
<tr>
|
38 |
+
<th scope="row"><?php esc_html_e('Today','paid-memberships-pro'); ?></th>
|
39 |
<td><?php echo number_format_i18n($visits['today']); ?></td>
|
40 |
<td><?php echo number_format_i18n($views['today']); ?></td>
|
41 |
<td><?php echo number_format_i18n($logins['today']);?></td>
|
42 |
</tr>
|
43 |
<tr>
|
44 |
+
<th scope="row"><?php esc_html_e('This Week','paid-memberships-pro'); ?></th>
|
45 |
<td><?php echo number_format_i18n($visits['week']); ?></td>
|
46 |
<td><?php echo number_format_i18n($views['week']); ?></td>
|
47 |
<td><?php echo number_format_i18n($logins['week']); ?></td>
|
48 |
</tr>
|
49 |
<tr>
|
50 |
+
<th scope="row"><?php esc_html_e('This Month','paid-memberships-pro'); ?></th>
|
51 |
<td><?php echo number_format_i18n($visits['month']); ?></td>
|
52 |
<td><?php echo number_format_i18n($views['month']); ?></td>
|
53 |
<td><?php echo number_format_i18n($logins['month']); ?></td>
|
54 |
</tr>
|
55 |
<tr>
|
56 |
+
<th scope="row"><?php esc_html_e('Year to Date','paid-memberships-pro'); ?></th>
|
57 |
<td><?php echo number_format_i18n($visits['ytd']); ?></td>
|
58 |
<td><?php echo number_format_i18n($views['ytd']); ?></td>
|
59 |
<td><?php echo number_format_i18n($logins['ytd']);?></td>
|
60 |
</tr>
|
61 |
<tr>
|
62 |
+
<th scope="row"><?php esc_html_e('All Time','paid-memberships-pro'); ?></th>
|
63 |
<td><?php echo number_format_i18n($visits['alltime']); ?></td>
|
64 |
<td><?php echo number_format_i18n($views['alltime']);?></td>
|
65 |
<td><?php echo number_format_i18n($logins['alltime']); ?></td>
|
68 |
</table>
|
69 |
<?php if ( function_exists( 'pmpro_report_login_page' ) ) { ?>
|
70 |
<p class="pmpro_report-button">
|
71 |
+
<a class="button button-primary" href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-reports&report=login' ) ); ?>"><?php esc_html_e('Details', 'paid-memberships-pro' );?></a>
|
72 |
</p>
|
73 |
<?php } ?>
|
74 |
</span>
|
97 |
<form id="posts-filter" method="get" action="">
|
98 |
<h1>
|
99 |
<?php _e('Visits, Views, and Logins Report', 'paid-memberships-pro');?>
|
100 |
+
</h1>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
<p class="search-box">
|
102 |
+
<label class="hidden" for="post-search-input"><?php echo esc_html_x( 'Search', 'Search form label', 'paid-memberships-pro')?> <?php if(empty($l)) esc_html_e( 'Users', 'paid-memberships-pro' ); else esc_html_e( 'Members', 'paid-memberships-pro' );?>:</label>
|
103 |
<input type="hidden" name="page" value="pmpro-reports" />
|
104 |
<input type="hidden" name="report" value="login" />
|
105 |
<input id="post-search-input" type="text" value="<?php echo esc_attr($s)?>" name="s"/>
|
106 |
+
<input class="button" type="submit" value="<?php esc_attr_e( 'Search Members', 'paid-memberships-pro' ) ?>"/>
|
107 |
</p>
|
108 |
+
<div class="tablenav top">
|
109 |
+
<label for="l"><?php echo esc_html_x( 'Show', 'Dropdown label, e.g. Show All Users', 'paid-memberships-pro' ); ?></label>
|
110 |
+
<select name="l" onchange="jQuery('#posts-filter').submit();">
|
111 |
+
<option value="" <?php if(!$l) { ?>selected="selected"<?php } ?>><?php esc_html_e('All Users', 'paid-memberships-pro')?></option>
|
112 |
+
<option value="all" <?php if($l == "all") { ?>selected="selected"<?php } ?>><?php esc_html_e('All Levels', 'paid-memberships-pro')?></option>
|
113 |
+
<?php
|
114 |
+
$levels = $wpdb->get_results("SELECT id, name FROM $wpdb->pmpro_membership_levels ORDER BY name");
|
115 |
+
$levels = pmpro_sort_levels_by_order( $levels );
|
116 |
+
foreach($levels as $level)
|
117 |
+
{
|
118 |
+
?>
|
119 |
+
<option value="<?php echo esc_attr( $level->id ) ?>" <?php if($l == $level->id) { ?>selected="selected"<?php } ?>><?php echo esc_html( $level->name ); ?></option>
|
120 |
+
|
121 |
+
<?php
|
122 |
+
}
|
123 |
+
?>
|
124 |
+
</select>
|
125 |
+
<div class="tablenav-pages one-page">
|
126 |
+
<?php
|
127 |
+
//some vars for the search
|
128 |
+
if(isset($_REQUEST['pn']))
|
129 |
+
$pn = intval($_REQUEST['pn']);
|
130 |
+
else
|
131 |
+
$pn = 1;
|
132 |
|
133 |
+
if(isset($_REQUEST['limit']))
|
134 |
+
$limit = intval($_REQUEST['limit']);
|
135 |
+
else
|
136 |
+
$limit = 15;
|
137 |
+
|
138 |
+
$end = $pn * $limit;
|
139 |
+
$start = $end - $limit;
|
140 |
+
|
141 |
+
if($s)
|
142 |
+
{
|
143 |
+
$sqlQuery = "SELECT SQL_CALC_FOUND_ROWS u.ID, u.user_login, u.user_email, UNIX_TIMESTAMP(CONVERT_TZ(u.user_registered, '+00:00', @@global.time_zone)) as joindate, mu.membership_id, mu.initial_payment, mu.billing_amount, mu.cycle_period, mu.cycle_number, mu.billing_limit, mu.trial_amount, mu.trial_limit, UNIX_TIMESTAMP(CONVERT_TZ(mu.startdate, '+00:00', @@global.time_zone)) as startdate, UNIX_TIMESTAMP(CONVERT_TZ(mu.enddate, '+00:00', @@global.time_zone)) as enddate, m.name as membership FROM $wpdb->users u LEFT JOIN $wpdb->usermeta um ON u.ID = um.user_id LEFT JOIN $wpdb->pmpro_memberships_users mu ON u.ID = mu.user_id AND mu.status = 'active' LEFT JOIN $wpdb->pmpro_membership_levels m ON mu.membership_id = m.id WHERE (u.user_login LIKE '%" . esc_sql($s) . "%' OR u.user_email LIKE '%" . esc_sql($s) . "%' OR um.meta_value LIKE '%" . esc_sql($s) . "%') ";
|
144 |
+
|
145 |
+
if($l == "all")
|
146 |
+
$sqlQuery .= " AND mu.status = 'active' AND mu.membership_id > 0 ";
|
147 |
+
elseif($l)
|
148 |
+
$sqlQuery .= " AND mu.membership_id = '" . esc_sql($l) . "' ";
|
149 |
+
|
150 |
+
$sqlQuery .= "GROUP BY u.ID ORDER BY user_registered DESC LIMIT $start, $limit";
|
151 |
+
}
|
152 |
+
else
|
153 |
+
{
|
154 |
+
$sqlQuery = "SELECT SQL_CALC_FOUND_ROWS u.ID, u.user_login, u.user_email, UNIX_TIMESTAMP(CONVERT_TZ(u.user_registered, '+00:00', @@global.time_zone)) as joindate, mu.membership_id, mu.initial_payment, mu.billing_amount, mu.cycle_period, mu.cycle_number, mu.billing_limit, mu.trial_amount, mu.trial_limit, UNIX_TIMESTAMP(CONVERT_TZ(mu.startdate, '+00:00', @@global.time_zone)) as startdate, UNIX_TIMESTAMP(CONVERT_TZ(mu.enddate, '+00:00', @@global.time_zone)) as enddate, m.name as membership FROM $wpdb->users u LEFT JOIN $wpdb->pmpro_memberships_users mu ON u.ID = mu.user_id AND mu.status = 'active' LEFT JOIN $wpdb->pmpro_membership_levels m ON mu.membership_id = m.id";
|
155 |
+
$sqlQuery .= " WHERE 1=1 ";
|
156 |
+
|
157 |
+
if($l == "all")
|
158 |
+
$sqlQuery .= " AND mu.membership_id > 0 AND mu.status = 'active' ";
|
159 |
+
elseif($l)
|
160 |
+
$sqlQuery .= " AND mu.membership_id = '" . esc_sql($l) . "' ";
|
161 |
+
$sqlQuery .= "GROUP BY u.ID ORDER BY user_registered DESC LIMIT $start, $limit";
|
162 |
+
}
|
163 |
+
|
164 |
+
$sqlQuery = apply_filters("pmpro_members_list_sql", $sqlQuery);
|
165 |
|
166 |
+
$theusers = $wpdb->get_results($sqlQuery);
|
167 |
+
$totalrows = $wpdb->get_var("SELECT FOUND_ROWS() as found_rows");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
168 |
|
169 |
+
if($theusers)
|
170 |
+
{
|
171 |
+
?>
|
172 |
+
<span class="displaying-num"><?php echo strval($totalrows)?> <?php if(empty($l)) echo "users"; else echo "members";?> found.</span>
|
173 |
+
<?php
|
174 |
+
}
|
175 |
+
?>
|
176 |
+
</div>
|
177 |
+
<br class="clear" />
|
178 |
+
</div>
|
|
|
|
|
179 |
<table class="widefat">
|
180 |
<thead>
|
181 |
<tr class="thead">
|
182 |
+
<th><?php esc_html_e('ID', 'paid-memberships-pro')?></th>
|
183 |
+
<th><?php esc_html_e('Username', 'paid-memberships-pro')?></th>
|
184 |
+
<th><?php esc_html_e('Name', 'paid-memberships-pro')?></th>
|
185 |
+
<th><?php esc_html_e('Level', 'paid-memberships-pro')?></th>
|
186 |
+
<th><?php esc_html_e('Joined', 'paid-memberships-pro')?></th>
|
187 |
+
<th><?php esc_html_e('Expires', 'paid-memberships-pro')?></th>
|
188 |
+
<th><?php esc_html_e('Last Visit', 'paid-memberships-pro')?></th>
|
189 |
+
<th><?php esc_html_e('Visits This Week', 'paid-memberships-pro')?></th>
|
190 |
+
<th><?php esc_html_e('Visits This Month', 'paid-memberships-pro')?></th>
|
191 |
+
<th><?php esc_html_e('Visits This Year', 'paid-memberships-pro')?></th>
|
192 |
+
<th><?php esc_html_e('Visits All Time', 'paid-memberships-pro')?></th>
|
193 |
+
<th><?php esc_html_e('Views This Week', 'paid-memberships-pro')?></th>
|
194 |
+
<th><?php esc_html_e('Views This Month', 'paid-memberships-pro')?></th>
|
195 |
+
<th><?php esc_html_e('Views This Year', 'paid-memberships-pro')?></th>
|
196 |
+
<th><?php esc_html_e('Views All Time', 'paid-memberships-pro')?></th>
|
197 |
+
<th><?php esc_html_e('Last Login', 'paid-memberships-pro')?></th>
|
198 |
+
<th><?php esc_html_e('Logins This Week', 'paid-memberships-pro')?></th>
|
199 |
+
<th><?php esc_html_e('Logins This Month', 'paid-memberships-pro')?></th>
|
200 |
+
<th><?php esc_html_e('Logins This Year', 'paid-memberships-pro')?></th>
|
201 |
+
<th><?php esc_html_e('Logins All Time', 'paid-memberships-pro')?></th>
|
202 |
</tr>
|
203 |
</thead>
|
204 |
+
<tbody id="users" class="list:user user-list">
|
205 |
+
<?php
|
206 |
+
$count = 0;
|
207 |
foreach($theusers as $auser)
|
208 |
{
|
209 |
+
//get meta
|
210 |
+
$theuser = get_userdata($auser->ID);
|
211 |
$visits = pmpro_reports_get_values_for_user("visits", $auser->ID);
|
212 |
$views = pmpro_reports_get_values_for_user("views", $auser->ID);
|
213 |
$logins = pmpro_reports_get_values_for_user("logins", $auser->ID);
|
214 |
+
|
215 |
if(empty($logins))
|
216 |
$logins = array("last"=>"N/A", "week"=>"N/A", "month"=>"N/A", "ytd"=>"N/A", "alltime"=>"N/A");
|
217 |
?>
|
224 |
$userlink = '<a href="user-edit.php?user_id=' . $theuser->ID . '">' . $theuser->user_login . '</a>';
|
225 |
$userlink = apply_filters("pmpro_members_list_user_link", $userlink, $theuser);
|
226 |
echo $userlink;
|
227 |
+
?>
|
228 |
</strong>
|
229 |
+
</td>
|
230 |
<td>
|
231 |
<?php echo $theuser->display_name;?>
|
232 |
</td>
|
233 |
+
<td><?php echo $auser->membership?></td>
|
234 |
<td><?php echo date_i18n( 'm/d/Y', strtotime( get_date_from_gmt( $theuser->user_registered ), current_time( 'timestamp' ) ) ); ?></td>
|
235 |
|
236 |
<td>
|
237 |
+
<?php
|
238 |
if($auser->enddate)
|
239 |
echo date_i18n(get_option('date_format'), $auser->enddate);
|
240 |
else
|
258 |
</tr>
|
259 |
<?php
|
260 |
}
|
261 |
+
|
262 |
if(!$theusers)
|
263 |
{
|
264 |
?>
|
265 |
<tr>
|
266 |
+
<td colspan="9"><p><?php esc_html_e('No members found.', 'paid-memberships-pro')?> <?php if($l) { ?><a href="?page=pmpro-memberslist&s=<?php echo esc_attr($s)?>"><?php esc_html_e('Search all levels', 'paid-memberships-pro')?></a>.<?php } ?></p></td>
|
267 |
</tr>
|
268 |
<?php
|
269 |
}
|
270 |
+
?>
|
271 |
</tbody>
|
272 |
</table>
|
273 |
</form>
|
382 |
$allvalues['thismonth'] = $thismonth;
|
383 |
$update = true;
|
384 |
}
|
385 |
+
|
386 |
if(!isset($allvalues['thisyear']) || $thisyear != $allvalues['thisyear'])
|
387 |
{
|
388 |
$allvalues['ytd'] = 0;
|
451 |
$values['week'] = 1;
|
452 |
$values['thisweek'] = $thisweek;
|
453 |
}
|
454 |
+
|
455 |
if($thismonth == $values['thismonth'])
|
456 |
$values['month'] = $values['month'] + 1;
|
457 |
else
|
459 |
$values['month'] = 1;
|
460 |
$values['thismonth'] = $thismonth;
|
461 |
}
|
462 |
+
|
463 |
if($thisyear == $values['thisyear'])
|
464 |
$values['ytd'] = $values['ytd'] + 1;
|
465 |
else
|
466 |
{
|
467 |
$values['ytd'] = 1;
|
468 |
$values['thisyear'] = $thisyear;
|
469 |
+
}
|
470 |
+
|
471 |
//update user data
|
472 |
update_user_meta($user_id, "pmpro_" . $type, $values);
|
473 |
}
|
adminpages/reports/memberships.php
CHANGED
@@ -40,8 +40,8 @@ function pmpro_report_memberships_widget() {
|
|
40 |
<thead>
|
41 |
<tr>
|
42 |
<th scope="col"> </th>
|
43 |
-
<th scope="col"><?php
|
44 |
-
<th scope="col"><?php
|
45 |
</tr>
|
46 |
</thead>
|
47 |
<?php
|
@@ -93,7 +93,7 @@ function pmpro_report_memberships_widget() {
|
|
93 |
</table>
|
94 |
<?php if ( function_exists( 'pmpro_report_memberships_page' ) ) { ?>
|
95 |
<p class="pmpro_report-button">
|
96 |
-
<a class="button button-primary" href="<?php echo esc_url(admin_url( 'admin.php?page=pmpro-reports&report=memberships')); ?>"><?php
|
97 |
</p>
|
98 |
<?php } ?>
|
99 |
</span>
|
@@ -326,65 +326,64 @@ function pmpro_report_memberships_page()
|
|
326 |
<h1>
|
327 |
<?php _e('Membership Stats', 'paid-memberships-pro' );?>
|
328 |
</h1>
|
329 |
-
<
|
330 |
-
|
331 |
-
|
332 |
-
<
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
<
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
<?php
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
<?php
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
<
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
?>
|
364 |
-
|
365 |
-
|
366 |
-
}
|
367 |
|
368 |
-
|
369 |
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
<?php } ?>
|
381 |
-
</select>
|
382 |
<?php } ?>
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
|
|
|
|
388 |
|
389 |
<div id="chart_div" style="clear: both; width: 100%; height: 500px;"></div>
|
390 |
|
40 |
<thead>
|
41 |
<tr>
|
42 |
<th scope="col"> </th>
|
43 |
+
<th scope="col"><?php esc_html_e('Signups', 'paid-memberships-pro' ); ?></th>
|
44 |
+
<th scope="col"><?php esc_html_e('All Cancellations', 'paid-memberships-pro' ); ?></th>
|
45 |
</tr>
|
46 |
</thead>
|
47 |
<?php
|
93 |
</table>
|
94 |
<?php if ( function_exists( 'pmpro_report_memberships_page' ) ) { ?>
|
95 |
<p class="pmpro_report-button">
|
96 |
+
<a class="button button-primary" href="<?php echo esc_url(admin_url( 'admin.php?page=pmpro-reports&report=memberships')); ?>"><?php esc_html_e('Details', 'paid-memberships-pro' );?></a>
|
97 |
</p>
|
98 |
<?php } ?>
|
99 |
</span>
|
326 |
<h1>
|
327 |
<?php _e('Membership Stats', 'paid-memberships-pro' );?>
|
328 |
</h1>
|
329 |
+
<div class="tablenav top">
|
330 |
+
<?php _e('Show', 'paid-memberships-pro' )?>
|
331 |
+
<select id="period" name="period">
|
332 |
+
<option value="daily" <?php selected($period, "daily");?>><?php esc_html_e('Daily', 'paid-memberships-pro' );?></option>
|
333 |
+
<option value="monthly" <?php selected($period, "monthly");?>><?php esc_html_e('Monthly', 'paid-memberships-pro' );?></option>
|
334 |
+
<option value="annual" <?php selected($period, "annual");?>><?php esc_html_e('Annual', 'paid-memberships-pro' );?></option>
|
335 |
+
</select>
|
336 |
+
<select id="type" name="type">
|
337 |
+
<option value="signup_v_all" <?php selected($type, "signup_v_all");?>><?php esc_html_e('Signups vs. All Cancellations', 'paid-memberships-pro' );?></option>
|
338 |
+
<option value="signup_v_cancel" <?php selected($type, "signup_v_cancel");?>><?php esc_html_e('Signups vs. Cancellations', 'paid-memberships-pro' );?></option>
|
339 |
+
<option value="signup_v_expiration" <?php selected($type, "signup_v_expiration");?>><?php esc_html_e('Signups vs. Expirations', 'paid-memberships-pro' );?></option>
|
340 |
+
</select>
|
341 |
+
<span id="for"><?php esc_html_e('for', 'paid-memberships-pro' )?></span>
|
342 |
+
<select id="month" name="month">
|
343 |
+
<?php for($i = 1; $i < 13; $i++) { ?>
|
344 |
+
<option value="<?php echo esc_attr($i);?>" <?php selected($month, $i);?>><?php echo esc_html(date_i18n("F", mktime(0, 0, 0, $i, 2)));?></option>
|
345 |
+
<?php } ?>
|
346 |
+
</select>
|
347 |
+
<select id="year" name="year">
|
348 |
+
<?php for($i = $thisyear; $i > 2007; $i--) { ?>
|
349 |
+
<option value="<?php echo esc_attr($i);?>" <?php selected($year, $i);?>><?php echo esc_html($i);?></option>
|
350 |
+
<?php } ?>
|
351 |
+
</select>
|
352 |
+
<span id="for"><?php esc_html_e('for', 'paid-memberships-pro' )?></span>
|
353 |
+
<select name="level">
|
354 |
+
<option value="" <?php if(!$l) { ?>selected="selected"<?php } ?>><?php esc_html_e('All Levels', 'paid-memberships-pro' );?></option>
|
355 |
+
<option value="paid-levels" <?php if(isset($_REQUEST['level']) && $_REQUEST['level'] === "paid-levels"){?> selected="selected" <?php }?>><?php esc_html_e( 'All Paid Levels', 'paid-memberships-pro' ); ?></option>
|
356 |
+
<option value="free-levels" <?php if(isset($_REQUEST['level']) && $_REQUEST['level'] === "free-levels"){?> selected="selected" <?php }?>><?php esc_html_e( 'All Free Levels', 'paid-memberships-pro' ); ?></option>
|
357 |
+
<?php
|
358 |
+
$levels = $wpdb->get_results("SELECT id, name FROM $wpdb->pmpro_membership_levels ORDER BY name");
|
359 |
+
$levels = pmpro_sort_levels_by_order( $levels );
|
360 |
+
foreach($levels as $level)
|
361 |
+
{
|
362 |
+
?>
|
363 |
+
<option value="<?php echo esc_attr($level->id)?>" <?php if($l == $level->id) { ?>selected="selected"<?php } ?>><?php echo esc_html($level->name);?></option>
|
364 |
+
<?php
|
365 |
+
}
|
|
|
366 |
|
367 |
+
?>
|
368 |
|
369 |
+
</select>
|
370 |
+
<?php
|
371 |
+
$sqlQuery = "SELECT SQL_CALC_FOUND_ROWS * FROM $wpdb->pmpro_discount_codes ";
|
372 |
+
$sqlQuery .= "ORDER BY id DESC ";
|
373 |
+
$codes = $wpdb->get_results($sqlQuery, OBJECT);
|
374 |
+
if ( ! empty( $codes ) ) { ?>
|
375 |
+
<select id="discount_code" name="discount_code">
|
376 |
+
<option value="" <?php if ( empty( $discount_code ) ) { ?>selected="selected"<?php } ?>><?php esc_html_e('All Codes', 'paid-memberships-pro' );?></option>
|
377 |
+
<?php foreach ( $codes as $code ) { ?>
|
378 |
+
<option value="<?php echo esc_attr($code->id); ?>" <?php selected( $discount_code, $code->id ); ?>><?php echo esc_html($code->code); ?></option>
|
|
|
|
|
379 |
<?php } ?>
|
380 |
+
</select>
|
381 |
+
<?php } ?>
|
382 |
+
<input type="hidden" name="page" value="pmpro-reports" />
|
383 |
+
<input type="hidden" name="report" value="memberships" />
|
384 |
+
<input type="submit" class="button" value="<?php esc_attr_e('Generate Report', 'paid-memberships-pro' );?>" />
|
385 |
+
<br class="clear" />
|
386 |
+
</div>
|
387 |
|
388 |
<div id="chart_div" style="clear: both; width: 100%; height: 500px;"></div>
|
389 |
|
adminpages/reports/sales.php
CHANGED
@@ -41,8 +41,8 @@ function pmpro_report_sales_widget() {
|
|
41 |
<thead>
|
42 |
<tr>
|
43 |
<th scope="col"> </th>
|
44 |
-
<th scope="col"><?php
|
45 |
-
<th scope="col"><?php
|
46 |
</tr>
|
47 |
</thead>
|
48 |
<?php
|
@@ -95,7 +95,7 @@ function pmpro_report_sales_widget() {
|
|
95 |
</table>
|
96 |
<?php if ( function_exists( 'pmpro_report_sales_page' ) ) { ?>
|
97 |
<p class="pmpro_report-button">
|
98 |
-
<a class="button button-primary" href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-reports&report=sales' ) ); ?>"><?php
|
99 |
</p>
|
100 |
<?php } ?>
|
101 |
</span>
|
@@ -310,15 +310,15 @@ function pmpro_report_sales_page()
|
|
310 |
<div class="tablenav top">
|
311 |
<?php _e('Show', 'paid-memberships-pro' )?>
|
312 |
<select id="period" name="period">
|
313 |
-
<option value="daily" <?php selected($period, "daily");?>><?php
|
314 |
-
<option value="monthly" <?php selected($period, "monthly");?>><?php
|
315 |
-
<option value="annual" <?php selected($period, "annual");?>><?php
|
316 |
</select>
|
317 |
<select name="type">
|
318 |
-
<option value="revenue" <?php selected($type, "revenue");?>><?php
|
319 |
-
<option value="sales" <?php selected($type, "sales");?>><?php
|
320 |
</select>
|
321 |
-
<span id="for"><?php
|
322 |
<select id="month" name="month">
|
323 |
<?php for($i = 1; $i < 13; $i++) { ?>
|
324 |
<option value="<?php echo esc_attr( $i );?>" <?php selected($month, $i);?>><?php echo esc_html(date_i18n("F", mktime(0, 0, 0, $i, 2)));?></option>
|
@@ -329,9 +329,9 @@ function pmpro_report_sales_page()
|
|
329 |
<option value="<?php echo esc_attr( $i );?>" <?php selected($year, $i);?>><?php echo esc_html( $i );?></option>
|
330 |
<?php } ?>
|
331 |
</select>
|
332 |
-
<span id="for"><?php
|
333 |
<select id="level" name="level">
|
334 |
-
<option value="" <?php if(!$l) { ?>selected="selected"<?php } ?>><?php
|
335 |
<?php
|
336 |
$levels = $wpdb->get_results("SELECT id, name FROM $wpdb->pmpro_membership_levels ORDER BY name");
|
337 |
$levels = pmpro_sort_levels_by_order( $levels );
|
@@ -349,7 +349,7 @@ function pmpro_report_sales_page()
|
|
349 |
$codes = $wpdb->get_results($sqlQuery, OBJECT);
|
350 |
if ( ! empty( $codes ) ) { ?>
|
351 |
<select id="discount_code" name="discount_code">
|
352 |
-
<option value="" <?php if ( empty( $discount_code ) ) { ?>selected="selected"<?php } ?>><?php
|
353 |
<?php foreach ( $codes as $code ) { ?>
|
354 |
<option value="<?php echo esc_attr( $code->id ); ?>" <?php selected( $discount_code, $code->id ); ?>><?php echo esc_html( $code->code ); ?></option>
|
355 |
<?php } ?>
|
@@ -358,6 +358,7 @@ function pmpro_report_sales_page()
|
|
358 |
<input type="hidden" name="page" value="pmpro-reports" />
|
359 |
<input type="hidden" name="report" value="sales" />
|
360 |
<input type="submit" class="button action" value="<?php esc_attr_e('Generate Report', 'paid-memberships-pro' );?>" />
|
|
|
361 |
</div>
|
362 |
<div class="pmpro_chart_area">
|
363 |
<div id="chart_div"></div>
|
@@ -539,7 +540,7 @@ function pmpro_report_sales_page()
|
|
539 |
} elseif( ! empty( $year ) && $period === 'monthly' ) {
|
540 |
$date = $year;
|
541 |
} else {
|
542 |
-
$date = __( 'All Time');
|
543 |
}
|
544 |
?>
|
545 |
return <?php echo wp_json_encode( esc_html( sprintf( __( '%s %s for %s', 'paid-memberships-pro' ), ucwords( $period ), ucwords( $type ), ucwords( $date ) ) ) ); ?>;
|
41 |
<thead>
|
42 |
<tr>
|
43 |
<th scope="col"> </th>
|
44 |
+
<th scope="col"><?php esc_html_e('Sales', 'paid-memberships-pro' ); ?></th>
|
45 |
+
<th scope="col"><?php esc_html_e('Revenue', 'paid-memberships-pro' ); ?></th>
|
46 |
</tr>
|
47 |
</thead>
|
48 |
<?php
|
95 |
</table>
|
96 |
<?php if ( function_exists( 'pmpro_report_sales_page' ) ) { ?>
|
97 |
<p class="pmpro_report-button">
|
98 |
+
<a class="button button-primary" href="<?php echo esc_url( admin_url( 'admin.php?page=pmpro-reports&report=sales' ) ); ?>"><?php esc_html_e('Details', 'paid-memberships-pro' );?></a>
|
99 |
</p>
|
100 |
<?php } ?>
|
101 |
</span>
|
310 |
<div class="tablenav top">
|
311 |
<?php _e('Show', 'paid-memberships-pro' )?>
|
312 |
<select id="period" name="period">
|
313 |
+
<option value="daily" <?php selected($period, "daily");?>><?php esc_html_e('Daily', 'paid-memberships-pro' );?></option>
|
314 |
+
<option value="monthly" <?php selected($period, "monthly");?>><?php esc_html_e('Monthly', 'paid-memberships-pro' );?></option>
|
315 |
+
<option value="annual" <?php selected($period, "annual");?>><?php esc_html_e('Annual', 'paid-memberships-pro' );?></option>
|
316 |
</select>
|
317 |
<select name="type">
|
318 |
+
<option value="revenue" <?php selected($type, "revenue");?>><?php esc_html_e('Revenue', 'paid-memberships-pro' );?></option>
|
319 |
+
<option value="sales" <?php selected($type, "sales");?>><?php esc_html_e('Sales', 'paid-memberships-pro' );?></option>
|
320 |
</select>
|
321 |
+
<span id="for"><?php esc_html_e('for', 'paid-memberships-pro' )?></span>
|
322 |
<select id="month" name="month">
|
323 |
<?php for($i = 1; $i < 13; $i++) { ?>
|
324 |
<option value="<?php echo esc_attr( $i );?>" <?php selected($month, $i);?>><?php echo esc_html(date_i18n("F", mktime(0, 0, 0, $i, 2)));?></option>
|
329 |
<option value="<?php echo esc_attr( $i );?>" <?php selected($year, $i);?>><?php echo esc_html( $i );?></option>
|
330 |
<?php } ?>
|
331 |
</select>
|
332 |
+
<span id="for"><?php esc_html_e('for', 'paid-memberships-pro' )?></span>
|
333 |
<select id="level" name="level">
|
334 |
+
<option value="" <?php if(!$l) { ?>selected="selected"<?php } ?>><?php esc_html_e('All Levels', 'paid-memberships-pro' );?></option>
|
335 |
<?php
|
336 |
$levels = $wpdb->get_results("SELECT id, name FROM $wpdb->pmpro_membership_levels ORDER BY name");
|
337 |
$levels = pmpro_sort_levels_by_order( $levels );
|
349 |
$codes = $wpdb->get_results($sqlQuery, OBJECT);
|
350 |
if ( ! empty( $codes ) ) { ?>
|
351 |
<select id="discount_code" name="discount_code">
|
352 |
+
<option value="" <?php if ( empty( $discount_code ) ) { ?>selected="selected"<?php } ?>><?php esc_html_e('All Codes', 'paid-memberships-pro' );?></option>
|
353 |
<?php foreach ( $codes as $code ) { ?>
|
354 |
<option value="<?php echo esc_attr( $code->id ); ?>" <?php selected( $discount_code, $code->id ); ?>><?php echo esc_html( $code->code ); ?></option>
|
355 |
<?php } ?>
|
358 |
<input type="hidden" name="page" value="pmpro-reports" />
|
359 |
<input type="hidden" name="report" value="sales" />
|
360 |
<input type="submit" class="button action" value="<?php esc_attr_e('Generate Report', 'paid-memberships-pro' );?>" />
|
361 |
+
<br class="clear" />
|
362 |
</div>
|
363 |
<div class="pmpro_chart_area">
|
364 |
<div id="chart_div"></div>
|
540 |
} elseif( ! empty( $year ) && $period === 'monthly' ) {
|
541 |
$date = $year;
|
542 |
} else {
|
543 |
+
$date = __( 'All Time', 'paid-memberships-pro' );
|
544 |
}
|
545 |
?>
|
546 |
return <?php echo wp_json_encode( esc_html( sprintf( __( '%s %s for %s', 'paid-memberships-pro' ), ucwords( $period ), ucwords( $type ), ucwords( $date ) ) ) ); ?>;
|
adminpages/templates/orders-email.php
CHANGED
@@ -1,75 +1,78 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Template for Email Invoices
|
4 |
-
*
|
5 |
-
* @since 1.8.6
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
<td
|
15 |
-
|
16 |
-
|
17 |
-
<td>
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
$order->billing->
|
31 |
-
$order->billing->
|
32 |
-
|
33 |
-
$order->billing->
|
34 |
-
$order->billing->
|
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 |
-
|
61 |
-
|
62 |
-
|
63 |
-
<
|
64 |
-
<?php esc_html_e( $pmpro_price_part['
|
65 |
-
</
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
</
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Template for Email Invoices
|
4 |
+
*
|
5 |
+
* @since 1.8.6
|
6 |
+
*
|
7 |
+
* @var object $level
|
8 |
+
* @var MemberOrder $order
|
9 |
+
*/
|
10 |
+
?>
|
11 |
+
<table style="width:600px;margin-left:auto;margin-right:auto;">
|
12 |
+
<thead>
|
13 |
+
<tr>
|
14 |
+
<td rowspan="2" style="width:80%;">
|
15 |
+
<h2><?php bloginfo( 'sitename' ); ?></h2>
|
16 |
+
</td>
|
17 |
+
<td><?php echo esc_html( __('Invoice #: ', 'paid-memberships-pro' ) . ' ' . $order->code ); ?></td>
|
18 |
+
</tr>
|
19 |
+
<tr>
|
20 |
+
<td>
|
21 |
+
<?php echo esc_html( __( 'Date:', 'paid-memberships-pro' ) . ' ' . date_i18n( get_option( 'date_format' ), $order->getTimestamp() ) ); ?>
|
22 |
+
</td>
|
23 |
+
</tr>
|
24 |
+
<?php if(!empty($order->billing->name)): ?>
|
25 |
+
<tr>
|
26 |
+
<td style="padding-bottom:10px;">
|
27 |
+
<strong><?php esc_html_e( 'Bill to:', 'paid-memberships-pro' ); ?></strong><br>
|
28 |
+
<?php
|
29 |
+
echo pmpro_formatAddress(
|
30 |
+
$order->billing->name,
|
31 |
+
$order->billing->street,
|
32 |
+
"",
|
33 |
+
$order->billing->city,
|
34 |
+
$order->billing->state,
|
35 |
+
$order->billing->zip,
|
36 |
+
$order->billing->country,
|
37 |
+
$order->billing->phone
|
38 |
+
);
|
39 |
+
?>
|
40 |
+
<?php endif; ?>
|
41 |
+
</td>
|
42 |
+
</tr>
|
43 |
+
</thead>
|
44 |
+
<tbody>
|
45 |
+
<tr>
|
46 |
+
<td colspan="2">
|
47 |
+
<table style="width:100%;border-width:0px;border-collapse:collapse;">
|
48 |
+
<tr style="border-width:1px;border-style:solid;border-collapse:collapse;">
|
49 |
+
<th style="text-align:center;border-width:1px;border-style:solid;border-collapse:collapse;padding:4px;"><?php esc_html_e('ID', 'paid-memberships-pro' ); ?></th>
|
50 |
+
<th style="border-width:1px;border-style:solid;border-collapse:collapse;padding:4px;"><?php esc_html_e('Item', 'paid-memberships-pro' ); ?></th>
|
51 |
+
<th style="border-width:1px;border-style:solid;border-collapse:collapse;padding:4px;"><?php esc_html_e('Price', 'paid-memberships-pro' ); ?></th>
|
52 |
+
</tr>
|
53 |
+
<tr style="border-width:1px;border-style:solid;border-collapse:collapse;">
|
54 |
+
<td style="text-align:center;border-width:1px;border-style:solid;border-collapse:collapse;padding:4px;"><?php echo $level->id; ?></td>
|
55 |
+
<td style="border-width:1px;border-style:solid;border-collapse:collapse;padding:4px;"><?php echo $level->name; ?></td>
|
56 |
+
<td style="border-width:1px;border-style:solid;border-collapse:collapse;text-align:right;padding:4px;"><?php echo pmpro_escape_price( pmpro_formatPrice( $order->subtotal ) ); ?></td>
|
57 |
+
</tr>
|
58 |
+
<?php
|
59 |
+
if ( (float)$order->total > 0 ) {
|
60 |
+
$pmpro_price_parts = pmpro_get_price_parts( $order, 'array' );
|
61 |
+
foreach ( $pmpro_price_parts as $pmpro_price_part ) { ?>
|
62 |
+
<tr style="border-width:1px;border-style:solid;border-collapse:collapse;padding:4px;">
|
63 |
+
<th colspan="2" style="text-align:right;border-width:1px;border-style:solid;border-collapse:collapse;padding:4px;">
|
64 |
+
<?php esc_html_e( $pmpro_price_part['label'] ); ?>
|
65 |
+
</th>
|
66 |
+
<td style="text-align:right;border-width:1px;border-style:solid;border-collapse:collapse;padding:4px;">
|
67 |
+
<?php esc_html_e( $pmpro_price_part['value'] ); ?>
|
68 |
+
</td>
|
69 |
+
</tr>
|
70 |
+
<?php
|
71 |
+
}
|
72 |
+
}
|
73 |
+
?>
|
74 |
+
</table>
|
75 |
+
</td>
|
76 |
+
</tr>
|
77 |
+
</tbody>
|
78 |
+
</table>
|
adminpages/templates/orders-print.php
CHANGED
@@ -1,103 +1,106 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Template for Print Invoices
|
4 |
-
*
|
5 |
-
* @since 1.8.6
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
.
|
17 |
-
display:
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
}
|
23 |
-
.
|
24 |
-
text-align:
|
25 |
-
}
|
26 |
-
.
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
}
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
<div
|
48 |
-
<
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
<tr>
|
53 |
-
<td>
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
$order->billing->
|
67 |
-
$order->billing->
|
68 |
-
|
69 |
-
$order->billing->
|
70 |
-
$order->billing->
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
<
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
<
|
93 |
-
<?php esc_html_e( $pmpro_price_part['
|
94 |
-
</
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
</
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Template for Print Invoices
|
4 |
+
*
|
5 |
+
* @since 1.8.6
|
6 |
+
*
|
7 |
+
* @var object $level
|
8 |
+
* @var MemberOrder $order
|
9 |
+
*/
|
10 |
+
?>
|
11 |
+
<!doctype html>
|
12 |
+
<html lang="en">
|
13 |
+
<head>
|
14 |
+
<meta charset="UTF-8">
|
15 |
+
<style>
|
16 |
+
.main, .header {
|
17 |
+
display: block;
|
18 |
+
}
|
19 |
+
.right {
|
20 |
+
display: inline-block;
|
21 |
+
float: right;
|
22 |
+
}
|
23 |
+
.alignright {
|
24 |
+
text-align: right;
|
25 |
+
}
|
26 |
+
.aligncenter {
|
27 |
+
text-align: center;
|
28 |
+
}
|
29 |
+
.invoice, .invoice tr, .invoice th, .invoice td {
|
30 |
+
border: 1px solid;
|
31 |
+
border-collapse: collapse;
|
32 |
+
padding: 4px;
|
33 |
+
}
|
34 |
+
.invoice {
|
35 |
+
width: 100%;
|
36 |
+
}
|
37 |
+
@media screen {
|
38 |
+
body {
|
39 |
+
max-width: 50%;
|
40 |
+
margin: 0 auto;
|
41 |
+
}
|
42 |
+
}
|
43 |
+
</style>
|
44 |
+
</head>
|
45 |
+
<body>
|
46 |
+
<header class="header">
|
47 |
+
<div>
|
48 |
+
<h2><?php bloginfo( 'sitename' ); ?></h2>
|
49 |
+
</div>
|
50 |
+
<div class="right">
|
51 |
+
<table>
|
52 |
+
<tr>
|
53 |
+
<td><?php echo esc_html( __('Invoice #: ', 'paid-memberships-pro' ) . ' ' . $order->code ); ?></td>
|
54 |
+
</tr>
|
55 |
+
<tr>
|
56 |
+
<td>
|
57 |
+
<?php echo __( 'Date:', 'paid-memberships-pro' ) . ' ' . date_i18n( get_option( 'date_format' ), $order->getTimestamp() ); ?>
|
58 |
+
</td>
|
59 |
+
</tr>
|
60 |
+
</table>
|
61 |
+
</div>
|
62 |
+
</header>
|
63 |
+
<main class="main">
|
64 |
+
<p>
|
65 |
+
<?php echo pmpro_formatAddress(
|
66 |
+
$order->billing->name,
|
67 |
+
$order->billing->street,
|
68 |
+
'',
|
69 |
+
$order->billing->city,
|
70 |
+
$order->billing->state,
|
71 |
+
$order->billing->zip,
|
72 |
+
$order->billing->country,
|
73 |
+
$order->billing->phone
|
74 |
+
); ?>
|
75 |
+
</p>
|
76 |
+
<table class="invoice" style="border-width:0px;border-collapse:collapse;">
|
77 |
+
<tr>
|
78 |
+
<th><?php esc_html_e('ID', 'paid-memberships-pro' ); ?></th>
|
79 |
+
<th><?php esc_html_e('Item', 'paid-memberships-pro' ); ?></th>
|
80 |
+
<th><?php esc_html_e('Price', 'paid-memberships-pro' ); ?></th>
|
81 |
+
</tr>
|
82 |
+
<tr>
|
83 |
+
<td class="aligncenter"><?php echo $level->id; ?></td>
|
84 |
+
<td><?php echo $level->name; ?></td>
|
85 |
+
<td class="alignright"><?php echo pmpro_escape_price( pmpro_formatPrice( $order->subtotal ) ); ?></td>
|
86 |
+
</tr>
|
87 |
+
<?php
|
88 |
+
if ( (float)$order->total > 0 ) {
|
89 |
+
$pmpro_price_parts = pmpro_get_price_parts( $order, 'array' );
|
90 |
+
foreach ( $pmpro_price_parts as $pmpro_price_part ) { ?>
|
91 |
+
<tr style="border-width:1px;border-style:solid;border-collapse:collapse;">
|
92 |
+
<th colspan="2" style="text-align:right;border-width:1px;border-style:solid;border-collapse:collapse;">
|
93 |
+
<?php esc_html_e( $pmpro_price_part['label'] ); ?>
|
94 |
+
</th>
|
95 |
+
<td style="text-align:right;border-width:1px;border-style:solid;border-collapse:collapse;">
|
96 |
+
<?php esc_html_e( $pmpro_price_part['value'] ); ?>
|
97 |
+
</td>
|
98 |
+
</tr>
|
99 |
+
<?php
|
100 |
+
}
|
101 |
+
}
|
102 |
+
?>
|
103 |
+
</table>
|
104 |
+
</main>
|
105 |
+
</body>
|
106 |
+
</html>
|
adminpages/updates.php
CHANGED
@@ -11,14 +11,14 @@
|
|
11 |
require_once(dirname(__FILE__) . "/admin_header.php");
|
12 |
?>
|
13 |
|
14 |
-
<h2><?php
|
15 |
|
16 |
<?php
|
17 |
$updates = get_option('pmpro_updates', array());
|
18 |
if(!empty($updates)) {
|
19 |
//let's process the first one
|
20 |
?>
|
21 |
-
<p id="pmpro_updates_intro"><?php
|
22 |
<p id="pmpro_updates_progress">[...]</p>
|
23 |
<textarea id="pmpro_updates_status" rows="10" cols="60"><?php echo esc_textarea( __( 'Loading...', 'paid-memberships-pro' ) ); ?></textarea>
|
24 |
|
11 |
require_once(dirname(__FILE__) . "/admin_header.php");
|
12 |
?>
|
13 |
|
14 |
+
<h2><?php esc_html_e('Updating Paid Memberships Pro', 'paid-memberships-pro' );?></h2>
|
15 |
|
16 |
<?php
|
17 |
$updates = get_option('pmpro_updates', array());
|
18 |
if(!empty($updates)) {
|
19 |
//let's process the first one
|
20 |
?>
|
21 |
+
<p id="pmpro_updates_intro"><?php esc_html_e('Updates are processing. This may take a few minutes to complete.', 'paid-memberships-pro' );?></p>
|
22 |
<p id="pmpro_updates_progress">[...]</p>
|
23 |
<textarea id="pmpro_updates_status" rows="10" cols="60"><?php echo esc_textarea( __( 'Loading...', 'paid-memberships-pro' ) ); ?></textarea>
|
24 |
|
blocks/account-invoices-section/block.js
CHANGED
@@ -19,15 +19,24 @@
|
|
19 |
export default registerBlockType(
|
20 |
'pmpro/account-invoices-section',
|
21 |
{
|
22 |
-
title: __( '
|
23 |
-
description: __( '
|
24 |
-
category: 'pmpro',
|
25 |
icon: {
|
26 |
-
background: '#
|
27 |
-
foreground: '#
|
28 |
src: 'archive',
|
29 |
},
|
30 |
-
keywords: [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
supports: {
|
32 |
},
|
33 |
attributes: {
|
19 |
export default registerBlockType(
|
20 |
'pmpro/account-invoices-section',
|
21 |
{
|
22 |
+
title: __( 'PMPro Page: Account Invoices', 'paid-memberships-pro' ),
|
23 |
+
description: __( 'Dynamic page section that displays a list of the last 5 membership invoices for the active member.', 'paid-memberships-pro' ),
|
24 |
+
category: 'pmpro-pages',
|
25 |
icon: {
|
26 |
+
background: '#FFFFFF',
|
27 |
+
foreground: '#1A688B',
|
28 |
src: 'archive',
|
29 |
},
|
30 |
+
keywords: [
|
31 |
+
__( 'account', 'paid-memberships-pro' ),
|
32 |
+
__( 'member', 'paid-memberships-pro' ),
|
33 |
+
__( 'order', 'paid-memberships-pro' ),
|
34 |
+
__( 'paid memberships pro', 'paid-memberships-pro' ),
|
35 |
+
__( 'pmpro', 'paid-memberships-pro' ),
|
36 |
+
__( 'purchases', 'paid-memberships-pro' ),
|
37 |
+
__( 'receipt', 'paid-memberships-pro' ),
|
38 |
+
__( 'user', 'paid-memberships-pro' ),
|
39 |
+
],
|
40 |
supports: {
|
41 |
},
|
42 |
attributes: {
|
blocks/account-links-section/block.js
CHANGED
@@ -19,15 +19,24 @@
|
|
19 |
export default registerBlockType(
|
20 |
'pmpro/account-links-section',
|
21 |
{
|
22 |
-
title: __( '
|
23 |
-
description: __( '
|
24 |
-
category: 'pmpro',
|
25 |
icon: {
|
26 |
-
background: '#
|
27 |
-
foreground: '#
|
28 |
src: 'external',
|
29 |
},
|
30 |
-
keywords: [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
supports: {
|
32 |
},
|
33 |
attributes: {
|
19 |
export default registerBlockType(
|
20 |
'pmpro/account-links-section',
|
21 |
{
|
22 |
+
title: __( 'PMPro Page: Account Links', 'paid-memberships-pro' ),
|
23 |
+
description: __( 'Dynamic page section that displays custom links available for the active member only. This block is only visible if other Add Ons or custom code have added links.', 'paid-memberships-pro' ),
|
24 |
+
category: 'pmpro-pages',
|
25 |
icon: {
|
26 |
+
background: '#FFFFFF',
|
27 |
+
foreground: '#1A688B',
|
28 |
src: 'external',
|
29 |
},
|
30 |
+
keywords: [
|
31 |
+
__( 'access', 'paid-memberships-pro' ),
|
32 |
+
__( 'account', 'paid-memberships-pro' ),
|
33 |
+
__( 'link', 'paid-memberships-pro' ),
|
34 |
+
__( 'member', 'paid-memberships-pro' ),
|
35 |
+
__( 'paid memberships pro', 'paid-memberships-pro' ),
|
36 |
+
__( 'pmpro', 'paid-memberships-pro' ),
|
37 |
+
__( 'quick link', 'paid-memberships-pro' ),
|
38 |
+
__( 'user', 'paid-memberships-pro' ),
|
39 |
+
],
|
40 |
supports: {
|
41 |
},
|
42 |
attributes: {
|
blocks/account-membership-section/block.js
CHANGED
@@ -19,15 +19,22 @@
|
|
19 |
export default registerBlockType(
|
20 |
'pmpro/account-membership-section',
|
21 |
{
|
22 |
-
title: __( '
|
23 |
-
description: __( '
|
24 |
-
category: 'pmpro',
|
25 |
icon: {
|
26 |
-
background: '#
|
27 |
-
foreground: '#
|
28 |
src: 'groups',
|
29 |
},
|
30 |
-
keywords: [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
supports: {
|
32 |
},
|
33 |
attributes: {
|
19 |
export default registerBlockType(
|
20 |
'pmpro/account-membership-section',
|
21 |
{
|
22 |
+
title: __( 'PMPro Page: Account Memberships', 'paid-memberships-pro' ),
|
23 |
+
description: __( 'Dynamic page section to display the member\'s active membership information with links to view all membership options, update billing information, and change or cancel membership.', 'paid-memberships-pro' ),
|
24 |
+
category: 'pmpro-pages',
|
25 |
icon: {
|
26 |
+
background: '#FFFFFF',
|
27 |
+
foreground: '#1A688B',
|
28 |
src: 'groups',
|
29 |
},
|
30 |
+
keywords: [
|
31 |
+
__( 'active', 'paid-memberships-pro' ),
|
32 |
+
__( 'member', 'paid-memberships-pro' ),
|
33 |
+
__( 'paid memberships pro', 'paid-memberships-pro' ),
|
34 |
+
__( 'pmpro', 'paid-memberships-pro' ),
|
35 |
+
__( 'purchases', 'paid-memberships-pro' ),
|
36 |
+
__( 'user', 'paid-memberships-pro' ),
|
37 |
+
],
|
38 |
supports: {
|
39 |
},
|
40 |
attributes: {
|
blocks/account-page/block.js
CHANGED
@@ -21,15 +21,29 @@
|
|
21 |
export default registerBlockType(
|
22 |
'pmpro/account-page',
|
23 |
{
|
24 |
-
title: __( '
|
25 |
-
description: __( '
|
26 |
-
category: 'pmpro',
|
27 |
icon: {
|
28 |
-
background: '#
|
29 |
-
foreground: '#
|
30 |
src: 'admin-users',
|
31 |
},
|
32 |
-
keywords: [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
supports: {
|
34 |
},
|
35 |
attributes: {
|
21 |
export default registerBlockType(
|
22 |
'pmpro/account-page',
|
23 |
{
|
24 |
+
title: __( 'PMPro Page: Account (Full)', 'paid-memberships-pro' ),
|
25 |
+
description: __( 'Dynamic page section to display the selected sections of the Membership Account page including Memberships, Profile, Invoices, and Member Links. These sections can also be added via separate blocks.', 'paid-memberships-pro' ),
|
26 |
+
category: 'pmpro-pages',
|
27 |
icon: {
|
28 |
+
background: '#FFFFFF',
|
29 |
+
foreground: '#1A688B',
|
30 |
src: 'admin-users',
|
31 |
},
|
32 |
+
keywords: [
|
33 |
+
__( 'account', 'paid-memberships-pro' ),
|
34 |
+
__( 'billing', 'paid-memberships-pro' ),
|
35 |
+
__( 'invoice', 'paid-memberships-pro' ),
|
36 |
+
__( 'links', 'paid-memberships-pro' ),
|
37 |
+
__( 'member', 'paid-memberships-pro' ),
|
38 |
+
__( 'order', 'paid-memberships-pro' ),
|
39 |
+
__( 'paid memberships pro', 'paid-memberships-pro' ),
|
40 |
+
__( 'pmpro', 'paid-memberships-pro' ),
|
41 |
+
__( 'profile', 'paid-memberships-pro' ),
|
42 |
+
__( 'purchases', 'paid-memberships-pro' ),
|
43 |
+
__( 'quick link', 'paid-memberships-pro' ),
|
44 |
+
__( 'receipt', 'paid-memberships-pro' ),
|
45 |
+
__( 'user', 'paid-memberships-pro' ),
|
46 |
+
],
|
47 |
supports: {
|
48 |
},
|
49 |
attributes: {
|
blocks/account-profile-section/block.js
CHANGED
@@ -20,15 +20,21 @@
|
|
20 |
export default registerBlockType(
|
21 |
'pmpro/account-profile-section',
|
22 |
{
|
23 |
-
title: __( '
|
24 |
-
description: __( '
|
25 |
-
category: 'pmpro',
|
26 |
icon: {
|
27 |
-
background: '#
|
28 |
-
foreground: '#
|
29 |
src: 'admin-users',
|
30 |
},
|
31 |
-
keywords: [
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
supports: {
|
33 |
},
|
34 |
attributes: {
|
20 |
export default registerBlockType(
|
21 |
'pmpro/account-profile-section',
|
22 |
{
|
23 |
+
title: __( 'PMPro Page: Account Profile View', 'paid-memberships-pro' ),
|
24 |
+
description: __( 'Dynamic page section that displays the member\'s profile as read-only information with a link to edit fields or their change password.', 'paid-memberships-pro' ),
|
25 |
+
category: 'pmpro-pages',
|
26 |
icon: {
|
27 |
+
background: '#FFFFFF',
|
28 |
+
foreground: '#1A688B',
|
29 |
src: 'admin-users',
|
30 |
},
|
31 |
+
keywords: [
|
32 |
+
__( 'fields', 'paid-memberships-pro' ),
|
33 |
+
__( 'member', 'paid-memberships-pro' ),
|
34 |
+
__( 'paid memberships pro', 'paid-memberships-pro' ),
|
35 |
+
__( 'pmpro', 'paid-memberships-pro' ),
|
36 |
+
__( 'user', 'paid-memberships-pro' ),
|
37 |
+
],
|
38 |
supports: {
|
39 |
},
|
40 |
attributes: {
|
blocks/billing-page/block.js
CHANGED
@@ -19,15 +19,21 @@
|
|
19 |
export default registerBlockType(
|
20 |
'pmpro/billing-page',
|
21 |
{
|
22 |
-
title: __( '
|
23 |
-
description: __( '
|
24 |
-
category: 'pmpro',
|
25 |
icon: {
|
26 |
-
background: '#
|
27 |
-
foreground: '#
|
28 |
src: 'list-view',
|
29 |
},
|
30 |
-
keywords: [
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
supports: {
|
32 |
},
|
33 |
attributes: {
|
19 |
export default registerBlockType(
|
20 |
'pmpro/billing-page',
|
21 |
{
|
22 |
+
title: __( 'PMPro Page: Billing', 'paid-memberships-pro' ),
|
23 |
+
description: __( 'Dynamic page section to display the member\'s billing information. Members can update their subscription payment method from this form.', 'paid-memberships-pro' ),
|
24 |
+
category: 'pmpro-pages',
|
25 |
icon: {
|
26 |
+
background: '#FFFFFF',
|
27 |
+
foreground: '#1A688B',
|
28 |
src: 'list-view',
|
29 |
},
|
30 |
+
keywords: [
|
31 |
+
__( 'credit card', 'paid-memberships-pro' ),
|
32 |
+
__( 'member', 'paid-memberships-pro' ),
|
33 |
+
__( 'paid memberships pro', 'paid-memberships-pro' ),
|
34 |
+
__( 'payment method', 'paid-memberships-pro' ),
|
35 |
+
__( 'pmpro', 'paid-memberships-pro' ),
|
36 |
+
],
|
37 |
supports: {
|
38 |
},
|
39 |
attributes: {
|
blocks/blocks.js
CHANGED
@@ -108,4 +108,5 @@ import './login/block.js';
|
|
108 |
L5.33,4.91L9.46,3.96z"/>
|
109 |
</svg>;
|
110 |
wp.blocks.updateCategory( 'pmpro', { icon: PMProSVG } );
|
|
|
111 |
} )();
|
108 |
L5.33,4.91L9.46,3.96z"/>
|
109 |
</svg>;
|
110 |
wp.blocks.updateCategory( 'pmpro', { icon: PMProSVG } );
|
111 |
+
wp.blocks.updateCategory( 'pmpro-pages', { icon: PMProSVG } );
|
112 |
} )();
|
blocks/blocks.php
CHANGED
@@ -40,6 +40,10 @@ function pmpro_place_blocks_in_panel( $categories, $post_or_context ) {
|
|
40 |
'slug' => 'pmpro',
|
41 |
'title' => __( 'Paid Memberships Pro', 'paid-memberships-pro' ),
|
42 |
),
|
|
|
|
|
|
|
|
|
43 |
)
|
44 |
);
|
45 |
}
|
40 |
'slug' => 'pmpro',
|
41 |
'title' => __( 'Paid Memberships Pro', 'paid-memberships-pro' ),
|
42 |
),
|
43 |
+
array(
|
44 |
+
'slug' => 'pmpro-pages',
|
45 |
+
'title' => __( 'Paid Memberships Pro Pages', 'paid-memberships-pro' ),
|
46 |
+
),
|
47 |
)
|
48 |
);
|
49 |
}
|
blocks/cancel-page/block.js
CHANGED
@@ -19,15 +19,21 @@
|
|
19 |
export default registerBlockType(
|
20 |
'pmpro/cancel-page',
|
21 |
{
|
22 |
-
title: __( '
|
23 |
-
description: __( '
|
24 |
-
category: 'pmpro',
|
25 |
icon: {
|
26 |
-
background: '#
|
27 |
-
foreground: '#
|
28 |
src: 'no',
|
29 |
},
|
30 |
-
keywords: [
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
supports: {
|
32 |
},
|
33 |
attributes: {
|
19 |
export default registerBlockType(
|
20 |
'pmpro/cancel-page',
|
21 |
{
|
22 |
+
title: __( 'PMPro Page: Cancel', 'paid-memberships-pro' ),
|
23 |
+
description: __( 'Dynamic page section where members can cancel their membership and active subscription if applicable.', 'paid-memberships-pro' ),
|
24 |
+
category: 'pmpro-pages',
|
25 |
icon: {
|
26 |
+
background: '#FFFFFF',
|
27 |
+
foreground: '#1A688B',
|
28 |
src: 'no',
|
29 |
},
|
30 |
+
keywords: [
|
31 |
+
__( 'member', 'paid-memberships-pro' ),
|
32 |
+
__( 'paid memberships pro', 'paid-memberships-pro' ),
|
33 |
+
__( 'payment method', 'paid-memberships-pro' ),
|
34 |
+
__( 'pmpro', 'paid-memberships-pro' ),
|
35 |
+
__( 'terminate', 'paid-memberships-pro' ),
|
36 |
+
],
|
37 |
supports: {
|
38 |
},
|
39 |
attributes: {
|
blocks/checkout-button/block.js
CHANGED
@@ -29,17 +29,20 @@ export default registerBlockType(
|
|
29 |
'pmpro/checkout-button',
|
30 |
{
|
31 |
title: __( 'Membership Checkout Button', 'paid-memberships-pro' ),
|
32 |
-
description: __( '
|
33 |
category: 'pmpro',
|
34 |
icon: {
|
35 |
-
background: '#
|
36 |
-
foreground: '#
|
37 |
src: 'migrate',
|
38 |
},
|
39 |
-
keywords: [
|
40 |
-
__( 'pmpro', 'paid-memberships-pro' ),
|
41 |
__( 'buy', 'paid-memberships-pro' ),
|
42 |
__( 'level', 'paid-memberships-pro' ),
|
|
|
|
|
|
|
|
|
43 |
],
|
44 |
supports: {
|
45 |
},
|
29 |
'pmpro/checkout-button',
|
30 |
{
|
31 |
title: __( 'Membership Checkout Button', 'paid-memberships-pro' ),
|
32 |
+
description: __( 'Inserts a button that links directly to membership checkout for the selected level.', 'paid-memberships-pro' ),
|
33 |
category: 'pmpro',
|
34 |
icon: {
|
35 |
+
background: '#FFFFFF',
|
36 |
+
foreground: '#658B24',
|
37 |
src: 'migrate',
|
38 |
},
|
39 |
+
keywords: [
|
|
|
40 |
__( 'buy', 'paid-memberships-pro' ),
|
41 |
__( 'level', 'paid-memberships-pro' ),
|
42 |
+
__( 'member', 'paid-memberships-pro' ),
|
43 |
+
__( 'paid memberships pro', 'paid-memberships-pro' ),
|
44 |
+
__( 'pmpro', 'paid-memberships-pro' ),
|
45 |
+
__( 'purchase', 'paid-memberships-pro' ),
|
46 |
],
|
47 |
supports: {
|
48 |
},
|
blocks/checkout-page/block.js
CHANGED
@@ -26,14 +26,21 @@ const {
|
|
26 |
'pmpro/checkout-page',
|
27 |
{
|
28 |
title: __( 'Membership Checkout Form', 'paid-memberships-pro' ),
|
29 |
-
description: __( '
|
30 |
category: 'pmpro',
|
31 |
icon: {
|
32 |
-
background: '#
|
33 |
-
foreground: '#
|
34 |
src: 'list-view',
|
35 |
},
|
36 |
-
keywords: [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
supports: {
|
38 |
},
|
39 |
attributes: {
|
26 |
'pmpro/checkout-page',
|
27 |
{
|
28 |
title: __( 'Membership Checkout Form', 'paid-memberships-pro' ),
|
29 |
+
description: __( 'Dynamic form that allows users to complete free registration or paid checkout for the selected membership level.', 'paid-memberships-pro' ),
|
30 |
category: 'pmpro',
|
31 |
icon: {
|
32 |
+
background: '#FFFFFF',
|
33 |
+
foreground: '#658B24',
|
34 |
src: 'list-view',
|
35 |
},
|
36 |
+
keywords: [
|
37 |
+
__( 'member', 'paid-memberships-pro' ),
|
38 |
+
__( 'paid memberships pro', 'paid-memberships-pro' ),
|
39 |
+
__( 'pmpro', 'paid-memberships-pro' ),
|
40 |
+
__( 'buy', 'paid-memberships-pro' ),
|
41 |
+
__( 'purchase', 'paid-memberships-pro' ),
|
42 |
+
__( 'sell', 'paid-memberships-pro' ),
|
43 |
+
],
|
44 |
supports: {
|
45 |
},
|
46 |
attributes: {
|
blocks/confirmation-page/block.js
CHANGED
@@ -19,15 +19,23 @@
|
|
19 |
export default registerBlockType(
|
20 |
'pmpro/confirmation-page',
|
21 |
{
|
22 |
-
title: __( '
|
23 |
-
description: __( '
|
24 |
-
category: 'pmpro',
|
25 |
icon: {
|
26 |
-
background: '#
|
27 |
-
foreground: '#
|
28 |
src: 'yes',
|
29 |
},
|
30 |
-
keywords: [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
supports: {
|
32 |
},
|
33 |
attributes: {
|
19 |
export default registerBlockType(
|
20 |
'pmpro/confirmation-page',
|
21 |
{
|
22 |
+
title: __( 'PMPro Page: Confirmation', 'paid-memberships-pro' ),
|
23 |
+
description: __( 'Dynamic page section that displays a confirmation message and purchase information for the active member immediately after membership registration and checkout.', 'paid-memberships-pro' ),
|
24 |
+
category: 'pmpro-pages',
|
25 |
icon: {
|
26 |
+
background: '#FFFFFF',
|
27 |
+
foreground: '#1A688B',
|
28 |
src: 'yes',
|
29 |
},
|
30 |
+
keywords: [
|
31 |
+
__( 'member', 'paid-memberships-pro' ),
|
32 |
+
__( 'buy', 'paid-memberships-pro' ),
|
33 |
+
__( 'paid memberships pro', 'paid-memberships-pro' ),
|
34 |
+
__( 'pmpro', 'paid-memberships-pro' ),
|
35 |
+
__( 'purchase', 'paid-memberships-pro' ),
|
36 |
+
__( 'receipt', 'paid-memberships-pro' ),
|
37 |
+
__( 'success', 'paid-memberships-pro' ),
|
38 |
+
],
|
39 |
supports: {
|
40 |
},
|
41 |
attributes: {
|
blocks/invoice-page/block.js
CHANGED
@@ -19,15 +19,22 @@
|
|
19 |
export default registerBlockType(
|
20 |
'pmpro/invoice-page',
|
21 |
{
|
22 |
-
title: __( '
|
23 |
-
description: __( '
|
24 |
-
category: 'pmpro',
|
25 |
icon: {
|
26 |
-
background: '#
|
27 |
-
foreground: '#
|
28 |
src: 'archive',
|
29 |
},
|
30 |
-
keywords: [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
supports: {
|
32 |
},
|
33 |
attributes: {
|
19 |
export default registerBlockType(
|
20 |
'pmpro/invoice-page',
|
21 |
{
|
22 |
+
title: __( 'PMPro Page: Invoice', 'paid-memberships-pro' ),
|
23 |
+
description: __( 'Dynamic page section that displays a list of all invoices (purchase history) for the active member. Each invoice can be selected and viewed in full detail.', 'paid-memberships-pro' ),
|
24 |
+
category: 'pmpro-pages',
|
25 |
icon: {
|
26 |
+
background: '#FFFFFF',
|
27 |
+
foreground: '#1A688B',
|
28 |
src: 'archive',
|
29 |
},
|
30 |
+
keywords: [
|
31 |
+
__( 'history', 'paid-memberships-pro' ),
|
32 |
+
__( 'order', 'paid-memberships-pro' ),
|
33 |
+
__( 'paid memberships pro', 'paid-memberships-pro' ),
|
34 |
+
__( 'pmpro', 'paid-memberships-pro' ),
|
35 |
+
__( 'purchases', 'paid-memberships-pro' ),
|
36 |
+
__( 'receipt', 'paid-memberships-pro' ),
|
37 |
+
],
|
38 |
supports: {
|
39 |
},
|
40 |
attributes: {
|
blocks/levels-page/block.js
CHANGED
@@ -19,15 +19,21 @@
|
|
19 |
export default registerBlockType(
|
20 |
'pmpro/levels-page',
|
21 |
{
|
22 |
-
title: __( 'Membership Levels
|
23 |
-
description: __( '
|
24 |
category: 'pmpro',
|
25 |
icon: {
|
26 |
-
background: '#
|
27 |
-
foreground: '#
|
28 |
src: 'list-view',
|
29 |
},
|
30 |
-
keywords: [
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
supports: {
|
32 |
},
|
33 |
attributes: {
|
19 |
export default registerBlockType(
|
20 |
'pmpro/levels-page',
|
21 |
{
|
22 |
+
title: __( 'Membership Levels and Pricing Table', 'paid-memberships-pro' ),
|
23 |
+
description: __( 'Dynamic page section that displays a list of membership levels and pricing, linked to membership checkout. To reorder the display, navigate to Memberships > Settings > Levels.', 'paid-memberships-pro' ),
|
24 |
category: 'pmpro',
|
25 |
icon: {
|
26 |
+
background: '#FFFFFF',
|
27 |
+
foreground: '#658B24',
|
28 |
src: 'list-view',
|
29 |
},
|
30 |
+
keywords: [
|
31 |
+
__( 'level', 'paid-memberships-pro' ),
|
32 |
+
__( 'paid memberships pro', 'paid-memberships-pro' ),
|
33 |
+
__( 'pmpro', 'paid-memberships-pro' ),
|
34 |
+
__( 'price', 'paid-memberships-pro' ),
|
35 |
+
__( 'pricing table', 'paid-memberships-pro' ),
|
36 |
+
],
|
37 |
supports: {
|
38 |
},
|
39 |
attributes: {
|
blocks/login/block.js
CHANGED
@@ -19,37 +19,38 @@ const { Fragment } = wp.element;
|
|
19 |
/**
|
20 |
* Register block
|
21 |
*/
|
22 |
-
export default registerBlockType(
|
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 |
-
}
|
|
19 |
/**
|
20 |
* Register block
|
21 |
*/
|
22 |
+
export default registerBlockType(
|
23 |
+
'pmpro/login-form',
|
24 |
+
{
|
25 |
+
title: __( 'Login Form', 'paid-memberships-pro' ),
|
26 |
+
description: __( 'Dynamic form that allows users to log in or recover a loast password. Logged in users can see a welcome message with the selected custom menu.', 'paid-memberships-pro' ),
|
27 |
+
category: 'pmpro',
|
28 |
+
icon: {
|
29 |
+
background: '#FFFFFF',
|
30 |
+
foreground: '#658B24',
|
31 |
+
src: 'unlock',
|
32 |
+
},
|
33 |
+
keywords: [
|
34 |
+
__( 'log in', 'paid-memberships-pro' ),
|
35 |
+
__( 'lost password', 'paid-memberships-pro' ),
|
36 |
+
__( 'paid memberships pro', 'paid-memberships-pro' ),
|
37 |
+
__( 'password reset', 'paid-memberships-pro' ),
|
38 |
+
__( 'pmpro', 'paid-memberships-pro' ),
|
39 |
+
],
|
40 |
+
supports: {},
|
41 |
+
edit: (props) => {
|
42 |
+
return [
|
43 |
+
<Fragment>
|
44 |
+
<Inspector {...props} />
|
45 |
+
<div className="pmpro-block-element">
|
46 |
+
<span className="pmpro-block-title">{__("Paid Memberships Pro", "paid-memberships-pro")}</span>
|
47 |
+
<span className="pmpro-block-subtitle">{__("Log in Form", "paid-memberships-pro")}</span>
|
48 |
+
</div>
|
49 |
+
</Fragment>,
|
50 |
+
];
|
51 |
+
},
|
52 |
+
save() {
|
53 |
+
return null;
|
54 |
+
},
|
55 |
+
}
|
56 |
+
);
|
blocks/member-profile-edit/block.js
CHANGED
@@ -13,31 +13,36 @@ const { registerBlockType } = wp.blocks;
|
|
13 |
/**
|
14 |
* Register block
|
15 |
*/
|
16 |
-
export default registerBlockType(
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
}
|
|
|
|
|
|
|
|
|
|
13 |
/**
|
14 |
* Register block
|
15 |
*/
|
16 |
+
export default registerBlockType(
|
17 |
+
'pmpro/member-profile-edit',
|
18 |
+
{
|
19 |
+
title: __( 'PMPro Page: Account Profile Edit', 'paid-memberships-pro' ),
|
20 |
+
description: __( 'Dynaimc form that allows the current logged in member to edit their default user profile information and any custom user profile fields.', 'paid-memberships-pro' ),
|
21 |
+
category: 'pmpro-pages',
|
22 |
+
icon: {
|
23 |
+
background: '#FFFFFF',
|
24 |
+
foreground: '#1A688B',
|
25 |
+
src: 'admin-users',
|
26 |
+
},
|
27 |
+
keywords: [
|
28 |
+
__( 'custom field', 'paid-memberships-pro' ),
|
29 |
+
__( 'fields', 'paid-memberships-pro' ),
|
30 |
+
__( 'paid memberships pro', 'paid-memberships-pro' ),
|
31 |
+
__( 'pmpro', 'paid-memberships-pro' ),
|
32 |
+
__( 'user fields', 'paid-memberships-pro' ),
|
33 |
+
],
|
34 |
+
edit: (props) => {
|
35 |
+
return (
|
36 |
+
<div className="pmpro-block-element">
|
37 |
+
<span className="pmpro-block-title">{__("Paid Memberships Pro", "paid-memberships-pro")}</span>
|
38 |
+
<span className="pmpro-block-subtitle">
|
39 |
+
{__("Member Profile Edit", "paid-memberships-pro")}
|
40 |
+
</span>
|
41 |
+
</div>
|
42 |
+
);
|
43 |
+
},
|
44 |
+
save() {
|
45 |
+
return null;
|
46 |
+
},
|
47 |
+
}
|
48 |
+
);
|
blocks/membership/block.js
CHANGED
@@ -9,11 +9,12 @@
|
|
9 |
*/
|
10 |
const { __ } = wp.i18n;
|
11 |
const {
|
12 |
-
registerBlockType
|
13 |
} = wp.blocks;
|
14 |
const {
|
15 |
PanelBody,
|
16 |
CheckboxControl,
|
|
|
17 |
} = wp.components;
|
18 |
const {
|
19 |
InspectorControls,
|
@@ -28,15 +29,25 @@ const all_levels = [{ value: 0, label: "Non-Members" }].concat( pmpro.all_level_
|
|
28 |
export default registerBlockType(
|
29 |
'pmpro/membership',
|
30 |
{
|
31 |
-
title: __( '
|
32 |
-
description: __( '
|
33 |
category: 'pmpro',
|
34 |
icon: {
|
35 |
-
background: '#
|
36 |
-
foreground: '#
|
37 |
src: 'visibility',
|
38 |
},
|
39 |
-
keywords: [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
attributes: {
|
41 |
levels: {
|
42 |
type: 'array',
|
@@ -46,9 +57,13 @@ const all_levels = [{ value: 0, label: "Non-Members" }].concat( pmpro.all_level_
|
|
46 |
type: 'string',
|
47 |
default:'',
|
48 |
},
|
|
|
|
|
|
|
|
|
49 |
},
|
50 |
edit: props => {
|
51 |
-
const { attributes: {levels, uid}, setAttributes, isSelected } = props;
|
52 |
if( uid=='' ) {
|
53 |
var rand = Math.random()+"";
|
54 |
setAttributes( { uid:rand } );
|
@@ -69,7 +84,7 @@ const all_levels = [{ value: 0, label: "Non-Members" }].concat( pmpro.all_level_
|
|
69 |
}
|
70 |
}
|
71 |
return [
|
72 |
-
<CheckboxControl
|
73 |
label = { level.label }
|
74 |
checked = { levels.some( levelID => levelID == level.value ) }
|
75 |
onChange = { setLevelsAttribute }
|
@@ -79,17 +94,31 @@ const all_levels = [{ value: 0, label: "Non-Members" }].concat( pmpro.all_level_
|
|
79 |
|
80 |
return [
|
81 |
isSelected && <InspectorControls>
|
82 |
-
<PanelBody>
|
|
|
83 |
<div class="pmpro-block-inspector-scrollable">
|
84 |
{checkboxes}
|
85 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
86 |
</PanelBody>
|
87 |
</InspectorControls>,
|
88 |
isSelected && <div className="pmpro-block-require-membership-element" >
|
89 |
-
<span className="pmpro-block-title">{ __( '
|
|
|
90 |
<PanelBody>
|
91 |
{checkboxes}
|
92 |
</PanelBody>
|
|
|
93 |
<InnerBlocks
|
94 |
renderAppender={ () => (
|
95 |
<InnerBlocks.ButtonBlockAppender />
|
@@ -98,7 +127,7 @@ const all_levels = [{ value: 0, label: "Non-Members" }].concat( pmpro.all_level_
|
|
98 |
/>
|
99 |
</div>,
|
100 |
! isSelected && <div className="pmpro-block-require-membership-element" >
|
101 |
-
<span className="pmpro-block-title">{ __( '
|
102 |
<InnerBlocks
|
103 |
renderAppender={ () => (
|
104 |
<InnerBlocks.ButtonBlockAppender />
|
9 |
*/
|
10 |
const { __ } = wp.i18n;
|
11 |
const {
|
12 |
+
registerBlockType
|
13 |
} = wp.blocks;
|
14 |
const {
|
15 |
PanelBody,
|
16 |
CheckboxControl,
|
17 |
+
SelectControl,
|
18 |
} = wp.components;
|
19 |
const {
|
20 |
InspectorControls,
|
29 |
export default registerBlockType(
|
30 |
'pmpro/membership',
|
31 |
{
|
32 |
+
title: __( 'Membership Required Block', 'paid-memberships-pro' ),
|
33 |
+
description: __( 'Nest blocks within this wrapper to control the inner block visibility by membership level or for non-members only.', 'paid-memberships-pro' ),
|
34 |
category: 'pmpro',
|
35 |
icon: {
|
36 |
+
background: '#FFFFFF',
|
37 |
+
foreground: '#1A688B',
|
38 |
src: 'visibility',
|
39 |
},
|
40 |
+
keywords: [
|
41 |
+
__( 'block visibility', 'paid-memberships-pro' ),
|
42 |
+
__( 'confitional', 'paid-memberships-pro' ),
|
43 |
+
__( 'content', 'paid-memberships-pro' ),
|
44 |
+
__( 'hide', 'paid-memberships-pro' ),
|
45 |
+
__( 'hidden', 'paid-memberships-pro' ),
|
46 |
+
__( 'paid memberships pro', 'paid-memberships-pro' ),
|
47 |
+
__( 'pmpro', 'paid-memberships-pro' ),
|
48 |
+
__( 'private', 'paid-memberships-pro' ),
|
49 |
+
__( 'restrict', 'paid-memberships-pro' ),
|
50 |
+
],
|
51 |
attributes: {
|
52 |
levels: {
|
53 |
type: 'array',
|
57 |
type: 'string',
|
58 |
default:'',
|
59 |
},
|
60 |
+
show_noaccess: {
|
61 |
+
type: 'boolean',
|
62 |
+
default: false,
|
63 |
+
},
|
64 |
},
|
65 |
edit: props => {
|
66 |
+
const { attributes: {levels, uid, show_noaccess}, setAttributes, isSelected } = props;
|
67 |
if( uid=='' ) {
|
68 |
var rand = Math.random()+"";
|
69 |
setAttributes( { uid:rand } );
|
84 |
}
|
85 |
}
|
86 |
return [
|
87 |
+
<CheckboxControl
|
88 |
label = { level.label }
|
89 |
checked = { levels.some( levelID => levelID == level.value ) }
|
90 |
onChange = { setLevelsAttribute }
|
94 |
|
95 |
return [
|
96 |
isSelected && <InspectorControls>
|
97 |
+
<PanelBody>
|
98 |
+
<p><strong>{ __( 'Which membership levels can view this block?', 'paid-memberships-pro' ) }</strong></p>
|
99 |
<div class="pmpro-block-inspector-scrollable">
|
100 |
{checkboxes}
|
101 |
</div>
|
102 |
+
<hr />
|
103 |
+
<p><strong>{ __( 'What should users without access see?', 'paid-memberships-pro' ) }</strong></p>
|
104 |
+
<SelectControl
|
105 |
+
value={ show_noaccess }
|
106 |
+
help={__( "Modify the 'no access' message on the Memberships > Advanced Settings page.", "paid-memberships-pro" ) }
|
107 |
+
options={ [
|
108 |
+
{ label: __( "Show nothing", 'paid-memberships-pro' ), value: '0' },
|
109 |
+
{ label: __( "Show the 'no access' message", 'paid-memberships-pro' ), value: '1' },
|
110 |
+
] }
|
111 |
+
onChange={ show_noaccess => setAttributes( { show_noaccess } ) }
|
112 |
+
/>
|
113 |
</PanelBody>
|
114 |
</InspectorControls>,
|
115 |
isSelected && <div className="pmpro-block-require-membership-element" >
|
116 |
+
<span className="pmpro-block-title">{ __( 'Membership Required', 'paid-memberships-pro' ) }</span>
|
117 |
+
<div class="pmpro-block-inspector-scrollable">
|
118 |
<PanelBody>
|
119 |
{checkboxes}
|
120 |
</PanelBody>
|
121 |
+
</div>
|
122 |
<InnerBlocks
|
123 |
renderAppender={ () => (
|
124 |
<InnerBlocks.ButtonBlockAppender />
|
127 |
/>
|
128 |
</div>,
|
129 |
! isSelected && <div className="pmpro-block-require-membership-element" >
|
130 |
+
<span className="pmpro-block-title">{ __( 'Membership Required', 'paid-memberships-pro' ) }</span>
|
131 |
<InnerBlocks
|
132 |
renderAppender={ () => (
|
133 |
<InnerBlocks.ButtonBlockAppender />
|
blocks/membership/block.php
CHANGED
@@ -44,6 +44,8 @@ function render_dynamic_block( $attributes, $content ) {
|
|
44 |
} else {
|
45 |
if ( pmpro_hasMembershipLevel( $attributes['levels'] ) ) {
|
46 |
return do_blocks( $content );
|
|
|
|
|
47 |
}
|
48 |
}
|
49 |
}
|
44 |
} else {
|
45 |
if ( pmpro_hasMembershipLevel( $attributes['levels'] ) ) {
|
46 |
return do_blocks( $content );
|
47 |
+
} elseif ( ! empty( $attributes['show_noaccess'] ) ) {
|
48 |
+
return pmpro_get_no_access_message( NULL, $attributes['levels'] );
|
49 |
}
|
50 |
}
|
51 |
}
|
classes/class-pmpro-admin-activity-email.php
CHANGED
@@ -346,10 +346,10 @@ class PMPro_Admin_Activity_Email extends PMProEmail {
|
|
346 |
?>
|
347 |
</td>
|
348 |
<td width="40%" style="background-color:#F1F1F1;padding:15px;">
|
349 |
-
<p style="margin:0px;padding:0px;text-align:center;"><a style="color:#1A688B;" href="https://www.paidmembershipspro.com" target="_blank"><img style="width:100px;height:100px;" src="<?php echo esc_url( plugins_url( 'images/Paid-Memberships-Pro_icon.png', PMPRO_BASE_FILE ) ); ?>" alt="<?php
|
350 |
-
<p style="margin:0px 0px 15px 0px;padding:0px;"><a style="color:#1A688B;" href="https://www.paidmembershipspro.com/support/" target="_blank"><?php esc_html_e( 'Get Support', 'paid-memberships-pro' ); ?></a></p>
|
351 |
-
<p style="margin:0px 0px 15px 0px;padding:0px;"><a style="color:#1A688B;" href="https://twitter.com/pmproplugin" target="_blank"><?php esc_html_e( 'Follow @pmproplugin on Twitter', 'paid-memberships-pro' ); ?></a></p>
|
352 |
-
<p style="margin:0px 0px 15px 0px;padding:0px;"><a style="color:#1A688B;" href="https://www.facebook.com/PaidMembershipsPro/" target="_blank"><?php esc_html_e( 'Like us on Facebook', 'paid-memberships-pro' ); ?></p></p>
|
353 |
<p style="margin:0px;padding:0px;"><a style="color:#1A688B;" href="https://www.youtube.com/user/strangerstudiostv?sub_confirmation=1" target="_blank"><?php esc_html_e( 'Subscribe to our YouTube Channel', 'paid-memberships-pro' ); ?></a></p>
|
354 |
</td>
|
355 |
</tr>
|
346 |
?>
|
347 |
</td>
|
348 |
<td width="40%" style="background-color:#F1F1F1;padding:15px;">
|
349 |
+
<p style="margin:0px;padding:0px;text-align:center;"><a style="color:#1A688B;" href="https://www.paidmembershipspro.com" target="_blank" rel="noopener noreferrer"><img style="width:100px;height:100px;" src="<?php echo esc_url( plugins_url( 'images/Paid-Memberships-Pro_icon.png', PMPRO_BASE_FILE ) ); ?>" alt="<?php esc_attr_e( 'Paid Memberships Pro', 'paid-memberships-pro' ); ?>" /></a></p>
|
350 |
+
<p style="margin:0px 0px 15px 0px;padding:0px;"><a style="color:#1A688B;" href="https://www.paidmembershipspro.com/support/" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'Get Support', 'paid-memberships-pro' ); ?></a></p>
|
351 |
+
<p style="margin:0px 0px 15px 0px;padding:0px;"><a style="color:#1A688B;" href="https://twitter.com/pmproplugin" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'Follow @pmproplugin on Twitter', 'paid-memberships-pro' ); ?></a></p>
|
352 |
+
<p style="margin:0px 0px 15px 0px;padding:0px;"><a style="color:#1A688B;" href="https://www.facebook.com/PaidMembershipsPro/" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'Like us on Facebook', 'paid-memberships-pro' ); ?></p></p>
|
353 |
<p style="margin:0px;padding:0px;"><a style="color:#1A688B;" href="https://www.youtube.com/user/strangerstudiostv?sub_confirmation=1" target="_blank"><?php esc_html_e( 'Subscribe to our YouTube Channel', 'paid-memberships-pro' ); ?></a></p>
|
354 |
</td>
|
355 |
</tr>
|
classes/class-pmpro-members-list-table.php
CHANGED
@@ -224,16 +224,16 @@ class PMPro_Members_List_Table extends WP_List_Table {
|
|
224 |
<p>
|
225 |
<?php _e( 'No members found.', 'paid-memberships-pro' ); ?>
|
226 |
<?php if ( $l ) { ?>
|
227 |
-
<a href="<?php echo esc_url( add_query_arg( array( 'page' => 'pmpro-memberslist', 's' => $s ) ) ); ?>"><?php
|
228 |
<?php } ?>
|
229 |
</p>
|
230 |
<hr />
|
231 |
-
<p><?php
|
232 |
<ul class="ul-disc">
|
233 |
-
<li><a href="<?php echo esc_url( add_query_arg( array( 's' => $s ), admin_url( 'users.php' ) ) ); ?>"><?php
|
234 |
-
<li><a href="<?php echo esc_url( add_query_arg( array( 'page' => 'pmpro-memberslist', 'l' => 'cancelled', 's' => $s ) ) ); ?>"><?php
|
235 |
-
<li><a href="<?php echo esc_url( add_query_arg( array( 'page' => 'pmpro-memberslist', 'l' => 'expired', 's' => $s ) ) ); ?>"><?php
|
236 |
-
<li><a href="<?php echo esc_url( add_query_arg( array( 'page' => 'pmpro-memberslist', 'l' => 'oldmembers', 's' => $s ) ) ); ?>"><?php
|
237 |
</ul>
|
238 |
<?php
|
239 |
}
|
@@ -328,9 +328,15 @@ class PMPro_Members_List_Table extends WP_List_Table {
|
|
328 |
$search_query = " AND $key_column LIKE '%" . esc_sql( $s ) . "%' ";
|
329 |
} elseif ( $search_key === 'discount' || $search_key === 'discount_code' || $search_key === 'dc' ) {
|
330 |
$user_ids = $wpdb->get_col( "SELECT dcu.user_id FROM $wpdb->pmpro_discount_codes_uses dcu LEFT JOIN $wpdb->pmpro_discount_codes dc ON dcu.code_id = dc.id WHERE dc.code = '" . esc_sql( $s ) . "'" );
|
331 |
-
|
|
|
|
|
|
|
332 |
} else {
|
333 |
-
$user_ids = $wpdb->get_col( "SELECT user_id FROM $wpdb->usermeta WHERE meta_key = '" . esc_sql( $search_key ) . "' AND meta_value
|
|
|
|
|
|
|
334 |
$search_query = " AND u.ID IN(" . implode( ",", $user_ids ) . ") ";
|
335 |
}
|
336 |
} else {
|
@@ -567,7 +573,7 @@ class PMPro_Members_List_Table extends WP_List_Table {
|
|
567 |
$fee = '';
|
568 |
// If there is no payment for the level, show a dash.
|
569 |
if ( (float)$item['initial_payment'] <= 0 && (float)$item['billing_amount'] <= 0 ) {
|
570 |
-
$fee .=
|
571 |
} else {
|
572 |
// Display the member's initial payment.
|
573 |
if ( (float)$item['initial_payment'] > 0 ) {
|
@@ -575,12 +581,12 @@ class PMPro_Members_List_Table extends WP_List_Table {
|
|
575 |
}
|
576 |
// If there is a recurring payment, show a plus sign.
|
577 |
if ( (float)$item['initial_payment'] > 0 && (float)$item['billing_amount'] > 0 ) {
|
578 |
-
$fee .=
|
579 |
}
|
580 |
// If there is a recurring payment, show the recurring payment amount and cycle.
|
581 |
if ( (float)$item['billing_amount'] > 0 ) {
|
582 |
$fee .= pmpro_escape_price( pmpro_formatPrice( $item['billing_amount'] ) );
|
583 |
-
$fee .=
|
584 |
if ( $item['cycle_number'] > 1 ) {
|
585 |
$fee .= $item['cycle_number'] . " " . $item['cycle_period'] . "s";
|
586 |
} else {
|
@@ -650,19 +656,19 @@ class PMPro_Members_List_Table extends WP_List_Table {
|
|
650 |
}
|
651 |
_e('Show', 'paid-memberships-pro' );?>
|
652 |
<select name="l" onchange="jQuery('#current-page-selector').val('1'); jQuery('#member-list-form').submit();">
|
653 |
-
<option value="" <?php if(!$l) { ?>selected="selected"<?php } ?>><?php
|
654 |
<?php
|
655 |
$levels = $wpdb->get_results("SELECT id, name FROM $wpdb->pmpro_membership_levels ORDER BY name");
|
656 |
foreach($levels as $level)
|
657 |
{
|
658 |
?>
|
659 |
-
<option value="<?php echo $level->id?>" <?php if($l == $level->id) { ?>selected="selected"<?php } ?>><?php echo $level->name?></option>
|
660 |
<?php
|
661 |
}
|
662 |
?>
|
663 |
-
<option value="cancelled" <?php if($l == "cancelled") { ?>selected="selected"<?php } ?>><?php
|
664 |
-
<option value="expired" <?php if($l == "expired") { ?>selected="selected"<?php } ?>><?php
|
665 |
-
<option value="oldmembers" <?php if($l == "oldmembers") { ?>selected="selected"<?php } ?>><?php
|
666 |
</select>
|
667 |
<?php
|
668 |
}
|
224 |
<p>
|
225 |
<?php _e( 'No members found.', 'paid-memberships-pro' ); ?>
|
226 |
<?php if ( $l ) { ?>
|
227 |
+
<a href="<?php echo esc_url( add_query_arg( array( 'page' => 'pmpro-memberslist', 's' => $s ) ) ); ?>"><?php esc_html_e( 'Search all levels', 'paid-memberships-pro' );?></a>
|
228 |
<?php } ?>
|
229 |
</p>
|
230 |
<hr />
|
231 |
+
<p><?php esc_html_e( 'You can also try searching:', 'paid-memberships-pro' ); ?>
|
232 |
<ul class="ul-disc">
|
233 |
+
<li><a href="<?php echo esc_url( add_query_arg( array( 's' => $s ), admin_url( 'users.php' ) ) ); ?>"><?php esc_html_e( 'All Users', 'paid-memberships-pro' ); ?></a></li>
|
234 |
+
<li><a href="<?php echo esc_url( add_query_arg( array( 'page' => 'pmpro-memberslist', 'l' => 'cancelled', 's' => $s ) ) ); ?>"><?php esc_html_e( 'Cancelled Members', 'paid-memberships-pro' ); ?></a></li>
|
235 |
+
<li><a href="<?php echo esc_url( add_query_arg( array( 'page' => 'pmpro-memberslist', 'l' => 'expired', 's' => $s ) ) ); ?>"><?php esc_html_e( 'Expired Members', 'paid-memberships-pro' ); ?></a></li>
|
236 |
+
<li><a href="<?php echo esc_url( add_query_arg( array( 'page' => 'pmpro-memberslist', 'l' => 'oldmembers', 's' => $s ) ) ); ?>"><?php esc_html_e( 'Old Members', 'paid-memberships-pro' ); ?></a></li>
|
237 |
</ul>
|
238 |
<?php
|
239 |
}
|
328 |
$search_query = " AND $key_column LIKE '%" . esc_sql( $s ) . "%' ";
|
329 |
} elseif ( $search_key === 'discount' || $search_key === 'discount_code' || $search_key === 'dc' ) {
|
330 |
$user_ids = $wpdb->get_col( "SELECT dcu.user_id FROM $wpdb->pmpro_discount_codes_uses dcu LEFT JOIN $wpdb->pmpro_discount_codes dc ON dcu.code_id = dc.id WHERE dc.code = '" . esc_sql( $s ) . "'" );
|
331 |
+
if ( empty( $user_ids ) ) {
|
332 |
+
$user_ids = array(0); // Avoid warning, but ensure 0 results.
|
333 |
+
}
|
334 |
+
$search_query = " AND u.ID IN(" . implode( ",", $user_ids ) . ") ";
|
335 |
} else {
|
336 |
+
$user_ids = $wpdb->get_col( "SELECT user_id FROM $wpdb->usermeta WHERE meta_key = '" . esc_sql( $search_key ) . "' AND meta_value LIKE '%" . esc_sql( $s ) . "%'" );
|
337 |
+
if ( empty( $user_ids ) ) {
|
338 |
+
$user_ids = array(0); // Avoid warning, but ensure 0 results.
|
339 |
+
}
|
340 |
$search_query = " AND u.ID IN(" . implode( ",", $user_ids ) . ") ";
|
341 |
}
|
342 |
} else {
|
573 |
$fee = '';
|
574 |
// If there is no payment for the level, show a dash.
|
575 |
if ( (float)$item['initial_payment'] <= 0 && (float)$item['billing_amount'] <= 0 ) {
|
576 |
+
$fee .= esc_html__( '—', 'paid-memberships-pro' );
|
577 |
} else {
|
578 |
// Display the member's initial payment.
|
579 |
if ( (float)$item['initial_payment'] > 0 ) {
|
581 |
}
|
582 |
// If there is a recurring payment, show a plus sign.
|
583 |
if ( (float)$item['initial_payment'] > 0 && (float)$item['billing_amount'] > 0 ) {
|
584 |
+
$fee .= esc_html__( ' + ', 'paid-memberships-pro' );
|
585 |
}
|
586 |
// If there is a recurring payment, show the recurring payment amount and cycle.
|
587 |
if ( (float)$item['billing_amount'] > 0 ) {
|
588 |
$fee .= pmpro_escape_price( pmpro_formatPrice( $item['billing_amount'] ) );
|
589 |
+
$fee .= esc_html__( ' per ', 'paid-memberships-pro' );
|
590 |
if ( $item['cycle_number'] > 1 ) {
|
591 |
$fee .= $item['cycle_number'] . " " . $item['cycle_period'] . "s";
|
592 |
} else {
|
656 |
}
|
657 |
_e('Show', 'paid-memberships-pro' );?>
|
658 |
<select name="l" onchange="jQuery('#current-page-selector').val('1'); jQuery('#member-list-form').submit();">
|
659 |
+
<option value="" <?php if(!$l) { ?>selected="selected"<?php } ?>><?php esc_html_e('All Levels', 'paid-memberships-pro' );?></option>
|
660 |
<?php
|
661 |
$levels = $wpdb->get_results("SELECT id, name FROM $wpdb->pmpro_membership_levels ORDER BY name");
|
662 |
foreach($levels as $level)
|
663 |
{
|
664 |
?>
|
665 |
+
<option value="<?php echo esc_attr( $level->id ) ?>" <?php if($l == $level->id) { ?>selected="selected"<?php } ?>><?php echo $level->name?></option>
|
666 |
<?php
|
667 |
}
|
668 |
?>
|
669 |
+
<option value="cancelled" <?php if($l == "cancelled") { ?>selected="selected"<?php } ?>><?php esc_html_e('Cancelled Members', 'paid-memberships-pro' );?></option>
|
670 |
+
<option value="expired" <?php if($l == "expired") { ?>selected="selected"<?php } ?>><?php esc_html_e('Expired Members', 'paid-memberships-pro' );?></option>
|
671 |
+
<option value="oldmembers" <?php if($l == "oldmembers") { ?>selected="selected"<?php } ?>><?php esc_html_e('Old Members', 'paid-memberships-pro' );?></option>
|
672 |
</select>
|
673 |
<?php
|
674 |
}
|
classes/class-pmpro-site-health.php
CHANGED
@@ -100,7 +100,11 @@ class PMPro_Site_Health {
|
|
100 |
'pmpro-pages' => [
|
101 |
'label' => __( 'Membership Pages', 'paid-memberships-pro' ),
|
102 |
'value' => self::get_pmpro_pages(),
|
103 |
-
]
|
|
|
|
|
|
|
|
|
104 |
],
|
105 |
];
|
106 |
|
@@ -187,14 +191,17 @@ class PMPro_Site_Health {
|
|
187 |
|
188 |
if ( $legacy ) {
|
189 |
$gateway_text .= ' (' . __( 'Legacy Keys', 'paid-memberships-pro' ) . ')';
|
|
|
190 |
}
|
191 |
|
192 |
if ( $connect ) {
|
193 |
$gateway_text .= ' (' . __( 'Stripe Connect', 'paid-memberships-pro' ) . ')';
|
|
|
194 |
}
|
|
|
195 |
}
|
196 |
|
197 |
-
return $gateway_text;
|
198 |
}
|
199 |
|
200 |
/**
|
@@ -217,7 +224,7 @@ class PMPro_Site_Health {
|
|
217 |
return sprintf( __( '%s (environment not registered)', 'paid-memberships-pro' ), $environment );
|
218 |
}
|
219 |
|
220 |
-
return $environments[ $environment ];
|
221 |
}
|
222 |
|
223 |
/**
|
@@ -313,18 +320,7 @@ class PMPro_Site_Health {
|
|
313 |
$cron_times = [];
|
314 |
|
315 |
// These are our crons.
|
316 |
-
$expected_crons =
|
317 |
-
'pmpro_cron_expire_memberships',
|
318 |
-
'pmpro_cron_expiration_warnings',
|
319 |
-
'pmpro_cron_credit_card_expiring_warnings',
|
320 |
-
'pmpro_cron_admin_activity_email',
|
321 |
-
];
|
322 |
-
|
323 |
-
$gateway = pmpro_getOption( 'gateway' );
|
324 |
-
|
325 |
-
if ( 'stripe' === $gateway ) {
|
326 |
-
$expected_crons[] = 'pmpro_cron_stripe_subscription_updates';
|
327 |
-
}
|
328 |
|
329 |
// Find any of our crons and when their next run is.
|
330 |
if ( $crons ) {
|
@@ -366,7 +362,7 @@ class PMPro_Site_Health {
|
|
366 |
global $pmpro_pages;
|
367 |
|
368 |
$page_information = array();
|
369 |
-
|
370 |
if( !empty( $pmpro_pages ) ){
|
371 |
|
372 |
foreach( $pmpro_pages as $key => $val ){
|
@@ -469,6 +465,37 @@ class PMPro_Site_Health {
|
|
469 |
return __( 'Off', 'paid-memberships-pro' );
|
470 |
}
|
471 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
472 |
/**
|
473 |
* Get the constants site health information.
|
474 |
*
|
@@ -541,5 +568,4 @@ class PMPro_Site_Health {
|
|
541 |
|
542 |
return $constants_formatted;
|
543 |
}
|
544 |
-
|
545 |
}
|
100 |
'pmpro-pages' => [
|
101 |
'label' => __( 'Membership Pages', 'paid-memberships-pro' ),
|
102 |
'value' => self::get_pmpro_pages(),
|
103 |
+
],
|
104 |
+
'pmpro-library-conflicts' => [
|
105 |
+
'label' => __( 'Library Conflicts', 'paid-memberships-pro' ),
|
106 |
+
'value' => self::get_library_conflicts(),
|
107 |
+
],
|
108 |
],
|
109 |
];
|
110 |
|
191 |
|
192 |
if ( $legacy ) {
|
193 |
$gateway_text .= ' (' . __( 'Legacy Keys', 'paid-memberships-pro' ) . ')';
|
194 |
+
return $gateway_text . ' [' . $gateway . ':legacy-keys]';
|
195 |
}
|
196 |
|
197 |
if ( $connect ) {
|
198 |
$gateway_text .= ' (' . __( 'Stripe Connect', 'paid-memberships-pro' ) . ')';
|
199 |
+
return $gateway_text . ' [' . $gateway . ':stripe-connect]';
|
200 |
}
|
201 |
+
|
202 |
}
|
203 |
|
204 |
+
return $gateway_text . ' [' . $gateway . ']';
|
205 |
}
|
206 |
|
207 |
/**
|
224 |
return sprintf( __( '%s (environment not registered)', 'paid-memberships-pro' ), $environment );
|
225 |
}
|
226 |
|
227 |
+
return $environments[ $environment ] . ' [' . $environment . ']';
|
228 |
}
|
229 |
|
230 |
/**
|
320 |
$cron_times = [];
|
321 |
|
322 |
// These are our crons.
|
323 |
+
$expected_crons = array_keys( pmpro_get_crons() );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
324 |
|
325 |
// Find any of our crons and when their next run is.
|
326 |
if ( $crons ) {
|
362 |
global $pmpro_pages;
|
363 |
|
364 |
$page_information = array();
|
365 |
+
|
366 |
if( !empty( $pmpro_pages ) ){
|
367 |
|
368 |
foreach( $pmpro_pages as $key => $val ){
|
465 |
return __( 'Off', 'paid-memberships-pro' );
|
466 |
}
|
467 |
|
468 |
+
/**
|
469 |
+
* Get library conflicts.
|
470 |
+
*
|
471 |
+
* @since 2.8
|
472 |
+
*
|
473 |
+
* @return string|string[] The member page information
|
474 |
+
*/
|
475 |
+
function get_library_conflicts() {
|
476 |
+
// Get the current list of library conflicts.
|
477 |
+
$library_conflicts = get_option( 'pmpro_library_conflicts' );
|
478 |
+
|
479 |
+
// If there are no library conflicts, return a message.
|
480 |
+
if ( empty( $library_conflicts ) ) {
|
481 |
+
return __( 'No library conflicts detected.', 'paid-memberships-pro' );
|
482 |
+
}
|
483 |
+
|
484 |
+
// Format data to be displayed in site health.
|
485 |
+
$return_arr = array();
|
486 |
+
|
487 |
+
// Loop through all libraries that have conflicts.
|
488 |
+
foreach ( $library_conflicts as $library_name => $conflicting_plugins ) {
|
489 |
+
$conflict_strings = array();
|
490 |
+
// Loop through all plugins that have conflicts with this library.
|
491 |
+
foreach ( $conflicting_plugins as $conflicting_plugin_path => $conflicting_plugin_data ) {
|
492 |
+
$conflict_strings[] = 'v' . $conflicting_plugin_data['version'] . ' (' . $conflicting_plugin_data['timestamp'] . ')' . ' - ' . $conflicting_plugin_path;
|
493 |
+
}
|
494 |
+
$return_arr[ $library_name ] = implode( ' | ', $conflict_strings );
|
495 |
+
}
|
496 |
+
return $return_arr;
|
497 |
+
}
|
498 |
+
|
499 |
/**
|
500 |
* Get the constants site health information.
|
501 |
*
|
568 |
|
569 |
return $constants_formatted;
|
570 |
}
|
|
|
571 |
}
|
classes/class-pmpro-wisdom-integration.php
ADDED
@@ -0,0 +1,490 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Wisdom Integration class for PMPro.
|
5 |
+
*
|
6 |
+
* @see PMPro_Wisdom_Tracker
|
7 |
+
*
|
8 |
+
* @since 2.8
|
9 |
+
*/
|
10 |
+
class PMPro_Wisdom_Integration {
|
11 |
+
|
12 |
+
/**
|
13 |
+
* The current object instance.
|
14 |
+
*
|
15 |
+
* @since 2.8
|
16 |
+
*
|
17 |
+
* @var self
|
18 |
+
*/
|
19 |
+
public static $instance;
|
20 |
+
|
21 |
+
/**
|
22 |
+
* The plugin slug to use with Wisdom.
|
23 |
+
*
|
24 |
+
* @since 2.8
|
25 |
+
*
|
26 |
+
* @var string
|
27 |
+
*/
|
28 |
+
public $plugin_slug = 'paid-memberships-pro';
|
29 |
+
|
30 |
+
/**
|
31 |
+
* The plugin option to send to Wisdom.
|
32 |
+
*
|
33 |
+
* @since 2.8
|
34 |
+
*
|
35 |
+
* @var string
|
36 |
+
*/
|
37 |
+
public $plugin_option = 'pmpro_wisdom_opt_out';
|
38 |
+
|
39 |
+
/**
|
40 |
+
* The plugin settings pages to include Wisdom notices on.
|
41 |
+
*
|
42 |
+
* @since 2.8
|
43 |
+
*
|
44 |
+
* @var array
|
45 |
+
*/
|
46 |
+
public $plugin_pages = [
|
47 |
+
'pmpro-membershiplevels' => true,
|
48 |
+
'pmpro-discountcodes' => true,
|
49 |
+
'pmpro-pagesettings' => true,
|
50 |
+
'pmpro-paymentsettings' => true,
|
51 |
+
'pmpro-emailsettings' => true,
|
52 |
+
'pmpro-emailtemplates' => true,
|
53 |
+
'pmpro-advancedsettings' => true,
|
54 |
+
];
|
55 |
+
|
56 |
+
/**
|
57 |
+
* The Wisdom Tracker object.
|
58 |
+
*
|
59 |
+
* @since 2.8
|
60 |
+
*
|
61 |
+
* @var PMPro_Wisdom_Tracker
|
62 |
+
*/
|
63 |
+
public $wisdom_tracker;
|
64 |
+
|
65 |
+
/**
|
66 |
+
* Set up and return the class instance.
|
67 |
+
*
|
68 |
+
* @since 2.8
|
69 |
+
*
|
70 |
+
* @return self
|
71 |
+
*/
|
72 |
+
public static function instance() {
|
73 |
+
if ( ! isset( self::$instance ) ) {
|
74 |
+
self::$instance = new self;
|
75 |
+
}
|
76 |
+
|
77 |
+
return self::$instance;
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* Prevent new public instances by having a private constructor.
|
82 |
+
*/
|
83 |
+
private function __construct() {
|
84 |
+
// Nothing to do here.
|
85 |
+
}
|
86 |
+
|
87 |
+
/**
|
88 |
+
* Set up the Wisdom tracker.
|
89 |
+
*
|
90 |
+
* @since 2.8
|
91 |
+
*/
|
92 |
+
public function setup_wisdom() {
|
93 |
+
require_once PMPRO_DIR . '/classes/class-pmpro-wisdom-tracker.php';
|
94 |
+
|
95 |
+
// Sync the options together.
|
96 |
+
add_action( 'add_option_wisdom_allow_tracking', [ $this, 'sync_wisdom_setting_to_plugin' ], 10, 2 );
|
97 |
+
add_action( 'update_option_wisdom_allow_tracking', [ $this, 'sync_wisdom_setting_to_plugin' ], 10, 2 );
|
98 |
+
add_action( 'add_option_' . $this->plugin_option, [ $this, 'sync_plugin_setting_to_wisdom' ], 10, 2 );
|
99 |
+
add_action( 'update_option_' . $this->plugin_option, [ $this, 'sync_plugin_setting_to_wisdom' ], 10, 2 );
|
100 |
+
|
101 |
+
// Additional Wisdom customizations.
|
102 |
+
add_filter( 'wisdom_is_local_' . $this->plugin_slug, [ $this, 'bypass_local_tracking' ] );
|
103 |
+
add_filter( 'wisdom_notice_text_' . $this->plugin_slug, [ $this, 'override_notice' ] );
|
104 |
+
add_filter( 'wisdom_tracker_data_' . $this->plugin_slug, [ $this, 'add_stats' ] );
|
105 |
+
|
106 |
+
// Set up the tracker object.
|
107 |
+
$this->wisdom_tracker = new PMPro_Wisdom_Tracker(
|
108 |
+
PMPRO_BASE_FILE,
|
109 |
+
$this->plugin_slug,
|
110 |
+
'https://asimov.paidmembershipspro.com',
|
111 |
+
[
|
112 |
+
$this->plugin_option,
|
113 |
+
],
|
114 |
+
true,
|
115 |
+
false,
|
116 |
+
1
|
117 |
+
);
|
118 |
+
|
119 |
+
// Adjust tracking hooks.
|
120 |
+
$this->remove_wisdom_notices_from_non_plugin_screens();
|
121 |
+
}
|
122 |
+
|
123 |
+
/**
|
124 |
+
* When the Wisdom setting for tracking is changed, sync the plugin setting to match.
|
125 |
+
*
|
126 |
+
* @since 2.8
|
127 |
+
*
|
128 |
+
* @param array|null $old_value The old value of the option.
|
129 |
+
* @param array $value The new value of the option.
|
130 |
+
*/
|
131 |
+
public function sync_wisdom_setting_to_plugin( $old_value, $value ) {
|
132 |
+
$opt_out = ! empty( $value[ $this->plugin_slug ] ) ? 0 : 1;
|
133 |
+
pmpro_setOption( $this->plugin_option, $opt_out );
|
134 |
+
}
|
135 |
+
|
136 |
+
/**
|
137 |
+
* When the plugin setting for tracking is changed, sync the Wisdom setting to match.
|
138 |
+
*
|
139 |
+
* @since 2.8
|
140 |
+
*
|
141 |
+
* @param array|null $old_value The old value of the option.
|
142 |
+
* @param array $value The new value of the option.
|
143 |
+
*/
|
144 |
+
public function sync_plugin_setting_to_wisdom( $old_value, $value ) {
|
145 |
+
// Only handle opt in when needed.
|
146 |
+
if ( ! isset( $value ) ) {
|
147 |
+
return;
|
148 |
+
}
|
149 |
+
|
150 |
+
// Only update when changing the value.
|
151 |
+
if ( isset( $old_value ) && (int) $old_value === (int) $value ) {
|
152 |
+
return;
|
153 |
+
}
|
154 |
+
|
155 |
+
$opt_out = filter_var( $value, FILTER_VALIDATE_BOOLEAN );
|
156 |
+
|
157 |
+
// Update opt-in.
|
158 |
+
$this->wisdom_tracker->set_is_tracking_allowed( ! $opt_out, $this->plugin_slug );
|
159 |
+
$this->wisdom_tracker->set_can_collect_email( ! $opt_out, $this->plugin_slug );
|
160 |
+
}
|
161 |
+
|
162 |
+
/**
|
163 |
+
* Bypass local tracking for additional local URLs.
|
164 |
+
*
|
165 |
+
* @since 2.8
|
166 |
+
*
|
167 |
+
* @param bool $is_local Whether the site is recognized as a local site.
|
168 |
+
*
|
169 |
+
* @return bool Whether the site is recognized as a local site.
|
170 |
+
*/
|
171 |
+
public function bypass_local_tracking( $is_local = false ) {
|
172 |
+
if ( true === $is_local || 'production' !== wp_get_environment_type() ) {
|
173 |
+
return $is_local;
|
174 |
+
}
|
175 |
+
|
176 |
+
$url = network_site_url( '/' );
|
177 |
+
|
178 |
+
$url = strtolower( trim( $url ) );
|
179 |
+
$url_parts = parse_url( $url );
|
180 |
+
$host = ! empty( $url_parts['host'] ) ? $url_parts['host'] : false;
|
181 |
+
|
182 |
+
if ( empty( $host ) ) {
|
183 |
+
return $is_local;
|
184 |
+
}
|
185 |
+
|
186 |
+
if ( 'localhost' === $host ) {
|
187 |
+
return true;
|
188 |
+
}
|
189 |
+
|
190 |
+
if ( false !== ip2long( $host ) && ! filter_var( $host, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE ) ) {
|
191 |
+
return true;
|
192 |
+
}
|
193 |
+
|
194 |
+
$tlds_to_check = [
|
195 |
+
'.local',
|
196 |
+
'.test',
|
197 |
+
];
|
198 |
+
|
199 |
+
foreach ( $tlds_to_check as $tld ) {
|
200 |
+
$minus_tld = strlen( $host ) - strlen( $tld );
|
201 |
+
|
202 |
+
if ( $minus_tld === strpos( $host, $tld ) ) {
|
203 |
+
return true;
|
204 |
+
}
|
205 |
+
}
|
206 |
+
|
207 |
+
return $is_local;
|
208 |
+
}
|
209 |
+
|
210 |
+
/**
|
211 |
+
* Override the notice for the Wisdom Tracker opt-in.
|
212 |
+
*
|
213 |
+
* @since 2.8
|
214 |
+
*
|
215 |
+
* @return string
|
216 |
+
*/
|
217 |
+
public function override_notice() {
|
218 |
+
$message = esc_html__( 'Share your usage data to help us improve Paid Memberships Pro. We use this data to analyze how our plugin is meeting your needs and identify new opportunities to help you create a thriving membership business. You can always visit the Advanced Settings and change this preference.', 'paid-memberships-pro' );
|
219 |
+
$link = '<a href="https://www.paidmembershipspro.com/privacy-policy/usage-tracking/" target="_blank" rel="nofollow noopener">' . esc_html__( 'Read more about what data we collect.', 'paid-memberships-pro' ) . '</a>';
|
220 |
+
return $message . ' ' . $link;
|
221 |
+
}
|
222 |
+
|
223 |
+
/**
|
224 |
+
* Remove Wisdom notices from non-plugin screens.
|
225 |
+
*
|
226 |
+
* @since 2.8
|
227 |
+
*/
|
228 |
+
public function remove_wisdom_notices_from_non_plugin_screens() {
|
229 |
+
$settings_page = ! empty( $_GET['page'] ) ? sanitize_text_field( $_GET['page'] ) : '';
|
230 |
+
|
231 |
+
// Check if we are on a settings page using isset() which is faster than in_array().
|
232 |
+
if ( isset( $this->plugin_pages[ $settings_page ] ) ) {
|
233 |
+
return;
|
234 |
+
}
|
235 |
+
|
236 |
+
// Remove the notices from the non-plugin settings pages.
|
237 |
+
remove_action( 'admin_notices', [ $this->wisdom_tracker, 'optin_notice' ] );
|
238 |
+
remove_action( 'admin_notices', [ $this->wisdom_tracker, 'marketing_notice' ] );
|
239 |
+
}
|
240 |
+
|
241 |
+
/**
|
242 |
+
* Add custom stats for the plugin to the data being tracked.
|
243 |
+
*
|
244 |
+
* @since 2.8
|
245 |
+
*
|
246 |
+
* @param array $stats The data to be sent to the Wisdom plugin site.
|
247 |
+
*
|
248 |
+
* @return array The data to be sent to the Wisdom plugin site.
|
249 |
+
*/
|
250 |
+
public function add_stats( $stats ) {
|
251 |
+
global $wpdb;
|
252 |
+
|
253 |
+
// License info.
|
254 |
+
$license_check = get_option( 'pmpro_license_check', 'No Value' );
|
255 |
+
|
256 |
+
$license_plan = 'No Value';
|
257 |
+
|
258 |
+
if ( is_array( $license_check ) && isset( $license_check['license'] ) ) {
|
259 |
+
$license_plan = $license_check['license'];
|
260 |
+
}
|
261 |
+
|
262 |
+
$stats['plugin_options_fields']['pmpro_license_key'] = get_option( 'pmpro_license_key', 'No Value' );
|
263 |
+
$stats['plugin_options_fields']['pmpro_license_plan'] = $license_plan;
|
264 |
+
|
265 |
+
// Gateway info.
|
266 |
+
$stats['plugin_options_fields'] = array_merge( $stats['plugin_options_fields'], $this->get_gateway_info() );
|
267 |
+
|
268 |
+
// Levels info.
|
269 |
+
$levels_info = $this->get_levels_info();
|
270 |
+
$stats['plugin_options_fields']['pmpro_level_count'] = $levels_info['pmpro_level_count'];
|
271 |
+
$stats['plugin_options_fields']['pmpro_level_setups'] = $levels_info['pmpro_level_setups'];
|
272 |
+
$stats['plugin_options_fields']['pmpro_has_free_level'] = $levels_info['pmpro_has_free_level'];
|
273 |
+
$stats['plugin_options_fields']['pmpro_has_paid_level'] = $levels_info['pmpro_has_paid_level'];
|
274 |
+
|
275 |
+
// Members info.
|
276 |
+
$stats['plugin_options_fields']['pmpro_members_count'] = pmpro_getSignups( 'all time' );
|
277 |
+
$stats['plugin_options_fields']['pmpro_members_cancelled_count'] = pmpro_getCancellations( 'all time' );
|
278 |
+
|
279 |
+
// Orders info.
|
280 |
+
$stats['plugin_options_fields']['pmpro_orders_count'] = $wpdb->get_var( "SELECT COUNT(*) FROM `{$wpdb->pmpro_membership_orders}`" );
|
281 |
+
|
282 |
+
// Features.
|
283 |
+
$stats['plugin_options_fields']['pmpro_hide_toolbar'] = get_option( 'pmpro_hide_toolbar', 'No Value' );
|
284 |
+
$stats['plugin_options_fields']['pmpro_block_dashboard'] = get_option( 'pmpro_block_dashboard', 'No Value' );
|
285 |
+
$stats['plugin_options_fields']['pmpro_filterqueries'] = get_option( 'pmpro_filterqueries', 'No Value' );
|
286 |
+
$stats['plugin_options_fields']['pmpro_showexcerpts'] = get_option( 'pmpro_showexcerpts', 'No Value' );
|
287 |
+
$stats['plugin_options_fields']['pmpro_spamprotection'] = get_option( 'pmpro_spamprotection', 'No Value' );
|
288 |
+
$stats['plugin_options_fields']['pmpro_recaptcha'] = get_option( 'pmpro_recaptcha', 'No Value' );
|
289 |
+
$stats['plugin_options_fields']['pmpro_maxnotificationpriority'] = get_option( 'pmpro_maxnotificationpriority', 'No Value' );
|
290 |
+
$stats['plugin_options_fields']['pmpro_activity_email_frequency'] = get_option( 'pmpro_activity_email_frequency', 'No Value' );
|
291 |
+
$stats['plugin_options_fields']['pmpro_hideads'] = get_option( 'pmpro_hideads', 'No Value' );
|
292 |
+
$stats['plugin_options_fields']['pmpro_redirecttosubscription'] = get_option( 'pmpro_redirecttosubscription', 'No Value' );
|
293 |
+
$stats['plugin_options_fields']['pmpro_only_filter_pmpro_emails'] = get_option( 'pmpro_only_filter_pmpro_emails', 'No Value' );
|
294 |
+
$stats['plugin_options_fields']['pmpro_email_member_notification'] = get_option( 'pmpro_email_member_notification', 'No Value' );
|
295 |
+
$stats['plugin_options_fields']['pmpro_use_ssl'] = get_option( 'pmpro_pmpro_use_ssl', 'No Value' );
|
296 |
+
$ssl_seal = get_option( 'pmpro_sslseal', '' );
|
297 |
+
if ( ! empty( $ssl_seal ) ) {
|
298 |
+
$stats['plugin_options_fields']['pmpro_sslseal'] = 'Yes';
|
299 |
+
} else {
|
300 |
+
$stats['plugin_options_fields']['pmpro_sslseal'] = 'No';
|
301 |
+
}
|
302 |
+
$stats['plugin_options_fields']['pmpro_nuclear_HTTPS'] = get_option( 'pmpro_nuclear_HTTPS', 'No Value' );
|
303 |
+
|
304 |
+
// Add Ons.
|
305 |
+
$addons_info = $this->get_addons_info();
|
306 |
+
|
307 |
+
$stats['plugin_options_fields']['addons_active'] = $addons_info['addons_active'];
|
308 |
+
$stats['plugin_options_fields']['addons_inactive'] = $addons_info['addons_inactive'];
|
309 |
+
$stats['plugin_options_fields']['addons_update_available'] = $addons_info['addons_update_available'];
|
310 |
+
|
311 |
+
// Flatten the arrays.
|
312 |
+
foreach ( $stats['plugin_options_fields'] as $option => $value ) {
|
313 |
+
if ( is_object( $value ) || is_array( $value ) ) {
|
314 |
+
$value = maybe_serialize( $value );
|
315 |
+
}
|
316 |
+
|
317 |
+
$stats['plugin_options_fields'][ $option ] = $value;
|
318 |
+
}
|
319 |
+
return $stats;
|
320 |
+
}
|
321 |
+
|
322 |
+
/**
|
323 |
+
* Get the gateway information to track.
|
324 |
+
*
|
325 |
+
* @since 2.8
|
326 |
+
*
|
327 |
+
* @return array The gateway information to track.
|
328 |
+
*/
|
329 |
+
public function get_gateway_info() {
|
330 |
+
$stats = [];
|
331 |
+
|
332 |
+
// Gateway info.
|
333 |
+
$stats['pmpro_gateway'] = get_option( 'pmpro_gateway', 'No Value' );
|
334 |
+
$stats['pmpro_gateway_environment'] = get_option( 'pmpro_gateway_environment', 'No Value' );
|
335 |
+
$stats['pmpro_currency'] = get_option( 'pmpro_currency', 'No Value' );
|
336 |
+
|
337 |
+
// Get Stripe gateway info for other stats below.
|
338 |
+
$stripe_using_legacy_keys = PMProGateway_stripe::using_legacy_keys();
|
339 |
+
$stripe_has_connect_credentials = PMProGateway_stripe::has_connect_credentials( 'live' ) || PMProGateway_stripe::has_connect_credentials( 'sandbox' );
|
340 |
+
|
341 |
+
// Append the Stripe gateway qualifiers.
|
342 |
+
if ( 'stripe' === $stats['pmpro_gateway'] ) {
|
343 |
+
// Add Legacy Keys text if using Legacy Keys.
|
344 |
+
if ( $stripe_using_legacy_keys ) {
|
345 |
+
$stats['pmpro_gateway'] .= ' (' . __( 'Legacy Keys', 'paid-memberships-pro' ) . ')';
|
346 |
+
}
|
347 |
+
|
348 |
+
// Add Stripe Connect text if using Stripe Connect.
|
349 |
+
if ( $stripe_has_connect_credentials ) {
|
350 |
+
$stats['pmpro_gateway'] .= ' (' . __( 'Stripe Connect', 'paid-memberships-pro' ) . ')';
|
351 |
+
}
|
352 |
+
|
353 |
+
$stats['pmpro_gateway'] = strtolower( $stats['pmpro_gateway'] );
|
354 |
+
}
|
355 |
+
|
356 |
+
// Detect any gateway settings.
|
357 |
+
$gateway_settings_detected = [
|
358 |
+
'authorizenet' => get_option( 'pmpro_loginname' ),
|
359 |
+
'braintree' => get_option( 'pmpro_braintree_merchantid' ),
|
360 |
+
'cybersource' => get_option( 'pmpro_cybersource_merchantid' ),
|
361 |
+
'payflowpro' => get_option( 'pmpro_payflow_user' ),
|
362 |
+
'paypal' => get_option( 'pmpro_apiusername' ),
|
363 |
+
'paypalexpress' => get_option( 'paypalexpress_skip_confirmation' ),
|
364 |
+
'paypalstandard' => get_option( 'gateway_email' ),
|
365 |
+
'stripe' => $stripe_using_legacy_keys || $stripe_has_connect_credentials,
|
366 |
+
'stripe_sandbox' => get_option( 'sandbox_stripe_connect_user_id' ),
|
367 |
+
'twocheckout' => get_option( 'twocheckout_accountnumber' ),
|
368 |
+
];
|
369 |
+
|
370 |
+
// Remove any gateway settings that are not set or are empty.
|
371 |
+
$gateway_settings_detected = array_map( static function( $value ) {
|
372 |
+
return false !== $value && '' !== $value;
|
373 |
+
}, $gateway_settings_detected );
|
374 |
+
$gateway_settings_detected = array_filter( $gateway_settings_detected );
|
375 |
+
|
376 |
+
// Fill in the gateway count/detected info.
|
377 |
+
$stats['pmpro_gateways_count'] = count( $gateway_settings_detected );
|
378 |
+
$stats['pmpro_gateways_detected'] = implode( ', ', array_keys( $gateway_settings_detected ) );
|
379 |
+
|
380 |
+
return $stats;
|
381 |
+
}
|
382 |
+
|
383 |
+
/**
|
384 |
+
* Get the level information for all levels to track.
|
385 |
+
*
|
386 |
+
* @since 2.8
|
387 |
+
*
|
388 |
+
* @return array The level information for all levels to track.
|
389 |
+
*/
|
390 |
+
public function get_levels_info() {
|
391 |
+
global $wpdb;
|
392 |
+
|
393 |
+
$stats = array(
|
394 |
+
'pmpro_level_setups' => array(),
|
395 |
+
'pmpro_has_free_level' => 'no',
|
396 |
+
'pmpro_has_paid_level' => 'no',
|
397 |
+
'pmpro_level_count' => 0,
|
398 |
+
);
|
399 |
+
|
400 |
+
// Get the levels.
|
401 |
+
$levels = pmpro_getAllLevels( true );
|
402 |
+
|
403 |
+
// Update the level count.
|
404 |
+
$stats['pmpro_level_count'] = count( $levels );
|
405 |
+
|
406 |
+
// Loop through the levels.
|
407 |
+
foreach ( $levels as $level_id => $level_data ) {
|
408 |
+
// Remove sensitive info.
|
409 |
+
unset( $level_data->name );
|
410 |
+
unset( $level_data->description );
|
411 |
+
unset( $level_data->confirmation );
|
412 |
+
|
413 |
+
// Add Set Expiration Date/Subscription Delay info.
|
414 |
+
$level_data->set_expiration_date = get_option( 'pmprosed_' . $level_id , '' );
|
415 |
+
$level_data->subscription_delay = get_option( 'pmpro_subscription_delay_' . $level_id , '' );
|
416 |
+
|
417 |
+
// Add if a category is set.
|
418 |
+
$categories = $wpdb->get_col(
|
419 |
+
$wpdb->prepare(
|
420 |
+
"SELECT category_id
|
421 |
+
FROM $wpdb->pmpro_memberships_categories
|
422 |
+
WHERE membership_id = %d",
|
423 |
+
$level_id
|
424 |
+
)
|
425 |
+
);
|
426 |
+
$level_data->has_categories = ! empty( $categories ) ? 'yes' : 'no';
|
427 |
+
|
428 |
+
// Add level info.
|
429 |
+
$stats['pmpro_level_setups'][ $level_id ] = $level_data;
|
430 |
+
|
431 |
+
// Update whether or not we have a free/paid level yet.
|
432 |
+
if ( pmpro_isLevelFree( $level_data ) ) {
|
433 |
+
$stats['pmpro_has_free_level'] = 'yes';
|
434 |
+
} else {
|
435 |
+
$stats['pmpro_has_paid_level'] = 'yes';
|
436 |
+
}
|
437 |
+
}
|
438 |
+
return $stats;
|
439 |
+
}
|
440 |
+
|
441 |
+
/**
|
442 |
+
* Get the list of Add Ons categorized by active, inactive, and update available.
|
443 |
+
*
|
444 |
+
* @since 2.8
|
445 |
+
*
|
446 |
+
* @return array The list of Add Ons categorized by active, inactive, and update available.
|
447 |
+
*/
|
448 |
+
public function get_addons_info() {
|
449 |
+
// Build the list of Add Ons data to track.
|
450 |
+
$addons = pmpro_getAddons();
|
451 |
+
$plugin_info = get_site_transient( 'update_plugins' );
|
452 |
+
|
453 |
+
// Split Add Ons into groups for filtering
|
454 |
+
$addons_active = [];
|
455 |
+
$addons_inactive = [];
|
456 |
+
$addons_update_available = [];
|
457 |
+
|
458 |
+
// Build array of Visible, Hidden, Active, Inactive, Installed, and Not Installed Add Ons.
|
459 |
+
foreach ( $addons as $addon ) {
|
460 |
+
$plugin_file = $addon['Slug'] . '/' . $addon['Slug'] . '.php';
|
461 |
+
$plugin_file_abs = WP_PLUGIN_DIR . '/' . $plugin_file;
|
462 |
+
|
463 |
+
if ( file_exists( $plugin_file_abs ) ) {
|
464 |
+
$plugin_data = get_plugin_data( $plugin_file_abs );
|
465 |
+
} else {
|
466 |
+
// Plugin is not on the site.
|
467 |
+
continue;
|
468 |
+
}
|
469 |
+
|
470 |
+
// Build Active and Inactive arrays - exclude hidden Add Ons that are not installed.
|
471 |
+
if ( is_plugin_active( $plugin_file ) ) {
|
472 |
+
$addons_active[ $addon['Slug'] ] = $plugin_data['Version'];
|
473 |
+
} else {
|
474 |
+
$addons_inactive[ $addon['Slug'] ] = $plugin_data['Version'];
|
475 |
+
}
|
476 |
+
|
477 |
+
// Build array of Add Ons that have an update available.
|
478 |
+
if ( isset( $plugin_info->response[ $plugin_file ] ) ) {
|
479 |
+
$addons_update_available[ $addon['Slug'] ] = $plugin_data['Version'];
|
480 |
+
}
|
481 |
+
}
|
482 |
+
|
483 |
+
return [
|
484 |
+
'addons_active' => $addons_active,
|
485 |
+
'addons_inactive' => $addons_inactive,
|
486 |
+
'addons_update_available' => $addons_update_available,
|
487 |
+
];
|
488 |
+
}
|
489 |
+
|
490 |
+
}
|
classes/class-pmpro-wisdom-tracker.php
ADDED
@@ -0,0 +1,1107 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Wisdom Tracker class for PMPro.
|
5 |
+
*
|
6 |
+
* Denote any modifications to this file to facilitate easier updates.
|
7 |
+
*
|
8 |
+
* @link https://wisdomplugin.com/
|
9 |
+
*
|
10 |
+
* @since 2.8
|
11 |
+
*/
|
12 |
+
class PMPro_Wisdom_Tracker {
|
13 |
+
|
14 |
+
private $wisdom_version = '1.2.5';
|
15 |
+
private $home_url = '';
|
16 |
+
private $plugin_file = '';
|
17 |
+
private $plugin_name = '';
|
18 |
+
private $options = [];
|
19 |
+
private $require_optin = true;
|
20 |
+
private $include_goodbye_form = true;
|
21 |
+
private $marketing = false;
|
22 |
+
private $collect_email = false;
|
23 |
+
private $what_am_i = 'plugin';
|
24 |
+
private $theme_allows_tracking = 0;
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Class constructor
|
28 |
+
*
|
29 |
+
* @param $_home_url The URL to the site we're sending data to
|
30 |
+
* @param $_plugin_slug The slug for this plugin (PMPRO MODIFICATION).
|
31 |
+
* @param $_plugin_file The file path for this plugin
|
32 |
+
* @param $_options Plugin options to track
|
33 |
+
* @param $_require_optin Whether user opt-in is required (always required on WordPress.org)
|
34 |
+
* @param $_include_goodbye_form Whether to include a form when the user deactivates
|
35 |
+
* @param $_marketing Marketing method:
|
36 |
+
* 0: Don't collect email addresses
|
37 |
+
* 1: Request permission same time as tracking opt-in
|
38 |
+
* 2: Request permission after opt-in
|
39 |
+
*/
|
40 |
+
public function __construct(
|
41 |
+
$_plugin_file, $_plugin_slug, $_home_url, $_options, $_require_optin = true, $_include_goodbye_form = true, $_marketing = false
|
42 |
+
) {
|
43 |
+
$this->plugin_file = $_plugin_file;
|
44 |
+
$this->home_url = trailingslashit( $_home_url );
|
45 |
+
|
46 |
+
// If the filename is 'functions' then we're tracking a theme
|
47 |
+
if ( basename( $this->plugin_file, '.php' ) != 'functions' ) {
|
48 |
+
$this->plugin_name = basename( $this->plugin_file, '.php' );
|
49 |
+
|
50 |
+
// PMPRO MODIFICATION.
|
51 |
+
if ( ! empty( $_plugin_slug ) ) {
|
52 |
+
$this->plugin_name = $_plugin_slug;
|
53 |
+
}
|
54 |
+
} else {
|
55 |
+
$this->what_am_i = 'theme';
|
56 |
+
$theme = wp_get_theme();
|
57 |
+
if ( $theme->Name ) {
|
58 |
+
$this->plugin_name = sanitize_text_field( $theme->Name );
|
59 |
+
}
|
60 |
+
}
|
61 |
+
|
62 |
+
$this->options = $_options;
|
63 |
+
$this->require_optin = $_require_optin;
|
64 |
+
$this->include_goodbye_form = $_include_goodbye_form;
|
65 |
+
$this->marketing = $_marketing;
|
66 |
+
|
67 |
+
// Only use this on switching theme
|
68 |
+
$this->theme_allows_tracking = get_theme_mod( 'wisdom-allow-tracking', 0 );
|
69 |
+
|
70 |
+
// Schedule / deschedule tracking when activated / deactivated
|
71 |
+
if ( $this->what_am_i == 'theme' ) {
|
72 |
+
// Need to think about scheduling for sites that have already activated the theme
|
73 |
+
add_action( 'after_switch_theme', [ $this, 'schedule_tracking' ] );
|
74 |
+
add_action( 'switch_theme', [ $this, 'deactivate_this_plugin' ] );
|
75 |
+
} else {
|
76 |
+
register_activation_hook( $this->plugin_file, [ $this, 'schedule_tracking' ] );
|
77 |
+
register_deactivation_hook( $this->plugin_file, [ $this, 'deactivate_this_plugin' ] );
|
78 |
+
}
|
79 |
+
|
80 |
+
// Get it going
|
81 |
+
$this->init();
|
82 |
+
}
|
83 |
+
|
84 |
+
public function init() {
|
85 |
+
// Check marketing
|
86 |
+
if ( $this->marketing == 3 ) {
|
87 |
+
$this->set_can_collect_email( true, $this->plugin_name );
|
88 |
+
}
|
89 |
+
|
90 |
+
// Check whether opt-in is required
|
91 |
+
// If not, then tracking is allowed
|
92 |
+
if ( ! $this->require_optin ) {
|
93 |
+
$this->set_can_collect_email( true, $this->plugin_name );
|
94 |
+
$this->set_is_tracking_allowed( true );
|
95 |
+
$this->update_block_notice();
|
96 |
+
$this->do_tracking();
|
97 |
+
}
|
98 |
+
|
99 |
+
// Hook our do_tracking function to the weekly action
|
100 |
+
add_filter( 'cron_schedules', [ $this, 'schedule_weekly_event' ] );
|
101 |
+
// It's called weekly, but in fact it could be daily, weekly or monthly
|
102 |
+
add_action( 'put_do_weekly_action', [ $this, 'do_tracking' ] );
|
103 |
+
|
104 |
+
// Use this action for local testing
|
105 |
+
// add_action( 'admin_init', array( $this, 'do_tracking' ) );
|
106 |
+
|
107 |
+
// Display the admin notice on activation
|
108 |
+
add_action( 'admin_init', [ $this, 'set_notification_time' ] );
|
109 |
+
add_action( 'admin_notices', [ $this, 'optin_notice' ] );
|
110 |
+
add_action( 'admin_notices', [ $this, 'marketing_notice' ] );
|
111 |
+
|
112 |
+
// Deactivation
|
113 |
+
add_filter( 'plugin_action_links_' . plugin_basename( $this->plugin_file ), [ $this, 'filter_action_links' ] );
|
114 |
+
add_action( 'admin_footer-plugins.php', [ $this, 'goodbye_ajax' ] );
|
115 |
+
add_action( 'wp_ajax_goodbye_form', [ $this, 'goodbye_form_callback' ] );
|
116 |
+
}
|
117 |
+
|
118 |
+
/**
|
119 |
+
* When the plugin is activated
|
120 |
+
* Create scheduled event
|
121 |
+
* And check if tracking is enabled - perhaps the plugin has been reactivated
|
122 |
+
*
|
123 |
+
* @since 1.0.0
|
124 |
+
*/
|
125 |
+
public function schedule_tracking() {
|
126 |
+
if ( ! wp_next_scheduled( 'put_do_weekly_action' ) ) {
|
127 |
+
$schedule = $this->get_schedule();
|
128 |
+
wp_schedule_event( time(), $schedule, 'put_do_weekly_action' );
|
129 |
+
}
|
130 |
+
$this->do_tracking( true );
|
131 |
+
}
|
132 |
+
|
133 |
+
/**
|
134 |
+
* Create weekly schedule
|
135 |
+
*
|
136 |
+
* @since 1.2.3
|
137 |
+
*/
|
138 |
+
public function schedule_weekly_event( $schedules ) {
|
139 |
+
$schedules['weekly'] = [
|
140 |
+
'interval' => 604800,
|
141 |
+
'display' => __( 'Once Weekly' ),
|
142 |
+
];
|
143 |
+
$schedules['monthly'] = [
|
144 |
+
'interval' => 2635200,
|
145 |
+
'display' => __( 'Once Monthly' ),
|
146 |
+
];
|
147 |
+
|
148 |
+
return $schedules;
|
149 |
+
}
|
150 |
+
|
151 |
+
/**
|
152 |
+
* Get how frequently data is tracked back
|
153 |
+
*
|
154 |
+
* @since 1.2.3
|
155 |
+
*/
|
156 |
+
public function get_schedule() {
|
157 |
+
// Could be daily, weekly or monthly
|
158 |
+
$schedule = apply_filters( 'wisdom_filter_schedule_' . $this->plugin_name, 'monthly' );
|
159 |
+
|
160 |
+
return $schedule;
|
161 |
+
}
|
162 |
+
|
163 |
+
/**
|
164 |
+
* This is our function to get everything going
|
165 |
+
* Check that user has opted in
|
166 |
+
* Collect data
|
167 |
+
* Then send it back
|
168 |
+
*
|
169 |
+
* @since 1.0.0
|
170 |
+
*
|
171 |
+
* @param $force Force tracking if it's not time
|
172 |
+
*/
|
173 |
+
public function do_tracking( $force = false ) {
|
174 |
+
// If the home site hasn't been defined, we just drop out. Nothing much we can do.
|
175 |
+
if ( ! $this->home_url ) {
|
176 |
+
return;
|
177 |
+
}
|
178 |
+
|
179 |
+
// Check to see if the user has opted in to tracking
|
180 |
+
$allow_tracking = $this->get_is_tracking_allowed();
|
181 |
+
if ( ! $allow_tracking ) {
|
182 |
+
return;
|
183 |
+
}
|
184 |
+
|
185 |
+
// Check to see if it's time to track
|
186 |
+
$track_time = $this->get_is_time_to_track();
|
187 |
+
if ( ! $track_time && ! $force ) {
|
188 |
+
return;
|
189 |
+
}
|
190 |
+
|
191 |
+
$this->set_admin_email();
|
192 |
+
|
193 |
+
// Get our data
|
194 |
+
$body = $this->get_data();
|
195 |
+
|
196 |
+
// Send the data
|
197 |
+
$this->send_data( $body );
|
198 |
+
}
|
199 |
+
|
200 |
+
/**
|
201 |
+
* We hook this to admin_init when the user accepts tracking
|
202 |
+
* Ensures the email address is available
|
203 |
+
*
|
204 |
+
* @since 1.2.1
|
205 |
+
*/
|
206 |
+
public function force_tracking() {
|
207 |
+
$this->do_tracking( true ); // Run this straightaway
|
208 |
+
}
|
209 |
+
|
210 |
+
/**
|
211 |
+
* Send the data to the home site
|
212 |
+
*
|
213 |
+
* @since 1.0.0
|
214 |
+
*/
|
215 |
+
public function send_data( $body ) {
|
216 |
+
$request = wp_remote_post( esc_url( $this->home_url . '?usage_tracker=hello' ), [
|
217 |
+
'method' => 'POST',
|
218 |
+
'timeout' => 20,
|
219 |
+
'redirection' => 5,
|
220 |
+
'httpversion' => '1.1',
|
221 |
+
'blocking' => true,
|
222 |
+
'body' => $body,
|
223 |
+
'user-agent' => 'PUT/1.0.0; ' . home_url(),
|
224 |
+
] );
|
225 |
+
|
226 |
+
$this->set_track_time();
|
227 |
+
|
228 |
+
if ( is_wp_error( $request ) ) {
|
229 |
+
return $request;
|
230 |
+
}
|
231 |
+
}
|
232 |
+
|
233 |
+
/**
|
234 |
+
* Here we collect most of the data
|
235 |
+
*
|
236 |
+
* @since 1.0.0
|
237 |
+
*/
|
238 |
+
public function get_data() {
|
239 |
+
// Use this to pass error messages back if necessary
|
240 |
+
$body['message'] = '';
|
241 |
+
|
242 |
+
// Use this array to send data back
|
243 |
+
$body = [
|
244 |
+
'plugin_slug' => sanitize_text_field( $this->plugin_name ),
|
245 |
+
'url' => home_url(),
|
246 |
+
'site_name' => get_bloginfo( 'name' ),
|
247 |
+
'site_version' => get_bloginfo( 'version' ),
|
248 |
+
'site_language' => get_bloginfo( 'language' ),
|
249 |
+
'charset' => get_bloginfo( 'charset' ),
|
250 |
+
'wisdom_version' => $this->wisdom_version,
|
251 |
+
'php_version' => phpversion(),
|
252 |
+
'multisite' => is_multisite(),
|
253 |
+
'file_location' => __FILE__,
|
254 |
+
'product_type' => esc_html( $this->what_am_i ),
|
255 |
+
];
|
256 |
+
|
257 |
+
// Collect the email if the correct option has been set
|
258 |
+
if ( $this->get_can_collect_email() ) {
|
259 |
+
$body['email'] = $this->get_admin_email();
|
260 |
+
}
|
261 |
+
$body['marketing_method'] = $this->marketing;
|
262 |
+
|
263 |
+
$body['server'] = isset( $_SERVER['SERVER_SOFTWARE'] ) ? $_SERVER['SERVER_SOFTWARE'] : '';
|
264 |
+
|
265 |
+
// Extra PHP fields
|
266 |
+
$body['memory_limit'] = ini_get( 'memory_limit' );
|
267 |
+
$body['upload_max_size'] = ini_get( 'upload_max_size' );
|
268 |
+
$body['post_max_size'] = ini_get( 'post_max_size' );
|
269 |
+
$body['upload_max_filesize'] = ini_get( 'upload_max_filesize' );
|
270 |
+
$body['max_execution_time'] = ini_get( 'max_execution_time' );
|
271 |
+
$body['max_input_time'] = ini_get( 'max_input_time' );
|
272 |
+
|
273 |
+
// Retrieve current plugin information
|
274 |
+
if ( ! function_exists( 'get_plugins' ) ) {
|
275 |
+
include ABSPATH . '/wp-admin/includes/plugin.php';
|
276 |
+
}
|
277 |
+
|
278 |
+
$plugins = array_keys( get_plugins() );
|
279 |
+
$active_plugins = get_option( 'active_plugins', [] );
|
280 |
+
|
281 |
+
foreach ( $plugins as $key => $plugin ) {
|
282 |
+
if ( in_array( $plugin, $active_plugins, true ) ) {
|
283 |
+
// Remove active plugins from list so we can show active and inactive separately
|
284 |
+
unset( $plugins[ $key ] );
|
285 |
+
}
|
286 |
+
}
|
287 |
+
|
288 |
+
$body['active_plugins'] = $active_plugins;
|
289 |
+
$body['inactive_plugins'] = $plugins;
|
290 |
+
|
291 |
+
// Check text direction
|
292 |
+
$body['text_direction'] = 'LTR';
|
293 |
+
if ( function_exists( 'is_rtl' ) ) {
|
294 |
+
if ( is_rtl() ) {
|
295 |
+
$body['text_direction'] = 'RTL';
|
296 |
+
}
|
297 |
+
} else {
|
298 |
+
$body['text_direction'] = 'not set';
|
299 |
+
}
|
300 |
+
|
301 |
+
/**
|
302 |
+
* Get our plugin data
|
303 |
+
* Currently we grab plugin name and version
|
304 |
+
* Or, return a message if the plugin data is not available
|
305 |
+
*
|
306 |
+
* @since 1.0.0
|
307 |
+
*/
|
308 |
+
$plugin = $this->plugin_data();
|
309 |
+
$body['status'] = 'Active'; // Never translated
|
310 |
+
if ( empty( $plugin ) ) {
|
311 |
+
// We can't find the plugin data
|
312 |
+
// Send a message back to our home site
|
313 |
+
$body['message'] .= __( 'We can\'t detect any product information. This is most probably because you have not included the code snippet.', 'paid-memberships-pro' );
|
314 |
+
$body['status'] = 'Data not found'; // Never translated
|
315 |
+
} else {
|
316 |
+
if ( isset( $plugin['Name'] ) ) {
|
317 |
+
$body['plugin'] = sanitize_text_field( $plugin['Name'] );
|
318 |
+
}
|
319 |
+
if ( isset( $plugin['Version'] ) ) {
|
320 |
+
$body['version'] = sanitize_text_field( $plugin['Version'] );
|
321 |
+
}
|
322 |
+
}
|
323 |
+
|
324 |
+
/**
|
325 |
+
* Get our plugin options
|
326 |
+
*
|
327 |
+
* @since 1.0.0
|
328 |
+
*/
|
329 |
+
$options = $this->options;
|
330 |
+
$plugin_options = [];
|
331 |
+
if ( ! empty( $options ) && is_array( $options ) ) {
|
332 |
+
foreach ( $options as $option ) {
|
333 |
+
$fields = get_option( $option );
|
334 |
+
// Check for permission to send this option
|
335 |
+
if ( isset( $fields['wisdom_registered_setting'] ) ) {
|
336 |
+
foreach ( $fields as $key => $value ) {
|
337 |
+
$plugin_options[ $key ] = $value;
|
338 |
+
}
|
339 |
+
}
|
340 |
+
}
|
341 |
+
}
|
342 |
+
$body['plugin_options'] = $this->options; // Returns array
|
343 |
+
$body['plugin_options_fields'] = $plugin_options; // Returns object
|
344 |
+
|
345 |
+
/**
|
346 |
+
* Get our theme data
|
347 |
+
* Currently we grab theme name and version
|
348 |
+
*
|
349 |
+
* @since 1.0.0
|
350 |
+
*/
|
351 |
+
$theme = wp_get_theme();
|
352 |
+
if ( $theme->Name ) {
|
353 |
+
$body['theme'] = sanitize_text_field( $theme->Name );
|
354 |
+
}
|
355 |
+
if ( $theme->Version ) {
|
356 |
+
$body['theme_version'] = sanitize_text_field( $theme->Version );
|
357 |
+
}
|
358 |
+
if ( $theme->Template ) {
|
359 |
+
$body['theme_parent'] = sanitize_text_field( $theme->Template );
|
360 |
+
}
|
361 |
+
|
362 |
+
// PMPRO MODIFICATION.
|
363 |
+
/**
|
364 |
+
* Allow filtering the data to be sent to the Wisdom plugin site.
|
365 |
+
*
|
366 |
+
* @since 2.8
|
367 |
+
*
|
368 |
+
* @param array $body The data to be sent to the Wisdom plugin site.
|
369 |
+
*/
|
370 |
+
$body = apply_filters( "wisdom_tracker_data_{$this->plugin_name}", $body );
|
371 |
+
|
372 |
+
// Return the data
|
373 |
+
return $body;
|
374 |
+
}
|
375 |
+
|
376 |
+
/**
|
377 |
+
* Return plugin data
|
378 |
+
*
|
379 |
+
* @since 1.0.0
|
380 |
+
*/
|
381 |
+
public function plugin_data() {
|
382 |
+
// Being cautious here
|
383 |
+
if ( ! function_exists( 'get_plugin_data' ) ) {
|
384 |
+
include ABSPATH . '/wp-admin/includes/plugin.php';
|
385 |
+
}
|
386 |
+
// Retrieve current plugin information
|
387 |
+
$plugin = get_plugin_data( $this->plugin_file );
|
388 |
+
|
389 |
+
return $plugin;
|
390 |
+
}
|
391 |
+
|
392 |
+
/**
|
393 |
+
* Deactivating plugin
|
394 |
+
*
|
395 |
+
* @since 1.0.0
|
396 |
+
*/
|
397 |
+
public function deactivate_this_plugin() {
|
398 |
+
// Check to see if the user has opted in to tracking
|
399 |
+
if ( $this->what_am_i == 'theme' ) {
|
400 |
+
$allow_tracking = $this->theme_allows_tracking;
|
401 |
+
} else {
|
402 |
+
$allow_tracking = $this->get_is_tracking_allowed();
|
403 |
+
}
|
404 |
+
|
405 |
+
if ( ! $allow_tracking ) {
|
406 |
+
return;
|
407 |
+
}
|
408 |
+
|
409 |
+
$body = $this->get_data();
|
410 |
+
$body['status'] = 'Deactivated'; // Never translated
|
411 |
+
$body['deactivated_date'] = time();
|
412 |
+
|
413 |
+
// Add deactivation form data
|
414 |
+
if ( false !== get_option( 'wisdom_deactivation_reason_' . $this->plugin_name ) ) {
|
415 |
+
$body['deactivation_reason'] = get_option( 'wisdom_deactivation_reason_' . $this->plugin_name );
|
416 |
+
}
|
417 |
+
if ( false !== get_option( 'wisdom_deactivation_details_' . $this->plugin_name ) ) {
|
418 |
+
$body['deactivation_details'] = get_option( 'wisdom_deactivation_details_' . $this->plugin_name );
|
419 |
+
}
|
420 |
+
|
421 |
+
$this->send_data( $body );
|
422 |
+
// Clear scheduled update
|
423 |
+
wp_clear_scheduled_hook( 'put_do_weekly_action' );
|
424 |
+
|
425 |
+
// Clear the wisdom_last_track_time value for this plugin
|
426 |
+
// @since 1.2.2
|
427 |
+
$track_time = get_option( 'wisdom_last_track_time' );
|
428 |
+
if ( isset( $track_time[ $this->plugin_name ] ) ) {
|
429 |
+
unset( $track_time[ $this->plugin_name ] );
|
430 |
+
}
|
431 |
+
update_option( 'wisdom_last_track_time', $track_time );
|
432 |
+
}
|
433 |
+
|
434 |
+
/**
|
435 |
+
* Is tracking allowed?
|
436 |
+
*
|
437 |
+
* @since 1.0.0
|
438 |
+
*/
|
439 |
+
public function get_is_tracking_allowed() {
|
440 |
+
// First, check if the user has changed their mind and opted out of tracking
|
441 |
+
if ( $this->has_user_opted_out() ) {
|
442 |
+
$this->set_is_tracking_allowed( false, $this->plugin_name );
|
443 |
+
|
444 |
+
// PMPRO MODIFICATION.
|
445 |
+
$this->set_can_collect_email( false, $this->plugin_name );
|
446 |
+
|
447 |
+
return false;
|
448 |
+
}
|
449 |
+
|
450 |
+
if ( $this->what_am_i == 'theme' ) {
|
451 |
+
$mod = get_theme_mod( 'wisdom-allow-tracking', 0 );
|
452 |
+
if ( $mod ) {
|
453 |
+
return true;
|
454 |
+
}
|
455 |
+
} else {
|
456 |
+
// The wisdom_allow_tracking option is an array of plugins that are being tracked
|
457 |
+
$allow_tracking = get_option( 'wisdom_allow_tracking' );
|
458 |
+
// If this plugin is in the array, then tracking is allowed
|
459 |
+
if ( isset( $allow_tracking[ $this->plugin_name ] ) ) {
|
460 |
+
return true;
|
461 |
+
}
|
462 |
+
}
|
463 |
+
|
464 |
+
return false;
|
465 |
+
}
|
466 |
+
|
467 |
+
/**
|
468 |
+
* Set if tracking is allowed
|
469 |
+
* Option is an array of all plugins with tracking permitted
|
470 |
+
* More than one plugin may be using the tracker
|
471 |
+
*
|
472 |
+
* @since 1.0.0
|
473 |
+
*
|
474 |
+
* @param $is_allowed Boolean true if tracking is allowed, false if not
|
475 |
+
*/
|
476 |
+
public function set_is_tracking_allowed( $is_allowed, $plugin = null ) {
|
477 |
+
if ( empty( $plugin ) ) {
|
478 |
+
$plugin = $this->plugin_name;
|
479 |
+
}
|
480 |
+
|
481 |
+
// The wisdom_allow_tracking option is an array of plugins that are being tracked
|
482 |
+
$allow_tracking = get_option( 'wisdom_allow_tracking' );
|
483 |
+
|
484 |
+
// If the user has decided to opt out
|
485 |
+
if ( $this->has_user_opted_out() ) {
|
486 |
+
if ( $this->what_am_i == 'theme' ) {
|
487 |
+
set_theme_mod( 'wisdom-allow-tracking', 0 );
|
488 |
+
} else {
|
489 |
+
if ( isset( $allow_tracking[ $plugin ] ) ) {
|
490 |
+
unset( $allow_tracking[ $plugin ] );
|
491 |
+
}
|
492 |
+
}
|
493 |
+
} elseif ( $is_allowed || ! $this->require_optin ) {
|
494 |
+
// If the user has agreed to allow tracking or if opt-in is not required
|
495 |
+
|
496 |
+
if ( $this->what_am_i == 'theme' ) {
|
497 |
+
set_theme_mod( 'wisdom-allow-tracking', 1 );
|
498 |
+
} else {
|
499 |
+
if ( empty( $allow_tracking ) || ! is_array( $allow_tracking ) ) {
|
500 |
+
// If nothing exists in the option yet, start a new array with the plugin name
|
501 |
+
$allow_tracking = [ $plugin => $plugin ];
|
502 |
+
} else {
|
503 |
+
// Else add the plugin name to the array
|
504 |
+
$allow_tracking[ $plugin ] = $plugin;
|
505 |
+
}
|
506 |
+
}
|
507 |
+
} else {
|
508 |
+
if ( $this->what_am_i == 'theme' ) {
|
509 |
+
set_theme_mod( 'wisdom-allow-tracking', 0 );
|
510 |
+
} else {
|
511 |
+
if ( isset( $allow_tracking[ $plugin ] ) ) {
|
512 |
+
unset( $allow_tracking[ $plugin ] );
|
513 |
+
}
|
514 |
+
}
|
515 |
+
}
|
516 |
+
|
517 |
+
update_option( 'wisdom_allow_tracking', $allow_tracking );
|
518 |
+
}
|
519 |
+
|
520 |
+
/**
|
521 |
+
* Has the user opted out of allowing tracking?
|
522 |
+
* Note that themes are opt in / plugins are opt out
|
523 |
+
*
|
524 |
+
* @since 1.1.0
|
525 |
+
* @return Boolean
|
526 |
+
*/
|
527 |
+
public function has_user_opted_out() {
|
528 |
+
// Different opt-out methods for plugins and themes
|
529 |
+
if ( $this->what_am_i == 'theme' ) {
|
530 |
+
// Look for the theme mod
|
531 |
+
$mod = get_theme_mod( 'wisdom-allow-tracking', 0 );
|
532 |
+
if ( false === $mod ) {
|
533 |
+
// If the theme mod is not set, then return true - the user has opted out
|
534 |
+
return true;
|
535 |
+
}
|
536 |
+
} else {
|
537 |
+
// Iterate through the options that are being tracked looking for wisdom_opt_out setting
|
538 |
+
if ( ! empty( $this->options ) ) {
|
539 |
+
foreach ( $this->options as $option_name ) {
|
540 |
+
// Check each option
|
541 |
+
$options = get_option( $option_name );
|
542 |
+
// If we find the setting, return true
|
543 |
+
if ( ! empty( $options['wisdom_opt_out'] ) ) {
|
544 |
+
return true;
|
545 |
+
}
|
546 |
+
}
|
547 |
+
}
|
548 |
+
}
|
549 |
+
|
550 |
+
return false;
|
551 |
+
}
|
552 |
+
|
553 |
+
/**
|
554 |
+
* Check if it's time to track
|
555 |
+
*
|
556 |
+
* @since 1.1.1
|
557 |
+
*/
|
558 |
+
public function get_is_time_to_track() {
|
559 |
+
// Let's see if we're due to track this plugin yet
|
560 |
+
$track_times = get_option( 'wisdom_last_track_time', [] );
|
561 |
+
if ( ! isset( $track_times[ $this->plugin_name ] ) ) {
|
562 |
+
// If we haven't set a time for this plugin yet, then we must track it
|
563 |
+
return true;
|
564 |
+
} else {
|
565 |
+
// If the time is set, let's get our schedule and check if it's time to track
|
566 |
+
$schedule = $this->get_schedule();
|
567 |
+
if ( $schedule == 'daily' ) {
|
568 |
+
$period = 'day';
|
569 |
+
} elseif ( $schedule == 'weekly' ) {
|
570 |
+
$period = 'week';
|
571 |
+
} else {
|
572 |
+
$period = 'month';
|
573 |
+
}
|
574 |
+
if ( $track_times[ $this->plugin_name ] < strtotime( '-1 ' . $period ) ) {
|
575 |
+
return true;
|
576 |
+
}
|
577 |
+
}
|
578 |
+
|
579 |
+
return false;
|
580 |
+
}
|
581 |
+
|
582 |
+
/**
|
583 |
+
* Record the time we send tracking data
|
584 |
+
*
|
585 |
+
* @since 1.1.1
|
586 |
+
*/
|
587 |
+
public function set_track_time() {
|
588 |
+
// We've tracked, so record the time
|
589 |
+
$track_times = get_option( 'wisdom_last_track_time', [] );
|
590 |
+
// Set different times according to plugin, in case we are tracking multiple plugins
|
591 |
+
$track_times[ $this->plugin_name ] = time();
|
592 |
+
update_option( 'wisdom_last_track_time', $track_times );
|
593 |
+
}
|
594 |
+
|
595 |
+
/**
|
596 |
+
* Set the time when we can display the opt-in notification
|
597 |
+
* Will display now unless filtered
|
598 |
+
*
|
599 |
+
* @since 1.2.4
|
600 |
+
*/
|
601 |
+
public function set_notification_time() {
|
602 |
+
$notification_times = get_option( 'wisdom_notification_times', [] );
|
603 |
+
// Set different times according to plugin, in case we are tracking multiple plugins
|
604 |
+
if ( ! isset( $notification_times[ $this->plugin_name ] ) ) {
|
605 |
+
$delay_notification = apply_filters( 'wisdom_delay_notification_' . $this->plugin_name, 0 );
|
606 |
+
// We can delay the notification time
|
607 |
+
$notification_time = time() + absint( $delay_notification );
|
608 |
+
$notification_times[ $this->plugin_name ] = $notification_time;
|
609 |
+
update_option( 'wisdom_notification_times', $notification_times );
|
610 |
+
}
|
611 |
+
}
|
612 |
+
|
613 |
+
/**
|
614 |
+
* Get whether it's time to display the notification
|
615 |
+
*
|
616 |
+
* @since 1.2.4
|
617 |
+
* @return Boolean
|
618 |
+
*/
|
619 |
+
public function get_is_notification_time() {
|
620 |
+
$notification_times = get_option( 'wisdom_notification_times', [] );
|
621 |
+
$time = time();
|
622 |
+
// Set different times according to plugin, in case we are tracking multiple plugins
|
623 |
+
if ( isset( $notification_times[ $this->plugin_name ] ) ) {
|
624 |
+
$notification_time = $notification_times[ $this->plugin_name ];
|
625 |
+
if ( $time >= $notification_time ) {
|
626 |
+
return true;
|
627 |
+
}
|
628 |
+
}
|
629 |
+
|
630 |
+
return false;
|
631 |
+
}
|
632 |
+
|
633 |
+
/**
|
634 |
+
* Set if we should block the opt-in notice for this plugin
|
635 |
+
* Option is an array of all plugins that have received a response from the user
|
636 |
+
*
|
637 |
+
* @since 1.0.0
|
638 |
+
*/
|
639 |
+
public function update_block_notice( $plugin = null ) {
|
640 |
+
if ( empty( $plugin ) ) {
|
641 |
+
$plugin = $this->plugin_name;
|
642 |
+
}
|
643 |
+
$block_notice = get_option( 'wisdom_block_notice' );
|
644 |
+
if ( empty( $block_notice ) || ! is_array( $block_notice ) ) {
|
645 |
+
// If nothing exists in the option yet, start a new array with the plugin name
|
646 |
+
$block_notice = [ $plugin => $plugin ];
|
647 |
+
} else {
|
648 |
+
// Else add the plugin name to the array
|
649 |
+
$block_notice[ $plugin ] = $plugin;
|
650 |
+
}
|
651 |
+
update_option( 'wisdom_block_notice', $block_notice );
|
652 |
+
}
|
653 |
+
|
654 |
+
/**
|
655 |
+
* Can we collect the email address?
|
656 |
+
*
|
657 |
+
* @since 1.0.0
|
658 |
+
*/
|
659 |
+
public function get_can_collect_email() {
|
660 |
+
// The wisdom_collect_email option is an array of plugins that are being tracked
|
661 |
+
$collect_email = get_option( 'wisdom_collect_email' );
|
662 |
+
// If this plugin is in the array, then we can collect the email address
|
663 |
+
if ( isset( $collect_email[ $this->plugin_name ] ) ) {
|
664 |
+
return true;
|
665 |
+
}
|
666 |
+
|
667 |
+
return false;
|
668 |
+
}
|
669 |
+
|
670 |
+
/**
|
671 |
+
* Set if user has allowed us to collect their email address
|
672 |
+
* Option is an array of all plugins with email collection permitted
|
673 |
+
* More than one plugin may be using the tracker
|
674 |
+
*
|
675 |
+
* @since 1.0.0
|
676 |
+
*
|
677 |
+
* @param $can_collect Boolean true if collection is allowed, false if not
|
678 |
+
*/
|
679 |
+
public function set_can_collect_email( $can_collect, $plugin = null ) {
|
680 |
+
if ( empty( $plugin ) ) {
|
681 |
+
$plugin = $this->plugin_name;
|
682 |
+
}
|
683 |
+
// The wisdom_collect_email option is an array of plugins that are being tracked
|
684 |
+
$collect_email = get_option( 'wisdom_collect_email' );
|
685 |
+
// If the user has agreed to allow tracking or if opt-in is not required
|
686 |
+
if ( $can_collect ) {
|
687 |
+
if ( empty( $collect_email ) || ! is_array( $collect_email ) ) {
|
688 |
+
// If nothing exists in the option yet, start a new array with the plugin name
|
689 |
+
$collect_email = [ $plugin => $plugin ];
|
690 |
+
} else {
|
691 |
+
// Else add the plugin name to the array
|
692 |
+
$collect_email[ $plugin ] = $plugin;
|
693 |
+
}
|
694 |
+
} else {
|
695 |
+
if ( isset( $collect_email[ $plugin ] ) ) {
|
696 |
+
unset( $collect_email[ $plugin ] );
|
697 |
+
}
|
698 |
+
}
|
699 |
+
update_option( 'wisdom_collect_email', $collect_email );
|
700 |
+
}
|
701 |
+
|
702 |
+
/**
|
703 |
+
* Get the correct email address to use
|
704 |
+
*
|
705 |
+
* @since 1.1.2
|
706 |
+
* @return Email address
|
707 |
+
*/
|
708 |
+
public function get_admin_email() {
|
709 |
+
// The wisdom_collect_email option is an array of plugins that are being tracked
|
710 |
+
$email = get_option( 'wisdom_admin_emails' );
|
711 |
+
// If this plugin is in the array, then we can collect the email address
|
712 |
+
if ( isset( $email[ $this->plugin_name ] ) ) {
|
713 |
+
return $email[ $this->plugin_name ];
|
714 |
+
}
|
715 |
+
|
716 |
+
return false;
|
717 |
+
}
|
718 |
+
|
719 |
+
/**
|
720 |
+
* Set the correct email address to use
|
721 |
+
* There might be more than one admin on the site
|
722 |
+
* So we only use the first admin's email address
|
723 |
+
*
|
724 |
+
* @since 1.1.2
|
725 |
+
*
|
726 |
+
* @param $plugin Plugin name to set email address for
|
727 |
+
* @param $email Email address to set
|
728 |
+
*/
|
729 |
+
public function set_admin_email( $email = null, $plugin = null ) {
|
730 |
+
if ( empty( $plugin ) ) {
|
731 |
+
$plugin = $this->plugin_name;
|
732 |
+
}
|
733 |
+
// If no email address passed, try to get the current user's email
|
734 |
+
if ( empty( $email ) ) {
|
735 |
+
// Have to check that current user object is available
|
736 |
+
if ( function_exists( 'wp_get_current_user' ) ) {
|
737 |
+
$current_user = wp_get_current_user();
|
738 |
+
$email = $current_user->user_email;
|
739 |
+
}
|
740 |
+
}
|
741 |
+
// The wisdom_admin_emails option is an array of admin email addresses
|
742 |
+
$admin_emails = get_option( 'wisdom_admin_emails' );
|
743 |
+
if ( empty( $admin_emails ) || ! is_array( $admin_emails ) ) {
|
744 |
+
// If nothing exists in the option yet, start a new array with the plugin name
|
745 |
+
$admin_emails = [ $plugin => sanitize_email( $email ) ];
|
746 |
+
} elseif ( empty( $admin_emails[ $plugin ] ) ) {
|
747 |
+
// Else add the email address to the array, if not already set
|
748 |
+
$admin_emails[ $plugin ] = sanitize_email( $email );
|
749 |
+
}
|
750 |
+
update_option( 'wisdom_admin_emails', $admin_emails );
|
751 |
+
}
|
752 |
+
|
753 |
+
/**
|
754 |
+
* Display the admin notice to users to allow them to opt in
|
755 |
+
*
|
756 |
+
* @since 1.0.0
|
757 |
+
*/
|
758 |
+
public function optin_notice() {
|
759 |
+
// Check for plugin args
|
760 |
+
if ( isset( $_GET['plugin'] ) && isset( $_GET['plugin_action'] ) ) {
|
761 |
+
$plugin = sanitize_text_field( $_GET['plugin'] );
|
762 |
+
$action = sanitize_text_field( $_GET['plugin_action'] );
|
763 |
+
if ( $action == 'yes' ) {
|
764 |
+
$this->set_is_tracking_allowed( true, $plugin );
|
765 |
+
// Run this straightaway
|
766 |
+
add_action( 'admin_init', [ $this, 'force_tracking' ] );
|
767 |
+
} else {
|
768 |
+
$this->set_is_tracking_allowed( false, $plugin );
|
769 |
+
}
|
770 |
+
$this->update_block_notice( $plugin );
|
771 |
+
}
|
772 |
+
|
773 |
+
// Is it time to display the notification?
|
774 |
+
$is_time = $this->get_is_notification_time();
|
775 |
+
if ( ! $is_time ) {
|
776 |
+
return false;
|
777 |
+
}
|
778 |
+
|
779 |
+
// Check whether to block the notice, e.g. because we're in a local environment
|
780 |
+
// wisdom_block_notice works the same as wisdom_allow_tracking, an array of plugin names
|
781 |
+
$block_notice = get_option( 'wisdom_block_notice' );
|
782 |
+
|
783 |
+
if ( isset( $block_notice[ $this->plugin_name ] ) ) {
|
784 |
+
return;
|
785 |
+
}
|
786 |
+
|
787 |
+
if ( ! current_user_can( 'manage_options' ) ) {
|
788 |
+
return;
|
789 |
+
}
|
790 |
+
|
791 |
+
// @credit EDD
|
792 |
+
// Don't bother asking user to opt in if they're in local dev
|
793 |
+
$is_local = false;
|
794 |
+
if ( stristr( network_site_url( '/' ), '.dev' ) !== false || stristr( network_site_url( '/' ), 'localhost' ) !== false || stristr( network_site_url( '/' ), ':8888' ) !== false ) {
|
795 |
+
$is_local = true;
|
796 |
+
}
|
797 |
+
|
798 |
+
// PMPRO MODIFICATION
|
799 |
+
if ( ! $is_local && stristr( network_site_url( '/' ), '.local' ) !== false ) {
|
800 |
+
//$is_local = true;
|
801 |
+
}
|
802 |
+
|
803 |
+
$is_local = apply_filters( 'wisdom_is_local_' . $this->plugin_name, $is_local );
|
804 |
+
if ( $is_local ) {
|
805 |
+
$this->update_block_notice();
|
806 |
+
|
807 |
+
// PMPRO MODIFICATION.
|
808 |
+
if ( $this->marketing ) {
|
809 |
+
$this->set_can_collect_email( false );
|
810 |
+
}
|
811 |
+
} else {
|
812 |
+
// Display the notice requesting permission to track
|
813 |
+
// Retrieve current plugin information
|
814 |
+
$plugin = $this->plugin_data();
|
815 |
+
$plugin_name = $plugin['Name'];
|
816 |
+
|
817 |
+
// Args to add to query if user opts in to tracking
|
818 |
+
$yes_args = [
|
819 |
+
'plugin' => $this->plugin_name,
|
820 |
+
'plugin_action' => 'yes',
|
821 |
+
];
|
822 |
+
|
823 |
+
// Decide how to request permission to collect email addresses
|
824 |
+
if ( $this->marketing == 1 ) {
|
825 |
+
// Option 1 combines permissions to track and collect email
|
826 |
+
$yes_args['marketing_optin'] = 'yes';
|
827 |
+
} elseif ( $this->marketing == 2 ) {
|
828 |
+
// Option 2 enables a second notice that fires after the user opts in to tracking
|
829 |
+
$yes_args['marketing'] = 'yes';
|
830 |
+
}
|
831 |
+
$url_yes = add_query_arg( $yes_args );
|
832 |
+
$url_no = add_query_arg( [
|
833 |
+
'plugin' => $this->plugin_name,
|
834 |
+
'plugin_action' => 'no',
|
835 |
+
] );
|
836 |
+
|
837 |
+
// Decide on notice text
|
838 |
+
if ( $this->marketing != 1 ) {
|
839 |
+
// Standard notice text
|
840 |
+
$notice_text = sprintf( __( 'Thank you for installing our %1$s. We would like to track its usage on your site. We don\'t record any sensitive data, only information regarding the WordPress environment and %1$s settings, which we will use to help us make improvements to the %1$s. Tracking is completely optional.', 'paid-memberships-pro' ), $this->what_am_i );
|
841 |
+
} else {
|
842 |
+
// If we have option 1 for marketing, we include reference to sending product information here
|
843 |
+
$notice_text = sprintf( __( 'Thank you for installing our %1$s. We\'d like your permission to track its usage on your site and subscribe you to our newsletter. We won\'t record any sensitive data, only information regarding the WordPress environment and %1$s settings, which we will use to help us make improvements to the %1$s. Tracking is completely optional.', 'paid-memberships-pro' ), $this->what_am_i );
|
844 |
+
}
|
845 |
+
// And we allow you to filter the text anyway
|
846 |
+
$notice_text = apply_filters( 'wisdom_notice_text_' . esc_attr( $this->plugin_name ), $notice_text ); ?>
|
847 |
+
|
848 |
+
<div class="notice notice-info updated put-dismiss-notice">
|
849 |
+
<h3><?php echo 'Enable Data Tracking For ' . esc_html( $plugin_name ) . '</strong>'; ?></h3>
|
850 |
+
<p><?php echo wp_kses_post( $notice_text ); ?></p>
|
851 |
+
<p>
|
852 |
+
<a href="<?php echo esc_url( $url_yes ); ?>" class="button button-primary"><?php _e( 'Allow', 'paid-memberships-pro' ); ?></a>
|
853 |
+
<a href="<?php echo esc_url( $url_no ); ?>" class="button button-secondary"><?php _e( 'Do Not Allow', 'paid-memberships-pro' ); ?></a>
|
854 |
+
</p>
|
855 |
+
</div>
|
856 |
+
<?php
|
857 |
+
}
|
858 |
+
}
|
859 |
+
|
860 |
+
/**
|
861 |
+
* Display the marketing notice to users if enabled
|
862 |
+
* Only displays after the user has opted in to tracking
|
863 |
+
*
|
864 |
+
* @since 1.0.0
|
865 |
+
*/
|
866 |
+
public function marketing_notice() {
|
867 |
+
// Check if user has opted in to marketing
|
868 |
+
if ( isset( $_GET['marketing_optin'] ) ) {
|
869 |
+
// Set marketing optin
|
870 |
+
$this->set_can_collect_email( sanitize_text_field( $_GET['marketing_optin'] ), $this->plugin_name );
|
871 |
+
// Do tracking
|
872 |
+
$this->do_tracking( true );
|
873 |
+
} elseif ( isset( $_GET['marketing'] ) && $_GET['marketing'] == 'yes' ) {
|
874 |
+
// Display the notice requesting permission to collect email address
|
875 |
+
// Retrieve current plugin information
|
876 |
+
$plugin = $this->plugin_data();
|
877 |
+
$plugin_name = $plugin['Name'];
|
878 |
+
|
879 |
+
$url_yes = add_query_arg( [
|
880 |
+
'plugin' => $this->plugin_name,
|
881 |
+
'marketing_optin' => 'yes',
|
882 |
+
] );
|
883 |
+
$url_no = add_query_arg( [
|
884 |
+
'plugin' => $this->plugin_name,
|
885 |
+
'marketing_optin' => 'no',
|
886 |
+
] );
|
887 |
+
|
888 |
+
$marketing_text = sprintf( __( 'Thank you for opting in to tracking. Would you like to receive occasional news about this %s, including details of new features and special offers?', 'paid-memberships-pro' ), $this->what_am_i );
|
889 |
+
$marketing_text = apply_filters( 'wisdom_marketing_text_' . esc_attr( $this->plugin_name ), $marketing_text ); ?>
|
890 |
+
|
891 |
+
<div class="notice notice-info updated put-dismiss-notice">
|
892 |
+
<p><?php echo '<strong>' . esc_html( $plugin_name ) . '</strong>'; ?></p>
|
893 |
+
<p><?php echo esc_html( $marketing_text ); ?></p>
|
894 |
+
<p>
|
895 |
+
<a href="<?php echo esc_url( $url_yes ); ?>" data-putnotice="yes" class="button-secondary"><?php _e( 'Yes Please', 'paid-memberships-pro' ); ?></a>
|
896 |
+
<a href="<?php echo esc_url( $url_no ); ?>" data-putnotice="no" class="button-secondary"><?php _e( 'No Thank You', 'paid-memberships-pro' ); ?></a>
|
897 |
+
</p>
|
898 |
+
</div>
|
899 |
+
<?php }
|
900 |
+
}
|
901 |
+
|
902 |
+
/**
|
903 |
+
* Filter the deactivation link to allow us to present a form when the user deactivates the plugin
|
904 |
+
*
|
905 |
+
* @since 1.0.0
|
906 |
+
*/
|
907 |
+
public function filter_action_links( $links ) {
|
908 |
+
// Check to see if the user has opted in to tracking
|
909 |
+
if ( ! $this->get_is_tracking_allowed() ) {
|
910 |
+
return $links;
|
911 |
+
}
|
912 |
+
if ( isset( $links['deactivate'] ) && $this->include_goodbye_form ) {
|
913 |
+
$deactivation_link = $links['deactivate'];
|
914 |
+
// Insert an onClick action to allow form before deactivating
|
915 |
+
$deactivation_link = str_replace( '<a ', '<div class="put-goodbye-form-wrapper"><span class="put-goodbye-form" id="put-goodbye-form-' . esc_attr( $this->plugin_name ) . '"></span></div><a onclick="javascript:event.preventDefault();" id="put-goodbye-link-' . esc_attr( $this->plugin_name ) . '" ', $deactivation_link );
|
916 |
+
$links['deactivate'] = $deactivation_link;
|
917 |
+
}
|
918 |
+
|
919 |
+
return $links;
|
920 |
+
}
|
921 |
+
|
922 |
+
/*
|
923 |
+
* Form text strings
|
924 |
+
* These are non-filterable and used as fallback in case filtered strings aren't set correctly
|
925 |
+
* @since 1.0.0
|
926 |
+
*/
|
927 |
+
public function form_default_text() {
|
928 |
+
$form = [];
|
929 |
+
$form['heading'] = __( 'Sorry to see you go', 'paid-memberships-pro' );
|
930 |
+
$form['body'] = __( 'Before you deactivate the plugin, would you quickly give us your reason for doing so?', 'paid-memberships-pro' );
|
931 |
+
$form['options'] = [
|
932 |
+
__( 'Set up is too difficult', 'paid-memberships-pro' ),
|
933 |
+
__( 'Lack of documentation', 'paid-memberships-pro' ),
|
934 |
+
__( 'Not the features I wanted', 'paid-memberships-pro' ),
|
935 |
+
__( 'Found a better plugin', 'paid-memberships-pro' ),
|
936 |
+
__( 'Installed by mistake', 'paid-memberships-pro' ),
|
937 |
+
__( 'Only required temporarily', 'paid-memberships-pro' ),
|
938 |
+
__( 'Didn\'t work', 'paid-memberships-pro' ),
|
939 |
+
];
|
940 |
+
$form['details'] = __( 'Details (optional)', 'paid-memberships-pro' );
|
941 |
+
|
942 |
+
return $form;
|
943 |
+
}
|
944 |
+
|
945 |
+
/**
|
946 |
+
* Form text strings
|
947 |
+
* These can be filtered
|
948 |
+
* The filter hook must be unique to the plugin
|
949 |
+
*
|
950 |
+
* @since 1.0.0
|
951 |
+
*/
|
952 |
+
public function form_filterable_text() {
|
953 |
+
$form = $this->form_default_text();
|
954 |
+
|
955 |
+
return apply_filters( 'wisdom_form_text_' . esc_attr( $this->plugin_name ), $form );
|
956 |
+
}
|
957 |
+
|
958 |
+
/**
|
959 |
+
* Form text strings
|
960 |
+
* These can be filtered
|
961 |
+
*
|
962 |
+
* @since 1.0.0
|
963 |
+
*/
|
964 |
+
public function goodbye_ajax() {
|
965 |
+
// Get our strings for the form
|
966 |
+
$form = $this->form_filterable_text();
|
967 |
+
if ( ! isset( $form['heading'] ) || ! isset( $form['body'] ) || ! isset( $form['options'] ) || ! is_array( $form['options'] ) || ! isset( $form['details'] ) ) {
|
968 |
+
// If the form hasn't been filtered correctly, we revert to the default form
|
969 |
+
$form = $this->form_default_text();
|
970 |
+
}
|
971 |
+
// Build the HTML to go in the form
|
972 |
+
$html = '<div class="put-goodbye-form-head"><strong>' . esc_html( $form['heading'] ) . '</strong></div>';
|
973 |
+
$html .= '<div class="put-goodbye-form-body"><p>' . esc_html( $form['body'] ) . '</p>';
|
974 |
+
if ( is_array( $form['options'] ) ) {
|
975 |
+
$html .= '<div class="put-goodbye-options"><p>';
|
976 |
+
foreach ( $form['options'] as $option ) {
|
977 |
+
$html .= '<input type="checkbox" name="put-goodbye-options[]" id="' . str_replace( " ", "", esc_attr( $option ) ) . '" value="' . esc_attr( $option ) . '"> <label for="' . str_replace( " ", "", esc_attr( $option ) ) . '">' . esc_attr( $option ) . '</label><br>';
|
978 |
+
}
|
979 |
+
$html .= '</p><label for="put-goodbye-reasons">' . esc_html( $form['details'] ) . '</label><textarea name="put-goodbye-reasons" id="put-goodbye-reasons" rows="2" style="width:100%"></textarea>';
|
980 |
+
$html .= '</div><!-- .put-goodbye-options -->';
|
981 |
+
}
|
982 |
+
$html .= '</div><!-- .put-goodbye-form-body -->';
|
983 |
+
$html .= '<p class="deactivating-spinner"><span class="spinner"></span> ' . __( 'Submitting form', 'paid-memberships-pro' ) . '</p>';
|
984 |
+
?>
|
985 |
+
<div class="put-goodbye-form-bg"></div>
|
986 |
+
<style type="text/css">
|
987 |
+
.put-form-active .put-goodbye-form-bg {
|
988 |
+
background: rgba(0, 0, 0, .5);
|
989 |
+
position: fixed;
|
990 |
+
top: 0;
|
991 |
+
left: 0;
|
992 |
+
width: 100%;
|
993 |
+
height: 100%;
|
994 |
+
}
|
995 |
+
|
996 |
+
.put-goodbye-form-wrapper {
|
997 |
+
position: relative;
|
998 |
+
z-index: 999;
|
999 |
+
display: none;
|
1000 |
+
}
|
1001 |
+
|
1002 |
+
.put-form-active .put-goodbye-form-wrapper {
|
1003 |
+
display: block;
|
1004 |
+
}
|
1005 |
+
|
1006 |
+
.put-goodbye-form {
|
1007 |
+
display: none;
|
1008 |
+
}
|
1009 |
+
|
1010 |
+
.put-form-active .put-goodbye-form {
|
1011 |
+
position: absolute;
|
1012 |
+
bottom: 30px;
|
1013 |
+
left: 0;
|
1014 |
+
max-width: 400px;
|
1015 |
+
background: #fff;
|
1016 |
+
white-space: normal;
|
1017 |
+
}
|
1018 |
+
|
1019 |
+
.put-goodbye-form-head {
|
1020 |
+
background: #0073aa;
|
1021 |
+
color: #fff;
|
1022 |
+
padding: 8px 18px;
|
1023 |
+
}
|
1024 |
+
|
1025 |
+
.put-goodbye-form-body {
|
1026 |
+
padding: 8px 18px;
|
1027 |
+
color: #444;
|
1028 |
+
}
|
1029 |
+
|
1030 |
+
.deactivating-spinner {
|
1031 |
+
display: none;
|
1032 |
+
}
|
1033 |
+
|
1034 |
+
.deactivating-spinner .spinner {
|
1035 |
+
float: none;
|
1036 |
+
margin: 4px 4px 0 18px;
|
1037 |
+
vertical-align: bottom;
|
1038 |
+
visibility: visible;
|
1039 |
+
}
|
1040 |
+
|
1041 |
+
.put-goodbye-form-footer {
|
1042 |
+
padding: 8px 18px;
|
1043 |
+
}
|
1044 |
+
</style>
|
1045 |
+
<script>
|
1046 |
+
jQuery( document ).ready( function ( $ ) {
|
1047 |
+
$( "#put-goodbye-link-<?php echo esc_attr( $this->plugin_name ); ?>" ).on( "click", function () {
|
1048 |
+
// We'll send the user to this deactivation link when they've completed or dismissed the form
|
1049 |
+
var url = document.getElementById( "put-goodbye-link-<?php echo esc_attr( $this->plugin_name ); ?>" );
|
1050 |
+
$( 'body' ).toggleClass( 'put-form-active' );
|
1051 |
+
$( "#put-goodbye-form-<?php echo esc_attr( $this->plugin_name ); ?>" ).fadeIn();
|
1052 |
+
$( "#put-goodbye-form-<?php echo esc_attr( $this->plugin_name ); ?>" ).html( '<?php echo $html; ?>' + '<div class="put-goodbye-form-footer"><p><a id="put-submit-form" class="button primary" href="#"><?php _e( 'Submit and Deactivate', 'paid-memberships-pro' ); ?></a> <a class="secondary button" href="' + url + '"><?php _e( 'Just Deactivate', 'paid-memberships-pro' ); ?></a></p></div>' );
|
1053 |
+
$( '#put-submit-form' ).on( 'click', function ( e ) {
|
1054 |
+
// As soon as we click, the body of the form should disappear
|
1055 |
+
$( "#put-goodbye-form-<?php echo esc_attr( $this->plugin_name ); ?> .put-goodbye-form-body" ).fadeOut();
|
1056 |
+
$( "#put-goodbye-form-<?php echo esc_attr( $this->plugin_name ); ?> .put-goodbye-form-footer" ).fadeOut();
|
1057 |
+
// Fade in spinner
|
1058 |
+
$( "#put-goodbye-form-<?php echo esc_attr( $this->plugin_name ); ?> .deactivating-spinner" ).fadeIn();
|
1059 |
+
e.preventDefault();
|
1060 |
+
var values = new Array();
|
1061 |
+
$.each( $( "input[name='put-goodbye-options[]']:checked" ), function () {
|
1062 |
+
values.push( $( this ).val() );
|
1063 |
+
} );
|
1064 |
+
var details = $( '#put-goodbye-reasons' ).val();
|
1065 |
+
var data = {
|
1066 |
+
'action' : 'goodbye_form',
|
1067 |
+
'values' : values,
|
1068 |
+
'details' : details,
|
1069 |
+
'security' : "<?php echo wp_create_nonce( 'wisdom_goodbye_form' ); ?>",
|
1070 |
+
'dataType' : "json"
|
1071 |
+
}
|
1072 |
+
$.post( ajaxurl, data, function ( response ) {
|
1073 |
+
// Redirect to original deactivation URL
|
1074 |
+
window.location.href = url;
|
1075 |
+
} );
|
1076 |
+
} );
|
1077 |
+
// If we click outside the form, the form will close
|
1078 |
+
$( '.put-goodbye-form-bg' ).on( 'click', function () {
|
1079 |
+
$( "#put-goodbye-form-<?php echo esc_attr( $this->plugin_name ); ?>" ).fadeOut();
|
1080 |
+
$( 'body' ).removeClass( 'put-form-active' );
|
1081 |
+
} );
|
1082 |
+
} );
|
1083 |
+
} );
|
1084 |
+
</script>
|
1085 |
+
<?php }
|
1086 |
+
|
1087 |
+
/**
|
1088 |
+
* AJAX callback when the form is submitted
|
1089 |
+
*
|
1090 |
+
* @since 1.0.0
|
1091 |
+
*/
|
1092 |
+
public function goodbye_form_callback() {
|
1093 |
+
check_ajax_referer( 'wisdom_goodbye_form', 'security' );
|
1094 |
+
if ( isset( $_POST['values'] ) ) {
|
1095 |
+
$values = json_encode( wp_unslash( $_POST['values'] ) );
|
1096 |
+
update_option( 'wisdom_deactivation_reason_' . $this->plugin_name, $values );
|
1097 |
+
}
|
1098 |
+
if ( isset( $_POST['details'] ) ) {
|
1099 |
+
$details = sanitize_text_field( $_POST['details'] );
|
1100 |
+
update_option( 'wisdom_deactivation_details_' . $this->plugin_name, $details );
|
1101 |
+
}
|
1102 |
+
$this->do_tracking(); // Run this straightaway
|
1103 |
+
echo 'success';
|
1104 |
+
wp_die();
|
1105 |
+
}
|
1106 |
+
|
1107 |
+
}
|
classes/class.memberorder.php
CHANGED
@@ -232,6 +232,12 @@
|
|
232 |
return $this->is_renewal;
|
233 |
}
|
234 |
|
|
|
|
|
|
|
|
|
|
|
|
|
235 |
// Check the DB.
|
236 |
$sqlQuery = "SELECT `id`
|
237 |
FROM $wpdb->pmpro_membership_orders
|
@@ -754,12 +760,15 @@
|
|
754 |
if(empty($this->gateway_environment))
|
755 |
$this->gateway_environment = pmpro_getOption("gateway_environment");
|
756 |
|
757 |
-
if(empty($this->datetime) && empty($this->timestamp))
|
758 |
-
$this->
|
759 |
-
|
|
|
760 |
$this->datetime = date("Y-m-d H:i:s", $this->timestamp); //get datetime from timestamp
|
761 |
-
elseif(empty($this->datetime) && !empty($this->timestamp))
|
762 |
$this->datetime = $this->timestamp; //must have a datetime in it
|
|
|
|
|
763 |
|
764 |
if(empty($this->notes))
|
765 |
$this->notes = "";
|
@@ -1184,4 +1193,35 @@
|
|
1184 |
|
1185 |
return apply_filters( 'pmpro_test_order_data', $this );
|
1186 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1187 |
} // End of Class
|
232 |
return $this->is_renewal;
|
233 |
}
|
234 |
|
235 |
+
// Can't tell if this is a renewal without a timestamp.
|
236 |
+
if ( empty( $this->timestamp ) ) {
|
237 |
+
$this->is_renewal = false;
|
238 |
+
return $this->is_renewal;
|
239 |
+
}
|
240 |
+
|
241 |
// Check the DB.
|
242 |
$sqlQuery = "SELECT `id`
|
243 |
FROM $wpdb->pmpro_membership_orders
|
760 |
if(empty($this->gateway_environment))
|
761 |
$this->gateway_environment = pmpro_getOption("gateway_environment");
|
762 |
|
763 |
+
if( empty( $this->datetime ) && empty( $this->timestamp ) ) {
|
764 |
+
$this->timestamp = time();
|
765 |
+
$this->datetime = date("Y-m-d H:i:s", $this->timestamp);
|
766 |
+
} elseif( empty( $this->datetime ) && ! empty( $this->timestamp ) && is_numeric( $this->timestamp ) ) {
|
767 |
$this->datetime = date("Y-m-d H:i:s", $this->timestamp); //get datetime from timestamp
|
768 |
+
} elseif( empty( $this->datetime ) && ! empty( $this->timestamp ) ) {
|
769 |
$this->datetime = $this->timestamp; //must have a datetime in it
|
770 |
+
$this->timestamp = strtotime( $this->datetime ); //fixing the timestamp
|
771 |
+
}
|
772 |
|
773 |
if(empty($this->notes))
|
774 |
$this->notes = "";
|
1193 |
|
1194 |
return apply_filters( 'pmpro_test_order_data', $this );
|
1195 |
}
|
1196 |
+
|
1197 |
+
/**
|
1198 |
+
* Does this order have any billing address fields set?
|
1199 |
+
* @since 2.8
|
1200 |
+
* @return bool True if ANY billing address field is non-empty.
|
1201 |
+
* False if ALL billing address fields are empty.
|
1202 |
+
*/
|
1203 |
+
function has_billing_address() {
|
1204 |
+
// This is sometimes set.
|
1205 |
+
if ( ! empty( $this->Address1 ) ) {
|
1206 |
+
return true;
|
1207 |
+
}
|
1208 |
+
|
1209 |
+
// Avoid a warning if no billing object at all.
|
1210 |
+
if ( empty( $this->billing ) ) {
|
1211 |
+
return false;
|
1212 |
+
}
|
1213 |
+
|
1214 |
+
// Check billing fields.
|
1215 |
+
if ( ! empty( $this->billing->name )
|
1216 |
+
|| ! empty( $this->billing->street )
|
1217 |
+
|| ! empty( $this->billing->city )
|
1218 |
+
|| ! empty( $this->billing->state )
|
1219 |
+
|| ! empty( $this->billing->country )
|
1220 |
+
|| ! empty( $this->billing->zip )
|
1221 |
+
|| ! empty( $this->billing->phone ) ) {
|
1222 |
+
return true;
|
1223 |
+
}
|
1224 |
+
|
1225 |
+
return false;
|
1226 |
+
}
|
1227 |
} // End of Class
|
classes/class.pmproemail.php
CHANGED
@@ -241,6 +241,139 @@
|
|
241 |
|
242 |
return $this->sendEmail();
|
243 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
244 |
|
245 |
function sendCheckoutEmail($user = NULL, $invoice = NULL)
|
246 |
{
|
241 |
|
242 |
return $this->sendEmail();
|
243 |
}
|
244 |
+
|
245 |
+
function sendRefundedEmail( $user = NULL, $invoice = NULL ) {
|
246 |
+
global $wpdb, $current_user;
|
247 |
+
if ( ! $user ) {
|
248 |
+
$user = $current_user;
|
249 |
+
}
|
250 |
+
|
251 |
+
if ( ! $user ) {
|
252 |
+
return false;
|
253 |
+
}
|
254 |
+
|
255 |
+
$membership_level = pmpro_getSpecificMembershipLevelForUser( $user->ID, $invoice->membership_id );
|
256 |
+
if ( ! empty( $membership_level ) ) {
|
257 |
+
$membership_level_id = $membership_level->id;
|
258 |
+
$membership_level_name = $membership_level->name;
|
259 |
+
} else {
|
260 |
+
$membership_level_id = '';
|
261 |
+
$membership_level_name = __( 'N/A', 'paid-memberships-pro' );
|
262 |
+
}
|
263 |
+
|
264 |
+
$this->email = $user->user_email;
|
265 |
+
$this->subject = sprintf(__( 'Your invoice for order #%s at %s has been REFUNDED', 'paid-memberships-pro' ), $invoice->code, get_option( 'blogname' ) );
|
266 |
+
|
267 |
+
$this->data = array(
|
268 |
+
'user_login' => $user->user_login,
|
269 |
+
'user_email' => $user->user_email,
|
270 |
+
'display_name' => $user->display_name,
|
271 |
+
'sitename' => get_option('blogname'),
|
272 |
+
'siteemail' => pmpro_getOption('from_email'),
|
273 |
+
'login_link' => pmpro_login_url(),
|
274 |
+
'login_url' => pmpro_login_url(),
|
275 |
+
'membership_id' => $membership_level_id,
|
276 |
+
'membership_level_name' => $membership_level_name,
|
277 |
+
'invoice_id' => $invoice->code,
|
278 |
+
'invoice_total' => pmpro_formatPrice($invoice->total),
|
279 |
+
'invoice_date' => date_i18n(get_option('date_format'), $invoice->getTimestamp()),
|
280 |
+
'billing_name' => $invoice->billing->name,
|
281 |
+
'billing_street' => $invoice->billing->street,
|
282 |
+
'billing_city' => $invoice->billing->city,
|
283 |
+
'billing_state' => $invoice->billing->state,
|
284 |
+
'billing_zip' => $invoice->billing->zip,
|
285 |
+
'billing_country' => $invoice->billing->country,
|
286 |
+
'billing_phone' => $invoice->billing->phone,
|
287 |
+
'cardtype' => $invoice->cardtype,
|
288 |
+
'accountnumber' => hideCardNumber($invoice->accountnumber),
|
289 |
+
'expirationmonth' => $invoice->expirationmonth,
|
290 |
+
'expirationyear' => $invoice->expirationyear,
|
291 |
+
'login_link' => pmpro_login_url(),
|
292 |
+
'login_url' => pmpro_login_url(),
|
293 |
+
'invoice_link' => pmpro_login_url( pmpro_url( 'invoice', '?invoice=' . $invoice->code ) ),
|
294 |
+
'invoice_url' => pmpro_login_url( pmpro_url( 'invoice', '?invoice=' . $invoice->code ) )
|
295 |
+
);
|
296 |
+
$this->data['billing_address'] = pmpro_formatAddress(
|
297 |
+
$invoice->billing->name,
|
298 |
+
$invoice->billing->street,
|
299 |
+
"", //address 2
|
300 |
+
$invoice->billing->city,
|
301 |
+
$invoice->billing->state,
|
302 |
+
$invoice->billing->zip,
|
303 |
+
$invoice->billing->country,
|
304 |
+
$invoice->billing->phone
|
305 |
+
);
|
306 |
+
|
307 |
+
$this->template = apply_filters( 'pmpro_email_template', 'refund', $this );
|
308 |
+
return $this->sendEmail();
|
309 |
+
}
|
310 |
+
|
311 |
+
function sendRefundedAdminEmail( $user = NULL, $invoice = NULL ) {
|
312 |
+
global $wpdb, $current_user;
|
313 |
+
if ( ! $user ) {
|
314 |
+
$user = $current_user;
|
315 |
+
}
|
316 |
+
|
317 |
+
if ( ! $user ) {
|
318 |
+
return false;
|
319 |
+
}
|
320 |
+
|
321 |
+
$membership_level = pmpro_getSpecificMembershipLevelForUser( $user->ID, $invoice->membership_id );
|
322 |
+
if ( ! empty( $membership_level ) ) {
|
323 |
+
$membership_level_id = $membership_level->id;
|
324 |
+
$membership_level_name = $membership_level->name;
|
325 |
+
} else {
|
326 |
+
$membership_level_id = '';
|
327 |
+
$membership_level_name = __( 'N/A', 'paid-memberships-pro' );
|
328 |
+
}
|
329 |
+
|
330 |
+
$this->email = get_bloginfo( 'admin_email' );
|
331 |
+
$this->subject = sprintf(__( 'Invoice for order #%s at %s has been REFUNDED', 'paid-memberships-pro' ), $invoice->code, get_option( 'blogname' ) );
|
332 |
+
|
333 |
+
$this->data = array(
|
334 |
+
'user_login' => $user->user_login,
|
335 |
+
'user_email' => $user->user_email,
|
336 |
+
'display_name' => $user->display_name,
|
337 |
+
'sitename' => get_option('blogname'),
|
338 |
+
'siteemail' => pmpro_getOption('from_email'),
|
339 |
+
'login_link' => pmpro_login_url(),
|
340 |
+
'login_url' => pmpro_login_url(),
|
341 |
+
'membership_id' => $membership_level_id,
|
342 |
+
'membership_level_name' => $membership_level_name,
|
343 |
+
'invoice_id' => $invoice->code,
|
344 |
+
'invoice_total' => pmpro_formatPrice($invoice->total),
|
345 |
+
'invoice_date' => date_i18n(get_option('date_format'), $invoice->getTimestamp()),
|
346 |
+
'billing_name' => $invoice->billing->name,
|
347 |
+
'billing_street' => $invoice->billing->street,
|
348 |
+
'billing_city' => $invoice->billing->city,
|
349 |
+
'billing_state' => $invoice->billing->state,
|
350 |
+
'billing_zip' => $invoice->billing->zip,
|
351 |
+
'billing_country' => $invoice->billing->country,
|
352 |
+
'billing_phone' => $invoice->billing->phone,
|
353 |
+
'cardtype' => $invoice->cardtype,
|
354 |
+
'accountnumber' => hideCardNumber($invoice->accountnumber),
|
355 |
+
'expirationmonth' => $invoice->expirationmonth,
|
356 |
+
'expirationyear' => $invoice->expirationyear,
|
357 |
+
'login_link' => pmpro_login_url(),
|
358 |
+
'login_url' => pmpro_login_url(),
|
359 |
+
'invoice_link' => pmpro_login_url( pmpro_url( 'invoice', '?invoice=' . $invoice->code ) ),
|
360 |
+
'invoice_url' => pmpro_login_url( pmpro_url( 'invoice', '?invoice=' . $invoice->code ) )
|
361 |
+
);
|
362 |
+
$this->data['billing_address'] = pmpro_formatAddress(
|
363 |
+
$invoice->billing->name,
|
364 |
+
$invoice->billing->street,
|
365 |
+
"", //address 2
|
366 |
+
$invoice->billing->city,
|
367 |
+
$invoice->billing->state,
|
368 |
+
$invoice->billing->zip,
|
369 |
+
$invoice->billing->country,
|
370 |
+
$invoice->billing->phone
|
371 |
+
);
|
372 |
+
|
373 |
+
$this->template = apply_filters( 'pmpro_email_template', 'refund_admin', $this );
|
374 |
+
|
375 |
+
return $this->sendEmail();
|
376 |
+
}
|
377 |
|
378 |
function sendCheckoutEmail($user = NULL, $invoice = NULL)
|
379 |
{
|
classes/gateways/class.pmprogateway_authorizenet.php
CHANGED
@@ -43,7 +43,7 @@ class PMProGateway_authorizenet extends PMProGateway
|
|
43 |
$morder->CVV2 = $authorizenet_cvv;
|
44 |
return $morder;
|
45 |
}
|
46 |
-
|
47 |
/**
|
48 |
* Make sure this gateway is in the gateways list
|
49 |
*
|
@@ -112,7 +112,7 @@ class PMProGateway_authorizenet extends PMProGateway
|
|
112 |
</tr>
|
113 |
<tr class="gateway gateway_authorizenet" <?php if($gateway != "authorizenet") { ?>style="display: none;"<?php } ?>>
|
114 |
<th scope="row" valign="top">
|
115 |
-
<label for="loginname"><?php
|
116 |
</th>
|
117 |
<td>
|
118 |
<input type="text" id="loginname" name="loginname" value="<?php echo esc_attr($values['loginname'])?>" class="regular-text code" />
|
@@ -120,7 +120,7 @@ class PMProGateway_authorizenet extends PMProGateway
|
|
120 |
</tr>
|
121 |
<tr class="gateway gateway_authorizenet" <?php if($gateway != "authorizenet") { ?>style="display: none;"<?php } ?>>
|
122 |
<th scope="row" valign="top">
|
123 |
-
<label for="transactionkey"><?php
|
124 |
</th>
|
125 |
<td>
|
126 |
<input type="text" id="transactionkey" name="transactionkey" value="<?php echo esc_attr($values['transactionkey'])?>" autocomplete="off" class="regular-text code pmpro-admin-secure-key" />
|
@@ -128,10 +128,10 @@ class PMProGateway_authorizenet extends PMProGateway
|
|
128 |
</tr>
|
129 |
<tr class="gateway gateway_authorizenet" <?php if($gateway != "authorizenet") { ?>style="display: none;"<?php } ?>>
|
130 |
<th scope="row" valign="top">
|
131 |
-
<label><?php
|
132 |
</th>
|
133 |
<td>
|
134 |
-
<p><?php
|
135 |
<p><code><?php echo admin_url("admin-ajax.php") . "?action=authnet_silent_post";?></code></p>
|
136 |
</td>
|
137 |
</tr>
|
@@ -463,7 +463,7 @@ class PMProGateway_authorizenet extends PMProGateway
|
|
463 |
//tax
|
464 |
$order->subtotal = $amount;
|
465 |
$tax = $order->getTax(true);
|
466 |
-
$amount =
|
467 |
|
468 |
//combine address
|
469 |
$address = $order->Address1;
|
@@ -613,8 +613,8 @@ class PMProGateway_authorizenet extends PMProGateway
|
|
613 |
$amount_tax = $order->getTaxForPrice($amount);
|
614 |
$trial_tax = $order->getTaxForPrice($trialAmount);
|
615 |
|
616 |
-
$amount =
|
617 |
-
$trialAmount =
|
618 |
|
619 |
//authorize.net doesn't support different periods between trial and actual
|
620 |
|
@@ -988,7 +988,7 @@ class PMProGateway_authorizenet extends PMProGateway
|
|
988 |
$order->shorterror = $text;
|
989 |
}
|
990 |
}
|
991 |
-
|
992 |
/**
|
993 |
* This function takes the post_values and converts them to the proper format
|
994 |
* for an http post. For example: "x_login=username&x_tran_key=a1B2c3D4"
|
@@ -1008,13 +1008,13 @@ class PMProGateway_authorizenet extends PMProGateway
|
|
1008 |
* @param string $action being performed.
|
1009 |
*/
|
1010 |
$post_values = apply_filters( 'pmpro_authorizenet_post_values', $post_values, $action );
|
1011 |
-
|
1012 |
$post_string = '';
|
1013 |
foreach( $post_values as $key => $value ) {
|
1014 |
$post_string .= "$key=" . urlencode( str_replace("#", "%23", $value) ) . "&";
|
1015 |
}
|
1016 |
$post_string = rtrim( $post_string, "& " );
|
1017 |
-
|
1018 |
return $post_string;
|
1019 |
}
|
1020 |
|
43 |
$morder->CVV2 = $authorizenet_cvv;
|
44 |
return $morder;
|
45 |
}
|
46 |
+
|
47 |
/**
|
48 |
* Make sure this gateway is in the gateways list
|
49 |
*
|
112 |
</tr>
|
113 |
<tr class="gateway gateway_authorizenet" <?php if($gateway != "authorizenet") { ?>style="display: none;"<?php } ?>>
|
114 |
<th scope="row" valign="top">
|
115 |
+
<label for="loginname"><?php esc_html_e('Login Name', 'paid-memberships-pro' );?>:</label>
|
116 |
</th>
|
117 |
<td>
|
118 |
<input type="text" id="loginname" name="loginname" value="<?php echo esc_attr($values['loginname'])?>" class="regular-text code" />
|
120 |
</tr>
|
121 |
<tr class="gateway gateway_authorizenet" <?php if($gateway != "authorizenet") { ?>style="display: none;"<?php } ?>>
|
122 |
<th scope="row" valign="top">
|
123 |
+
<label for="transactionkey"><?php esc_html_e('Transaction Key', 'paid-memberships-pro' );?>:</label>
|
124 |
</th>
|
125 |
<td>
|
126 |
<input type="text" id="transactionkey" name="transactionkey" value="<?php echo esc_attr($values['transactionkey'])?>" autocomplete="off" class="regular-text code pmpro-admin-secure-key" />
|
128 |
</tr>
|
129 |
<tr class="gateway gateway_authorizenet" <?php if($gateway != "authorizenet") { ?>style="display: none;"<?php } ?>>
|
130 |
<th scope="row" valign="top">
|
131 |
+
<label><?php esc_html_e('Silent Post URL', 'paid-memberships-pro' );?>:</label>
|
132 |
</th>
|
133 |
<td>
|
134 |
+
<p><?php esc_html_e('To fully integrate with Authorize.net, be sure to set your Silent Post URL to', 'paid-memberships-pro' ); ?></p>
|
135 |
<p><code><?php echo admin_url("admin-ajax.php") . "?action=authnet_silent_post";?></code></p>
|
136 |
</td>
|
137 |
</tr>
|
463 |
//tax
|
464 |
$order->subtotal = $amount;
|
465 |
$tax = $order->getTax(true);
|
466 |
+
$amount = pmpro_round_price_as_string((float)$order->subtotal + (float)$tax);
|
467 |
|
468 |
//combine address
|
469 |
$address = $order->Address1;
|
613 |
$amount_tax = $order->getTaxForPrice($amount);
|
614 |
$trial_tax = $order->getTaxForPrice($trialAmount);
|
615 |
|
616 |
+
$amount = pmpro_round_price_as_string((float)$amount + (float)$amount_tax);
|
617 |
+
$trialAmount = pmpro_round_price_as_string((float)$trialAmount + (float)$trial_tax);
|
618 |
|
619 |
//authorize.net doesn't support different periods between trial and actual
|
620 |
|
988 |
$order->shorterror = $text;
|
989 |
}
|
990 |
}
|
991 |
+
|
992 |
/**
|
993 |
* This function takes the post_values and converts them to the proper format
|
994 |
* for an http post. For example: "x_login=username&x_tran_key=a1B2c3D4"
|
1008 |
* @param string $action being performed.
|
1009 |
*/
|
1010 |
$post_values = apply_filters( 'pmpro_authorizenet_post_values', $post_values, $action );
|
1011 |
+
|
1012 |
$post_string = '';
|
1013 |
foreach( $post_values as $key => $value ) {
|
1014 |
$post_string .= "$key=" . urlencode( str_replace("#", "%23", $value) ) . "&";
|
1015 |
}
|
1016 |
$post_string = rtrim( $post_string, "& " );
|
1017 |
+
|
1018 |
return $post_string;
|
1019 |
}
|
1020 |
|
classes/gateways/class.pmprogateway_braintree.php
CHANGED
@@ -109,8 +109,15 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
109 |
function loadBraintreeLibrary()
|
110 |
{
|
111 |
//load Braintree library if it hasn't been loaded already (usually by another plugin using Braintree)
|
112 |
-
if(!class_exists("\Braintree"))
|
113 |
require_once( PMPRO_DIR . "/includes/lib/Braintree/lib/Braintree.php");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
114 |
}
|
115 |
|
116 |
/**
|
@@ -121,7 +128,7 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
121 |
$cache_key = 'pmpro_braintree_plans_' . md5($this->gateway_environment . pmpro_getOption("braintree_merchantid") . pmpro_getOption("braintree_publickey") . pmpro_getOption("braintree_privatekey"));
|
122 |
|
123 |
$plans = wp_cache_get( $cache_key,'pmpro_levels' );
|
124 |
-
|
125 |
//check Braintree if no transient found
|
126 |
if($plans === false) {
|
127 |
|
@@ -169,16 +176,16 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
169 |
* @param $level_id
|
170 |
*/
|
171 |
public static function pmpro_save_level_action( $level_id ) {
|
172 |
-
|
173 |
$BT_Gateway = new PMProGateway_braintree();
|
174 |
-
|
175 |
if ( isset( $BT_Gateway->gateway_environment ) ) {
|
176 |
$cache_key = 'pmpro_braintree_plans_' . md5($BT_Gateway->gateway_environment . pmpro_getOption("braintree_merchantid") . pmpro_getOption("braintree_publickey") . pmpro_getOption("braintree_privatekey"));
|
177 |
-
|
178 |
wp_cache_delete( $cache_key,'pmpro_levels' );
|
179 |
}
|
180 |
}
|
181 |
-
|
182 |
/**
|
183 |
* Search for a plan by id
|
184 |
*/
|
@@ -310,7 +317,7 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
310 |
</tr>
|
311 |
<tr class="gateway gateway_braintree" <?php if($gateway != "braintree") { ?>style="display: none;"<?php } ?>>
|
312 |
<th scope="row" valign="top">
|
313 |
-
<label for="braintree_merchantid"><?php
|
314 |
</th>
|
315 |
<td>
|
316 |
<input type="text" id="braintree_merchantid" name="braintree_merchantid" value="<?php echo esc_attr($values['braintree_merchantid'])?>" class="regular-text code" />
|
@@ -318,7 +325,7 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
318 |
</tr>
|
319 |
<tr class="gateway gateway_braintree" <?php if($gateway != "braintree") { ?>style="display: none;"<?php } ?>>
|
320 |
<th scope="row" valign="top">
|
321 |
-
<label for="braintree_publickey"><?php
|
322 |
</th>
|
323 |
<td>
|
324 |
<input type="text" id="braintree_publickey" name="braintree_publickey" value="<?php echo esc_attr($values['braintree_publickey'])?>" class="regular-text code" />
|
@@ -326,7 +333,7 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
326 |
</tr>
|
327 |
<tr class="gateway gateway_braintree" <?php if($gateway != "braintree") { ?>style="display: none;"<?php } ?>>
|
328 |
<th scope="row" valign="top">
|
329 |
-
<label for="braintree_privatekey"><?php
|
330 |
</th>
|
331 |
<td>
|
332 |
<input type="text" id="braintree_privatekey" name="braintree_privatekey" value="<?php echo esc_attr($values['braintree_privatekey'])?>" autocomplete="off" class="regular-text code pmpro-admin-secure-key" />
|
@@ -334,7 +341,7 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
334 |
</tr>
|
335 |
<tr class="gateway gateway_braintree" <?php if($gateway != "braintree") { ?>style="display: none;"<?php } ?>>
|
336 |
<th scope="row" valign="top">
|
337 |
-
<label for="braintree_encryptionkey"><?php
|
338 |
</th>
|
339 |
<td>
|
340 |
<textarea id="braintree_encryptionkey" name="braintree_encryptionkey" autocomplete="off" rows="3" cols="50" class="large-text code pmpro-admin-secure-key"><?php echo esc_textarea($values['braintree_encryptionkey'])?></textarea>
|
@@ -342,10 +349,10 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
342 |
</tr>
|
343 |
<tr class="gateway gateway_braintree" <?php if($gateway != "braintree") { ?>style="display: none;"<?php } ?>>
|
344 |
<th scope="row" valign="top">
|
345 |
-
<label><?php
|
346 |
</th>
|
347 |
<td>
|
348 |
-
<p><?php
|
349 |
<p><code><?php
|
350 |
//echo admin_url("admin-ajax.php") . "?action=braintree_webhook";
|
351 |
echo add_query_arg( 'action', 'braintree_webhook', admin_url( 'admin-ajax.php' ) );
|
@@ -354,7 +361,7 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
354 |
</tr>
|
355 |
<?php
|
356 |
}
|
357 |
-
|
358 |
/**
|
359 |
* Code added to checkout preheader.
|
360 |
*
|
@@ -451,7 +458,7 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
451 |
?>
|
452 |
<div id="pmpro_payment_information_fields" class="<?php echo pmpro_get_element_class( 'pmpro_checkout', 'pmpro_payment_information_fields' ); ?>" <?php if(!$pmpro_requirebilling || apply_filters("pmpro_hide_payment_information_fields", false) ) { ?>style="display: none;"<?php } ?>>
|
453 |
<h3>
|
454 |
-
<span class="<?php echo pmpro_get_element_class( 'pmpro_checkout-h3-name' ); ?>"><?php
|
455 |
<span class="<?php echo pmpro_get_element_class( 'pmpro_checkout-h3-msg' ); ?>"><?php printf(__('We Accept %s', 'paid-memberships-pro' ), $pmpro_accepted_credit_cards_string);?></span>
|
456 |
</h3>
|
457 |
<?php $sslseal = pmpro_getOption("sslseal"); ?>
|
@@ -463,20 +470,20 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
463 |
$pmpro_include_cardtype_field = apply_filters('pmpro_include_cardtype_field', true);
|
464 |
if($pmpro_include_cardtype_field) { ?>
|
465 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_checkout-field pmpro_payment-card-type', 'pmpro_payment-card-type' ); ?>">
|
466 |
-
<label for="CardType"><?php
|
467 |
<select id="CardType" name="CardType" class="<?php echo pmpro_get_element_class( 'CardType' ); ?>">
|
468 |
<?php foreach($pmpro_accepted_credit_cards as $cc) { ?>
|
469 |
-
<option value="<?php echo $cc?>" <?php if($CardType == $cc) { ?>selected="selected"<?php } ?>><?php echo $cc?></option>
|
470 |
<?php } ?>
|
471 |
</select>
|
472 |
</div>
|
473 |
<?php } ?>
|
474 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_checkout-field pmpro_payment-account-number', 'pmpro_payment-account-number' ); ?>">
|
475 |
-
<label for="AccountNumber"><?php
|
476 |
<input id="AccountNumber" name="AccountNumber" class="<?php echo pmpro_get_element_class( 'input', 'AccountNumber' ); ?>" type="text" size="25" value="<?php echo esc_attr($AccountNumber)?>" data-encrypted-name="number" autocomplete="off" />
|
477 |
</div>
|
478 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_checkout-field pmpro_payment-expiration', 'pmpro_payment-expiration' ); ?>">
|
479 |
-
<label for="ExpirationMonth"><?php
|
480 |
<select id="ExpirationMonth" name="ExpirationMonth" class="<?php echo pmpro_get_element_class( 'ExpirationMonth' ); ?>">
|
481 |
<option value="01" <?php if($ExpirationMonth == "01") { ?>selected="selected"<?php } ?>>01</option>
|
482 |
<option value="02" <?php if($ExpirationMonth == "02") { ?>selected="selected"<?php } ?>>02</option>
|
@@ -492,7 +499,7 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
492 |
<option value="12" <?php if($ExpirationMonth == "12") { ?>selected="selected"<?php } ?>>12</option>
|
493 |
</select>/<select id="ExpirationYear" name="ExpirationYear" class="<?php echo pmpro_get_element_class( 'ExpirationYear' ); ?>">
|
494 |
<?php for($i = date_i18n("Y"); $i < date_i18n("Y") + 10; $i++) { ?>
|
495 |
-
<option value="<?php echo $i?>" <?php if($ExpirationYear == $i) { ?>selected="selected"<?php } ?>><?php echo $i?></option>
|
496 |
<?php } ?>
|
497 |
</select>
|
498 |
</div>
|
@@ -500,15 +507,15 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
500 |
$pmpro_show_cvv = apply_filters("pmpro_show_cvv", true);
|
501 |
if($pmpro_show_cvv) { ?>
|
502 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_checkout-field pmpro_payment-cvv', 'pmpro_payment-cvv' ); ?>">
|
503 |
-
<label for="CVV"><?php
|
504 |
-
<input id="CVV" name="cvv" type="text" size="4" value="<?php if(!empty($_REQUEST['CVV'])) { echo esc_attr(sanitize_text_field($_REQUEST['CVV'])); }?>" class="<?php echo pmpro_get_element_class( 'input', 'CVV' ); ?>" data-encrypted-name="cvv" /> <small>(<a href="javascript:void(0);" onclick="javascript:window.open('<?php echo pmpro_https_filter(PMPRO_URL)?>/pages/popup-cvv.html','cvv','toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=600, height=475');"><?php
|
505 |
</div>
|
506 |
<?php } ?>
|
507 |
<?php if($pmpro_show_discount_code) { ?>
|
508 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_checkout-field pmpro_payment-discount-code', 'pmpro_payment-discount-code' ); ?>">
|
509 |
-
<label for="discount_code"><?php
|
510 |
<input class="<?php echo pmpro_get_element_class( 'input', 'discount_code' ); ?>" id="discount_code" name="discount_code" type="text" size="20" value="<?php echo esc_attr($discount_code)?>" />
|
511 |
-
<input type="button" id="discount_code_button" name="discount_code_button" value="<?php
|
512 |
<p id="discount_code_message" class="<?php echo pmpro_get_element_class( 'pmpro_message' ); ?>" style="display: none;"></p>
|
513 |
</div>
|
514 |
<?php } ?>
|
@@ -598,7 +605,7 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
598 |
//tax
|
599 |
$order->subtotal = $amount;
|
600 |
$tax = $order->getTax(true);
|
601 |
-
$amount =
|
602 |
|
603 |
//create a customer
|
604 |
$this->getCustomer($order);
|
@@ -611,10 +618,13 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
611 |
//charge
|
612 |
try
|
613 |
{
|
614 |
-
$
|
615 |
-
|
616 |
-
|
617 |
-
|
|
|
|
|
|
|
618 |
}
|
619 |
catch (Exception $e)
|
620 |
{
|
@@ -861,7 +871,7 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
861 |
//figure out the amounts
|
862 |
$amount = $order->PaymentAmount;
|
863 |
$amount_tax = $order->getTaxForPrice($amount);
|
864 |
-
$amount =
|
865 |
|
866 |
/*
|
867 |
There are two parts to the trial. Part 1 is simply the delay until the first payment
|
@@ -888,10 +898,10 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
888 |
|
889 |
$start_ts = strtotime($order->ProfileStartDate, current_time("timestamp") );
|
890 |
$now = strtotime( date('Y-m-d\T00:00:00', current_time('timestamp' ) ), current_time('timestamp' ) );
|
891 |
-
|
892 |
//convert back to days
|
893 |
$trial_period_days = ceil(abs( $now - $start_ts ) / 86400);
|
894 |
-
|
895 |
//now add the actual trial set by the site
|
896 |
if(!empty($order->TrialBillingCycles))
|
897 |
{
|
@@ -909,7 +919,7 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
909 |
//subscribe to the plan
|
910 |
try
|
911 |
{
|
912 |
-
|
913 |
$details = array(
|
914 |
'paymentMethodToken' => $this->customer->creditCards[0]->token,
|
915 |
'planId' => $this->get_plan_id( $order->membership_id ),
|
@@ -970,7 +980,7 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
970 |
return false; //couldn't find the customer
|
971 |
}
|
972 |
}
|
973 |
-
|
974 |
/**
|
975 |
* Cancel order and Braintree Subscription if applicable
|
976 |
*
|
@@ -984,9 +994,9 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
984 |
$order->error = __("Payment error: Please contact the webmaster (braintree-load-error)", 'paid-memberships-pro');
|
985 |
return false;
|
986 |
}
|
987 |
-
|
988 |
if ( isset( $_POST['bt_payload']) && isset( $_POST['bt_payload']) ) {
|
989 |
-
|
990 |
try {
|
991 |
$webhookNotification = Braintree_WebhookNotification::parse( $_POST['bt_signature'], $_POST['bt_payload'] );
|
992 |
if ( Braintree_WebhookNotification::SUBSCRIPTION_CANCELED === $webhookNotification->kind ) {
|
@@ -997,10 +1007,10 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
997 |
// Don't do anything
|
998 |
}
|
999 |
}
|
1000 |
-
|
1001 |
// Always cancel, even if Braintree fails
|
1002 |
-
$order->updateStatus("cancelled" );
|
1003 |
-
|
1004 |
//require a subscription id
|
1005 |
if(empty($order->subscription_transaction_id))
|
1006 |
return false;
|
109 |
function loadBraintreeLibrary()
|
110 |
{
|
111 |
//load Braintree library if it hasn't been loaded already (usually by another plugin using Braintree)
|
112 |
+
if ( ! class_exists( "\Braintree" ) ) {
|
113 |
require_once( PMPRO_DIR . "/includes/lib/Braintree/lib/Braintree.php");
|
114 |
+
} else {
|
115 |
+
// Another plugin may have loaded the Braintree library already.
|
116 |
+
// Let's log the current Braintree Library info so that we know
|
117 |
+
// where to look if we need to troubleshoot library conflicts.
|
118 |
+
$previously_loaded_class = new \ReflectionClass( '\Braintree' );
|
119 |
+
pmpro_track_library_conflict( 'braintree', $previously_loaded_class->getFileName(), Braintree\Version::get() );
|
120 |
+
}
|
121 |
}
|
122 |
|
123 |
/**
|
128 |
$cache_key = 'pmpro_braintree_plans_' . md5($this->gateway_environment . pmpro_getOption("braintree_merchantid") . pmpro_getOption("braintree_publickey") . pmpro_getOption("braintree_privatekey"));
|
129 |
|
130 |
$plans = wp_cache_get( $cache_key,'pmpro_levels' );
|
131 |
+
|
132 |
//check Braintree if no transient found
|
133 |
if($plans === false) {
|
134 |
|
176 |
* @param $level_id
|
177 |
*/
|
178 |
public static function pmpro_save_level_action( $level_id ) {
|
179 |
+
|
180 |
$BT_Gateway = new PMProGateway_braintree();
|
181 |
+
|
182 |
if ( isset( $BT_Gateway->gateway_environment ) ) {
|
183 |
$cache_key = 'pmpro_braintree_plans_' . md5($BT_Gateway->gateway_environment . pmpro_getOption("braintree_merchantid") . pmpro_getOption("braintree_publickey") . pmpro_getOption("braintree_privatekey"));
|
184 |
+
|
185 |
wp_cache_delete( $cache_key,'pmpro_levels' );
|
186 |
}
|
187 |
}
|
188 |
+
|
189 |
/**
|
190 |
* Search for a plan by id
|
191 |
*/
|
317 |
</tr>
|
318 |
<tr class="gateway gateway_braintree" <?php if($gateway != "braintree") { ?>style="display: none;"<?php } ?>>
|
319 |
<th scope="row" valign="top">
|
320 |
+
<label for="braintree_merchantid"><?php esc_html_e('Merchant ID', 'paid-memberships-pro' );?>:</label>
|
321 |
</th>
|
322 |
<td>
|
323 |
<input type="text" id="braintree_merchantid" name="braintree_merchantid" value="<?php echo esc_attr($values['braintree_merchantid'])?>" class="regular-text code" />
|
325 |
</tr>
|
326 |
<tr class="gateway gateway_braintree" <?php if($gateway != "braintree") { ?>style="display: none;"<?php } ?>>
|
327 |
<th scope="row" valign="top">
|
328 |
+
<label for="braintree_publickey"><?php esc_html_e('Public Key', 'paid-memberships-pro' );?>:</label>
|
329 |
</th>
|
330 |
<td>
|
331 |
<input type="text" id="braintree_publickey" name="braintree_publickey" value="<?php echo esc_attr($values['braintree_publickey'])?>" class="regular-text code" />
|
333 |
</tr>
|
334 |
<tr class="gateway gateway_braintree" <?php if($gateway != "braintree") { ?>style="display: none;"<?php } ?>>
|
335 |
<th scope="row" valign="top">
|
336 |
+
<label for="braintree_privatekey"><?php esc_html_e('Private Key', 'paid-memberships-pro' );?>:</label>
|
337 |
</th>
|
338 |
<td>
|
339 |
<input type="text" id="braintree_privatekey" name="braintree_privatekey" value="<?php echo esc_attr($values['braintree_privatekey'])?>" autocomplete="off" class="regular-text code pmpro-admin-secure-key" />
|
341 |
</tr>
|
342 |
<tr class="gateway gateway_braintree" <?php if($gateway != "braintree") { ?>style="display: none;"<?php } ?>>
|
343 |
<th scope="row" valign="top">
|
344 |
+
<label for="braintree_encryptionkey"><?php esc_html_e('Client-Side Encryption Key', 'paid-memberships-pro' );?>:</label>
|
345 |
</th>
|
346 |
<td>
|
347 |
<textarea id="braintree_encryptionkey" name="braintree_encryptionkey" autocomplete="off" rows="3" cols="50" class="large-text code pmpro-admin-secure-key"><?php echo esc_textarea($values['braintree_encryptionkey'])?></textarea>
|
349 |
</tr>
|
350 |
<tr class="gateway gateway_braintree" <?php if($gateway != "braintree") { ?>style="display: none;"<?php } ?>>
|
351 |
<th scope="row" valign="top">
|
352 |
+
<label><?php esc_html_e('Web Hook URL', 'paid-memberships-pro' );?>:</label>
|
353 |
</th>
|
354 |
<td>
|
355 |
+
<p><?php esc_html_e('To fully integrate with Braintree, be sure to set your Web Hook URL to', 'paid-memberships-pro' );?></p>
|
356 |
<p><code><?php
|
357 |
//echo admin_url("admin-ajax.php") . "?action=braintree_webhook";
|
358 |
echo add_query_arg( 'action', 'braintree_webhook', admin_url( 'admin-ajax.php' ) );
|
361 |
</tr>
|
362 |
<?php
|
363 |
}
|
364 |
+
|
365 |
/**
|
366 |
* Code added to checkout preheader.
|
367 |
*
|
458 |
?>
|
459 |
<div id="pmpro_payment_information_fields" class="<?php echo pmpro_get_element_class( 'pmpro_checkout', 'pmpro_payment_information_fields' ); ?>" <?php if(!$pmpro_requirebilling || apply_filters("pmpro_hide_payment_information_fields", false) ) { ?>style="display: none;"<?php } ?>>
|
460 |
<h3>
|
461 |
+
<span class="<?php echo pmpro_get_element_class( 'pmpro_checkout-h3-name' ); ?>"><?php esc_html_e('Payment Information', 'paid-memberships-pro' );?></span>
|
462 |
<span class="<?php echo pmpro_get_element_class( 'pmpro_checkout-h3-msg' ); ?>"><?php printf(__('We Accept %s', 'paid-memberships-pro' ), $pmpro_accepted_credit_cards_string);?></span>
|
463 |
</h3>
|
464 |
<?php $sslseal = pmpro_getOption("sslseal"); ?>
|
470 |
$pmpro_include_cardtype_field = apply_filters('pmpro_include_cardtype_field', true);
|
471 |
if($pmpro_include_cardtype_field) { ?>
|
472 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_checkout-field pmpro_payment-card-type', 'pmpro_payment-card-type' ); ?>">
|
473 |
+
<label for="CardType"><?php esc_html_e('Card Type', 'paid-memberships-pro' );?></label>
|
474 |
<select id="CardType" name="CardType" class="<?php echo pmpro_get_element_class( 'CardType' ); ?>">
|
475 |
<?php foreach($pmpro_accepted_credit_cards as $cc) { ?>
|
476 |
+
<option value="<?php echo esc_attr( $cc ); ?>" <?php if($CardType == $cc) { ?>selected="selected"<?php } ?>><?php echo esc_html( $cc ); ?></option>
|
477 |
<?php } ?>
|
478 |
</select>
|
479 |
</div>
|
480 |
<?php } ?>
|
481 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_checkout-field pmpro_payment-account-number', 'pmpro_payment-account-number' ); ?>">
|
482 |
+
<label for="AccountNumber"><?php esc_html_e('Card Number', 'paid-memberships-pro' );?></label>
|
483 |
<input id="AccountNumber" name="AccountNumber" class="<?php echo pmpro_get_element_class( 'input', 'AccountNumber' ); ?>" type="text" size="25" value="<?php echo esc_attr($AccountNumber)?>" data-encrypted-name="number" autocomplete="off" />
|
484 |
</div>
|
485 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_checkout-field pmpro_payment-expiration', 'pmpro_payment-expiration' ); ?>">
|
486 |
+
<label for="ExpirationMonth"><?php esc_html_e('Expiration Date', 'paid-memberships-pro' );?></label>
|
487 |
<select id="ExpirationMonth" name="ExpirationMonth" class="<?php echo pmpro_get_element_class( 'ExpirationMonth' ); ?>">
|
488 |
<option value="01" <?php if($ExpirationMonth == "01") { ?>selected="selected"<?php } ?>>01</option>
|
489 |
<option value="02" <?php if($ExpirationMonth == "02") { ?>selected="selected"<?php } ?>>02</option>
|
499 |
<option value="12" <?php if($ExpirationMonth == "12") { ?>selected="selected"<?php } ?>>12</option>
|
500 |
</select>/<select id="ExpirationYear" name="ExpirationYear" class="<?php echo pmpro_get_element_class( 'ExpirationYear' ); ?>">
|
501 |
<?php for($i = date_i18n("Y"); $i < date_i18n("Y") + 10; $i++) { ?>
|
502 |
+
<option value="<?php echo esc_attr( $i ); ?>" <?php if($ExpirationYear == $i) { ?>selected="selected"<?php } ?>><?php echo esc_html( $i ); ?></option>
|
503 |
<?php } ?>
|
504 |
</select>
|
505 |
</div>
|
507 |
$pmpro_show_cvv = apply_filters("pmpro_show_cvv", true);
|
508 |
if($pmpro_show_cvv) { ?>
|
509 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_checkout-field pmpro_payment-cvv', 'pmpro_payment-cvv' ); ?>">
|
510 |
+
<label for="CVV"><?php esc_html_e('CVV', 'paid-memberships-pro' );?></label>
|
511 |
+
<input id="CVV" name="cvv" type="text" size="4" value="<?php if(!empty($_REQUEST['CVV'])) { echo esc_attr(sanitize_text_field($_REQUEST['CVV'])); }?>" class="<?php echo pmpro_get_element_class( 'input', 'CVV' ); ?>" data-encrypted-name="cvv" /> <small>(<a href="javascript:void(0);" onclick="javascript:window.open('<?php echo pmpro_https_filter(PMPRO_URL)?>/pages/popup-cvv.html','cvv','toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=600, height=475');"><?php esc_html_e("what's this?", 'paid-memberships-pro' );?></a>)</small>
|
512 |
</div>
|
513 |
<?php } ?>
|
514 |
<?php if($pmpro_show_discount_code) { ?>
|
515 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_checkout-field pmpro_payment-discount-code', 'pmpro_payment-discount-code' ); ?>">
|
516 |
+
<label for="discount_code"><?php esc_html_e('Discount Code', 'paid-memberships-pro' );?></label>
|
517 |
<input class="<?php echo pmpro_get_element_class( 'input', 'discount_code' ); ?>" id="discount_code" name="discount_code" type="text" size="20" value="<?php echo esc_attr($discount_code)?>" />
|
518 |
+
<input type="button" id="discount_code_button" name="discount_code_button" value="<?php esc_attr_e('Apply', 'paid-memberships-pro' );?>" />
|
519 |
<p id="discount_code_message" class="<?php echo pmpro_get_element_class( 'pmpro_message' ); ?>" style="display: none;"></p>
|
520 |
</div>
|
521 |
<?php } ?>
|
605 |
//tax
|
606 |
$order->subtotal = $amount;
|
607 |
$tax = $order->getTax(true);
|
608 |
+
$amount = pmpro_round_price_as_string((float)$order->subtotal + (float)$tax);
|
609 |
|
610 |
//create a customer
|
611 |
$this->getCustomer($order);
|
618 |
//charge
|
619 |
try
|
620 |
{
|
621 |
+
$braintree_sale_array = apply_filters( 'pmpro_braintree_transaction_sale_array', array(
|
622 |
+
'amount' => $amount,
|
623 |
+
'customerId' => $this->customer->id
|
624 |
+
)
|
625 |
+
);
|
626 |
+
|
627 |
+
$response = Braintree_Transaction::sale( $braintree_sale_array );
|
628 |
}
|
629 |
catch (Exception $e)
|
630 |
{
|
871 |
//figure out the amounts
|
872 |
$amount = $order->PaymentAmount;
|
873 |
$amount_tax = $order->getTaxForPrice($amount);
|
874 |
+
$amount = pmpro_round_price_as_string((float)$amount + (float)$amount_tax);
|
875 |
|
876 |
/*
|
877 |
There are two parts to the trial. Part 1 is simply the delay until the first payment
|
898 |
|
899 |
$start_ts = strtotime($order->ProfileStartDate, current_time("timestamp") );
|
900 |
$now = strtotime( date('Y-m-d\T00:00:00', current_time('timestamp' ) ), current_time('timestamp' ) );
|
901 |
+
|
902 |
//convert back to days
|
903 |
$trial_period_days = ceil(abs( $now - $start_ts ) / 86400);
|
904 |
+
|
905 |
//now add the actual trial set by the site
|
906 |
if(!empty($order->TrialBillingCycles))
|
907 |
{
|
919 |
//subscribe to the plan
|
920 |
try
|
921 |
{
|
922 |
+
|
923 |
$details = array(
|
924 |
'paymentMethodToken' => $this->customer->creditCards[0]->token,
|
925 |
'planId' => $this->get_plan_id( $order->membership_id ),
|
980 |
return false; //couldn't find the customer
|
981 |
}
|
982 |
}
|
983 |
+
|
984 |
/**
|
985 |
* Cancel order and Braintree Subscription if applicable
|
986 |
*
|
994 |
$order->error = __("Payment error: Please contact the webmaster (braintree-load-error)", 'paid-memberships-pro');
|
995 |
return false;
|
996 |
}
|
997 |
+
|
998 |
if ( isset( $_POST['bt_payload']) && isset( $_POST['bt_payload']) ) {
|
999 |
+
|
1000 |
try {
|
1001 |
$webhookNotification = Braintree_WebhookNotification::parse( $_POST['bt_signature'], $_POST['bt_payload'] );
|
1002 |
if ( Braintree_WebhookNotification::SUBSCRIPTION_CANCELED === $webhookNotification->kind ) {
|
1007 |
// Don't do anything
|
1008 |
}
|
1009 |
}
|
1010 |
+
|
1011 |
// Always cancel, even if Braintree fails
|
1012 |
+
$order->updateStatus("cancelled" );
|
1013 |
+
|
1014 |
//require a subscription id
|
1015 |
if(empty($order->subscription_transaction_id))
|
1016 |
return false;
|
classes/gateways/class.pmprogateway_check.php
CHANGED
@@ -99,16 +99,16 @@
|
|
99 |
<tr class="pmpro_settings_divider gateway gateway_check" <?php if($gateway != "check") { ?>style="display: none;"<?php } ?>>
|
100 |
<td colspan="2">
|
101 |
<hr />
|
102 |
-
<h3><?php
|
103 |
</td>
|
104 |
</tr>
|
105 |
<tr class="gateway gateway_check" <?php if($gateway != "check") { ?>style="display: none;"<?php } ?>>
|
106 |
<th scope="row" valign="top">
|
107 |
-
<label for="instructions"><?php
|
108 |
</th>
|
109 |
<td>
|
110 |
<textarea id="instructions" name="instructions" rows="3" cols="50" class="large-text"><?php echo wpautop( wp_unslash( $values['instructions'] ) ); ?></textarea>
|
111 |
-
<p class="description"><?php
|
112 |
</td>
|
113 |
</tr>
|
114 |
<?php
|
99 |
<tr class="pmpro_settings_divider gateway gateway_check" <?php if($gateway != "check") { ?>style="display: none;"<?php } ?>>
|
100 |
<td colspan="2">
|
101 |
<hr />
|
102 |
+
<h3><?php esc_html_e('Pay by Check Settings', 'paid-memberships-pro' ); ?></h3>
|
103 |
</td>
|
104 |
</tr>
|
105 |
<tr class="gateway gateway_check" <?php if($gateway != "check") { ?>style="display: none;"<?php } ?>>
|
106 |
<th scope="row" valign="top">
|
107 |
+
<label for="instructions"><?php esc_html_e('Instructions', 'paid-memberships-pro' );?></label>
|
108 |
</th>
|
109 |
<td>
|
110 |
<textarea id="instructions" name="instructions" rows="3" cols="50" class="large-text"><?php echo wpautop( wp_unslash( $values['instructions'] ) ); ?></textarea>
|
111 |
+
<p class="description"><?php esc_html_e('Who to write the check out to. Where to mail it. Shown on checkout, confirmation, and invoice pages.', 'paid-memberships-pro' );?></p>
|
112 |
</td>
|
113 |
</tr>
|
114 |
<?php
|
classes/gateways/class.pmprogateway_cybersource.php
CHANGED
@@ -86,12 +86,12 @@
|
|
86 |
</tr>
|
87 |
<tr class="gateway gateway_cybersource" <?php if($gateway != "cybersource") { ?>style="display: none;"<?php } ?>>
|
88 |
<td colspan="2" style="padding: 0px;">
|
89 |
-
<p class="pmpro_message"><?php
|
90 |
</td>
|
91 |
</tr>
|
92 |
<tr class="gateway gateway_cybersource" <?php if($gateway != "cybersource") { ?>style="display: none;"<?php } ?>>
|
93 |
<th scope="row" valign="top">
|
94 |
-
<label for="cybersource_merchantid"><?php
|
95 |
</th>
|
96 |
<td>
|
97 |
<input type="text" id="cybersource_merchantid" name="cybersource_merchantid" value="<?php echo esc_attr($values['cybersource_merchantid'])?>" class="regular-text code" />
|
@@ -99,7 +99,7 @@
|
|
99 |
</tr>
|
100 |
<tr class="gateway gateway_cybersource" <?php if($gateway != "cybersource") { ?>style="display: none;"<?php } ?>>
|
101 |
<th scope="row" valign="top">
|
102 |
-
<label for="cybersource_securitykey"><?php
|
103 |
</th>
|
104 |
<td>
|
105 |
<textarea id="cybersource_securitykey" name="cybersource_securitykey" autocomplete="off" rows="3" cols="50" class="large-text code pmpro-admin-secure-key"><?php echo esc_textarea($values['cybersource_securitykey']);?></textarea>
|
@@ -318,7 +318,7 @@
|
|
318 |
$order->shorterror = __( "Error validating credit card type. Make sure your credit card number is correct and try again.", "paid-memberships-pro" );
|
319 |
return false;
|
320 |
}
|
321 |
-
|
322 |
//currency
|
323 |
$purchaseTotals = new stdClass();
|
324 |
$purchaseTotals->currency = $pmpro_currency;
|
@@ -343,7 +343,7 @@
|
|
343 |
{
|
344 |
$order->error = sprintf( __( 'Error communicating with Cybersource: %', 'paid-memberships-pro' ), $t->getMessage() );
|
345 |
$order->shorterror = __( 'Error communicating with Cybersource.', 'paid-memberships-pro' );
|
346 |
-
return false;
|
347 |
}
|
348 |
catch(Exception $e)
|
349 |
{
|
@@ -395,7 +395,7 @@
|
|
395 |
{
|
396 |
$order->error = sprintf( __( 'Error communicating with Cybersource: %', 'paid-memberships-pro' ), $t->getMessage() );
|
397 |
$order->shorterror = __( 'Error communicating with Cybersource.', 'paid-memberships-pro' );
|
398 |
-
return false;
|
399 |
}
|
400 |
catch(Exception $e)
|
401 |
{
|
@@ -433,7 +433,7 @@
|
|
433 |
//tax
|
434 |
$order->subtotal = $amount;
|
435 |
$tax = $order->getTax(true);
|
436 |
-
$amount =
|
437 |
//combine address
|
438 |
$address = $order->Address1;
|
439 |
if(!empty($order->Address2))
|
@@ -505,7 +505,7 @@
|
|
505 |
{
|
506 |
$order->error = sprintf( __( 'Error communicating with Cybersource: %', 'paid-memberships-pro' ), $t->getMessage() );
|
507 |
$order->shorterror = __( 'Error communicating with Cybersource.', 'paid-memberships-pro' );
|
508 |
-
return false;
|
509 |
}
|
510 |
catch(Exception $e)
|
511 |
{
|
@@ -556,7 +556,7 @@
|
|
556 |
//figure out the amounts
|
557 |
$amount = $order->PaymentAmount;
|
558 |
$amount_tax = $order->getTaxForPrice($amount);
|
559 |
-
$amount =
|
560 |
/*
|
561 |
There are two parts to the trial. Part 1 is simply the delay until the first payment
|
562 |
since we are doing the first payment as a separate transaction.
|
@@ -643,7 +643,7 @@
|
|
643 |
$request->subscription = $subscription;
|
644 |
//recurring info
|
645 |
$recurringSubscriptionInfo = new stdClass();
|
646 |
-
$recurringSubscriptionInfo->amount =
|
647 |
$recurringSubscriptionInfo->startDate = $profile_start_date;
|
648 |
$recurringSubscriptionInfo->frequency = $frequency;
|
649 |
if(!empty($order->TotalBillingCycles))
|
@@ -695,7 +695,7 @@
|
|
695 |
{
|
696 |
$order->error = sprintf( __( 'Error communicating with Cybersource: %', 'paid-memberships-pro' ), $t->getMessage() );
|
697 |
$order->shorterror = __( 'Error communicating with Cybersource.', 'paid-memberships-pro' );
|
698 |
-
return false;
|
699 |
}
|
700 |
catch(Exception $e)
|
701 |
{
|
@@ -765,8 +765,8 @@
|
|
765 |
|
766 |
if( empty($request->card->cardType) )
|
767 |
{
|
768 |
-
$order->error = __( "Error validating credit card type. Make sure your credit card number is correct and try again.", "paid-memberships-pro"
|
769 |
-
$order->shorterror = __( "Error validating credit card type. Make sure your credit card number is correct and try again.", "paid-memberships-pro"
|
770 |
return false;
|
771 |
}
|
772 |
|
@@ -779,7 +779,7 @@
|
|
779 |
{
|
780 |
$order->error = sprintf( __( 'Error communicating with Cybersource: %', 'paid-memberships-pro' ), $t->getMessage() );
|
781 |
$order->shorterror = __( 'Error communicating with Cybersource.', 'paid-memberships-pro' );
|
782 |
-
return false;
|
783 |
}
|
784 |
catch(Exception $e)
|
785 |
{
|
@@ -833,7 +833,7 @@
|
|
833 |
{
|
834 |
$order->error = sprintf( __( 'Error communicating with Cybersource: %', 'paid-memberships-pro' ), $t->getMessage() );
|
835 |
$order->shorterror = __( 'Error communicating with Cybersource.', 'paid-memberships-pro' );
|
836 |
-
return false;
|
837 |
}
|
838 |
catch(Exception $e)
|
839 |
{
|
@@ -920,7 +920,7 @@
|
|
920 |
$error = $error_messages[$reply->reasonCode];
|
921 |
else
|
922 |
return __( "Unknown error.", "paid-memberships-pro" );
|
923 |
-
|
924 |
// list invalid fields from reply
|
925 |
if( isset($reply->invalidField) && !empty($reply->invalidField) )
|
926 |
{
|
86 |
</tr>
|
87 |
<tr class="gateway gateway_cybersource" <?php if($gateway != "cybersource") { ?>style="display: none;"<?php } ?>>
|
88 |
<td colspan="2" style="padding: 0px;">
|
89 |
+
<p class="pmpro_message"><?php esc_html_e('Note', 'paid-memberships-pro' );?>:</strong> <?php _e('This gateway option is in beta. Some functionality may not be available. Please contact Paid Memberships Pro with any issues you run into. <strong>Please be sure to upgrade Paid Memberships Pro to the latest versions when available.</strong>', 'paid-memberships-pro' );?></p>
|
90 |
</td>
|
91 |
</tr>
|
92 |
<tr class="gateway gateway_cybersource" <?php if($gateway != "cybersource") { ?>style="display: none;"<?php } ?>>
|
93 |
<th scope="row" valign="top">
|
94 |
+
<label for="cybersource_merchantid"><?php esc_html_e('Merchant ID', 'paid-memberships-pro' );?>:</label>
|
95 |
</th>
|
96 |
<td>
|
97 |
<input type="text" id="cybersource_merchantid" name="cybersource_merchantid" value="<?php echo esc_attr($values['cybersource_merchantid'])?>" class="regular-text code" />
|
99 |
</tr>
|
100 |
<tr class="gateway gateway_cybersource" <?php if($gateway != "cybersource") { ?>style="display: none;"<?php } ?>>
|
101 |
<th scope="row" valign="top">
|
102 |
+
<label for="cybersource_securitykey"><?php esc_html_e('Transaction Security Key', 'paid-memberships-pro' );?>:</label>
|
103 |
</th>
|
104 |
<td>
|
105 |
<textarea id="cybersource_securitykey" name="cybersource_securitykey" autocomplete="off" rows="3" cols="50" class="large-text code pmpro-admin-secure-key"><?php echo esc_textarea($values['cybersource_securitykey']);?></textarea>
|
318 |
$order->shorterror = __( "Error validating credit card type. Make sure your credit card number is correct and try again.", "paid-memberships-pro" );
|
319 |
return false;
|
320 |
}
|
321 |
+
|
322 |
//currency
|
323 |
$purchaseTotals = new stdClass();
|
324 |
$purchaseTotals->currency = $pmpro_currency;
|
343 |
{
|
344 |
$order->error = sprintf( __( 'Error communicating with Cybersource: %', 'paid-memberships-pro' ), $t->getMessage() );
|
345 |
$order->shorterror = __( 'Error communicating with Cybersource.', 'paid-memberships-pro' );
|
346 |
+
return false;
|
347 |
}
|
348 |
catch(Exception $e)
|
349 |
{
|
395 |
{
|
396 |
$order->error = sprintf( __( 'Error communicating with Cybersource: %', 'paid-memberships-pro' ), $t->getMessage() );
|
397 |
$order->shorterror = __( 'Error communicating with Cybersource.', 'paid-memberships-pro' );
|
398 |
+
return false;
|
399 |
}
|
400 |
catch(Exception $e)
|
401 |
{
|
433 |
//tax
|
434 |
$order->subtotal = $amount;
|
435 |
$tax = $order->getTax(true);
|
436 |
+
$amount = pmpro_round_price_as_string((float)$order->subtotal + (float)$tax);
|
437 |
//combine address
|
438 |
$address = $order->Address1;
|
439 |
if(!empty($order->Address2))
|
505 |
{
|
506 |
$order->error = sprintf( __( 'Error communicating with Cybersource: %', 'paid-memberships-pro' ), $t->getMessage() );
|
507 |
$order->shorterror = __( 'Error communicating with Cybersource.', 'paid-memberships-pro' );
|
508 |
+
return false;
|
509 |
}
|
510 |
catch(Exception $e)
|
511 |
{
|
556 |
//figure out the amounts
|
557 |
$amount = $order->PaymentAmount;
|
558 |
$amount_tax = $order->getTaxForPrice($amount);
|
559 |
+
$amount = pmpro_round_price_as_string((float)$amount + (float)$amount_tax);
|
560 |
/*
|
561 |
There are two parts to the trial. Part 1 is simply the delay until the first payment
|
562 |
since we are doing the first payment as a separate transaction.
|
643 |
$request->subscription = $subscription;
|
644 |
//recurring info
|
645 |
$recurringSubscriptionInfo = new stdClass();
|
646 |
+
$recurringSubscriptionInfo->amount = $amount;
|
647 |
$recurringSubscriptionInfo->startDate = $profile_start_date;
|
648 |
$recurringSubscriptionInfo->frequency = $frequency;
|
649 |
if(!empty($order->TotalBillingCycles))
|
695 |
{
|
696 |
$order->error = sprintf( __( 'Error communicating with Cybersource: %', 'paid-memberships-pro' ), $t->getMessage() );
|
697 |
$order->shorterror = __( 'Error communicating with Cybersource.', 'paid-memberships-pro' );
|
698 |
+
return false;
|
699 |
}
|
700 |
catch(Exception $e)
|
701 |
{
|
765 |
|
766 |
if( empty($request->card->cardType) )
|
767 |
{
|
768 |
+
$order->error = __( "Error validating credit card type. Make sure your credit card number is correct and try again.", "paid-memberships-pro" );
|
769 |
+
$order->shorterror = __( "Error validating credit card type. Make sure your credit card number is correct and try again.", "paid-memberships-pro" );
|
770 |
return false;
|
771 |
}
|
772 |
|
779 |
{
|
780 |
$order->error = sprintf( __( 'Error communicating with Cybersource: %', 'paid-memberships-pro' ), $t->getMessage() );
|
781 |
$order->shorterror = __( 'Error communicating with Cybersource.', 'paid-memberships-pro' );
|
782 |
+
return false;
|
783 |
}
|
784 |
catch(Exception $e)
|
785 |
{
|
833 |
{
|
834 |
$order->error = sprintf( __( 'Error communicating with Cybersource: %', 'paid-memberships-pro' ), $t->getMessage() );
|
835 |
$order->shorterror = __( 'Error communicating with Cybersource.', 'paid-memberships-pro' );
|
836 |
+
return false;
|
837 |
}
|
838 |
catch(Exception $e)
|
839 |
{
|
920 |
$error = $error_messages[$reply->reasonCode];
|
921 |
else
|
922 |
return __( "Unknown error.", "paid-memberships-pro" );
|
923 |
+
|
924 |
// list invalid fields from reply
|
925 |
if( isset($reply->invalidField) && !empty($reply->invalidField) )
|
926 |
{
|
classes/gateways/class.pmprogateway_payflowpro.php
CHANGED
@@ -98,7 +98,7 @@
|
|
98 |
</tr>
|
99 |
<tr class="gateway gateway_payflowpro" <?php if($gateway != "payflowpro") { ?>style="display: none;"<?php } ?>>
|
100 |
<th scope="row" valign="top">
|
101 |
-
<label for="payflow_partner"><?php
|
102 |
</th>
|
103 |
<td>
|
104 |
<input type="text" id="payflow_partner" name="payflow_partner" value="<?php echo esc_attr($values['payflow_partner'])?>" class="regular-text code" />
|
@@ -106,7 +106,7 @@
|
|
106 |
</tr>
|
107 |
<tr class="gateway gateway_payflowpro" <?php if($gateway != "payflowpro") { ?>style="display: none;"<?php } ?>>
|
108 |
<th scope="row" valign="top">
|
109 |
-
<label for="payflow_vendor"><?php
|
110 |
</th>
|
111 |
<td>
|
112 |
<input type="text" id="payflow_vendor" name="payflow_vendor" value="<?php echo esc_attr($values['payflow_vendor'])?>" class="regular-text code" />
|
@@ -114,7 +114,7 @@
|
|
114 |
</tr>
|
115 |
<tr class="gateway gateway_payflowpro" <?php if($gateway != "payflowpro") { ?>style="display: none;"<?php } ?>>
|
116 |
<th scope="row" valign="top">
|
117 |
-
<label for="payflow_user"><?php
|
118 |
</th>
|
119 |
<td>
|
120 |
<input type="text" id="payflow_user" name="payflow_user" value="<?php echo esc_attr($values['payflow_user'])?>" class="regular-text code" />
|
@@ -122,7 +122,7 @@
|
|
122 |
</tr>
|
123 |
<tr class="gateway gateway_payflowpro" <?php if($gateway != "payflowpro") { ?>style="display: none;"<?php } ?>>
|
124 |
<th scope="row" valign="top">
|
125 |
-
<label for="payflow_pwd"><?php
|
126 |
</th>
|
127 |
<td>
|
128 |
<input type="password" id="payflow_pwd" name="payflow_pwd" value="<?php echo esc_attr($values['payflow_pwd'])?>" class="regular-text code" />
|
@@ -130,7 +130,7 @@
|
|
130 |
</tr>
|
131 |
<tr class="gateway gateway_payflowpro" <?php if($gateway != "payflowpro") { ?>style="display: none;"<?php } ?>>
|
132 |
<th scope="row" valign="top">
|
133 |
-
<label><?php
|
134 |
</th>
|
135 |
<td>
|
136 |
<p class="description">
|
@@ -316,7 +316,7 @@
|
|
316 |
$amount = $order->InitialPayment;
|
317 |
$amount_tax = $order->getTaxForPrice($amount);
|
318 |
$order->subtotal = $amount;
|
319 |
-
$amount =
|
320 |
|
321 |
//paypal profile stuff
|
322 |
$nvpStr = "";
|
@@ -392,7 +392,7 @@
|
|
392 |
//taxes on the amount
|
393 |
$amount = $order->PaymentAmount;
|
394 |
$amount_tax = $order->getTaxForPrice($amount);
|
395 |
-
$amount =
|
396 |
|
397 |
if($order->BillingPeriod == "Day")
|
398 |
$payperiod = "DAYS";
|
98 |
</tr>
|
99 |
<tr class="gateway gateway_payflowpro" <?php if($gateway != "payflowpro") { ?>style="display: none;"<?php } ?>>
|
100 |
<th scope="row" valign="top">
|
101 |
+
<label for="payflow_partner"><?php esc_html_e('Partner', 'paid-memberships-pro' );?>:</label>
|
102 |
</th>
|
103 |
<td>
|
104 |
<input type="text" id="payflow_partner" name="payflow_partner" value="<?php echo esc_attr($values['payflow_partner'])?>" class="regular-text code" />
|
106 |
</tr>
|
107 |
<tr class="gateway gateway_payflowpro" <?php if($gateway != "payflowpro") { ?>style="display: none;"<?php } ?>>
|
108 |
<th scope="row" valign="top">
|
109 |
+
<label for="payflow_vendor"><?php esc_html_e('Vendor', 'paid-memberships-pro' );?>:</label>
|
110 |
</th>
|
111 |
<td>
|
112 |
<input type="text" id="payflow_vendor" name="payflow_vendor" value="<?php echo esc_attr($values['payflow_vendor'])?>" class="regular-text code" />
|
114 |
</tr>
|
115 |
<tr class="gateway gateway_payflowpro" <?php if($gateway != "payflowpro") { ?>style="display: none;"<?php } ?>>
|
116 |
<th scope="row" valign="top">
|
117 |
+
<label for="payflow_user"><?php esc_html_e('User', 'paid-memberships-pro' );?>:</label>
|
118 |
</th>
|
119 |
<td>
|
120 |
<input type="text" id="payflow_user" name="payflow_user" value="<?php echo esc_attr($values['payflow_user'])?>" class="regular-text code" />
|
122 |
</tr>
|
123 |
<tr class="gateway gateway_payflowpro" <?php if($gateway != "payflowpro") { ?>style="display: none;"<?php } ?>>
|
124 |
<th scope="row" valign="top">
|
125 |
+
<label for="payflow_pwd"><?php esc_html_e('Password', 'paid-memberships-pro' );?>:</label>
|
126 |
</th>
|
127 |
<td>
|
128 |
<input type="password" id="payflow_pwd" name="payflow_pwd" value="<?php echo esc_attr($values['payflow_pwd'])?>" class="regular-text code" />
|
130 |
</tr>
|
131 |
<tr class="gateway gateway_payflowpro" <?php if($gateway != "payflowpro") { ?>style="display: none;"<?php } ?>>
|
132 |
<th scope="row" valign="top">
|
133 |
+
<label><?php esc_html_e('IPN Handler', 'paid-memberships-pro' );?>:</label>
|
134 |
</th>
|
135 |
<td>
|
136 |
<p class="description">
|
316 |
$amount = $order->InitialPayment;
|
317 |
$amount_tax = $order->getTaxForPrice($amount);
|
318 |
$order->subtotal = $amount;
|
319 |
+
$amount = pmpro_round_price_as_string((float)$amount + (float)$amount_tax);
|
320 |
|
321 |
//paypal profile stuff
|
322 |
$nvpStr = "";
|
392 |
//taxes on the amount
|
393 |
$amount = $order->PaymentAmount;
|
394 |
$amount_tax = $order->getTaxForPrice($amount);
|
395 |
+
$amount = pmpro_round_price_as_string((float)$amount + (float)$amount_tax);
|
396 |
|
397 |
if($order->BillingPeriod == "Day")
|
398 |
$payperiod = "DAYS";
|
classes/gateways/class.pmprogateway_paypal.php
CHANGED
@@ -129,7 +129,7 @@
|
|
129 |
<tr class="pmpro_settings_divider gateway gateway_paypal gateway_paypalexpress gateway_paypalstandard" <?php if($gateway != "paypal" && $gateway != "paypalexpress" && $gateway != "paypalstandard") { ?>style="display: none;"<?php } ?>>
|
130 |
<td colspan="2">
|
131 |
<hr />
|
132 |
-
<h2 class="title"><?php
|
133 |
</td>
|
134 |
</tr>
|
135 |
<tr class="gateway gateway_paypalstandard" <?php if($gateway != "paypalstandard") { ?>style="display: none;"<?php } ?>>
|
@@ -150,7 +150,7 @@
|
|
150 |
</tr>
|
151 |
<tr class="gateway gateway_paypal gateway_paypalexpress gateway_paypalstandard" <?php if($gateway != "paypal" && $gateway != "paypalexpress" && $gateway != "paypalstandard") { ?>style="display: none;"<?php } ?>>
|
152 |
<th scope="row" valign="top">
|
153 |
-
<label for="gateway_email"><?php
|
154 |
</th>
|
155 |
<td>
|
156 |
<input type="text" id="gateway_email" name="gateway_email" value="<?php echo esc_attr($values['gateway_email'])?>" class="regular-text code" />
|
@@ -158,7 +158,7 @@
|
|
158 |
</tr>
|
159 |
<tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
|
160 |
<th scope="row" valign="top">
|
161 |
-
<label for="apiusername"><?php
|
162 |
</th>
|
163 |
<td>
|
164 |
<input type="text" id="apiusername" name="apiusername" value="<?php echo esc_attr($values['apiusername'])?>" class="regular-text code" />
|
@@ -166,7 +166,7 @@
|
|
166 |
</tr>
|
167 |
<tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
|
168 |
<th scope="row" valign="top">
|
169 |
-
<label for="apipassword"><?php
|
170 |
</th>
|
171 |
<td>
|
172 |
<input type="text" id="apipassword" name="apipassword" value="<?php echo esc_attr($values['apipassword'])?>" autocomplete="off" class="regular-text code pmpro-admin-secure-key" />
|
@@ -174,7 +174,7 @@
|
|
174 |
</tr>
|
175 |
<tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
|
176 |
<th scope="row" valign="top">
|
177 |
-
<label for="apisignature"><?php
|
178 |
</th>
|
179 |
<td>
|
180 |
<input type="text" id="apisignature" name="apisignature" value="<?php echo esc_attr($values['apisignature'])?>" class="regular-text code" />
|
@@ -182,21 +182,21 @@
|
|
182 |
</tr>
|
183 |
<tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
|
184 |
<th scope="row" valign="top">
|
185 |
-
<label for="paypalexpress_skip_confirmation"><?php
|
186 |
</th>
|
187 |
<td>
|
188 |
<select id="paypalexpress_skip_confirmation" name="paypalexpress_skip_confirmation">
|
189 |
-
<option value="0" <?php selected(pmpro_getOption('paypalexpress_skip_confirmation'), 0)
|
190 |
-
<option value="1" <?php selected(pmpro_getOption('paypalexpress_skip_confirmation'), 1)
|
191 |
</select>
|
192 |
</td>
|
193 |
</tr>
|
194 |
<tr class="gateway gateway_paypal gateway_paypalexpress gateway_paypalstandard" <?php if($gateway != "paypal" && $gateway != "paypalexpress" && $gateway != "paypalstandard") { ?>style="display: none;"<?php } ?>>
|
195 |
<th scope="row" valign="top">
|
196 |
-
<label><?php
|
197 |
</th>
|
198 |
<td>
|
199 |
-
<p class="description"><?php
|
200 |
<p><code><?php echo add_query_arg( 'action', 'ipnhandler', admin_url('admin-ajax.php') );?></code></p>
|
201 |
</td>
|
202 |
</tr>
|
@@ -278,7 +278,7 @@
|
|
278 |
<?php if($gateway == "paypal" || $gateway == "paypalexpress" || $gateway == "paypalstandard") { ?>
|
279 |
<span id="pmpro_paypalexpress_checkout" <?php if(($gateway != "paypalexpress" && $gateway != "paypalstandard") || !$pmpro_requirebilling) { ?>style="display: none;"<?php } ?>>
|
280 |
<input type="hidden" name="submit-checkout" value="1" />
|
281 |
-
<input type="image" id="pmpro_btn-submit-paypal" class="<?php echo pmpro_get_element_class( 'pmpro_btn-submit-checkout' ); ?>" value="<?php
|
282 |
</span>
|
283 |
<?php } ?>
|
284 |
|
@@ -472,9 +472,11 @@
|
|
472 |
|
473 |
//taxes on the amount
|
474 |
$amount = $order->InitialPayment;
|
475 |
-
$amount_tax = $order->getTaxForPrice($amount);
|
476 |
$order->subtotal = $amount;
|
477 |
-
|
|
|
|
|
478 |
|
479 |
//paypal profile stuff
|
480 |
$nvpStr = "";
|
@@ -542,15 +544,17 @@
|
|
542 |
|
543 |
//taxes on the amount
|
544 |
$amount = $order->PaymentAmount;
|
545 |
-
$amount_tax = $order->getTaxForPrice($amount);
|
546 |
-
|
|
|
|
|
547 |
|
548 |
//paypal profile stuff
|
549 |
$nvpStr = "";
|
550 |
|
551 |
if(!empty($order->Token))
|
552 |
$nvpStr .= "&TOKEN=" . $order->Token;
|
553 |
-
$nvpStr .="&AMT=" . $
|
554 |
$nvpStr .= "&BILLINGPERIOD=" . $order->BillingPeriod . "&BILLINGFREQUENCY=" . $order->BillingFrequency . "&AUTOBILLOUTAMT=AddToNextBilling";
|
555 |
$nvpStr .= "&DESC=" . urlencode( apply_filters( 'pmpro_paypal_level_description', substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127), $order->membership_level->name, $order, get_bloginfo("name")) );
|
556 |
$nvpStr .= "&NOTIFYURL=" . urlencode( add_query_arg( 'action', 'ipnhandler', admin_url('admin-ajax.php') ) );
|
@@ -565,7 +569,13 @@
|
|
565 |
{
|
566 |
$trial_amount = $order->TrialAmount;
|
567 |
$trial_tax = $order->getTaxForPrice($trial_amount);
|
568 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
569 |
|
570 |
$nvpStr .= "&TRIALBILLINGPERIOD=" . $order->TrialBillingPeriod . "&TRIALBILLINGFREQUENCY=" . $order->TrialBillingFrequency . "&TRIALAMT=" . $trial_amount;
|
571 |
}
|
@@ -603,12 +613,12 @@
|
|
603 |
|
604 |
// Set MAXFAILEDPAYMENTS so subscriptions are cancelled after 1 failed payment.
|
605 |
$nvpStr .= "&MAXFAILEDPAYMENTS=1";
|
606 |
-
|
607 |
$nvpStr = apply_filters("pmpro_create_recurring_payments_profile_nvpstr", $nvpStr, $order);
|
608 |
|
609 |
//for debugging let's add this to the class object
|
610 |
$this->nvpStr = $nvpStr;
|
611 |
-
|
612 |
///echo str_replace("&", "&<br />", $nvpStr);
|
613 |
///exit;
|
614 |
|
@@ -680,7 +690,7 @@
|
|
680 |
return false;
|
681 |
//exit('CreateRecurringPaymentsProfile failed: ' . print_r($httpParsedResponseAr, true));
|
682 |
}
|
683 |
-
}
|
684 |
|
685 |
function cancel(&$order) {
|
686 |
// Always cancel the order locally even if PayPal might fail
|
@@ -747,7 +757,7 @@
|
|
747 |
return false;
|
748 |
}
|
749 |
}
|
750 |
-
|
751 |
function getTransactionStatus(&$order) {
|
752 |
$transaction_details = $order->Gateway->getTransactionDetailsByOrder( $order );
|
753 |
if( false === $transaction_details ){
|
@@ -822,7 +832,7 @@
|
|
822 |
return $this->getTransactionDetails( $order->payment_transaction_id );
|
823 |
}
|
824 |
}
|
825 |
-
|
826 |
function getTransactionDetails($payment_transaction_id)
|
827 |
{
|
828 |
$nvpStr = "";
|
@@ -889,6 +899,16 @@
|
|
889 |
}
|
890 |
}
|
891 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
892 |
return $httpParsedResponseAr;
|
893 |
}
|
894 |
}
|
129 |
<tr class="pmpro_settings_divider gateway gateway_paypal gateway_paypalexpress gateway_paypalstandard" <?php if($gateway != "paypal" && $gateway != "paypalexpress" && $gateway != "paypalstandard") { ?>style="display: none;"<?php } ?>>
|
130 |
<td colspan="2">
|
131 |
<hr />
|
132 |
+
<h2 class="title"><?php esc_html_e('PayPal Settings', 'paid-memberships-pro' ); ?></h2>
|
133 |
</td>
|
134 |
</tr>
|
135 |
<tr class="gateway gateway_paypalstandard" <?php if($gateway != "paypalstandard") { ?>style="display: none;"<?php } ?>>
|
150 |
</tr>
|
151 |
<tr class="gateway gateway_paypal gateway_paypalexpress gateway_paypalstandard" <?php if($gateway != "paypal" && $gateway != "paypalexpress" && $gateway != "paypalstandard") { ?>style="display: none;"<?php } ?>>
|
152 |
<th scope="row" valign="top">
|
153 |
+
<label for="gateway_email"><?php esc_html_e('Gateway Account Email', 'paid-memberships-pro' );?>:</label>
|
154 |
</th>
|
155 |
<td>
|
156 |
<input type="text" id="gateway_email" name="gateway_email" value="<?php echo esc_attr($values['gateway_email'])?>" class="regular-text code" />
|
158 |
</tr>
|
159 |
<tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
|
160 |
<th scope="row" valign="top">
|
161 |
+
<label for="apiusername"><?php esc_html_e('API Username', 'paid-memberships-pro' );?>:</label>
|
162 |
</th>
|
163 |
<td>
|
164 |
<input type="text" id="apiusername" name="apiusername" value="<?php echo esc_attr($values['apiusername'])?>" class="regular-text code" />
|
166 |
</tr>
|
167 |
<tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
|
168 |
<th scope="row" valign="top">
|
169 |
+
<label for="apipassword"><?php esc_html_e('API Password', 'paid-memberships-pro' );?>:</label>
|
170 |
</th>
|
171 |
<td>
|
172 |
<input type="text" id="apipassword" name="apipassword" value="<?php echo esc_attr($values['apipassword'])?>" autocomplete="off" class="regular-text code pmpro-admin-secure-key" />
|
174 |
</tr>
|
175 |
<tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
|
176 |
<th scope="row" valign="top">
|
177 |
+
<label for="apisignature"><?php esc_html_e('API Signature', 'paid-memberships-pro' );?>:</label>
|
178 |
</th>
|
179 |
<td>
|
180 |
<input type="text" id="apisignature" name="apisignature" value="<?php echo esc_attr($values['apisignature'])?>" class="regular-text code" />
|
182 |
</tr>
|
183 |
<tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
|
184 |
<th scope="row" valign="top">
|
185 |
+
<label for="paypalexpress_skip_confirmation"><?php esc_html_e('Confirmation Step', 'paid-memberships-pro' );?>:</label>
|
186 |
</th>
|
187 |
<td>
|
188 |
<select id="paypalexpress_skip_confirmation" name="paypalexpress_skip_confirmation">
|
189 |
+
<option value="0" <?php selected(pmpro_getOption('paypalexpress_skip_confirmation'), 0);?>><?php esc_html_e( 'Require an extra confirmation after users return from PayPal.', 'paid-memberships-pro' ) ?></option>
|
190 |
+
<option value="1" <?php selected(pmpro_getOption('paypalexpress_skip_confirmation'), 1);?>><?php esc_html_e( 'Skip the extra confirmation after users return from PayPal.', 'paid-memberships-pro' ) ?></option>
|
191 |
</select>
|
192 |
</td>
|
193 |
</tr>
|
194 |
<tr class="gateway gateway_paypal gateway_paypalexpress gateway_paypalstandard" <?php if($gateway != "paypal" && $gateway != "paypalexpress" && $gateway != "paypalstandard") { ?>style="display: none;"<?php } ?>>
|
195 |
<th scope="row" valign="top">
|
196 |
+
<label><?php esc_html_e('IPN Handler URL', 'paid-memberships-pro' );?>:</label>
|
197 |
</th>
|
198 |
<td>
|
199 |
+
<p class="description"><?php esc_html_e('To fully integrate with PayPal, be sure to set your IPN Handler URL to ', 'paid-memberships-pro' );?></p>
|
200 |
<p><code><?php echo add_query_arg( 'action', 'ipnhandler', admin_url('admin-ajax.php') );?></code></p>
|
201 |
</td>
|
202 |
</tr>
|
278 |
<?php if($gateway == "paypal" || $gateway == "paypalexpress" || $gateway == "paypalstandard") { ?>
|
279 |
<span id="pmpro_paypalexpress_checkout" <?php if(($gateway != "paypalexpress" && $gateway != "paypalstandard") || !$pmpro_requirebilling) { ?>style="display: none;"<?php } ?>>
|
280 |
<input type="hidden" name="submit-checkout" value="1" />
|
281 |
+
<input type="image" id="pmpro_btn-submit-paypal" class="<?php echo pmpro_get_element_class( 'pmpro_btn-submit-checkout' ); ?>" value="<?php esc_attr_e('Check Out with PayPal', 'paid-memberships-pro' );?> »" src="<?php echo apply_filters("pmpro_paypal_button_image", "https://www.paypalobjects.com/webstatic/en_US/i/buttons/checkout-logo-medium.png");?>" />
|
282 |
</span>
|
283 |
<?php } ?>
|
284 |
|
472 |
|
473 |
//taxes on the amount
|
474 |
$amount = $order->InitialPayment;
|
475 |
+
$amount_tax = pmpro_round_price_as_string( $order->getTaxForPrice( $amount ) );
|
476 |
$order->subtotal = $amount;
|
477 |
+
|
478 |
+
// Note: For the DoDirectPayment API call, it expects the AMT to be the total including taxes (unlike CreateRecurringPaymentsProfile).
|
479 |
+
$amount = pmpro_round_price_as_string( (float) $amount + (float) $amount_tax );
|
480 |
|
481 |
//paypal profile stuff
|
482 |
$nvpStr = "";
|
544 |
|
545 |
//taxes on the amount
|
546 |
$amount = $order->PaymentAmount;
|
547 |
+
$amount_tax = pmpro_round_price_as_string( $order->getTaxForPrice( $amount ) );
|
548 |
+
|
549 |
+
// Note: For the CreateRecurringPaymentsProfile API call, it expects the AMT to be the total excluding taxes.
|
550 |
+
$amount = pmpro_round_price_as_string( $amount );
|
551 |
|
552 |
//paypal profile stuff
|
553 |
$nvpStr = "";
|
554 |
|
555 |
if(!empty($order->Token))
|
556 |
$nvpStr .= "&TOKEN=" . $order->Token;
|
557 |
+
$nvpStr .="&AMT=" . $amount . "&TAXAMT=" . $amount_tax . "&CURRENCYCODE=" . $pmpro_currency . "&PROFILESTARTDATE=" . $order->ProfileStartDate;
|
558 |
$nvpStr .= "&BILLINGPERIOD=" . $order->BillingPeriod . "&BILLINGFREQUENCY=" . $order->BillingFrequency . "&AUTOBILLOUTAMT=AddToNextBilling";
|
559 |
$nvpStr .= "&DESC=" . urlencode( apply_filters( 'pmpro_paypal_level_description', substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127), $order->membership_level->name, $order, get_bloginfo("name")) );
|
560 |
$nvpStr .= "&NOTIFYURL=" . urlencode( add_query_arg( 'action', 'ipnhandler', admin_url('admin-ajax.php') ) );
|
569 |
{
|
570 |
$trial_amount = $order->TrialAmount;
|
571 |
$trial_tax = $order->getTaxForPrice($trial_amount);
|
572 |
+
|
573 |
+
/*
|
574 |
+
* Note: For the CreateRecurringPaymentsProfile API call, it expects the TRIALAMT to be the total excluding taxes.
|
575 |
+
*
|
576 |
+
* However, there is no TRIALTAXAMT for trial periods so this is a workaround.
|
577 |
+
*/
|
578 |
+
$trial_amount = pmpro_round_price_as_string( (float) $trial_amount + (float) $trial_tax );
|
579 |
|
580 |
$nvpStr .= "&TRIALBILLINGPERIOD=" . $order->TrialBillingPeriod . "&TRIALBILLINGFREQUENCY=" . $order->TrialBillingFrequency . "&TRIALAMT=" . $trial_amount;
|
581 |
}
|
613 |
|
614 |
// Set MAXFAILEDPAYMENTS so subscriptions are cancelled after 1 failed payment.
|
615 |
$nvpStr .= "&MAXFAILEDPAYMENTS=1";
|
616 |
+
|
617 |
$nvpStr = apply_filters("pmpro_create_recurring_payments_profile_nvpstr", $nvpStr, $order);
|
618 |
|
619 |
//for debugging let's add this to the class object
|
620 |
$this->nvpStr = $nvpStr;
|
621 |
+
|
622 |
///echo str_replace("&", "&<br />", $nvpStr);
|
623 |
///exit;
|
624 |
|
690 |
return false;
|
691 |
//exit('CreateRecurringPaymentsProfile failed: ' . print_r($httpParsedResponseAr, true));
|
692 |
}
|
693 |
+
}
|
694 |
|
695 |
function cancel(&$order) {
|
696 |
// Always cancel the order locally even if PayPal might fail
|
757 |
return false;
|
758 |
}
|
759 |
}
|
760 |
+
|
761 |
function getTransactionStatus(&$order) {
|
762 |
$transaction_details = $order->Gateway->getTransactionDetailsByOrder( $order );
|
763 |
if( false === $transaction_details ){
|
832 |
return $this->getTransactionDetails( $order->payment_transaction_id );
|
833 |
}
|
834 |
}
|
835 |
+
|
836 |
function getTransactionDetails($payment_transaction_id)
|
837 |
{
|
838 |
$nvpStr = "";
|
899 |
}
|
900 |
}
|
901 |
|
902 |
+
/**
|
903 |
+
* Allow performing actions using the http post request's response.
|
904 |
+
*
|
905 |
+
* @since 2.8
|
906 |
+
*
|
907 |
+
* @param array $httpParsedResponseAr The parsed response.
|
908 |
+
* @param string $methodName_ The NVP API name.
|
909 |
+
*/
|
910 |
+
do_action( 'pmpro_paypal_handle_http_post_response', $httpParsedResponseAr, $methodName_ );
|
911 |
+
|
912 |
return $httpParsedResponseAr;
|
913 |
}
|
914 |
}
|
classes/gateways/class.pmprogateway_paypalexpress.php
CHANGED
@@ -71,6 +71,7 @@
|
|
71 |
add_filter('pmpro_checkout_default_submit_button', array('PMProGateway_paypalexpress', 'pmpro_checkout_default_submit_button'));
|
72 |
add_action('http_api_curl', array('PMProGateway_paypalexpress', 'http_api_curl'), 10, 3);
|
73 |
}
|
|
|
74 |
}
|
75 |
|
76 |
/**
|
@@ -169,7 +170,7 @@
|
|
169 |
</tr>
|
170 |
<tr class="gateway gateway_paypal gateway_paypalexpress gateway_paypalstandard" <?php if($gateway != "paypal" && $gateway != "paypalexpress" && $gateway != "paypalstandard") { ?>style="display: none;"<?php } ?>>
|
171 |
<th scope="row" valign="top">
|
172 |
-
<label for="gateway_email"><?php
|
173 |
</th>
|
174 |
<td>
|
175 |
<input type="text" id="gateway_email" name="gateway_email" value="<?php echo esc_attr($values['gateway_email'])?>" class="regular-text code" />
|
@@ -177,7 +178,7 @@
|
|
177 |
</tr>
|
178 |
<tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
|
179 |
<th scope="row" valign="top">
|
180 |
-
<label for="apiusername"><?php
|
181 |
</th>
|
182 |
<td>
|
183 |
<input type="text" id="apiusername" name="apiusername" value="<?php echo esc_attr($values['apiusername'])?>" class="regular-text code" />
|
@@ -185,7 +186,7 @@
|
|
185 |
</tr>
|
186 |
<tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
|
187 |
<th scope="row" valign="top">
|
188 |
-
<label for="apipassword"><?php
|
189 |
</th>
|
190 |
<td>
|
191 |
<input type="text" id="apipassword" name="apipassword" value="<?php echo esc_attr($values['apipassword'])?>" autocomplete="off" class="regular-text code pmpro-admin-secure-key" />
|
@@ -193,7 +194,7 @@
|
|
193 |
</tr>
|
194 |
<tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
|
195 |
<th scope="row" valign="top">
|
196 |
-
<label for="apisignature"><?php
|
197 |
</th>
|
198 |
<td>
|
199 |
<input type="text" id="apisignature" name="apisignature" value="<?php echo esc_attr($values['apisignature'])?>" class="regular-text code" />
|
@@ -201,22 +202,22 @@
|
|
201 |
</tr>
|
202 |
<tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
|
203 |
<th scope="row" valign="top">
|
204 |
-
<label for="paypalexpress_skip_confirmation"><?php
|
205 |
</th>
|
206 |
<td>
|
207 |
<select id="paypalexpress_skip_confirmation" name="paypalexpress_skip_confirmation">
|
208 |
-
<option value="0" <?php selected(pmpro_getOption('paypalexpress_skip_confirmation'), 0)
|
209 |
-
<option value="1" <?php selected(pmpro_getOption('paypalexpress_skip_confirmation'), 1)
|
210 |
</select>
|
211 |
</td>
|
212 |
</tr>
|
213 |
<tr class="gateway gateway_paypal gateway_paypalexpress gateway_paypalstandard" <?php if($gateway != "paypal" && $gateway != "paypalexpress" && $gateway != "paypalstandard") { ?>style="display: none;"<?php } ?>>
|
214 |
<th scope="row" valign="top">
|
215 |
-
<label><?php
|
216 |
</th>
|
217 |
<td>
|
218 |
-
<p class="description"><?php
|
219 |
-
<p><code><?php echo add_query_arg( 'action', 'ipnhandler', admin_url('admin-ajax.php') );?></code></p>
|
220 |
</td>
|
221 |
</tr>
|
222 |
<?php
|
@@ -332,7 +333,7 @@
|
|
332 |
|
333 |
$morder = new MemberOrder();
|
334 |
$morder->getMemberOrderByPayPalToken(sanitize_text_field($_REQUEST['token']));
|
335 |
-
|
336 |
if( $morder->status === 'token' ){
|
337 |
$morder->Token = $morder->paypal_token; $pmpro_paypal_token = $morder->paypal_token;
|
338 |
if($morder->Token)
|
@@ -499,7 +500,7 @@
|
|
499 |
?>
|
500 |
<span id="pmpro_paypalexpress_checkout" <?php if(($gateway != "paypalexpress" && $gateway != "paypalstandard") || !$pmpro_requirebilling) { ?>style="display: none;"<?php } ?>>
|
501 |
<input type="hidden" name="submit-checkout" value="1" />
|
502 |
-
<input type="image" id="pmpro_btn-submit-paypalexpress" class="<?php echo pmpro_get_element_class( 'pmpro_btn-submit-checkout' ); ?>" value="<?php
|
503 |
</span>
|
504 |
|
505 |
<span id="pmpro_submit_span" <?php if(($gateway == "paypalexpress" || $gateway == "paypalstandard") && $pmpro_requirebilling) { ?>style="display: none;"<?php } ?>>
|
@@ -528,12 +529,9 @@
|
|
528 |
//taxes on initial amount
|
529 |
$initial_payment = $order->InitialPayment;
|
530 |
$initial_payment_tax = $order->getTaxForPrice($initial_payment);
|
531 |
-
$initial_payment = pmpro_round_price((float)$initial_payment + (float)$initial_payment_tax);
|
532 |
|
533 |
-
//
|
534 |
-
$
|
535 |
-
$amount_tax = $order->getTaxForPrice($amount);
|
536 |
-
$amount = pmpro_round_price((float)$amount + (float)$amount_tax);
|
537 |
|
538 |
//paypal profile stuff
|
539 |
$nvpStr = "";
|
@@ -555,7 +553,9 @@
|
|
555 |
{
|
556 |
$trial_amount = $order->TrialAmount;
|
557 |
$trial_tax = $order->getTaxForPrice($trial_amount);
|
558 |
-
|
|
|
|
|
559 |
|
560 |
$nvpStr .= "&TRIALBILLINGPERIOD=" . $order->TrialBillingPeriod . "&TRIALBILLINGFREQUENCY=" . $order->TrialBillingFrequency . "&TRIALAMT=" . $trial_amount;
|
561 |
}
|
@@ -672,7 +672,9 @@
|
|
672 |
$amount = $order->InitialPayment;
|
673 |
$amount_tax = $order->getTaxForPrice($amount);
|
674 |
$order->subtotal = $amount;
|
675 |
-
|
|
|
|
|
676 |
|
677 |
//paypal profile stuff
|
678 |
$nvpStr = "";
|
@@ -727,12 +729,16 @@
|
|
727 |
//taxes on initial amount
|
728 |
$initial_payment = $order->InitialPayment;
|
729 |
$initial_payment_tax = $order->getTaxForPrice($initial_payment);
|
730 |
-
|
|
|
|
|
731 |
|
732 |
//taxes on the amount
|
733 |
$amount = $order->PaymentAmount;
|
734 |
-
$amount_tax = $order->getTaxForPrice($amount);
|
735 |
-
|
|
|
|
|
736 |
|
737 |
//paypal profile stuff
|
738 |
$nvpStr = "";
|
@@ -740,7 +746,7 @@
|
|
740 |
$nvpStr .= "&TOKEN=" . $order->Token;
|
741 |
$nvpStr .="&INITAMT=" . $initial_payment . "&AMT=" . $amount . "&CURRENCYCODE=" . $pmpro_currency . "&PROFILESTARTDATE=" . $order->ProfileStartDate;
|
742 |
if(!empty($amount_tax))
|
743 |
-
$nvpStr .= "&TAXAMT=" . $amount_tax;
|
744 |
$nvpStr .= "&BILLINGPERIOD=" . $order->BillingPeriod . "&BILLINGFREQUENCY=" . $order->BillingFrequency . "&AUTOBILLOUTAMT=AddToNextBilling";
|
745 |
$nvpStr .= "&NOTIFYURL=" . urlencode( add_query_arg( 'action', 'ipnhandler', admin_url('admin-ajax.php') ) );
|
746 |
$nvpStr .= "&DESC=" . urlencode( apply_filters( 'pmpro_paypal_level_description', substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127), $order->membership_level->name, $order, get_bloginfo("name")) );
|
@@ -754,7 +760,13 @@
|
|
754 |
{
|
755 |
$trial_amount = $order->TrialAmount;
|
756 |
$trial_tax = $order->getTaxForPrice($trial_amount);
|
757 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
758 |
|
759 |
$nvpStr .= "&TRIALBILLINGPERIOD=" . $order->TrialBillingPeriod . "&TRIALBILLINGFREQUENCY=" . $order->TrialBillingFrequency . "&TRIALAMT=" . $trial_amount;
|
760 |
}
|
@@ -884,7 +896,7 @@
|
|
884 |
return false;
|
885 |
}
|
886 |
}
|
887 |
-
|
888 |
function getTransactionStatus(&$order) {
|
889 |
$transaction_details = $order->Gateway->getTransactionDetailsByOrder( $order );
|
890 |
if( false === $transaction_details ){
|
@@ -915,7 +927,7 @@
|
|
915 |
return $this->getTransactionDetails( $order->payment_transaction_id );
|
916 |
}
|
917 |
}
|
918 |
-
|
919 |
/**
|
920 |
* Try to recover the real payment_transaction_id when payment_transaction_id === subscription_transaction_id === I-xxxxxxxx.
|
921 |
*
|
@@ -972,10 +984,10 @@
|
|
972 |
|
973 |
// found the payment transaction id, it's the last one (the oldest)
|
974 |
$payment_transaction_id = end( $transaction_ids );
|
975 |
-
|
976 |
return $payment_transaction_id;
|
977 |
}
|
978 |
-
|
979 |
function getTransactionDetails($payment_transaction_id)
|
980 |
{
|
981 |
$nvpStr = "";
|
@@ -1066,10 +1078,78 @@
|
|
1066 |
die( "Unable to complete $methodName_ request with $nvpStr_: " . $httpParsedResponseAr->get_error_message() );
|
1067 |
}
|
1068 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1069 |
return $httpParsedResponseAr;
|
1070 |
}
|
1071 |
-
|
1072 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1073 |
* PAYPAL Function
|
1074 |
* Send HTTP POST Request with uuid
|
1075 |
*
|
@@ -1110,7 +1190,7 @@
|
|
1110 |
if ( is_wp_error( $response ) ) {
|
1111 |
return $response;
|
1112 |
}
|
1113 |
-
|
1114 |
//extract the response details
|
1115 |
$httpParsedResponseAr = array();
|
1116 |
parse_str(wp_remote_retrieve_body($response), $httpParsedResponseAr);
|
71 |
add_filter('pmpro_checkout_default_submit_button', array('PMProGateway_paypalexpress', 'pmpro_checkout_default_submit_button'));
|
72 |
add_action('http_api_curl', array('PMProGateway_paypalexpress', 'http_api_curl'), 10, 3);
|
73 |
}
|
74 |
+
add_filter( 'pmpro_process_refund_paypalexpress', array('PMProGateway_paypalexpress', 'process_refund' ), 10, 2 );
|
75 |
}
|
76 |
|
77 |
/**
|
170 |
</tr>
|
171 |
<tr class="gateway gateway_paypal gateway_paypalexpress gateway_paypalstandard" <?php if($gateway != "paypal" && $gateway != "paypalexpress" && $gateway != "paypalstandard") { ?>style="display: none;"<?php } ?>>
|
172 |
<th scope="row" valign="top">
|
173 |
+
<label for="gateway_email"><?php esc_html_e('Gateway Account Email', 'paid-memberships-pro' );?>:</label>
|
174 |
</th>
|
175 |
<td>
|
176 |
<input type="text" id="gateway_email" name="gateway_email" value="<?php echo esc_attr($values['gateway_email'])?>" class="regular-text code" />
|
178 |
</tr>
|
179 |
<tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
|
180 |
<th scope="row" valign="top">
|
181 |
+
<label for="apiusername"><?php esc_html_e('API Username', 'paid-memberships-pro' );?>:</label>
|
182 |
</th>
|
183 |
<td>
|
184 |
<input type="text" id="apiusername" name="apiusername" value="<?php echo esc_attr($values['apiusername'])?>" class="regular-text code" />
|
186 |
</tr>
|
187 |
<tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
|
188 |
<th scope="row" valign="top">
|
189 |
+
<label for="apipassword"><?php esc_html_e('API Password', 'paid-memberships-pro' );?>:</label>
|
190 |
</th>
|
191 |
<td>
|
192 |
<input type="text" id="apipassword" name="apipassword" value="<?php echo esc_attr($values['apipassword'])?>" autocomplete="off" class="regular-text code pmpro-admin-secure-key" />
|
194 |
</tr>
|
195 |
<tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
|
196 |
<th scope="row" valign="top">
|
197 |
+
<label for="apisignature"><?php esc_html_e('API Signature', 'paid-memberships-pro' );?>:</label>
|
198 |
</th>
|
199 |
<td>
|
200 |
<input type="text" id="apisignature" name="apisignature" value="<?php echo esc_attr($values['apisignature'])?>" class="regular-text code" />
|
202 |
</tr>
|
203 |
<tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
|
204 |
<th scope="row" valign="top">
|
205 |
+
<label for="paypalexpress_skip_confirmation"><?php esc_html_e('Confirmation Step', 'paid-memberships-pro' );?>:</label>
|
206 |
</th>
|
207 |
<td>
|
208 |
<select id="paypalexpress_skip_confirmation" name="paypalexpress_skip_confirmation">
|
209 |
+
<option value="0" <?php selected(pmpro_getOption('paypalexpress_skip_confirmation'), 0);?>><?php esc_html_e( 'Require an extra confirmation after users return from PayPal.', 'paid-memberships-pro' ) ?></option>
|
210 |
+
<option value="1" <?php selected(pmpro_getOption('paypalexpress_skip_confirmation'), 1);?>><?php esc_html_e( 'Skip the extra confirmation after users return from PayPal.', 'paid-memberships-pro' ) ?></option>
|
211 |
</select>
|
212 |
</td>
|
213 |
</tr>
|
214 |
<tr class="gateway gateway_paypal gateway_paypalexpress gateway_paypalstandard" <?php if($gateway != "paypal" && $gateway != "paypalexpress" && $gateway != "paypalstandard") { ?>style="display: none;"<?php } ?>>
|
215 |
<th scope="row" valign="top">
|
216 |
+
<label><?php esc_html_e('IPN Handler URL', 'paid-memberships-pro' );?>:</label>
|
217 |
</th>
|
218 |
<td>
|
219 |
+
<p class="description"><?php esc_html_e('To fully integrate with PayPal, be sure to set your IPN Handler URL to ', 'paid-memberships-pro' );?></p>
|
220 |
+
<p><code><?php echo esc_html( add_query_arg( 'action', 'ipnhandler', admin_url('admin-ajax.php') ) );?></code></p>
|
221 |
</td>
|
222 |
</tr>
|
223 |
<?php
|
333 |
|
334 |
$morder = new MemberOrder();
|
335 |
$morder->getMemberOrderByPayPalToken(sanitize_text_field($_REQUEST['token']));
|
336 |
+
|
337 |
if( $morder->status === 'token' ){
|
338 |
$morder->Token = $morder->paypal_token; $pmpro_paypal_token = $morder->paypal_token;
|
339 |
if($morder->Token)
|
500 |
?>
|
501 |
<span id="pmpro_paypalexpress_checkout" <?php if(($gateway != "paypalexpress" && $gateway != "paypalstandard") || !$pmpro_requirebilling) { ?>style="display: none;"<?php } ?>>
|
502 |
<input type="hidden" name="submit-checkout" value="1" />
|
503 |
+
<input type="image" id="pmpro_btn-submit-paypalexpress" class="<?php echo pmpro_get_element_class( 'pmpro_btn-submit-checkout' ); ?>" value="<?php esc_attr_e('Check Out with PayPal', 'paid-memberships-pro' );?> »" src="<?php echo apply_filters("pmpro_paypal_button_image", "https://www.paypalobjects.com/webstatic/en_US/i/buttons/checkout-logo-medium.png");?>" />
|
504 |
</span>
|
505 |
|
506 |
<span id="pmpro_submit_span" <?php if(($gateway == "paypalexpress" || $gateway == "paypalstandard") && $pmpro_requirebilling) { ?>style="display: none;"<?php } ?>>
|
529 |
//taxes on initial amount
|
530 |
$initial_payment = $order->InitialPayment;
|
531 |
$initial_payment_tax = $order->getTaxForPrice($initial_payment);
|
|
|
532 |
|
533 |
+
// Note: SetExpressCheckout expects this amount to be the total including tax.
|
534 |
+
$initial_payment = pmpro_round_price_as_string( (float) $initial_payment + (float) $initial_payment_tax );
|
|
|
|
|
535 |
|
536 |
//paypal profile stuff
|
537 |
$nvpStr = "";
|
553 |
{
|
554 |
$trial_amount = $order->TrialAmount;
|
555 |
$trial_tax = $order->getTaxForPrice($trial_amount);
|
556 |
+
|
557 |
+
// Note: SetExpressCheckout expects this amount to be the total including tax.
|
558 |
+
$trial_amount = pmpro_round_price_as_string( (float) $trial_amount + (float) $trial_tax );
|
559 |
|
560 |
$nvpStr .= "&TRIALBILLINGPERIOD=" . $order->TrialBillingPeriod . "&TRIALBILLINGFREQUENCY=" . $order->TrialBillingFrequency . "&TRIALAMT=" . $trial_amount;
|
561 |
}
|
672 |
$amount = $order->InitialPayment;
|
673 |
$amount_tax = $order->getTaxForPrice($amount);
|
674 |
$order->subtotal = $amount;
|
675 |
+
|
676 |
+
// Note: DoExpressCheckoutPayment expects this amount to be the total including tax.
|
677 |
+
$amount = pmpro_round_price_as_string( (float) $amount + (float) $amount_tax );
|
678 |
|
679 |
//paypal profile stuff
|
680 |
$nvpStr = "";
|
729 |
//taxes on initial amount
|
730 |
$initial_payment = $order->InitialPayment;
|
731 |
$initial_payment_tax = $order->getTaxForPrice($initial_payment);
|
732 |
+
|
733 |
+
// Note: CreateRecurringPaymentsProfile expects this amount to be the total including tax.
|
734 |
+
$initial_payment = pmpro_round_price_as_string( (float) $initial_payment + (float) $initial_payment_tax );
|
735 |
|
736 |
//taxes on the amount
|
737 |
$amount = $order->PaymentAmount;
|
738 |
+
$amount_tax = $order->getTaxForPrice( $amount );
|
739 |
+
|
740 |
+
// Note: CreateRecurringPaymentsProfile expects this amount to be the total excluding tax.
|
741 |
+
$amount = pmpro_round_price_as_string( $amount );
|
742 |
|
743 |
//paypal profile stuff
|
744 |
$nvpStr = "";
|
746 |
$nvpStr .= "&TOKEN=" . $order->Token;
|
747 |
$nvpStr .="&INITAMT=" . $initial_payment . "&AMT=" . $amount . "&CURRENCYCODE=" . $pmpro_currency . "&PROFILESTARTDATE=" . $order->ProfileStartDate;
|
748 |
if(!empty($amount_tax))
|
749 |
+
$nvpStr .= "&TAXAMT=" . pmpro_round_price_as_string( $amount_tax );
|
750 |
$nvpStr .= "&BILLINGPERIOD=" . $order->BillingPeriod . "&BILLINGFREQUENCY=" . $order->BillingFrequency . "&AUTOBILLOUTAMT=AddToNextBilling";
|
751 |
$nvpStr .= "&NOTIFYURL=" . urlencode( add_query_arg( 'action', 'ipnhandler', admin_url('admin-ajax.php') ) );
|
752 |
$nvpStr .= "&DESC=" . urlencode( apply_filters( 'pmpro_paypal_level_description', substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127), $order->membership_level->name, $order, get_bloginfo("name")) );
|
760 |
{
|
761 |
$trial_amount = $order->TrialAmount;
|
762 |
$trial_tax = $order->getTaxForPrice($trial_amount);
|
763 |
+
|
764 |
+
/*
|
765 |
+
* Note: For the CreateRecurringPaymentsProfile API call, it expects the TRIALAMT to be the total excluding taxes.
|
766 |
+
*
|
767 |
+
* However, there is no TRIALTAXAMT for trial periods so this is a workaround.
|
768 |
+
*/
|
769 |
+
$trial_amount = pmpro_round_price_as_string( (float) $trial_amount + (float) $trial_tax );
|
770 |
|
771 |
$nvpStr .= "&TRIALBILLINGPERIOD=" . $order->TrialBillingPeriod . "&TRIALBILLINGFREQUENCY=" . $order->TrialBillingFrequency . "&TRIALAMT=" . $trial_amount;
|
772 |
}
|
896 |
return false;
|
897 |
}
|
898 |
}
|
899 |
+
|
900 |
function getTransactionStatus(&$order) {
|
901 |
$transaction_details = $order->Gateway->getTransactionDetailsByOrder( $order );
|
902 |
if( false === $transaction_details ){
|
927 |
return $this->getTransactionDetails( $order->payment_transaction_id );
|
928 |
}
|
929 |
}
|
930 |
+
|
931 |
/**
|
932 |
* Try to recover the real payment_transaction_id when payment_transaction_id === subscription_transaction_id === I-xxxxxxxx.
|
933 |
*
|
984 |
|
985 |
// found the payment transaction id, it's the last one (the oldest)
|
986 |
$payment_transaction_id = end( $transaction_ids );
|
987 |
+
|
988 |
return $payment_transaction_id;
|
989 |
}
|
990 |
+
|
991 |
function getTransactionDetails($payment_transaction_id)
|
992 |
{
|
993 |
$nvpStr = "";
|
1078 |
die( "Unable to complete $methodName_ request with $nvpStr_: " . $httpParsedResponseAr->get_error_message() );
|
1079 |
}
|
1080 |
|
1081 |
+
/**
|
1082 |
+
* Allow performing actions using the http post request's response.
|
1083 |
+
*
|
1084 |
+
* @since 2.8
|
1085 |
+
*
|
1086 |
+
* @param array $httpParsedResponseAr The parsed response.
|
1087 |
+
* @param string $methodName_ The NVP API name.
|
1088 |
+
*/
|
1089 |
+
do_action( 'pmpro_paypal_handle_http_post_response', $httpParsedResponseAr, $methodName_ );
|
1090 |
+
|
1091 |
return $httpParsedResponseAr;
|
1092 |
}
|
1093 |
+
|
1094 |
+
/**
|
1095 |
+
* Refunds an order (only supports full amounts)
|
1096 |
+
*
|
1097 |
+
* @param bool $succes Status of the refund (default: false)
|
1098 |
+
* @param object $morder The Member Order Object
|
1099 |
+
* @since 2.8
|
1100 |
+
*
|
1101 |
+
* @return bool Status of the processed refund
|
1102 |
+
*/
|
1103 |
+
public static function process_refund( $success, $morder ){
|
1104 |
+
|
1105 |
+
//need a transaction id
|
1106 |
+
if ( empty( $morder->payment_transaction_id ) ) {
|
1107 |
+
return false;
|
1108 |
+
}
|
1109 |
+
|
1110 |
+
$transaction_id = $morder->payment_transaction_id;
|
1111 |
+
|
1112 |
+
//Get the real transaction ID
|
1113 |
+
if ( $transaction_id === $morder->subscription_transaction_id ) {
|
1114 |
+
$transaction_id = $morder->Gateway->getRealPaymentTransactionId( $morder );
|
1115 |
+
}
|
1116 |
+
|
1117 |
+
$httpParsedResponseAr = $morder->Gateway->PPHttpPost( 'RefundTransaction', '&TRANSACTIONID='.$transaction_id );
|
1118 |
+
|
1119 |
+
if ( 'success' === strtolower( $httpParsedResponseAr['ACK'] ) ) {
|
1120 |
+
|
1121 |
+
$success = true;
|
1122 |
+
|
1123 |
+
$morder->status = 'refunded';
|
1124 |
+
|
1125 |
+
global $current_user;
|
1126 |
+
|
1127 |
+
// translators: %1$s is the Transaction ID. %2$s is the user display name that initiated the refund.
|
1128 |
+
$morder->notes = trim( $morder->notes . ' ' . sprintf( __('Admin: Order successfully refunded on %1$s for transaction ID %2$s by %3$s.', 'paid-memberships-pro' ), date_i18n('Y-m-d H:i:s'), $transaction_id, $current_user->display_name ) );
|
1129 |
+
|
1130 |
+
$user = get_user_by( 'id', $morder->user_id );
|
1131 |
+
//send an email to the member
|
1132 |
+
$myemail = new PMProEmail();
|
1133 |
+
$myemail->sendRefundedEmail( $user, $morder );
|
1134 |
+
|
1135 |
+
//send an email to the admin
|
1136 |
+
$myemail = new PMProEmail();
|
1137 |
+
$myemail->sendRefundedAdminEmail( $user, $morder );
|
1138 |
+
|
1139 |
+
} else {
|
1140 |
+
//The refund failed, so lets return the gateway message
|
1141 |
+
|
1142 |
+
// translators: %1$s is the Transaction ID. %1$s is the Gateway Error
|
1143 |
+
$morder->notes = trim( $morder->notes .' '. sprintf( __( 'Admin: There was a problem processing a refund for transaction ID %1$s. Gateway Error: %2$s.', 'paid-memberships-pro' ), $transaction_id, $httpParsedResponseAr['L_LONGMESSAGE0'] ) );
|
1144 |
+
}
|
1145 |
+
|
1146 |
+
$morder->SaveOrder();
|
1147 |
+
|
1148 |
+
return $success;
|
1149 |
+
|
1150 |
+
}
|
1151 |
+
|
1152 |
+
/**
|
1153 |
* PAYPAL Function
|
1154 |
* Send HTTP POST Request with uuid
|
1155 |
*
|
1190 |
if ( is_wp_error( $response ) ) {
|
1191 |
return $response;
|
1192 |
}
|
1193 |
+
|
1194 |
//extract the response details
|
1195 |
$httpParsedResponseAr = array();
|
1196 |
parse_str(wp_remote_retrieve_body($response), $httpParsedResponseAr);
|
classes/gateways/class.pmprogateway_paypalstandard.php
CHANGED
@@ -130,7 +130,7 @@
|
|
130 |
<tr class="pmpro_settings_divider gateway gateway_paypal gateway_paypalexpress gateway_paypalstandard" <?php if($gateway != "paypal" && $gateway != "paypalexpress" && $gateway != "paypalstandard") { ?>style="display: none;"<?php } ?>>
|
131 |
<td colspan="2">
|
132 |
<hr />
|
133 |
-
<h3><?php
|
134 |
</td>
|
135 |
</tr>
|
136 |
<tr class="gateway gateway_paypalstandard" <?php if($gateway != "paypalstandard") { ?>style="display: none;"<?php } ?>>
|
@@ -151,7 +151,7 @@
|
|
151 |
</tr>
|
152 |
<tr class="gateway gateway_paypal gateway_paypalexpress gateway_paypalstandard" <?php if($gateway != "paypal" && $gateway != "paypalexpress" && $gateway != "paypalstandard") { ?>style="display: none;"<?php } ?>>
|
153 |
<th scope="row" valign="top">
|
154 |
-
<label for="gateway_email"><?php
|
155 |
</th>
|
156 |
<td>
|
157 |
<input type="text" id="gateway_email" name="gateway_email" size="60" value="<?php echo esc_attr($values['gateway_email'])?>" />
|
@@ -159,7 +159,7 @@
|
|
159 |
</tr>
|
160 |
<tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
|
161 |
<th scope="row" valign="top">
|
162 |
-
<label for="apiusername"><?php
|
163 |
</th>
|
164 |
<td>
|
165 |
<input type="text" id="apiusername" name="apiusername" size="60" value="<?php echo esc_attr($values['apiusername'])?>" />
|
@@ -167,7 +167,7 @@
|
|
167 |
</tr>
|
168 |
<tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
|
169 |
<th scope="row" valign="top">
|
170 |
-
<label for="apipassword"><?php
|
171 |
</th>
|
172 |
<td>
|
173 |
<input type="text" id="apipassword" name="apipassword" size="60" value="<?php echo esc_attr($values['apipassword'])?>" autocomplete="off" class="regular-text code pmpro-admin-secure-key" />
|
@@ -175,7 +175,7 @@
|
|
175 |
</tr>
|
176 |
<tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
|
177 |
<th scope="row" valign="top">
|
178 |
-
<label for="apisignature"><?php
|
179 |
</th>
|
180 |
<td>
|
181 |
<input type="text" id="apisignature" name="apisignature" size="60" value="<?php echo esc_attr($values['apisignature'])?>" />
|
@@ -183,10 +183,10 @@
|
|
183 |
</tr>
|
184 |
<tr class="gateway gateway_paypal gateway_paypalexpress gateway_paypalstandard" <?php if($gateway != "paypal" && $gateway != "paypalexpress" && $gateway != "paypalstandard") { ?>style="display: none;"<?php } ?>>
|
185 |
<th scope="row" valign="top">
|
186 |
-
<label><?php
|
187 |
</th>
|
188 |
<td>
|
189 |
-
<p><?php
|
190 |
</td>
|
191 |
</tr>
|
192 |
<?php
|
@@ -238,12 +238,12 @@
|
|
238 |
?>
|
239 |
<span id="pmpro_paypalexpress_checkout" <?php if(($gateway != "paypalexpress" && $gateway != "paypalstandard") || !$pmpro_requirebilling) { ?>style="display: none;"<?php } ?>>
|
240 |
<input type="hidden" name="submit-checkout" value="1" />
|
241 |
-
<input type="image" id="pmpro_btn-submit-paypalstandard" class="<?php echo pmpro_get_element_class( 'pmpro_btn-submit-checkout' ); ?>" value="<?php
|
242 |
</span>
|
243 |
|
244 |
<span id="pmpro_submit_span" <?php if(($gateway == "paypalexpress" || $gateway == "paypalstandard") && $pmpro_requirebilling) { ?>style="display: none;"<?php } ?>>
|
245 |
<input type="hidden" name="submit-checkout" value="1" />
|
246 |
-
<input type="submit" id="pmpro_btn-submit" class="<?php echo pmpro_get_element_class( 'pmpro_btn pmpro_btn-submit-checkout', 'pmpro_btn-submit-checkout' ); ?>" value="<?php if($pmpro_requirebilling) { _e('Submit and Check Out', 'paid-memberships-pro' ); } else { _e('Submit and Confirm', 'paid-memberships-pro' );}?> »" />
|
247 |
</span>
|
248 |
<?php
|
249 |
|
@@ -315,12 +315,12 @@
|
|
315 |
//taxes on initial amount
|
316 |
$initial_payment = $order->InitialPayment;
|
317 |
$initial_payment_tax = $order->getTaxForPrice($initial_payment);
|
318 |
-
$initial_payment =
|
319 |
|
320 |
//taxes on the amount
|
321 |
$amount = $order->PaymentAmount;
|
322 |
$amount_tax = $order->getTaxForPrice($amount);
|
323 |
-
$amount =
|
324 |
|
325 |
//build PayPal Redirect URL
|
326 |
$environment = pmpro_getOption("gateway_environment");
|
@@ -353,10 +353,10 @@
|
|
353 |
$paypal_args = array(
|
354 |
'business' => pmpro_getOption("gateway_email"),
|
355 |
'cmd' => '_xclick-subscriptions',
|
356 |
-
'a1' =>
|
357 |
'p1' => $order->BillingFrequency,
|
358 |
't1' => $period,
|
359 |
-
'a3' =>
|
360 |
'p3' => $order->BillingFrequency,
|
361 |
't3' => $period,
|
362 |
'item_name' => apply_filters( 'pmpro_paypal_level_description', substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127), $order->membership_level->name, $order, get_bloginfo("name") ),
|
@@ -391,7 +391,7 @@
|
|
391 |
{
|
392 |
$trial_amount = $order->TrialAmount;
|
393 |
$trial_tax = $order->getTaxForPrice($trial_amount);
|
394 |
-
$trial_amount =
|
395 |
|
396 |
$paypal_args['a2'] = $trial_amount;
|
397 |
$paypal_args['p2'] = $order->TrialBillingFrequency;
|
@@ -469,7 +469,7 @@
|
|
469 |
$paypal_args = array(
|
470 |
'business' => pmpro_getOption("gateway_email"),
|
471 |
'cmd' => '_xclick',
|
472 |
-
'amount' =>
|
473 |
'item_name' => apply_filters( 'pmpro_paypal_level_description', substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127), $order->membership_level->name, $order, get_bloginfo("name") ),
|
474 |
'email' => $order->Email,
|
475 |
'no_shipping' => '1',
|
@@ -656,6 +656,16 @@
|
|
656 |
}
|
657 |
}
|
658 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
659 |
return $httpParsedResponseAr;
|
660 |
}
|
661 |
}
|
130 |
<tr class="pmpro_settings_divider gateway gateway_paypal gateway_paypalexpress gateway_paypalstandard" <?php if($gateway != "paypal" && $gateway != "paypalexpress" && $gateway != "paypalstandard") { ?>style="display: none;"<?php } ?>>
|
131 |
<td colspan="2">
|
132 |
<hr />
|
133 |
+
<h3><?php esc_html_e('PayPal Settings', 'paid-memberships-pro' ); ?></h3>
|
134 |
</td>
|
135 |
</tr>
|
136 |
<tr class="gateway gateway_paypalstandard" <?php if($gateway != "paypalstandard") { ?>style="display: none;"<?php } ?>>
|
151 |
</tr>
|
152 |
<tr class="gateway gateway_paypal gateway_paypalexpress gateway_paypalstandard" <?php if($gateway != "paypal" && $gateway != "paypalexpress" && $gateway != "paypalstandard") { ?>style="display: none;"<?php } ?>>
|
153 |
<th scope="row" valign="top">
|
154 |
+
<label for="gateway_email"><?php esc_html_e('Gateway Account Email', 'paid-memberships-pro' );?>:</label>
|
155 |
</th>
|
156 |
<td>
|
157 |
<input type="text" id="gateway_email" name="gateway_email" size="60" value="<?php echo esc_attr($values['gateway_email'])?>" />
|
159 |
</tr>
|
160 |
<tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
|
161 |
<th scope="row" valign="top">
|
162 |
+
<label for="apiusername"><?php esc_html_e('API Username', 'paid-memberships-pro' );?>:</label>
|
163 |
</th>
|
164 |
<td>
|
165 |
<input type="text" id="apiusername" name="apiusername" size="60" value="<?php echo esc_attr($values['apiusername'])?>" />
|
167 |
</tr>
|
168 |
<tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
|
169 |
<th scope="row" valign="top">
|
170 |
+
<label for="apipassword"><?php esc_html_e('API Password', 'paid-memberships-pro' );?>:</label>
|
171 |
</th>
|
172 |
<td>
|
173 |
<input type="text" id="apipassword" name="apipassword" size="60" value="<?php echo esc_attr($values['apipassword'])?>" autocomplete="off" class="regular-text code pmpro-admin-secure-key" />
|
175 |
</tr>
|
176 |
<tr class="gateway gateway_paypal gateway_paypalexpress" <?php if($gateway != "paypal" && $gateway != "paypalexpress") { ?>style="display: none;"<?php } ?>>
|
177 |
<th scope="row" valign="top">
|
178 |
+
<label for="apisignature"><?php esc_html_e('API Signature', 'paid-memberships-pro' );?>:</label>
|
179 |
</th>
|
180 |
<td>
|
181 |
<input type="text" id="apisignature" name="apisignature" size="60" value="<?php echo esc_attr($values['apisignature'])?>" />
|
183 |
</tr>
|
184 |
<tr class="gateway gateway_paypal gateway_paypalexpress gateway_paypalstandard" <?php if($gateway != "paypal" && $gateway != "paypalexpress" && $gateway != "paypalstandard") { ?>style="display: none;"<?php } ?>>
|
185 |
<th scope="row" valign="top">
|
186 |
+
<label><?php esc_html_e('IPN Handler URL', 'paid-memberships-pro' );?>:</label>
|
187 |
</th>
|
188 |
<td>
|
189 |
+
<p><?php esc_html_e('Here is your IPN URL for reference. You SHOULD NOT set this in your PayPal settings.', 'paid-memberships-pro' );?> <pre><?php echo esc_html( add_query_arg( 'action', 'ipnhandler', admin_url('admin-ajax.php') ) ); ?></pre></p>
|
190 |
</td>
|
191 |
</tr>
|
192 |
<?php
|
238 |
?>
|
239 |
<span id="pmpro_paypalexpress_checkout" <?php if(($gateway != "paypalexpress" && $gateway != "paypalstandard") || !$pmpro_requirebilling) { ?>style="display: none;"<?php } ?>>
|
240 |
<input type="hidden" name="submit-checkout" value="1" />
|
241 |
+
<input type="image" id="pmpro_btn-submit-paypalstandard" class="<?php echo pmpro_get_element_class( 'pmpro_btn-submit-checkout' ); ?>" value="<?php esc_attr_e('Check Out with PayPal', 'paid-memberships-pro' );?> »" src="<?php echo apply_filters("pmpro_paypal_button_image", "https://www.paypalobjects.com/webstatic/en_US/i/buttons/checkout-logo-medium.png");?>" />
|
242 |
</span>
|
243 |
|
244 |
<span id="pmpro_submit_span" <?php if(($gateway == "paypalexpress" || $gateway == "paypalstandard") && $pmpro_requirebilling) { ?>style="display: none;"<?php } ?>>
|
245 |
<input type="hidden" name="submit-checkout" value="1" />
|
246 |
+
<input type="submit" id="pmpro_btn-submit" class="<?php echo pmpro_get_element_class( 'pmpro_btn pmpro_btn-submit-checkout', 'pmpro_btn-submit-checkout' ); ?>" value="<?php if($pmpro_requirebilling) { _e('Submit and Check Out', 'paid-memberships-pro' ); } else { _e('Submit and Confirm', 'paid-memberships-pro' );}?> »" />
|
247 |
</span>
|
248 |
<?php
|
249 |
|
315 |
//taxes on initial amount
|
316 |
$initial_payment = $order->InitialPayment;
|
317 |
$initial_payment_tax = $order->getTaxForPrice($initial_payment);
|
318 |
+
$initial_payment = pmpro_round_price_as_string( (float) $initial_payment + (float) $initial_payment_tax );
|
319 |
|
320 |
//taxes on the amount
|
321 |
$amount = $order->PaymentAmount;
|
322 |
$amount_tax = $order->getTaxForPrice($amount);
|
323 |
+
$amount = pmpro_round_price_as_string( (float) $amount + (float) $amount_tax );
|
324 |
|
325 |
//build PayPal Redirect URL
|
326 |
$environment = pmpro_getOption("gateway_environment");
|
353 |
$paypal_args = array(
|
354 |
'business' => pmpro_getOption("gateway_email"),
|
355 |
'cmd' => '_xclick-subscriptions',
|
356 |
+
'a1' => $initial_payment,
|
357 |
'p1' => $order->BillingFrequency,
|
358 |
't1' => $period,
|
359 |
+
'a3' => $amount,
|
360 |
'p3' => $order->BillingFrequency,
|
361 |
't3' => $period,
|
362 |
'item_name' => apply_filters( 'pmpro_paypal_level_description', substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127), $order->membership_level->name, $order, get_bloginfo("name") ),
|
391 |
{
|
392 |
$trial_amount = $order->TrialAmount;
|
393 |
$trial_tax = $order->getTaxForPrice($trial_amount);
|
394 |
+
$trial_amount = pmpro_round_price_as_string((float)$trial_amount + (float)$trial_tax);
|
395 |
|
396 |
$paypal_args['a2'] = $trial_amount;
|
397 |
$paypal_args['p2'] = $order->TrialBillingFrequency;
|
469 |
$paypal_args = array(
|
470 |
'business' => pmpro_getOption("gateway_email"),
|
471 |
'cmd' => '_xclick',
|
472 |
+
'amount' => $initial_payment,
|
473 |
'item_name' => apply_filters( 'pmpro_paypal_level_description', substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127), $order->membership_level->name, $order, get_bloginfo("name") ),
|
474 |
'email' => $order->Email,
|
475 |
'no_shipping' => '1',
|
656 |
}
|
657 |
}
|
658 |
|
659 |
+
/**
|
660 |
+
* Allow performing actions using the http post request's response.
|
661 |
+
*
|
662 |
+
* @since 2.8
|
663 |
+
*
|
664 |
+
* @param array $httpParsedResponseAr The parsed response.
|
665 |
+
* @param string $methodName_ The NVP API name.
|
666 |
+
*/
|
667 |
+
do_action( 'pmpro_paypal_handle_http_post_response', $httpParsedResponseAr, $methodName_ );
|
668 |
+
|
669 |
return $httpParsedResponseAr;
|
670 |
}
|
671 |
}
|
classes/gateways/class.pmprogateway_stripe.php
CHANGED
@@ -14,6 +14,7 @@ use Stripe\ApplePayDomain as Stripe_ApplePayDomain;
|
|
14 |
use Stripe\WebhookEndpoint as Stripe_Webhook;
|
15 |
use Stripe\StripeClient as Stripe_Client; // Used for deleting webhook as of 2.4
|
16 |
use Stripe\Account as Stripe_Account;
|
|
|
17 |
|
18 |
define( "PMPRO_STRIPE_API_VERSION", "2020-03-02" );
|
19 |
|
@@ -26,6 +27,7 @@ add_action( 'init', array( 'PMProGateway_stripe', 'init' ) );
|
|
26 |
// loading plugin activation actions
|
27 |
add_action( 'activate_paid-memberships-pro', array( 'PMProGateway_stripe', 'pmpro_activation' ) );
|
28 |
add_action( 'deactivate_paid-memberships-pro', array( 'PMProGateway_stripe', 'pmpro_deactivation' ) );
|
|
|
29 |
|
30 |
/**
|
31 |
* PMProGateway_stripe Class
|
@@ -78,6 +80,12 @@ class PMProGateway_stripe extends PMProGateway {
|
|
78 |
//load Stripe library if it hasn't been loaded already (usually by another plugin using Stripe)
|
79 |
if ( ! class_exists( "Stripe\Stripe" ) ) {
|
80 |
require_once( PMPRO_DIR . "/includes/lib/Stripe/init.php" );
|
|
|
|
|
|
|
|
|
|
|
|
|
81 |
}
|
82 |
}
|
83 |
|
@@ -119,7 +127,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
119 |
'PMProGateway_stripe',
|
120 |
'pmpro_cron_stripe_subscription_updates'
|
121 |
) );
|
122 |
-
|
123 |
//AJAX services for creating/disabling webhooks
|
124 |
add_action( 'wp_ajax_pmpro_stripe_create_webhook', array( 'PMProGateway_stripe', 'wp_ajax_pmpro_stripe_create_webhook' ) );
|
125 |
add_action( 'wp_ajax_pmpro_stripe_delete_webhook', array( 'PMProGateway_stripe', 'wp_ajax_pmpro_stripe_delete_webhook' ) );
|
@@ -140,34 +148,42 @@ class PMProGateway_stripe extends PMProGateway {
|
|
140 |
$current_gateway = pmpro_getGateway();
|
141 |
|
142 |
// $_REQUEST['review'] here means the PayPal Express review pag
|
143 |
-
if ( ( $default_gateway == "stripe" || $current_gateway == "stripe" ) && empty( $_REQUEST['review'] ) )
|
144 |
-
{
|
145 |
-
add_action( 'pmpro_after_checkout_preheader', array(
|
146 |
-
'PMProGateway_stripe',
|
147 |
-
'pmpro_checkout_after_preheader'
|
148 |
-
) );
|
149 |
-
|
150 |
-
add_action( 'pmpro_billing_preheader', array( 'PMProGateway_stripe', 'pmpro_checkout_after_preheader' ) );
|
151 |
-
add_filter( 'pmpro_checkout_order', array( 'PMProGateway_stripe', 'pmpro_checkout_order' ) );
|
152 |
-
add_filter( 'pmpro_billing_order', array( 'PMProGateway_stripe', 'pmpro_checkout_order' ) );
|
153 |
add_filter( 'pmpro_include_billing_address_fields', array(
|
154 |
'PMProGateway_stripe',
|
155 |
'pmpro_include_billing_address_fields'
|
156 |
) );
|
157 |
-
add_filter( 'pmpro_include_cardtype_field', array(
|
158 |
-
'PMProGateway_stripe',
|
159 |
-
'pmpro_include_billing_address_fields'
|
160 |
-
) );
|
161 |
-
add_filter( 'pmpro_include_payment_information_fields', array(
|
162 |
-
'PMProGateway_stripe',
|
163 |
-
'pmpro_include_payment_information_fields'
|
164 |
-
) );
|
165 |
|
166 |
-
|
167 |
-
|
168 |
-
'
|
169 |
-
|
170 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
171 |
}
|
172 |
|
173 |
add_action( 'pmpro_payment_option_fields', array( 'PMProGateway_stripe', 'pmpro_set_up_apple_pay' ), 10, 2 );
|
@@ -177,6 +193,8 @@ class PMProGateway_stripe extends PMProGateway {
|
|
177 |
add_action( 'admin_init', array( 'PMProGateway_stripe', 'stripe_connect_save_options' ) );
|
178 |
add_action( 'admin_notices', array( 'PMProGateway_stripe', 'stripe_connect_show_errors' ) );
|
179 |
add_action( 'admin_notices', array( 'PMProGateway_stripe', 'stripe_connect_deauthorize' ) );
|
|
|
|
|
180 |
}
|
181 |
|
182 |
/**
|
@@ -247,6 +265,14 @@ class PMProGateway_stripe extends PMProGateway {
|
|
247 |
'stripe_payment_request_button',
|
248 |
);
|
249 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
250 |
return $options;
|
251 |
}
|
252 |
|
@@ -294,7 +320,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
294 |
}
|
295 |
|
296 |
?>
|
297 |
-
<tr class="pmpro_settings_divider gateway gateway_stripe" <?php if ( $gateway != "stripe" ) { ?>style="display: none;"<?php } ?>>
|
298 |
<td colspan="2">
|
299 |
<hr />
|
300 |
<h2 class="pmpro_stripe_legacy_keys" <?php if( ! self::show_legacy_keys_settings() ) {?>style="display: none;"<?php }?>><?php esc_html_e( 'Stripe API Settings (Legacy)', 'paid-memberships-pro' ); ?></h2>
|
@@ -308,7 +334,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
308 |
jQuery(document).ready(function(){
|
309 |
jQuery('#pmpro_stripe_legacy_keys_toggle').click(function(e){
|
310 |
var btn = jQuery('#pmpro_stripe_legacy_keys_toggle');
|
311 |
-
var div = btn.closest('.pmpro_settings_divider');
|
312 |
btn.parent().remove();
|
313 |
jQuery('.pmpro_stripe_legacy_keys').show();
|
314 |
jQuery('.pmpro_stripe_legacy_keys').addClass('gateway_stripe');
|
@@ -321,7 +347,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
321 |
</tr>
|
322 |
<tr class="gateway pmpro_stripe_legacy_keys <?php if ( self::show_legacy_keys_settings() ) { echo 'gateway_stripe'; } ?>" <?php if ( $gateway != "stripe" || ! self::show_legacy_keys_settings() ) { ?>style="display: none;"<?php } ?>>
|
323 |
<th scope="row" valign="top">
|
324 |
-
<label for="stripe_publishablekey"><?php
|
325 |
</th>
|
326 |
<td>
|
327 |
<input type="text" id="stripe_publishablekey" name="stripe_publishablekey" value="<?php echo esc_attr( $values['stripe_publishablekey'] ) ?>" class="regular-text code" />
|
@@ -329,7 +355,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
329 |
$public_key_prefix = substr( $values['stripe_publishablekey'], 0, 3 );
|
330 |
if ( ! empty( $values['stripe_publishablekey'] ) && $public_key_prefix != 'pk_' ) {
|
331 |
?>
|
332 |
-
<p class="pmpro_red"><strong><?php
|
333 |
<?php
|
334 |
}
|
335 |
?>
|
@@ -337,12 +363,12 @@ class PMProGateway_stripe extends PMProGateway {
|
|
337 |
</tr>
|
338 |
<tr class="gateway pmpro_stripe_legacy_keys <?php if ( self::show_legacy_keys_settings() ) { echo 'gateway_stripe'; } ?>" <?php if ( $gateway != "stripe" || ! self::show_legacy_keys_settings() ) { ?>style="display: none;"<?php } ?>>
|
339 |
<th scope="row" valign="top">
|
340 |
-
<label for="stripe_secretkey"><?php
|
341 |
</th>
|
342 |
<td>
|
343 |
<input type="text" id="stripe_secretkey" name="stripe_secretkey" value="<?php echo esc_attr( $values['stripe_secretkey'] ) ?>" autocomplete="off" class="regular-text code pmpro-admin-secure-key" />
|
344 |
</td>
|
345 |
-
</tr>
|
346 |
<tr class="gateway pmpro_stripe_legacy_keys <?php if ( self::show_legacy_keys_settings() ) { echo 'gateway_stripe'; } ?>" <?php if ( $gateway != "stripe" || ! self::show_legacy_keys_settings() ) { ?>style="display: none;"<?php } ?>>
|
347 |
<th scope="row" valign="top">
|
348 |
<label><?php esc_html_e( 'Webhook', 'paid-memberships-pro' ); ?>:</label>
|
@@ -350,32 +376,32 @@ class PMProGateway_stripe extends PMProGateway {
|
|
350 |
<td>
|
351 |
<?php if ( ! empty( $webhook ) && is_array( $webhook ) && self::show_legacy_keys_settings()) { ?>
|
352 |
<button type="button" id="pmpro_stripe_create_webhook" class="button button-secondary" style="display: none;"><span class="dashicons dashicons-update-alt"></span> <?php _e( 'Create Webhook' ,'paid-memberships-pro' ); ?></button>
|
353 |
-
<?php
|
354 |
if ( 'disabled' === $webhook['status'] ) {
|
355 |
// Check webhook status.
|
356 |
?>
|
357 |
<div class="notice error inline">
|
358 |
-
<p id="pmpro_stripe_webhook_notice" class="pmpro_stripe_webhook_notice"><?php
|
359 |
</div>
|
360 |
<?php
|
361 |
} elseif ( $webhook['api_version'] < PMPRO_STRIPE_API_VERSION ) {
|
362 |
// Check webhook API version.
|
363 |
?>
|
364 |
<div class="notice error inline">
|
365 |
-
<p id="pmpro_stripe_webhook_notice" class="pmpro_stripe_webhook_notice"><?php
|
366 |
</div>
|
367 |
<?php
|
368 |
} else {
|
369 |
?>
|
370 |
<div class="notice notice-success inline">
|
371 |
-
<p id="pmpro_stripe_webhook_notice" class="pmpro_stripe_webhook_notice"><?php
|
372 |
</div>
|
373 |
<?php
|
374 |
}
|
375 |
} elseif ( self::show_legacy_keys_settings() ) { ?>
|
376 |
<button type="button" id="pmpro_stripe_create_webhook" class="button button-secondary"><span class="dashicons dashicons-update-alt"></span> <?php _e( 'Create Webhook' ,'paid-memberships-pro' ); ?></button>
|
377 |
<div class="notice error inline">
|
378 |
-
<p id="pmpro_stripe_webhook_notice" class="pmpro_stripe_webhook_notice"><?php
|
379 |
</div>
|
380 |
<?php
|
381 |
}
|
@@ -384,40 +410,40 @@ class PMProGateway_stripe extends PMProGateway {
|
|
384 |
<code><?php echo self::get_site_webhook_url(); ?></code></p>
|
385 |
</td>
|
386 |
</tr>
|
387 |
-
<tr class="pmpro_settings_divider gateway gateway_stripe" <?php if ( $gateway != "stripe" ) { ?>style="display: none;"<?php } ?>>
|
388 |
<td colspan="2">
|
389 |
<hr />
|
390 |
-
<h2><?php esc_html_e( 'Other Stripe Settings', 'paid-memberships-pro' ); ?></h2>
|
391 |
</td>
|
392 |
</tr>
|
393 |
<tr class="gateway gateway_stripe" <?php if ( $gateway != "stripe" ) { ?>style="display: none;"<?php } ?>>
|
394 |
-
<th><?php
|
395 |
<td><code><?php echo PMPRO_STRIPE_API_VERSION; ?></code></td>
|
396 |
</tr>
|
397 |
<tr class="gateway gateway_stripe" <?php if ( $gateway != "stripe" ) { ?>style="display: none;"<?php } ?>>
|
398 |
<th scope="row" valign="top">
|
399 |
-
<label for="stripe_billingaddress"><?php
|
400 |
</th>
|
401 |
<td>
|
402 |
<select id="stripe_billingaddress" name="stripe_billingaddress">
|
403 |
<option value="0"
|
404 |
-
<?php if ( empty( $values['stripe_billingaddress'] ) ) { ?>selected="selected"<?php } ?>><?php
|
405 |
<option value="1"
|
406 |
-
<?php if ( ! empty( $values['stripe_billingaddress'] ) ) { ?>selected="selected"<?php } ?>><?php
|
407 |
</select>
|
408 |
-
<p class="description"><?php
|
409 |
</td>
|
410 |
</tr>
|
411 |
<tr class="gateway gateway_stripe" <?php if ( $gateway != "stripe" ) { ?>style="display: none;"<?php } ?>>
|
412 |
<th scope="row" valign="top">
|
413 |
-
<label for="stripe_payment_request_button"><?php
|
414 |
</th>
|
415 |
<td>
|
416 |
<select id="stripe_payment_request_button" name="stripe_payment_request_button">
|
417 |
<option value="0"
|
418 |
-
<?php if ( empty( $values['stripe_payment_request_button'] ) ) { ?>selected="selected"<?php } ?>><?php
|
419 |
<option value="1"
|
420 |
-
<?php if ( ! empty( $values['stripe_payment_request_button'] ) ) { ?>selected="selected"<?php } ?>><?php
|
421 |
</select>
|
422 |
<?php
|
423 |
$allowed_stripe_payment_button_html = array (
|
@@ -469,11 +495,97 @@ class PMProGateway_stripe extends PMProGateway {
|
|
469 |
),
|
470 |
);
|
471 |
echo '<tr class="gateway gateway_stripe"';
|
472 |
-
if ( $gateway != "stripe" ) {
|
473 |
echo ' style="display: none;"';
|
474 |
}
|
475 |
echo '><th> </th><td><p class="description">' . sprintf( wp_kses( __( 'Optional: Offer PayPal Express as an option at checkout using the <a target="_blank" href="%s" title="Paid Memberships Pro - Add PayPal Express Option at Checkout Add On">Add PayPal Express Add On</a>.', 'paid-memberships-pro' ), $allowed_appe_html ), 'https://www.paidmembershipspro.com/add-ons/pmpro-add-paypal-express-option-checkout/?utm_source=plugin&utm_medium=pmpro-paymentsettings&utm_campaign=add-ons&utm_content=pmpro-add-paypal-express-option-checkout' ) . '</p></td></tr>';
|
476 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
477 |
<?php
|
478 |
}
|
479 |
|
@@ -482,10 +594,10 @@ class PMProGateway_stripe extends PMProGateway {
|
|
482 |
*/
|
483 |
public static function wp_ajax_pmpro_stripe_create_webhook( $silent = false ) {
|
484 |
$secretkey = sanitize_text_field( $_REQUEST['secretkey'] );
|
485 |
-
|
486 |
$stripe = new PMProGateway_stripe();
|
487 |
Stripe\Stripe::setApiKey( $secretkey );
|
488 |
-
|
489 |
$update_webhook_response = $stripe::update_webhook_events();
|
490 |
|
491 |
if ( empty( $update_webhook_response ) || is_wp_error( $update_webhook_response ) ) {
|
@@ -504,7 +616,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
504 |
'response' => $update_webhook_response
|
505 |
);
|
506 |
}
|
507 |
-
|
508 |
if ( $silent ) {
|
509 |
return $r;
|
510 |
} else {
|
@@ -512,16 +624,16 @@ class PMProGateway_stripe extends PMProGateway {
|
|
512 |
exit;
|
513 |
}
|
514 |
}
|
515 |
-
|
516 |
/**
|
517 |
* AJAX callback to disable webhooks.
|
518 |
*/
|
519 |
public static function wp_ajax_pmpro_stripe_delete_webhook( $silent = false ) {
|
520 |
$secretkey = sanitize_text_field( $_REQUEST['secretkey'] );
|
521 |
-
|
522 |
$stripe = new PMProGateway_stripe();
|
523 |
Stripe\Stripe::setApiKey( $secretkey );
|
524 |
-
|
525 |
$webhook = self::does_webhook_exist();
|
526 |
|
527 |
$r = array(
|
@@ -625,32 +737,28 @@ class PMProGateway_stripe extends PMProGateway {
|
|
625 |
global $pmpro_stripe_lite, $current_user, $bemail, $bconfirmemail;
|
626 |
|
627 |
//CVV is not required if set that way at Stripe. The Stripe JS will require it if it is required.
|
628 |
-
|
629 |
|
630 |
//if using stripe lite, remove some fields from the required array
|
631 |
if ( $pmpro_stripe_lite ) {
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
//remove the fields
|
651 |
-
foreach ( $remove as $field ) {
|
652 |
-
unset( $fields[ $field ] );
|
653 |
-
}
|
654 |
}
|
655 |
|
656 |
return $fields;
|
@@ -744,8 +852,8 @@ class PMProGateway_stripe extends PMProGateway {
|
|
744 |
<div id="pmpro_payment_information_fields" class="<?php echo pmpro_get_element_class( 'pmpro_checkout', 'pmpro_payment_information_fields' ); ?>"
|
745 |
<?php if ( ! $pmpro_requirebilling || apply_filters( "pmpro_hide_payment_information_fields", false ) ) { ?>style="display: none;"<?php } ?>>
|
746 |
<h3>
|
747 |
-
<span class="<?php echo pmpro_get_element_class( 'pmpro_checkout-h3-name' ); ?>"><?php
|
748 |
-
<span class="<?php echo pmpro_get_element_class( 'pmpro_checkout-h3-msg' ); ?>"><?php printf(
|
749 |
</h3>
|
750 |
<?php $sslseal = pmpro_getOption( "sslseal" ); ?>
|
751 |
<?php if ( ! empty( $sslseal ) ) { ?>
|
@@ -765,11 +873,11 @@ class PMProGateway_stripe extends PMProGateway {
|
|
765 |
$pmpro_include_cardtype_field = apply_filters( 'pmpro_include_cardtype_field', false );
|
766 |
if ( $pmpro_include_cardtype_field ) { ?>
|
767 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_checkout-field pmpro_payment-card-type', 'pmpro_payment-card-type' ); ?>">
|
768 |
-
<label for="CardType"><?php
|
769 |
<select id="CardType" class="<?php echo pmpro_get_element_class( 'CardType' ); ?>">
|
770 |
<?php foreach ( $pmpro_accepted_credit_cards as $cc ) { ?>
|
771 |
-
<option value="<?php echo $cc ?>"
|
772 |
-
|
773 |
<?php } ?>
|
774 |
</select>
|
775 |
</div>
|
@@ -778,29 +886,29 @@ class PMProGateway_stripe extends PMProGateway {
|
|
778 |
value="<?php echo esc_attr( $CardType ); ?>"/>
|
779 |
<?php } ?>
|
780 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_checkout-field pmpro_payment-account-number', 'pmpro_payment-account-number' ); ?>">
|
781 |
-
<label for="AccountNumber"><?php
|
782 |
<div id="AccountNumber"></div>
|
783 |
</div>
|
784 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_checkout-field pmpro_payment-expiration', 'pmpro_payment-expiration' ); ?>">
|
785 |
-
<label for="Expiry"><?php
|
786 |
<div id="Expiry"></div>
|
787 |
</div>
|
788 |
<?php
|
789 |
$pmpro_show_cvv = apply_filters( "pmpro_show_cvv", true );
|
790 |
if ( $pmpro_show_cvv ) { ?>
|
791 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_checkout-field pmpro_payment-cvv', 'pmpro_payment-cvv' ); ?>">
|
792 |
-
<label for="CVV"><?php
|
793 |
<div id="CVV"></div>
|
794 |
</div>
|
795 |
<?php } ?>
|
796 |
<?php if ( $pmpro_show_discount_code ) { ?>
|
797 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_checkout-field pmpro_payment-discount-code', 'pmpro_payment-discount-code' ); ?>">
|
798 |
-
<label for="discount_code"><?php
|
799 |
<input class="<?php echo pmpro_get_element_class( 'input pmpro_alter_price', 'discount_code' ); ?>"
|
800 |
id="discount_code" name="discount_code" type="text" size="10"
|
801 |
value="<?php echo esc_attr( $discount_code ) ?>"/>
|
802 |
<input type="button" id="discount_code_button" name="discount_code_button"
|
803 |
-
value="<?php
|
804 |
<p id="discount_code_message" class="<?php echo pmpro_get_element_class( 'pmpro_message' ); ?>" style="display: none;"></p>
|
805 |
</div>
|
806 |
<?php } ?>
|
@@ -955,6 +1063,23 @@ class PMProGateway_stripe extends PMProGateway {
|
|
955 |
wp_clear_scheduled_hook( 'pmpro_cron_stripe_subscription_updates' );
|
956 |
}
|
957 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
958 |
/**
|
959 |
* Cron job for subscription updates.
|
960 |
*
|
@@ -1124,10 +1249,10 @@ class PMProGateway_stripe extends PMProGateway {
|
|
1124 |
if ( ! empty( $subscription ) ) {
|
1125 |
$customer = $order->Gateway->get_customer_for_user( $user_id );
|
1126 |
if ( ! $customer->delinquent && ! empty ( $subscription->current_period_end ) ) {
|
1127 |
-
$offset = get_option( 'gmt_offset' );
|
1128 |
$timestamp = $subscription->current_period_end + ( $offset * 3600 );
|
1129 |
} elseif ( $customer->delinquent && ! empty( $subscription->current_period_start ) ) {
|
1130 |
-
$offset = get_option( 'gmt_offset' );
|
1131 |
$timestamp = $subscription->current_period_start + ( $offset * 3600 );
|
1132 |
} else {
|
1133 |
$timestamp = null; // shouldn't really get here
|
@@ -1149,9 +1274,9 @@ class PMProGateway_stripe extends PMProGateway {
|
|
1149 |
if ( empty( $payment_option_values['stripe_payment_request_button'] ) ) {
|
1150 |
// We don't want to unregister domain or remove file in case
|
1151 |
// other plugins are using it.
|
1152 |
-
return;
|
1153 |
}
|
1154 |
-
|
1155 |
// Make sure that Apple Pay is set up.
|
1156 |
// TODO: Apple Pay API functions don't seem to work with
|
1157 |
// test API keys. Need to figure this out.
|
@@ -1179,7 +1304,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
1179 |
if ( ! isset( $_REQUEST['pmpro_stripe_connected'] ) || ! isset( $_REQUEST['pmpro_stripe_connected_environment'] ) ) {
|
1180 |
return false;
|
1181 |
}
|
1182 |
-
|
1183 |
// Change current gateway to Stripe
|
1184 |
pmpro_setOption( 'gateway', 'stripe' );
|
1185 |
pmpro_setOption( 'gateway_environment', $_REQUEST['pmpro_stripe_connected_environment'] );
|
@@ -1210,7 +1335,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
1210 |
pmpro_setOption( 'sandbox_stripe_connect_secretkey', $_REQUEST['pmpro_stripe_access_token'] );
|
1211 |
pmpro_setOption( 'sandbox_stripe_connect_publishablekey', $_REQUEST['pmpro_stripe_publishable_key'] );
|
1212 |
}
|
1213 |
-
|
1214 |
|
1215 |
// Delete option for user API key.
|
1216 |
delete_option( 'pmpro_stripe_secretkey' );
|
@@ -1287,7 +1412,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
1287 |
* @return bool Whether the site is using legacy Stripe keys.
|
1288 |
*/
|
1289 |
public static function using_legacy_keys() {
|
1290 |
-
$r = ! empty( pmpro_getOption( 'stripe_secretkey' ) ) && ! empty( pmpro_getOption( 'stripe_publishablekey' ) );
|
1291 |
return $r;
|
1292 |
}
|
1293 |
|
@@ -1305,14 +1430,14 @@ class PMProGateway_stripe extends PMProGateway {
|
|
1305 |
|
1306 |
if ( $gateway_environment === 'live' ) {
|
1307 |
// Return whether Stripe is connected for live gateway environment.
|
1308 |
-
return (
|
1309 |
pmpro_getOption( 'live_stripe_connect_user_id' ) &&
|
1310 |
pmpro_getOption( 'live_stripe_connect_secretkey' ) &&
|
1311 |
pmpro_getOption( 'live_stripe_connect_publishablekey' )
|
1312 |
);
|
1313 |
} else {
|
1314 |
// Return whether Stripe is connected for sandbox gateway environment.
|
1315 |
-
return (
|
1316 |
pmpro_getOption( 'sandbox_stripe_connect_user_id' ) &&
|
1317 |
pmpro_getOption( 'sandbox_stripe_connect_secretkey' ) &&
|
1318 |
pmpro_getOption( 'sandbox_stripe_connect_publishablekey' )
|
@@ -1366,6 +1491,295 @@ class PMProGateway_stripe extends PMProGateway {
|
|
1366 |
return true;
|
1367 |
}
|
1368 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1369 |
/****************************************
|
1370 |
************ PUBLIC METHODS ************
|
1371 |
****************************************/
|
@@ -1375,6 +1789,11 @@ class PMProGateway_stripe extends PMProGateway {
|
|
1375 |
* @since 1.4
|
1376 |
*/
|
1377 |
public function process( &$order ) {
|
|
|
|
|
|
|
|
|
|
|
1378 |
$payment_transaction_id = '';
|
1379 |
$subscription_transaction_id = '';
|
1380 |
|
@@ -1421,7 +1840,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
1421 |
$payment_method = $this->get_payment_method( $order );
|
1422 |
if ( empty( $payment_method ) ) {
|
1423 |
// There was an issue getting the payment method.
|
1424 |
-
$order->error = __( 'Error retrieving payment method.', 'paid-memberships-pro' );
|
1425 |
$order->shorterror = $order->error;
|
1426 |
return false;
|
1427 |
}
|
@@ -1463,7 +1882,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
1463 |
}
|
1464 |
$order->stripe_subscription = $subscription;
|
1465 |
$setup_intent = $subscription->pending_setup_intent;
|
1466 |
-
|
1467 |
if ( ! empty( $setup_intent->status ) && 'requires_action' === $setup_intent->status ) {
|
1468 |
// We will need to reload the page to authenticate, so save the subscription ID in the setup intent
|
1469 |
// so that we don't lose it.
|
@@ -1476,7 +1895,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
1476 |
$order->stripe_setup_intent = $setup_intent;
|
1477 |
$order->errorcode = true;
|
1478 |
$order->error = __( 'Customer authentication is required to finish setting up your subscription. Please complete the verification steps issued by your payment provider.', 'paid-memberships-pro' );
|
1479 |
-
|
1480 |
return false;
|
1481 |
}
|
1482 |
|
@@ -1607,7 +2026,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
1607 |
! empty( $user->pmpro_bcity ) &&
|
1608 |
! empty( $user->pmpro_bstate ) &&
|
1609 |
! empty( $user->pmpro_bzipcode ) &&
|
1610 |
-
! empty( $user->pmpro_bcountry )
|
1611 |
) {
|
1612 |
// We have an address in user meta and there is
|
1613 |
// no address in Stripe. May as well send it.
|
@@ -1650,7 +2069,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
1650 |
*/
|
1651 |
public function getSubscriptionStatus( &$order ) {
|
1652 |
$subscription = $this->get_subscription( $order->subscription_transaction_id );
|
1653 |
-
|
1654 |
if ( ! empty( $subscription ) ) {
|
1655 |
return $subscription->status;
|
1656 |
} else {
|
@@ -1674,7 +2093,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
1674 |
$payment_method = $this->get_payment_method( $order );
|
1675 |
if ( empty( $payment_method ) ) {
|
1676 |
// There was an issue getting the payment method.
|
1677 |
-
$order->error = __(
|
1678 |
$order->shorterror = $order->error;
|
1679 |
return false;
|
1680 |
}
|
@@ -1749,6 +2168,26 @@ class PMProGateway_stripe extends PMProGateway {
|
|
1749 |
}
|
1750 |
}
|
1751 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1752 |
|
1753 |
/****************************************
|
1754 |
*********** PRIVATE METHODS ************
|
@@ -1762,7 +2201,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
1762 |
* @param array $values Current settings.
|
1763 |
* @param string $gateway currently being shown.
|
1764 |
*/
|
1765 |
-
private function show_connect_payment_option_fields( $livemode
|
1766 |
$gateway_environment = $this->gateway_environment;
|
1767 |
|
1768 |
$stripe_legacy_key = $values['stripe_publishablekey'];
|
@@ -1787,7 +2226,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
1787 |
<h2>
|
1788 |
<?php esc_html_e( 'Stripe Connect Settings', 'paid-memberships-pro' ); ?>
|
1789 |
<span class="pmpro_gateway-mode pmpro_gateway-mode-<?php echo $environment2; ?> <?php esc_attr_e( $connection_selector ); ?>">
|
1790 |
-
<?php
|
1791 |
echo ( $livemode ? esc_html__( 'Live Mode:', 'paid-memberships-pro' ) : esc_html__( 'Test Mode:', 'paid-memberships-pro' ) ) . ' ';
|
1792 |
if ( self::has_connect_credentials( $environment ) ) {
|
1793 |
esc_html_e( 'Connected', 'paid-memberships-pro' );
|
@@ -1867,7 +2306,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
1867 |
} else {
|
1868 |
esc_html_e( 'Note: You are using the free Stripe payment gateway integration. This includes an additional 1% fee for payment processing. This fee is removed by activating a premium PMPro license.', 'paid-memberships-pro');
|
1869 |
}
|
1870 |
-
echo ' <a href="https://www.paidmembershipspro.com/gateway/stripe/?utm_source=plugin&utm_medium=pmpro-paymentsettings&utm_campaign=gateways&utm_content=stripe-fees#tab-fees" target="_blank">' .
|
1871 |
?>
|
1872 |
</p>
|
1873 |
<input type='hidden' name='<?php echo $environment; ?>_stripe_connect_user_id' id='<?php echo $environment; ?>_stripe_connect_user_id' value='<?php echo esc_attr( $values[ $environment . '_stripe_connect_user_id'] ) ?>'/>
|
@@ -2035,7 +2474,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
2035 |
! empty( $order->billing->city ) &&
|
2036 |
! empty( $order->billing->state ) &&
|
2037 |
! empty( $order->billing->zip ) &&
|
2038 |
-
! empty( $order->billing->country )
|
2039 |
) {
|
2040 |
// We collected a billing address at checkout.
|
2041 |
// Send it to Stripe.
|
@@ -2053,7 +2492,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
2053 |
! empty( $user->pmpro_bcity ) &&
|
2054 |
! empty( $user->pmpro_bstate ) &&
|
2055 |
! empty( $user->pmpro_bzipcode ) &&
|
2056 |
-
! empty( $user->pmpro_bcountry )
|
2057 |
) {
|
2058 |
// We have an address in user meta and there is
|
2059 |
// no address in Stripe. May as well send it.
|
@@ -2111,6 +2550,9 @@ class PMProGateway_stripe extends PMProGateway {
|
|
2111 |
}
|
2112 |
add_action( "user_register", "pmpro_user_register_stripe_customerid" );
|
2113 |
}
|
|
|
|
|
|
|
2114 |
}
|
2115 |
|
2116 |
/**
|
@@ -2154,7 +2596,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
2154 |
return $customer;
|
2155 |
}
|
2156 |
|
2157 |
-
|
2158 |
* Convert a price to a positive integer in cents (or 0 for a free price)
|
2159 |
* representing how much to charge. This is how Stripe wants us to send price amounts.
|
2160 |
*
|
@@ -2162,19 +2604,13 @@ class PMProGateway_stripe extends PMProGateway {
|
|
2162 |
* @return integer
|
2163 |
*/
|
2164 |
private function convert_price_to_unit_amount( $price ) {
|
2165 |
-
|
2166 |
-
$currency_unit_multiplier = 100; // ie 100 cents per USD.
|
2167 |
|
2168 |
-
|
2169 |
-
|
2170 |
-
is_array( $pmpro_currencies[ $pmpro_currency ] ) &&
|
2171 |
-
isset( $pmpro_currencies[ $pmpro_currency ]['decimals'] ) &&
|
2172 |
-
$pmpro_currencies[ $pmpro_currency ]['decimals'] == 0
|
2173 |
-
) {
|
2174 |
-
$currency_unit_multiplier = 1;
|
2175 |
}
|
2176 |
|
2177 |
-
return
|
2178 |
}
|
2179 |
|
2180 |
/**
|
@@ -2302,9 +2738,17 @@ class PMProGateway_stripe extends PMProGateway {
|
|
2302 |
$currency = pmpro_get_currency();
|
2303 |
|
2304 |
$is_recurring = ! empty( $cycle_period ) && ! empty( $cycle_number );
|
2305 |
-
|
|
|
|
|
2306 |
$cycle_period = strtolower( $cycle_period );
|
2307 |
|
|
|
|
|
|
|
|
|
|
|
|
|
2308 |
$price_search_args = array(
|
2309 |
'product' => $product_id,
|
2310 |
'type' => $is_recurring ? 'recurring' : 'one_time',
|
@@ -2317,31 +2761,34 @@ class PMProGateway_stripe extends PMProGateway {
|
|
2317 |
|
2318 |
try {
|
2319 |
$prices = Stripe_Price::all( $price_search_args );
|
2320 |
-
|
2321 |
-
foreach ( $prices as $price ) {
|
2322 |
-
// Check whether price is the same. If not, continue.
|
2323 |
-
if ( intval( $price->unit_amount ) !== intval( $unit_amount ) ) {
|
2324 |
-
continue;
|
2325 |
-
}
|
2326 |
-
// Check if recurring structure is the same. If not, continue.
|
2327 |
-
if ( $is_recurring && ( empty( $price->recurring->interval_count ) || intval( $price->recurring->interval_count ) !== intval( $cycle_number ) ) ) {
|
2328 |
-
continue;
|
2329 |
-
}
|
2330 |
-
return $price;
|
2331 |
-
}
|
2332 |
} catch (\Throwable $th) {
|
2333 |
// There was an error listing prices.
|
2334 |
-
return $th->getMessage()
|
2335 |
} catch (\Exception $e) {
|
2336 |
// There was an error listing prices.
|
2337 |
return $e->getMessage();
|
2338 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2339 |
|
2340 |
// Create a new Price.
|
2341 |
$price_args = array(
|
2342 |
'product' => $product_id,
|
2343 |
'currency' => strtolower( $pmpro_currency ),
|
2344 |
-
'unit_amount' => $unit_amount
|
2345 |
);
|
2346 |
if ( $is_recurring ) {
|
2347 |
$price_args['recurring'] = array(
|
@@ -2349,6 +2796,9 @@ class PMProGateway_stripe extends PMProGateway {
|
|
2349 |
'interval_count' => $cycle_number
|
2350 |
);
|
2351 |
}
|
|
|
|
|
|
|
2352 |
|
2353 |
try {
|
2354 |
$price = Stripe_Price::create( $price_args );
|
@@ -2372,9 +2822,10 @@ class PMProGateway_stripe extends PMProGateway {
|
|
2372 |
* @since 2.7.0.
|
2373 |
*
|
2374 |
* @param MemberOrder $order to calculate trial period days for.
|
|
|
2375 |
* @return int trial period days.
|
2376 |
*/
|
2377 |
-
private function calculate_trial_period_days( $order ) {
|
2378 |
// Use a trial period to set the first recurring payment date.
|
2379 |
if ( $order->BillingPeriod == "Year" ) {
|
2380 |
$trial_period_days = $order->BillingFrequency * 365; //annual
|
@@ -2395,7 +2846,9 @@ class PMProGateway_stripe extends PMProGateway {
|
|
2395 |
$order->ProfileStartDate = date_i18n( "Y-m-d\TH:i:s", strtotime( "+ " . $trial_period_days . " Day", current_time( "timestamp" ) ) );
|
2396 |
|
2397 |
//filter the start date
|
2398 |
-
|
|
|
|
|
2399 |
|
2400 |
//convert back to days
|
2401 |
$trial_period_days = ceil( abs( strtotime( date_i18n( "Y-m-d\TH:i:s" ), current_time( "timestamp" ) ) - strtotime( $order->ProfileStartDate, current_time( "timestamp" ) ) ) / 86400 );
|
@@ -2435,7 +2888,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
2435 |
$subscription_params = array(
|
2436 |
'customer' => $customer_id,
|
2437 |
'items' => array(
|
2438 |
-
array( 'price' => $price ),
|
2439 |
),
|
2440 |
'trial_period_days' => $trial_period_days,
|
2441 |
'expand' => array(
|
@@ -2646,7 +3099,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
2646 |
$current_month = date_i18n( 'm' );
|
2647 |
?>
|
2648 |
<h3><?php esc_html_e( 'Subscription Updates', 'paid-memberships-pro' ); ?></h3>
|
2649 |
-
<p><?php esc_html_e( 'Subscription updates will be deprecated in a future version of PMPro, though your existing subscription updates will still trigger as expected. We now instead
|
2650 |
<table class="form-table">
|
2651 |
<input type='hidden' name='pmpro_subscription_updates_visible' value='1' />
|
2652 |
<tr>
|
@@ -2735,14 +3188,12 @@ class PMProGateway_stripe extends PMProGateway {
|
|
2735 |
<?php
|
2736 |
}
|
2737 |
|
2738 |
-
|
2739 |
-
|
2740 |
/****************************************
|
2741 |
******* METHODS BECOMING PRIVATE *******
|
2742 |
****************************************/
|
2743 |
/**
|
2744 |
* Get available webhooks
|
2745 |
-
*
|
2746 |
* @since 2.4
|
2747 |
* @deprecated 2.7.0. Only deprecated for public use, will be changed to private non-static in a future version.
|
2748 |
*/
|
@@ -2766,13 +3217,13 @@ class PMProGateway_stripe extends PMProGateway {
|
|
2766 |
} catch (\Exception $e) {
|
2767 |
$webhooks = $e->getMessage();
|
2768 |
}
|
2769 |
-
|
2770 |
return $webhooks;
|
2771 |
}
|
2772 |
|
2773 |
/**
|
2774 |
* Get current webhook URL for website to compare.
|
2775 |
-
*
|
2776 |
* @since 2.4
|
2777 |
* @deprecated 2.7.0. Only deprecated for public use, will be changed to private non-static in a future version.
|
2778 |
*/
|
@@ -2784,24 +3235,34 @@ class PMProGateway_stripe extends PMProGateway {
|
|
2784 |
|
2785 |
/**
|
2786 |
* List of current enabled events required for PMPro to work.
|
2787 |
-
*
|
2788 |
* @since 2.4
|
2789 |
* @deprecated 2.7.0. Only deprecated for public use, will be changed to private non-static in a future version.
|
2790 |
*/
|
2791 |
public static function webhook_events() {
|
2792 |
// Show deprecation warning if called publically.
|
2793 |
pmpro_method_should_be_private( '2.7.0' );
|
2794 |
-
|
|
|
2795 |
'invoice.payment_succeeded',
|
2796 |
'invoice.payment_action_required',
|
2797 |
'customer.subscription.deleted',
|
2798 |
-
'charge.failed'
|
2799 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2800 |
}
|
2801 |
|
2802 |
/**
|
2803 |
* Create webhook with relevant events
|
2804 |
-
*
|
2805 |
* @since 2.4
|
2806 |
* @deprecated 2.7.0. Only deprecated for public use, will be changed to private non-static in a future version.
|
2807 |
*/
|
@@ -2826,12 +3287,12 @@ class PMProGateway_stripe extends PMProGateway {
|
|
2826 |
//throw $th;
|
2827 |
return new WP_Error( 'error', $e->getMessage() );
|
2828 |
}
|
2829 |
-
|
2830 |
}
|
2831 |
|
2832 |
/**
|
2833 |
* See if a webhook is registered with Stripe.
|
2834 |
-
*
|
2835 |
* @since 2.4
|
2836 |
* @deprecated 2.7.0. Only deprecated for public use, will be changed to private non-static in a future version.
|
2837 |
*/
|
@@ -2845,7 +3306,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
2845 |
}
|
2846 |
|
2847 |
$webhooks = self::get_webhooks();
|
2848 |
-
|
2849 |
$webhook_id = false;
|
2850 |
if ( ! empty( $webhooks ) && ! empty( $webhooks['data'] ) ) {
|
2851 |
|
@@ -2879,7 +3340,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
2879 |
|
2880 |
/**
|
2881 |
* Get a list of events that are missing between the created existing webhook and required webhook events for Paid Memberships Pro.
|
2882 |
-
*
|
2883 |
* @since 2.4
|
2884 |
* @deprecated 2.7.0. Only deprecated for public use, will be changed to private non-static in a future version.
|
2885 |
*/
|
@@ -2893,7 +3354,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
2893 |
// No missing events if webhook event is "All Events" selected.
|
2894 |
if ( is_array( $webhook_events ) && $webhook_events[0] === '*' ) {
|
2895 |
return false;
|
2896 |
-
}
|
2897 |
|
2898 |
if ( count( array_diff( $pmpro_webhook_events, $webhook_events ) ) ) {
|
2899 |
$events = array_unique( array_merge( $pmpro_webhook_events, $webhook_events ) );
|
@@ -2908,7 +3369,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
2908 |
|
2909 |
/**
|
2910 |
* Update required webhook enabled events.
|
2911 |
-
*
|
2912 |
* @since 2.4
|
2913 |
* @deprecated 2.7.0. Only deprecated for public use, will be changed to private non-static in a future version.
|
2914 |
*/
|
@@ -2928,17 +3389,17 @@ class PMProGateway_stripe extends PMProGateway {
|
|
2928 |
if ( ! isset( $webhook['enabled_events'] ) ) {
|
2929 |
return;
|
2930 |
}
|
2931 |
-
|
2932 |
$events = self::check_missing_webhook_events( $webhook['enabled_events'] );
|
2933 |
-
|
2934 |
if ( $events ) {
|
2935 |
|
2936 |
try {
|
2937 |
-
$update = Stripe_Webhook::update(
|
2938 |
$webhook['webhook_id'],
|
2939 |
['enabled_events' => $events ]
|
2940 |
);
|
2941 |
-
|
2942 |
if ( $update ) {
|
2943 |
return $update;
|
2944 |
}
|
@@ -2949,14 +3410,14 @@ class PMProGateway_stripe extends PMProGateway {
|
|
2949 |
//throw $th;
|
2950 |
return new WP_Error( 'error', $e->getMessage() );
|
2951 |
}
|
2952 |
-
|
2953 |
}
|
2954 |
-
|
2955 |
}
|
2956 |
|
2957 |
/**
|
2958 |
* Delete an existing webhook.
|
2959 |
-
*
|
2960 |
* @since 2.4
|
2961 |
* @deprecated 2.7.0. Only deprecated for public use, will be changed to private non-static in a future version.
|
2962 |
*/
|
@@ -2970,7 +3431,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
2970 |
if ( is_array( $webhook_id ) ) {
|
2971 |
$webhook_id = $webhook_id['webhook_id'];
|
2972 |
}
|
2973 |
-
|
2974 |
try {
|
2975 |
$stripe = new Stripe_Client( $secretkey );
|
2976 |
$delete = $stripe->webhookEndpoints->delete( $webhook_id, [] );
|
@@ -3115,29 +3576,29 @@ class PMProGateway_stripe extends PMProGateway {
|
|
3115 |
|
3116 |
// get customer
|
3117 |
$customer = $this->update_customer_at_checkout( $order );
|
3118 |
-
|
3119 |
if ( empty( $customer ) ) {
|
3120 |
return false;
|
3121 |
}
|
3122 |
-
|
3123 |
// get all subscriptions
|
3124 |
if ( ! empty( $customer->subscriptions ) ) {
|
3125 |
$subscriptions = $customer->subscriptions->all();
|
3126 |
}
|
3127 |
-
|
3128 |
foreach( $subscriptions as $subscription ) {
|
3129 |
// check if cancelled or expired
|
3130 |
if ( in_array( $subscription->status, array( 'canceled', 'incomplete', 'incomplete_expired' ) ) ) {
|
3131 |
continue;
|
3132 |
}
|
3133 |
-
|
3134 |
// check if we have a related order for it
|
3135 |
$one_order = new MemberOrder();
|
3136 |
$one_order->getLastMemberOrderBySubscriptionTransactionID( $subscription->id );
|
3137 |
if ( empty( $one_order ) || empty( $one_order->id ) ) {
|
3138 |
continue;
|
3139 |
}
|
3140 |
-
|
3141 |
// update the payment method
|
3142 |
$subscription->default_payment_method = $customer->invoice_settings->default_payment_method;
|
3143 |
$subscription->save();
|
@@ -3410,7 +3871,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
3410 |
|
3411 |
/**
|
3412 |
* Register domain with Apple Pay.
|
3413 |
-
*
|
3414 |
* @since 2.4
|
3415 |
* @deprecated 2.7.0. Only deprecated for public use, will be changed to private non-static in a future version.
|
3416 |
*/
|
@@ -3429,7 +3890,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
3429 |
|
3430 |
/**
|
3431 |
* See if domain is registered with Apple Pay.
|
3432 |
-
*
|
3433 |
* @since 2.4
|
3434 |
* @deprecated 2.7.0. Only deprecated for public use, will be changed to private non-static in a future version.
|
3435 |
*/
|
@@ -3522,7 +3983,6 @@ class PMProGateway_stripe extends PMProGateway {
|
|
3522 |
* @deprecated 2.7.0. Only deprecated for public use, will be changed to private non-static in a future version.
|
3523 |
*
|
3524 |
* @param array $params to be sent to Stripe.
|
3525 |
-
* @param bool $add_percent true if percentage should be added, false if actual amount.
|
3526 |
* @return array params with application fee if applicable.
|
3527 |
*/
|
3528 |
public static function add_application_fee_amount( $params ) {
|
@@ -3564,7 +4024,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
3564 |
pmpro_method_should_be_private( '2.7.0' );
|
3565 |
$secretkey = '';
|
3566 |
if ( self::using_legacy_keys() ) {
|
3567 |
-
$secretkey = pmpro_getOption( 'stripe_secretkey' );
|
3568 |
} else {
|
3569 |
$secretkey = pmpro_getOption( 'gateway_environment' ) === 'live'
|
3570 |
? pmpro_getOption( 'live_stripe_connect_secretkey' )
|
@@ -3584,7 +4044,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
3584 |
pmpro_method_should_be_private( '2.7.0' );
|
3585 |
$publishablekey = '';
|
3586 |
if ( self::using_legacy_keys() ) {
|
3587 |
-
$publishablekey = pmpro_getOption( 'stripe_publishablekey' );
|
3588 |
} else {
|
3589 |
$publishablekey = pmpro_getOption( 'gateway_environment' ) === 'live'
|
3590 |
? pmpro_getOption( 'live_stripe_connect_publishablekey' )
|
@@ -3657,7 +4117,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
3657 |
|
3658 |
return ( empty( $num_problem_orders ) );
|
3659 |
}
|
3660 |
-
|
3661 |
/**
|
3662 |
* Get the date the last webhook was processed.
|
3663 |
* @param environment The gateway environment (live or sandbox) to check for.
|
@@ -3818,7 +4278,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
3818 |
//need to remember the user updates to save later
|
3819 |
global $pmpro_stripe_updates;
|
3820 |
$pmpro_stripe_updates = $new_user_updates;
|
3821 |
-
|
3822 |
if( ! function_exists( 'pmpro_user_register_stripe_updates' ) ) {
|
3823 |
function pmpro_user_register_stripe_updates( $user_id ) {
|
3824 |
global $pmpro_stripe_updates;
|
@@ -4269,6 +4729,91 @@ class PMProGateway_stripe extends PMProGateway {
|
|
4269 |
return $this->refund( $order, $transaction_id );
|
4270 |
}
|
4271 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4272 |
/**
|
4273 |
* Refund a payment or invoice
|
4274 |
*
|
@@ -4448,7 +4993,7 @@ class PMProGateway_stripe extends PMProGateway {
|
|
4448 |
$amount_tax = $order->getTaxForPrice( $amount );
|
4449 |
$amount = pmpro_round_price( (float) $amount + (float) $amount_tax );
|
4450 |
|
4451 |
-
|
4452 |
$trial_period_days = $this->calculate_trial_period_days( $order );
|
4453 |
// Save $trial_period_days to order for now too.
|
4454 |
$order->TrialPeriodDays = $trial_period_days;
|
@@ -4481,6 +5026,4 @@ class PMProGateway_stripe extends PMProGateway {
|
|
4481 |
|
4482 |
return $order->plan;
|
4483 |
}
|
4484 |
-
|
4485 |
-
|
4486 |
}
|
14 |
use Stripe\WebhookEndpoint as Stripe_Webhook;
|
15 |
use Stripe\StripeClient as Stripe_Client; // Used for deleting webhook as of 2.4
|
16 |
use Stripe\Account as Stripe_Account;
|
17 |
+
use Stripe\Checkout\Session as Stripe_Checkout_Session;
|
18 |
|
19 |
define( "PMPRO_STRIPE_API_VERSION", "2020-03-02" );
|
20 |
|
27 |
// loading plugin activation actions
|
28 |
add_action( 'activate_paid-memberships-pro', array( 'PMProGateway_stripe', 'pmpro_activation' ) );
|
29 |
add_action( 'deactivate_paid-memberships-pro', array( 'PMProGateway_stripe', 'pmpro_deactivation' ) );
|
30 |
+
add_filter( 'pmpro_registered_crons', array( 'PMProGateway_stripe', 'register_cron' ) );
|
31 |
|
32 |
/**
|
33 |
* PMProGateway_stripe Class
|
80 |
//load Stripe library if it hasn't been loaded already (usually by another plugin using Stripe)
|
81 |
if ( ! class_exists( "Stripe\Stripe" ) ) {
|
82 |
require_once( PMPRO_DIR . "/includes/lib/Stripe/init.php" );
|
83 |
+
} else {
|
84 |
+
// Another plugin may have loaded the Stripe library already.
|
85 |
+
// Let's log the current Stripe Library info so that we know
|
86 |
+
// where to look if we need to troubleshoot library conflicts.
|
87 |
+
$previously_loaded_class = new \ReflectionClass( 'Stripe\Stripe' );
|
88 |
+
pmpro_track_library_conflict( 'stripe', $previously_loaded_class->getFileName(), Stripe\Stripe::VERSION );
|
89 |
}
|
90 |
}
|
91 |
|
127 |
'PMProGateway_stripe',
|
128 |
'pmpro_cron_stripe_subscription_updates'
|
129 |
) );
|
130 |
+
|
131 |
//AJAX services for creating/disabling webhooks
|
132 |
add_action( 'wp_ajax_pmpro_stripe_create_webhook', array( 'PMProGateway_stripe', 'wp_ajax_pmpro_stripe_create_webhook' ) );
|
133 |
add_action( 'wp_ajax_pmpro_stripe_delete_webhook', array( 'PMProGateway_stripe', 'wp_ajax_pmpro_stripe_delete_webhook' ) );
|
148 |
$current_gateway = pmpro_getGateway();
|
149 |
|
150 |
// $_REQUEST['review'] here means the PayPal Express review pag
|
151 |
+
if ( ( $default_gateway == "stripe" || $current_gateway == "stripe" ) && empty( $_REQUEST['review'] ) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
152 |
add_filter( 'pmpro_include_billing_address_fields', array(
|
153 |
'PMProGateway_stripe',
|
154 |
'pmpro_include_billing_address_fields'
|
155 |
) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
156 |
|
157 |
+
if ( ! self::using_stripe_checkout() ) {
|
158 |
+
// On-site checkout flow.
|
159 |
+
add_action( 'pmpro_after_checkout_preheader', array(
|
160 |
+
'PMProGateway_stripe',
|
161 |
+
'pmpro_checkout_after_preheader'
|
162 |
+
) );
|
163 |
+
add_filter( 'pmpro_include_cardtype_field', array(
|
164 |
+
'PMProGateway_stripe',
|
165 |
+
'pmpro_include_billing_address_fields'
|
166 |
+
) );
|
167 |
+
add_action( 'pmpro_billing_preheader', array( 'PMProGateway_stripe', 'pmpro_checkout_after_preheader' ) );
|
168 |
+
add_filter( 'pmpro_checkout_order', array( 'PMProGateway_stripe', 'pmpro_checkout_order' ) );
|
169 |
+
add_filter( 'pmpro_billing_order', array( 'PMProGateway_stripe', 'pmpro_checkout_order' ) );
|
170 |
+
add_filter( 'pmpro_include_payment_information_fields', array(
|
171 |
+
'PMProGateway_stripe',
|
172 |
+
'pmpro_include_payment_information_fields'
|
173 |
+
) );
|
174 |
+
|
175 |
+
//make sure we clean up subs we will be cancelling after checkout before processing
|
176 |
+
add_action( 'pmpro_checkout_before_processing', array(
|
177 |
+
'PMProGateway_stripe',
|
178 |
+
'pmpro_checkout_before_processing'
|
179 |
+
) );
|
180 |
+
} else {
|
181 |
+
// Checkout flow for Stripe Checkout.
|
182 |
+
add_filter('pmpro_include_payment_information_fields', array('PMProGateway_stripe', 'show_stripe_checkout_pending_warning'));
|
183 |
+
add_filter('pmpro_checkout_before_change_membership_level', array('PMProGateway_stripe', 'pmpro_checkout_before_change_membership_level'), 10, 2);
|
184 |
+
add_filter('pmprommpu_gateway_supports_multiple_level_checkout', '__return_false', 10, 2);
|
185 |
+
add_action( 'pmpro_billing_preheader', array( 'PMProGateway_stripe', 'pmpro_billing_preheader_stripe_checkout' ) );
|
186 |
+
}
|
187 |
}
|
188 |
|
189 |
add_action( 'pmpro_payment_option_fields', array( 'PMProGateway_stripe', 'pmpro_set_up_apple_pay' ), 10, 2 );
|
193 |
add_action( 'admin_init', array( 'PMProGateway_stripe', 'stripe_connect_save_options' ) );
|
194 |
add_action( 'admin_notices', array( 'PMProGateway_stripe', 'stripe_connect_show_errors' ) );
|
195 |
add_action( 'admin_notices', array( 'PMProGateway_stripe', 'stripe_connect_deauthorize' ) );
|
196 |
+
|
197 |
+
add_filter( 'pmpro_process_refund_stripe', array( 'PMProGateway_stripe', 'process_refund' ), 10, 2 );
|
198 |
}
|
199 |
|
200 |
/**
|
265 |
'stripe_payment_request_button',
|
266 |
);
|
267 |
|
268 |
+
if ( self::stripe_checkout_beta_enabled() ) {
|
269 |
+
$options[] = 'stripe_payment_flow'; // 'onsite' or 'checkout'
|
270 |
+
$options[] = 'stripe_update_billing_flow'; // 'onsite' or 'portal'
|
271 |
+
$options[] = 'stripe_checkout_billing_address'; //'auto' or 'required'
|
272 |
+
$options[] = 'stripe_tax'; // 'no', 'inclusive', 'exclusive'
|
273 |
+
$options[] = 'stripe_tax_id_collection_enabled'; // '0', '1'
|
274 |
+
}
|
275 |
+
|
276 |
return $options;
|
277 |
}
|
278 |
|
320 |
}
|
321 |
|
322 |
?>
|
323 |
+
<tr class="pmpro_settings_divider gateway gateway_stripe" <?php if ( $gateway != "stripe" ) { ?>style="display: none;"<?php } ?>>
|
324 |
<td colspan="2">
|
325 |
<hr />
|
326 |
<h2 class="pmpro_stripe_legacy_keys" <?php if( ! self::show_legacy_keys_settings() ) {?>style="display: none;"<?php }?>><?php esc_html_e( 'Stripe API Settings (Legacy)', 'paid-memberships-pro' ); ?></h2>
|
334 |
jQuery(document).ready(function(){
|
335 |
jQuery('#pmpro_stripe_legacy_keys_toggle').click(function(e){
|
336 |
var btn = jQuery('#pmpro_stripe_legacy_keys_toggle');
|
337 |
+
var div = btn.closest('.pmpro_settings_divider');
|
338 |
btn.parent().remove();
|
339 |
jQuery('.pmpro_stripe_legacy_keys').show();
|
340 |
jQuery('.pmpro_stripe_legacy_keys').addClass('gateway_stripe');
|
347 |
</tr>
|
348 |
<tr class="gateway pmpro_stripe_legacy_keys <?php if ( self::show_legacy_keys_settings() ) { echo 'gateway_stripe'; } ?>" <?php if ( $gateway != "stripe" || ! self::show_legacy_keys_settings() ) { ?>style="display: none;"<?php } ?>>
|
349 |
<th scope="row" valign="top">
|
350 |
+
<label for="stripe_publishablekey"><?php esc_html_e( 'Publishable Key', 'paid-memberships-pro' ); ?>:</label>
|
351 |
</th>
|
352 |
<td>
|
353 |
<input type="text" id="stripe_publishablekey" name="stripe_publishablekey" value="<?php echo esc_attr( $values['stripe_publishablekey'] ) ?>" class="regular-text code" />
|
355 |
$public_key_prefix = substr( $values['stripe_publishablekey'], 0, 3 );
|
356 |
if ( ! empty( $values['stripe_publishablekey'] ) && $public_key_prefix != 'pk_' ) {
|
357 |
?>
|
358 |
+
<p class="pmpro_red"><strong><?php esc_html_e( 'Your Publishable Key appears incorrect.', 'paid-memberships-pro' ); ?></strong></p>
|
359 |
<?php
|
360 |
}
|
361 |
?>
|
363 |
</tr>
|
364 |
<tr class="gateway pmpro_stripe_legacy_keys <?php if ( self::show_legacy_keys_settings() ) { echo 'gateway_stripe'; } ?>" <?php if ( $gateway != "stripe" || ! self::show_legacy_keys_settings() ) { ?>style="display: none;"<?php } ?>>
|
365 |
<th scope="row" valign="top">
|
366 |
+
<label for="stripe_secretkey"><?php esc_html_e( 'Secret Key', 'paid-memberships-pro' ); ?>:</label>
|
367 |
</th>
|
368 |
<td>
|
369 |
<input type="text" id="stripe_secretkey" name="stripe_secretkey" value="<?php echo esc_attr( $values['stripe_secretkey'] ) ?>" autocomplete="off" class="regular-text code pmpro-admin-secure-key" />
|
370 |
</td>
|
371 |
+
</tr>
|
372 |
<tr class="gateway pmpro_stripe_legacy_keys <?php if ( self::show_legacy_keys_settings() ) { echo 'gateway_stripe'; } ?>" <?php if ( $gateway != "stripe" || ! self::show_legacy_keys_settings() ) { ?>style="display: none;"<?php } ?>>
|
373 |
<th scope="row" valign="top">
|
374 |
<label><?php esc_html_e( 'Webhook', 'paid-memberships-pro' ); ?>:</label>
|
376 |
<td>
|
377 |
<?php if ( ! empty( $webhook ) && is_array( $webhook ) && self::show_legacy_keys_settings()) { ?>
|
378 |
<button type="button" id="pmpro_stripe_create_webhook" class="button button-secondary" style="display: none;"><span class="dashicons dashicons-update-alt"></span> <?php _e( 'Create Webhook' ,'paid-memberships-pro' ); ?></button>
|
379 |
+
<?php
|
380 |
if ( 'disabled' === $webhook['status'] ) {
|
381 |
// Check webhook status.
|
382 |
?>
|
383 |
<div class="notice error inline">
|
384 |
+
<p id="pmpro_stripe_webhook_notice" class="pmpro_stripe_webhook_notice"><?php esc_html_e( 'A webhook is set up in Stripe, but it is disabled.', 'paid-memberships-pro' ); ?> <a id="pmpro_stripe_rebuild_webhook" href="#"><?php esc_html_e( 'Rebuild Webhook', 'paid-memberships-pro' ); ?></a></p>
|
385 |
</div>
|
386 |
<?php
|
387 |
} elseif ( $webhook['api_version'] < PMPRO_STRIPE_API_VERSION ) {
|
388 |
// Check webhook API version.
|
389 |
?>
|
390 |
<div class="notice error inline">
|
391 |
+
<p id="pmpro_stripe_webhook_notice" class="pmpro_stripe_webhook_notice"><?php esc_html_e( 'A webhook is set up in Stripe, but it is using an old API version.', 'paid-memberships-pro' ); ?> <a id="pmpro_stripe_rebuild_webhook" href="#"><?php esc_html_e( 'Rebuild Webhook', 'paid-memberships-pro' ); ?></a></p>
|
392 |
</div>
|
393 |
<?php
|
394 |
} else {
|
395 |
?>
|
396 |
<div class="notice notice-success inline">
|
397 |
+
<p id="pmpro_stripe_webhook_notice" class="pmpro_stripe_webhook_notice"><?php esc_html_e( 'Your webhook is enabled.', 'paid-memberships-pro' ); ?> <a id="pmpro_stripe_delete_webhook" href="#"><?php esc_html_e( 'Disable Webhook', 'paid-memberships-pro' ); ?></a></p>
|
398 |
</div>
|
399 |
<?php
|
400 |
}
|
401 |
} elseif ( self::show_legacy_keys_settings() ) { ?>
|
402 |
<button type="button" id="pmpro_stripe_create_webhook" class="button button-secondary"><span class="dashicons dashicons-update-alt"></span> <?php _e( 'Create Webhook' ,'paid-memberships-pro' ); ?></button>
|
403 |
<div class="notice error inline">
|
404 |
+
<p id="pmpro_stripe_webhook_notice" class="pmpro_stripe_webhook_notice"><?php esc_html_e('A webhook in Stripe is required to process recurring payments, manage failed payments, and synchronize cancellations.', 'paid-memberships-pro' );?></p>
|
405 |
</div>
|
406 |
<?php
|
407 |
}
|
410 |
<code><?php echo self::get_site_webhook_url(); ?></code></p>
|
411 |
</td>
|
412 |
</tr>
|
413 |
+
<tr class="pmpro_settings_divider gateway gateway_stripe" <?php if ( $gateway != "stripe" ) { ?>style="display: none;"<?php } ?>>
|
414 |
<td colspan="2">
|
415 |
<hr />
|
416 |
+
<h2><?php esc_html_e( 'Other Stripe Settings', 'paid-memberships-pro' ); ?></h2>
|
417 |
</td>
|
418 |
</tr>
|
419 |
<tr class="gateway gateway_stripe" <?php if ( $gateway != "stripe" ) { ?>style="display: none;"<?php } ?>>
|
420 |
+
<th><?php esc_html_e( 'Stripe API Version', 'paid-memberships-pro' ); ?>:</th>
|
421 |
<td><code><?php echo PMPRO_STRIPE_API_VERSION; ?></code></td>
|
422 |
</tr>
|
423 |
<tr class="gateway gateway_stripe" <?php if ( $gateway != "stripe" ) { ?>style="display: none;"<?php } ?>>
|
424 |
<th scope="row" valign="top">
|
425 |
+
<label for="stripe_billingaddress"><?php esc_html_e( 'Show Billing Address Fields', 'paid-memberships-pro' ); ?>:</label>
|
426 |
</th>
|
427 |
<td>
|
428 |
<select id="stripe_billingaddress" name="stripe_billingaddress">
|
429 |
<option value="0"
|
430 |
+
<?php if ( empty( $values['stripe_billingaddress'] ) ) { ?>selected="selected"<?php } ?>><?php esc_html_e( 'No', 'paid-memberships-pro' ); ?></option>
|
431 |
<option value="1"
|
432 |
+
<?php if ( ! empty( $values['stripe_billingaddress'] ) ) { ?>selected="selected"<?php } ?>><?php esc_html_e( 'Yes', 'paid-memberships-pro' ); ?></option>
|
433 |
</select>
|
434 |
+
<p class="description"><?php echo wp_kses_post( __( "Stripe doesn't require billing address fields. Choose 'No' to hide them on the checkout page.<br /><strong>If No, make sure you disable address verification in the Stripe dashboard settings.</strong>", 'paid-memberships-pro' ) ); ?></p>
|
435 |
</td>
|
436 |
</tr>
|
437 |
<tr class="gateway gateway_stripe" <?php if ( $gateway != "stripe" ) { ?>style="display: none;"<?php } ?>>
|
438 |
<th scope="row" valign="top">
|
439 |
+
<label for="stripe_payment_request_button"><?php esc_html_e( 'Enable Payment Request Button', 'paid-memberships-pro' ); ?>:</label>
|
440 |
</th>
|
441 |
<td>
|
442 |
<select id="stripe_payment_request_button" name="stripe_payment_request_button">
|
443 |
<option value="0"
|
444 |
+
<?php if ( empty( $values['stripe_payment_request_button'] ) ) { ?>selected="selected"<?php } ?>><?php esc_html_e( 'No', 'paid-memberships-pro' ); ?></option>
|
445 |
<option value="1"
|
446 |
+
<?php if ( ! empty( $values['stripe_payment_request_button'] ) ) { ?>selected="selected"<?php } ?>><?php esc_html_e( 'Yes', 'paid-memberships-pro' ); ?></option>
|
447 |
</select>
|
448 |
<?php
|
449 |
$allowed_stripe_payment_button_html = array (
|
495 |
),
|
496 |
);
|
497 |
echo '<tr class="gateway gateway_stripe"';
|
498 |
+
if ( $gateway != "stripe" ) {
|
499 |
echo ' style="display: none;"';
|
500 |
}
|
501 |
echo '><th> </th><td><p class="description">' . sprintf( wp_kses( __( 'Optional: Offer PayPal Express as an option at checkout using the <a target="_blank" href="%s" title="Paid Memberships Pro - Add PayPal Express Option at Checkout Add On">Add PayPal Express Add On</a>.', 'paid-memberships-pro' ), $allowed_appe_html ), 'https://www.paidmembershipspro.com/add-ons/pmpro-add-paypal-express-option-checkout/?utm_source=plugin&utm_medium=pmpro-paymentsettings&utm_campaign=add-ons&utm_content=pmpro-add-paypal-express-option-checkout' ) . '</p></td></tr>';
|
502 |
+
}
|
503 |
+
if ( ! self::stripe_checkout_beta_enabled() ) {
|
504 |
+
// Don't show Stripe Checkout settings if the beta is not enabled.
|
505 |
+
return;
|
506 |
+
}
|
507 |
+
?>
|
508 |
+
<tr class="pmpro_settings_divider gateway gateway_stripe" <?php if ( $gateway != "stripe" ) { ?>style="display: none;"<?php } ?>>
|
509 |
+
<td colspan="2">
|
510 |
+
<hr />
|
511 |
+
<h2><?php esc_html_e( 'Stripe Checkout Settings (Beta)', 'paid-memberships-pro' ); ?></h2>
|
512 |
+
<div class="notice notice-large notice-warning inline">
|
513 |
+
<p>
|
514 |
+
<strong><?php esc_html_e( 'Stripe Checkout is currently in beta and not recommended for use on live sites.', 'paid-memberships-pro' ); ?></strong><br />
|
515 |
+
<?php esc_html_e( 'Stripe Checkout is a secure, Stripe-hosted payment page that lets you collect payments quickly. The offsite, conversion-optimized payment form works across devices, removes friction with real-time card validation, and has built-in error messaging. This gateway option relies heavily on the webhooks sent by Stripe. Your Stripe webhooks must be properly configured before enabling Stripe Checkout.', 'paid-memberships-pro' );
|
516 |
+
?></p>
|
517 |
+
</div>
|
518 |
+
</td>
|
519 |
+
</tr>
|
520 |
+
<tr class="gateway gateway_stripe" <?php if ( $gateway != "stripe" ) { ?>style="display: none;"<?php } ?>>
|
521 |
+
<th scope="row" valign="top">
|
522 |
+
<label for="stripe_payment_flow"><?php esc_html_e( 'Payment Flow', 'paid-memberships-pro' ); ?>:</label>
|
523 |
+
</th>
|
524 |
+
<td>
|
525 |
+
<select id="stripe_payment_flow" name="stripe_payment_flow">
|
526 |
+
<option value="onsite" <?php selected( $values['stripe_payment_flow'], 'onsite' ); ?>><?php esc_html_e( 'Accept payments on this site', 'paid-memberships-pro' ); ?></option>
|
527 |
+
<option value="checkout" <?php selected( $values['stripe_payment_flow'], 'checkout' ); ?>><?php esc_html_e( 'Accept payments in Stripe (Stripe Checkout)', 'paid-memberships-pro' ); ?></option>
|
528 |
+
</select>
|
529 |
+
<p class="description"><?php esc_html_e( 'Embed the payment information fields on your Membership Checkout page or use the Stripe-hosted payment page (Stripe Checkout).', 'paid-memberships-pro' ); ?>
|
530 |
+
</td>
|
531 |
+
</tr>
|
532 |
+
<tr class="gateway gateway_stripe" <?php if ( $gateway != "stripe" ) { ?>style="display: none;"<?php } ?>>
|
533 |
+
<th scope="row" valign="top">
|
534 |
+
<label for="stripe_update_billing_flow"><?php esc_html_e( 'Update Billing Flow', 'paid-memberships-pro' ); ?>:</label>
|
535 |
+
</th>
|
536 |
+
<td>
|
537 |
+
<select id="stripe_update_billing_flow" name="stripe_update_billing_flow">
|
538 |
+
<option value="onsite"><?php esc_html_e( 'Update billing on this site', 'paid-memberships-pro' ); ?></option>
|
539 |
+
<option value="portal" <?php if ( $values['stripe_update_billing_flow'] === 'portal' ) { ?>selected="selected"<?php } ?>><?php esc_html_e( 'Update billing in the Stripe Customer Portal', 'paid-memberships-pro' ); ?></option>
|
540 |
+
</select>
|
541 |
+
<p class="description"><?php esc_html_e( 'Embed the billing information fields on your Membership Billing page or use the Stripe Customer Portal hosted by Stripe.', 'paid-memberships-pro' ); ?></p>
|
542 |
+
</td>
|
543 |
+
</tr>
|
544 |
+
<tr class="gateway gateway_stripe" <?php if ( $gateway != "stripe" ) { ?>style="display: none;"<?php } ?>>
|
545 |
+
<th scope="row" valign="top">
|
546 |
+
<label for="stripe_checkout_billing_address"><?php esc_html_e( 'Collect Billing Address in Stripe Checkout', 'paid-memberships-pro' ); ?>:</label>
|
547 |
+
</th>
|
548 |
+
<td>
|
549 |
+
<select id="stripe_checkout_billing_address" name="stripe_checkout_billing_address">
|
550 |
+
<option value="auto"><?php esc_html_e( 'Only when necessary', 'paid-memberships-pro' ); ?></option>
|
551 |
+
<option value="required" <?php if ( 'required' === $values['stripe_checkout_billing_address'] ) { ?>selected="selected"<?php } ?>><?php esc_html_e( 'Always', 'paid-memberships-pro' ); ?></option>
|
552 |
+
</select>
|
553 |
+
</td>
|
554 |
+
</tr>
|
555 |
+
<tr class="gateway gateway_stripe" <?php if ( $gateway != "stripe" ) { ?>style="display: none;"<?php } ?>>
|
556 |
+
<th scope="row" valign="top">
|
557 |
+
<label for="stripe_tax"><?php esc_html_e( 'Stripe Tax', 'paid-memberships-pro' ); ?>:</label>
|
558 |
+
</th>
|
559 |
+
<td>
|
560 |
+
<select id="stripe_tax" name="stripe_tax">
|
561 |
+
<option value="no"><?php esc_html_e( 'Do not calculate tax', 'paid-memberships-pro' ); ?></option>
|
562 |
+
<option value="inclusive" <?php if ( $values['stripe_tax'] === 'inclusive' ) { ?>selected="selected"<?php } ?>><?php esc_html_e( 'Membership price includes tax', 'paid-memberships-pro' ); ?></option>
|
563 |
+
<option value="exclusive" <?php if ( $values['stripe_tax'] === 'exclusive' ) { ?>selected="selected"<?php } ?>><?php esc_html_e( 'Calculate tax on top of membership price', 'paid-memberships-pro' ); ?></option>
|
564 |
+
</select>
|
565 |
+
<?php
|
566 |
+
$allowed_stripe_tax_description_html = array (
|
567 |
+
'a' => array (
|
568 |
+
'href' => array(),
|
569 |
+
'target' => array(),
|
570 |
+
'title' => array(),
|
571 |
+
),
|
572 |
+
);
|
573 |
+
?>
|
574 |
+
<p class="description"><?php echo sprintf( wp_kses( __( 'Stripe Tax is only available when using Stripe Checkout (the Stripe-hosted payment page). You must <a target="_blank" href="%s">activate Stripe Tax</a> in your Stripe dashboard. <a target="_blank" href="%s">More information about Stripe Tax »</a>', 'paid-memberships-pro' ), $allowed_stripe_tax_description_html ), 'https://stripe.com/tax', 'https://dashboard.stripe.com/settings/tax/activate' ); ?></p>
|
575 |
+
</td>
|
576 |
+
</tr>
|
577 |
+
<tr class="gateway gateway_stripe gateway_stripe_checkout_fields" <?php if ( $gateway != "stripe" ) { ?>style="display: none;"<?php } ?>>
|
578 |
+
<th scope="row" valign="top">
|
579 |
+
<label for="stripe_tax_id_collection_enabled"><?php esc_html_e( 'Collect Tax IDs', 'paid-memberships-pro' ); ?>:</label>
|
580 |
+
</th>
|
581 |
+
<td>
|
582 |
+
<select id="stripe_tax_id_collection_enabled" name="stripe_tax_id_collection_enabled">
|
583 |
+
<option value="0"><?php esc_html_e( 'No, do not collect tax IDs.', 'paid-memberships-pro' ); ?></option>
|
584 |
+
<option value="1" <?php if ( ! empty( $values['stripe_tax_id_collection_enabled'] ) ) { ?>selected="selected"<?php } ?>><?php esc_html_e( 'Yes, collect tax IDs.', 'paid-memberships-pro' ); ?></option>
|
585 |
+
</select>
|
586 |
+
<p class="description"><?php esc_html_e( 'Tax IDs are only collected if you have enabled Stripe Tax. Stripe only performs automatic validation for ABN, EU VAT, and GB VAT numbers. You must verify that provided tax IDs are valid during the Session for all other numbers.', 'paid-memberships-pro' ); ?></p>
|
587 |
+
</td>
|
588 |
+
</tr>
|
589 |
<?php
|
590 |
}
|
591 |
|
594 |
*/
|
595 |
public static function wp_ajax_pmpro_stripe_create_webhook( $silent = false ) {
|
596 |
$secretkey = sanitize_text_field( $_REQUEST['secretkey'] );
|
597 |
+
|
598 |
$stripe = new PMProGateway_stripe();
|
599 |
Stripe\Stripe::setApiKey( $secretkey );
|
600 |
+
|
601 |
$update_webhook_response = $stripe::update_webhook_events();
|
602 |
|
603 |
if ( empty( $update_webhook_response ) || is_wp_error( $update_webhook_response ) ) {
|
616 |
'response' => $update_webhook_response
|
617 |
);
|
618 |
}
|
619 |
+
|
620 |
if ( $silent ) {
|
621 |
return $r;
|
622 |
} else {
|
624 |
exit;
|
625 |
}
|
626 |
}
|
627 |
+
|
628 |
/**
|
629 |
* AJAX callback to disable webhooks.
|
630 |
*/
|
631 |
public static function wp_ajax_pmpro_stripe_delete_webhook( $silent = false ) {
|
632 |
$secretkey = sanitize_text_field( $_REQUEST['secretkey'] );
|
633 |
+
|
634 |
$stripe = new PMProGateway_stripe();
|
635 |
Stripe\Stripe::setApiKey( $secretkey );
|
636 |
+
|
637 |
$webhook = self::does_webhook_exist();
|
638 |
|
639 |
$r = array(
|
737 |
global $pmpro_stripe_lite, $current_user, $bemail, $bconfirmemail;
|
738 |
|
739 |
//CVV is not required if set that way at Stripe. The Stripe JS will require it if it is required.
|
740 |
+
$remove = [ 'CVV' ];
|
741 |
|
742 |
//if using stripe lite, remove some fields from the required array
|
743 |
if ( $pmpro_stripe_lite ) {
|
744 |
+
$remove = array_merge( $remove, [ 'bfirstname', 'blastname', 'baddress', 'bcity', 'bstate', 'bzipcode', 'bphone', 'bcountry', 'CardType' ] );
|
745 |
+
}
|
746 |
+
|
747 |
+
// If a user is logged in, don't require bemail either
|
748 |
+
if ( ! empty( $current_user->user_email ) ) {
|
749 |
+
$remove = array_merge( $remove, [ 'bemail' ] );
|
750 |
+
$bemail = $current_user->user_email;
|
751 |
+
$bconfirmemail = $bemail;
|
752 |
+
}
|
753 |
+
|
754 |
+
// If using Stripe Checkout, don't require card information.
|
755 |
+
if ( self::using_stripe_checkout() ) {
|
756 |
+
$remove = array_merge( $remove, [ 'CardType', 'AccountNumber', 'ExpirationMonth', 'ExpirationYear', 'CVV' ] );
|
757 |
+
}
|
758 |
+
|
759 |
+
// Remove the fields.
|
760 |
+
foreach ( $remove as $field ) {
|
761 |
+
unset( $fields[ $field ] );
|
|
|
|
|
|
|
|
|
762 |
}
|
763 |
|
764 |
return $fields;
|
852 |
<div id="pmpro_payment_information_fields" class="<?php echo pmpro_get_element_class( 'pmpro_checkout', 'pmpro_payment_information_fields' ); ?>"
|
853 |
<?php if ( ! $pmpro_requirebilling || apply_filters( "pmpro_hide_payment_information_fields", false ) ) { ?>style="display: none;"<?php } ?>>
|
854 |
<h3>
|
855 |
+
<span class="<?php echo pmpro_get_element_class( 'pmpro_checkout-h3-name' ); ?>"><?php esc_html_e( 'Payment Information', 'paid-memberships-pro' ); ?></span>
|
856 |
+
<span class="<?php echo pmpro_get_element_class( 'pmpro_checkout-h3-msg' ); ?>"><?php printf( esc_html__( 'We Accept %s', 'paid-memberships-pro' ), $pmpro_accepted_credit_cards_string ); ?></span>
|
857 |
</h3>
|
858 |
<?php $sslseal = pmpro_getOption( "sslseal" ); ?>
|
859 |
<?php if ( ! empty( $sslseal ) ) { ?>
|
873 |
$pmpro_include_cardtype_field = apply_filters( 'pmpro_include_cardtype_field', false );
|
874 |
if ( $pmpro_include_cardtype_field ) { ?>
|
875 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_checkout-field pmpro_payment-card-type', 'pmpro_payment-card-type' ); ?>">
|
876 |
+
<label for="CardType"><?php esc_html_e( 'Card Type', 'paid-memberships-pro' ); ?></label>
|
877 |
<select id="CardType" class="<?php echo pmpro_get_element_class( 'CardType' ); ?>">
|
878 |
<?php foreach ( $pmpro_accepted_credit_cards as $cc ) { ?>
|
879 |
+
<option value="<?php echo esc_attr( $cc ) ?>"
|
880 |
+
<?php if ( $CardType === $cc ) { ?>selected="selected"<?php } ?>><?php echo esc_html( $cc ); ?></option>
|
881 |
<?php } ?>
|
882 |
</select>
|
883 |
</div>
|
886 |
value="<?php echo esc_attr( $CardType ); ?>"/>
|
887 |
<?php } ?>
|
888 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_checkout-field pmpro_payment-account-number', 'pmpro_payment-account-number' ); ?>">
|
889 |
+
<label for="AccountNumber"><?php esc_html_e( 'Card Number', 'paid-memberships-pro' ); ?></label>
|
890 |
<div id="AccountNumber"></div>
|
891 |
</div>
|
892 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_checkout-field pmpro_payment-expiration', 'pmpro_payment-expiration' ); ?>">
|
893 |
+
<label for="Expiry"><?php esc_html_e( 'Expiration Date', 'paid-memberships-pro' ); ?></label>
|
894 |
<div id="Expiry"></div>
|
895 |
</div>
|
896 |
<?php
|
897 |
$pmpro_show_cvv = apply_filters( "pmpro_show_cvv", true );
|
898 |
if ( $pmpro_show_cvv ) { ?>
|
899 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_checkout-field pmpro_payment-cvv', 'pmpro_payment-cvv' ); ?>">
|
900 |
+
<label for="CVV"><?php esc_html_e( 'CVC', 'paid-memberships-pro' ); ?></label>
|
901 |
<div id="CVV"></div>
|
902 |
</div>
|
903 |
<?php } ?>
|
904 |
<?php if ( $pmpro_show_discount_code ) { ?>
|
905 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_checkout-field pmpro_payment-discount-code', 'pmpro_payment-discount-code' ); ?>">
|
906 |
+
<label for="discount_code"><?php esc_html_e( 'Discount Code', 'paid-memberships-pro' ); ?></label>
|
907 |
<input class="<?php echo pmpro_get_element_class( 'input pmpro_alter_price', 'discount_code' ); ?>"
|
908 |
id="discount_code" name="discount_code" type="text" size="10"
|
909 |
value="<?php echo esc_attr( $discount_code ) ?>"/>
|
910 |
<input type="button" id="discount_code_button" name="discount_code_button"
|
911 |
+
value="<?php esc_attr_e( 'Apply', 'paid-memberships-pro' ); ?>"/>
|
912 |
<p id="discount_code_message" class="<?php echo pmpro_get_element_class( 'pmpro_message' ); ?>" style="display: none;"></p>
|
913 |
</div>
|
914 |
<?php } ?>
|
1063 |
wp_clear_scheduled_hook( 'pmpro_cron_stripe_subscription_updates' );
|
1064 |
}
|
1065 |
|
1066 |
+
/**
|
1067 |
+
* Register the cron we need for Stripe subscription updates.
|
1068 |
+
*
|
1069 |
+
* @since 2.8
|
1070 |
+
*
|
1071 |
+
* @param array $crons The list of registered crons for Paid Memberships Pro.
|
1072 |
+
*
|
1073 |
+
* @return array The list of registered crons for Paid Memberships Pro.
|
1074 |
+
*/
|
1075 |
+
public static function register_cron( $crons ) {
|
1076 |
+
$crons['pmpro_cron_stripe_subscription_updates'] = [
|
1077 |
+
'interval' => 'daily',
|
1078 |
+
];
|
1079 |
+
|
1080 |
+
return $crons;
|
1081 |
+
}
|
1082 |
+
|
1083 |
/**
|
1084 |
* Cron job for subscription updates.
|
1085 |
*
|
1249 |
if ( ! empty( $subscription ) ) {
|
1250 |
$customer = $order->Gateway->get_customer_for_user( $user_id );
|
1251 |
if ( ! $customer->delinquent && ! empty ( $subscription->current_period_end ) ) {
|
1252 |
+
$offset = get_option( 'gmt_offset' );
|
1253 |
$timestamp = $subscription->current_period_end + ( $offset * 3600 );
|
1254 |
} elseif ( $customer->delinquent && ! empty( $subscription->current_period_start ) ) {
|
1255 |
+
$offset = get_option( 'gmt_offset' );
|
1256 |
$timestamp = $subscription->current_period_start + ( $offset * 3600 );
|
1257 |
} else {
|
1258 |
$timestamp = null; // shouldn't really get here
|
1274 |
if ( empty( $payment_option_values['stripe_payment_request_button'] ) ) {
|
1275 |
// We don't want to unregister domain or remove file in case
|
1276 |
// other plugins are using it.
|
1277 |
+
return;
|
1278 |
}
|
1279 |
+
|
1280 |
// Make sure that Apple Pay is set up.
|
1281 |
// TODO: Apple Pay API functions don't seem to work with
|
1282 |
// test API keys. Need to figure this out.
|
1304 |
if ( ! isset( $_REQUEST['pmpro_stripe_connected'] ) || ! isset( $_REQUEST['pmpro_stripe_connected_environment'] ) ) {
|
1305 |
return false;
|
1306 |
}
|
1307 |
+
|
1308 |
// Change current gateway to Stripe
|
1309 |
pmpro_setOption( 'gateway', 'stripe' );
|
1310 |
pmpro_setOption( 'gateway_environment', $_REQUEST['pmpro_stripe_connected_environment'] );
|
1335 |
pmpro_setOption( 'sandbox_stripe_connect_secretkey', $_REQUEST['pmpro_stripe_access_token'] );
|
1336 |
pmpro_setOption( 'sandbox_stripe_connect_publishablekey', $_REQUEST['pmpro_stripe_publishable_key'] );
|
1337 |
}
|
1338 |
+
|
1339 |
|
1340 |
// Delete option for user API key.
|
1341 |
delete_option( 'pmpro_stripe_secretkey' );
|
1412 |
* @return bool Whether the site is using legacy Stripe keys.
|
1413 |
*/
|
1414 |
public static function using_legacy_keys() {
|
1415 |
+
$r = ! empty( pmpro_getOption( 'stripe_secretkey' ) ) && ! empty( pmpro_getOption( 'stripe_publishablekey' ) );
|
1416 |
return $r;
|
1417 |
}
|
1418 |
|
1430 |
|
1431 |
if ( $gateway_environment === 'live' ) {
|
1432 |
// Return whether Stripe is connected for live gateway environment.
|
1433 |
+
return (
|
1434 |
pmpro_getOption( 'live_stripe_connect_user_id' ) &&
|
1435 |
pmpro_getOption( 'live_stripe_connect_secretkey' ) &&
|
1436 |
pmpro_getOption( 'live_stripe_connect_publishablekey' )
|
1437 |
);
|
1438 |
} else {
|
1439 |
// Return whether Stripe is connected for sandbox gateway environment.
|
1440 |
+
return (
|
1441 |
pmpro_getOption( 'sandbox_stripe_connect_user_id' ) &&
|
1442 |
pmpro_getOption( 'sandbox_stripe_connect_secretkey' ) &&
|
1443 |
pmpro_getOption( 'sandbox_stripe_connect_publishablekey' )
|
1491 |
return true;
|
1492 |
}
|
1493 |
|
1494 |
+
/**
|
1495 |
+
* Check if the user has opted into the Stripe Checkout beta.
|
1496 |
+
*
|
1497 |
+
* @return bool
|
1498 |
+
*/
|
1499 |
+
public static function stripe_checkout_beta_enabled() {
|
1500 |
+
return ( defined( 'PMPRO_STRIPE_CHECKOUT_BETA_ENABLED' ) && PMPRO_STRIPE_CHECKOUT_BETA_ENABLED );
|
1501 |
+
}
|
1502 |
+
|
1503 |
+
/**
|
1504 |
+
* Check if Stripe Checkout is being used.
|
1505 |
+
*
|
1506 |
+
* @return bool
|
1507 |
+
*/
|
1508 |
+
public static function using_stripe_checkout() {
|
1509 |
+
// While Stripe Checkout is in beta, only enable it if the constant is set.
|
1510 |
+
if ( ! self::stripe_checkout_beta_enabled() ) {
|
1511 |
+
return false;
|
1512 |
+
}
|
1513 |
+
|
1514 |
+
return 'checkout' === pmpro_getOption( 'stripe_payment_flow' );
|
1515 |
+
}
|
1516 |
+
|
1517 |
+
/**
|
1518 |
+
* Show warning at checkout if Stripe Checkout is being used and
|
1519 |
+
* the last order is pending.
|
1520 |
+
*
|
1521 |
+
* @since 2.8
|
1522 |
+
*
|
1523 |
+
* @param bool $show Whether to show the default payment information fields.
|
1524 |
+
* @return bool
|
1525 |
+
*/
|
1526 |
+
static function show_stripe_checkout_pending_warning($show)
|
1527 |
+
{
|
1528 |
+
global $gateway;
|
1529 |
+
|
1530 |
+
//show our submit buttons
|
1531 |
+
?>
|
1532 |
+
<span id="pmpro_payment_information_fields" <?php if( $gateway != "stripe" ) { ?>style="display: none;"<?php } ?>>
|
1533 |
+
<?php
|
1534 |
+
// If the current user's last order is a pending Stripe order, warn them that they already have a pending order.
|
1535 |
+
$last_order = new MemberOrder();
|
1536 |
+
$last_order->getLastMemberOrder( get_current_user_id(), null, null, 'stripe' );
|
1537 |
+
if ( ! empty( $last_order->id ) && $last_order->status === 'pending' ) {
|
1538 |
+
?>
|
1539 |
+
<p class="pmpro_error"><?php _e( 'Your previous order has not yet been processed. Submitting your payment again will cause a separate charge to be initiated.', 'paid-memberships-pro' ); ?></p>
|
1540 |
+
<?php
|
1541 |
+
}
|
1542 |
+
|
1543 |
+
?>
|
1544 |
+
</span>
|
1545 |
+
<?php
|
1546 |
+
|
1547 |
+
//don't show the default submit button.
|
1548 |
+
return false;
|
1549 |
+
}
|
1550 |
+
|
1551 |
+
/**
|
1552 |
+
* Instead of changeing membership levels, send users to Stripe to pay.
|
1553 |
+
*
|
1554 |
+
* @since 2.8
|
1555 |
+
*
|
1556 |
+
* @param int $user_id ID of user who is checking out.
|
1557 |
+
* @param MemberOrder $morder MemberOrder object for this checkout.
|
1558 |
+
*/
|
1559 |
+
static function pmpro_checkout_before_change_membership_level($user_id, $morder)
|
1560 |
+
{
|
1561 |
+
global $pmpro_level, $discount_code, $discount_code_id, $wpdb, $pmpro_currency;
|
1562 |
+
|
1563 |
+
//if no order, no need to pay
|
1564 |
+
if ( empty( $morder ) || $morder->gateway != 'stripe' ) {
|
1565 |
+
return;
|
1566 |
+
}
|
1567 |
+
|
1568 |
+
$morder->user_id = $user_id;
|
1569 |
+
$morder->status = 'token';
|
1570 |
+
$morder->saveOrder();
|
1571 |
+
|
1572 |
+
// Save some checkout information in the order so that we can access it when the payment is complete.
|
1573 |
+
// Save the request variables.
|
1574 |
+
$request_vars = $_REQUEST;
|
1575 |
+
unset( $request_vars['password'] );
|
1576 |
+
unset( $request_vars['password2'] );
|
1577 |
+
unset( $request_vars['password2_copy'] );
|
1578 |
+
update_pmpro_membership_order_meta( $morder->id, 'checkout_request_vars', $request_vars );
|
1579 |
+
|
1580 |
+
// Save the checkout level.
|
1581 |
+
$pmpro_level_arr = (array) $pmpro_level;
|
1582 |
+
update_pmpro_membership_order_meta( $morder->id, 'checkout_level', $pmpro_level_arr );
|
1583 |
+
|
1584 |
+
// Save the discount code.
|
1585 |
+
$pmpro_discount_code_arr = (array) $discount_code;
|
1586 |
+
update_pmpro_membership_order_meta( $morder->id, 'checkout_discount_code', $pmpro_discount_code_arr );
|
1587 |
+
|
1588 |
+
// Time to send the user to pay with Stripe!
|
1589 |
+
$stripe = new PMProGateway_stripe();
|
1590 |
+
|
1591 |
+
// Let's first get the customer to charge.
|
1592 |
+
$customer = $stripe->update_customer_at_checkout( $morder );
|
1593 |
+
if ( empty( $customer ) ) {
|
1594 |
+
// There was an issue creating/updating the Stripe customer.
|
1595 |
+
// $order will have an error message.
|
1596 |
+
pmpro_setMessage( __( 'Could not get customer. ', 'paid-memberships-pro' ) . $morder->error, 'pmpro_error', true );
|
1597 |
+
return;
|
1598 |
+
}
|
1599 |
+
|
1600 |
+
// Next, let's get the product being purchased.
|
1601 |
+
$product_id = $stripe->get_product_id_for_level( $morder->membership_id );
|
1602 |
+
if ( empty( $product_id ) ) {
|
1603 |
+
// Something went wrong getting the product ID or creating the product.
|
1604 |
+
// Show the user a general error message.
|
1605 |
+
pmpro_setMessage( __( 'Could not get product ID.', 'paid-memberships-pro' ), 'pmpro_error', true );
|
1606 |
+
return;
|
1607 |
+
}
|
1608 |
+
|
1609 |
+
// Then, we need to build the line items array to charge.
|
1610 |
+
$line_items = array();
|
1611 |
+
|
1612 |
+
// Used to calculate Stripe Connect fees.
|
1613 |
+
$application_fee_percentage = self::get_application_fee_percentage();
|
1614 |
+
|
1615 |
+
// First, let's handle the initial payment.
|
1616 |
+
if ( ! empty( $morder->InitialPayment ) ) {
|
1617 |
+
$initial_subtotal = $morder->InitialPayment;
|
1618 |
+
$initial_tax = $morder->getTaxForPrice( $initial_subtotal );
|
1619 |
+
$initial_payment_amount = pmpro_round_price( (float) $initial_subtotal + (float) $initial_tax );
|
1620 |
+
$initial_payment_price = $stripe->get_price_for_product( $product_id, $initial_payment_amount );
|
1621 |
+
if ( is_string( $initial_payment_price ) ) {
|
1622 |
+
// There was an error getting the price.
|
1623 |
+
pmpro_setMessage( __( 'Could not get price for initial payment. ', 'paid-memberships-pro' ) . $initial_payment_price, 'pmpro_error', true );
|
1624 |
+
return;
|
1625 |
+
}
|
1626 |
+
$line_items[] = array(
|
1627 |
+
'price' => $initial_payment_price->id,
|
1628 |
+
'quantity' => 1,
|
1629 |
+
);
|
1630 |
+
if ( ! empty( $application_fee_percentage ) ) {
|
1631 |
+
$application_fee = floor( $initial_payment_price->unit_amount * $application_fee_percentage / 100 );
|
1632 |
+
if ( ! empty( $application_fee ) ) {
|
1633 |
+
$payment_intent_data = array(
|
1634 |
+
'application_fee_amount' => $application_fee,
|
1635 |
+
);
|
1636 |
+
}
|
1637 |
+
}
|
1638 |
+
}
|
1639 |
+
|
1640 |
+
// Now, let's handle the recurring payments.
|
1641 |
+
if ( pmpro_isLevelRecurring( $morder->membership_level ) ) {
|
1642 |
+
$recurring_subtotal = $morder->PaymentAmount;
|
1643 |
+
$recurring_tax = $morder->getTaxForPrice( $recurring_subtotal );
|
1644 |
+
$recurring_payment_amount = pmpro_round_price( (float) $recurring_subtotal + (float) $recurring_tax );
|
1645 |
+
$recurring_payment_price = $stripe->get_price_for_product( $product_id, $recurring_payment_amount, $morder->BillingPeriod, $morder->BillingFrequency );
|
1646 |
+
if ( is_string( $recurring_payment_price ) ) {
|
1647 |
+
// There was an error getting the price.
|
1648 |
+
pmpro_setMessage( __( 'Could not get price for recurring payment. ', 'paid-memberships-pro' ) . $recurring_payment_price, 'pmpro_error', true );
|
1649 |
+
return;
|
1650 |
+
}
|
1651 |
+
$line_items[] = array(
|
1652 |
+
'price' => $recurring_payment_price->id,
|
1653 |
+
'quantity' => 1,
|
1654 |
+
);
|
1655 |
+
$subscription_data = array();
|
1656 |
+
|
1657 |
+
// Check if we can combine initial and recurring payments.
|
1658 |
+
$filtered_trial_period_days = $stripe->calculate_trial_period_days( $morder );
|
1659 |
+
if (
|
1660 |
+
empty( $order->TrialBillingCycles ) && // Check if there is a trial period.
|
1661 |
+
$filtered_trial_period_days === $stripe->calculate_trial_period_days( $morder, false ) && // Check if the trial period is the same as the filtered trial period.
|
1662 |
+
( ! empty( $initial_payment_amount ) && $initial_payment_amount === $recurring_payment_amount ) // Check if the initial payment and recurring payment prices are the same.
|
1663 |
+
) {
|
1664 |
+
// We can combine the initial payment and the recurring payment.
|
1665 |
+
array_shift( $line_items );
|
1666 |
+
$payment_intent_data = null;
|
1667 |
+
} else {
|
1668 |
+
// We need to set the trial period days and send initial and recurring payments as separate line items.
|
1669 |
+
$subscription_data['trial_period_days'] = $filtered_trial_period_days;
|
1670 |
+
}
|
1671 |
+
|
1672 |
+
// Add application fee for Stripe Connect.
|
1673 |
+
$application_fee_percentage = self::get_application_fee_percentage();
|
1674 |
+
if ( ! empty( $application_fee_percentage ) ) {
|
1675 |
+
$subscription_data['application_fee_percent'] = $application_fee_percentage;
|
1676 |
+
}
|
1677 |
+
}
|
1678 |
+
|
1679 |
+
// Set up tax and billing addres collection.
|
1680 |
+
$automatic_tax = ( ! empty( pmpro_getOption( 'stripe_tax' ) ) && 'no' !== pmpro_getOption( 'stripe_tax' ) ) ? array(
|
1681 |
+
'enabled' => true,
|
1682 |
+
) : array(
|
1683 |
+
'enabled' => false,
|
1684 |
+
);
|
1685 |
+
$tax_id_collection = ! empty( pmpro_getOption( 'stripe_tax_id_collection_enabled' ) ) ? array(
|
1686 |
+
'enabled' => true,
|
1687 |
+
) : array(
|
1688 |
+
'enabled' => false,
|
1689 |
+
);
|
1690 |
+
$billing_address_collection = pmpro_getOption( 'stripe_checkout_billing_address' ) ?: 'auto';
|
1691 |
+
|
1692 |
+
// And let's send 'em to Stripe!
|
1693 |
+
$checkout_session_params = array(
|
1694 |
+
'customer' => $customer->id,
|
1695 |
+
'line_items' => $line_items,
|
1696 |
+
'mode' => isset( $subscription_data ) ? 'subscription' : 'payment',
|
1697 |
+
'automatic_tax' => $automatic_tax,
|
1698 |
+
'tax_id_collection' => $tax_id_collection,
|
1699 |
+
'billing_address_collection' => $billing_address_collection,
|
1700 |
+
'customer_update' => array(
|
1701 |
+
'address' => 'auto',
|
1702 |
+
'name' => 'auto'
|
1703 |
+
),
|
1704 |
+
'success_url' => add_query_arg( 'level', $morder->membership_level->id, pmpro_url("confirmation" ) ),
|
1705 |
+
'cancel_url' => add_query_arg( 'level', $morder->membership_level->id, pmpro_url("checkout" ) ),
|
1706 |
+
);
|
1707 |
+
if ( ! empty( $subscription_data ) ) {
|
1708 |
+
$checkout_session_params['subscription_data'] = $subscription_data;
|
1709 |
+
} elseif ( ! empty( $payment_intent_data ) ) {
|
1710 |
+
$checkout_session_params['payment_intent_data'] = $payment_intent_data;
|
1711 |
+
}
|
1712 |
+
|
1713 |
+
try {
|
1714 |
+
$checkout_session = Stripe_Checkout_Session::create( $checkout_session_params );
|
1715 |
+
} catch ( Throwable $th ) {
|
1716 |
+
// Error creating checkout session.
|
1717 |
+
pmpro_setMessage( __( 'Could not create checkout session. ', 'paid-memberships-pro' ) . $th->getMessage(), 'pmpro_error', true );
|
1718 |
+
return;
|
1719 |
+
} catch ( Exception $e ) {
|
1720 |
+
// Error creating checkout session.
|
1721 |
+
pmpro_setMessage( __( 'Could not create checkout session. ', 'paid-memberships-pro' ) . $e->getMessage(), 'pmpro_error', true );
|
1722 |
+
return;
|
1723 |
+
}
|
1724 |
+
|
1725 |
+
// Save so that we can confirm the payment later.
|
1726 |
+
update_pmpro_membership_order_meta( $morder->id, 'stripe_checkout_session_id', $checkout_session->id );
|
1727 |
+
wp_redirect( $checkout_session->url );
|
1728 |
+
exit;
|
1729 |
+
}
|
1730 |
+
|
1731 |
+
/**
|
1732 |
+
* If using Stripe Checkout, either redirect the user to the Stripe Customer
|
1733 |
+
* portal or set up our update billing page with the onsite payment fields.
|
1734 |
+
*
|
1735 |
+
* @since 2.8
|
1736 |
+
*/
|
1737 |
+
public static function pmpro_billing_preheader_stripe_checkout() {
|
1738 |
+
if ( 'portal' === pmpro_getOption( 'stripe_update_billing_flow' ) ) {
|
1739 |
+
// Send user to Stripe Customer Portal.
|
1740 |
+
$user_order = new MemberOrder();
|
1741 |
+
$user_order->getLastMemberOrder( null, array( 'success', 'pending' ) );
|
1742 |
+
|
1743 |
+
// Check whether the user's most recent order is a Stripe subscription.
|
1744 |
+
if ( empty( $user_order->gateway ) || 'stripe' !== $user_order->gateway ) {
|
1745 |
+
$error = __( 'Last order was not charged with Stripe.', 'paid-memberships-pro' );
|
1746 |
+
}
|
1747 |
+
|
1748 |
+
if ( empty( $error ) ) {
|
1749 |
+
$stripe = new PMProGateway_stripe();
|
1750 |
+
$customer = $stripe->get_customer_for_user( $user_order->user_id );
|
1751 |
+
if ( empty( $customer->id ) ) {
|
1752 |
+
$error = __( 'Could not get Stripe customer for user.', 'paid-memberships-pro' );
|
1753 |
+
}
|
1754 |
+
}
|
1755 |
+
|
1756 |
+
if ( empty( $error ) ) {
|
1757 |
+
$customer_portal_url = $stripe->get_customer_portal_url( $customer->id );
|
1758 |
+
if ( ! empty( $customer_portal_url ) ) {
|
1759 |
+
wp_redirect( $customer_portal_url );
|
1760 |
+
exit;
|
1761 |
+
}
|
1762 |
+
$error = __( 'Could not get Customer Portal URL. This feature may not be set up in Stripe.', 'paid-memberships-pro' );
|
1763 |
+
}
|
1764 |
+
|
1765 |
+
// There must have been an error while getting the customer portal URL. Show an error and let user update
|
1766 |
+
// their billing info onsite.
|
1767 |
+
pmpro_setMessage( $error . ' ' . __( 'Please contact the site administrator.', 'paid-memberships-pro' ), 'pmpro_alert', true );
|
1768 |
+
}
|
1769 |
+
// Disable Stripe Checkout functionality for the rest of this page load.
|
1770 |
+
add_filter( 'pmpro_include_cardtype_field', array(
|
1771 |
+
'PMProGateway_stripe',
|
1772 |
+
'pmpro_include_billing_address_fields'
|
1773 |
+
), 15 );
|
1774 |
+
add_action( 'pmpro_billing_preheader', array( 'PMProGateway_stripe', 'pmpro_checkout_after_preheader' ), 15 );
|
1775 |
+
add_filter( 'pmpro_billing_order', array( 'PMProGateway_stripe', 'pmpro_checkout_order' ), 15 );
|
1776 |
+
add_filter( 'pmpro_include_payment_information_fields', array(
|
1777 |
+
'PMProGateway_stripe',
|
1778 |
+
'pmpro_include_payment_information_fields'
|
1779 |
+
), 15 );
|
1780 |
+
add_filter( 'option_pmpro_stripe_payment_flow', '__return_false' ); // Disable Stripe Checkout for rest of page load.
|
1781 |
+
}
|
1782 |
+
|
1783 |
/****************************************
|
1784 |
************ PUBLIC METHODS ************
|
1785 |
****************************************/
|
1789 |
* @since 1.4
|
1790 |
*/
|
1791 |
public function process( &$order ) {
|
1792 |
+
if ( self::using_stripe_checkout() ) {
|
1793 |
+
// If using Stripe Checkout, we will try to collect the payment later.
|
1794 |
+
return true;
|
1795 |
+
}
|
1796 |
+
|
1797 |
$payment_transaction_id = '';
|
1798 |
$subscription_transaction_id = '';
|
1799 |
|
1840 |
$payment_method = $this->get_payment_method( $order );
|
1841 |
if ( empty( $payment_method ) ) {
|
1842 |
// There was an issue getting the payment method.
|
1843 |
+
$order->error = __( 'Error retrieving payment method.', 'paid-memberships-pro' ) . empty( $order->error ) ? '' : ' ' . $order->error;
|
1844 |
$order->shorterror = $order->error;
|
1845 |
return false;
|
1846 |
}
|
1882 |
}
|
1883 |
$order->stripe_subscription = $subscription;
|
1884 |
$setup_intent = $subscription->pending_setup_intent;
|
1885 |
+
|
1886 |
if ( ! empty( $setup_intent->status ) && 'requires_action' === $setup_intent->status ) {
|
1887 |
// We will need to reload the page to authenticate, so save the subscription ID in the setup intent
|
1888 |
// so that we don't lose it.
|
1895 |
$order->stripe_setup_intent = $setup_intent;
|
1896 |
$order->errorcode = true;
|
1897 |
$order->error = __( 'Customer authentication is required to finish setting up your subscription. Please complete the verification steps issued by your payment provider.', 'paid-memberships-pro' );
|
1898 |
+
|
1899 |
return false;
|
1900 |
}
|
1901 |
|
2026 |
! empty( $user->pmpro_bcity ) &&
|
2027 |
! empty( $user->pmpro_bstate ) &&
|
2028 |
! empty( $user->pmpro_bzipcode ) &&
|
2029 |
+
! empty( $user->pmpro_bcountry )
|
2030 |
) {
|
2031 |
// We have an address in user meta and there is
|
2032 |
// no address in Stripe. May as well send it.
|
2069 |
*/
|
2070 |
public function getSubscriptionStatus( &$order ) {
|
2071 |
$subscription = $this->get_subscription( $order->subscription_transaction_id );
|
2072 |
+
|
2073 |
if ( ! empty( $subscription ) ) {
|
2074 |
return $subscription->status;
|
2075 |
} else {
|
2093 |
$payment_method = $this->get_payment_method( $order );
|
2094 |
if ( empty( $payment_method ) ) {
|
2095 |
// There was an issue getting the payment method.
|
2096 |
+
$order->error = __( 'Error retrieving payment method.', 'paid-memberships-pro' ) . empty( $order->error ) ? '' : ' ' . $order->error;
|
2097 |
$order->shorterror = $order->error;
|
2098 |
return false;
|
2099 |
}
|
2168 |
}
|
2169 |
}
|
2170 |
|
2171 |
+
/**
|
2172 |
+
* Get the URL for a customer's Stripe Customer Portal.
|
2173 |
+
*
|
2174 |
+
* @since 2.8
|
2175 |
+
*
|
2176 |
+
* @param string $customer_id Customer to get the URL for.
|
2177 |
+
* @return string URL for customer portal, or empty String if not found.
|
2178 |
+
*/
|
2179 |
+
public function get_customer_portal_url( $customer_id ) {
|
2180 |
+
try {
|
2181 |
+
$session = \Stripe\BillingPortal\Session::create([
|
2182 |
+
'customer' => $customer_id,
|
2183 |
+
'return_url' => pmpro_url( 'account' ),
|
2184 |
+
]);
|
2185 |
+
return $session->url;
|
2186 |
+
} catch ( Exception $e ) {
|
2187 |
+
return '';
|
2188 |
+
}
|
2189 |
+
}
|
2190 |
+
|
2191 |
|
2192 |
/****************************************
|
2193 |
*********** PRIVATE METHODS ************
|
2201 |
* @param array $values Current settings.
|
2202 |
* @param string $gateway currently being shown.
|
2203 |
*/
|
2204 |
+
private function show_connect_payment_option_fields( $livemode, $values, $gateway ) {
|
2205 |
$gateway_environment = $this->gateway_environment;
|
2206 |
|
2207 |
$stripe_legacy_key = $values['stripe_publishablekey'];
|
2226 |
<h2>
|
2227 |
<?php esc_html_e( 'Stripe Connect Settings', 'paid-memberships-pro' ); ?>
|
2228 |
<span class="pmpro_gateway-mode pmpro_gateway-mode-<?php echo $environment2; ?> <?php esc_attr_e( $connection_selector ); ?>">
|
2229 |
+
<?php
|
2230 |
echo ( $livemode ? esc_html__( 'Live Mode:', 'paid-memberships-pro' ) : esc_html__( 'Test Mode:', 'paid-memberships-pro' ) ) . ' ';
|
2231 |
if ( self::has_connect_credentials( $environment ) ) {
|
2232 |
esc_html_e( 'Connected', 'paid-memberships-pro' );
|
2306 |
} else {
|
2307 |
esc_html_e( 'Note: You are using the free Stripe payment gateway integration. This includes an additional 1% fee for payment processing. This fee is removed by activating a premium PMPro license.', 'paid-memberships-pro');
|
2308 |
}
|
2309 |
+
echo ' <a href="https://www.paidmembershipspro.com/gateway/stripe/?utm_source=plugin&utm_medium=pmpro-paymentsettings&utm_campaign=gateways&utm_content=stripe-fees#tab-fees" target="_blank" rel="noopener noreferrer">' . esc_html__( 'Learn More »', 'paid-memberships-pro' ) . '</a>';
|
2310 |
?>
|
2311 |
</p>
|
2312 |
<input type='hidden' name='<?php echo $environment; ?>_stripe_connect_user_id' id='<?php echo $environment; ?>_stripe_connect_user_id' value='<?php echo esc_attr( $values[ $environment . '_stripe_connect_user_id'] ) ?>'/>
|
2474 |
! empty( $order->billing->city ) &&
|
2475 |
! empty( $order->billing->state ) &&
|
2476 |
! empty( $order->billing->zip ) &&
|
2477 |
+
! empty( $order->billing->country )
|
2478 |
) {
|
2479 |
// We collected a billing address at checkout.
|
2480 |
// Send it to Stripe.
|
2492 |
! empty( $user->pmpro_bcity ) &&
|
2493 |
! empty( $user->pmpro_bstate ) &&
|
2494 |
! empty( $user->pmpro_bzipcode ) &&
|
2495 |
+
! empty( $user->pmpro_bcountry )
|
2496 |
) {
|
2497 |
// We have an address in user meta and there is
|
2498 |
// no address in Stripe. May as well send it.
|
2550 |
}
|
2551 |
add_action( "user_register", "pmpro_user_register_stripe_customerid" );
|
2552 |
}
|
2553 |
+
} else {
|
2554 |
+
// User already exists. Update their Stripe customer ID.
|
2555 |
+
update_user_meta( $user_id, 'pmpro_stripe_customerid', $customer->id );
|
2556 |
}
|
2557 |
|
2558 |
/**
|
2596 |
return $customer;
|
2597 |
}
|
2598 |
|
2599 |
+
/**
|
2600 |
* Convert a price to a positive integer in cents (or 0 for a free price)
|
2601 |
* representing how much to charge. This is how Stripe wants us to send price amounts.
|
2602 |
*
|
2604 |
* @return integer
|
2605 |
*/
|
2606 |
private function convert_price_to_unit_amount( $price ) {
|
2607 |
+
$price_info = pmpro_get_price_info( $price );
|
|
|
2608 |
|
2609 |
+
if ( ! $price_info ) {
|
2610 |
+
return 0;
|
|
|
|
|
|
|
|
|
|
|
2611 |
}
|
2612 |
|
2613 |
+
return $price_info['amount_flat'];
|
2614 |
}
|
2615 |
|
2616 |
/**
|
2738 |
$currency = pmpro_get_currency();
|
2739 |
|
2740 |
$is_recurring = ! empty( $cycle_period ) && ! empty( $cycle_number );
|
2741 |
+
|
2742 |
+
$unit_amount = $this->convert_price_to_unit_amount( $amount );
|
2743 |
+
|
2744 |
$cycle_period = strtolower( $cycle_period );
|
2745 |
|
2746 |
+
// Only for use with Stripe Checkout.
|
2747 |
+
$tax_behavior = pmpro_getOption( 'stripe_tax' );
|
2748 |
+
if ( ! self::using_stripe_checkout() || empty( $tax_behavior ) ) {
|
2749 |
+
$tax_behavior = 'no';
|
2750 |
+
}
|
2751 |
+
|
2752 |
$price_search_args = array(
|
2753 |
'product' => $product_id,
|
2754 |
'type' => $is_recurring ? 'recurring' : 'one_time',
|
2761 |
|
2762 |
try {
|
2763 |
$prices = Stripe_Price::all( $price_search_args );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2764 |
} catch (\Throwable $th) {
|
2765 |
// There was an error listing prices.
|
2766 |
+
return $th->getMessage();;
|
2767 |
} catch (\Exception $e) {
|
2768 |
// There was an error listing prices.
|
2769 |
return $e->getMessage();
|
2770 |
}
|
2771 |
+
foreach ( $prices as $price ) {
|
2772 |
+
// Check whether price is the same. If not, continue.
|
2773 |
+
if ( intval( $price->unit_amount ) !== intval( $unit_amount ) ) {
|
2774 |
+
continue;
|
2775 |
+
}
|
2776 |
+
// Check if recurring structure is the same. If not, continue.
|
2777 |
+
if ( $is_recurring && ( empty( $price->recurring->interval_count ) || intval( $price->recurring->interval_count ) !== intval( $cycle_number ) ) ) {
|
2778 |
+
continue;
|
2779 |
+
}
|
2780 |
+
// Check if tax is enabled and set up correctly. If not, continue.
|
2781 |
+
if ( 'no' !== $tax_behavior && $price->tax_behavior !== $tax_behavior ) {
|
2782 |
+
continue;
|
2783 |
+
}
|
2784 |
+
return $price;
|
2785 |
+
}
|
2786 |
|
2787 |
// Create a new Price.
|
2788 |
$price_args = array(
|
2789 |
'product' => $product_id,
|
2790 |
'currency' => strtolower( $pmpro_currency ),
|
2791 |
+
'unit_amount' => $unit_amount,
|
2792 |
);
|
2793 |
if ( $is_recurring ) {
|
2794 |
$price_args['recurring'] = array(
|
2796 |
'interval_count' => $cycle_number
|
2797 |
);
|
2798 |
}
|
2799 |
+
if ( 'no' !== $tax_behavior ) {
|
2800 |
+
$price_args['tax_behavior'] = $tax_behavior;
|
2801 |
+
}
|
2802 |
|
2803 |
try {
|
2804 |
$price = Stripe_Price::create( $price_args );
|
2822 |
* @since 2.7.0.
|
2823 |
*
|
2824 |
* @param MemberOrder $order to calculate trial period days for.
|
2825 |
+
* @param bool $filtered whether to filter the result.
|
2826 |
* @return int trial period days.
|
2827 |
*/
|
2828 |
+
private function calculate_trial_period_days( $order, $filtered = true ) {
|
2829 |
// Use a trial period to set the first recurring payment date.
|
2830 |
if ( $order->BillingPeriod == "Year" ) {
|
2831 |
$trial_period_days = $order->BillingFrequency * 365; //annual
|
2846 |
$order->ProfileStartDate = date_i18n( "Y-m-d\TH:i:s", strtotime( "+ " . $trial_period_days . " Day", current_time( "timestamp" ) ) );
|
2847 |
|
2848 |
//filter the start date
|
2849 |
+
if ( $filtered ) {
|
2850 |
+
$order->ProfileStartDate = apply_filters( "pmpro_profile_start_date", $order->ProfileStartDate, $order );
|
2851 |
+
}
|
2852 |
|
2853 |
//convert back to days
|
2854 |
$trial_period_days = ceil( abs( strtotime( date_i18n( "Y-m-d\TH:i:s" ), current_time( "timestamp" ) ) - strtotime( $order->ProfileStartDate, current_time( "timestamp" ) ) ) / 86400 );
|
2888 |
$subscription_params = array(
|
2889 |
'customer' => $customer_id,
|
2890 |
'items' => array(
|
2891 |
+
array( 'price' => $price->id ),
|
2892 |
),
|
2893 |
'trial_period_days' => $trial_period_days,
|
2894 |
'expand' => array(
|
3099 |
$current_month = date_i18n( 'm' );
|
3100 |
?>
|
3101 |
<h3><?php esc_html_e( 'Subscription Updates', 'paid-memberships-pro' ); ?></h3>
|
3102 |
+
<p><?php esc_html_e( 'Subscription updates will be deprecated in a future version of PMPro, though your existing subscription updates will still trigger as expected. We now instead recommend updating the subscription directly in Stripe.', 'paid-memberships-pro' ); ?></p>
|
3103 |
<table class="form-table">
|
3104 |
<input type='hidden' name='pmpro_subscription_updates_visible' value='1' />
|
3105 |
<tr>
|
3188 |
<?php
|
3189 |
}
|
3190 |
|
|
|
|
|
3191 |
/****************************************
|
3192 |
******* METHODS BECOMING PRIVATE *******
|
3193 |
****************************************/
|
3194 |
/**
|
3195 |
* Get available webhooks
|
3196 |
+
*
|
3197 |
* @since 2.4
|
3198 |
* @deprecated 2.7.0. Only deprecated for public use, will be changed to private non-static in a future version.
|
3199 |
*/
|
3217 |
} catch (\Exception $e) {
|
3218 |
$webhooks = $e->getMessage();
|
3219 |
}
|
3220 |
+
|
3221 |
return $webhooks;
|
3222 |
}
|
3223 |
|
3224 |
/**
|
3225 |
* Get current webhook URL for website to compare.
|
3226 |
+
*
|
3227 |
* @since 2.4
|
3228 |
* @deprecated 2.7.0. Only deprecated for public use, will be changed to private non-static in a future version.
|
3229 |
*/
|
3235 |
|
3236 |
/**
|
3237 |
* List of current enabled events required for PMPro to work.
|
3238 |
+
*
|
3239 |
* @since 2.4
|
3240 |
* @deprecated 2.7.0. Only deprecated for public use, will be changed to private non-static in a future version.
|
3241 |
*/
|
3242 |
public static function webhook_events() {
|
3243 |
// Show deprecation warning if called publically.
|
3244 |
pmpro_method_should_be_private( '2.7.0' );
|
3245 |
+
|
3246 |
+
$events = array(
|
3247 |
'invoice.payment_succeeded',
|
3248 |
'invoice.payment_action_required',
|
3249 |
'customer.subscription.deleted',
|
3250 |
+
'charge.failed',
|
3251 |
+
'charge.refunded',
|
3252 |
+
);
|
3253 |
+
|
3254 |
+
if ( self::using_stripe_checkout() ) {
|
3255 |
+
$events[] = 'checkout.session.completed';
|
3256 |
+
$events[] = 'checkout.session.async_payment_succeeded';
|
3257 |
+
$events[] = 'checkout.session.async_payment_failed';
|
3258 |
+
}
|
3259 |
+
|
3260 |
+
return apply_filters( 'pmpro_stripe_webhook_events', $events );
|
3261 |
}
|
3262 |
|
3263 |
/**
|
3264 |
* Create webhook with relevant events
|
3265 |
+
*
|
3266 |
* @since 2.4
|
3267 |
* @deprecated 2.7.0. Only deprecated for public use, will be changed to private non-static in a future version.
|
3268 |
*/
|
3287 |
//throw $th;
|
3288 |
return new WP_Error( 'error', $e->getMessage() );
|
3289 |
}
|
3290 |
+
|
3291 |
}
|
3292 |
|
3293 |
/**
|
3294 |
* See if a webhook is registered with Stripe.
|
3295 |
+
*
|
3296 |
* @since 2.4
|
3297 |
* @deprecated 2.7.0. Only deprecated for public use, will be changed to private non-static in a future version.
|
3298 |
*/
|
3306 |
}
|
3307 |
|
3308 |
$webhooks = self::get_webhooks();
|
3309 |
+
|
3310 |
$webhook_id = false;
|
3311 |
if ( ! empty( $webhooks ) && ! empty( $webhooks['data'] ) ) {
|
3312 |
|
3340 |
|
3341 |
/**
|
3342 |
* Get a list of events that are missing between the created existing webhook and required webhook events for Paid Memberships Pro.
|
3343 |
+
*
|
3344 |
* @since 2.4
|
3345 |
* @deprecated 2.7.0. Only deprecated for public use, will be changed to private non-static in a future version.
|
3346 |
*/
|
3354 |
// No missing events if webhook event is "All Events" selected.
|
3355 |
if ( is_array( $webhook_events ) && $webhook_events[0] === '*' ) {
|
3356 |
return false;
|
3357 |
+
}
|
3358 |
|
3359 |
if ( count( array_diff( $pmpro_webhook_events, $webhook_events ) ) ) {
|
3360 |
$events = array_unique( array_merge( $pmpro_webhook_events, $webhook_events ) );
|
3369 |
|
3370 |
/**
|
3371 |
* Update required webhook enabled events.
|
3372 |
+
*
|
3373 |
* @since 2.4
|
3374 |
* @deprecated 2.7.0. Only deprecated for public use, will be changed to private non-static in a future version.
|
3375 |
*/
|
3389 |
if ( ! isset( $webhook['enabled_events'] ) ) {
|
3390 |
return;
|
3391 |
}
|
3392 |
+
|
3393 |
$events = self::check_missing_webhook_events( $webhook['enabled_events'] );
|
3394 |
+
|
3395 |
if ( $events ) {
|
3396 |
|
3397 |
try {
|
3398 |
+
$update = Stripe_Webhook::update(
|
3399 |
$webhook['webhook_id'],
|
3400 |
['enabled_events' => $events ]
|
3401 |
);
|
3402 |
+
|
3403 |
if ( $update ) {
|
3404 |
return $update;
|
3405 |
}
|
3410 |
//throw $th;
|
3411 |
return new WP_Error( 'error', $e->getMessage() );
|
3412 |
}
|
3413 |
+
|
3414 |
}
|
3415 |
+
|
3416 |
}
|
3417 |
|
3418 |
/**
|
3419 |
* Delete an existing webhook.
|
3420 |
+
*
|
3421 |
* @since 2.4
|
3422 |
* @deprecated 2.7.0. Only deprecated for public use, will be changed to private non-static in a future version.
|
3423 |
*/
|
3431 |
if ( is_array( $webhook_id ) ) {
|
3432 |
$webhook_id = $webhook_id['webhook_id'];
|
3433 |
}
|
3434 |
+
|
3435 |
try {
|
3436 |
$stripe = new Stripe_Client( $secretkey );
|
3437 |
$delete = $stripe->webhookEndpoints->delete( $webhook_id, [] );
|
3576 |
|
3577 |
// get customer
|
3578 |
$customer = $this->update_customer_at_checkout( $order );
|
3579 |
+
|
3580 |
if ( empty( $customer ) ) {
|
3581 |
return false;
|
3582 |
}
|
3583 |
+
|
3584 |
// get all subscriptions
|
3585 |
if ( ! empty( $customer->subscriptions ) ) {
|
3586 |
$subscriptions = $customer->subscriptions->all();
|
3587 |
}
|
3588 |
+
|
3589 |
foreach( $subscriptions as $subscription ) {
|
3590 |
// check if cancelled or expired
|
3591 |
if ( in_array( $subscription->status, array( 'canceled', 'incomplete', 'incomplete_expired' ) ) ) {
|
3592 |
continue;
|
3593 |
}
|
3594 |
+
|
3595 |
// check if we have a related order for it
|
3596 |
$one_order = new MemberOrder();
|
3597 |
$one_order->getLastMemberOrderBySubscriptionTransactionID( $subscription->id );
|
3598 |
if ( empty( $one_order ) || empty( $one_order->id ) ) {
|
3599 |
continue;
|
3600 |
}
|
3601 |
+
|
3602 |
// update the payment method
|
3603 |
$subscription->default_payment_method = $customer->invoice_settings->default_payment_method;
|
3604 |
$subscription->save();
|
3871 |
|
3872 |
/**
|
3873 |
* Register domain with Apple Pay.
|
3874 |
+
*
|
3875 |
* @since 2.4
|
3876 |
* @deprecated 2.7.0. Only deprecated for public use, will be changed to private non-static in a future version.
|
3877 |
*/
|
3890 |
|
3891 |
/**
|
3892 |
* See if domain is registered with Apple Pay.
|
3893 |
+
*
|
3894 |
* @since 2.4
|
3895 |
* @deprecated 2.7.0. Only deprecated for public use, will be changed to private non-static in a future version.
|
3896 |
*/
|
3983 |
* @deprecated 2.7.0. Only deprecated for public use, will be changed to private non-static in a future version.
|
3984 |
*
|
3985 |
* @param array $params to be sent to Stripe.
|
|
|
3986 |
* @return array params with application fee if applicable.
|
3987 |
*/
|
3988 |
public static function add_application_fee_amount( $params ) {
|
4024 |
pmpro_method_should_be_private( '2.7.0' );
|
4025 |
$secretkey = '';
|
4026 |
if ( self::using_legacy_keys() ) {
|
4027 |
+
$secretkey = pmpro_getOption( 'stripe_secretkey' );
|
4028 |
} else {
|
4029 |
$secretkey = pmpro_getOption( 'gateway_environment' ) === 'live'
|
4030 |
? pmpro_getOption( 'live_stripe_connect_secretkey' )
|
4044 |
pmpro_method_should_be_private( '2.7.0' );
|
4045 |
$publishablekey = '';
|
4046 |
if ( self::using_legacy_keys() ) {
|
4047 |
+
$publishablekey = pmpro_getOption( 'stripe_publishablekey' );
|
4048 |
} else {
|
4049 |
$publishablekey = pmpro_getOption( 'gateway_environment' ) === 'live'
|
4050 |
? pmpro_getOption( 'live_stripe_connect_publishablekey' )
|
4117 |
|
4118 |
return ( empty( $num_problem_orders ) );
|
4119 |
}
|
4120 |
+
|
4121 |
/**
|
4122 |
* Get the date the last webhook was processed.
|
4123 |
* @param environment The gateway environment (live or sandbox) to check for.
|
4278 |
//need to remember the user updates to save later
|
4279 |
global $pmpro_stripe_updates;
|
4280 |
$pmpro_stripe_updates = $new_user_updates;
|
4281 |
+
|
4282 |
if( ! function_exists( 'pmpro_user_register_stripe_updates' ) ) {
|
4283 |
function pmpro_user_register_stripe_updates( $user_id ) {
|
4284 |
global $pmpro_stripe_updates;
|
4729 |
return $this->refund( $order, $transaction_id );
|
4730 |
}
|
4731 |
|
4732 |
+
/**
|
4733 |
+
* Refunds an order (only supports full amounts)
|
4734 |
+
*
|
4735 |
+
* @param bool $success Status of the refund (default: false)
|
4736 |
+
* @param object $order The Member Order Object
|
4737 |
+
* @since 2.8
|
4738 |
+
*
|
4739 |
+
* @return bool Status of the processed refund
|
4740 |
+
*/
|
4741 |
+
public static function process_refund( $success, $order ) {
|
4742 |
+
|
4743 |
+
//default to using the payment id from the order
|
4744 |
+
if ( !empty( $order->payment_transaction_id ) ) {
|
4745 |
+
$transaction_id = $order->payment_transaction_id;
|
4746 |
+
}
|
4747 |
+
|
4748 |
+
//need a transaction id
|
4749 |
+
if ( empty( $transaction_id ) ) {
|
4750 |
+
return false;
|
4751 |
+
}
|
4752 |
+
|
4753 |
+
//if an invoice ID is passed, get the charge/payment id
|
4754 |
+
if ( strpos( $transaction_id, "in_" ) !== false ) {
|
4755 |
+
$invoice = Stripe_Invoice::retrieve( $transaction_id );
|
4756 |
+
|
4757 |
+
if ( ! empty( $invoice ) && ! empty( $invoice->charge ) ) {
|
4758 |
+
$transaction_id = $invoice->charge;
|
4759 |
+
}
|
4760 |
+
}
|
4761 |
+
|
4762 |
+
$success = false;
|
4763 |
+
|
4764 |
+
//attempt refund
|
4765 |
+
try {
|
4766 |
+
|
4767 |
+
$secretkey = pmpro_getOption( 'stripe_secretkey' );
|
4768 |
+
|
4769 |
+
// If they are not using legacy keys, get Stripe Connect keys for the relevant environment.
|
4770 |
+
if ( ! self::using_legacy_keys() && empty( $secretkey ) ) {
|
4771 |
+
if ( pmpro_getOption( 'gateway_environment' ) === 'live' ) {
|
4772 |
+
$secretkey = pmpro_getOption( 'live_stripe_connect_secretkey' );
|
4773 |
+
} else {
|
4774 |
+
$secretkey = pmpro_getOption( 'sandbox_stripe_connect_secretkey' );
|
4775 |
+
}
|
4776 |
+
}
|
4777 |
+
|
4778 |
+
$client = new Stripe_Client( $secretkey );
|
4779 |
+
$refund = $client->refunds->create( [
|
4780 |
+
'charge' => $transaction_id,
|
4781 |
+
] );
|
4782 |
+
|
4783 |
+
//Make sure we're refunding an order that was successful
|
4784 |
+
if ( $refund->status != 'failed' ) {
|
4785 |
+
$order->status = 'refunded';
|
4786 |
+
|
4787 |
+
$success = true;
|
4788 |
+
|
4789 |
+
global $current_user;
|
4790 |
+
|
4791 |
+
$order->notes = trim( $order->notes.' '.sprintf( __('Admin: Order successfully refunded on %1$s for transaction ID %2$s by %3$s.', 'paid-memberships-pro' ), date_i18n('Y-m-d H:i:s'), $transaction_id, $current_user->display_name ) );
|
4792 |
+
|
4793 |
+
$user = get_user_by( 'id', $order->user_id );
|
4794 |
+
//send an email to the member
|
4795 |
+
$myemail = new PMProEmail();
|
4796 |
+
$myemail->sendRefundedEmail( $user, $order );
|
4797 |
+
|
4798 |
+
//send an email to the admin
|
4799 |
+
$myemail = new PMProEmail();
|
4800 |
+
$myemail->sendRefundedAdminEmail( $user, $order );
|
4801 |
+
|
4802 |
+
} else {
|
4803 |
+
$order->notes = trim( $order->notes . ' ' . __('Admin: An error occured while attempting to process this refund.', 'paid-memberships-pro' ) );
|
4804 |
+
}
|
4805 |
+
|
4806 |
+
} catch ( \Throwable $e ) {
|
4807 |
+
$order->notes = trim( $order->notes . ' ' . __( 'Admin: There was a problem processing the refund', 'paid-memberships-pro' ) . ' ' . $e->getMessage() );
|
4808 |
+
} catch ( \Exception $e ) {
|
4809 |
+
$order->notes = trim( $order->notes . ' ' . __( 'Admin: There was a problem processing the refund', 'paid-memberships-pro' ) . ' ' . $e->getMessage() );
|
4810 |
+
}
|
4811 |
+
|
4812 |
+
$order->saveOrder();
|
4813 |
+
|
4814 |
+
return $success;
|
4815 |
+
}
|
4816 |
+
|
4817 |
/**
|
4818 |
* Refund a payment or invoice
|
4819 |
*
|
4993 |
$amount_tax = $order->getTaxForPrice( $amount );
|
4994 |
$amount = pmpro_round_price( (float) $amount + (float) $amount_tax );
|
4995 |
|
4996 |
+
|
4997 |
$trial_period_days = $this->calculate_trial_period_days( $order );
|
4998 |
// Save $trial_period_days to order for now too.
|
4999 |
$order->TrialPeriodDays = $trial_period_days;
|
5026 |
|
5027 |
return $order->plan;
|
5028 |
}
|
|
|
|
|
5029 |
}
|
classes/gateways/class.pmprogateway_twocheckout.php
CHANGED
@@ -9,8 +9,15 @@
|
|
9 |
{
|
10 |
function __construct($gateway = NULL)
|
11 |
{
|
12 |
-
if(!class_exists("Twocheckout"))
|
13 |
-
require_once(dirname(__FILE__) . "/../../includes/lib/Twocheckout/Twocheckout.php");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
|
15 |
//set API connection vars
|
16 |
Twocheckout::sellerId(pmpro_getOption('twocheckout_accountnumber'));
|
@@ -117,7 +124,7 @@
|
|
117 |
</tr>
|
118 |
<tr class="gateway gateway_twocheckout" <?php if($gateway != "twocheckout") { ?>style="display: none;"<?php } ?>>
|
119 |
<th scope="row" valign="top">
|
120 |
-
<label for="twocheckout_apiusername"><?php
|
121 |
</th>
|
122 |
<td>
|
123 |
<input type="text" id="twocheckout_apiusername" name="twocheckout_apiusername" value="<?php echo esc_attr($values['twocheckout_apiusername'])?>" class="regular-text code" />
|
@@ -126,7 +133,7 @@
|
|
126 |
</tr>
|
127 |
<tr class="gateway gateway_twocheckout" <?php if($gateway != "twocheckout") { ?>style="display: none;"<?php } ?>>
|
128 |
<th scope="row" valign="top">
|
129 |
-
<label for="twocheckout_apipassword"><?php
|
130 |
</th>
|
131 |
<td>
|
132 |
<input type="text" id="twocheckout_apipassword" name="twocheckout_apipassword" value="<?php echo esc_attr($values['twocheckout_apipassword'])?>" autocomplete="off" class="regular-text code pmpro-admin-secure-key" />
|
@@ -135,29 +142,29 @@
|
|
135 |
</tr>
|
136 |
<tr class="gateway gateway_twocheckout" <?php if($gateway != "twocheckout") { ?>style="display: none;"<?php } ?>>
|
137 |
<th scope="row" valign="top">
|
138 |
-
<label for="twocheckout_accountnumber"><?php
|
139 |
</th>
|
140 |
<td>
|
141 |
-
<input type="text" name="twocheckout_accountnumber" value="<?php echo $values['twocheckout_accountnumber']?>" class="regular-text code" />
|
142 |
<p class="description"><?php esc_html_e( 'Click on the profile icon in 2Checkout to find your Account Number.', 'paid-memberships-pro' ); ?></p>
|
143 |
</td>
|
144 |
</tr>
|
145 |
<tr class="gateway gateway_twocheckout" <?php if($gateway != "twocheckout") { ?>style="display: none;"<?php } ?>>
|
146 |
<th scope="row" valign="top">
|
147 |
-
<label for="twocheckout_secretword"><?php
|
148 |
</th>
|
149 |
<td>
|
150 |
-
<input type="text" name="twocheckout_secretword" size="60" value="<?php echo $values['twocheckout_secretword']?>" />
|
151 |
-
<p class="description"><?php
|
152 |
</td>
|
153 |
</tr>
|
154 |
<tr class="gateway gateway_twocheckout" <?php if($gateway != "twocheckout") { ?>style="display: none;"<?php } ?>>
|
155 |
<th scope="row" valign="top">
|
156 |
-
<label><?php
|
157 |
</th>
|
158 |
<td>
|
159 |
-
<p><?php
|
160 |
-
<p><code><?php echo admin_url("admin-ajax.php
|
161 |
|
162 |
</td>
|
163 |
</tr>
|
@@ -289,11 +296,10 @@
|
|
289 |
|
290 |
// Recurring membership
|
291 |
if( pmpro_isLevelRecurring( $order->membership_level ) ) {
|
292 |
-
$tco_args['li_0_startup_fee'] =
|
293 |
-
$recurring_payment =
|
294 |
-
$recurring_payment_tax =
|
295 |
-
$
|
296 |
-
$tco_args['li_0_price'] = number_format($recurring_payment, 2, ".", "");
|
297 |
|
298 |
$tco_args['li_0_recurrence'] = ( $order->BillingFrequency == 1 ) ? $order->BillingFrequency . ' ' . $order->BillingPeriod : $order->BillingFrequency . ' ' . $order->BillingPeriod;
|
299 |
|
@@ -304,7 +310,7 @@
|
|
304 |
}
|
305 |
// Non-recurring membership
|
306 |
else {
|
307 |
-
$tco_args['li_0_price'] =
|
308 |
}
|
309 |
|
310 |
// Demo mode?
|
@@ -325,8 +331,8 @@
|
|
325 |
if(!empty($order->TrialBillingPeriod)) {
|
326 |
$trial_amount = $order->TrialAmount;
|
327 |
$trial_tax = $order->getTaxForPrice($trial_amount);
|
328 |
-
$trial_amount =
|
329 |
-
$tco_args['li_0_startup_fee'] = $trial_amount; // Negative trial amount
|
330 |
}
|
331 |
|
332 |
$ptpStr = '';
|
9 |
{
|
10 |
function __construct($gateway = NULL)
|
11 |
{
|
12 |
+
if ( ! class_exists( "Twocheckout" ) ) {
|
13 |
+
require_once( dirname(__FILE__) . "/../../includes/lib/Twocheckout/Twocheckout.php" );
|
14 |
+
} else {
|
15 |
+
// Another plugin may have loaded the 2Checkout library already.
|
16 |
+
// Let's log the current 2Checkout Library info so that we know
|
17 |
+
// where to look if we need to troubleshoot library conflicts.
|
18 |
+
$previously_loaded_class = new \ReflectionClass( 'Twocheckout' );
|
19 |
+
pmpro_track_library_conflict( 'twocheckout', $previously_loaded_class->getFileName(), Twocheckout::VERSION );
|
20 |
+
}
|
21 |
|
22 |
//set API connection vars
|
23 |
Twocheckout::sellerId(pmpro_getOption('twocheckout_accountnumber'));
|
124 |
</tr>
|
125 |
<tr class="gateway gateway_twocheckout" <?php if($gateway != "twocheckout") { ?>style="display: none;"<?php } ?>>
|
126 |
<th scope="row" valign="top">
|
127 |
+
<label for="twocheckout_apiusername"><?php esc_html_e('API Username', 'paid-memberships-pro' );?>:</label>
|
128 |
</th>
|
129 |
<td>
|
130 |
<input type="text" id="twocheckout_apiusername" name="twocheckout_apiusername" value="<?php echo esc_attr($values['twocheckout_apiusername'])?>" class="regular-text code" />
|
133 |
</tr>
|
134 |
<tr class="gateway gateway_twocheckout" <?php if($gateway != "twocheckout") { ?>style="display: none;"<?php } ?>>
|
135 |
<th scope="row" valign="top">
|
136 |
+
<label for="twocheckout_apipassword"><?php esc_html_e('API Password', 'paid-memberships-pro' );?>:</label>
|
137 |
</th>
|
138 |
<td>
|
139 |
<input type="text" id="twocheckout_apipassword" name="twocheckout_apipassword" value="<?php echo esc_attr($values['twocheckout_apipassword'])?>" autocomplete="off" class="regular-text code pmpro-admin-secure-key" />
|
142 |
</tr>
|
143 |
<tr class="gateway gateway_twocheckout" <?php if($gateway != "twocheckout") { ?>style="display: none;"<?php } ?>>
|
144 |
<th scope="row" valign="top">
|
145 |
+
<label for="twocheckout_accountnumber"><?php esc_html_e('Account Number', 'paid-memberships-pro' );?>:</label>
|
146 |
</th>
|
147 |
<td>
|
148 |
+
<input type="text" name="twocheckout_accountnumber" value="<?php echo esc_attr( $values['twocheckout_accountnumber'] ) ?>" class="regular-text code" />
|
149 |
<p class="description"><?php esc_html_e( 'Click on the profile icon in 2Checkout to find your Account Number.', 'paid-memberships-pro' ); ?></p>
|
150 |
</td>
|
151 |
</tr>
|
152 |
<tr class="gateway gateway_twocheckout" <?php if($gateway != "twocheckout") { ?>style="display: none;"<?php } ?>>
|
153 |
<th scope="row" valign="top">
|
154 |
+
<label for="twocheckout_secretword"><?php esc_html_e('Secret Word', 'paid-memberships-pro' );?>:</label>
|
155 |
</th>
|
156 |
<td>
|
157 |
+
<input type="text" name="twocheckout_secretword" size="60" value="<?php echo esc_attr( $values['twocheckout_secretword'] ) ?>" />
|
158 |
+
<p class="description"><?php esc_html_e('Go to Account » Site Management. Look under Checkout Options to find the Secret Word.', 'paid-memberships-pro' ); ?></p>
|
159 |
</td>
|
160 |
</tr>
|
161 |
<tr class="gateway gateway_twocheckout" <?php if($gateway != "twocheckout") { ?>style="display: none;"<?php } ?>>
|
162 |
<th scope="row" valign="top">
|
163 |
+
<label><?php esc_html_e('TwoCheckout INS URL', 'paid-memberships-pro' );?>:</label>
|
164 |
</th>
|
165 |
<td>
|
166 |
+
<p><?php esc_html_e('To fully integrate with 2Checkout, be sure to use the following for your INS URL and Approved URL', 'paid-memberships-pro' );?></p>
|
167 |
+
<p><code><?php echo esc_html( admin_url("admin-ajax.php?action=twocheckout-ins" ) ); ?></code></p>
|
168 |
|
169 |
</td>
|
170 |
</tr>
|
296 |
|
297 |
// Recurring membership
|
298 |
if( pmpro_isLevelRecurring( $order->membership_level ) ) {
|
299 |
+
$tco_args['li_0_startup_fee'] = pmpro_round_price_as_string( $initial_payment - $amount ); //negative amount for lower initial payments
|
300 |
+
$recurring_payment = (float) $order->membership_level->billing_amount;
|
301 |
+
$recurring_payment_tax = (float) $order->getTaxForPrice( $recurring_payment );
|
302 |
+
$tco_args['li_0_price'] = pmpro_round_price_as_string( $recurring_payment + $recurring_payment_tax );
|
|
|
303 |
|
304 |
$tco_args['li_0_recurrence'] = ( $order->BillingFrequency == 1 ) ? $order->BillingFrequency . ' ' . $order->BillingPeriod : $order->BillingFrequency . ' ' . $order->BillingPeriod;
|
305 |
|
310 |
}
|
311 |
// Non-recurring membership
|
312 |
else {
|
313 |
+
$tco_args['li_0_price'] = pmpro_round_price_as_string( $initial_payment );
|
314 |
}
|
315 |
|
316 |
// Demo mode?
|
331 |
if(!empty($order->TrialBillingPeriod)) {
|
332 |
$trial_amount = $order->TrialAmount;
|
333 |
$trial_tax = $order->getTaxForPrice($trial_amount);
|
334 |
+
$trial_amount = (float) $trial_amount + (float) $trial_tax;
|
335 |
+
$tco_args['li_0_startup_fee'] = pmpro_round_price_as_string( $trial_amount ); // Negative trial amount
|
336 |
}
|
337 |
|
338 |
$ptpStr = '';
|
css/admin-rtl.css
CHANGED
@@ -1,7 +1,3 @@
|
|
1 |
-
.pmpro_admin {
|
2 |
-
background: url(../images/Paid-Memberships-Pro_watermark.png) bottom left no-repeat !important;
|
3 |
-
}
|
4 |
-
|
5 |
.pmpro_admin .pmpro_banner h2 {
|
6 |
float: right;
|
7 |
}
|
@@ -29,7 +25,7 @@
|
|
29 |
/* discount levels */
|
30 |
|
31 |
/* pagination */
|
32 |
-
|
33 |
float: left;
|
34 |
}
|
35 |
|
|
|
|
|
|
|
|
|
1 |
.pmpro_admin .pmpro_banner h2 {
|
2 |
float: right;
|
3 |
}
|
25 |
/* discount levels */
|
26 |
|
27 |
/* pagination */
|
28 |
+
.pmpro_pagination {
|
29 |
float: left;
|
30 |
}
|
31 |
|
css/admin.css
CHANGED
@@ -6,7 +6,7 @@
|
|
6 |
border-bottom-width: 1px;
|
7 |
}
|
8 |
|
9 |
-
/*
|
10 |
#wp-admin-bar-paid-memberships-pro .ab-item .ab-icon:before {
|
11 |
font-family: "dashicons";
|
12 |
content: "\f307";
|
@@ -14,63 +14,87 @@
|
|
14 |
.pmpro_admin tr td .dashicons {
|
15 |
padding-top: 5px;
|
16 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
|
18 |
/* header/etc */
|
19 |
.pmpro_admin {
|
20 |
-
|
21 |
-
background-position: bottom right;
|
22 |
-
background-repeat: no-repeat;
|
23 |
-
background-size: 290px 40px;
|
24 |
-
padding: 1em 0 70px 0;
|
25 |
}
|
26 |
-
.
|
27 |
-
display:
|
28 |
-
|
29 |
-
grid-template-columns: 350px auto;
|
30 |
}
|
31 |
-
.
|
32 |
-
|
33 |
}
|
34 |
-
.
|
35 |
align-self: center;
|
36 |
-
grid-area: meta;
|
37 |
font-size: 16px;
|
38 |
line-height: 1.5;
|
39 |
}
|
40 |
-
.
|
41 |
-
|
42 |
-
|
|
|
|
|
43 |
font-weight: bold;
|
44 |
-
padding:
|
45 |
}
|
46 |
-
.
|
47 |
-
|
48 |
-
|
49 |
}
|
50 |
-
.
|
51 |
font-weight: bold;
|
52 |
-
padding: 5px 10px 5px 5px;
|
53 |
text-decoration: none;
|
54 |
}
|
55 |
-
.
|
56 |
-
bottom: 7px;
|
57 |
display: inline-block;
|
58 |
font: 400 20px/1 dashicons;
|
59 |
left: 0;
|
60 |
position: relative;
|
61 |
text-decoration: none;
|
62 |
-
vertical-align:
|
63 |
}
|
64 |
-
.
|
65 |
color: rgb( 70, 180, 80 );
|
66 |
}
|
67 |
-
.
|
68 |
content: "\f147";
|
69 |
}
|
70 |
-
.
|
71 |
color: #AAA;
|
72 |
}
|
73 |
-
.
|
74 |
content: "\f335";
|
75 |
}
|
76 |
|
@@ -92,6 +116,10 @@
|
|
92 |
max-width: 200px;
|
93 |
height: auto;
|
94 |
}
|
|
|
|
|
|
|
|
|
95 |
|
96 |
/* Scollable Boxes */
|
97 |
.pmpro_scrollable {
|
@@ -170,6 +198,18 @@
|
|
170 |
background-color: #f6f7f7;
|
171 |
}
|
172 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
173 |
/* levels */
|
174 |
.memberships_page_pmpro-membershiplevels .pmpro_admin #posts-filter p.search-box {
|
175 |
margin: 2em 0 1em 0;
|
@@ -217,36 +257,37 @@
|
|
217 |
}
|
218 |
|
219 |
.admin_page_pmpro-paymentsettings span.pmpro_gateway-mode {
|
220 |
-
border: 1px solid;
|
221 |
border-radius: 3px;
|
222 |
display: inline-block;
|
223 |
-
font-size:
|
|
|
224 |
margin-left: 5px;
|
225 |
-
padding:
|
226 |
}
|
227 |
|
228 |
.admin_page_pmpro-paymentsettings span.pmpro_gateway-mode-live {
|
229 |
-
background-color: #
|
230 |
-
border-color: #
|
231 |
-
color: #
|
232 |
}
|
233 |
|
234 |
.admin_page_pmpro-paymentsettings span.pmpro_gateway-mode-live.pmpro_gateway-mode-not-connected {
|
235 |
-
background-color: #
|
236 |
-
border-color: #
|
237 |
-
color: #
|
238 |
}
|
239 |
|
240 |
.admin_page_pmpro-paymentsettings span.pmpro_gateway-mode-test {
|
241 |
-
background-color: #
|
242 |
-
border-color: #
|
243 |
-
color: #
|
244 |
}
|
245 |
|
246 |
.admin_page_pmpro-paymentsettings span.pmpro_gateway-mode-test.pmpro_gateway-mode-not-connected {
|
247 |
-
background-color: #
|
248 |
-
border-color: #
|
249 |
-
color: #
|
250 |
}
|
251 |
|
252 |
.admin_page_pmpro-paymentsettings .pmpro-stripe-connect {
|
@@ -369,6 +410,62 @@
|
|
369 |
.memberships_page_pmpro-orders .pmpro_admin .nav-tab-wrapper {
|
370 |
margin-bottom: 10px;
|
371 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
372 |
|
373 |
/* members list */
|
374 |
.wp-list-table.members .column-ID {
|
@@ -385,42 +482,41 @@ tr.pmpro_settings_divider td {
|
|
385 |
}
|
386 |
|
387 |
/* admin pages */
|
388 |
-
.pmpro_admin_section-email-templates-content .pmpro-email-templates-variable-reference
|
389 |
-
|
390 |
-
|
391 |
-
.pmpro_admin_section-email-templates-content .pmpro-email-templates-variable-reference .form-table .widefat {
|
392 |
-
margin-bottom: 20px;
|
393 |
}
|
394 |
|
395 |
/* messages */
|
396 |
.pmpro_admin .pmpro_message {
|
397 |
background: #FFF;
|
398 |
border-left: 4px solid #FFF;
|
|
|
399 |
margin-right: 15px;
|
400 |
padding: 15px;
|
401 |
}
|
402 |
.pmpro_admin .pmpro_success {
|
403 |
-
background-color:
|
404 |
-
border-left-color:
|
405 |
}
|
406 |
.pmpro_admin .pmpro_error,
|
407 |
.pmpro_admin tr.pmpro_error td {
|
408 |
-
background-color:
|
409 |
-
border-left-color:
|
410 |
}
|
411 |
.pmpro_admin .pmpro_alert {
|
412 |
-
background-color:
|
413 |
-
border-left-color:
|
414 |
}
|
415 |
.pmpro_admin .pmpro_success a {
|
416 |
-
color: #
|
417 |
}
|
418 |
.pmpro_admin .pmpro_error a,
|
419 |
.pmpro_admin tr.pmpro_error td {
|
420 |
-
color: #
|
421 |
}
|
422 |
.pmpro_admin .pmpro_alert a {
|
423 |
-
color: #
|
424 |
}
|
425 |
|
426 |
/* notifications */
|
@@ -487,37 +583,37 @@ tr.pmpro_alert {
|
|
487 |
}
|
488 |
|
489 |
/* pagination */
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
|
|
|
|
|
|
500 |
text-decoration: none;
|
501 |
-
|
502 |
-
background: #EEE;
|
503 |
}
|
504 |
-
|
505 |
-
|
|
|
|
|
|
|
506 |
}
|
507 |
-
|
508 |
-
|
|
|
509 |
color: #FFF;
|
510 |
-
background: #666;
|
511 |
-
padding: 2px 5px 2px 5px;
|
512 |
-
margin: 1px;
|
513 |
-
font-weight: bold;
|
514 |
}
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
color: #BBB;
|
520 |
-
background: #EFEFEF;
|
521 |
}
|
522 |
|
523 |
p.pmpro_meta_notice {
|
@@ -616,6 +712,9 @@ p.pmpro_meta_notice {
|
|
616 |
.memberships_page_pmpro-license .pmpro_icon {
|
617 |
margin-top: 20px;
|
618 |
}
|
|
|
|
|
|
|
619 |
|
620 |
/* misc */
|
621 |
.pmpro_lite {
|
@@ -644,13 +743,9 @@ h2.nav-tab-wrapper {
|
|
644 |
.memberships_page_pmpro-reports .pmpro_admin .nav-tab-wrapper {
|
645 |
margin-bottom: 10px;
|
646 |
}
|
647 |
-
.
|
648 |
-
.
|
649 |
-
|
650 |
-
font-size: 14px;
|
651 |
-
padding: 8px 12px;
|
652 |
-
margin: 0;
|
653 |
-
line-height: 1.4;
|
654 |
}
|
655 |
.pmpro_clickable {
|
656 |
cursor: pointer;
|
@@ -717,6 +812,7 @@ button.pmpro_report_th_closed:before {
|
|
717 |
background-color: #f6f7f7;
|
718 |
}
|
719 |
.pmpro_report-holder .pmpro_report-button {
|
|
|
720 |
text-align: center;
|
721 |
}
|
722 |
.pmpro_chart_area {
|
6 |
border-bottom-width: 1px;
|
7 |
}
|
8 |
|
9 |
+
/* icons */
|
10 |
#wp-admin-bar-paid-memberships-pro .ab-item .ab-icon:before {
|
11 |
font-family: "dashicons";
|
12 |
content: "\f307";
|
14 |
.pmpro_admin tr td .dashicons {
|
15 |
padding-top: 5px;
|
16 |
}
|
17 |
+
.pmpro_admin .pmpro-has-icon:before {
|
18 |
+
font: normal 16px/1 dashicons;
|
19 |
+
margin-right: 8px;
|
20 |
+
speak: never;
|
21 |
+
vertical-align: middle;
|
22 |
+
position: relative;
|
23 |
+
top: -2px;
|
24 |
+
-webkit-font-smoothing: antialiased;
|
25 |
+
-moz-osx-font-smoothing: grayscale;
|
26 |
+
}
|
27 |
+
.pmpro_admin .pmpro-has-icon-printer:before {
|
28 |
+
content: "\f193";
|
29 |
+
}
|
30 |
+
.pmpro_admin .pmpro-has-icon-email:before {
|
31 |
+
content: "\f465";
|
32 |
+
}
|
33 |
+
.pmpro_admin .pmpro-has-icon-admin-users:before {
|
34 |
+
content: "\f110";
|
35 |
+
}
|
36 |
+
.pmpro_admin .pmpro-has-icon-image-rotate:before {
|
37 |
+
content: "\f531";
|
38 |
+
}
|
39 |
+
.pmpro_admin .pmpro-has-icon-download:before {
|
40 |
+
content: "\f316";
|
41 |
+
top: 0;
|
42 |
+
}
|
43 |
+
.pmpro_admin .pmpro-has-icon-plus:before {
|
44 |
+
content: "\f132";
|
45 |
+
top: 0;
|
46 |
+
}
|
47 |
|
48 |
/* header/etc */
|
49 |
.pmpro_admin {
|
50 |
+
padding: 1em 0 0 0;
|
|
|
|
|
|
|
|
|
51 |
}
|
52 |
+
.pmpro_banner {
|
53 |
+
display: flex;
|
54 |
+
padding: .5em 0;
|
|
|
55 |
}
|
56 |
+
.pmpro_banner .pmpro_logo {
|
57 |
+
margin-right: 10px;
|
58 |
}
|
59 |
+
.pmpro_banner .pmpro_meta {
|
60 |
align-self: center;
|
|
|
61 |
font-size: 16px;
|
62 |
line-height: 1.5;
|
63 |
}
|
64 |
+
.pmpro_banner .pmpro_meta .pmpro_version {
|
65 |
+
background: #DCDCDE;
|
66 |
+
color: #555;
|
67 |
+
border-radius: 999px;
|
68 |
+
font-size: 14px;
|
69 |
font-weight: bold;
|
70 |
+
padding: 6px 12px;
|
71 |
}
|
72 |
+
.pmpro_banner .pmpro_meta a {
|
73 |
+
display: inline-block;
|
74 |
+
margin: 0 0 0 10px;
|
75 |
}
|
76 |
+
.pmpro_banner .pmpro_meta a.pmpro_license_tag {
|
77 |
font-weight: bold;
|
|
|
78 |
text-decoration: none;
|
79 |
}
|
80 |
+
.pmpro_banner .pmpro_meta a.pmpro_license_tag:before {
|
|
|
81 |
display: inline-block;
|
82 |
font: 400 20px/1 dashicons;
|
83 |
left: 0;
|
84 |
position: relative;
|
85 |
text-decoration: none;
|
86 |
+
vertical-align: middle;
|
87 |
}
|
88 |
+
.pmpro_banner .pmpro_meta a.pmpro_license_tag.pmpro_license_tag-valid {
|
89 |
color: rgb( 70, 180, 80 );
|
90 |
}
|
91 |
+
.pmpro_banner .pmpro_meta a.pmpro_license_tag.pmpro_license_tag-valid:before {
|
92 |
content: "\f147";
|
93 |
}
|
94 |
+
.pmpro_banner .pmpro_meta a.pmpro_license_tag.pmpro_license_tag-invalid {
|
95 |
color: #AAA;
|
96 |
}
|
97 |
+
.pmpro_banner .pmpro_meta a.pmpro_license_tag.pmpro_license_tag-invalid:before {
|
98 |
content: "\f335";
|
99 |
}
|
100 |
|
116 |
max-width: 200px;
|
117 |
height: auto;
|
118 |
}
|
119 |
+
.pmpro_admin h2,
|
120 |
+
.pmpro_admin h3 {
|
121 |
+
font-size: 18px;
|
122 |
+
}
|
123 |
|
124 |
/* Scollable Boxes */
|
125 |
.pmpro_scrollable {
|
198 |
background-color: #f6f7f7;
|
199 |
}
|
200 |
|
201 |
+
/* General admin-area tables styles */
|
202 |
+
.pmpro_admin table.wp-list-table thead th {
|
203 |
+
padding-left: 1.25em;
|
204 |
+
padding-right: 1.25em;
|
205 |
+
}
|
206 |
+
.pmpro_admin table.wp-list-table tbody td {
|
207 |
+
padding: 1.25em;
|
208 |
+
}
|
209 |
+
.pmpro_admin table.wp-list-table .row-actions {
|
210 |
+
color: #999;
|
211 |
+
}
|
212 |
+
|
213 |
/* levels */
|
214 |
.memberships_page_pmpro-membershiplevels .pmpro_admin #posts-filter p.search-box {
|
215 |
margin: 2em 0 1em 0;
|
257 |
}
|
258 |
|
259 |
.admin_page_pmpro-paymentsettings span.pmpro_gateway-mode {
|
260 |
+
border: 1px solid transparent;
|
261 |
border-radius: 3px;
|
262 |
display: inline-block;
|
263 |
+
font-size: 14px;
|
264 |
+
font-weight: 500;
|
265 |
margin-left: 5px;
|
266 |
+
padding: .25em .5em;
|
267 |
}
|
268 |
|
269 |
.admin_page_pmpro-paymentsettings span.pmpro_gateway-mode-live {
|
270 |
+
background-color: #d4edda;
|
271 |
+
border-color: #c3e6cb;
|
272 |
+
color: #0F441C;
|
273 |
}
|
274 |
|
275 |
.admin_page_pmpro-paymentsettings span.pmpro_gateway-mode-live.pmpro_gateway-mode-not-connected {
|
276 |
+
background-color: #f8d7da;
|
277 |
+
border-color: #f5c6cb;
|
278 |
+
color: #721c24;
|
279 |
}
|
280 |
|
281 |
.admin_page_pmpro-paymentsettings span.pmpro_gateway-mode-test {
|
282 |
+
background-color: #FFF2E0;
|
283 |
+
border-color: #F2E5D3;
|
284 |
+
color: #6B4201;
|
285 |
}
|
286 |
|
287 |
.admin_page_pmpro-paymentsettings span.pmpro_gateway-mode-test.pmpro_gateway-mode-not-connected {
|
288 |
+
background-color: #FFF8E0;
|
289 |
+
border-color: #ffeeba;
|
290 |
+
color: #6C5101;
|
291 |
}
|
292 |
|
293 |
.admin_page_pmpro-paymentsettings .pmpro-stripe-connect {
|
410 |
.memberships_page_pmpro-orders .pmpro_admin .nav-tab-wrapper {
|
411 |
margin-bottom: 10px;
|
412 |
}
|
413 |
+
.pmpro_admin .wp-list-table .column-username,
|
414 |
+
.pmpro_admin .wp-list-table .column-billing,
|
415 |
+
.pmpro_admin .wp-list-table .column-transaction-ids {
|
416 |
+
word-break: break-word;
|
417 |
+
}
|
418 |
+
.pmpro_order-status {
|
419 |
+
border: 1px solid transparent;
|
420 |
+
border-radius: 5px;
|
421 |
+
display: block;
|
422 |
+
font-weight: 500;
|
423 |
+
padding: .25em .5em;
|
424 |
+
text-align: center;
|
425 |
+
}
|
426 |
+
.pmpro_order-status-success,
|
427 |
+
.pmpro_order-status-cancelled {
|
428 |
+
background-color: #d4edda;
|
429 |
+
border-color: #c3e6cb;
|
430 |
+
color: #0F441C;
|
431 |
+
}
|
432 |
+
.pmpro_order-status-error,
|
433 |
+
.pmpro_order-status-refunded {
|
434 |
+
background-color: #f8d7da;
|
435 |
+
border-color: #f5c6cb;
|
436 |
+
color: #721c24;
|
437 |
+
}
|
438 |
+
.pmpro_order-status-pending,
|
439 |
+
.pmpro_order-status-review,
|
440 |
+
.pmpro_order-status-token {
|
441 |
+
background-color: #FFF8E0;
|
442 |
+
border-color: #ffeeba;
|
443 |
+
color: #6C5101;
|
444 |
+
}
|
445 |
+
.wp-list-table .pmpro_order-renewal {
|
446 |
+
display: block;
|
447 |
+
margin-top: 8px;
|
448 |
+
text-align: center;
|
449 |
+
}
|
450 |
+
a.pmpro_order-renewal {
|
451 |
+
color: inherit;
|
452 |
+
text-decoration: none;
|
453 |
+
}
|
454 |
+
.pmpro_order-renewal:before {
|
455 |
+
content: "\f113";
|
456 |
+
font: normal 12px/1 dashicons;
|
457 |
+
margin-right: 3px;
|
458 |
+
vertical-align: middle;
|
459 |
+
position: relative;
|
460 |
+
top: -1px;
|
461 |
+
-webkit-font-smoothing: antialiased;
|
462 |
+
-moz-osx-font-smoothing: grayscale;
|
463 |
+
}
|
464 |
+
.memberships_page_pmpro-orders #show_billing_action {
|
465 |
+
font-size: 14px;
|
466 |
+
font-weight: normal;
|
467 |
+
margin-left: 10px;
|
468 |
+
}
|
469 |
|
470 |
/* members list */
|
471 |
.wp-list-table.members .column-ID {
|
482 |
}
|
483 |
|
484 |
/* admin pages */
|
485 |
+
.pmpro_admin_section-email-templates-content .pmpro-email-templates-variable-reference table {
|
486 |
+
margin-bottom: 3em;
|
487 |
+
max-width: 900px;
|
|
|
|
|
488 |
}
|
489 |
|
490 |
/* messages */
|
491 |
.pmpro_admin .pmpro_message {
|
492 |
background: #FFF;
|
493 |
border-left: 4px solid #FFF;
|
494 |
+
color: #3c434a;
|
495 |
margin-right: 15px;
|
496 |
padding: 15px;
|
497 |
}
|
498 |
.pmpro_admin .pmpro_success {
|
499 |
+
background-color: #d4edda;
|
500 |
+
border-left-color: #c3e6cb;
|
501 |
}
|
502 |
.pmpro_admin .pmpro_error,
|
503 |
.pmpro_admin tr.pmpro_error td {
|
504 |
+
background-color: #f8d7da;
|
505 |
+
border-left-color: #f5c6cb;
|
506 |
}
|
507 |
.pmpro_admin .pmpro_alert {
|
508 |
+
background-color: #FFF8E0;
|
509 |
+
border-left-color: #ffeeba;
|
510 |
}
|
511 |
.pmpro_admin .pmpro_success a {
|
512 |
+
color: #0F441C;
|
513 |
}
|
514 |
.pmpro_admin .pmpro_error a,
|
515 |
.pmpro_admin tr.pmpro_error td {
|
516 |
+
color: #721c24;
|
517 |
}
|
518 |
.pmpro_admin .pmpro_alert a {
|
519 |
+
color: #6C5101;
|
520 |
}
|
521 |
|
522 |
/* notifications */
|
583 |
}
|
584 |
|
585 |
/* pagination */
|
586 |
+
.pmpro_pagination a,
|
587 |
+
.pmpro_pagination span.current,
|
588 |
+
.pmpro_pagination span.disabled {
|
589 |
+
display: inline-block;
|
590 |
+
vertical-align: baseline;
|
591 |
+
margin: 0 2px;
|
592 |
+
padding: 0 8px;
|
593 |
+
font-size: 14px;
|
594 |
+
line-height: 1.625;
|
595 |
+
text-align: center;
|
596 |
+
color: #2271b1;
|
597 |
+
border: 1px solid #2271b1;
|
598 |
+
background: #f6f7f7;
|
599 |
text-decoration: none;
|
600 |
+
border-radius: 3px;
|
|
|
601 |
}
|
602 |
+
.pmpro_pagination a:hover,
|
603 |
+
.pmpro_pagination a:active {
|
604 |
+
background: #f0f0f1;
|
605 |
+
border-color: #0a4b78;
|
606 |
+
color: #0a4b78;
|
607 |
}
|
608 |
+
.pmpro_pagination span.current {
|
609 |
+
background: #0a4b78;
|
610 |
+
border-color: #0a4b78;
|
611 |
color: #FFF;
|
|
|
|
|
|
|
|
|
612 |
}
|
613 |
+
.pmpro_pagination span.disabled {
|
614 |
+
background: #f6f7f7;
|
615 |
+
border-color: #dcdcde;
|
616 |
+
color: #a7aaad;
|
|
|
|
|
617 |
}
|
618 |
|
619 |
p.pmpro_meta_notice {
|
712 |
.memberships_page_pmpro-license .pmpro_icon {
|
713 |
margin-top: 20px;
|
714 |
}
|
715 |
+
.memberships_page_pmpro-license .about-wrap .about-text {
|
716 |
+
color: #3c434a;
|
717 |
+
}
|
718 |
|
719 |
/* misc */
|
720 |
.pmpro_lite {
|
743 |
.memberships_page_pmpro-reports .pmpro_admin .nav-tab-wrapper {
|
744 |
margin-bottom: 10px;
|
745 |
}
|
746 |
+
.pmpro_report-holder table.wp-list-table thead th,
|
747 |
+
.pmpro_report-holder table.wp-list-table tbody td {
|
748 |
+
padding: 8px 10px;
|
|
|
|
|
|
|
|
|
749 |
}
|
750 |
.pmpro_clickable {
|
751 |
cursor: pointer;
|
812 |
background-color: #f6f7f7;
|
813 |
}
|
814 |
.pmpro_report-holder .pmpro_report-button {
|
815 |
+
margin-bottom: 0;
|
816 |
text-align: center;
|
817 |
}
|
818 |
.pmpro_chart_area {
|
css/blocks.editor.css
CHANGED
@@ -21,23 +21,27 @@
|
|
21 |
position: relative;
|
22 |
text-transform: uppercase;
|
23 |
}
|
|
|
|
|
|
|
|
|
24 |
.pmpro-block-element .components-base-control {
|
25 |
margin-bottom: 16px;
|
26 |
}
|
27 |
.pmpro-block-element .components-base-control .components-select-control {
|
28 |
height: auto;
|
29 |
}
|
30 |
-
|
31 |
display: block;
|
32 |
}
|
33 |
|
34 |
/* Require Membership Block */
|
35 |
.pmpro-block-require-membership-element {
|
|
|
36 |
border-bottom: 5px solid #8d96a0;
|
37 |
border-top: 5px solid #8d96a0;
|
38 |
}
|
39 |
.pmpro-block-require-membership-element .pmpro-block-title {
|
40 |
-
background: rgba(237, 239, 240, 0.8);
|
41 |
color: #555d66;
|
42 |
display: block;
|
43 |
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen-Sans, Ubuntu, Cantarell, Helvetica Neue, sans-serif;
|
@@ -46,24 +50,36 @@
|
|
46 |
position: relative;
|
47 |
text-transform: uppercase;
|
48 |
}
|
49 |
-
.pmpro-block-require-membership-element .components-panel__body
|
50 |
-
|
51 |
-
|
|
|
52 |
border-top: none;
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
overflow: auto;
|
58 |
}
|
59 |
.pmpro-block-require-membership-element .block-editor-inner-blocks {
|
60 |
-
|
61 |
-
padding
|
62 |
}
|
63 |
.pmpro-block-inspector-scrollable {
|
64 |
-
height:
|
65 |
overflow: auto;
|
66 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
67 |
|
68 |
/* Checkout Button Block */
|
69 |
.wp-block-pmpro-checkout-button {
|
21 |
position: relative;
|
22 |
text-transform: uppercase;
|
23 |
}
|
24 |
+
.pmpro-block-element hr {
|
25 |
+
margin-bottom: 16px;
|
26 |
+
margin-top: 16px;
|
27 |
+
}
|
28 |
.pmpro-block-element .components-base-control {
|
29 |
margin-bottom: 16px;
|
30 |
}
|
31 |
.pmpro-block-element .components-base-control .components-select-control {
|
32 |
height: auto;
|
33 |
}
|
34 |
+
..pmpro-block-element .components-base-control .components-base-control__label {
|
35 |
display: block;
|
36 |
}
|
37 |
|
38 |
/* Require Membership Block */
|
39 |
.pmpro-block-require-membership-element {
|
40 |
+
background: rgba(237, 239, 240, 0.8);
|
41 |
border-bottom: 5px solid #8d96a0;
|
42 |
border-top: 5px solid #8d96a0;
|
43 |
}
|
44 |
.pmpro-block-require-membership-element .pmpro-block-title {
|
|
|
45 |
color: #555d66;
|
46 |
display: block;
|
47 |
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen-Sans, Ubuntu, Cantarell, Helvetica Neue, sans-serif;
|
50 |
position: relative;
|
51 |
text-transform: uppercase;
|
52 |
}
|
53 |
+
.pmpro-block-require-membership-element .components-panel__body,
|
54 |
+
.pmpro-block-require-membership-element .components-panel__body.is-opened {
|
55 |
+
background: rgba(237, 239, 240, 0.8);
|
56 |
+
border-bottom: none;
|
57 |
border-top: none;
|
58 |
+
}
|
59 |
+
.pmpro-block-require-membership-element .pmpro-block-inspector-scrollable {
|
60 |
+
border: 1px solid #CCC;
|
61 |
+
margin: 0px 16px 16px 16px;
|
|
|
62 |
}
|
63 |
.pmpro-block-require-membership-element .block-editor-inner-blocks {
|
64 |
+
background-color: #FFF;
|
65 |
+
padding: 16px;
|
66 |
}
|
67 |
.pmpro-block-inspector-scrollable {
|
68 |
+
height: 170px;
|
69 |
overflow: auto;
|
70 |
}
|
71 |
+
.pmpro-block-inspector-scrollable::-webkit-scrollbar {
|
72 |
+
background-color: #c3c4c7;
|
73 |
+
width: 8px;
|
74 |
+
height: 8px;
|
75 |
+
}
|
76 |
+
.pmpro-block-inspector-scrollable::-webkit-scrollbar-thumb {
|
77 |
+
background: #2c3338;
|
78 |
+
border-radius: 5px;
|
79 |
+
}
|
80 |
+
.pmpro-block-inspector-scrollable .components-base-control.components-checkbox-control {
|
81 |
+
margin-bottom: 5px;
|
82 |
+
}
|
83 |
|
84 |
/* Checkout Button Block */
|
85 |
.wp-block-pmpro-checkout-button {
|
includes/compatibility.php
CHANGED
@@ -113,4 +113,49 @@ function pmpro_compatibility_checker_themes(){
|
|
113 |
|
114 |
|
115 |
}
|
116 |
-
add_action( 'after_setup_theme', 'pmpro_compatibility_checker_themes' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
113 |
|
114 |
|
115 |
}
|
116 |
+
add_action( 'after_setup_theme', 'pmpro_compatibility_checker_themes' );
|
117 |
+
|
118 |
+
/**
|
119 |
+
* Keep track of plugins that load libraries before PMPro loads its version.
|
120 |
+
*
|
121 |
+
* @param string $name The name of the library.
|
122 |
+
* @param string $path The path of the loaded library.
|
123 |
+
* @param string $version The version of the loaded library.
|
124 |
+
*
|
125 |
+
* @since 2.8
|
126 |
+
*/
|
127 |
+
function pmpro_track_library_conflict( $name, $path, $version ) {
|
128 |
+
// Ignore when PMPro is trying to load.
|
129 |
+
if ( strpos( $path, '/plugins/paid-memberships-pro/' ) !== false ) {
|
130 |
+
return;
|
131 |
+
}
|
132 |
+
|
133 |
+
// Use a static var for timestamp so we can avoid multiple updates per pageload.
|
134 |
+
static $now = null;
|
135 |
+
if ( empty( $now ) ) {
|
136 |
+
$now = current_time( 'Y-m-d H:i:s' );
|
137 |
+
}
|
138 |
+
|
139 |
+
// Get the current list of library conflicts.
|
140 |
+
$library_conflicts = get_option( 'pmpro_library_conflicts', array() );
|
141 |
+
|
142 |
+
// Make sure we have an entry for this library.
|
143 |
+
if ( ! isset( $library_conflicts[ $name ] ) ) {
|
144 |
+
$library_conflicts[ $name ] = array();
|
145 |
+
}
|
146 |
+
|
147 |
+
// Make sure we have an entry for this path.
|
148 |
+
if ( ! isset( $library_conflicts[ $name ][ $path ] ) ) {
|
149 |
+
$library_conflicts[ $name ][ $path ] = array();
|
150 |
+
}
|
151 |
+
|
152 |
+
// Don't save conflict if no time has passed.
|
153 |
+
if ( ! empty( $library_conflicts[ $name ][ $path ]['timestamp'] ) && $library_conflicts[ $name ][ $path ]['timestamp'] === $now ) {
|
154 |
+
return;
|
155 |
+
}
|
156 |
+
|
157 |
+
// Update the library conflict information.
|
158 |
+
$library_conflicts[ $name ][ $path ]['version'] = $version;
|
159 |
+
$library_conflicts[ $name ][ $path ]['timestamp'] = $now;
|
160 |
+
update_option( 'pmpro_library_conflicts', $library_conflicts, false );
|
161 |
+
}
|
includes/crons.php
ADDED
@@ -0,0 +1,124 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Functionality related to cron operations.
|
4 |
+
*
|
5 |
+
* The crons themselves are located in /scheduled/crons.php and in corresponding Add-Ons.
|
6 |
+
*/
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Get the list of registered crons for Paid Memberships Pro.
|
10 |
+
*
|
11 |
+
* @since 2.8
|
12 |
+
*
|
13 |
+
* @return array The list of registered crons for Paid Memberships Pro.
|
14 |
+
*/
|
15 |
+
function pmpro_get_crons() {
|
16 |
+
$crons = [
|
17 |
+
'pmpro_cron_expire_memberships' => [
|
18 |
+
'interval' => 'hourly',
|
19 |
+
],
|
20 |
+
'pmpro_cron_expiration_warnings' => [
|
21 |
+
'interval' => 'hourly',
|
22 |
+
'timestamp' => current_time( 'timestamp' ) + 1,
|
23 |
+
],
|
24 |
+
'pmpro_cron_credit_card_expiring_warnings' => [
|
25 |
+
'interval' => 'monthly',
|
26 |
+
],
|
27 |
+
'pmpro_cron_admin_activity_email' => [
|
28 |
+
'interval' => 'daily',
|
29 |
+
'timestamp' => strtotime( '10:30:00' ) - ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS ),
|
30 |
+
],
|
31 |
+
'pmpro_license_check_key' => [
|
32 |
+
'interval' => 'monthly',
|
33 |
+
],
|
34 |
+
];
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Allow filtering the list of registered crons for Paid Memberships Pro.
|
38 |
+
*
|
39 |
+
* @since 2.8
|
40 |
+
*
|
41 |
+
* @param array $crons The list of registered crons for Paid Memberships Pro.
|
42 |
+
*/
|
43 |
+
$crons = (array) apply_filters( 'pmpro_registered_crons', $crons );
|
44 |
+
|
45 |
+
// Set up the default information for each cron if not set.
|
46 |
+
foreach ( $crons as $hook => $cron ) {
|
47 |
+
if ( empty( $cron['timestamp'] ) ) {
|
48 |
+
$cron['timestamp'] = current_time( 'timestamp' );
|
49 |
+
}
|
50 |
+
|
51 |
+
if ( empty( $cron['recurrence'] ) ) {
|
52 |
+
$cron['recurrence'] = 'hourly';
|
53 |
+
}
|
54 |
+
|
55 |
+
if ( empty( $cron['args'] ) ) {
|
56 |
+
$cron['args'] = [];
|
57 |
+
}
|
58 |
+
|
59 |
+
$crons[ $hook ] = $cron;
|
60 |
+
}
|
61 |
+
|
62 |
+
return $crons;
|
63 |
+
}
|
64 |
+
|
65 |
+
/**
|
66 |
+
* Maybe schedule our registered crons.
|
67 |
+
*
|
68 |
+
* @since 2.8
|
69 |
+
*/
|
70 |
+
function pmpro_maybe_schedule_crons() {
|
71 |
+
$crons = pmpro_get_crons();
|
72 |
+
|
73 |
+
foreach ( $crons as $hook => $cron ) {
|
74 |
+
pmpro_maybe_schedule_event( $cron['timestamp'], $cron['recurrence'], $hook, $cron['args'] );
|
75 |
+
}
|
76 |
+
}
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Handle rescheduling Paid Memberships Pro crons when checking for ready cron tasks.
|
80 |
+
*
|
81 |
+
* @since 2.8
|
82 |
+
*
|
83 |
+
* @param null|array[] $pre Array of ready cron tasks to return instead. Default null
|
84 |
+
* to continue using results from _get_cron_array().
|
85 |
+
*
|
86 |
+
* @return null|array[] Array of ready cron tasks to return instead. Default null
|
87 |
+
* to continue using results from _get_cron_array().
|
88 |
+
*/
|
89 |
+
function pmpro_handle_schedule_crons_on_cron_ready_check( $pre ) {
|
90 |
+
pmpro_maybe_schedule_crons();
|
91 |
+
|
92 |
+
return $pre;
|
93 |
+
}
|
94 |
+
|
95 |
+
add_filter( 'pre_get_ready_cron_jobs', 'pmpro_handle_schedule_crons_on_cron_ready_check' );
|
96 |
+
|
97 |
+
/**
|
98 |
+
* Schedule a periodic event unless one with the same hook is already scheduled.
|
99 |
+
*
|
100 |
+
* @since 2.8
|
101 |
+
*
|
102 |
+
* @see wp_schedule_event()
|
103 |
+
* @link https://developer.wordpress.org/reference/functions/wp_schedule_event/
|
104 |
+
*
|
105 |
+
* @param int $timestamp Unix timestamp (UTC) for when to next run the event.
|
106 |
+
* @param string $recurrence How often the event should subsequently recur.
|
107 |
+
* See wp_get_schedules() for accepted values.
|
108 |
+
* @param string $hook Action hook to execute when the event is run.
|
109 |
+
* @param array $args Optional. Array containing arguments to pass to the
|
110 |
+
* hook's callback function. Each value in the array
|
111 |
+
* is passed to the callback as an individual parameter.
|
112 |
+
* The array keys are ignored. Default empty array.
|
113 |
+
*
|
114 |
+
* @return bool|WP_Error True when an event is scheduled, WP_Error on failure, and false if the event was already scheduled.
|
115 |
+
*/
|
116 |
+
function pmpro_maybe_schedule_event( $timestamp, $recurrence, $hook, $args = [] ) {
|
117 |
+
$next = wp_next_scheduled( $hook, $args );
|
118 |
+
|
119 |
+
if ( empty( $next ) ) {
|
120 |
+
return wp_schedule_event( $timestamp, $recurrence, $hook, $args, true );
|
121 |
+
}
|
122 |
+
|
123 |
+
return false;
|
124 |
+
}
|
includes/email-templates.php
CHANGED
@@ -498,7 +498,37 @@ $pmpro_email_templates_defaults = array(
|
|
498 |
<p>Log in to your membership account here: !!login_url!!</p>', 'paid-memberships-pro' ),
|
499 |
'help_text' => __( 'This email is sent to the member when the trial portion of their membership level is approaching, at an interval based on the term of the trial.', 'paid-memberships-pro' )
|
500 |
),
|
|
|
|
|
|
|
|
|
501 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
502 |
);
|
503 |
|
504 |
// add SCA payment action required emails if we're using PMPro 2.1 or later
|
498 |
<p>Log in to your membership account here: !!login_url!!</p>', 'paid-memberships-pro' ),
|
499 |
'help_text' => __( 'This email is sent to the member when the trial portion of their membership level is approaching, at an interval based on the term of the trial.', 'paid-memberships-pro' )
|
500 |
),
|
501 |
+
'refund' => array(
|
502 |
+
'subject' => __( 'Your invoice for order #!!invoice_id!! at !!sitename!! has been REFUNDED', 'paid-memberships-pro' ),
|
503 |
+
'description' => __('Refund', 'paid-memberships-pro'),
|
504 |
+
'body' => __( '<p>Your invoice for order #!!invoice_id!! at !!sitename!! has been refunded.</p>
|
505 |
|
506 |
+
<p>Account: !!display_name!! (!!user_email!!)</p>
|
507 |
+
<p>
|
508 |
+
Invoice #!!invoice_id!! on !!invoice_date!!<br />
|
509 |
+
Total Refunded: !!invoice_total!!
|
510 |
+
</p>
|
511 |
+
|
512 |
+
<p>Log in to your membership account here: !!login_url!!</p>
|
513 |
+
<p>To view an online version of this invoice, click here: !!invoice_url!!</p>
|
514 |
+
|
515 |
+
<p>If you did not request this refund and would like more information please contact us at !!siteemail!!</p>', 'paid-memberships-pro' ),
|
516 |
+
'help_text' => __( 'This email is sent to the member as confirmation of a refunded payment. The email is sent after your membership site receives notification of a successful payment refund through your gateway.', 'paid-memberships-pro' )
|
517 |
+
),
|
518 |
+
'refund_admin' => array(
|
519 |
+
'subject' => __( 'Invoice for order #!!invoice_id!! at !!sitename!! has been REFUNDED', 'paid-memberships-pro' ),
|
520 |
+
'description' => __('Refund (admin)', 'paid-memberships-pro'),
|
521 |
+
'body' => __( '<p>The invoice for order #!!invoice_id!! at !!sitename!! has been refunded.</p>
|
522 |
+
|
523 |
+
<p>Account: !!display_name!! (!!user_email!!)</p>
|
524 |
+
<p>
|
525 |
+
Invoice #!!invoice_id!! on !!invoice_date!!<br />
|
526 |
+
Total Refunded: !!invoice_total!!
|
527 |
+
</p>
|
528 |
+
|
529 |
+
<p>Log in to your WordPress admin here: !!login_url!!</p>', 'paid-memberships-pro' ),
|
530 |
+
'help_text' => __( 'This email is sent to the admin as confirmation of a refunded payment. The email is sent after your membership site receives notification of a successful payment refund through your gateway.', 'paid-memberships-pro' )
|
531 |
+
),
|
532 |
);
|
533 |
|
534 |
// add SCA payment action required emails if we're using PMPro 2.1 or later
|
includes/functions.php
CHANGED
@@ -48,7 +48,9 @@ function pmpro_is_plugin_active( $plugin ) {
|
|
48 |
return in_array( $plugin, (array) get_option( 'active_plugins', array() ) );
|
49 |
}
|
50 |
|
51 |
-
|
|
|
|
|
52 |
function pmpro_getMatches( $p, $s, $firstvalue = false, $n = 1 ) {
|
53 |
$ok = preg_match_all( $p, $s, $matches );
|
54 |
|
@@ -180,7 +182,9 @@ function pmpro_isLevelFree( &$level ) {
|
|
180 |
return $r;
|
181 |
}
|
182 |
|
183 |
-
|
|
|
|
|
184 |
function pmpro_areLevelsFree( $levelarr ) {
|
185 |
if ( ! is_array( $levelarr ) ) {
|
186 |
return false; }
|
@@ -472,7 +476,9 @@ function pmpro_getLevelCost( &$level, $tags = true, $short = false ) {
|
|
472 |
return $r;
|
473 |
}
|
474 |
|
475 |
-
|
|
|
|
|
476 |
function pmpro_getLevelsCost( &$levels, $tags = true, $short = false ) {
|
477 |
// let's build the array to work from to consolidate recurring info.
|
478 |
// recurpmts[cycle_period][cycle_number][billing_limit] = total_amount
|
@@ -962,6 +968,7 @@ function pmpro_cancelMembershipLevel( $cancel_level, $user_id = null, $old_level
|
|
962 |
* @param string $old_level_status The status to set for the row in the memberships users table. (e.g. inactive, cancelled, admin_cancelled, expired) Defaults to 'inactive'.
|
963 |
* @param int $cancel_level If set cancel just this one level instead of all active levels (to support Multiple Memberships per User)
|
964 |
*
|
|
|
965 |
* Return values:
|
966 |
* Success returns boolean true.
|
967 |
* Failure returns boolean false.
|
@@ -1314,13 +1321,14 @@ function pmpro_listCategories( $parent_id = 0, $level_categories = array() ) {
|
|
1314 |
}
|
1315 |
}
|
1316 |
|
1317 |
-
|
1318 |
-
pmpro_toggleMembershipCategory() creates or deletes a linking entry between the membership level and post category tables.
|
1319 |
*
|
1320 |
* @param $level may either be the ID or name of the desired membership_level.
|
1321 |
* @param $category must be a valid post category ID.
|
1322 |
* @param $value
|
1323 |
*
|
|
|
1324 |
* Return values:
|
1325 |
* Success returns boolean true.
|
1326 |
* Failure returns a string containing the error message.
|
@@ -1353,17 +1361,18 @@ function pmpro_toggleMembershipCategory( $level, $category, $value ) {
|
|
1353 |
return true;
|
1354 |
}
|
1355 |
|
1356 |
-
|
1357 |
-
pmpro_updateMembershipCategories() ensures that all those and only those categories given
|
1358 |
-
* are associated with the given membership level.
|
1359 |
-
*
|
1360 |
-
* @param $level is a valid membership level ID or name
|
1361 |
-
* @param $categories is an array of post category IDs
|
1362 |
-
*
|
1363 |
-
*
|
1364 |
-
*
|
1365 |
-
*
|
1366 |
-
|
|
|
1367 |
function pmpro_updateMembershipCategories( $level, $categories ) {
|
1368 |
global $wpdb;
|
1369 |
|
@@ -1393,15 +1402,16 @@ function pmpro_updateMembershipCategories( $level, $categories ) {
|
|
1393 |
return true;
|
1394 |
}
|
1395 |
|
1396 |
-
|
1397 |
-
pmpro_getMembershipCategories() returns the categories for a given level
|
1398 |
-
*
|
1399 |
-
* @param $level_id is a valid membership level ID
|
1400 |
-
*
|
1401 |
-
*
|
1402 |
-
*
|
1403 |
-
*
|
1404 |
-
|
|
|
1405 |
function pmpro_getMembershipCategories( $level_id ) {
|
1406 |
$level_id = intval( $level_id );
|
1407 |
|
@@ -1500,7 +1510,7 @@ function pmpro_getPaginationString( $page = 1, $totalitems = 0, $limit = 15, $ad
|
|
1500 |
*/
|
1501 |
$pagination = '';
|
1502 |
if ( $lastpage > 1 ) {
|
1503 |
-
$pagination .= '<
|
1504 |
if ( ! empty( $margin ) || ! empty( $padding ) ) {
|
1505 |
$pagination .= ' style="';
|
1506 |
if ( $margin ) {
|
@@ -1578,7 +1588,7 @@ function pmpro_getPaginationString( $page = 1, $totalitems = 0, $limit = 15, $ad
|
|
1578 |
} else {
|
1579 |
$pagination .= '<span class="disabled">next »</span>';
|
1580 |
}
|
1581 |
-
$pagination .= "</
|
1582 |
}
|
1583 |
|
1584 |
return $pagination;
|
@@ -1721,7 +1731,9 @@ function pmpro_generateUsername( $firstname = '', $lastname = '', $email = '' )
|
|
1721 |
return $username;
|
1722 |
}
|
1723 |
|
1724 |
-
|
|
|
|
|
1725 |
function pmpro_getDiscountCode( $seed = null ) {
|
1726 |
global $wpdb;
|
1727 |
|
@@ -1741,7 +1753,9 @@ function pmpro_getDiscountCode( $seed = null ) {
|
|
1741 |
return strtoupper( $code );
|
1742 |
}
|
1743 |
|
1744 |
-
|
|
|
|
|
1745 |
function pmpro_checkDiscountCode( $code, $level_id = null, $return_errors = false ) {
|
1746 |
global $wpdb;
|
1747 |
|
@@ -1858,7 +1872,9 @@ function pmpro_no_quotes( $s, $quotes = array( "'", '"' ) ) {
|
|
1858 |
return str_replace( $quotes, '', $s );
|
1859 |
}
|
1860 |
|
1861 |
-
|
|
|
|
|
1862 |
function pmpro_implodeToEnglish( $array, $conjunction = 'and' ) {
|
1863 |
// sanity check
|
1864 |
if ( ! $array || ! count( $array ) ) {
|
@@ -1933,7 +1949,9 @@ function pmpro_get_no_access_message( $content, $level_ids, $level_names = NULL
|
|
1933 |
$level_names = array();
|
1934 |
foreach ( $level_ids as $key => $id ) {
|
1935 |
$level_obj = pmpro_getLevel( $id );
|
1936 |
-
|
|
|
|
|
1937 |
}
|
1938 |
}
|
1939 |
|
@@ -1972,11 +1990,12 @@ function pmpro_get_no_access_message( $content, $level_ids, $level_names = NULL
|
|
1972 |
return $content;
|
1973 |
}
|
1974 |
|
1975 |
-
|
1976 |
-
pmpro_getMembershipLevelForUser() returns the first active membership level for a user
|
1977 |
*
|
1978 |
* If $user_id is omitted, the value will be retrieved from $current_user.
|
1979 |
*
|
|
|
1980 |
* Return values:
|
1981 |
* Success returns the level object.
|
1982 |
* Failure returns false.
|
@@ -2060,12 +2079,13 @@ function pmpro_getMembershipLevelForUser( $user_id = null, $force = false ) {
|
|
2060 |
}
|
2061 |
}
|
2062 |
|
2063 |
-
|
2064 |
-
pmpro_getMembershipLevelsForUser() returns the membership levels for a user
|
2065 |
*
|
2066 |
* If $user_id is omitted, the value will be retrieved from $current_user.
|
2067 |
* By default it only includes actvie memberships.
|
2068 |
*
|
|
|
2069 |
* Return values:
|
2070 |
* Success returns an array of level objects.
|
2071 |
* Failure returns false.
|
@@ -2154,12 +2174,13 @@ function pmpro_getMembershipLevelsForUser( $user_id = null, $include_inactive =
|
|
2154 |
*
|
2155 |
* If $user_id is null, the value will be retrieved from $current_user.
|
2156 |
*
|
|
|
|
|
|
|
|
|
2157 |
* Return values:
|
2158 |
* Success returns the level object.
|
2159 |
* Failure returns false.
|
2160 |
-
*
|
2161 |
-
* @param int $user_id User ID to check for
|
2162 |
-
* @param int $level_id Level ID to check for.
|
2163 |
*/
|
2164 |
function pmpro_getSpecificMembershipLevelForUser( $user_id, $level_id ) {
|
2165 |
if ( empty( $user_id ) ) {
|
@@ -2182,11 +2203,12 @@ function pmpro_getSpecificMembershipLevelForUser( $user_id, $level_id ) {
|
|
2182 |
return false;
|
2183 |
}
|
2184 |
|
2185 |
-
|
2186 |
-
pmpro_getLevel() returns the level object for a level
|
2187 |
*
|
2188 |
* @param $level may be the level id or name
|
2189 |
*
|
|
|
2190 |
* Return values:
|
2191 |
* Success returns the level object.
|
2192 |
* Failure returns false.
|
@@ -2230,13 +2252,13 @@ function pmpro_getLevel( $level ) {
|
|
2230 |
return $pmpro_levels[ $level_id ];
|
2231 |
}
|
2232 |
|
2233 |
-
|
2234 |
-
|
2235 |
-
|
2236 |
-
|
2237 |
-
|
2238 |
-
|
2239 |
-
*/
|
2240 |
function pmpro_getAllLevels( $include_hidden = false, $use_cache = false, $force = false ) {
|
2241 |
global $pmpro_levels, $wpdb;
|
2242 |
|
@@ -2356,7 +2378,7 @@ function pmpro_getLevelAtCheckout( $level_id = null, $discount_code = null ) {
|
|
2356 |
|
2357 |
// what level are they purchasing? (discount code passed)
|
2358 |
if ( ! empty( $level_id ) && ! empty( $discount_code ) ) {
|
2359 |
-
$discount_code_id = $wpdb->get_var( "SELECT id FROM $wpdb->pmpro_discount_codes WHERE code = '" . esc_sql( $discount_code ) . "' LIMIT 1" );
|
2360 |
|
2361 |
// check code
|
2362 |
global $pmpro_checkout_level_ids; // Set by MMPU.
|
@@ -2511,10 +2533,10 @@ function pmpro_getDomainFromURL( $url = null ) {
|
|
2511 |
return $domain;
|
2512 |
}
|
2513 |
|
2514 |
-
/*
|
2515 |
-
Get a member's start date... either in general or for a specific level_id.
|
2516 |
-
*/
|
2517 |
if ( ! function_exists( 'pmpro_getMemberStartdate' ) ) {
|
|
|
|
|
|
|
2518 |
function pmpro_getMemberStartdate( $user_id = null, $level_id = 0 ) {
|
2519 |
if ( empty( $user_id ) ) {
|
2520 |
global $current_user;
|
@@ -2544,10 +2566,10 @@ if ( ! function_exists( 'pmpro_getMemberStartdate' ) ) {
|
|
2544 |
}
|
2545 |
}
|
2546 |
|
2547 |
-
/*
|
2548 |
-
How long has this member been a member
|
2549 |
-
*/
|
2550 |
if ( ! function_exists( 'pmpro_getMemberDays' ) ) {
|
|
|
|
|
|
|
2551 |
function pmpro_getMemberDays( $user_id = null, $level_id = 0 ) {
|
2552 |
if ( empty( $user_id ) ) {
|
2553 |
global $current_user;
|
@@ -2680,7 +2702,9 @@ function pmpro_get_field_class( $class, $element ) {
|
|
2680 |
}
|
2681 |
add_filter( 'pmpro_element_class', 'pmpro_get_field_class', 10, 2 );
|
2682 |
|
2683 |
-
|
|
|
|
|
2684 |
function pmpro_getParam( $index, $method = 'REQUEST', $default = '', $sanitize_function = 'sanitize_text_field' ) {
|
2685 |
if ( $method == 'REQUEST' ) {
|
2686 |
if ( ! empty( $_REQUEST[ $index ] ) ) {
|
@@ -2699,9 +2723,9 @@ function pmpro_getParam( $index, $method = 'REQUEST', $default = '', $sanitize_f
|
|
2699 |
return $default;
|
2700 |
}
|
2701 |
|
2702 |
-
|
2703 |
-
|
2704 |
-
*/
|
2705 |
function pmpro_formatAddress( $name, $address1, $address2, $city, $state, $zip, $country, $phone, $nl2br = true ) {
|
2706 |
$address = '';
|
2707 |
|
@@ -2742,9 +2766,9 @@ function pmpro_formatAddress( $name, $address1, $address2, $city, $state, $zip,
|
|
2742 |
return apply_filters( 'pmpro_formatted_address', $address, $name, $address1, $address2, $city, $state, $zip, $country, $phone, $nl2br );
|
2743 |
}
|
2744 |
|
2745 |
-
|
2746 |
-
|
2747 |
-
*/
|
2748 |
function pmpro_is_ready() {
|
2749 |
global $wpdb, $pmpro_pages, $pmpro_level_ready, $pmpro_gateway_ready, $pmpro_pages_ready;
|
2750 |
|
@@ -3092,7 +3116,7 @@ function pmpro_getCurrencyPosition() {
|
|
3092 |
* Rounds price based on currency
|
3093 |
* Does not format price, to do that, call pmpro_formatPrice().
|
3094 |
*
|
3095 |
-
* @param string
|
3096 |
* @param string $currency to round price into.
|
3097 |
*/
|
3098 |
function pmpro_round_price( $price, $currency = '' ) {
|
@@ -3119,6 +3143,97 @@ function pmpro_round_price( $price, $currency = '' ) {
|
|
3119 |
return $rounded;
|
3120 |
}
|
3121 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3122 |
/**
|
3123 |
* Cast to floats and pad zeroes after the decimal
|
3124 |
* when editing the price on the edit level page.
|
@@ -3163,7 +3278,7 @@ function pmpro_filter_price_for_text_field( $price, $currency = null ) {
|
|
3163 |
return $price;
|
3164 |
}
|
3165 |
|
3166 |
-
|
3167 |
* What gateway should we be using?
|
3168 |
*
|
3169 |
* @since 1.8
|
@@ -3201,7 +3316,7 @@ function pmpro_getGateway() {
|
|
3201 |
* Used in logins/visits/views report.
|
3202 |
*
|
3203 |
* @since 1.8.3
|
3204 |
-
* @param
|
3205 |
*/
|
3206 |
function pmpro_isDateThisMonth( $str ) {
|
3207 |
$now = current_time( 'timestamp' );
|
@@ -3223,7 +3338,7 @@ function pmpro_isDateThisMonth( $str ) {
|
|
3223 |
* Does the date provided fall within the current week?
|
3224 |
* Merged in from the Better Logins Report Add On.
|
3225 |
* @since 2.0
|
3226 |
-
* @param
|
3227 |
*/
|
3228 |
function pmpro_isDateThisWeek( $str ) {
|
3229 |
$now = current_time( 'timestamp' );
|
@@ -3243,7 +3358,7 @@ function pmpro_isDateThisWeek( $str ) {
|
|
3243 |
* Does the dave provided fall within the current year?
|
3244 |
* Merged in from the Better Logins Report Add On.
|
3245 |
* @since 2.0
|
3246 |
-
* @param
|
3247 |
*/
|
3248 |
function pmpro_isDateThisYear( $str ) {
|
3249 |
$now = current_time( 'timestamp' );
|
@@ -3324,25 +3439,6 @@ function pmpro_generatePages( $pages ) {
|
|
3324 |
return $pages_created;
|
3325 |
}
|
3326 |
|
3327 |
-
/**
|
3328 |
-
* Schedule a periodic event unless one with the same hook is already scheduled.
|
3329 |
-
*
|
3330 |
-
* @param int $timestamp Timestamp for when to run the event.
|
3331 |
-
* @param string $recurrence How often the event should recur.
|
3332 |
-
* @param string $hook Action hook to execute when cron is run.
|
3333 |
-
* @param array $args Optional. Arguments to pass to the hook's callback function.
|
3334 |
-
* @return false|void False when an event is not scheduled.
|
3335 |
-
* @since 1.8.7.3
|
3336 |
-
*/
|
3337 |
-
function pmpro_maybe_schedule_event( $timestamp, $recurrence, $hook, $args = array() ) {
|
3338 |
-
$next = wp_next_scheduled( $hook, $args );
|
3339 |
-
if ( empty( $next ) ) {
|
3340 |
-
return wp_schedule_event( $timestamp, $recurrence, $hook, $args );
|
3341 |
-
} else {
|
3342 |
-
return false;
|
3343 |
-
}
|
3344 |
-
}
|
3345 |
-
|
3346 |
/**
|
3347 |
* Get an array of orders for a specific checkout ID
|
3348 |
*
|
@@ -3611,7 +3707,7 @@ function pmpro_check_plugin_version( $plugin_file, $comparison, $version ) {
|
|
3611 |
return false;
|
3612 |
}
|
3613 |
|
3614 |
-
// Get plugin data.
|
3615 |
$full_plugin_file_path = WP_PLUGIN_DIR . '/' . $plugin_file;
|
3616 |
if ( is_file( $full_plugin_file_path ) ) {
|
3617 |
$plugin_data = get_plugin_data( $full_plugin_file_path, false, true );
|
@@ -3723,16 +3819,16 @@ function pmpro_doing_webhook( $gateway = null, $set = false ){
|
|
3723 |
|
3724 |
/**
|
3725 |
* Called once a webhook has been run but was not handled.
|
3726 |
-
*
|
3727 |
* @return void
|
3728 |
*
|
3729 |
-
* @since
|
3730 |
*/
|
3731 |
function pmpro_unhandled_webhook(){
|
3732 |
/**
|
3733 |
* Allow hooking into after a webhook has been run but was not handled.
|
3734 |
*
|
3735 |
-
* @since
|
3736 |
*
|
3737 |
* @param string $gateway The gateway the webhook was not handled for.
|
3738 |
*/
|
@@ -3905,7 +4001,7 @@ function pmpro_send_200_http_response() {
|
|
3905 |
flush();
|
3906 |
}
|
3907 |
|
3908 |
-
/**
|
3909 |
* Returns formatted ISO-8601 date (Used for Zapier Native app.)
|
3910 |
* @since 2.6.6
|
3911 |
* @param $date date A valid date value.
|
@@ -3979,23 +4075,116 @@ function pmpro_get_ip() {
|
|
3979 |
if ( ! $client_ip ) {
|
3980 |
return false;
|
3981 |
}
|
3982 |
-
|
3983 |
// Sanitize the IP
|
3984 |
$client_ip = preg_replace( '/[^0-9a-fA-F:., ]/', '', $client_ip );
|
3985 |
-
|
3986 |
return $client_ip;
|
3987 |
}
|
3988 |
|
3989 |
/**
|
3990 |
-
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3991 |
* NOTE: includes/email.php has code to check for the related setting and
|
3992 |
* filters on the pmpro_wp_new_user_notification hook.
|
3993 |
* @since 2.7.4
|
3994 |
* @param int $user_id ID of the user to send the email for.
|
3995 |
* @param int $level_id Level ID the user just got. (Need to send to filter.)
|
3996 |
*/
|
3997 |
-
function pmpro_maybe_send_wp_new_user_notification( $user_id, $level_id = null ) {
|
3998 |
-
if ( apply_filters( 'pmpro_wp_new_user_notification', true, $user_id, $level_id ) ) {
|
3999 |
wp_new_user_notification( $user_id, null, 'both' );
|
4000 |
}
|
|
|
4001 |
}
|
48 |
return in_array( $plugin, (array) get_option( 'active_plugins', array() ) );
|
49 |
}
|
50 |
|
51 |
+
/**
|
52 |
+
* @param int $n Override if you have more than 1 group of matches and don't want the first group.
|
53 |
+
*/
|
54 |
function pmpro_getMatches( $p, $s, $firstvalue = false, $n = 1 ) {
|
55 |
$ok = preg_match_all( $p, $s, $matches );
|
56 |
|
182 |
return $r;
|
183 |
}
|
184 |
|
185 |
+
/**
|
186 |
+
* Given an array of levels, will return true if all of them are free.
|
187 |
+
*/
|
188 |
function pmpro_areLevelsFree( $levelarr ) {
|
189 |
if ( ! is_array( $levelarr ) ) {
|
190 |
return false; }
|
476 |
return $r;
|
477 |
}
|
478 |
|
479 |
+
/**
|
480 |
+
* Similar to pmpro_getLevelCost, but loops through all levels in the incoming array and puts it all together.
|
481 |
+
*/
|
482 |
function pmpro_getLevelsCost( &$levels, $tags = true, $short = false ) {
|
483 |
// let's build the array to work from to consolidate recurring info.
|
484 |
// recurpmts[cycle_period][cycle_number][billing_limit] = total_amount
|
968 |
* @param string $old_level_status The status to set for the row in the memberships users table. (e.g. inactive, cancelled, admin_cancelled, expired) Defaults to 'inactive'.
|
969 |
* @param int $cancel_level If set cancel just this one level instead of all active levels (to support Multiple Memberships per User)
|
970 |
*
|
971 |
+
* @return bool|null
|
972 |
* Return values:
|
973 |
* Success returns boolean true.
|
974 |
* Failure returns boolean false.
|
1321 |
}
|
1322 |
}
|
1323 |
|
1324 |
+
/**
|
1325 |
+
* pmpro_toggleMembershipCategory() creates or deletes a linking entry between the membership level and post category tables.
|
1326 |
*
|
1327 |
* @param $level may either be the ID or name of the desired membership_level.
|
1328 |
* @param $category must be a valid post category ID.
|
1329 |
* @param $value
|
1330 |
*
|
1331 |
+
* @return string|true
|
1332 |
* Return values:
|
1333 |
* Success returns boolean true.
|
1334 |
* Failure returns a string containing the error message.
|
1361 |
return true;
|
1362 |
}
|
1363 |
|
1364 |
+
/**
|
1365 |
+
* pmpro_updateMembershipCategories() ensures that all those and only those categories given
|
1366 |
+
* are associated with the given membership level.
|
1367 |
+
*
|
1368 |
+
* @param $level is a valid membership level ID or name
|
1369 |
+
* @param $categories is an array of post category IDs
|
1370 |
+
*
|
1371 |
+
* @return string|true
|
1372 |
+
* Return values:
|
1373 |
+
* Success returns boolean true.
|
1374 |
+
* Failure returns a string containing the error message.
|
1375 |
+
*/
|
1376 |
function pmpro_updateMembershipCategories( $level, $categories ) {
|
1377 |
global $wpdb;
|
1378 |
|
1402 |
return true;
|
1403 |
}
|
1404 |
|
1405 |
+
/**
|
1406 |
+
* pmpro_getMembershipCategories() returns the categories for a given level
|
1407 |
+
*
|
1408 |
+
* @param $level_id is a valid membership level ID
|
1409 |
+
*
|
1410 |
+
* @return bool
|
1411 |
+
* Return values:
|
1412 |
+
* Success returns boolean true.
|
1413 |
+
* Failure returns boolean false.
|
1414 |
+
*/
|
1415 |
function pmpro_getMembershipCategories( $level_id ) {
|
1416 |
$level_id = intval( $level_id );
|
1417 |
|
1510 |
*/
|
1511 |
$pagination = '';
|
1512 |
if ( $lastpage > 1 ) {
|
1513 |
+
$pagination .= '<span class="pmpro_pagination"';
|
1514 |
if ( ! empty( $margin ) || ! empty( $padding ) ) {
|
1515 |
$pagination .= ' style="';
|
1516 |
if ( $margin ) {
|
1588 |
} else {
|
1589 |
$pagination .= '<span class="disabled">next »</span>';
|
1590 |
}
|
1591 |
+
$pagination .= "</span>\n";
|
1592 |
}
|
1593 |
|
1594 |
return $pagination;
|
1731 |
return $username;
|
1732 |
}
|
1733 |
|
1734 |
+
/**
|
1735 |
+
* Get a new random code for discount codes.
|
1736 |
+
*/
|
1737 |
function pmpro_getDiscountCode( $seed = null ) {
|
1738 |
global $wpdb;
|
1739 |
|
1753 |
return strtoupper( $code );
|
1754 |
}
|
1755 |
|
1756 |
+
/**
|
1757 |
+
* Is a discount code valid - $level_id could be a scalar or an array (or unset)
|
1758 |
+
*/
|
1759 |
function pmpro_checkDiscountCode( $code, $level_id = null, $return_errors = false ) {
|
1760 |
global $wpdb;
|
1761 |
|
1872 |
return str_replace( $quotes, '', $s );
|
1873 |
}
|
1874 |
|
1875 |
+
/**
|
1876 |
+
* From: http://www.php.net/manual/en/function.implode.php#86845
|
1877 |
+
*/
|
1878 |
function pmpro_implodeToEnglish( $array, $conjunction = 'and' ) {
|
1879 |
// sanity check
|
1880 |
if ( ! $array || ! count( $array ) ) {
|
1949 |
$level_names = array();
|
1950 |
foreach ( $level_ids as $key => $id ) {
|
1951 |
$level_obj = pmpro_getLevel( $id );
|
1952 |
+
if ( ! empty( $level_obj ) ) {
|
1953 |
+
$level_names[] = $level_obj->name;
|
1954 |
+
}
|
1955 |
}
|
1956 |
}
|
1957 |
|
1990 |
return $content;
|
1991 |
}
|
1992 |
|
1993 |
+
/**
|
1994 |
+
* pmpro_getMembershipLevelForUser() returns the first active membership level for a user
|
1995 |
*
|
1996 |
* If $user_id is omitted, the value will be retrieved from $current_user.
|
1997 |
*
|
1998 |
+
* @return false|object
|
1999 |
* Return values:
|
2000 |
* Success returns the level object.
|
2001 |
* Failure returns false.
|
2079 |
}
|
2080 |
}
|
2081 |
|
2082 |
+
/**
|
2083 |
+
* pmpro_getMembershipLevelsForUser() returns the membership levels for a user
|
2084 |
*
|
2085 |
* If $user_id is omitted, the value will be retrieved from $current_user.
|
2086 |
* By default it only includes actvie memberships.
|
2087 |
*
|
2088 |
+
* @return array|false
|
2089 |
* Return values:
|
2090 |
* Success returns an array of level objects.
|
2091 |
* Failure returns false.
|
2174 |
*
|
2175 |
* If $user_id is null, the value will be retrieved from $current_user.
|
2176 |
*
|
2177 |
+
* @param int $user_id User ID to check for
|
2178 |
+
* @param int $level_id Level ID to check for.
|
2179 |
+
*
|
2180 |
+
* @return false|object
|
2181 |
* Return values:
|
2182 |
* Success returns the level object.
|
2183 |
* Failure returns false.
|
|
|
|
|
|
|
2184 |
*/
|
2185 |
function pmpro_getSpecificMembershipLevelForUser( $user_id, $level_id ) {
|
2186 |
if ( empty( $user_id ) ) {
|
2203 |
return false;
|
2204 |
}
|
2205 |
|
2206 |
+
/**
|
2207 |
+
* pmpro_getLevel() returns the level object for a level
|
2208 |
*
|
2209 |
* @param $level may be the level id or name
|
2210 |
*
|
2211 |
+
* @return false|object
|
2212 |
* Return values:
|
2213 |
* Success returns the level object.
|
2214 |
* Failure returns false.
|
2252 |
return $pmpro_levels[ $level_id ];
|
2253 |
}
|
2254 |
|
2255 |
+
/**
|
2256 |
+
* Get all PMPro membership levels.
|
2257 |
+
*
|
2258 |
+
* @param bool $include_hidden Include levels marked as hidden/inactive.
|
2259 |
+
* @param bool $use_cache If false, use $pmpro_levels global. If true use other caches.
|
2260 |
+
* @param bool $force Resets the static var caches as well.
|
2261 |
+
*/
|
2262 |
function pmpro_getAllLevels( $include_hidden = false, $use_cache = false, $force = false ) {
|
2263 |
global $pmpro_levels, $wpdb;
|
2264 |
|
2378 |
|
2379 |
// what level are they purchasing? (discount code passed)
|
2380 |
if ( ! empty( $level_id ) && ! empty( $discount_code ) ) {
|
2381 |
+
$discount_code_id = $wpdb->get_var( "SELECT id FROM $wpdb->pmpro_discount_codes WHERE code = '" . esc_sql( $discount_code ) . "' LIMIT 1" );
|
2382 |
|
2383 |
// check code
|
2384 |
global $pmpro_checkout_level_ids; // Set by MMPU.
|
2533 |
return $domain;
|
2534 |
}
|
2535 |
|
|
|
|
|
|
|
2536 |
if ( ! function_exists( 'pmpro_getMemberStartdate' ) ) {
|
2537 |
+
/**
|
2538 |
+
* Get a member's start date... either in general or for a specific level_id.
|
2539 |
+
*/
|
2540 |
function pmpro_getMemberStartdate( $user_id = null, $level_id = 0 ) {
|
2541 |
if ( empty( $user_id ) ) {
|
2542 |
global $current_user;
|
2566 |
}
|
2567 |
}
|
2568 |
|
|
|
|
|
|
|
2569 |
if ( ! function_exists( 'pmpro_getMemberDays' ) ) {
|
2570 |
+
/**
|
2571 |
+
* How long has this member been a member.
|
2572 |
+
*/
|
2573 |
function pmpro_getMemberDays( $user_id = null, $level_id = 0 ) {
|
2574 |
if ( empty( $user_id ) ) {
|
2575 |
global $current_user;
|
2702 |
}
|
2703 |
add_filter( 'pmpro_element_class', 'pmpro_get_field_class', 10, 2 );
|
2704 |
|
2705 |
+
/**
|
2706 |
+
* Get a var from $_GET or $_POST.
|
2707 |
+
*/
|
2708 |
function pmpro_getParam( $index, $method = 'REQUEST', $default = '', $sanitize_function = 'sanitize_text_field' ) {
|
2709 |
if ( $method == 'REQUEST' ) {
|
2710 |
if ( ! empty( $_REQUEST[ $index ] ) ) {
|
2723 |
return $default;
|
2724 |
}
|
2725 |
|
2726 |
+
/**
|
2727 |
+
* Format an address from address, city, state, zip, country, and phone.
|
2728 |
+
*/
|
2729 |
function pmpro_formatAddress( $name, $address1, $address2, $city, $state, $zip, $country, $phone, $nl2br = true ) {
|
2730 |
$address = '';
|
2731 |
|
2766 |
return apply_filters( 'pmpro_formatted_address', $address, $name, $address1, $address2, $city, $state, $zip, $country, $phone, $nl2br );
|
2767 |
}
|
2768 |
|
2769 |
+
/**
|
2770 |
+
* Checks if all required settings are set.
|
2771 |
+
*/
|
2772 |
function pmpro_is_ready() {
|
2773 |
global $wpdb, $pmpro_pages, $pmpro_level_ready, $pmpro_gateway_ready, $pmpro_pages_ready;
|
2774 |
|
3116 |
* Rounds price based on currency
|
3117 |
* Does not format price, to do that, call pmpro_formatPrice().
|
3118 |
*
|
3119 |
+
* @param string|float $price to round.
|
3120 |
* @param string $currency to round price into.
|
3121 |
*/
|
3122 |
function pmpro_round_price( $price, $currency = '' ) {
|
3143 |
return $rounded;
|
3144 |
}
|
3145 |
|
3146 |
+
/**
|
3147 |
+
* Rounds price based on currency and returns a string.
|
3148 |
+
*
|
3149 |
+
* Does not format price, to do that, call pmpro_formatPrice().
|
3150 |
+
*
|
3151 |
+
* @since 2.8
|
3152 |
+
*
|
3153 |
+
* @param int|float|string $amount The amount to get price information for.
|
3154 |
+
* @param null|string $currency The currency to use, defaults to current currency.
|
3155 |
+
*
|
3156 |
+
* @return string The rounded price as a string.
|
3157 |
+
*/
|
3158 |
+
function pmpro_round_price_as_string( $amount, $currency = null ) {
|
3159 |
+
$price_info = pmpro_get_price_info( $amount, $currency );
|
3160 |
+
|
3161 |
+
if ( ! $price_info ) {
|
3162 |
+
return (string) pmpro_round_price( $amount, $currency );
|
3163 |
+
}
|
3164 |
+
|
3165 |
+
return $price_info['amount_string'];
|
3166 |
+
}
|
3167 |
+
|
3168 |
+
/**
|
3169 |
+
* Get the price information about the provided amount.
|
3170 |
+
*
|
3171 |
+
* @since 2.8
|
3172 |
+
*
|
3173 |
+
* @param int|float|string $amount The amount to get price information for.
|
3174 |
+
* @param null|string $currency The currency to use, defaults to current currency.
|
3175 |
+
*
|
3176 |
+
* @return array The price information about the provided amount.
|
3177 |
+
*/
|
3178 |
+
function pmpro_get_price_info( $amount, $currency = null ) {
|
3179 |
+
if ( ! is_numeric( $amount ) ) {
|
3180 |
+
return false;
|
3181 |
+
}
|
3182 |
+
|
3183 |
+
$amount = (float) $amount;
|
3184 |
+
|
3185 |
+
$currency_info = pmpro_get_currency( $currency );
|
3186 |
+
|
3187 |
+
$price_info = [
|
3188 |
+
// The amount represented as a float.
|
3189 |
+
'amount' => $amount,
|
3190 |
+
// The flat amount represent (example: 1.99 would be 199).
|
3191 |
+
'amount_flat' => 0,
|
3192 |
+
// The amount as a string.
|
3193 |
+
'amount_string' => '',
|
3194 |
+
'parts' => [
|
3195 |
+
// The whole number part of the amount (example: 1.99 would be 1).
|
3196 |
+
'number' => (int) $amount,
|
3197 |
+
// The decimal part of the amount (example: 1.99 would be 99, 1.00 would be 0).
|
3198 |
+
'decimal' => 0,
|
3199 |
+
// The decimal part of the amount as a string (example: 1.99 would be 99, 1.00 would be 00).
|
3200 |
+
'decimal_string' => '',
|
3201 |
+
],
|
3202 |
+
// The currency information.
|
3203 |
+
'currency' => $currency_info,
|
3204 |
+
];
|
3205 |
+
|
3206 |
+
// Enforce integer.
|
3207 |
+
$currency_info['decimals'] = (int) $currency_info['decimals'];
|
3208 |
+
|
3209 |
+
$multiplier = 1;
|
3210 |
+
|
3211 |
+
if ( 0 < $currency_info['decimals'] ) {
|
3212 |
+
$multiplier = pow( 10, $currency_info['decimals'] );
|
3213 |
+
}
|
3214 |
+
|
3215 |
+
// Convert the amount from 100.99 to 10099.
|
3216 |
+
$price_info['amount_flat'] = $amount * $multiplier;
|
3217 |
+
|
3218 |
+
// If there were additional unsupported decimal points, round to remove and convert to integer.
|
3219 |
+
$price_info['amount_flat'] = round( $price_info['amount_flat'] );
|
3220 |
+
|
3221 |
+
// Get the decimal part of the amount as a whole number.
|
3222 |
+
$price_info['parts']['decimal'] = (
|
3223 |
+
$price_info['amount_flat'] - (
|
3224 |
+
$price_info['parts']['number'] * $multiplier
|
3225 |
+
)
|
3226 |
+
);
|
3227 |
+
|
3228 |
+
// Get the zero-padded decimal amount.
|
3229 |
+
$price_info['parts']['decimal_string'] = sprintf( '%02d', $price_info['parts']['decimal'] );
|
3230 |
+
|
3231 |
+
// Get the amount as a string.
|
3232 |
+
$price_info['amount_string'] = sprintf( '%s.%s', $price_info['parts']['number'], $price_info['parts']['decimal_string'] );
|
3233 |
+
|
3234 |
+
return $price_info;
|
3235 |
+
}
|
3236 |
+
|
3237 |
/**
|
3238 |
* Cast to floats and pad zeroes after the decimal
|
3239 |
* when editing the price on the edit level page.
|
3278 |
return $price;
|
3279 |
}
|
3280 |
|
3281 |
+
/**
|
3282 |
* What gateway should we be using?
|
3283 |
*
|
3284 |
* @since 1.8
|
3316 |
* Used in logins/visits/views report.
|
3317 |
*
|
3318 |
* @since 1.8.3
|
3319 |
+
* @param string $str Date to check. Will be passed through strtotime().
|
3320 |
*/
|
3321 |
function pmpro_isDateThisMonth( $str ) {
|
3322 |
$now = current_time( 'timestamp' );
|
3338 |
* Does the date provided fall within the current week?
|
3339 |
* Merged in from the Better Logins Report Add On.
|
3340 |
* @since 2.0
|
3341 |
+
* @param string $str Date to check. Will be passed through strtotime().
|
3342 |
*/
|
3343 |
function pmpro_isDateThisWeek( $str ) {
|
3344 |
$now = current_time( 'timestamp' );
|
3358 |
* Does the dave provided fall within the current year?
|
3359 |
* Merged in from the Better Logins Report Add On.
|
3360 |
* @since 2.0
|
3361 |
+
* @param string $str Date to check. Will be passed through strtotime().
|
3362 |
*/
|
3363 |
function pmpro_isDateThisYear( $str ) {
|
3364 |
$now = current_time( 'timestamp' );
|
3439 |
return $pages_created;
|
3440 |
}
|
3441 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3442 |
/**
|
3443 |
* Get an array of orders for a specific checkout ID
|
3444 |
*
|
3707 |
return false;
|
3708 |
}
|
3709 |
|
3710 |
+
// Get plugin data.
|
3711 |
$full_plugin_file_path = WP_PLUGIN_DIR . '/' . $plugin_file;
|
3712 |
if ( is_file( $full_plugin_file_path ) ) {
|
3713 |
$plugin_data = get_plugin_data( $full_plugin_file_path, false, true );
|
3819 |
|
3820 |
/**
|
3821 |
* Called once a webhook has been run but was not handled.
|
3822 |
+
*
|
3823 |
* @return void
|
3824 |
*
|
3825 |
+
* @since 2.8
|
3826 |
*/
|
3827 |
function pmpro_unhandled_webhook(){
|
3828 |
/**
|
3829 |
* Allow hooking into after a webhook has been run but was not handled.
|
3830 |
*
|
3831 |
+
* @since 2.8
|
3832 |
*
|
3833 |
* @param string $gateway The gateway the webhook was not handled for.
|
3834 |
*/
|
4001 |
flush();
|
4002 |
}
|
4003 |
|
4004 |
+
/**
|
4005 |
* Returns formatted ISO-8601 date (Used for Zapier Native app.)
|
4006 |
* @since 2.6.6
|
4007 |
* @param $date date A valid date value.
|
4075 |
if ( ! $client_ip ) {
|
4076 |
return false;
|
4077 |
}
|
4078 |
+
|
4079 |
// Sanitize the IP
|
4080 |
$client_ip = preg_replace( '/[^0-9a-fA-F:., ]/', '', $client_ip );
|
4081 |
+
|
4082 |
return $client_ip;
|
4083 |
}
|
4084 |
|
4085 |
/**
|
4086 |
+
* Determines if this order can be refunded
|
4087 |
+
* @param object $order The order that we want to refund
|
4088 |
+
* @return bool Returns a bool value based on if the order can be refunded
|
4089 |
+
*/
|
4090 |
+
function pmpro_allowed_refunds( $order ) {
|
4091 |
+
|
4092 |
+
//If this isn't a valid order then lets not allow it
|
4093 |
+
if( empty( $order ) || empty( $order->gateway ) || empty( $order->status ) || empty( $order->payment_transaction_id ) ) {
|
4094 |
+
return false;
|
4095 |
+
}
|
4096 |
+
|
4097 |
+
//Orders with a 0 total shouldn't be able to be refunded
|
4098 |
+
if( $order->total == 0 ){
|
4099 |
+
return false;
|
4100 |
+
}
|
4101 |
+
|
4102 |
+
$okay = false;
|
4103 |
+
|
4104 |
+
/**
|
4105 |
+
* Specify which gateways support refund functionality
|
4106 |
+
*
|
4107 |
+
* @since 2.8
|
4108 |
+
*
|
4109 |
+
* @param array $allowed_gateways A list of allowed gateways to work with refunds
|
4110 |
+
*/
|
4111 |
+
$allowed_gateways = apply_filters( 'pmpro_allowed_refunds_gateways', array( 'stripe', 'paypalexpress' ) );
|
4112 |
+
//Only apply to these gateways
|
4113 |
+
if( in_array( $order->gateway, $allowed_gateways, true ) ) {
|
4114 |
+
$okay = true;
|
4115 |
+
}
|
4116 |
+
|
4117 |
+
$disallowed_statuses = pmpro_disallowed_refund_statuses();
|
4118 |
+
//Don't allow pending orders to be refunded
|
4119 |
+
if( in_array( $order->status, $disallowed_statuses, true ) ){
|
4120 |
+
$okay = false;
|
4121 |
+
}
|
4122 |
+
|
4123 |
+
$okay = apply_filters( 'pmpro_refund_allowed', $okay, $order );
|
4124 |
+
|
4125 |
+
return $okay;
|
4126 |
+
}
|
4127 |
+
|
4128 |
+
|
4129 |
+
/**
|
4130 |
+
* Decides which filter should be used for the refund depending on gateway
|
4131 |
+
* @param object $order Member Order that we are refunding
|
4132 |
+
* @return bool Returns a bool value based on if a refund was processed successfully or not
|
4133 |
+
*/
|
4134 |
+
function pmpro_refund_order( $order ){
|
4135 |
+
|
4136 |
+
if( empty( $order ) ){
|
4137 |
+
return false;
|
4138 |
+
}
|
4139 |
+
|
4140 |
+
//Not going to refund an order that has already been refunded
|
4141 |
+
if( $order->status == 'refunded' ) {
|
4142 |
+
return true;
|
4143 |
+
}
|
4144 |
+
|
4145 |
+
/**
|
4146 |
+
* Processes a refund for a specific gateway
|
4147 |
+
*
|
4148 |
+
* @since 2.8
|
4149 |
+
*
|
4150 |
+
* @param bool $success Default return value is false to determine if the refund was successfully processed.
|
4151 |
+
* @param object $order The Member Order we want to refund.
|
4152 |
+
*/
|
4153 |
+
$success = apply_filters( 'pmpro_process_refund_'.$order->gateway, false, $order );
|
4154 |
+
|
4155 |
+
return $success;
|
4156 |
+
|
4157 |
+
}
|
4158 |
+
|
4159 |
+
/**
|
4160 |
+
* Returns an array of order statuses that do not qualify for a refund
|
4161 |
+
*
|
4162 |
+
* @return array Returns an array of statuses that are not allowe to be refunded
|
4163 |
+
*/
|
4164 |
+
function pmpro_disallowed_refund_statuses() {
|
4165 |
+
|
4166 |
+
/**
|
4167 |
+
* Allow filtering the list of statuses that can not be refunded from.
|
4168 |
+
*
|
4169 |
+
* @since 2.8
|
4170 |
+
*
|
4171 |
+
* @param array $disallowed_statuses The list of statuses that can not be refunded from.
|
4172 |
+
*/
|
4173 |
+
$disallowed_statuses = apply_filters( 'pmpro_disallowed_refund_statuses', array( 'pending', 'refunded', 'review', 'token', 'error' ) );
|
4174 |
+
|
4175 |
+
return $disallowed_statuses;
|
4176 |
+
}
|
4177 |
+
|
4178 |
+
/* Send the WP new user notification email, but also check our filter.
|
4179 |
* NOTE: includes/email.php has code to check for the related setting and
|
4180 |
* filters on the pmpro_wp_new_user_notification hook.
|
4181 |
* @since 2.7.4
|
4182 |
* @param int $user_id ID of the user to send the email for.
|
4183 |
* @param int $level_id Level ID the user just got. (Need to send to filter.)
|
4184 |
*/
|
4185 |
+
function pmpro_maybe_send_wp_new_user_notification( $user_id, $level_id = null ) {
|
4186 |
+
if ( apply_filters( 'pmpro_wp_new_user_notification', true, $user_id, $level_id ) ) {
|
4187 |
wp_new_user_notification( $user_id, null, 'both' );
|
4188 |
}
|
4189 |
+
|
4190 |
}
|
includes/init.php
CHANGED
@@ -92,7 +92,7 @@ function pmpro_wp()
|
|
92 |
{
|
93 |
//add class to body
|
94 |
$pmpro_body_classes[] = "pmpro-" . str_replace("_", "-", $pmpro_page_name);
|
95 |
-
|
96 |
//shortcode has params, but we still want to load the preheader
|
97 |
require_once(PMPRO_DIR . "/preheaders/" . $pmpro_page_name . ".php");
|
98 |
}
|
92 |
{
|
93 |
//add class to body
|
94 |
$pmpro_body_classes[] = "pmpro-" . str_replace("_", "-", $pmpro_page_name);
|
95 |
+
|
96 |
//shortcode has params, but we still want to load the preheader
|
97 |
require_once(PMPRO_DIR . "/preheaders/" . $pmpro_page_name . ".php");
|
98 |
}
|
includes/lib/Twocheckout/Twocheckout/TwocheckoutCharge.php
CHANGED
@@ -12,10 +12,10 @@ class Twocheckout_Charge extends Twocheckout
|
|
12 |
echo '<input type="hidden" name="'.htmlspecialchars($key, ENT_QUOTES, 'UTF-8').'" value="'.htmlspecialchars($value, ENT_QUOTES, 'UTF-8').'"/>';
|
13 |
}
|
14 |
if ($type == 'auto') {
|
15 |
-
echo '<input type="submit" value="Click here if you are not redirected automatically" /></form>';
|
16 |
echo '<script type="text/javascript">document.getElementById("2checkout").submit();</script>';
|
17 |
} else {
|
18 |
-
echo '<input type="submit" value="'
|
19 |
echo '</form>';
|
20 |
}
|
21 |
}
|
@@ -26,11 +26,11 @@ class Twocheckout_Charge extends Twocheckout
|
|
26 |
|
27 |
foreach ($params as $key => $value)
|
28 |
{
|
29 |
-
echo '<input type="hidden" name="'.$key.'" value="'
|
30 |
}
|
31 |
|
32 |
if ($type == 'auto') {
|
33 |
-
echo '<input type="submit" value="Click here if the payment form does not open automatically." /></form>';
|
34 |
echo '<script type="text/javascript">
|
35 |
function submitForm() {
|
36 |
document.getElementById("tco_lightbox").style.display = "block";
|
@@ -39,7 +39,7 @@ class Twocheckout_Charge extends Twocheckout
|
|
39 |
setTimeout("submitForm()", 2000);
|
40 |
</script>';
|
41 |
} else {
|
42 |
-
echo '<input type="submit" value="'
|
43 |
echo '</form>';
|
44 |
}
|
45 |
|
12 |
echo '<input type="hidden" name="'.htmlspecialchars($key, ENT_QUOTES, 'UTF-8').'" value="'.htmlspecialchars($value, ENT_QUOTES, 'UTF-8').'"/>';
|
13 |
}
|
14 |
if ($type == 'auto') {
|
15 |
+
echo '<input type="submit" value="' . esc_attr__( 'Click here if you are not redirected automatically.', 'paid-memberships-pro' ) . '" /></form>';
|
16 |
echo '<script type="text/javascript">document.getElementById("2checkout").submit();</script>';
|
17 |
} else {
|
18 |
+
echo '<input type="submit" value="'.esc_attr($type).'" />';
|
19 |
echo '</form>';
|
20 |
}
|
21 |
}
|
26 |
|
27 |
foreach ($params as $key => $value)
|
28 |
{
|
29 |
+
echo '<input type="hidden" name="'.$key.'" value="'.esc_attr($value).'"/>';
|
30 |
}
|
31 |
|
32 |
if ($type == 'auto') {
|
33 |
+
echo '<input type="submit" value="' . esc_attr__( 'Click here if the payment form does not open automatically.', 'paid-memberships-pro' ) . '" /></form>';
|
34 |
echo '<script type="text/javascript">
|
35 |
function submitForm() {
|
36 |
document.getElementById("tco_lightbox").style.display = "block";
|
39 |
setTimeout("submitForm()", 2000);
|
40 |
</script>';
|
41 |
} else {
|
42 |
+
echo '<input type="submit" value="'.esc_attr($type).'" />';
|
43 |
echo '</form>';
|
44 |
}
|
45 |
|
includes/license.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/*
|
3 |
This file handles the support licensing control for Paid Memberships Pro
|
4 |
and PMPro addons.
|
5 |
-
|
6 |
How it works:
|
7 |
- All source code and resource files bundled with this plugin are licensed under the GPLv2 license unless otherwise noted (e.g. included third-party libraries).
|
8 |
- An additional "support license" can be purchased at https://www.paidmembershipspro.com/pricing/
|
@@ -16,7 +16,7 @@
|
|
16 |
|
17 |
/*
|
18 |
Developers, add this line to your wp-config.php to remove PMPro license nags even if no license has been purchased.
|
19 |
-
|
20 |
define('PMPRO_LICENSE_NAG', false); //consider purchasing a license at https://www.paidmembershipspro.com/pricing/
|
21 |
*/
|
22 |
|
@@ -32,24 +32,24 @@ define('PMPRO_LICENSE_SERVER', 'https://license.paidmembershipspro.com/v2/');
|
|
32 |
* @param bool $force If true, will check key against the PMPro server.
|
33 |
* @return bool True if valid, false if not.
|
34 |
*/
|
35 |
-
function pmpro_license_isValid($key = NULL, $type = NULL, $force = false) {
|
36 |
// Get key from options if non passed in.
|
37 |
if( empty( $key ) ) {
|
38 |
$key = get_option("pmpro_license_key", "");
|
39 |
}
|
40 |
-
|
41 |
// No key? Clean up options and return false.
|
42 |
if ( empty( $key ) ) {
|
43 |
delete_option('pmpro_license_check');
|
44 |
add_option('pmpro_license_check', array('license'=>false, 'enddate'=>0), NULL, 'no');
|
45 |
return false;
|
46 |
}
|
47 |
-
|
48 |
// If force was passed in, let's check with the server.
|
49 |
if ( $force ) {
|
50 |
$pmpro_license_check = pmpro_license_check_key( $key );
|
51 |
}
|
52 |
-
|
53 |
// Get license check value from options.
|
54 |
$pmpro_license_check = get_option( 'pmpro_license_check', false );
|
55 |
|
@@ -57,27 +57,27 @@ function pmpro_license_isValid($key = NULL, $type = NULL, $force = false) {
|
|
57 |
if ( empty( $pmpro_license_check ) ) {
|
58 |
return false;
|
59 |
}
|
60 |
-
|
61 |
// Server check errored out?
|
62 |
if ( is_wp_error( $pmpro_license_check ) ) {
|
63 |
return false;
|
64 |
}
|
65 |
-
|
66 |
// Check if 30 days past the end date. (We only run the cron every 30 days.)
|
67 |
if ( $pmpro_license_check['enddate'] < ( current_time( 'timestamp' ) - 86400*31 ) ) {
|
68 |
return false;
|
69 |
}
|
70 |
-
|
71 |
// Check if a specific type.
|
72 |
if ( ! empty( $type ) ) {
|
73 |
$type = (array)$type;
|
74 |
-
|
75 |
if ( ! in_array( $pmpro_license_check['license'], $type, true ) ) {
|
76 |
|
77 |
return false;
|
78 |
}
|
79 |
}
|
80 |
-
|
81 |
// If we got here, we should be good.
|
82 |
return true;
|
83 |
}
|
@@ -87,15 +87,15 @@ function pmpro_license_isValid($key = NULL, $type = NULL, $force = false) {
|
|
87 |
*/
|
88 |
//activation
|
89 |
function pmpro_license_activation() {
|
90 |
-
pmpro_maybe_schedule_event(current_time('timestamp'), 'monthly', 'pmpro_license_check_key');
|
91 |
}
|
92 |
-
|
93 |
|
94 |
//deactivation
|
95 |
function pmpro_license_deactivation() {
|
96 |
-
wp_clear_scheduled_hook('pmpro_license_check_key');
|
97 |
}
|
98 |
-
|
99 |
|
100 |
/**
|
101 |
* Check a key against the PMPro license server.
|
@@ -106,17 +106,17 @@ register_deactivation_hook(__FILE__, 'pmpro_deactivation');
|
|
106 |
*/
|
107 |
function pmpro_license_check_key($key = NULL) {
|
108 |
global $pmpro_license_error;
|
109 |
-
|
110 |
// Get key from options if non passed in.
|
111 |
if( empty( $key ) ) {
|
112 |
$key = get_option("pmpro_license_key", "");
|
113 |
}
|
114 |
-
|
115 |
// No key? Return error.
|
116 |
if ( empty ( $key ) ) {
|
117 |
return new WP_Error ( 'no_key', __( 'Missing key.', 'paid-memberships-pro' ) );
|
118 |
}
|
119 |
-
|
120 |
/**
|
121 |
* Filter to change the timeout for this wp_remote_get() request.
|
122 |
*
|
@@ -134,30 +134,31 @@ function pmpro_license_check_key($key = NULL) {
|
|
134 |
// Connection error.
|
135 |
return new WP_Error( 'connection_error', $r->get_error_message() );
|
136 |
}
|
137 |
-
|
138 |
// Bad response code?
|
139 |
if ( $r['response']['code'] !== 200 ) {
|
140 |
-
return new WP_Error( 'bad_response_code',
|
|
|
141 |
}
|
142 |
-
|
143 |
// Process the response.
|
144 |
-
$r = json_decode($r['body']);
|
145 |
if( $r->active == 1 ) {
|
146 |
// Get end date. If none, let's set it 1 year out.
|
147 |
if( ! empty( $r->enddate ) ) {
|
148 |
$enddate = strtotime( $r->enddate, current_time( 'timestamp' ) );
|
149 |
} else {
|
150 |
$enddate = strtotime( '+1 Year', current_time( 'timestamp' ) );
|
151 |
-
}
|
152 |
|
153 |
$license_check = array( 'license' => $r->license, 'enddate' => $enddate );
|
154 |
update_option( 'pmpro_license_check', $license_check, 'no' );
|
155 |
-
|
156 |
return $license_check;
|
157 |
-
} elseif ( ! empty( $r->error ) ) {
|
158 |
// Invalid key. Let's clear out the option.
|
159 |
update_option( 'pmpro_license_check', array('license'=>false, 'enddate'=>0), 'no' );
|
160 |
-
|
161 |
return new WP_Error( 'invalid_key', $r->error );
|
162 |
} else {
|
163 |
// Unknown error. We should maybe clear out the option, but we're not.
|
@@ -172,7 +173,7 @@ add_action('pmpro_license_check_key', 'pmpro_license_check_key');
|
|
172 |
* @param string $type The license type for an add on for license key.
|
173 |
* @return bool True if the type is for a paid PMPro membership, false if not.
|
174 |
*/
|
175 |
-
function pmpro_license_type_is_premium( $type ) {
|
176 |
$premium_types = pmpro_license_get_premium_types();
|
177 |
return in_array( strtolower( $type ), $premium_types, true );
|
178 |
}
|
@@ -184,4 +185,4 @@ function pmpro_license_type_is_premium( $type ) {
|
|
184 |
*/
|
185 |
function pmpro_license_get_premium_types() {
|
186 |
return array( 'standard', 'plus', 'builder' );
|
187 |
-
}
|
2 |
/*
|
3 |
This file handles the support licensing control for Paid Memberships Pro
|
4 |
and PMPro addons.
|
5 |
+
|
6 |
How it works:
|
7 |
- All source code and resource files bundled with this plugin are licensed under the GPLv2 license unless otherwise noted (e.g. included third-party libraries).
|
8 |
- An additional "support license" can be purchased at https://www.paidmembershipspro.com/pricing/
|
16 |
|
17 |
/*
|
18 |
Developers, add this line to your wp-config.php to remove PMPro license nags even if no license has been purchased.
|
19 |
+
|
20 |
define('PMPRO_LICENSE_NAG', false); //consider purchasing a license at https://www.paidmembershipspro.com/pricing/
|
21 |
*/
|
22 |
|
32 |
* @param bool $force If true, will check key against the PMPro server.
|
33 |
* @return bool True if valid, false if not.
|
34 |
*/
|
35 |
+
function pmpro_license_isValid($key = NULL, $type = NULL, $force = false) {
|
36 |
// Get key from options if non passed in.
|
37 |
if( empty( $key ) ) {
|
38 |
$key = get_option("pmpro_license_key", "");
|
39 |
}
|
40 |
+
|
41 |
// No key? Clean up options and return false.
|
42 |
if ( empty( $key ) ) {
|
43 |
delete_option('pmpro_license_check');
|
44 |
add_option('pmpro_license_check', array('license'=>false, 'enddate'=>0), NULL, 'no');
|
45 |
return false;
|
46 |
}
|
47 |
+
|
48 |
// If force was passed in, let's check with the server.
|
49 |
if ( $force ) {
|
50 |
$pmpro_license_check = pmpro_license_check_key( $key );
|
51 |
}
|
52 |
+
|
53 |
// Get license check value from options.
|
54 |
$pmpro_license_check = get_option( 'pmpro_license_check', false );
|
55 |
|
57 |
if ( empty( $pmpro_license_check ) ) {
|
58 |
return false;
|
59 |
}
|
60 |
+
|
61 |
// Server check errored out?
|
62 |
if ( is_wp_error( $pmpro_license_check ) ) {
|
63 |
return false;
|
64 |
}
|
65 |
+
|
66 |
// Check if 30 days past the end date. (We only run the cron every 30 days.)
|
67 |
if ( $pmpro_license_check['enddate'] < ( current_time( 'timestamp' ) - 86400*31 ) ) {
|
68 |
return false;
|
69 |
}
|
70 |
+
|
71 |
// Check if a specific type.
|
72 |
if ( ! empty( $type ) ) {
|
73 |
$type = (array)$type;
|
74 |
+
|
75 |
if ( ! in_array( $pmpro_license_check['license'], $type, true ) ) {
|
76 |
|
77 |
return false;
|
78 |
}
|
79 |
}
|
80 |
+
|
81 |
// If we got here, we should be good.
|
82 |
return true;
|
83 |
}
|
87 |
*/
|
88 |
//activation
|
89 |
function pmpro_license_activation() {
|
90 |
+
pmpro_maybe_schedule_event( current_time( 'timestamp' ), 'monthly', 'pmpro_license_check_key' );
|
91 |
}
|
92 |
+
add_action( 'activate_paid-memberships-pro', 'pmpro_license_activation' );
|
93 |
|
94 |
//deactivation
|
95 |
function pmpro_license_deactivation() {
|
96 |
+
wp_clear_scheduled_hook( 'pmpro_license_check_key' );
|
97 |
}
|
98 |
+
add_action( 'deactivate_paid-memberships-pro', 'pmpro_license_deactivation' );
|
99 |
|
100 |
/**
|
101 |
* Check a key against the PMPro license server.
|
106 |
*/
|
107 |
function pmpro_license_check_key($key = NULL) {
|
108 |
global $pmpro_license_error;
|
109 |
+
|
110 |
// Get key from options if non passed in.
|
111 |
if( empty( $key ) ) {
|
112 |
$key = get_option("pmpro_license_key", "");
|
113 |
}
|
114 |
+
|
115 |
// No key? Return error.
|
116 |
if ( empty ( $key ) ) {
|
117 |
return new WP_Error ( 'no_key', __( 'Missing key.', 'paid-memberships-pro' ) );
|
118 |
}
|
119 |
+
|
120 |
/**
|
121 |
* Filter to change the timeout for this wp_remote_get() request.
|
122 |
*
|
134 |
// Connection error.
|
135 |
return new WP_Error( 'connection_error', $r->get_error_message() );
|
136 |
}
|
137 |
+
|
138 |
// Bad response code?
|
139 |
if ( $r['response']['code'] !== 200 ) {
|
140 |
+
return new WP_Error( 'bad_response_code', esc_html( sprintf( __( 'Bad response code %s.', 'paid-memberships-pro' ), $r['response']['code'] ) ) );
|
141 |
+
|
142 |
}
|
143 |
+
|
144 |
// Process the response.
|
145 |
+
$r = json_decode($r['body']);
|
146 |
if( $r->active == 1 ) {
|
147 |
// Get end date. If none, let's set it 1 year out.
|
148 |
if( ! empty( $r->enddate ) ) {
|
149 |
$enddate = strtotime( $r->enddate, current_time( 'timestamp' ) );
|
150 |
} else {
|
151 |
$enddate = strtotime( '+1 Year', current_time( 'timestamp' ) );
|
152 |
+
}
|
153 |
|
154 |
$license_check = array( 'license' => $r->license, 'enddate' => $enddate );
|
155 |
update_option( 'pmpro_license_check', $license_check, 'no' );
|
156 |
+
|
157 |
return $license_check;
|
158 |
+
} elseif ( ! empty( $r->error ) ) {
|
159 |
// Invalid key. Let's clear out the option.
|
160 |
update_option( 'pmpro_license_check', array('license'=>false, 'enddate'=>0), 'no' );
|
161 |
+
|
162 |
return new WP_Error( 'invalid_key', $r->error );
|
163 |
} else {
|
164 |
// Unknown error. We should maybe clear out the option, but we're not.
|
173 |
* @param string $type The license type for an add on for license key.
|
174 |
* @return bool True if the type is for a paid PMPro membership, false if not.
|
175 |
*/
|
176 |
+
function pmpro_license_type_is_premium( $type ) {
|
177 |
$premium_types = pmpro_license_get_premium_types();
|
178 |
return in_array( strtolower( $type ), $premium_types, true );
|
179 |
}
|
185 |
*/
|
186 |
function pmpro_license_get_premium_types() {
|
187 |
return array( 'standard', 'plus', 'builder' );
|
188 |
+
}
|
includes/login.php
CHANGED
@@ -687,7 +687,7 @@ function pmpro_reset_password_form() {
|
|
687 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_reset_password-field pmpro_reset_password-field-pass1', 'pmpro_reset_password-field-pass1' ); ?>">
|
688 |
<label for="pass1"><?php esc_html_e( 'New Password', 'paid-memberships-pro' ) ?></label>
|
689 |
<input type="password" name="pass1" id="pass1" class="<?php echo pmpro_get_element_class( 'input pass1', 'pass1' ); ?>" size="20" value="" autocomplete="off" />
|
690 |
-
<div id="pass-strength-result" class="hide-if-no-js" aria-live="polite"><?php
|
691 |
<p class="<?php echo pmpro_get_element_class( 'lite' ); ?>"><?php echo wp_get_password_hint(); ?></p>
|
692 |
</div>
|
693 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_reset_password-field pmpro_reset_password-field-pass2', 'pmpro_reset_password-field-pass2' ); ?>">
|
687 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_reset_password-field pmpro_reset_password-field-pass1', 'pmpro_reset_password-field-pass1' ); ?>">
|
688 |
<label for="pass1"><?php esc_html_e( 'New Password', 'paid-memberships-pro' ) ?></label>
|
689 |
<input type="password" name="pass1" id="pass1" class="<?php echo pmpro_get_element_class( 'input pass1', 'pass1' ); ?>" size="20" value="" autocomplete="off" />
|
690 |
+
<div id="pass-strength-result" class="hide-if-no-js" aria-live="polite"><?php esc_html_e( 'Strength Indicator', 'paid-memberships-pro' ); ?></div>
|
691 |
<p class="<?php echo pmpro_get_element_class( 'lite' ); ?>"><?php echo wp_get_password_hint(); ?></p>
|
692 |
</div>
|
693 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_reset_password-field pmpro_reset_password-field-pass2', 'pmpro_reset_password-field-pass2' ); ?>">
|
includes/menus.php
CHANGED
@@ -67,7 +67,7 @@ function pmpro_pages_metabox_nav_links() {
|
|
67 |
</label>
|
68 |
<input type="hidden" class="menu-item-type" name="menu-item[-1][menu-item-type]" value="custom">
|
69 |
<input type="hidden" class="menu-item-type-name" name="menu-item[-1][menu-item-type]" value="custom">
|
70 |
-
<input type="hidden" class="menu-item-title" name="menu-item[-1][menu-item-title]" value="<?php
|
71 |
<input type="hidden" class="menu-item-url" name="menu-item[-1][menu-item-url]" value="#">
|
72 |
<input type="hidden" class="menu-item-classes" name="menu-item[-1][menu-item-classes]" value="menu-item-type-pmpro-login">
|
73 |
</li>
|
@@ -76,7 +76,7 @@ function pmpro_pages_metabox_nav_links() {
|
|
76 |
<input type="checkbox" class="menu-item-checkbox" name="menu-item[-2][menu-item-object-id]" value="-2"> <?php _e( 'Log Out', 'paid-memberships-pro'); ?>
|
77 |
</label>
|
78 |
<input type="hidden" class="menu-item-type" name="menu-item[-2][menu-item-type]" value="custom">
|
79 |
-
<input type="hidden" class="menu-item-title" name="menu-item[-2][menu-item-title]" value="<?php
|
80 |
<input type="hidden" class="menu-item-url" name="menu-item[-2][menu-item-url]" value="#">
|
81 |
<input type="hidden" class="menu-item-classes" name="menu-item[-2][menu-item-classes]" value="menu-item-type-pmpro-logout">
|
82 |
</li>
|
@@ -252,4 +252,4 @@ function pmpro_hide_toolbar() {
|
|
252 |
add_filter( 'show_admin_bar', '__return_false' );
|
253 |
}
|
254 |
}
|
255 |
-
add_action( 'init', 'pmpro_hide_toolbar', 9 );
|
67 |
</label>
|
68 |
<input type="hidden" class="menu-item-type" name="menu-item[-1][menu-item-type]" value="custom">
|
69 |
<input type="hidden" class="menu-item-type-name" name="menu-item[-1][menu-item-type]" value="custom">
|
70 |
+
<input type="hidden" class="menu-item-title" name="menu-item[-1][menu-item-title]" value="<?php esc_attr_e( 'Log In', 'paid-memberships-pro'); ?>">
|
71 |
<input type="hidden" class="menu-item-url" name="menu-item[-1][menu-item-url]" value="#">
|
72 |
<input type="hidden" class="menu-item-classes" name="menu-item[-1][menu-item-classes]" value="menu-item-type-pmpro-login">
|
73 |
</li>
|
76 |
<input type="checkbox" class="menu-item-checkbox" name="menu-item[-2][menu-item-object-id]" value="-2"> <?php _e( 'Log Out', 'paid-memberships-pro'); ?>
|
77 |
</label>
|
78 |
<input type="hidden" class="menu-item-type" name="menu-item[-2][menu-item-type]" value="custom">
|
79 |
+
<input type="hidden" class="menu-item-title" name="menu-item[-2][menu-item-title]" value="<?php esc_attr_e( 'Log Out', 'paid-memberships-pro'); ?>">
|
80 |
<input type="hidden" class="menu-item-url" name="menu-item[-2][menu-item-url]" value="#">
|
81 |
<input type="hidden" class="menu-item-classes" name="menu-item[-2][menu-item-classes]" value="menu-item-type-pmpro-logout">
|
82 |
</li>
|
252 |
add_filter( 'show_admin_bar', '__return_false' );
|
253 |
}
|
254 |
}
|
255 |
+
add_action( 'init', 'pmpro_hide_toolbar', 9 );
|
includes/metaboxes.php
CHANGED
@@ -148,11 +148,11 @@ function pmpro_taxonomy_meta( $term ) {
|
|
148 |
if( ! empty( $protectedlevels ) ) {
|
149 |
?>
|
150 |
<tr class="form-field">
|
151 |
-
<th scope="row" valign="top"><?php
|
152 |
<td>
|
153 |
<p><strong>
|
154 |
<?php echo implode(', ',$protectedlevels); ?></strong></p>
|
155 |
-
<p class="description"><?php
|
156 |
</td>
|
157 |
</tr>
|
158 |
<?php
|
148 |
if( ! empty( $protectedlevels ) ) {
|
149 |
?>
|
150 |
<tr class="form-field">
|
151 |
+
<th scope="row" valign="top"><?php esc_html_e( 'Membership Levels', 'paid-memberships-pro' ); ?></label></th>
|
152 |
<td>
|
153 |
<p><strong>
|
154 |
<?php echo implode(', ',$protectedlevels); ?></strong></p>
|
155 |
+
<p class="description"><?php esc_html_e( 'Only members of these levels will be able to view posts in this category.', 'paid-memberships-pro' ); ?></p>
|
156 |
</td>
|
157 |
</tr>
|
158 |
<?php
|
includes/notifications.php
CHANGED
@@ -22,10 +22,10 @@ function pmpro_notifications() {
|
|
22 |
?>
|
23 |
<div class="pmpro_notification" id="<?php echo $notification->id; ?>">
|
24 |
<?php if ( $notification->dismissable ) { ?>
|
25 |
-
<button type="button" class="pmpro-notice-button notice-dismiss" value="<?php echo $notification->id; ?>"><span class="screen-reader-text"><?php esc_html_e( 'Dismiss this notice.', 'paid-memberships-pro' ); ?></span></button>
|
26 |
<?php } ?>
|
27 |
<div class="pmpro_notification-<?php echo $notification->type; ?>">
|
28 |
-
<h3><span class="dashicons dashicons-<?php esc_attr_e( $notification->dashicon ); ?>"></span> <?php
|
29 |
<?php
|
30 |
$allowed_html = array (
|
31 |
'a' => array (
|
@@ -556,4 +556,4 @@ function pmpro_footer_link() {
|
|
556 |
<!-- <?php echo pmpro_link()?> -->
|
557 |
<?php }
|
558 |
}
|
559 |
-
add_action( 'wp_footer', 'pmpro_footer_link' );
|
22 |
?>
|
23 |
<div class="pmpro_notification" id="<?php echo $notification->id; ?>">
|
24 |
<?php if ( $notification->dismissable ) { ?>
|
25 |
+
<button type="button" class="pmpro-notice-button notice-dismiss" value="<?php echo esc_attr( $notification->id ); ?>"><span class="screen-reader-text"><?php esc_html_e( 'Dismiss this notice.', 'paid-memberships-pro' ); ?></span></button>
|
26 |
<?php } ?>
|
27 |
<div class="pmpro_notification-<?php echo $notification->type; ?>">
|
28 |
+
<h3><span class="dashicons dashicons-<?php esc_attr_e( $notification->dashicon ); ?>"></span> <?php echo esc_html( $notification->title ); ?></h3>
|
29 |
<?php
|
30 |
$allowed_html = array (
|
31 |
'a' => array (
|
556 |
<!-- <?php echo pmpro_link()?> -->
|
557 |
<?php }
|
558 |
}
|
559 |
+
add_action( 'wp_footer', 'pmpro_footer_link' );
|
includes/privacy.php
CHANGED
@@ -495,6 +495,7 @@ function pmpro_after_checkout_update_consent( $user_id, $order ) {
|
|
495 |
add_action( 'pmpro_after_checkout', 'pmpro_after_checkout_update_consent', 10, 2 );
|
496 |
add_action( 'pmpro_before_send_to_paypal_standard', 'pmpro_after_checkout_update_consent', 10, 2);
|
497 |
add_action( 'pmpro_before_send_to_twocheckout', 'pmpro_after_checkout_update_consent', 10, 2);
|
|
|
498 |
|
499 |
/**
|
500 |
* Convert a consent entry into a English sentence.
|
495 |
add_action( 'pmpro_after_checkout', 'pmpro_after_checkout_update_consent', 10, 2 );
|
496 |
add_action( 'pmpro_before_send_to_paypal_standard', 'pmpro_after_checkout_update_consent', 10, 2);
|
497 |
add_action( 'pmpro_before_send_to_twocheckout', 'pmpro_after_checkout_update_consent', 10, 2);
|
498 |
+
add_action( 'pmpro_before_send_to_payfast', 'pmpro_after_checkout_update_consent', 10, 2 );
|
499 |
|
500 |
/**
|
501 |
* Convert a consent entry into a English sentence.
|
includes/profile.php
CHANGED
@@ -19,7 +19,7 @@ function pmpro_membership_level_profile_fields($user)
|
|
19 |
if(!$levels)
|
20 |
return "";
|
21 |
?>
|
22 |
-
<h3><?php
|
23 |
<table class="form-table">
|
24 |
<?php
|
25 |
$show_membership_level = true;
|
@@ -28,7 +28,7 @@ function pmpro_membership_level_profile_fields($user)
|
|
28 |
{
|
29 |
?>
|
30 |
<tr>
|
31 |
-
<th><label for="membership_level"><?php
|
32 |
<td>
|
33 |
<select name="membership_level">
|
34 |
<option value="" <?php if(empty($user->membership_level->ID)) { ?>selected="selected"<?php } ?>>-- <?php _e("None", 'paid-memberships-pro' );?> --</option>
|
@@ -36,12 +36,12 @@ function pmpro_membership_level_profile_fields($user)
|
|
36 |
foreach($levels as $level)
|
37 |
{
|
38 |
?>
|
39 |
-
<option value="<?php echo $level->id?>" <?php selected($level->id, (isset($user->membership_level->ID) ? $user->membership_level->ID : 0 )); ?>><?php echo $level->name?></option>
|
40 |
<?php
|
41 |
}
|
42 |
?>
|
43 |
</select>
|
44 |
-
<p id="cancel_description" class="description hidden"><?php
|
45 |
</td>
|
46 |
</tr>
|
47 |
<?php
|
@@ -60,13 +60,23 @@ function pmpro_membership_level_profile_fields($user)
|
|
60 |
$selected_expires_hour = date( 'H', $end_date ? $user->membership_level->enddate : current_time('timestamp') );
|
61 |
|
62 |
$selected_expires_minute = date( 'i', $end_date ? $user->membership_level->enddate : current_time('timestamp') );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
?>
|
64 |
<tr>
|
65 |
-
<th><label for="expiration"><?php
|
66 |
<td>
|
67 |
<select id="expires" name="expires">
|
68 |
-
<option value="0" <?php if(!$end_date) { ?>selected="selected"<?php } ?>><?php
|
69 |
-
<option value="1" <?php if($end_date) { ?>selected="selected"<?php } ?>><?php
|
70 |
</select>
|
71 |
<span id="expires_date" <?php if(!$end_date) { ?>style="display: none;"<?php } ?>>
|
72 |
on
|
@@ -75,25 +85,25 @@ function pmpro_membership_level_profile_fields($user)
|
|
75 |
for($i = 1; $i < 13; $i++)
|
76 |
{
|
77 |
?>
|
78 |
-
<option value="<?php echo $i?>" <?php if($i == $selected_expires_month) { ?>selected="selected"<?php } ?>><?php echo date("M", strtotime($i . "/15/" . date("Y", current_time( 'timestamp' ) ), current_time("timestamp")))?></option>
|
79 |
<?php
|
80 |
}
|
81 |
?>
|
82 |
</select>
|
83 |
-
<input name="expires_day" type="text" size="2" value="<?php echo $selected_expires_day?>" />
|
84 |
-
<input name="expires_year" type="text" size="4" value="<?php echo $selected_expires_year?>" />
|
85 |
<?php _e('at', 'paid-memberships-pro'); ?>
|
86 |
<select name='expires_hour'>
|
87 |
<?php
|
88 |
for( $i = 0; $i <= 24; $i++ ){
|
89 |
-
echo "<option value='"
|
90 |
}
|
91 |
?>
|
92 |
</select>
|
93 |
<select name='expires_minute'>
|
94 |
<?php
|
95 |
for( $i = 0; $i <= 59; $i++ ){
|
96 |
-
echo "<option value='"
|
97 |
}
|
98 |
?>
|
99 |
</select>
|
@@ -119,6 +129,12 @@ function pmpro_membership_level_profile_fields($user)
|
|
119 |
<td>
|
120 |
<label for="cancel_subscription"><input value="1" id="cancel_subscription" name="cancel_subscription" type="checkbox"> <?php _e("Cancel this user's subscription at the gateway.", "paid-memberships-pro" ); ?></label>
|
121 |
</td>
|
|
|
|
|
|
|
|
|
|
|
|
|
122 |
</tr>
|
123 |
<?php
|
124 |
}
|
@@ -131,7 +147,7 @@ function pmpro_membership_level_profile_fields($user)
|
|
131 |
if( !empty( $tospage_id ) || !empty( $consent_log ) ) {
|
132 |
?>
|
133 |
<tr>
|
134 |
-
<th><label for="tos_consent_history"><?php
|
135 |
<td id="tos_consent_history">
|
136 |
<?php
|
137 |
if ( ! empty( $consent_log ) ) {
|
@@ -355,6 +371,30 @@ function pmpro_membership_level_profile_fields_update()
|
|
355 |
$pmproemail->sendAdminChangeEmail(get_userdata($user_ID));
|
356 |
}
|
357 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
358 |
}
|
359 |
add_action( 'show_user_profile', 'pmpro_membership_level_profile_fields' );
|
360 |
add_action( 'edit_user_profile', 'pmpro_membership_level_profile_fields' );
|
@@ -424,18 +464,18 @@ function pmpro_membership_history_profile_fields( $user ) {
|
|
424 |
<tr>
|
425 |
<td><?php echo date_i18n( get_option( 'date_format'), $invoice->timestamp ); ?></td>
|
426 |
<td class="order_code column-order_code has-row-actions">
|
427 |
-
<a href="<?php echo add_query_arg( array( 'page' => 'pmpro-orders', 'order' => $invoice->id ), admin_url('admin.php' ) ); ?>"><?php echo $invoice->code; ?></a><br />
|
428 |
<div class="row-actions">
|
429 |
<span class="edit">
|
430 |
-
<a title="<?php
|
431 |
</span> |
|
432 |
<span class="print">
|
433 |
-
<a target="_blank" title="<?php
|
434 |
</span>
|
435 |
<?php if ( function_exists( 'pmpro_add_email_order_modal' ) ) { ?>
|
436 |
|
|
437 |
<span class="email">
|
438 |
-
<a title="<?php
|
439 |
</span>
|
440 |
<?php } ?>
|
441 |
</div> <!-- end .row-actions -->
|
@@ -787,11 +827,11 @@ function pmpro_member_profile_edit_form() {
|
|
787 |
do_action( 'pmpro_show_user_profile', $current_user );
|
788 |
?>
|
789 |
<input type="hidden" name="action" value="update-profile" />
|
790 |
-
<input type="hidden" name="user_id" value="<?php echo $current_user->ID; ?>" />
|
791 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_submit' ); ?>">
|
792 |
<hr />
|
793 |
-
<input type="submit" name="submit" class="<?php echo pmpro_get_element_class( 'pmpro_btn pmpro_btn-submit', 'pmpro_btn-submit' ); ?>" value="<?php
|
794 |
-
<input type="button" name="cancel" class="<?php echo pmpro_get_element_class( 'pmpro_btn pmpro_btn-cancel', 'pmpro_btn-cancel' ); ?>" value="<?php
|
795 |
</div>
|
796 |
</form>
|
797 |
</div> <!-- end pmpro_member_profile_edit_wrap -->
|
@@ -877,7 +917,7 @@ add_action( 'init', 'pmpro_change_password_process' );
|
|
877 |
function pmpro_change_password_form() {
|
878 |
global $current_user, $pmpro_msg, $pmpro_msgt;
|
879 |
?>
|
880 |
-
<h2><?php
|
881 |
<?php if ( ! empty( $pmpro_msg ) ) { ?>
|
882 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_message ' . $pmpro_msgt, $pmpro_msgt ); ?>">
|
883 |
<?php echo esc_html( $pmpro_msg ); ?>
|
@@ -891,19 +931,19 @@ function pmpro_change_password_form() {
|
|
891 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_checkout_box-password' ); ?>">
|
892 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_change_password-fields' ); ?>">
|
893 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_change_password-field pmpro_change_password-field-password_current', 'pmpro_change_password-field-password_current' ); ?>">
|
894 |
-
<label for="password_current"><?php
|
895 |
<input type="password" name="password_current" id="password_current" value="" class="<?php echo pmpro_get_element_class( 'input', 'password_current' ); ?>" />
|
896 |
<span class="<?php echo pmpro_get_element_class( 'pmpro_asterisk' ); ?>"> <abbr title="<?php _e( 'Required Field', 'paid-memberships-pro' ); ?>">*</abbr></span>
|
897 |
</div> <!-- end pmpro_change_password-field-password_current -->
|
898 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_change_password-field pmpro_change_password-field-pass1', 'pmpro_change_password-field-pass1' ); ?>">
|
899 |
-
<label for="pass1"><?php
|
900 |
<input type="password" name="pass1" id="pass1" value="" class="<?php echo pmpro_get_element_class( 'input pass1', 'pass1' ); ?>" autocomplete="off" />
|
901 |
<span class="<?php echo pmpro_get_element_class( 'pmpro_asterisk' ); ?>"> <abbr title="<?php _e( 'Required Field', 'paid-memberships-pro' ); ?>">*</abbr></span>
|
902 |
-
<div id="pass-strength-result" class="hide-if-no-js" aria-live="polite"><?php
|
903 |
<p class="<?php echo pmpro_get_element_class( 'lite' ); ?>"><?php echo wp_get_password_hint(); ?></p>
|
904 |
</div> <!-- end pmpro_change_password-field-pass1 -->
|
905 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_change_password-field pmpro_change_password-field-pass2', 'pmpro_change_password-field-pass2' ); ?>">
|
906 |
-
<label for="pass2"><?php
|
907 |
<input type="password" name="pass2" id="pass2" value="" class="<?php echo pmpro_get_element_class( 'input', 'pass2' ); ?>" autocomplete="off" />
|
908 |
<span class="<?php echo pmpro_get_element_class( 'pmpro_asterisk' ); ?>"> <abbr title="<?php _e( 'Required Field', 'paid-memberships-pro' ); ?>">*</abbr></span>
|
909 |
</div> <!-- end pmpro_change_password-field-pass2 -->
|
19 |
if(!$levels)
|
20 |
return "";
|
21 |
?>
|
22 |
+
<h3><?php esc_html_e("Membership Level", 'paid-memberships-pro' ); ?></h3>
|
23 |
<table class="form-table">
|
24 |
<?php
|
25 |
$show_membership_level = true;
|
28 |
{
|
29 |
?>
|
30 |
<tr>
|
31 |
+
<th><label for="membership_level"><?php esc_html_e("Current Level", 'paid-memberships-pro' ); ?></label></th>
|
32 |
<td>
|
33 |
<select name="membership_level">
|
34 |
<option value="" <?php if(empty($user->membership_level->ID)) { ?>selected="selected"<?php } ?>>-- <?php _e("None", 'paid-memberships-pro' );?> --</option>
|
36 |
foreach($levels as $level)
|
37 |
{
|
38 |
?>
|
39 |
+
<option value="<?php echo esc_attr( $level->id ) ?>" <?php selected($level->id, (isset($user->membership_level->ID) ? $user->membership_level->ID : 0 )); ?>><?php echo esc_html( $level->name ); ?></option>
|
40 |
<?php
|
41 |
}
|
42 |
?>
|
43 |
</select>
|
44 |
+
<p id="cancel_description" class="description hidden"><?php esc_html_e("This will not change the subscription at the gateway unless the 'Cancel' checkbox is selected below.", 'paid-memberships-pro' ); ?></p>
|
45 |
</td>
|
46 |
</tr>
|
47 |
<?php
|
60 |
$selected_expires_hour = date( 'H', $end_date ? $user->membership_level->enddate : current_time('timestamp') );
|
61 |
|
62 |
$selected_expires_minute = date( 'i', $end_date ? $user->membership_level->enddate : current_time('timestamp') );
|
63 |
+
|
64 |
+
$last_order = new MemberOrder();
|
65 |
+
|
66 |
+
$last_order->getLastMemberOrder( $user->ID );
|
67 |
+
|
68 |
+
$allows_refunds = false;
|
69 |
+
|
70 |
+
if( pmpro_allowed_refunds( $last_order ) ) {
|
71 |
+
$allows_refunds = true;
|
72 |
+
}
|
73 |
?>
|
74 |
<tr>
|
75 |
+
<th><label for="expiration"><?php esc_html_e("Expires", 'paid-memberships-pro' ); ?></label></th>
|
76 |
<td>
|
77 |
<select id="expires" name="expires">
|
78 |
+
<option value="0" <?php if(!$end_date) { ?>selected="selected"<?php } ?>><?php esc_html_e("No", 'paid-memberships-pro' );?></option>
|
79 |
+
<option value="1" <?php if($end_date) { ?>selected="selected"<?php } ?>><?php esc_html_e("Yes", 'paid-memberships-pro' );?></option>
|
80 |
</select>
|
81 |
<span id="expires_date" <?php if(!$end_date) { ?>style="display: none;"<?php } ?>>
|
82 |
on
|
85 |
for($i = 1; $i < 13; $i++)
|
86 |
{
|
87 |
?>
|
88 |
+
<option value="<?php echo esc_attr( $i ) ?>" <?php if($i == $selected_expires_month) { ?>selected="selected"<?php } ?>><?php echo date("M", strtotime($i . "/15/" . date("Y", current_time( 'timestamp' ) ), current_time("timestamp")))?></option>
|
89 |
<?php
|
90 |
}
|
91 |
?>
|
92 |
</select>
|
93 |
+
<input name="expires_day" type="text" size="2" value="<?php echo esc_attr( $selected_expires_day ) ?>" />
|
94 |
+
<input name="expires_year" type="text" size="4" value="<?php echo esc_attr( $selected_expires_year ) ?>" />
|
95 |
<?php _e('at', 'paid-memberships-pro'); ?>
|
96 |
<select name='expires_hour'>
|
97 |
<?php
|
98 |
for( $i = 0; $i <= 24; $i++ ){
|
99 |
+
echo "<option value='".esc_attr($i)."' ".selected( $selected_expires_hour, sprintf("%02d", $i ), true ).">".sprintf("%02d", $i )."</option>";
|
100 |
}
|
101 |
?>
|
102 |
</select>
|
103 |
<select name='expires_minute'>
|
104 |
<?php
|
105 |
for( $i = 0; $i <= 59; $i++ ){
|
106 |
+
echo "<option value='".esc_attr($i)."' ".selected( $selected_expires_minute, sprintf("%02d", $i ), true ).">".sprintf("%02d", $i )."</option>";
|
107 |
}
|
108 |
?>
|
109 |
</select>
|
129 |
<td>
|
130 |
<label for="cancel_subscription"><input value="1" id="cancel_subscription" name="cancel_subscription" type="checkbox"> <?php _e("Cancel this user's subscription at the gateway.", "paid-memberships-pro" ); ?></label>
|
131 |
</td>
|
132 |
+
</tr>
|
133 |
+
<tr class="more_level_options">
|
134 |
+
<th></th>
|
135 |
+
<td>
|
136 |
+
<label for="refund_last_subscription"><input value="1" id="refund_last_subscription" name="refund_last_subscription" type="checkbox"<?php disabled( !$allows_refunds ); ?>> <?php esc_html_e("Refund this user's most recent order.", "paid-memberships-pro" ); ?></label>
|
137 |
+
</td>
|
138 |
</tr>
|
139 |
<?php
|
140 |
}
|
147 |
if( !empty( $tospage_id ) || !empty( $consent_log ) ) {
|
148 |
?>
|
149 |
<tr>
|
150 |
+
<th><label for="tos_consent_history"><?php esc_html_e("TOS Consent History", 'paid-memberships-pro' ); ?></label></th>
|
151 |
<td id="tos_consent_history">
|
152 |
<?php
|
153 |
if ( ! empty( $consent_log ) ) {
|
371 |
$pmproemail->sendAdminChangeEmail(get_userdata($user_ID));
|
372 |
}
|
373 |
}
|
374 |
+
|
375 |
+
//Refund their most recent subscription
|
376 |
+
if( !empty( $_REQUEST['refund_last_subscription'] ) ) {
|
377 |
+
|
378 |
+
$order = new MemberOrder();
|
379 |
+
|
380 |
+
//We need to get a different order if we already cancelled it on the profile edit page.
|
381 |
+
if( !empty( $_REQUEST['cancel_subscription'] ) ){
|
382 |
+
$order_status = 'cancelled';
|
383 |
+
} else {
|
384 |
+
$order_status = 'success';
|
385 |
+
}
|
386 |
+
|
387 |
+
$order->getLastMemberOrder( $user_ID, $order_status );
|
388 |
+
|
389 |
+
if( !empty( $order ) && !empty( $order->id ) ) {
|
390 |
+
|
391 |
+
//Gateways that we want to support this can run the action from their own class.
|
392 |
+
pmpro_refund_order( $order );
|
393 |
+
|
394 |
+
}
|
395 |
+
|
396 |
+
}
|
397 |
+
|
398 |
}
|
399 |
add_action( 'show_user_profile', 'pmpro_membership_level_profile_fields' );
|
400 |
add_action( 'edit_user_profile', 'pmpro_membership_level_profile_fields' );
|
464 |
<tr>
|
465 |
<td><?php echo date_i18n( get_option( 'date_format'), $invoice->timestamp ); ?></td>
|
466 |
<td class="order_code column-order_code has-row-actions">
|
467 |
+
<a href="<?php echo esc_url( add_query_arg( array( 'page' => 'pmpro-orders', 'order' => $invoice->id ), admin_url( 'admin.php' ) ) ); ?>"><?php echo esc_html( $invoice->code ); ?></a><br />
|
468 |
<div class="row-actions">
|
469 |
<span class="edit">
|
470 |
+
<a title="<?php esc_attr_e( 'Edit', 'paid-memberships-pro' ); ?>" href="<?php echo esc_url( add_query_arg( array( 'page' => 'pmpro-orders', 'order' => $invoice->id ), admin_url('admin.php' ) ) ); ?>"><?php esc_html_e( 'Edit', 'paid-memberships-pro' ); ?></a>
|
471 |
</span> |
|
472 |
<span class="print">
|
473 |
+
<a target="_blank" title="<?php esc_attr_e( 'Print', 'paid-memberships-pro' ); ?>" href="<?php echo esc_url( add_query_arg( array( 'action' => 'pmpro_orders_print_view', 'order' => $invoice->id ), admin_url('admin-ajax.php' ) ) ); ?>"><?php esc_html_e( 'Print', 'paid-memberships-pro' ); ?></a>
|
474 |
</span>
|
475 |
<?php if ( function_exists( 'pmpro_add_email_order_modal' ) ) { ?>
|
476 |
|
|
477 |
<span class="email">
|
478 |
+
<a title="<?php esc_attr_e( 'Email', 'paid-memberships-pro' ); ?>" href="#TB_inline?width=600&height=200&inlineId=email_invoice" class="thickbox email_link" data-order="<?php echo esc_attr( $invoice->id ); ?>"><?php esc_html_e( 'Email', 'paid-memberships-pro' ); ?></a>
|
479 |
</span>
|
480 |
<?php } ?>
|
481 |
</div> <!-- end .row-actions -->
|
827 |
do_action( 'pmpro_show_user_profile', $current_user );
|
828 |
?>
|
829 |
<input type="hidden" name="action" value="update-profile" />
|
830 |
+
<input type="hidden" name="user_id" value="<?php echo esc_attr( $current_user->ID ) ; ?>" />
|
831 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_submit' ); ?>">
|
832 |
<hr />
|
833 |
+
<input type="submit" name="submit" class="<?php echo pmpro_get_element_class( 'pmpro_btn pmpro_btn-submit', 'pmpro_btn-submit' ); ?>" value="<?php esc_attr_e( 'Update Profile', 'paid-memberships-pro' );?>" />
|
834 |
+
<input type="button" name="cancel" class="<?php echo pmpro_get_element_class( 'pmpro_btn pmpro_btn-cancel', 'pmpro_btn-cancel' ); ?>" value="<?php esc_attr_e( 'Cancel', 'paid-memberships-pro' );?>" onclick="location.href='<?php echo pmpro_url( 'account'); ?>';" />
|
835 |
</div>
|
836 |
</form>
|
837 |
</div> <!-- end pmpro_member_profile_edit_wrap -->
|
917 |
function pmpro_change_password_form() {
|
918 |
global $current_user, $pmpro_msg, $pmpro_msgt;
|
919 |
?>
|
920 |
+
<h2><?php esc_html_e( 'Change Password', 'paid-memberships-pro' ); ?></h2>
|
921 |
<?php if ( ! empty( $pmpro_msg ) ) { ?>
|
922 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_message ' . $pmpro_msgt, $pmpro_msgt ); ?>">
|
923 |
<?php echo esc_html( $pmpro_msg ); ?>
|
931 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_checkout_box-password' ); ?>">
|
932 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_change_password-fields' ); ?>">
|
933 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_change_password-field pmpro_change_password-field-password_current', 'pmpro_change_password-field-password_current' ); ?>">
|
934 |
+
<label for="password_current"><?php esc_html_e( 'Current Password', 'paid-memberships-pro' ); ?></label></th>
|
935 |
<input type="password" name="password_current" id="password_current" value="" class="<?php echo pmpro_get_element_class( 'input', 'password_current' ); ?>" />
|
936 |
<span class="<?php echo pmpro_get_element_class( 'pmpro_asterisk' ); ?>"> <abbr title="<?php _e( 'Required Field', 'paid-memberships-pro' ); ?>">*</abbr></span>
|
937 |
</div> <!-- end pmpro_change_password-field-password_current -->
|
938 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_change_password-field pmpro_change_password-field-pass1', 'pmpro_change_password-field-pass1' ); ?>">
|
939 |
+
<label for="pass1"><?php esc_html_e( 'New Password', 'paid-memberships-pro' ); ?></label></th>
|
940 |
<input type="password" name="pass1" id="pass1" value="" class="<?php echo pmpro_get_element_class( 'input pass1', 'pass1' ); ?>" autocomplete="off" />
|
941 |
<span class="<?php echo pmpro_get_element_class( 'pmpro_asterisk' ); ?>"> <abbr title="<?php _e( 'Required Field', 'paid-memberships-pro' ); ?>">*</abbr></span>
|
942 |
+
<div id="pass-strength-result" class="hide-if-no-js" aria-live="polite"><?php esc_html_e( 'Strength Indicator', 'paid-memberships-pro' ); ?></div>
|
943 |
<p class="<?php echo pmpro_get_element_class( 'lite' ); ?>"><?php echo wp_get_password_hint(); ?></p>
|
944 |
</div> <!-- end pmpro_change_password-field-pass1 -->
|
945 |
<div class="<?php echo pmpro_get_element_class( 'pmpro_change_password-field pmpro_change_password-field-pass2', 'pmpro_change_password-field-pass2' ); ?>">
|
946 |
+
<label for="pass2"><?php esc_html_e( 'Confirm New Password', 'paid-memberships-pro' ); ?></label></th>
|
947 |
<input type="password" name="pass2" id="pass2" value="" class="<?php echo pmpro_get_element_class( 'input', 'pass2' ); ?>" autocomplete="off" />
|
948 |
<span class="<?php echo pmpro_get_element_class( 'pmpro_asterisk' ); ?>"> <abbr title="<?php _e( 'Required Field', 'paid-memberships-pro' ); ?>">*</abbr></span>
|
949 |
</div> <!-- end pmpro_change_password-field-pass2 -->
|
includes/rest-api.php
CHANGED
@@ -154,6 +154,21 @@ if ( class_exists( 'WP_REST_Controller' ) ) {
|
|
154 |
),
|
155 |
));
|
156 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
157 |
/**
|
158 |
* Get membership level after checkout options are applied.
|
159 |
* @since 2.4
|
@@ -685,6 +700,51 @@ if ( class_exists( 'WP_REST_Controller' ) ) {
|
|
685 |
return new WP_REST_Response( $discount_code, 200 );
|
686 |
}
|
687 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
688 |
/**
|
689 |
* Get a membership level at checkout.
|
690 |
* Note: Not compatible with MMPU.
|
@@ -876,6 +936,7 @@ if ( class_exists( 'WP_REST_Controller' ) ) {
|
|
876 |
`u`.`ID` AS `user_id`,
|
877 |
`u`.`user_email`,
|
878 |
`u`.`user_nicename`,
|
|
|
879 |
`o`.`billing_name`,
|
880 |
`o`.`billing_street`,
|
881 |
`o`.`billing_city`,
|
@@ -929,6 +990,7 @@ if ( class_exists( 'WP_REST_Controller' ) ) {
|
|
929 |
'/pmpro/v1/cancel_membership_level' => 'pmpro_edit_memberships',
|
930 |
'/pmpro/v1/membership_level' => true,
|
931 |
'/pmpro/v1/discount_code' => 'pmpro_discountcodes',
|
|
|
932 |
'/pmpro/v1/checkout_level' => true,
|
933 |
'/pmpro/v1/checkout_levels' => true,
|
934 |
'/pmpro/v1/me' => true,
|
154 |
),
|
155 |
));
|
156 |
|
157 |
+
/**
|
158 |
+
* Retrieve an order.
|
159 |
+
* @since 2.8
|
160 |
+
* Example: https://example.com/wp-json/pmpro/v1/order
|
161 |
+
*/
|
162 |
+
register_rest_route( $pmpro_namespace, '/order',
|
163 |
+
array(
|
164 |
+
array(
|
165 |
+
'methods' => WP_REST_Server::READABLE,
|
166 |
+
'callback' => array( $this, 'pmpro_rest_api_get_order' ),
|
167 |
+
'permission_callback' => array( $this, 'pmpro_rest_api_get_permissions_check' )
|
168 |
+
),
|
169 |
+
));
|
170 |
+
add_filter( 'pmpro_rest_api_permissions', array( $this, 'pmpro_rest_api_permissions_get_order' ), 10, 2 );
|
171 |
+
|
172 |
/**
|
173 |
* Get membership level after checkout options are applied.
|
174 |
* @since 2.4
|
700 |
return new WP_REST_Response( $discount_code, 200 );
|
701 |
}
|
702 |
|
703 |
+
/**
|
704 |
+
* Get an order.
|
705 |
+
* @since 2.8
|
706 |
+
* Example: https://example.com/wp-json/pmpro/v1/order
|
707 |
+
*/
|
708 |
+
function pmpro_rest_api_get_order( $request ) {
|
709 |
+
if ( ! class_exists( 'MemberOrder' ) ) {
|
710 |
+
return new WP_REST_Response( 'Paid Memberships Pro order class not found.', 404 );
|
711 |
+
}
|
712 |
+
|
713 |
+
$params = $request->get_params();
|
714 |
+
$code = isset( $params['code'] ) ? sanitize_text_field( $params['code'] ) : null;
|
715 |
+
|
716 |
+
if ( empty( $code ) ) {
|
717 |
+
return new WP_REST_Response( 'No order code sent.', 400 );
|
718 |
+
}
|
719 |
+
|
720 |
+
return new WP_REST_Response( new MemberOrder( $code ), 200 );
|
721 |
+
}
|
722 |
+
|
723 |
+
/**
|
724 |
+
* Make sure that users can GET their own orders.
|
725 |
+
* @since 2.8
|
726 |
+
*/
|
727 |
+
function pmpro_rest_api_permissions_get_order( $permission, $request ) {
|
728 |
+
$method = $request->get_method();
|
729 |
+
$route = $request->get_route();
|
730 |
+
|
731 |
+
// Check if the user does not have access but is trying to get an order.
|
732 |
+
if ( ! $permission && 'GET' === $method && '/pmpro/v1/order' === $route ) {
|
733 |
+
// Check if the order belongs to the user.
|
734 |
+
$params = $request->get_params();
|
735 |
+
$code = isset( $params['code'] ) ? sanitize_text_field( $params['code'] ) : null;
|
736 |
+
|
737 |
+
if ( ! empty( $code ) ) {
|
738 |
+
$order = new MemberOrder( $code );
|
739 |
+
|
740 |
+
if ( $order->user_id == get_current_user_id() ) {
|
741 |
+
return true;
|
742 |
+
}
|
743 |
+
}
|
744 |
+
}
|
745 |
+
return $permission;
|
746 |
+
}
|
747 |
+
|
748 |
/**
|
749 |
* Get a membership level at checkout.
|
750 |
* Note: Not compatible with MMPU.
|
936 |
`u`.`ID` AS `user_id`,
|
937 |
`u`.`user_email`,
|
938 |
`u`.`user_nicename`,
|
939 |
+
`o`.`membership_id`,
|
940 |
`o`.`billing_name`,
|
941 |
`o`.`billing_street`,
|
942 |
`o`.`billing_city`,
|
990 |
'/pmpro/v1/cancel_membership_level' => 'pmpro_edit_memberships',
|
991 |
'/pmpro/v1/membership_level' => true,
|
992 |
'/pmpro/v1/discount_code' => 'pmpro_discountcodes',
|
993 |
+
'/pmpro/v1/order' => 'pmpro_orders',
|
994 |
'/pmpro/v1/checkout_level' => true,
|
995 |
'/pmpro/v1/checkout_levels' => true,
|
996 |
'/pmpro/v1/me' => true,
|
includes/updates.php
CHANGED
@@ -147,7 +147,7 @@ function pmpro_show_notice_for_reports() {
|
|
147 |
|
148 |
?>
|
149 |
<div class="notice notice-warning">
|
150 |
-
<p><?php
|
151 |
</div>
|
152 |
<?php
|
153 |
}
|
147 |
|
148 |
?>
|
149 |
<div class="notice notice-warning">
|
150 |
+
<p><?php echo sprintf( __( 'You currently have the Better Login Reports Add On activated. This functionality has now been merged into Paid Memberships Pro. %s', 'paid-memberships-pro' ), "<br/><a href='". esc_url( admin_url( '/plugins.php?s=better%20logins%20report%20add%20on&plugin_status=inactive&pmpro-deactivate-reports=true' ) ) . "'>" . __( 'Please deactivate and remove this plugin.', 'paid-memberships-pro' ) . "</a>" ); ?></p>
|
151 |
</div>
|
152 |
<?php
|
153 |
}
|
includes/updates/upgrade_1.php
CHANGED
@@ -50,6 +50,9 @@ function pmpro_upgrade_1()
|
|
50 |
//let's pause the nag for the first week of use
|
51 |
$pmpro_nag_paused = current_time('timestamp')+(3600*24*7);
|
52 |
update_option('pmpro_nag_paused', $pmpro_nag_paused, 'no');
|
|
|
|
|
|
|
53 |
|
54 |
//db update
|
55 |
pmpro_db_delta();
|
50 |
//let's pause the nag for the first week of use
|
51 |
$pmpro_nag_paused = current_time('timestamp')+(3600*24*7);
|
52 |
update_option('pmpro_nag_paused', $pmpro_nag_paused, 'no');
|
53 |
+
|
54 |
+
//wisdom tracking turned off by default
|
55 |
+
pmpro_setOption('wisdom_opt_out', 1);
|
56 |
|
57 |
//db update
|
58 |
pmpro_db_delta();
|
includes/updates/upgrade_1_8_7.php
CHANGED
@@ -3,17 +3,17 @@
|
|
3 |
Remove extra cron jobs inserted in version 1.8.7 and 1.8.7.1
|
4 |
*/
|
5 |
function pmpro_upgrade_1_8_7() {
|
6 |
-
|
7 |
//fix cron jobs
|
8 |
$jobs = _get_cron_array();
|
9 |
-
|
10 |
// Remove all pmpro cron jobs (for now).
|
11 |
foreach( $jobs as $when => $job_array ) {
|
12 |
|
13 |
foreach($job_array as $name => $job) {
|
14 |
//delete pmpro cron
|
15 |
if ( false !== stripos( $name, 'pmpro_cron') )
|
16 |
-
unset($jobs[$when][$name]);
|
17 |
}
|
18 |
|
19 |
//delete empty cron time slots
|
@@ -29,7 +29,7 @@ function pmpro_upgrade_1_8_7() {
|
|
29 |
pmpro_maybe_schedule_event(current_time('timestamp')+1, 'daily', 'pmpro_cron_expiration_warnings');
|
30 |
pmpro_maybe_schedule_event(current_time('timestamp'), 'monthly', 'pmpro_cron_credit_card_expiring_warnings');
|
31 |
|
32 |
-
pmpro_setOption("db_version", "1.87");
|
33 |
|
34 |
return 1.87;
|
35 |
-
}
|
3 |
Remove extra cron jobs inserted in version 1.8.7 and 1.8.7.1
|
4 |
*/
|
5 |
function pmpro_upgrade_1_8_7() {
|
6 |
+
|
7 |
//fix cron jobs
|
8 |
$jobs = _get_cron_array();
|
9 |
+
|
10 |
// Remove all pmpro cron jobs (for now).
|
11 |
foreach( $jobs as $when => $job_array ) {
|
12 |
|
13 |
foreach($job_array as $name => $job) {
|
14 |
//delete pmpro cron
|
15 |
if ( false !== stripos( $name, 'pmpro_cron') )
|
16 |
+
unset($jobs[$when][$name]);
|
17 |
}
|
18 |
|
19 |
//delete empty cron time slots
|
29 |
pmpro_maybe_schedule_event(current_time('timestamp')+1, 'daily', 'pmpro_cron_expiration_warnings');
|
30 |
pmpro_maybe_schedule_event(current_time('timestamp'), 'monthly', 'pmpro_cron_credit_card_expiring_warnings');
|
31 |
|
32 |
+
pmpro_setOption("db_version", "1.87");
|
33 |
|
34 |
return 1.87;
|
35 |
+
}
|
includes/updates/upgrade_1_9_4.php
CHANGED
@@ -23,8 +23,8 @@ function pmpro_upgrade_1_9_4() {
|
|
23 |
function pmpro_upgrade_1_9_4_show_div_notice() {
|
24 |
?>
|
25 |
<div class="notice notice-warning">
|
26 |
-
<p><?php
|
27 |
-
<?php _e('If you notice UI issues after upgrading, <a href="https://www.paidmembershipspro.com/add-ons/table-layout-plugin-pages/">see this free add on to temporarily roll back to the table-based layout while you resolve the issues</a>.', 'paid-memberships-pro' ); ?> <a href="<?php echo add_query_arg('pmpro_div_notice_hide', '1', $_SERVER['REQUEST_URI']);?>"><?php
|
28 |
</div>
|
29 |
<?php
|
30 |
}
|
@@ -37,4 +37,4 @@ function pmpro_update_1_9_4_notice_dismiss() {
|
|
37 |
}
|
38 |
}
|
39 |
|
40 |
-
add_action( 'admin_init', 'pmpro_update_1_9_4_notice_dismiss' );
|
23 |
function pmpro_upgrade_1_9_4_show_div_notice() {
|
24 |
?>
|
25 |
<div class="notice notice-warning">
|
26 |
+
<p><?php esc_html_e( 'We have detected that you are using a custom checkout page template for Paid Memberships Pro. This was recently changed and may need to be updated in order to display correctly.', 'paid-memberships-pro')?>
|
27 |
+
<?php _e('If you notice UI issues after upgrading, <a href="https://www.paidmembershipspro.com/add-ons/table-layout-plugin-pages/">see this free add on to temporarily roll back to the table-based layout while you resolve the issues</a>.', 'paid-memberships-pro' ); ?> <a href="<?php echo esc_url( add_query_arg( 'pmpro_div_notice_hide', '1', $_SERVER['REQUEST_URI'] ) );?>"><?php esc_html_e( 'Dismiss', 'paid-memberships-pro' );?></a></p>
|
28 |
</div>
|
29 |
<?php
|
30 |
}
|
37 |
}
|
38 |
}
|
39 |
|
40 |
+
add_action( 'admin_init', 'pmpro_update_1_9_4_notice_dismiss' );
|
includes/updates/upgrade_2_6.php
CHANGED
@@ -36,7 +36,7 @@ function pmpro_upgrade_2_6() {
|
|
36 |
if ( empty( $admin_billing ) ) {
|
37 |
pmpro_setOption( 'email_billing_admin_disabled', 'true' );
|
38 |
}
|
39 |
-
|
40 |
// Reschedule cron job for hourly checks.
|
41 |
$next = wp_next_scheduled( 'pmpro_cron_expire_memberships' );
|
42 |
if ( ! empty( $next ) ) {
|
36 |
if ( empty( $admin_billing ) ) {
|
37 |
pmpro_setOption( 'email_billing_admin_disabled', 'true' );
|
38 |
}
|
39 |
+
|
40 |
// Reschedule cron job for hourly checks.
|
41 |
$next = wp_next_scheduled( 'pmpro_cron_expire_memberships' );
|
42 |
if ( ! empty( $next ) ) {
|
includes/upgradecheck.php
CHANGED
@@ -267,8 +267,8 @@ function pmpro_checkForUpgrades()
|
|
267 |
pmpro_db_delta();
|
268 |
$pmpro_db_version = pmpro_upgrade_2_6();
|
269 |
pmpro_setOption( 'db_version', '2.6' );
|
270 |
-
}
|
271 |
-
|
272 |
/**
|
273 |
* Version 2.7.1
|
274 |
* Running pmpro_db_delta to fix the primary key in a couple tables.
|
@@ -277,6 +277,15 @@ function pmpro_checkForUpgrades()
|
|
277 |
pmpro_db_delta();
|
278 |
pmpro_setOption( 'db_version', '2.71' );
|
279 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
280 |
}
|
281 |
|
282 |
function pmpro_db_delta()
|
267 |
pmpro_db_delta();
|
268 |
$pmpro_db_version = pmpro_upgrade_2_6();
|
269 |
pmpro_setOption( 'db_version', '2.6' );
|
270 |
+
}
|
271 |
+
|
272 |
/**
|
273 |
* Version 2.7.1
|
274 |
* Running pmpro_db_delta to fix the primary key in a couple tables.
|
277 |
pmpro_db_delta();
|
278 |
pmpro_setOption( 'db_version', '2.71' );
|
279 |
}
|
280 |
+
|
281 |
+
/**
|
282 |
+
* Version 2.8
|
283 |
+
* Default option for Wisdom tracking.
|
284 |
+
*/
|
285 |
+
if ( $pmpro_db_version < 2.8 ) {
|
286 |
+
pmpro_setOption('wisdom_opt_out', 1);
|
287 |
+
pmpro_setOption( 'db_version', '2.8' );
|
288 |
+
}
|
289 |
}
|
290 |
|
291 |
function pmpro_db_delta()
|
js/blocks.build.js
CHANGED
@@ -1,1883 +1 @@
|
|
1 |
-
/******/ (function(modules) { // webpackBootstrap
|
2 |
-
/******/ // The module cache
|
3 |
-
/******/ var installedModules = {};
|
4 |
-
/******/
|
5 |
-
/******/ // The require function
|
6 |
-
/******/ function __webpack_require__(moduleId) {
|
7 |
-
/******/
|
8 |
-
/******/ // Check if module is in cache
|
9 |
-
/******/ if(installedModules[moduleId]) {
|
10 |
-
/******/ return installedModules[moduleId].exports;
|
11 |
-
/******/ }
|
12 |
-
/******/ // Create a new module (and put it into the cache)
|
13 |
-
/******/ var module = installedModules[moduleId] = {
|
14 |
-
/******/ i: moduleId,
|
15 |
-
/******/ l: false,
|
16 |
-
/******/ exports: {}
|
17 |
-
/******/ };
|
18 |
-
/******/
|
19 |
-
/******/ // Execute the module function
|
20 |
-
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
21 |
-
/******/
|
22 |
-
/******/ // Flag the module as loaded
|
23 |
-
/******/ module.l = true;
|
24 |
-
/******/
|
25 |
-
/******/ // Return the exports of the module
|
26 |
-
/******/ return module.exports;
|
27 |
-
/******/ }
|
28 |
-
/******/
|
29 |
-
/******/
|
30 |
-
/******/ // expose the modules object (__webpack_modules__)
|
31 |
-
/******/ __webpack_require__.m = modules;
|
32 |
-
/******/
|
33 |
-
/******/ // expose the module cache
|
34 |
-
/******/ __webpack_require__.c = installedModules;
|
35 |
-
/******/
|
36 |
-
/******/ // define getter function for harmony exports
|
37 |
-
/******/ __webpack_require__.d = function(exports, name, getter) {
|
38 |
-
/******/ if(!__webpack_require__.o(exports, name)) {
|
39 |
-
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
|
40 |
-
/******/ }
|
41 |
-
/******/ };
|
42 |
-
/******/
|
43 |
-
/******/ // define __esModule on exports
|
44 |
-
/******/ __webpack_require__.r = function(exports) {
|
45 |
-
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
46 |
-
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
47 |
-
/******/ }
|
48 |
-
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
49 |
-
/******/ };
|
50 |
-
/******/
|
51 |
-
/******/ // create a fake namespace object
|
52 |
-
/******/ // mode & 1: value is a module id, require it
|
53 |
-
/******/ // mode & 2: merge all properties of value into the ns
|
54 |
-
/******/ // mode & 4: return value when already ns object
|
55 |
-
/******/ // mode & 8|1: behave like require
|
56 |
-
/******/ __webpack_require__.t = function(value, mode) {
|
57 |
-
/******/ if(mode & 1) value = __webpack_require__(value);
|
58 |
-
/******/ if(mode & 8) return value;
|
59 |
-
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
|
60 |
-
/******/ var ns = Object.create(null);
|
61 |
-
/******/ __webpack_require__.r(ns);
|
62 |
-
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
|
63 |
-
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
|
64 |
-
/******/ return ns;
|
65 |
-
/******/ };
|
66 |
-
/******/
|
67 |
-
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
68 |
-
/******/ __webpack_require__.n = function(module) {
|
69 |
-
/******/ var getter = module && module.__esModule ?
|
70 |
-
/******/ function getDefault() { return module['default']; } :
|
71 |
-
/******/ function getModuleExports() { return module; };
|
72 |
-
/******/ __webpack_require__.d(getter, 'a', getter);
|
73 |
-
/******/ return getter;
|
74 |
-
/******/ };
|
75 |
-
/******/
|
76 |
-
/******/ // Object.prototype.hasOwnProperty.call
|
77 |
-
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
78 |
-
/******/
|
79 |
-
/******/ // __webpack_public_path__
|
80 |
-
/******/ __webpack_require__.p = "";
|
81 |
-
/******/
|
82 |
-
/******/
|
83 |
-
/******/ // Load entry module and return exports
|
84 |
-
/******/ return __webpack_require__(__webpack_require__.s = "./blocks/blocks.js");
|
85 |
-
/******/ })
|
86 |
-
/************************************************************************/
|
87 |
-
/******/ ({
|
88 |
-
|
89 |
-
/***/ "./blocks/account-invoices-section/block.js":
|
90 |
-
/*!**************************************************!*\
|
91 |
-
!*** ./blocks/account-invoices-section/block.js ***!
|
92 |
-
\**************************************************/
|
93 |
-
/*! exports provided: default */
|
94 |
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
95 |
-
|
96 |
-
"use strict";
|
97 |
-
__webpack_require__.r(__webpack_exports__);
|
98 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
|
99 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
|
100 |
-
|
101 |
-
|
102 |
-
/**
|
103 |
-
* Block: PMPro Membership Account: Invoices
|
104 |
-
*
|
105 |
-
* Displays the Membership Account > Invoices page section.
|
106 |
-
*
|
107 |
-
*/
|
108 |
-
|
109 |
-
/**
|
110 |
-
* Internal block libraries
|
111 |
-
*/
|
112 |
-
var __ = wp.i18n.__;
|
113 |
-
var registerBlockType = wp.blocks.registerBlockType;
|
114 |
-
/**
|
115 |
-
* Register block
|
116 |
-
*/
|
117 |
-
|
118 |
-
/* harmony default export */ __webpack_exports__["default"] = (registerBlockType('pmpro/account-invoices-section', {
|
119 |
-
title: __('Membership Account: Invoices', 'paid-memberships-pro'),
|
120 |
-
description: __('Displays the member\'s invoices.', 'paid-memberships-pro'),
|
121 |
-
category: 'pmpro',
|
122 |
-
icon: {
|
123 |
-
background: '#2997c8',
|
124 |
-
foreground: '#ffffff',
|
125 |
-
src: 'archive'
|
126 |
-
},
|
127 |
-
keywords: [__('pmpro', 'paid-memberships-pro')],
|
128 |
-
supports: {},
|
129 |
-
attributes: {},
|
130 |
-
edit: function edit() {
|
131 |
-
return [Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
|
132 |
-
className: "pmpro-block-element"
|
133 |
-
}, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
|
134 |
-
className: "pmpro-block-title"
|
135 |
-
}, __('Paid Memberships Pro', 'paid-memberships-pro')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
|
136 |
-
className: "pmpro-block-subtitle"
|
137 |
-
}, " ", __('Membership Account: Invoices', 'paid-memberships-pro')))];
|
138 |
-
},
|
139 |
-
save: function save() {
|
140 |
-
return null;
|
141 |
-
}
|
142 |
-
}));
|
143 |
-
|
144 |
-
/***/ }),
|
145 |
-
|
146 |
-
/***/ "./blocks/account-links-section/block.js":
|
147 |
-
/*!***********************************************!*\
|
148 |
-
!*** ./blocks/account-links-section/block.js ***!
|
149 |
-
\***********************************************/
|
150 |
-
/*! exports provided: default */
|
151 |
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
152 |
-
|
153 |
-
"use strict";
|
154 |
-
__webpack_require__.r(__webpack_exports__);
|
155 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
|
156 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
|
157 |
-
|
158 |
-
|
159 |
-
/**
|
160 |
-
* Block: PMPro Membership Account: Member Links
|
161 |
-
*
|
162 |
-
* Displays the Membership Account > Member Links page section.
|
163 |
-
*
|
164 |
-
*/
|
165 |
-
|
166 |
-
/**
|
167 |
-
* Internal block libraries
|
168 |
-
*/
|
169 |
-
var __ = wp.i18n.__;
|
170 |
-
var registerBlockType = wp.blocks.registerBlockType;
|
171 |
-
/**
|
172 |
-
* Register block
|
173 |
-
*/
|
174 |
-
|
175 |
-
/* harmony default export */ __webpack_exports__["default"] = (registerBlockType('pmpro/account-links-section', {
|
176 |
-
title: __('Membership Account: Links', 'paid-memberships-pro'),
|
177 |
-
description: __('Displays the member\'s member links. This block is only visible if other Add Ons or custom code have added links.', 'paid-memberships-pro'),
|
178 |
-
category: 'pmpro',
|
179 |
-
icon: {
|
180 |
-
background: '#2997c8',
|
181 |
-
foreground: '#ffffff',
|
182 |
-
src: 'external'
|
183 |
-
},
|
184 |
-
keywords: [__('pmpro', 'paid-memberships-pro')],
|
185 |
-
supports: {},
|
186 |
-
attributes: {},
|
187 |
-
edit: function edit() {
|
188 |
-
return [Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
|
189 |
-
className: "pmpro-block-element"
|
190 |
-
}, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
|
191 |
-
className: "pmpro-block-title"
|
192 |
-
}, __('Paid Memberships Pro', 'paid-memberships-pro')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
|
193 |
-
className: "pmpro-block-subtitle"
|
194 |
-
}, __('Membership Account: Member Links', 'paid-memberships-pro')))];
|
195 |
-
},
|
196 |
-
save: function save() {
|
197 |
-
return null;
|
198 |
-
}
|
199 |
-
}));
|
200 |
-
|
201 |
-
/***/ }),
|
202 |
-
|
203 |
-
/***/ "./blocks/account-membership-section/block.js":
|
204 |
-
/*!****************************************************!*\
|
205 |
-
!*** ./blocks/account-membership-section/block.js ***!
|
206 |
-
\****************************************************/
|
207 |
-
/*! exports provided: default */
|
208 |
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
209 |
-
|
210 |
-
"use strict";
|
211 |
-
__webpack_require__.r(__webpack_exports__);
|
212 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
|
213 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
|
214 |
-
|
215 |
-
|
216 |
-
/**
|
217 |
-
* Block: PMPro Membership Account: Memberships
|
218 |
-
*
|
219 |
-
* Displays the Membership Account > My Memberships page section.
|
220 |
-
*
|
221 |
-
*/
|
222 |
-
|
223 |
-
/**
|
224 |
-
* Internal block libraries
|
225 |
-
*/
|
226 |
-
var __ = wp.i18n.__;
|
227 |
-
var registerBlockType = wp.blocks.registerBlockType;
|
228 |
-
/**
|
229 |
-
* Register block
|
230 |
-
*/
|
231 |
-
|
232 |
-
/* harmony default export */ __webpack_exports__["default"] = (registerBlockType('pmpro/account-membership-section', {
|
233 |
-
title: __('Membership Account: Memberships', 'paid-memberships-pro'),
|
234 |
-
description: __('Displays the member\'s membership information.', 'paid-memberships-pro'),
|
235 |
-
category: 'pmpro',
|
236 |
-
icon: {
|
237 |
-
background: '#2997c8',
|
238 |
-
foreground: '#ffffff',
|
239 |
-
src: 'groups'
|
240 |
-
},
|
241 |
-
keywords: [__('pmpro', 'paid-memberships-pro')],
|
242 |
-
supports: {},
|
243 |
-
attributes: {},
|
244 |
-
edit: function edit() {
|
245 |
-
return [Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
|
246 |
-
className: "pmpro-block-element"
|
247 |
-
}, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
|
248 |
-
className: "pmpro-block-title"
|
249 |
-
}, __('Paid Memberships Pro', 'paid-memberships-pro')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
|
250 |
-
className: "pmpro-block-subtitle"
|
251 |
-
}, __('Membership Account: My Memberships', 'paid-memberships-pro')))];
|
252 |
-
},
|
253 |
-
save: function save() {
|
254 |
-
return null;
|
255 |
-
}
|
256 |
-
}));
|
257 |
-
|
258 |
-
/***/ }),
|
259 |
-
|
260 |
-
/***/ "./blocks/account-page/block.js":
|
261 |
-
/*!**************************************!*\
|
262 |
-
!*** ./blocks/account-page/block.js ***!
|
263 |
-
\**************************************/
|
264 |
-
/*! exports provided: default */
|
265 |
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
266 |
-
|
267 |
-
"use strict";
|
268 |
-
__webpack_require__.r(__webpack_exports__);
|
269 |
-
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js");
|
270 |
-
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
|
271 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
|
272 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__);
|
273 |
-
/* harmony import */ var _inspector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./inspector */ "./blocks/account-page/inspector.js");
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
278 |
-
|
279 |
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
280 |
-
|
281 |
-
/**
|
282 |
-
* Block: PMPro Membership Account
|
283 |
-
*
|
284 |
-
* Displays the Membership Account page.
|
285 |
-
*
|
286 |
-
*/
|
287 |
-
|
288 |
-
/**
|
289 |
-
* Block dependencies
|
290 |
-
*/
|
291 |
-
|
292 |
-
/**
|
293 |
-
* Internal block libraries
|
294 |
-
*/
|
295 |
-
|
296 |
-
var __ = wp.i18n.__;
|
297 |
-
var registerBlockType = wp.blocks.registerBlockType;
|
298 |
-
/**
|
299 |
-
* Register block
|
300 |
-
*/
|
301 |
-
|
302 |
-
/* harmony default export */ __webpack_exports__["default"] = (registerBlockType('pmpro/account-page', {
|
303 |
-
title: __('Membership Account Page', 'paid-memberships-pro'),
|
304 |
-
description: __('Displays the sections of the Membership Account page as selected below.', 'paid-memberships-pro'),
|
305 |
-
category: 'pmpro',
|
306 |
-
icon: {
|
307 |
-
background: '#2997c8',
|
308 |
-
foreground: '#ffffff',
|
309 |
-
src: 'admin-users'
|
310 |
-
},
|
311 |
-
keywords: [__('pmpro', 'paid-memberships-pro')],
|
312 |
-
supports: {},
|
313 |
-
attributes: {
|
314 |
-
membership: {
|
315 |
-
type: 'boolean',
|
316 |
-
default: false
|
317 |
-
},
|
318 |
-
profile: {
|
319 |
-
type: 'boolean',
|
320 |
-
default: false
|
321 |
-
},
|
322 |
-
invoices: {
|
323 |
-
type: 'boolean',
|
324 |
-
default: false
|
325 |
-
},
|
326 |
-
links: {
|
327 |
-
type: 'boolean',
|
328 |
-
default: false
|
329 |
-
}
|
330 |
-
},
|
331 |
-
edit: function edit(props) {
|
332 |
-
var setAttributes = props.setAttributes,
|
333 |
-
isSelected = props.isSelected;
|
334 |
-
return [isSelected && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_inspector__WEBPACK_IMPORTED_MODULE_2__["default"], _objectSpread({
|
335 |
-
setAttributes: setAttributes
|
336 |
-
}, props)), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("div", {
|
337 |
-
className: "pmpro-block-element"
|
338 |
-
}, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("span", {
|
339 |
-
className: "pmpro-block-title"
|
340 |
-
}, __('Paid Memberships Pro', 'paid-memberships-pro')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("span", {
|
341 |
-
className: "pmpro-block-subtitle"
|
342 |
-
}, __('Membership Account Page', 'paid-memberships-pro')))];
|
343 |
-
},
|
344 |
-
save: function save() {
|
345 |
-
return null;
|
346 |
-
}
|
347 |
-
}));
|
348 |
-
|
349 |
-
/***/ }),
|
350 |
-
|
351 |
-
/***/ "./blocks/account-page/inspector.js":
|
352 |
-
/*!******************************************!*\
|
353 |
-
!*** ./blocks/account-page/inspector.js ***!
|
354 |
-
\******************************************/
|
355 |
-
/*! exports provided: default */
|
356 |
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
357 |
-
|
358 |
-
"use strict";
|
359 |
-
__webpack_require__.r(__webpack_exports__);
|
360 |
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Inspector; });
|
361 |
-
/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js");
|
362 |
-
/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);
|
363 |
-
/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js");
|
364 |
-
/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);
|
365 |
-
/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ "./node_modules/@babel/runtime/helpers/inherits.js");
|
366 |
-
/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__);
|
367 |
-
/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js");
|
368 |
-
/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);
|
369 |
-
/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js");
|
370 |
-
/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);
|
371 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
|
372 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__);
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }
|
381 |
-
|
382 |
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
383 |
-
|
384 |
-
/**
|
385 |
-
* Internal block libraries
|
386 |
-
*/
|
387 |
-
var __ = wp.i18n.__;
|
388 |
-
var Component = wp.element.Component;
|
389 |
-
var _wp$components = wp.components,
|
390 |
-
PanelBody = _wp$components.PanelBody,
|
391 |
-
CheckboxControl = _wp$components.CheckboxControl;
|
392 |
-
var InspectorControls = wp.blockEditor.InspectorControls;
|
393 |
-
/**
|
394 |
-
* Create an Inspector Controls wrapper Component
|
395 |
-
*/
|
396 |
-
|
397 |
-
var Inspector = /*#__PURE__*/function (_Component) {
|
398 |
-
_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(Inspector, _Component);
|
399 |
-
|
400 |
-
var _super = _createSuper(Inspector);
|
401 |
-
|
402 |
-
function Inspector() {
|
403 |
-
_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Inspector);
|
404 |
-
|
405 |
-
return _super.apply(this, arguments);
|
406 |
-
}
|
407 |
-
|
408 |
-
_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Inspector, [{
|
409 |
-
key: "render",
|
410 |
-
value: function render() {
|
411 |
-
var _this$props = this.props,
|
412 |
-
_this$props$attribute = _this$props.attributes,
|
413 |
-
membership = _this$props$attribute.membership,
|
414 |
-
profile = _this$props$attribute.profile,
|
415 |
-
invoices = _this$props$attribute.invoices,
|
416 |
-
links = _this$props$attribute.links,
|
417 |
-
setAttributes = _this$props.setAttributes;
|
418 |
-
return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(InspectorControls, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(PanelBody, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(CheckboxControl, {
|
419 |
-
label: __("Show 'My Memberships' Section", 'paid-memberships-pro'),
|
420 |
-
checked: membership,
|
421 |
-
onChange: function onChange(membership) {
|
422 |
-
return setAttributes({
|
423 |
-
membership: membership
|
424 |
-
});
|
425 |
-
}
|
426 |
-
})), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(PanelBody, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(CheckboxControl, {
|
427 |
-
label: __("Show 'Profile' Section", 'paid-memberships-pro'),
|
428 |
-
checked: profile,
|
429 |
-
onChange: function onChange(profile) {
|
430 |
-
return setAttributes({
|
431 |
-
profile: profile
|
432 |
-
});
|
433 |
-
}
|
434 |
-
})), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(PanelBody, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(CheckboxControl, {
|
435 |
-
label: __("Show 'Invoices' Section", 'paid-memberships-pro'),
|
436 |
-
checked: invoices,
|
437 |
-
onChange: function onChange(invoices) {
|
438 |
-
return setAttributes({
|
439 |
-
invoices: invoices
|
440 |
-
});
|
441 |
-
}
|
442 |
-
})), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(PanelBody, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(CheckboxControl, {
|
443 |
-
label: __("Show 'Member Links' Section", 'paid-memberships-pro'),
|
444 |
-
checked: links,
|
445 |
-
onChange: function onChange(links) {
|
446 |
-
return setAttributes({
|
447 |
-
links: links
|
448 |
-
});
|
449 |
-
}
|
450 |
-
})));
|
451 |
-
}
|
452 |
-
}]);
|
453 |
-
|
454 |
-
return Inspector;
|
455 |
-
}(Component);
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
/***/ }),
|
460 |
-
|
461 |
-
/***/ "./blocks/account-profile-section/block.js":
|
462 |
-
/*!*************************************************!*\
|
463 |
-
!*** ./blocks/account-profile-section/block.js ***!
|
464 |
-
\*************************************************/
|
465 |
-
/*! exports provided: default */
|
466 |
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
467 |
-
|
468 |
-
"use strict";
|
469 |
-
__webpack_require__.r(__webpack_exports__);
|
470 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
|
471 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
|
472 |
-
|
473 |
-
|
474 |
-
/**
|
475 |
-
* Block: PMPro Checkout Button
|
476 |
-
*
|
477 |
-
* Add a styled link to the PMPro checkout page for a
|
478 |
-
* specific level.
|
479 |
-
*
|
480 |
-
*/
|
481 |
-
|
482 |
-
/**
|
483 |
-
* Internal block libraries
|
484 |
-
*/
|
485 |
-
var __ = wp.i18n.__;
|
486 |
-
var registerBlockType = wp.blocks.registerBlockType;
|
487 |
-
/**
|
488 |
-
* Register block
|
489 |
-
*/
|
490 |
-
|
491 |
-
/* harmony default export */ __webpack_exports__["default"] = (registerBlockType('pmpro/account-profile-section', {
|
492 |
-
title: __('Membership Account: Profile', 'paid-memberships-pro'),
|
493 |
-
description: __('Displays the member\'s profile information.', 'paid-memberships-pro'),
|
494 |
-
category: 'pmpro',
|
495 |
-
icon: {
|
496 |
-
background: '#2997c8',
|
497 |
-
foreground: '#ffffff',
|
498 |
-
src: 'admin-users'
|
499 |
-
},
|
500 |
-
keywords: [__('pmpro', 'paid-memberships-pro')],
|
501 |
-
supports: {},
|
502 |
-
attributes: {},
|
503 |
-
edit: function edit() {
|
504 |
-
return [Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
|
505 |
-
className: "pmpro-block-element"
|
506 |
-
}, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
|
507 |
-
className: "pmpro-block-title"
|
508 |
-
}, __('Paid Memberships Pro', 'paid-memberships-pro')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
|
509 |
-
className: "pmpro-block-subtitle"
|
510 |
-
}, __('Membership Account: Profile', 'paid-memberships-pro')))];
|
511 |
-
},
|
512 |
-
save: function save() {
|
513 |
-
return null;
|
514 |
-
}
|
515 |
-
}));
|
516 |
-
|
517 |
-
/***/ }),
|
518 |
-
|
519 |
-
/***/ "./blocks/billing-page/block.js":
|
520 |
-
/*!**************************************!*\
|
521 |
-
!*** ./blocks/billing-page/block.js ***!
|
522 |
-
\**************************************/
|
523 |
-
/*! exports provided: default */
|
524 |
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
525 |
-
|
526 |
-
"use strict";
|
527 |
-
__webpack_require__.r(__webpack_exports__);
|
528 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
|
529 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
|
530 |
-
|
531 |
-
|
532 |
-
/**
|
533 |
-
* Block: PMPro Membership Billing
|
534 |
-
*
|
535 |
-
* Displays the Membership Billing page and form.
|
536 |
-
*
|
537 |
-
*/
|
538 |
-
|
539 |
-
/**
|
540 |
-
* Internal block libraries
|
541 |
-
*/
|
542 |
-
var __ = wp.i18n.__;
|
543 |
-
var registerBlockType = wp.blocks.registerBlockType;
|
544 |
-
/**
|
545 |
-
* Register block
|
546 |
-
*/
|
547 |
-
|
548 |
-
/* harmony default export */ __webpack_exports__["default"] = (registerBlockType('pmpro/billing-page', {
|
549 |
-
title: __('Membership Billing Page', 'paid-memberships-pro'),
|
550 |
-
description: __('Displays the member\'s billing information and allows them to update the payment method.', 'paid-memberships-pro'),
|
551 |
-
category: 'pmpro',
|
552 |
-
icon: {
|
553 |
-
background: '#2997c8',
|
554 |
-
foreground: '#ffffff',
|
555 |
-
src: 'list-view'
|
556 |
-
},
|
557 |
-
keywords: [__('pmpro', 'paid-memberships-pro')],
|
558 |
-
supports: {},
|
559 |
-
attributes: {},
|
560 |
-
edit: function edit() {
|
561 |
-
return [Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
|
562 |
-
className: "pmpro-block-element"
|
563 |
-
}, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
|
564 |
-
className: "pmpro-block-title"
|
565 |
-
}, __('Paid Memberships Pro', 'paid-memberships-pro')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
|
566 |
-
className: "pmpro-block-subtitle"
|
567 |
-
}, __('Membership Billing Page', 'paid-memberships-pro')))];
|
568 |
-
},
|
569 |
-
save: function save() {
|
570 |
-
return null;
|
571 |
-
}
|
572 |
-
}));
|
573 |
-
|
574 |
-
/***/ }),
|
575 |
-
|
576 |
-
/***/ "./blocks/blocks.js":
|
577 |
-
/*!**************************!*\
|
578 |
-
!*** ./blocks/blocks.js ***!
|
579 |
-
\**************************/
|
580 |
-
/*! no exports provided */
|
581 |
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
582 |
-
|
583 |
-
"use strict";
|
584 |
-
__webpack_require__.r(__webpack_exports__);
|
585 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
|
586 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
|
587 |
-
/* harmony import */ var _i18n_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./i18n.js */ "./blocks/i18n.js");
|
588 |
-
/* harmony import */ var _i18n_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_i18n_js__WEBPACK_IMPORTED_MODULE_1__);
|
589 |
-
/* harmony import */ var _checkout_button_block_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./checkout-button/block.js */ "./blocks/checkout-button/block.js");
|
590 |
-
/* harmony import */ var _account_page_block_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./account-page/block.js */ "./blocks/account-page/block.js");
|
591 |
-
/* harmony import */ var _account_membership_section_block_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./account-membership-section/block.js */ "./blocks/account-membership-section/block.js");
|
592 |
-
/* harmony import */ var _account_profile_section_block_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./account-profile-section/block.js */ "./blocks/account-profile-section/block.js");
|
593 |
-
/* harmony import */ var _account_invoices_section_block_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./account-invoices-section/block.js */ "./blocks/account-invoices-section/block.js");
|
594 |
-
/* harmony import */ var _account_links_section_block_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./account-links-section/block.js */ "./blocks/account-links-section/block.js");
|
595 |
-
/* harmony import */ var _billing_page_block_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./billing-page/block.js */ "./blocks/billing-page/block.js");
|
596 |
-
/* harmony import */ var _cancel_page_block_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./cancel-page/block.js */ "./blocks/cancel-page/block.js");
|
597 |
-
/* harmony import */ var _checkout_page_block_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./checkout-page/block.js */ "./blocks/checkout-page/block.js");
|
598 |
-
/* harmony import */ var _confirmation_page_block_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./confirmation-page/block.js */ "./blocks/confirmation-page/block.js");
|
599 |
-
/* harmony import */ var _invoice_page_block_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./invoice-page/block.js */ "./blocks/invoice-page/block.js");
|
600 |
-
/* harmony import */ var _levels_page_block_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./levels-page/block.js */ "./blocks/levels-page/block.js");
|
601 |
-
/* harmony import */ var _membership_block_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./membership/block.js */ "./blocks/membership/block.js");
|
602 |
-
/* harmony import */ var _member_profile_edit_block_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./member-profile-edit/block.js */ "./blocks/member-profile-edit/block.js");
|
603 |
-
/* harmony import */ var _login_block_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./login/block.js */ "./blocks/login/block.js");
|
604 |
-
|
605 |
-
|
606 |
-
/**
|
607 |
-
* Import internationalization
|
608 |
-
*/
|
609 |
-
|
610 |
-
/**
|
611 |
-
* Import registerBlockType blocks
|
612 |
-
*/
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
(function () {
|
631 |
-
var PMProSVG = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("svg", {
|
632 |
-
version: "1.1",
|
633 |
-
id: "Layer_1",
|
634 |
-
x: "0px",
|
635 |
-
y: "0px",
|
636 |
-
viewBox: "0 0 18 18"
|
637 |
-
}, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("path", {
|
638 |
-
d: "M17.99,4.53c-0.35,0.12-0.7,0.26-1.06,0.4c-0.35,0.14-0.7,0.3-1.05,0.46c-0.35,0.16-0.69,0.33-1.03,0.51 c-0.34,0.18-0.68,0.37-1.02,0.56c-0.15,0.09-0.31,0.18-0.46,0.27c-0.15,0.09-0.3,0.19-0.45,0.28c-0.15,0.1-0.3,0.19-0.45,0.29 c-0.15,0.1-0.3,0.2-0.44,0.3c-0.08,0.05-0.16,0.11-0.23,0.16c-0.08,0.05-0.16,0.11-0.23,0.17c-0.08,0.06-0.15,0.11-0.23,0.17 c-0.08,0.06-0.15,0.11-0.23,0.17c-0.07,0.05-0.13,0.1-0.2,0.15c-0.07,0.05-0.13,0.1-0.2,0.15c-0.07,0.05-0.13,0.1-0.2,0.15 c-0.07,0.05-0.13,0.1-0.2,0.16c-0.04,0.03-0.09,0.07-0.13,0.1c-0.04,0.03-0.09,0.07-0.13,0.1C10,9.13,9.95,9.17,9.91,9.2 C9.87,9.24,9.83,9.27,9.79,9.31C9.77,9.32,9.75,9.33,9.74,9.35C9.72,9.36,9.71,9.37,9.69,9.39C9.67,9.4,9.66,9.42,9.64,9.43 C9.63,9.44,9.61,9.46,9.59,9.47C9.54,9.52,9.49,9.56,9.43,9.61C9.38,9.65,9.33,9.7,9.27,9.74C9.22,9.79,9.17,9.84,9.11,9.88 c-0.05,0.05-0.11,0.09-0.16,0.14c-0.27,0.24-0.54,0.49-0.81,0.75c-0.26,0.25-0.53,0.51-0.78,0.78c-0.26,0.26-0.51,0.53-0.76,0.81 c-0.25,0.27-0.49,0.55-0.73,0.84c-0.03,0.04-0.07,0.08-0.1,0.12c-0.03,0.04-0.07,0.08-0.1,0.12c-0.03,0.04-0.07,0.08-0.1,0.12 c-0.03,0.04-0.07,0.08-0.1,0.12c-0.03,0.04-0.07,0.08-0.1,0.12c-0.03,0.04-0.06,0.08-0.1,0.12c-0.03,0.04-0.06,0.08-0.1,0.12 c-0.03,0.04-0.06,0.08-0.1,0.12c0,0.01-0.01,0.01-0.01,0.02c0,0.01-0.01,0.01-0.01,0.02c0,0.01-0.01,0.01-0.01,0.02 c0,0.01-0.01,0.01-0.01,0.02c-0.03,0.03-0.05,0.07-0.08,0.1c-0.03,0.03-0.05,0.07-0.08,0.1c-0.03,0.03-0.05,0.07-0.08,0.11 c-0.03,0.03-0.05,0.07-0.08,0.11c-0.03,0.04-0.06,0.08-0.09,0.12c-0.03,0.04-0.06,0.08-0.09,0.12C4.5,14.96,4.47,15,4.44,15.05 c-0.03,0.04-0.06,0.08-0.09,0.13c0,0-0.01,0.01-0.01,0.01c0,0-0.01,0.01-0.01,0.01c0,0-0.01,0.01-0.01,0.01c0,0-0.01,0.01-0.01,0.01 c-0.15,0.22-0.31,0.44-0.46,0.67c-0.15,0.22-0.3,0.45-0.44,0.68c-0.14,0.23-0.29,0.46-0.43,0.7C2.85,17.52,2.71,17.76,2.58,18 c-0.08-0.19-0.16-0.38-0.23-0.56c-0.07-0.18-0.14-0.35-0.21-0.51c-0.07-0.16-0.13-0.32-0.19-0.47c-0.06-0.15-0.12-0.3-0.18-0.45 l-0.01,0.01l0.01-0.03c-0.01-0.03-0.02-0.05-0.03-0.08c-0.01-0.02-0.02-0.05-0.03-0.07c-0.01-0.02-0.02-0.05-0.03-0.07 c-0.01-0.02-0.02-0.05-0.03-0.07c0-0.01-0.01-0.02-0.01-0.02c0-0.01-0.01-0.02-0.01-0.02c0-0.01-0.01-0.02-0.01-0.02 c0-0.01-0.01-0.02-0.01-0.02c-0.01-0.02-0.01-0.04-0.02-0.05c-0.01-0.02-0.01-0.04-0.02-0.05c-0.01-0.02-0.01-0.04-0.02-0.05 c-0.01-0.02-0.01-0.04-0.02-0.05c-0.01-0.03-0.02-0.05-0.03-0.07c-0.01-0.02-0.02-0.05-0.03-0.07c-0.01-0.02-0.02-0.05-0.03-0.07 c-0.01-0.02-0.02-0.05-0.03-0.07c-0.01-0.02-0.02-0.05-0.03-0.07c-0.01-0.02-0.02-0.05-0.03-0.07c-0.01-0.02-0.02-0.05-0.03-0.07 c-0.01-0.02-0.02-0.05-0.03-0.07c-0.02-0.05-0.04-0.1-0.06-0.16c-0.02-0.05-0.04-0.1-0.06-0.16c-0.02-0.05-0.04-0.11-0.06-0.16 c-0.02-0.05-0.04-0.11-0.06-0.16c-0.08-0.23-0.16-0.47-0.25-0.72c-0.08-0.25-0.17-0.5-0.26-0.77c-0.09-0.27-0.18-0.55-0.27-0.84 c-0.09-0.29-0.19-0.6-0.29-0.93c0.05,0.07,0.1,0.15,0.15,0.22c0.05,0.07,0.1,0.14,0.14,0.2c0.05,0.07,0.09,0.13,0.14,0.19 c0.04,0.06,0.09,0.12,0.13,0.18c0.09,0.13,0.18,0.24,0.27,0.35c0.09,0.11,0.17,0.21,0.24,0.3c0.08,0.09,0.15,0.18,0.23,0.27 c0.07,0.09,0.15,0.17,0.22,0.25c0.02,0.02,0.03,0.04,0.05,0.06c0.02,0.02,0.03,0.04,0.05,0.06c0.02,0.02,0.03,0.04,0.05,0.06 c0.02,0.02,0.03,0.04,0.05,0.06c0.07,0.07,0.13,0.14,0.2,0.22c0.07,0.08,0.14,0.16,0.22,0.24c0.08,0.08,0.16,0.17,0.24,0.27 c0.09,0.1,0.18,0.2,0.27,0.31c0.01,0.01,0.02,0.02,0.03,0.03c0.01,0.01,0.02,0.02,0.03,0.03c0.01,0.01,0.02,0.02,0.03,0.04 c0.01,0.01,0.02,0.02,0.03,0.04c0.02-0.02,0.04-0.05,0.06-0.07c0.02-0.02,0.04-0.05,0.06-0.07c0.02-0.02,0.04-0.05,0.06-0.07 C2.96,14.03,2.98,14,3,13.98c0.03-0.03,0.05-0.06,0.08-0.09c0.03-0.03,0.05-0.06,0.08-0.09c0.03-0.03,0.05-0.06,0.08-0.09 c0.03-0.03,0.05-0.06,0.08-0.09c0.28-0.33,0.58-0.65,0.88-0.97c0.31-0.32,0.63-0.62,0.95-0.92c0.33-0.3,0.67-0.6,1.02-0.88 c0.35-0.29,0.72-0.57,1.09-0.84c0.06-0.04,0.11-0.08,0.17-0.12C7.49,9.83,7.55,9.79,7.6,9.75c0.06-0.04,0.11-0.08,0.17-0.12 c0.06-0.04,0.12-0.08,0.17-0.12C7.97,9.5,7.98,9.49,8,9.48c0.02-0.01,0.03-0.02,0.05-0.03C8.06,9.43,8.08,9.42,8.1,9.41 C8.11,9.4,8.13,9.38,8.14,9.37c0.05-0.03,0.1-0.06,0.14-0.1c0.05-0.03,0.1-0.06,0.14-0.1c0.05-0.03,0.1-0.06,0.14-0.1 c0.05-0.03,0.1-0.06,0.15-0.09C8.79,8.94,8.87,8.9,8.94,8.85C9.01,8.8,9.09,8.76,9.16,8.71c0.07-0.05,0.15-0.09,0.22-0.14 c0.07-0.05,0.15-0.09,0.22-0.14c0.09-0.05,0.17-0.11,0.26-0.16c0.09-0.05,0.17-0.1,0.26-0.16c0.09-0.05,0.18-0.1,0.27-0.15 c0.09-0.05,0.18-0.1,0.27-0.15c0.25-0.14,0.51-0.28,0.76-0.42c0.26-0.14,0.52-0.27,0.78-0.41c0.26-0.13,0.53-0.27,0.79-0.4 c0.27-0.13,0.54-0.26,0.81-0.38c0.01,0,0.02-0.01,0.03-0.01c0.01,0,0.02-0.01,0.03-0.01c0.01,0,0.02-0.01,0.03-0.01 c0.01,0,0.02-0.01,0.03-0.01c0.33-0.15,0.67-0.3,1-0.44c0.34-0.15,0.68-0.29,1.02-0.42c0.34-0.14,0.69-0.27,1.03-0.4 C17.31,4.77,17.65,4.64,17.99,4.53z M15.73,9.59l0.65,4.56l-10.4-0.05c-0.02,0.02-0.04,0.04-0.05,0.07 c-0.02,0.02-0.04,0.04-0.05,0.07c-0.02,0.02-0.04,0.04-0.05,0.07c-0.02,0.02-0.04,0.04-0.05,0.07c-0.02,0.02-0.03,0.04-0.05,0.06 c-0.02,0.02-0.03,0.04-0.05,0.06c-0.02,0.02-0.03,0.04-0.05,0.06c-0.02,0.02-0.03,0.04-0.05,0.06l11.23,0.2l-0.78-5.24L15.73,9.59z M6.75,13.2c-0.04,0.04-0.08,0.09-0.11,0.13c-0.04,0.04-0.08,0.09-0.11,0.13c-0.04,0.04-0.07,0.09-0.11,0.13l9.22-0.07L15.04,9.1 l-0.07-0.53l-0.39,0.04l0.55,4.3l-8.27,0.17C6.83,13.12,6.79,13.16,6.75,13.2z M13.78,7.66l-0.59,0.08 c-0.06,0.04-0.12,0.08-0.18,0.12c-0.06,0.04-0.12,0.08-0.18,0.12c-0.06,0.04-0.12,0.08-0.18,0.12c-0.06,0.04-0.12,0.08-0.18,0.12 c-0.08,0.05-0.16,0.11-0.24,0.16c-0.08,0.06-0.16,0.11-0.24,0.17c-0.08,0.06-0.16,0.11-0.24,0.17c-0.08,0.06-0.16,0.11-0.24,0.17 c-0.07,0.05-0.14,0.1-0.21,0.15c-0.07,0.05-0.14,0.1-0.21,0.15c-0.07,0.05-0.14,0.1-0.2,0.16c-0.07,0.05-0.14,0.11-0.2,0.16 c-0.04,0.03-0.09,0.07-0.13,0.1c-0.04,0.03-0.09,0.07-0.13,0.1c-0.04,0.04-0.09,0.07-0.13,0.11c-0.04,0.04-0.09,0.07-0.13,0.11 c-0.02,0.01-0.03,0.03-0.05,0.04c-0.02,0.01-0.03,0.03-0.05,0.04c-0.02,0.01-0.03,0.03-0.05,0.04c-0.02,0.01-0.03,0.03-0.05,0.04 c-0.06,0.05-0.11,0.09-0.16,0.14c-0.05,0.05-0.11,0.09-0.16,0.14c-0.05,0.05-0.11,0.09-0.16,0.14c-0.05,0.05-0.11,0.09-0.16,0.14 c-0.17,0.15-0.34,0.3-0.51,0.46c-0.17,0.16-0.33,0.31-0.5,0.47c-0.16,0.16-0.33,0.32-0.49,0.48c-0.16,0.16-0.32,0.33-0.48,0.49 l6.98-0.23l-0.48-4.16L13.78,7.66z M13.32,5.73c-0.06,0.03-0.11,0.05-0.17,0.08c-0.06,0.03-0.12,0.06-0.17,0.09 c-0.03,0.01-0.06,0.03-0.08,0.04c0,0,0,0,0,0c-0.02-0.01-0.04-0.03-0.06-0.04c-0.06-0.04-0.13-0.07-0.21-0.09 c-0.07-0.02-0.15-0.04-0.23-0.04c-0.08,0-0.16,0-0.24,0.01l-0.14,0.02c0.07-0.04,0.13-0.08,0.18-0.14c0.05-0.05,0.1-0.11,0.14-0.18 c0.04-0.06,0.06-0.13,0.08-0.2c0.02-0.07,0.02-0.15,0.01-0.22c-0.01-0.1-0.04-0.18-0.08-0.26c-0.05-0.08-0.11-0.14-0.18-0.19 c-0.07-0.05-0.16-0.08-0.25-0.1c-0.09-0.02-0.19-0.02-0.29,0c-0.1,0.02-0.19,0.06-0.27,0.11c-0.08,0.05-0.15,0.11-0.21,0.19 C11.08,4.9,11.03,4.98,11,5.07c-0.03,0.09-0.04,0.18-0.03,0.27c0.01,0.07,0.02,0.14,0.05,0.2c0.03,0.06,0.06,0.12,0.11,0.17 c0.05,0.05,0.1,0.09,0.16,0.12c0.06,0.03,0.13,0.06,0.2,0.07l-0.17,0.03C11.18,5.96,11.06,6,10.94,6.07 c-0.11,0.07-0.21,0.15-0.29,0.25c-0.08,0.1-0.14,0.21-0.19,0.33c-0.04,0.12-0.06,0.25-0.05,0.38l0.02,0.33 c-0.09,0.05-0.17,0.1-0.26,0.16c-0.02,0-0.05,0-0.07,0c0.02-0.01,0.04-0.02,0.06-0.03c-0.06-0.06-0.13-0.11-0.21-0.16 c-0.07-0.04-0.15-0.08-0.24-0.1C9.63,7.2,9.54,7.18,9.45,7.18c-0.09-0.01-0.18,0-0.27,0.01L9.01,7.21c0.08-0.05,0.16-0.1,0.23-0.17 C9.3,6.97,9.36,6.9,9.41,6.81C9.46,6.73,9.5,6.64,9.52,6.55c0.02-0.09,0.03-0.19,0.03-0.29C9.54,6.13,9.51,6.02,9.46,5.92 c-0.05-0.1-0.12-0.18-0.21-0.25C9.17,5.6,9.07,5.56,8.96,5.53c-0.11-0.02-0.22-0.03-0.34,0C8.5,5.55,8.39,5.6,8.29,5.66 C8.19,5.72,8.1,5.81,8.02,5.9C7.95,5.99,7.89,6.1,7.85,6.21C7.81,6.32,7.79,6.44,7.79,6.56c0,0.09,0.02,0.18,0.05,0.26 c0.03,0.08,0.07,0.16,0.12,0.22c0.05,0.07,0.11,0.12,0.18,0.17c0.07,0.04,0.15,0.08,0.23,0.1l-0.2,0.03 C8.01,7.37,7.85,7.42,7.72,7.51C7.58,7.59,7.46,7.7,7.35,7.82C7.25,7.95,7.17,8.1,7.11,8.25c-0.06,0.16-0.09,0.33-0.08,0.5 l0.01,0.74C6.98,9.53,6.93,9.58,6.88,9.62C6.81,9.49,6.74,9.38,6.65,9.28c-0.1-0.11-0.21-0.2-0.33-0.27 C6.2,8.94,6.07,8.89,5.93,8.87C5.8,8.84,5.66,8.83,5.51,8.85L5.3,8.88c0.1-0.06,0.2-0.13,0.29-0.22c0.09-0.09,0.16-0.19,0.23-0.3 c0.06-0.11,0.12-0.23,0.15-0.35C6,7.88,6.02,7.75,6.02,7.62c0-0.17-0.03-0.32-0.08-0.46C5.88,7.03,5.8,6.91,5.71,6.82 C5.61,6.73,5.5,6.67,5.37,6.63c-0.12-0.04-0.26-0.04-0.4-0.02c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0 c-0.14,0.03-0.28,0.08-0.4,0.16c-0.12,0.08-0.23,0.18-0.33,0.3C4.14,7.2,4.07,7.33,4.01,7.48c-0.06,0.15-0.09,0.3-0.1,0.46 c0,0.12,0.01,0.24,0.03,0.35c0.03,0.11,0.07,0.21,0.12,0.3c0.05,0.09,0.12,0.17,0.2,0.23c0.08,0.06,0.17,0.11,0.27,0.14L4.3,9 C4.1,9.03,3.92,9.09,3.75,9.2C3.58,9.3,3.43,9.44,3.3,9.6c-0.13,0.16-0.24,0.35-0.32,0.56c-0.08,0.21-0.13,0.43-0.14,0.67 l-0.12,2.26l-0.53-0.6l0.49-6.3C2.68,6.09,2.71,6,2.74,5.91c0.04-0.09,0.08-0.17,0.14-0.24c0.06-0.07,0.12-0.14,0.2-0.19 C3.15,5.44,3.23,5.4,3.32,5.38l0.71-0.17l0-0.02l0.18-0.04l0.06-1.19C4.3,3.56,4.39,3.15,4.55,2.77c0.16-0.38,0.37-0.75,0.64-1.08 C5.45,1.35,5.76,1.05,6.11,0.8c0.35-0.26,0.74-0.47,1.16-0.61C7.7,0.05,8.12-0.01,8.51,0c0.4,0.02,0.77,0.12,1.1,0.29 c0.33,0.18,0.62,0.43,0.83,0.75c0.21,0.33,0.35,0.73,0.38,1.19l0.1,1.36l0.3-0.07l0,0.02l0.89-0.21c0.13-0.03,0.25-0.03,0.36-0.02 c0.12,0.02,0.22,0.05,0.32,0.11c0.09,0.05,0.17,0.13,0.23,0.21c0.06,0.09,0.1,0.19,0.11,0.31L13.32,5.73z M9.46,3.96L9.4,2.61 C9.39,2.33,9.31,2.09,9.19,1.88C9.07,1.68,8.91,1.51,8.71,1.4C8.52,1.28,8.29,1.21,8.05,1.19C7.81,1.17,7.55,1.2,7.28,1.28 C7.01,1.37,6.76,1.49,6.53,1.65c-0.22,0.16-0.43,0.35-0.6,0.57C5.77,2.43,5.63,2.67,5.53,2.91c-0.1,0.25-0.16,0.5-0.17,0.76 L5.33,4.91L9.46,3.96z"
|
639 |
-
}));
|
640 |
-
wp.blocks.updateCategory('pmpro', {
|
641 |
-
icon: PMProSVG
|
642 |
-
});
|
643 |
-
})();
|
644 |
-
|
645 |
-
/***/ }),
|
646 |
-
|
647 |
-
/***/ "./blocks/cancel-page/block.js":
|
648 |
-
/*!*************************************!*\
|
649 |
-
!*** ./blocks/cancel-page/block.js ***!
|
650 |
-
\*************************************/
|
651 |
-
/*! exports provided: default */
|
652 |
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
653 |
-
|
654 |
-
"use strict";
|
655 |
-
__webpack_require__.r(__webpack_exports__);
|
656 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
|
657 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
|
658 |
-
|
659 |
-
|
660 |
-
/**
|
661 |
-
* Block: PMPro Membership Cancel
|
662 |
-
*
|
663 |
-
* Displays the Membership Cancel page.
|
664 |
-
*
|
665 |
-
*/
|
666 |
-
|
667 |
-
/**
|
668 |
-
* Internal block libraries
|
669 |
-
*/
|
670 |
-
var __ = wp.i18n.__;
|
671 |
-
var registerBlockType = wp.blocks.registerBlockType;
|
672 |
-
/**
|
673 |
-
* Register block
|
674 |
-
*/
|
675 |
-
|
676 |
-
/* harmony default export */ __webpack_exports__["default"] = (registerBlockType('pmpro/cancel-page', {
|
677 |
-
title: __('Membership Cancel Page', 'paid-memberships-pro'),
|
678 |
-
description: __('Generates the Membership Cancel page.', 'paid-memberships-pro'),
|
679 |
-
category: 'pmpro',
|
680 |
-
icon: {
|
681 |
-
background: '#2997c8',
|
682 |
-
foreground: '#ffffff',
|
683 |
-
src: 'no'
|
684 |
-
},
|
685 |
-
keywords: [__('pmpro', 'paid-memberships-pro')],
|
686 |
-
supports: {},
|
687 |
-
attributes: {},
|
688 |
-
edit: function edit() {
|
689 |
-
return [Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
|
690 |
-
className: "pmpro-block-element"
|
691 |
-
}, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
|
692 |
-
className: "pmpro-block-title"
|
693 |
-
}, __('Paid Memberships Pro', 'paid-memberships-pro')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
|
694 |
-
className: "pmpro-block-subtitle"
|
695 |
-
}, __('Membership Cancel Page', 'paid-memberships-pro')))];
|
696 |
-
},
|
697 |
-
save: function save() {
|
698 |
-
return null;
|
699 |
-
}
|
700 |
-
}));
|
701 |
-
|
702 |
-
/***/ }),
|
703 |
-
|
704 |
-
/***/ "./blocks/checkout-button/block.js":
|
705 |
-
/*!*****************************************!*\
|
706 |
-
!*** ./blocks/checkout-button/block.js ***!
|
707 |
-
\*****************************************/
|
708 |
-
/*! exports provided: default */
|
709 |
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
710 |
-
|
711 |
-
"use strict";
|
712 |
-
__webpack_require__.r(__webpack_exports__);
|
713 |
-
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js");
|
714 |
-
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
|
715 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
|
716 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__);
|
717 |
-
/* harmony import */ var _inspector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./inspector */ "./blocks/checkout-button/inspector.js");
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
722 |
-
|
723 |
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
724 |
-
|
725 |
-
/**
|
726 |
-
* Block: PMPro Checkout Button
|
727 |
-
*
|
728 |
-
* Add a styled link to the PMPro checkout page for a specific level.
|
729 |
-
*
|
730 |
-
*/
|
731 |
-
|
732 |
-
/**
|
733 |
-
* Block dependencies
|
734 |
-
*/
|
735 |
-
|
736 |
-
/**
|
737 |
-
* Internal block libraries
|
738 |
-
*/
|
739 |
-
|
740 |
-
var __ = wp.i18n.__;
|
741 |
-
var registerBlockType = wp.blocks.registerBlockType;
|
742 |
-
var _wp$components = wp.components,
|
743 |
-
TextControl = _wp$components.TextControl,
|
744 |
-
SelectControl = _wp$components.SelectControl;
|
745 |
-
/**
|
746 |
-
* Register block
|
747 |
-
*/
|
748 |
-
|
749 |
-
/* harmony default export */ __webpack_exports__["default"] = (registerBlockType('pmpro/checkout-button', {
|
750 |
-
title: __('Membership Checkout Button', 'paid-memberships-pro'),
|
751 |
-
description: __('Displays a button-styled link to Membership Checkout for the specified level.', 'paid-memberships-pro'),
|
752 |
-
category: 'pmpro',
|
753 |
-
icon: {
|
754 |
-
background: '#2997c8',
|
755 |
-
foreground: '#ffffff',
|
756 |
-
src: 'migrate'
|
757 |
-
},
|
758 |
-
keywords: [__('pmpro', 'paid-memberships-pro'), __('buy', 'paid-memberships-pro'), __('level', 'paid-memberships-pro')],
|
759 |
-
supports: {},
|
760 |
-
attributes: {
|
761 |
-
text: {
|
762 |
-
type: 'string',
|
763 |
-
default: 'Buy Now'
|
764 |
-
},
|
765 |
-
css_class: {
|
766 |
-
type: 'string',
|
767 |
-
default: 'pmpro_btn'
|
768 |
-
},
|
769 |
-
level: {
|
770 |
-
type: 'string'
|
771 |
-
}
|
772 |
-
},
|
773 |
-
edit: function edit(props) {
|
774 |
-
var _props$attributes = props.attributes,
|
775 |
-
text = _props$attributes.text,
|
776 |
-
level = _props$attributes.level,
|
777 |
-
css_class = _props$attributes.css_class,
|
778 |
-
className = props.className,
|
779 |
-
setAttributes = props.setAttributes,
|
780 |
-
isSelected = props.isSelected;
|
781 |
-
return [isSelected && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_inspector__WEBPACK_IMPORTED_MODULE_2__["default"], _objectSpread({
|
782 |
-
setAttributes: setAttributes
|
783 |
-
}, props)), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("div", {
|
784 |
-
className: className
|
785 |
-
}, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("a", {
|
786 |
-
class: css_class
|
787 |
-
}, text)), isSelected && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("div", {
|
788 |
-
className: "pmpro-block-element"
|
789 |
-
}, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(TextControl, {
|
790 |
-
label: __('Button Text', 'paid-memberships-pro'),
|
791 |
-
value: text,
|
792 |
-
onChange: function onChange(text) {
|
793 |
-
return setAttributes({
|
794 |
-
text: text
|
795 |
-
});
|
796 |
-
}
|
797 |
-
}), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(SelectControl, {
|
798 |
-
label: __('Membership Level', 'paid-memberships-pro'),
|
799 |
-
value: level,
|
800 |
-
onChange: function onChange(level) {
|
801 |
-
return setAttributes({
|
802 |
-
level: level
|
803 |
-
});
|
804 |
-
},
|
805 |
-
options: window.pmpro.all_level_values_and_labels
|
806 |
-
}), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(TextControl, {
|
807 |
-
label: __('CSS Class', 'paid-memberships-pro'),
|
808 |
-
value: css_class,
|
809 |
-
onChange: function onChange(css_class) {
|
810 |
-
return setAttributes({
|
811 |
-
css_class: css_class
|
812 |
-
});
|
813 |
-
}
|
814 |
-
}))];
|
815 |
-
},
|
816 |
-
save: function save() {
|
817 |
-
return null;
|
818 |
-
}
|
819 |
-
}));
|
820 |
-
|
821 |
-
/***/ }),
|
822 |
-
|
823 |
-
/***/ "./blocks/checkout-button/inspector.js":
|
824 |
-
/*!*********************************************!*\
|
825 |
-
!*** ./blocks/checkout-button/inspector.js ***!
|
826 |
-
\*********************************************/
|
827 |
-
/*! exports provided: default */
|
828 |
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
829 |
-
|
830 |
-
"use strict";
|
831 |
-
__webpack_require__.r(__webpack_exports__);
|
832 |
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Inspector; });
|
833 |
-
/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js");
|
834 |
-
/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);
|
835 |
-
/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js");
|
836 |
-
/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);
|
837 |
-
/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ "./node_modules/@babel/runtime/helpers/inherits.js");
|
838 |
-
/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__);
|
839 |
-
/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js");
|
840 |
-
/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);
|
841 |
-
/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js");
|
842 |
-
/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);
|
843 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
|
844 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__);
|
845 |
-
|
846 |
-
|
847 |
-
|
848 |
-
|
849 |
-
|
850 |
-
|
851 |
-
|
852 |
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }
|
853 |
-
|
854 |
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
855 |
-
|
856 |
-
/**
|
857 |
-
* Internal block libraries
|
858 |
-
*/
|
859 |
-
var __ = wp.i18n.__;
|
860 |
-
var Component = wp.element.Component;
|
861 |
-
var _wp$components = wp.components,
|
862 |
-
PanelBody = _wp$components.PanelBody,
|
863 |
-
TextControl = _wp$components.TextControl,
|
864 |
-
SelectControl = _wp$components.SelectControl;
|
865 |
-
var InspectorControls = wp.blockEditor.InspectorControls;
|
866 |
-
/**
|
867 |
-
* Create an Inspector Controls wrapper Component
|
868 |
-
*/
|
869 |
-
|
870 |
-
var Inspector = /*#__PURE__*/function (_Component) {
|
871 |
-
_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(Inspector, _Component);
|
872 |
-
|
873 |
-
var _super = _createSuper(Inspector);
|
874 |
-
|
875 |
-
function Inspector() {
|
876 |
-
_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Inspector);
|
877 |
-
|
878 |
-
return _super.apply(this, arguments);
|
879 |
-
}
|
880 |
-
|
881 |
-
_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Inspector, [{
|
882 |
-
key: "render",
|
883 |
-
value: function render() {
|
884 |
-
var _this$props = this.props,
|
885 |
-
_this$props$attribute = _this$props.attributes,
|
886 |
-
text = _this$props$attribute.text,
|
887 |
-
level = _this$props$attribute.level,
|
888 |
-
css_class = _this$props$attribute.css_class,
|
889 |
-
setAttributes = _this$props.setAttributes;
|
890 |
-
return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(InspectorControls, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(PanelBody, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(TextControl, {
|
891 |
-
label: __('Button Text', 'paid-memberships-pro'),
|
892 |
-
help: __('Text for checkout button', 'paid-memberships-pro'),
|
893 |
-
value: text,
|
894 |
-
onChange: function onChange(text) {
|
895 |
-
return setAttributes({
|
896 |
-
text: text
|
897 |
-
});
|
898 |
-
}
|
899 |
-
})), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(PanelBody, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(SelectControl, {
|
900 |
-
label: __('Level', 'paid-memberships-pro'),
|
901 |
-
help: __('The level to link to for checkout button', 'paid-memberships-pro'),
|
902 |
-
value: level,
|
903 |
-
onChange: function onChange(level) {
|
904 |
-
return setAttributes({
|
905 |
-
level: level
|
906 |
-
});
|
907 |
-
},
|
908 |
-
options: window.pmpro.all_level_values_and_labels
|
909 |
-
})), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(PanelBody, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(TextControl, {
|
910 |
-
label: __('CSS Class', 'paid-memberships-pro'),
|
911 |
-
help: __('Additional styling for checkout button', 'paid-memberships-pro'),
|
912 |
-
value: css_class,
|
913 |
-
onChange: function onChange(css_class) {
|
914 |
-
return setAttributes({
|
915 |
-
css_class: css_class
|
916 |
-
});
|
917 |
-
}
|
918 |
-
})));
|
919 |
-
}
|
920 |
-
}]);
|
921 |
-
|
922 |
-
return Inspector;
|
923 |
-
}(Component);
|
924 |
-
|
925 |
-
|
926 |
-
|
927 |
-
/***/ }),
|
928 |
-
|
929 |
-
/***/ "./blocks/checkout-page/block.js":
|
930 |
-
/*!***************************************!*\
|
931 |
-
!*** ./blocks/checkout-page/block.js ***!
|
932 |
-
\***************************************/
|
933 |
-
/*! exports provided: default */
|
934 |
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
935 |
-
|
936 |
-
"use strict";
|
937 |
-
__webpack_require__.r(__webpack_exports__);
|
938 |
-
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js");
|
939 |
-
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
|
940 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
|
941 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__);
|
942 |
-
/* harmony import */ var _inspector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./inspector */ "./blocks/checkout-page/inspector.js");
|
943 |
-
|
944 |
-
|
945 |
-
|
946 |
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
947 |
-
|
948 |
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
949 |
-
|
950 |
-
/**
|
951 |
-
* Block: PMPro Membership Checkout
|
952 |
-
*
|
953 |
-
* Displays the Membership Checkout form.
|
954 |
-
*
|
955 |
-
*/
|
956 |
-
|
957 |
-
/**
|
958 |
-
* Block dependencies
|
959 |
-
*/
|
960 |
-
|
961 |
-
/**
|
962 |
-
* Internal block libraries
|
963 |
-
*/
|
964 |
-
|
965 |
-
var __ = wp.i18n.__;
|
966 |
-
var registerBlockType = wp.blocks.registerBlockType;
|
967 |
-
var SelectControl = wp.components.SelectControl;
|
968 |
-
/**
|
969 |
-
* Register block
|
970 |
-
*/
|
971 |
-
|
972 |
-
/* harmony default export */ __webpack_exports__["default"] = (registerBlockType('pmpro/checkout-page', {
|
973 |
-
title: __('Membership Checkout Form', 'paid-memberships-pro'),
|
974 |
-
description: __('Displays the Membership Checkout form.', 'paid-memberships-pro'),
|
975 |
-
category: 'pmpro',
|
976 |
-
icon: {
|
977 |
-
background: '#2997c8',
|
978 |
-
foreground: '#ffffff',
|
979 |
-
src: 'list-view'
|
980 |
-
},
|
981 |
-
keywords: [__('pmpro', 'paid-memberships-pro')],
|
982 |
-
supports: {},
|
983 |
-
attributes: {
|
984 |
-
pmpro_default_level: {
|
985 |
-
type: 'string',
|
986 |
-
source: 'meta',
|
987 |
-
meta: 'pmpro_default_level'
|
988 |
-
}
|
989 |
-
},
|
990 |
-
edit: function edit(props) {
|
991 |
-
var pmpro_default_level = props.attributes.pmpro_default_level,
|
992 |
-
className = props.className,
|
993 |
-
setAttributes = props.setAttributes,
|
994 |
-
isSelected = props.isSelected;
|
995 |
-
return [isSelected && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_inspector__WEBPACK_IMPORTED_MODULE_2__["default"], _objectSpread({
|
996 |
-
setAttributes: setAttributes
|
997 |
-
}, props)), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("div", {
|
998 |
-
className: "pmpro-block-element"
|
999 |
-
}, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("span", {
|
1000 |
-
className: "pmpro-block-title"
|
1001 |
-
}, __('Paid Memberships Pro', 'paid-memberships-pro')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("span", {
|
1002 |
-
className: "pmpro-block-subtitle"
|
1003 |
-
}, __('Membership Checkout Form', 'paid-memberships-pro')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("hr", null), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(SelectControl, {
|
1004 |
-
label: __('Membership Level', 'paid-memberships-pro'),
|
1005 |
-
value: pmpro_default_level,
|
1006 |
-
onChange: function onChange(pmpro_default_level) {
|
1007 |
-
return setAttributes({
|
1008 |
-
pmpro_default_level: pmpro_default_level
|
1009 |
-
});
|
1010 |
-
},
|
1011 |
-
options: window.pmpro.all_level_values_and_labels
|
1012 |
-
}))];
|
1013 |
-
},
|
1014 |
-
save: function save() {
|
1015 |
-
return null;
|
1016 |
-
}
|
1017 |
-
}));
|
1018 |
-
|
1019 |
-
/***/ }),
|
1020 |
-
|
1021 |
-
/***/ "./blocks/checkout-page/inspector.js":
|
1022 |
-
/*!*******************************************!*\
|
1023 |
-
!*** ./blocks/checkout-page/inspector.js ***!
|
1024 |
-
\*******************************************/
|
1025 |
-
/*! exports provided: default */
|
1026 |
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
1027 |
-
|
1028 |
-
"use strict";
|
1029 |
-
__webpack_require__.r(__webpack_exports__);
|
1030 |
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Inspector; });
|
1031 |
-
/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js");
|
1032 |
-
/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);
|
1033 |
-
/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js");
|
1034 |
-
/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);
|
1035 |
-
/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ "./node_modules/@babel/runtime/helpers/inherits.js");
|
1036 |
-
/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__);
|
1037 |
-
/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js");
|
1038 |
-
/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);
|
1039 |
-
/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js");
|
1040 |
-
/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);
|
1041 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
|
1042 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__);
|
1043 |
-
|
1044 |
-
|
1045 |
-
|
1046 |
-
|
1047 |
-
|
1048 |
-
|
1049 |
-
|
1050 |
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }
|
1051 |
-
|
1052 |
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
1053 |
-
|
1054 |
-
/**
|
1055 |
-
* Internal block libraries
|
1056 |
-
*/
|
1057 |
-
var __ = wp.i18n.__;
|
1058 |
-
var Component = wp.element.Component;
|
1059 |
-
var _wp$components = wp.components,
|
1060 |
-
PanelBody = _wp$components.PanelBody,
|
1061 |
-
PanelRow = _wp$components.PanelRow,
|
1062 |
-
SelectControl = _wp$components.SelectControl;
|
1063 |
-
var InspectorControls = wp.blockEditor.InspectorControls;
|
1064 |
-
/**
|
1065 |
-
* Create an Inspector Controls wrapper Component
|
1066 |
-
*/
|
1067 |
-
|
1068 |
-
var Inspector = /*#__PURE__*/function (_Component) {
|
1069 |
-
_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(Inspector, _Component);
|
1070 |
-
|
1071 |
-
var _super = _createSuper(Inspector);
|
1072 |
-
|
1073 |
-
function Inspector() {
|
1074 |
-
_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Inspector);
|
1075 |
-
|
1076 |
-
return _super.apply(this, arguments);
|
1077 |
-
}
|
1078 |
-
|
1079 |
-
_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Inspector, [{
|
1080 |
-
key: "render",
|
1081 |
-
value: function render() {
|
1082 |
-
var _this$props = this.props,
|
1083 |
-
pmpro_default_level = _this$props.attributes.pmpro_default_level,
|
1084 |
-
setAttributes = _this$props.setAttributes;
|
1085 |
-
return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(InspectorControls, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(PanelBody, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(SelectControl, {
|
1086 |
-
label: __('Membership Level', 'paid-memberships-pro'),
|
1087 |
-
help: __('Choose a default level for Membership Checkout.', 'paid-memberships-pro'),
|
1088 |
-
value: pmpro_default_level,
|
1089 |
-
onChange: function onChange(pmpro_default_level) {
|
1090 |
-
return setAttributes({
|
1091 |
-
pmpro_default_level: pmpro_default_level
|
1092 |
-
});
|
1093 |
-
},
|
1094 |
-
options: [''].concat(window.pmpro.all_level_values_and_labels)
|
1095 |
-
})));
|
1096 |
-
}
|
1097 |
-
}]);
|
1098 |
-
|
1099 |
-
return Inspector;
|
1100 |
-
}(Component);
|
1101 |
-
|
1102 |
-
|
1103 |
-
|
1104 |
-
/***/ }),
|
1105 |
-
|
1106 |
-
/***/ "./blocks/confirmation-page/block.js":
|
1107 |
-
/*!*******************************************!*\
|
1108 |
-
!*** ./blocks/confirmation-page/block.js ***!
|
1109 |
-
\*******************************************/
|
1110 |
-
/*! exports provided: default */
|
1111 |
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
1112 |
-
|
1113 |
-
"use strict";
|
1114 |
-
__webpack_require__.r(__webpack_exports__);
|
1115 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
|
1116 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
|
1117 |
-
|
1118 |
-
|
1119 |
-
/**
|
1120 |
-
* Block: PMPro Membership Confirmation
|
1121 |
-
*
|
1122 |
-
* Displays the Membership Confirmation template.
|
1123 |
-
*
|
1124 |
-
*/
|
1125 |
-
|
1126 |
-
/**
|
1127 |
-
* Internal block libraries
|
1128 |
-
*/
|
1129 |
-
var __ = wp.i18n.__;
|
1130 |
-
var registerBlockType = wp.blocks.registerBlockType;
|
1131 |
-
/**
|
1132 |
-
* Register block
|
1133 |
-
*/
|
1134 |
-
|
1135 |
-
/* harmony default export */ __webpack_exports__["default"] = (registerBlockType('pmpro/confirmation-page', {
|
1136 |
-
title: __('Membership Confirmation Page', 'paid-memberships-pro'),
|
1137 |
-
description: __('Displays the member\'s Membership Confirmation after Membership Checkout.', 'paid-memberships-pro'),
|
1138 |
-
category: 'pmpro',
|
1139 |
-
icon: {
|
1140 |
-
background: '#2997c8',
|
1141 |
-
foreground: '#ffffff',
|
1142 |
-
src: 'yes'
|
1143 |
-
},
|
1144 |
-
keywords: [__('pmpro', 'paid-memberships-pro')],
|
1145 |
-
supports: {},
|
1146 |
-
attributes: {},
|
1147 |
-
edit: function edit() {
|
1148 |
-
return [Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
|
1149 |
-
className: "pmpro-block-element"
|
1150 |
-
}, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
|
1151 |
-
className: "pmpro-block-title"
|
1152 |
-
}, __('Paid Memberships Pro', 'paid-memberships-pro')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
|
1153 |
-
className: "pmpro-block-subtitle"
|
1154 |
-
}, __('Membership Confirmation Page', 'paid-memberships-pro')))];
|
1155 |
-
},
|
1156 |
-
save: function save() {
|
1157 |
-
return null;
|
1158 |
-
}
|
1159 |
-
}));
|
1160 |
-
|
1161 |
-
/***/ }),
|
1162 |
-
|
1163 |
-
/***/ "./blocks/i18n.js":
|
1164 |
-
/*!************************!*\
|
1165 |
-
!*** ./blocks/i18n.js ***!
|
1166 |
-
\************************/
|
1167 |
-
/*! no static exports found */
|
1168 |
-
/***/ (function(module, exports) {
|
1169 |
-
|
1170 |
-
wp.i18n.setLocaleData({
|
1171 |
-
'': {}
|
1172 |
-
}, 'paid-memberships-pro');
|
1173 |
-
|
1174 |
-
/***/ }),
|
1175 |
-
|
1176 |
-
/***/ "./blocks/invoice-page/block.js":
|
1177 |
-
/*!**************************************!*\
|
1178 |
-
!*** ./blocks/invoice-page/block.js ***!
|
1179 |
-
\**************************************/
|
1180 |
-
/*! exports provided: default */
|
1181 |
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
1182 |
-
|
1183 |
-
"use strict";
|
1184 |
-
__webpack_require__.r(__webpack_exports__);
|
1185 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
|
1186 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
|
1187 |
-
|
1188 |
-
|
1189 |
-
/**
|
1190 |
-
* Block: PMPro Membership Invoices
|
1191 |
-
*
|
1192 |
-
* Displays the Membership Invoices template.
|
1193 |
-
*
|
1194 |
-
*/
|
1195 |
-
|
1196 |
-
/**
|
1197 |
-
* Internal block libraries
|
1198 |
-
*/
|
1199 |
-
var __ = wp.i18n.__;
|
1200 |
-
var registerBlockType = wp.blocks.registerBlockType;
|
1201 |
-
/**
|
1202 |
-
* Register block
|
1203 |
-
*/
|
1204 |
-
|
1205 |
-
/* harmony default export */ __webpack_exports__["default"] = (registerBlockType('pmpro/invoice-page', {
|
1206 |
-
title: __('Membership Invoice Page', 'paid-memberships-pro'),
|
1207 |
-
description: __('Displays the member\'s Membership Invoices.', 'paid-memberships-pro'),
|
1208 |
-
category: 'pmpro',
|
1209 |
-
icon: {
|
1210 |
-
background: '#2997c8',
|
1211 |
-
foreground: '#ffffff',
|
1212 |
-
src: 'archive'
|
1213 |
-
},
|
1214 |
-
keywords: [__('pmpro', 'paid-memberships-pro')],
|
1215 |
-
supports: {},
|
1216 |
-
attributes: {},
|
1217 |
-
edit: function edit() {
|
1218 |
-
return [Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
|
1219 |
-
className: "pmpro-block-element"
|
1220 |
-
}, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
|
1221 |
-
className: "pmpro-block-title"
|
1222 |
-
}, __('Paid Memberships Pro', 'paid-memberships-pro')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
|
1223 |
-
className: "pmpro-block-subtitle"
|
1224 |
-
}, __('Membership Invoices', 'paid-memberships-pro')))];
|
1225 |
-
},
|
1226 |
-
save: function save() {
|
1227 |
-
return null;
|
1228 |
-
}
|
1229 |
-
}));
|
1230 |
-
|
1231 |
-
/***/ }),
|
1232 |
-
|
1233 |
-
/***/ "./blocks/levels-page/block.js":
|
1234 |
-
/*!*************************************!*\
|
1235 |
-
!*** ./blocks/levels-page/block.js ***!
|
1236 |
-
\*************************************/
|
1237 |
-
/*! exports provided: default */
|
1238 |
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
1239 |
-
|
1240 |
-
"use strict";
|
1241 |
-
__webpack_require__.r(__webpack_exports__);
|
1242 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
|
1243 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
|
1244 |
-
|
1245 |
-
|
1246 |
-
/**
|
1247 |
-
* Block: PMPro Membership Levels
|
1248 |
-
*
|
1249 |
-
* Displays the Membership Levels template.
|
1250 |
-
*
|
1251 |
-
*/
|
1252 |
-
|
1253 |
-
/**
|
1254 |
-
* Internal block libraries
|
1255 |
-
*/
|
1256 |
-
var __ = wp.i18n.__;
|
1257 |
-
var registerBlockType = wp.blocks.registerBlockType;
|
1258 |
-
/**
|
1259 |
-
* Register block
|
1260 |
-
*/
|
1261 |
-
|
1262 |
-
/* harmony default export */ __webpack_exports__["default"] = (registerBlockType('pmpro/levels-page', {
|
1263 |
-
title: __('Membership Levels List', 'paid-memberships-pro'),
|
1264 |
-
description: __('Displays a list of Membership Levels. To change the order, go to Memberships > Settings > Levels.', 'paid-memberships-pro'),
|
1265 |
-
category: 'pmpro',
|
1266 |
-
icon: {
|
1267 |
-
background: '#2997c8',
|
1268 |
-
foreground: '#ffffff',
|
1269 |
-
src: 'list-view'
|
1270 |
-
},
|
1271 |
-
keywords: [__('pmpro', 'paid-memberships-pro')],
|
1272 |
-
supports: {},
|
1273 |
-
attributes: {},
|
1274 |
-
edit: function edit() {
|
1275 |
-
return [Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
|
1276 |
-
className: "pmpro-block-element"
|
1277 |
-
}, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
|
1278 |
-
className: "pmpro-block-title"
|
1279 |
-
}, __('Paid Memberships Pro', 'paid-memberships-pro')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
|
1280 |
-
className: "pmpro-block-subtitle"
|
1281 |
-
}, __('Membership Levels List', 'paid-memberships-pro')))];
|
1282 |
-
},
|
1283 |
-
save: function save() {
|
1284 |
-
return null;
|
1285 |
-
}
|
1286 |
-
}));
|
1287 |
-
|
1288 |
-
/***/ }),
|
1289 |
-
|
1290 |
-
/***/ "./blocks/login/block.js":
|
1291 |
-
/*!*******************************!*\
|
1292 |
-
!*** ./blocks/login/block.js ***!
|
1293 |
-
\*******************************/
|
1294 |
-
/*! exports provided: default */
|
1295 |
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
1296 |
-
|
1297 |
-
"use strict";
|
1298 |
-
__webpack_require__.r(__webpack_exports__);
|
1299 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
|
1300 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
|
1301 |
-
/* harmony import */ var _inspector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./inspector */ "./blocks/login/inspector.js");
|
1302 |
-
|
1303 |
-
|
1304 |
-
/**
|
1305 |
-
* Block: PMPro Login Form
|
1306 |
-
*
|
1307 |
-
* Add a login form to any page or post.
|
1308 |
-
*
|
1309 |
-
*/
|
1310 |
-
|
1311 |
-
/**
|
1312 |
-
* Block dependencies
|
1313 |
-
*/
|
1314 |
-
|
1315 |
-
/**
|
1316 |
-
* Internal block libraries
|
1317 |
-
*/
|
1318 |
-
|
1319 |
-
var __ = wp.i18n.__;
|
1320 |
-
var registerBlockType = wp.blocks.registerBlockType;
|
1321 |
-
var Fragment = wp.element.Fragment;
|
1322 |
-
/**
|
1323 |
-
* Register block
|
1324 |
-
*/
|
1325 |
-
|
1326 |
-
/* harmony default export */ __webpack_exports__["default"] = (registerBlockType("pmpro/login-form", {
|
1327 |
-
title: __("Log in Form", "paid-memberships-pro"),
|
1328 |
-
description: __("Displays a Log In Form for Paid Memberships Pro.", "paid-memberships-pro"),
|
1329 |
-
category: "pmpro",
|
1330 |
-
icon: {
|
1331 |
-
background: "#2997c8",
|
1332 |
-
foreground: "#ffffff",
|
1333 |
-
src: "unlock"
|
1334 |
-
},
|
1335 |
-
keywords: [__("pmpro", "paid-memberships-pro"), __("login", "paid-memberships-pro"), __("form", "paid-memberships-pro"), __("log in", "paid-memberships-pro")],
|
1336 |
-
supports: {},
|
1337 |
-
edit: function edit(props) {
|
1338 |
-
return [Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(Fragment, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_inspector__WEBPACK_IMPORTED_MODULE_1__["default"], props), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
|
1339 |
-
className: "pmpro-block-element"
|
1340 |
-
}, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
|
1341 |
-
className: "pmpro-block-title"
|
1342 |
-
}, __("Paid Memberships Pro", "paid-memberships-pro")), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
|
1343 |
-
className: "pmpro-block-subtitle"
|
1344 |
-
}, __("Log in Form", "paid-memberships-pro"))))];
|
1345 |
-
},
|
1346 |
-
save: function save() {
|
1347 |
-
return null;
|
1348 |
-
}
|
1349 |
-
}));
|
1350 |
-
|
1351 |
-
/***/ }),
|
1352 |
-
|
1353 |
-
/***/ "./blocks/login/inspector.js":
|
1354 |
-
/*!***********************************!*\
|
1355 |
-
!*** ./blocks/login/inspector.js ***!
|
1356 |
-
\***********************************/
|
1357 |
-
/*! exports provided: default */
|
1358 |
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
1359 |
-
|
1360 |
-
"use strict";
|
1361 |
-
__webpack_require__.r(__webpack_exports__);
|
1362 |
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Inspector; });
|
1363 |
-
/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js");
|
1364 |
-
/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);
|
1365 |
-
/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js");
|
1366 |
-
/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);
|
1367 |
-
/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ "./node_modules/@babel/runtime/helpers/inherits.js");
|
1368 |
-
/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__);
|
1369 |
-
/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js");
|
1370 |
-
/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);
|
1371 |
-
/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js");
|
1372 |
-
/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);
|
1373 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
|
1374 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__);
|
1375 |
-
|
1376 |
-
|
1377 |
-
|
1378 |
-
|
1379 |
-
|
1380 |
-
|
1381 |
-
|
1382 |
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }
|
1383 |
-
|
1384 |
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
1385 |
-
|
1386 |
-
/**
|
1387 |
-
* Internal block libraries
|
1388 |
-
*/
|
1389 |
-
var __ = wp.i18n.__;
|
1390 |
-
var Component = wp.element.Component;
|
1391 |
-
var _wp$components = wp.components,
|
1392 |
-
PanelBody = _wp$components.PanelBody,
|
1393 |
-
SelectControl = _wp$components.SelectControl,
|
1394 |
-
ToggleControl = _wp$components.ToggleControl;
|
1395 |
-
var InspectorControls = wp.blockEditor.InspectorControls;
|
1396 |
-
/**
|
1397 |
-
* Create an Inspector Controls wrapper Component
|
1398 |
-
*/
|
1399 |
-
|
1400 |
-
var Inspector = /*#__PURE__*/function (_Component) {
|
1401 |
-
_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(Inspector, _Component);
|
1402 |
-
|
1403 |
-
var _super = _createSuper(Inspector);
|
1404 |
-
|
1405 |
-
function Inspector() {
|
1406 |
-
_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Inspector);
|
1407 |
-
|
1408 |
-
return _super.apply(this, arguments);
|
1409 |
-
}
|
1410 |
-
|
1411 |
-
_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Inspector, [{
|
1412 |
-
key: "render",
|
1413 |
-
value: function render() {
|
1414 |
-
var _this = this;
|
1415 |
-
|
1416 |
-
var _this$props = this.props,
|
1417 |
-
attributes = _this$props.attributes,
|
1418 |
-
setAttributes = _this$props.setAttributes;
|
1419 |
-
var display_if_logged_in = attributes.display_if_logged_in,
|
1420 |
-
show_menu = attributes.show_menu,
|
1421 |
-
show_logout_link = attributes.show_logout_link,
|
1422 |
-
location = attributes.location;
|
1423 |
-
return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(InspectorControls, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(PanelBody, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(ToggleControl, {
|
1424 |
-
label: __("Display 'Welcome' content when logged in.", "paid-memberships-pro"),
|
1425 |
-
checked: display_if_logged_in,
|
1426 |
-
onChange: function onChange(value) {
|
1427 |
-
_this.props.setAttributes({
|
1428 |
-
display_if_logged_in: value
|
1429 |
-
});
|
1430 |
-
}
|
1431 |
-
}), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(ToggleControl, {
|
1432 |
-
label: __("Display the 'Log In Widget' menu.", "paid-memberships-pro"),
|
1433 |
-
help: __("Assign the menu under Appearance > Menus.", "paid-memberships-pro"),
|
1434 |
-
checked: show_menu,
|
1435 |
-
onChange: function onChange(value) {
|
1436 |
-
_this.props.setAttributes({
|
1437 |
-
show_menu: value
|
1438 |
-
});
|
1439 |
-
}
|
1440 |
-
}), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__["createElement"])(ToggleControl, {
|
1441 |
-
label: __("Display a 'Log Out' link.", "paid-memberships-pro"),
|
1442 |
-
checked: show_logout_link,
|
1443 |
-
onChange: function onChange(value) {
|
1444 |
-
_this.props.setAttributes({
|
1445 |
-
show_logout_link: value
|
1446 |
-
});
|
1447 |
-
}
|
1448 |
-
})));
|
1449 |
-
}
|
1450 |
-
}]);
|
1451 |
-
|
1452 |
-
return Inspector;
|
1453 |
-
}(Component);
|
1454 |
-
|
1455 |
-
|
1456 |
-
|
1457 |
-
/***/ }),
|
1458 |
-
|
1459 |
-
/***/ "./blocks/member-profile-edit/block.js":
|
1460 |
-
/*!*********************************************!*\
|
1461 |
-
!*** ./blocks/member-profile-edit/block.js ***!
|
1462 |
-
\*********************************************/
|
1463 |
-
/*! exports provided: default */
|
1464 |
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
1465 |
-
|
1466 |
-
"use strict";
|
1467 |
-
__webpack_require__.r(__webpack_exports__);
|
1468 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
|
1469 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
|
1470 |
-
|
1471 |
-
|
1472 |
-
/**
|
1473 |
-
* Block: PMPro Member Profile Edit
|
1474 |
-
*
|
1475 |
-
*
|
1476 |
-
*/
|
1477 |
-
|
1478 |
-
/**
|
1479 |
-
* Internal block libraries
|
1480 |
-
*/
|
1481 |
-
var __ = wp.i18n.__;
|
1482 |
-
var registerBlockType = wp.blocks.registerBlockType;
|
1483 |
-
/**
|
1484 |
-
* Register block
|
1485 |
-
*/
|
1486 |
-
|
1487 |
-
/* harmony default export */ __webpack_exports__["default"] = (registerBlockType("pmpro/member-profile-edit", {
|
1488 |
-
title: __("Member Profile Edit", "paid-memberships-pro"),
|
1489 |
-
description: __("Allow member profile editing.", "paid-memberships-pro"),
|
1490 |
-
category: "pmpro",
|
1491 |
-
icon: {
|
1492 |
-
background: "#2997c8",
|
1493 |
-
foreground: "#ffffff",
|
1494 |
-
src: "admin-users"
|
1495 |
-
},
|
1496 |
-
keywords: [__("pmpro", "paid-memberships-pro"), __("member", "paid-memberships-pro"), __("profile", "paid-memberships-pro")],
|
1497 |
-
edit: function edit(props) {
|
1498 |
-
return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
|
1499 |
-
className: "pmpro-block-element"
|
1500 |
-
}, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
|
1501 |
-
className: "pmpro-block-title"
|
1502 |
-
}, __("Paid Memberships Pro", "paid-memberships-pro")), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
|
1503 |
-
className: "pmpro-block-subtitle"
|
1504 |
-
}, __("Member Profile Edit", "paid-memberships-pro")));
|
1505 |
-
},
|
1506 |
-
save: function save() {
|
1507 |
-
return null;
|
1508 |
-
}
|
1509 |
-
}));
|
1510 |
-
|
1511 |
-
/***/ }),
|
1512 |
-
|
1513 |
-
/***/ "./blocks/membership/block.js":
|
1514 |
-
/*!************************************!*\
|
1515 |
-
!*** ./blocks/membership/block.js ***!
|
1516 |
-
\************************************/
|
1517 |
-
/*! exports provided: default */
|
1518 |
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
1519 |
-
|
1520 |
-
"use strict";
|
1521 |
-
__webpack_require__.r(__webpack_exports__);
|
1522 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
|
1523 |
-
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
|
1524 |
-
|
1525 |
-
|
1526 |
-
/**
|
1527 |
-
* Block: PMPro Membership
|
1528 |
-
*
|
1529 |
-
*
|
1530 |
-
*/
|
1531 |
-
|
1532 |
-
/**
|
1533 |
-
* Internal block libraries
|
1534 |
-
*/
|
1535 |
-
var __ = wp.i18n.__;
|
1536 |
-
var registerBlockType = wp.blocks.registerBlockType;
|
1537 |
-
var _wp$components = wp.components,
|
1538 |
-
PanelBody = _wp$components.PanelBody,
|
1539 |
-
CheckboxControl = _wp$components.CheckboxControl;
|
1540 |
-
var _wp$blockEditor = wp.blockEditor,
|
1541 |
-
InspectorControls = _wp$blockEditor.InspectorControls,
|
1542 |
-
InnerBlocks = _wp$blockEditor.InnerBlocks;
|
1543 |
-
var all_levels = [{
|
1544 |
-
value: 0,
|
1545 |
-
label: "Non-Members"
|
1546 |
-
}].concat(pmpro.all_level_values_and_labels);
|
1547 |
-
/**
|
1548 |
-
* Register block
|
1549 |
-
*/
|
1550 |
-
|
1551 |
-
/* harmony default export */ __webpack_exports__["default"] = (registerBlockType('pmpro/membership', {
|
1552 |
-
title: __('Require Membership Block', 'paid-memberships-pro'),
|
1553 |
-
description: __('Control the visibility of nested blocks for members or non-members.', 'paid-memberships-pro'),
|
1554 |
-
category: 'pmpro',
|
1555 |
-
icon: {
|
1556 |
-
background: '#2997c8',
|
1557 |
-
foreground: '#ffffff',
|
1558 |
-
src: 'visibility'
|
1559 |
-
},
|
1560 |
-
keywords: [__('pmpro', 'paid-memberships-pro')],
|
1561 |
-
attributes: {
|
1562 |
-
levels: {
|
1563 |
-
type: 'array',
|
1564 |
-
default: []
|
1565 |
-
},
|
1566 |
-
uid: {
|
1567 |
-
type: 'string',
|
1568 |
-
default: ''
|
1569 |
-
}
|
1570 |
-
},
|
1571 |
-
edit: function edit(props) {
|
1572 |
-
var _props$attributes = props.attributes,
|
1573 |
-
levels = _props$attributes.levels,
|
1574 |
-
uid = _props$attributes.uid,
|
1575 |
-
setAttributes = props.setAttributes,
|
1576 |
-
isSelected = props.isSelected;
|
1577 |
-
|
1578 |
-
if (uid == '') {
|
1579 |
-
var rand = Math.random() + "";
|
1580 |
-
setAttributes({
|
1581 |
-
uid: rand
|
1582 |
-
});
|
1583 |
-
} // Build an array of checkboxes for each level.
|
1584 |
-
|
1585 |
-
|
1586 |
-
var checkboxes = all_levels.map(function (level) {
|
1587 |
-
function setLevelsAttribute(nowChecked) {
|
1588 |
-
if (nowChecked && !levels.some(function (levelID) {
|
1589 |
-
return levelID == level.value;
|
1590 |
-
})) {
|
1591 |
-
// Add the level.
|
1592 |
-
var newLevels = levels.slice();
|
1593 |
-
newLevels.push(level.value + '');
|
1594 |
-
setAttributes({
|
1595 |
-
levels: newLevels
|
1596 |
-
});
|
1597 |
-
} else if (!nowChecked && levels.some(function (levelID) {
|
1598 |
-
return levelID == level.value;
|
1599 |
-
})) {
|
1600 |
-
// Remove the level.
|
1601 |
-
var _newLevels = levels.filter(function (levelID) {
|
1602 |
-
return levelID != level.value;
|
1603 |
-
});
|
1604 |
-
|
1605 |
-
setAttributes({
|
1606 |
-
levels: _newLevels
|
1607 |
-
});
|
1608 |
-
}
|
1609 |
-
}
|
1610 |
-
|
1611 |
-
return [Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(CheckboxControl, {
|
1612 |
-
label: level.label,
|
1613 |
-
checked: levels.some(function (levelID) {
|
1614 |
-
return levelID == level.value;
|
1615 |
-
}),
|
1616 |
-
onChange: setLevelsAttribute
|
1617 |
-
})];
|
1618 |
-
});
|
1619 |
-
return [isSelected && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(InspectorControls, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(PanelBody, null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
|
1620 |
-
class: "pmpro-block-inspector-scrollable"
|
1621 |
-
}, checkboxes))), isSelected && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
|
1622 |
-
className: "pmpro-block-require-membership-element"
|
1623 |
-
}, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
|
1624 |
-
className: "pmpro-block-title"
|
1625 |
-
}, __('Require Membership', 'paid-memberships-pro')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(PanelBody, null, checkboxes), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(InnerBlocks, {
|
1626 |
-
renderAppender: function renderAppender() {
|
1627 |
-
return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(InnerBlocks.ButtonBlockAppender, null);
|
1628 |
-
},
|
1629 |
-
templateLock: false
|
1630 |
-
})), !isSelected && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
|
1631 |
-
className: "pmpro-block-require-membership-element"
|
1632 |
-
}, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
|
1633 |
-
className: "pmpro-block-title"
|
1634 |
-
}, __('Require Membership', 'paid-memberships-pro')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(InnerBlocks, {
|
1635 |
-
renderAppender: function renderAppender() {
|
1636 |
-
return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(InnerBlocks.ButtonBlockAppender, null);
|
1637 |
-
},
|
1638 |
-
templateLock: false
|
1639 |
-
}))];
|
1640 |
-
},
|
1641 |
-
save: function save(props) {
|
1642 |
-
var className = props.className;
|
1643 |
-
return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
|
1644 |
-
className: className
|
1645 |
-
}, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(InnerBlocks.Content, null));
|
1646 |
-
}
|
1647 |
-
}));
|
1648 |
-
|
1649 |
-
/***/ }),
|
1650 |
-
|
1651 |
-
/***/ "./node_modules/@babel/runtime/helpers/assertThisInitialized.js":
|
1652 |
-
/*!**********************************************************************!*\
|
1653 |
-
!*** ./node_modules/@babel/runtime/helpers/assertThisInitialized.js ***!
|
1654 |
-
\**********************************************************************/
|
1655 |
-
/*! no static exports found */
|
1656 |
-
/***/ (function(module, exports) {
|
1657 |
-
|
1658 |
-
function _assertThisInitialized(self) {
|
1659 |
-
if (self === void 0) {
|
1660 |
-
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
1661 |
-
}
|
1662 |
-
|
1663 |
-
return self;
|
1664 |
-
}
|
1665 |
-
|
1666 |
-
module.exports = _assertThisInitialized;
|
1667 |
-
module.exports["default"] = module.exports, module.exports.__esModule = true;
|
1668 |
-
|
1669 |
-
/***/ }),
|
1670 |
-
|
1671 |
-
/***/ "./node_modules/@babel/runtime/helpers/classCallCheck.js":
|
1672 |
-
/*!***************************************************************!*\
|
1673 |
-
!*** ./node_modules/@babel/runtime/helpers/classCallCheck.js ***!
|
1674 |
-
\***************************************************************/
|
1675 |
-
/*! no static exports found */
|
1676 |
-
/***/ (function(module, exports) {
|
1677 |
-
|
1678 |
-
function _classCallCheck(instance, Constructor) {
|
1679 |
-
if (!(instance instanceof Constructor)) {
|
1680 |
-
throw new TypeError("Cannot call a class as a function");
|
1681 |
-
}
|
1682 |
-
}
|
1683 |
-
|
1684 |
-
module.exports = _classCallCheck;
|
1685 |
-
module.exports["default"] = module.exports, module.exports.__esModule = true;
|
1686 |
-
|
1687 |
-
/***/ }),
|
1688 |
-
|
1689 |
-
/***/ "./node_modules/@babel/runtime/helpers/createClass.js":
|
1690 |
-
/*!************************************************************!*\
|
1691 |
-
!*** ./node_modules/@babel/runtime/helpers/createClass.js ***!
|
1692 |
-
\************************************************************/
|
1693 |
-
/*! no static exports found */
|
1694 |
-
/***/ (function(module, exports) {
|
1695 |
-
|
1696 |
-
function _defineProperties(target, props) {
|
1697 |
-
for (var i = 0; i < props.length; i++) {
|
1698 |
-
var descriptor = props[i];
|
1699 |
-
descriptor.enumerable = descriptor.enumerable || false;
|
1700 |
-
descriptor.configurable = true;
|
1701 |
-
if ("value" in descriptor) descriptor.writable = true;
|
1702 |
-
Object.defineProperty(target, descriptor.key, descriptor);
|
1703 |
-
}
|
1704 |
-
}
|
1705 |
-
|
1706 |
-
function _createClass(Constructor, protoProps, staticProps) {
|
1707 |
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
1708 |
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
1709 |
-
return Constructor;
|
1710 |
-
}
|
1711 |
-
|
1712 |
-
module.exports = _createClass;
|
1713 |
-
module.exports["default"] = module.exports, module.exports.__esModule = true;
|
1714 |
-
|
1715 |
-
/***/ }),
|
1716 |
-
|
1717 |
-
/***/ "./node_modules/@babel/runtime/helpers/defineProperty.js":
|
1718 |
-
/*!***************************************************************!*\
|
1719 |
-
!*** ./node_modules/@babel/runtime/helpers/defineProperty.js ***!
|
1720 |
-
\***************************************************************/
|
1721 |
-
/*! no static exports found */
|
1722 |
-
/***/ (function(module, exports) {
|
1723 |
-
|
1724 |
-
function _defineProperty(obj, key, value) {
|
1725 |
-
if (key in obj) {
|
1726 |
-
Object.defineProperty(obj, key, {
|
1727 |
-
value: value,
|
1728 |
-
enumerable: true,
|
1729 |
-
configurable: true,
|
1730 |
-
writable: true
|
1731 |
-
});
|
1732 |
-
} else {
|
1733 |
-
obj[key] = value;
|
1734 |
-
}
|
1735 |
-
|
1736 |
-
return obj;
|
1737 |
-
}
|
1738 |
-
|
1739 |
-
module.exports = _defineProperty;
|
1740 |
-
module.exports["default"] = module.exports, module.exports.__esModule = true;
|
1741 |
-
|
1742 |
-
/***/ }),
|
1743 |
-
|
1744 |
-
/***/ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js":
|
1745 |
-
/*!***************************************************************!*\
|
1746 |
-
!*** ./node_modules/@babel/runtime/helpers/getPrototypeOf.js ***!
|
1747 |
-
\***************************************************************/
|
1748 |
-
/*! no static exports found */
|
1749 |
-
/***/ (function(module, exports) {
|
1750 |
-
|
1751 |
-
function _getPrototypeOf(o) {
|
1752 |
-
module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
|
1753 |
-
return o.__proto__ || Object.getPrototypeOf(o);
|
1754 |
-
};
|
1755 |
-
module.exports["default"] = module.exports, module.exports.__esModule = true;
|
1756 |
-
return _getPrototypeOf(o);
|
1757 |
-
}
|
1758 |
-
|
1759 |
-
module.exports = _getPrototypeOf;
|
1760 |
-
module.exports["default"] = module.exports, module.exports.__esModule = true;
|
1761 |
-
|
1762 |
-
/***/ }),
|
1763 |
-
|
1764 |
-
/***/ "./node_modules/@babel/runtime/helpers/inherits.js":
|
1765 |
-
/*!*********************************************************!*\
|
1766 |
-
!*** ./node_modules/@babel/runtime/helpers/inherits.js ***!
|
1767 |
-
\*********************************************************/
|
1768 |
-
/*! no static exports found */
|
1769 |
-
/***/ (function(module, exports, __webpack_require__) {
|
1770 |
-
|
1771 |
-
var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ "./node_modules/@babel/runtime/helpers/setPrototypeOf.js");
|
1772 |
-
|
1773 |
-
function _inherits(subClass, superClass) {
|
1774 |
-
if (typeof superClass !== "function" && superClass !== null) {
|
1775 |
-
throw new TypeError("Super expression must either be null or a function");
|
1776 |
-
}
|
1777 |
-
|
1778 |
-
subClass.prototype = Object.create(superClass && superClass.prototype, {
|
1779 |
-
constructor: {
|
1780 |
-
value: subClass,
|
1781 |
-
writable: true,
|
1782 |
-
configurable: true
|
1783 |
-
}
|
1784 |
-
});
|
1785 |
-
if (superClass) setPrototypeOf(subClass, superClass);
|
1786 |
-
}
|
1787 |
-
|
1788 |
-
module.exports = _inherits;
|
1789 |
-
module.exports["default"] = module.exports, module.exports.__esModule = true;
|
1790 |
-
|
1791 |
-
/***/ }),
|
1792 |
-
|
1793 |
-
/***/ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js":
|
1794 |
-
/*!**************************************************************************!*\
|
1795 |
-
!*** ./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js ***!
|
1796 |
-
\**************************************************************************/
|
1797 |
-
/*! no static exports found */
|
1798 |
-
/***/ (function(module, exports, __webpack_require__) {
|
1799 |
-
|
1800 |
-
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "./node_modules/@babel/runtime/helpers/typeof.js")["default"];
|
1801 |
-
|
1802 |
-
var assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized.js */ "./node_modules/@babel/runtime/helpers/assertThisInitialized.js");
|
1803 |
-
|
1804 |
-
function _possibleConstructorReturn(self, call) {
|
1805 |
-
if (call && (_typeof(call) === "object" || typeof call === "function")) {
|
1806 |
-
return call;
|
1807 |
-
}
|
1808 |
-
|
1809 |
-
return assertThisInitialized(self);
|
1810 |
-
}
|
1811 |
-
|
1812 |
-
module.exports = _possibleConstructorReturn;
|
1813 |
-
module.exports["default"] = module.exports, module.exports.__esModule = true;
|
1814 |
-
|
1815 |
-
/***/ }),
|
1816 |
-
|
1817 |
-
/***/ "./node_modules/@babel/runtime/helpers/setPrototypeOf.js":
|
1818 |
-
/*!***************************************************************!*\
|
1819 |
-
!*** ./node_modules/@babel/runtime/helpers/setPrototypeOf.js ***!
|
1820 |
-
\***************************************************************/
|
1821 |
-
/*! no static exports found */
|
1822 |
-
/***/ (function(module, exports) {
|
1823 |
-
|
1824 |
-
function _setPrototypeOf(o, p) {
|
1825 |
-
module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
|
1826 |
-
o.__proto__ = p;
|
1827 |
-
return o;
|
1828 |
-
};
|
1829 |
-
|
1830 |
-
module.exports["default"] = module.exports, module.exports.__esModule = true;
|
1831 |
-
return _setPrototypeOf(o, p);
|
1832 |
-
}
|
1833 |
-
|
1834 |
-
module.exports = _setPrototypeOf;
|
1835 |
-
module.exports["default"] = module.exports, module.exports.__esModule = true;
|
1836 |
-
|
1837 |
-
/***/ }),
|
1838 |
-
|
1839 |
-
/***/ "./node_modules/@babel/runtime/helpers/typeof.js":
|
1840 |
-
/*!*******************************************************!*\
|
1841 |
-
!*** ./node_modules/@babel/runtime/helpers/typeof.js ***!
|
1842 |
-
\*******************************************************/
|
1843 |
-
/*! no static exports found */
|
1844 |
-
/***/ (function(module, exports) {
|
1845 |
-
|
1846 |
-
function _typeof(obj) {
|
1847 |
-
"@babel/helpers - typeof";
|
1848 |
-
|
1849 |
-
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
|
1850 |
-
module.exports = _typeof = function _typeof(obj) {
|
1851 |
-
return typeof obj;
|
1852 |
-
};
|
1853 |
-
|
1854 |
-
module.exports["default"] = module.exports, module.exports.__esModule = true;
|
1855 |
-
} else {
|
1856 |
-
module.exports = _typeof = function _typeof(obj) {
|
1857 |
-
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
1858 |
-
};
|
1859 |
-
|
1860 |
-
module.exports["default"] = module.exports, module.exports.__esModule = true;
|
1861 |
-
}
|
1862 |
-
|
1863 |
-
return _typeof(obj);
|
1864 |
-
}
|
1865 |
-
|
1866 |
-
module.exports = _typeof;
|
1867 |
-
module.exports["default"] = module.exports, module.exports.__esModule = true;
|
1868 |
-
|
1869 |
-
/***/ }),
|
1870 |
-
|
1871 |
-
/***/ "@wordpress/element":
|
1872 |
-
/*!*********************************!*\
|
1873 |
-
!*** external ["wp","element"] ***!
|
1874 |
-
\*********************************/
|
1875 |
-
/*! no static exports found */
|
1876 |
-
/***/ (function(module, exports) {
|
1877 |
-
|
1878 |
-
(function() { module.exports = window["wp"]["element"]; }());
|
1879 |
-
|
1880 |
-
/***/ })
|
1881 |
-
|
1882 |
-
/******/ });
|
1883 |
-
//# sourceMappingURL=blocks.build.js.map
|
1 |
+
!function(e){var r={};function t(o){if(r[o])return r[o].exports;var p=r[o]={i:o,l:!1,exports:{}};return e[o].call(p.exports,p,p.exports,t),p.l=!0,p.exports}t.m=e,t.c=r,t.d=function(e,r,o){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:o})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(t.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var p in e)t.d(o,p,function(r){return e[r]}.bind(null,p));return o},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=11)}([function(e,r){e.exports=window.wp.element},function(e,r){function t(r){return e.exports=t=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},e.exports.__esModule=!0,e.exports.default=e.exports,t(r)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},function(e,r){e.exports=function(e,r){if(!(e instanceof r))throw new TypeError("Cannot call a class as a function")},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,r){function t(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}e.exports=function(e,r,o){return r&&t(e.prototype,r),o&&t(e,o),Object.defineProperty(e,"prototype",{writable:!1}),e},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,r,t){var o=t(8);e.exports=function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(r&&r.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),r&&o(e,r)},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,r,t){var o=t(9).default,p=t(10);e.exports=function(e,r){if(r&&("object"===o(r)||"function"==typeof r))return r;if(void 0!==r)throw new TypeError("Derived constructors may only return object or undefined");return p(e)},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,r){e.exports=function(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,r){wp.i18n.setLocaleData({"":{}},"paid-memberships-pro")},function(e,r){function t(r,o){return e.exports=t=Object.setPrototypeOf||function(e,r){return e.__proto__=r,e},e.exports.__esModule=!0,e.exports.default=e.exports,t(r,o)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},function(e,r){function t(r){return e.exports=t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,t(r)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},function(e,r){e.exports=function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,r,t){"use strict";t.r(r);var o=t(0),p=(t(7),t(6)),s=t.n(p),i=t(2),c=t.n(i),n=t(3),a=t.n(n),l=t(4),m=t.n(l),b=t(5),u=t.n(b),d=t(1),h=t.n(d);function f(e){var r=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var t,o=h()(e);if(r){var p=h()(this).constructor;t=Reflect.construct(o,arguments,p)}else t=o.apply(this,arguments);return u()(this,t)}}var y=wp.i18n.__,g=wp.element.Component,v=wp.components,k=v.PanelBody,O=v.TextControl,j=v.SelectControl,w=wp.blockEditor.InspectorControls,_=function(e){m()(t,e);var r=f(t);function t(){return c()(this,t),r.apply(this,arguments)}return a()(t,[{key:"render",value:function(){var e=this.props,r=e.attributes,t=r.text,p=r.level,s=r.css_class,i=e.setAttributes;return Object(o.createElement)(w,null,Object(o.createElement)(k,null,Object(o.createElement)(O,{label:y("Button Text","paid-memberships-pro"),help:y("Text for checkout button","paid-memberships-pro"),value:t,onChange:function(e){return i({text:e})}})),Object(o.createElement)(k,null,Object(o.createElement)(j,{label:y("Level","paid-memberships-pro"),help:y("The level to link to for checkout button","paid-memberships-pro"),value:p,onChange:function(e){return i({level:e})},options:window.pmpro.all_level_values_and_labels})),Object(o.createElement)(k,null,Object(o.createElement)(O,{label:y("CSS Class","paid-memberships-pro"),help:y("Additional styling for checkout button","paid-memberships-pro"),value:s,onChange:function(e){return i({css_class:e})}})))}}]),t}(g);function E(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function P(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?E(Object(t),!0).forEach((function(r){s()(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):E(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}var C=wp.i18n.__,F=wp.blocks.registerBlockType,M=wp.components,x=M.TextControl,B=M.SelectControl;F("pmpro/checkout-button",{title:C("Membership Checkout Button","paid-memberships-pro"),description:C("Inserts a button that links directly to membership checkout for the selected level.","paid-memberships-pro"),category:"pmpro",icon:{background:"#FFFFFF",foreground:"#658B24",src:"migrate"},keywords:[C("buy","paid-memberships-pro"),C("level","paid-memberships-pro"),C("member","paid-memberships-pro"),C("paid memberships pro","paid-memberships-pro"),C("pmpro","paid-memberships-pro"),C("purchase","paid-memberships-pro")],supports:{},attributes:{text:{type:"string",default:"Buy Now"},css_class:{type:"string",default:"pmpro_btn"},level:{type:"string"}},edit:function(e){var r=e.attributes,t=r.text,p=r.level,s=r.css_class,i=e.className,c=e.setAttributes,n=e.isSelected;return[n&&Object(o.createElement)(_,P({setAttributes:c},e)),Object(o.createElement)("div",{className:i},Object(o.createElement)("a",{class:s},t)),n&&Object(o.createElement)("div",{className:"pmpro-block-element"},Object(o.createElement)(x,{label:C("Button Text","paid-memberships-pro"),value:t,onChange:function(e){return c({text:e})}}),Object(o.createElement)(B,{label:C("Membership Level","paid-memberships-pro"),value:p,onChange:function(e){return c({level:e})},options:window.pmpro.all_level_values_and_labels}),Object(o.createElement)(x,{label:C("CSS Class","paid-memberships-pro"),value:s,onChange:function(e){return c({css_class:e})}}))]},save:function(){return null}});function N(e){var r=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var t,o=h()(e);if(r){var p=h()(this).constructor;t=Reflect.construct(o,arguments,p)}else t=o.apply(this,arguments);return u()(this,t)}}var A=wp.i18n.__,S=wp.element.Component,L=wp.components,T=L.PanelBody,D=L.CheckboxControl,R=wp.blockEditor.InspectorControls,I=function(e){m()(t,e);var r=N(t);function t(){return c()(this,t),r.apply(this,arguments)}return a()(t,[{key:"render",value:function(){var e=this.props,r=e.attributes,t=r.membership,p=r.profile,s=r.invoices,i=r.links,c=e.setAttributes;return Object(o.createElement)(R,null,Object(o.createElement)(T,null,Object(o.createElement)(D,{label:A("Show 'My Memberships' Section","paid-memberships-pro"),checked:t,onChange:function(e){return c({membership:e})}})),Object(o.createElement)(T,null,Object(o.createElement)(D,{label:A("Show 'Profile' Section","paid-memberships-pro"),checked:p,onChange:function(e){return c({profile:e})}})),Object(o.createElement)(T,null,Object(o.createElement)(D,{label:A("Show 'Invoices' Section","paid-memberships-pro"),checked:s,onChange:function(e){return c({invoices:e})}})),Object(o.createElement)(T,null,Object(o.createElement)(D,{label:A("Show 'Member Links' Section","paid-memberships-pro"),checked:i,onChange:function(e){return c({links:e})}})))}}]),t}(S);function q(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function z(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?q(Object(t),!0).forEach((function(r){s()(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):q(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}var W=wp.i18n.__,V=((0,wp.blocks.registerBlockType)("pmpro/account-page",{title:W("PMPro Page: Account (Full)","paid-memberships-pro"),description:W("Dynamic page section to display the selected sections of the Membership Account page including Memberships, Profile, Invoices, and Member Links. These sections can also be added via separate blocks.","paid-memberships-pro"),category:"pmpro-pages",icon:{background:"#FFFFFF",foreground:"#1A688B",src:"admin-users"},keywords:[W("account","paid-memberships-pro"),W("billing","paid-memberships-pro"),W("invoice","paid-memberships-pro"),W("links","paid-memberships-pro"),W("member","paid-memberships-pro"),W("order","paid-memberships-pro"),W("paid memberships pro","paid-memberships-pro"),W("pmpro","paid-memberships-pro"),W("profile","paid-memberships-pro"),W("purchases","paid-memberships-pro"),W("quick link","paid-memberships-pro"),W("receipt","paid-memberships-pro"),W("user","paid-memberships-pro")],supports:{},attributes:{membership:{type:"boolean",default:!1},profile:{type:"boolean",default:!1},invoices:{type:"boolean",default:!1},links:{type:"boolean",default:!1}},edit:function(e){var r=e.setAttributes;return[e.isSelected&&Object(o.createElement)(I,z({setAttributes:r},e)),Object(o.createElement)("div",{className:"pmpro-block-element"},Object(o.createElement)("span",{className:"pmpro-block-title"},W("Paid Memberships Pro","paid-memberships-pro")),Object(o.createElement)("span",{className:"pmpro-block-subtitle"},W("Membership Account Page","paid-memberships-pro")))]},save:function(){return null}}),wp.i18n.__),G=((0,wp.blocks.registerBlockType)("pmpro/account-membership-section",{title:V("PMPro Page: Account Memberships","paid-memberships-pro"),description:V("Dynamic page section to display the member's active membership information with links to view all membership options, update billing information, and change or cancel membership.","paid-memberships-pro"),category:"pmpro-pages",icon:{background:"#FFFFFF",foreground:"#1A688B",src:"groups"},keywords:[V("active","paid-memberships-pro"),V("member","paid-memberships-pro"),V("paid memberships pro","paid-memberships-pro"),V("pmpro","paid-memberships-pro"),V("purchases","paid-memberships-pro"),V("user","paid-memberships-pro")],supports:{},attributes:{},edit:function(){return[Object(o.createElement)("div",{className:"pmpro-block-element"},Object(o.createElement)("span",{className:"pmpro-block-title"},V("Paid Memberships Pro","paid-memberships-pro")),Object(o.createElement)("span",{className:"pmpro-block-subtitle"},V("Membership Account: My Memberships","paid-memberships-pro")))]},save:function(){return null}}),wp.i18n.__),H=((0,wp.blocks.registerBlockType)("pmpro/account-profile-section",{title:G("PMPro Page: Account Profile View","paid-memberships-pro"),description:G("Dynamic page section that displays the member's profile as read-only information with a link to edit fields or their change password.","paid-memberships-pro"),category:"pmpro-pages",icon:{background:"#FFFFFF",foreground:"#1A688B",src:"admin-users"},keywords:[G("fields","paid-memberships-pro"),G("member","paid-memberships-pro"),G("paid memberships pro","paid-memberships-pro"),G("pmpro","paid-memberships-pro"),G("user","paid-memberships-pro")],supports:{},attributes:{},edit:function(){return[Object(o.createElement)("div",{className:"pmpro-block-element"},Object(o.createElement)("span",{className:"pmpro-block-title"},G("Paid Memberships Pro","paid-memberships-pro")),Object(o.createElement)("span",{className:"pmpro-block-subtitle"},G("Membership Account: Profile","paid-memberships-pro")))]},save:function(){return null}}),wp.i18n.__),J=((0,wp.blocks.registerBlockType)("pmpro/account-invoices-section",{title:H("PMPro Page: Account Invoices","paid-memberships-pro"),description:H("Dynamic page section that displays a list of the last 5 membership invoices for the active member.","paid-memberships-pro"),category:"pmpro-pages",icon:{background:"#FFFFFF",foreground:"#1A688B",src:"archive"},keywords:[H("account","paid-memberships-pro"),H("member","paid-memberships-pro"),H("order","paid-memberships-pro"),H("paid memberships pro","paid-memberships-pro"),H("pmpro","paid-memberships-pro"),H("purchases","paid-memberships-pro"),H("receipt","paid-memberships-pro"),H("user","paid-memberships-pro")],supports:{},attributes:{},edit:function(){return[Object(o.createElement)("div",{className:"pmpro-block-element"},Object(o.createElement)("span",{className:"pmpro-block-title"},H("Paid Memberships Pro","paid-memberships-pro")),Object(o.createElement)("span",{className:"pmpro-block-subtitle"}," ",H("Membership Account: Invoices","paid-memberships-pro")))]},save:function(){return null}}),wp.i18n.__),K=((0,wp.blocks.registerBlockType)("pmpro/account-links-section",{title:J("PMPro Page: Account Links","paid-memberships-pro"),description:J("Dynamic page section that displays custom links available for the active member only. This block is only visible if other Add Ons or custom code have added links.","paid-memberships-pro"),category:"pmpro-pages",icon:{background:"#FFFFFF",foreground:"#1A688B",src:"external"},keywords:[J("access","paid-memberships-pro"),J("account","paid-memberships-pro"),J("link","paid-memberships-pro"),J("member","paid-memberships-pro"),J("paid memberships pro","paid-memberships-pro"),J("pmpro","paid-memberships-pro"),J("quick link","paid-memberships-pro"),J("user","paid-memberships-pro")],supports:{},attributes:{},edit:function(){return[Object(o.createElement)("div",{className:"pmpro-block-element"},Object(o.createElement)("span",{className:"pmpro-block-title"},J("Paid Memberships Pro","paid-memberships-pro")),Object(o.createElement)("span",{className:"pmpro-block-subtitle"},J("Membership Account: Member Links","paid-memberships-pro")))]},save:function(){return null}}),wp.i18n.__),Q=((0,wp.blocks.registerBlockType)("pmpro/billing-page",{title:K("PMPro Page: Billing","paid-memberships-pro"),description:K("Dynamic page section to display the member's billing information. Members can update their subscription payment method from this form.","paid-memberships-pro"),category:"pmpro-pages",icon:{background:"#FFFFFF",foreground:"#1A688B",src:"list-view"},keywords:[K("credit card","paid-memberships-pro"),K("member","paid-memberships-pro"),K("paid memberships pro","paid-memberships-pro"),K("payment method","paid-memberships-pro"),K("pmpro","paid-memberships-pro")],supports:{},attributes:{},edit:function(){return[Object(o.createElement)("div",{className:"pmpro-block-element"},Object(o.createElement)("span",{className:"pmpro-block-title"},K("Paid Memberships Pro","paid-memberships-pro")),Object(o.createElement)("span",{className:"pmpro-block-subtitle"},K("Membership Billing Page","paid-memberships-pro")))]},save:function(){return null}}),wp.i18n.__);(0,wp.blocks.registerBlockType)("pmpro/cancel-page",{title:Q("PMPro Page: Cancel","paid-memberships-pro"),description:Q("Dynamic page section where members can cancel their membership and active subscription if applicable.","paid-memberships-pro"),category:"pmpro-pages",icon:{background:"#FFFFFF",foreground:"#1A688B",src:"no"},keywords:[Q("member","paid-memberships-pro"),Q("paid memberships pro","paid-memberships-pro"),Q("payment method","paid-memberships-pro"),Q("pmpro","paid-memberships-pro"),Q("terminate","paid-memberships-pro")],supports:{},attributes:{},edit:function(){return[Object(o.createElement)("div",{className:"pmpro-block-element"},Object(o.createElement)("span",{className:"pmpro-block-title"},Q("Paid Memberships Pro","paid-memberships-pro")),Object(o.createElement)("span",{className:"pmpro-block-subtitle"},Q("Membership Cancel Page","paid-memberships-pro")))]},save:function(){return null}});function U(e){var r=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var t,o=h()(e);if(r){var p=h()(this).constructor;t=Reflect.construct(o,arguments,p)}else t=o.apply(this,arguments);return u()(this,t)}}var X=wp.i18n.__,Y=wp.element.Component,Z=wp.components,$=Z.PanelBody,ee=(Z.PanelRow,Z.SelectControl),re=wp.blockEditor.InspectorControls,te=function(e){m()(t,e);var r=U(t);function t(){return c()(this,t),r.apply(this,arguments)}return a()(t,[{key:"render",value:function(){var e=this.props,r=e.attributes.pmpro_default_level,t=e.setAttributes;return Object(o.createElement)(re,null,Object(o.createElement)($,null,Object(o.createElement)(ee,{label:X("Membership Level","paid-memberships-pro"),help:X("Choose a default level for Membership Checkout.","paid-memberships-pro"),value:r,onChange:function(e){return t({pmpro_default_level:e})},options:[""].concat(window.pmpro.all_level_values_and_labels)})))}}]),t}(Y);function oe(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function pe(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?oe(Object(t),!0).forEach((function(r){s()(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):oe(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}var se=wp.i18n.__,ie=wp.blocks.registerBlockType,ce=wp.components.SelectControl,ne=(ie("pmpro/checkout-page",{title:se("Membership Checkout Form","paid-memberships-pro"),description:se("Dynamic form that allows users to complete free registration or paid checkout for the selected membership level.","paid-memberships-pro"),category:"pmpro",icon:{background:"#FFFFFF",foreground:"#658B24",src:"list-view"},keywords:[se("member","paid-memberships-pro"),se("paid memberships pro","paid-memberships-pro"),se("pmpro","paid-memberships-pro"),se("buy","paid-memberships-pro"),se("purchase","paid-memberships-pro"),se("sell","paid-memberships-pro")],supports:{},attributes:{pmpro_default_level:{type:"string",source:"meta",meta:"pmpro_default_level"}},edit:function(e){var r=e.attributes.pmpro_default_level,t=(e.className,e.setAttributes);return[e.isSelected&&Object(o.createElement)(te,pe({setAttributes:t},e)),Object(o.createElement)("div",{className:"pmpro-block-element"},Object(o.createElement)("span",{className:"pmpro-block-title"},se("Paid Memberships Pro","paid-memberships-pro")),Object(o.createElement)("span",{className:"pmpro-block-subtitle"},se("Membership Checkout Form","paid-memberships-pro")),Object(o.createElement)("hr",null),Object(o.createElement)(ce,{label:se("Membership Level","paid-memberships-pro"),value:r,onChange:function(e){return t({pmpro_default_level:e})},options:window.pmpro.all_level_values_and_labels}))]},save:function(){return null}}),wp.i18n.__),ae=((0,wp.blocks.registerBlockType)("pmpro/confirmation-page",{title:ne("PMPro Page: Confirmation","paid-memberships-pro"),description:ne("Dynamic page section that displays a confirmation message and purchase information for the active member immediately after membership registration and checkout.","paid-memberships-pro"),category:"pmpro-pages",icon:{background:"#FFFFFF",foreground:"#1A688B",src:"yes"},keywords:[ne("member","paid-memberships-pro"),ne("buy","paid-memberships-pro"),ne("paid memberships pro","paid-memberships-pro"),ne("pmpro","paid-memberships-pro"),ne("purchase","paid-memberships-pro"),ne("receipt","paid-memberships-pro"),ne("success","paid-memberships-pro")],supports:{},attributes:{},edit:function(){return[Object(o.createElement)("div",{className:"pmpro-block-element"},Object(o.createElement)("span",{className:"pmpro-block-title"},ne("Paid Memberships Pro","paid-memberships-pro")),Object(o.createElement)("span",{className:"pmpro-block-subtitle"},ne("Membership Confirmation Page","paid-memberships-pro")))]},save:function(){return null}}),wp.i18n.__),le=((0,wp.blocks.registerBlockType)("pmpro/invoice-page",{title:ae("PMPro Page: Invoice","paid-memberships-pro"),description:ae("Dynamic page section that displays a list of all invoices (purchase history) for the active member. Each invoice can be selected and viewed in full detail.","paid-memberships-pro"),category:"pmpro-pages",icon:{background:"#FFFFFF",foreground:"#1A688B",src:"archive"},keywords:[ae("history","paid-memberships-pro"),ae("order","paid-memberships-pro"),ae("paid memberships pro","paid-memberships-pro"),ae("pmpro","paid-memberships-pro"),ae("purchases","paid-memberships-pro"),ae("receipt","paid-memberships-pro")],supports:{},attributes:{},edit:function(){return[Object(o.createElement)("div",{className:"pmpro-block-element"},Object(o.createElement)("span",{className:"pmpro-block-title"},ae("Paid Memberships Pro","paid-memberships-pro")),Object(o.createElement)("span",{className:"pmpro-block-subtitle"},ae("Membership Invoices","paid-memberships-pro")))]},save:function(){return null}}),wp.i18n.__),me=((0,wp.blocks.registerBlockType)("pmpro/levels-page",{title:le("Membership Levels and Pricing Table","paid-memberships-pro"),description:le("Dynamic page section that displays a list of membership levels and pricing, linked to membership checkout. To reorder the display, navigate to Memberships > Settings > Levels.","paid-memberships-pro"),category:"pmpro",icon:{background:"#FFFFFF",foreground:"#658B24",src:"list-view"},keywords:[le("level","paid-memberships-pro"),le("paid memberships pro","paid-memberships-pro"),le("pmpro","paid-memberships-pro"),le("price","paid-memberships-pro"),le("pricing table","paid-memberships-pro")],supports:{},attributes:{},edit:function(){return[Object(o.createElement)("div",{className:"pmpro-block-element"},Object(o.createElement)("span",{className:"pmpro-block-title"},le("Paid Memberships Pro","paid-memberships-pro")),Object(o.createElement)("span",{className:"pmpro-block-subtitle"},le("Membership Levels List","paid-memberships-pro")))]},save:function(){return null}}),wp.i18n.__),be=wp.blocks.registerBlockType,ue=wp.components,de=ue.PanelBody,he=ue.CheckboxControl,fe=ue.SelectControl,ye=wp.blockEditor,ge=ye.InspectorControls,ve=ye.InnerBlocks,ke=[{value:0,label:"Non-Members"}].concat(pmpro.all_level_values_and_labels),Oe=(be("pmpro/membership",{title:me("Membership Required Block","paid-memberships-pro"),description:me("Nest blocks within this wrapper to control the inner block visibility by membership level or for non-members only.","paid-memberships-pro"),category:"pmpro",icon:{background:"#FFFFFF",foreground:"#1A688B",src:"visibility"},keywords:[me("block visibility","paid-memberships-pro"),me("confitional","paid-memberships-pro"),me("content","paid-memberships-pro"),me("hide","paid-memberships-pro"),me("hidden","paid-memberships-pro"),me("paid memberships pro","paid-memberships-pro"),me("pmpro","paid-memberships-pro"),me("private","paid-memberships-pro"),me("restrict","paid-memberships-pro")],attributes:{levels:{type:"array",default:[]},uid:{type:"string",default:""},show_noaccess:{type:"boolean",default:!1}},edit:function(e){var r=e.attributes,t=r.levels,p=r.uid,s=r.show_noaccess,i=e.setAttributes,c=e.isSelected;if(""==p){var n=Math.random()+"";i({uid:n})}var a=ke.map((function(e){return[Object(o.createElement)(he,{label:e.label,checked:t.some((function(r){return r==e.value})),onChange:function(r){if(r&&!t.some((function(r){return r==e.value}))){var o=t.slice();o.push(e.value+""),i({levels:o})}else if(!r&&t.some((function(r){return r==e.value}))){var p=t.filter((function(r){return r!=e.value}));i({levels:p})}}})]}));return[c&&Object(o.createElement)(ge,null,Object(o.createElement)(de,null,Object(o.createElement)("p",null,Object(o.createElement)("strong",null,me("Which membership levels can view this block?","paid-memberships-pro"))),Object(o.createElement)("div",{class:"pmpro-block-inspector-scrollable"},a),Object(o.createElement)("hr",null),Object(o.createElement)("p",null,Object(o.createElement)("strong",null,me("What should users without access see?","paid-memberships-pro"))),Object(o.createElement)(fe,{value:s,help:me("Modify the 'no access' message on the Memberships > Advanced Settings page.","paid-memberships-pro"),options:[{label:me("Show nothing","paid-memberships-pro"),value:"0"},{label:me("Show the 'no access' message","paid-memberships-pro"),value:"1"}],onChange:function(e){return i({show_noaccess:e})}}))),c&&Object(o.createElement)("div",{className:"pmpro-block-require-membership-element"},Object(o.createElement)("span",{className:"pmpro-block-title"},me("Membership Required","paid-memberships-pro")),Object(o.createElement)("div",{class:"pmpro-block-inspector-scrollable"},Object(o.createElement)(de,null,a)),Object(o.createElement)(ve,{renderAppender:function(){return Object(o.createElement)(ve.ButtonBlockAppender,null)},templateLock:!1})),!c&&Object(o.createElement)("div",{className:"pmpro-block-require-membership-element"},Object(o.createElement)("span",{className:"pmpro-block-title"},me("Membership Required","paid-memberships-pro")),Object(o.createElement)(ve,{renderAppender:function(){return Object(o.createElement)(ve.ButtonBlockAppender,null)},templateLock:!1}))]},save:function(e){var r=e.className;return Object(o.createElement)("div",{className:r},Object(o.createElement)(ve.Content,null))}}),wp.i18n.__);(0,wp.blocks.registerBlockType)("pmpro/member-profile-edit",{title:Oe("PMPro Page: Account Profile Edit","paid-memberships-pro"),description:Oe("Dynaimc form that allows the current logged in member to edit their default user profile information and any custom user profile fields.","paid-memberships-pro"),category:"pmpro-pages",icon:{background:"#FFFFFF",foreground:"#1A688B",src:"admin-users"},keywords:[Oe("custom field","paid-memberships-pro"),Oe("fields","paid-memberships-pro"),Oe("paid memberships pro","paid-memberships-pro"),Oe("pmpro","paid-memberships-pro"),Oe("user fields","paid-memberships-pro")],edit:function(e){return Object(o.createElement)("div",{className:"pmpro-block-element"},Object(o.createElement)("span",{className:"pmpro-block-title"},Oe("Paid Memberships Pro","paid-memberships-pro")),Object(o.createElement)("span",{className:"pmpro-block-subtitle"},Oe("Member Profile Edit","paid-memberships-pro")))},save:function(){return null}});function je(e){var r=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var t,o=h()(e);if(r){var p=h()(this).constructor;t=Reflect.construct(o,arguments,p)}else t=o.apply(this,arguments);return u()(this,t)}}var we,_e=wp.i18n.__,Ee=wp.element.Component,Pe=wp.components,Ce=Pe.PanelBody,Fe=(Pe.SelectControl,Pe.ToggleControl),Me=wp.blockEditor.InspectorControls,xe=function(e){m()(t,e);var r=je(t);function t(){return c()(this,t),r.apply(this,arguments)}return a()(t,[{key:"render",value:function(){var e=this,r=this.props,t=r.attributes,p=(r.setAttributes,t.display_if_logged_in),s=t.show_menu,i=t.show_logout_link;t.location;return Object(o.createElement)(Me,null,Object(o.createElement)(Ce,null,Object(o.createElement)(Fe,{label:_e("Display 'Welcome' content when logged in.","paid-memberships-pro"),checked:p,onChange:function(r){e.props.setAttributes({display_if_logged_in:r})}}),Object(o.createElement)(Fe,{label:_e("Display the 'Log In Widget' menu.","paid-memberships-pro"),help:_e("Assign the menu under Appearance > Menus.","paid-memberships-pro"),checked:s,onChange:function(r){e.props.setAttributes({show_menu:r})}}),Object(o.createElement)(Fe,{label:_e("Display a 'Log Out' link.","paid-memberships-pro"),checked:i,onChange:function(r){e.props.setAttributes({show_logout_link:r})}})))}}]),t}(Ee),Be=wp.i18n.__,Ne=wp.blocks.registerBlockType,Ae=wp.element.Fragment;Ne("pmpro/login-form",{title:Be("Login Form","paid-memberships-pro"),description:Be("Dynamic form that allows users to log in or recover a loast password. Logged in users can see a welcome message with the selected custom menu.","paid-memberships-pro"),category:"pmpro",icon:{background:"#FFFFFF",foreground:"#658B24",src:"unlock"},keywords:[Be("log in","paid-memberships-pro"),Be("lost password","paid-memberships-pro"),Be("paid memberships pro","paid-memberships-pro"),Be("password reset","paid-memberships-pro"),Be("pmpro","paid-memberships-pro")],supports:{},edit:function(e){return[Object(o.createElement)(Ae,null,Object(o.createElement)(xe,e),Object(o.createElement)("div",{className:"pmpro-block-element"},Object(o.createElement)("span",{className:"pmpro-block-title"},Be("Paid Memberships Pro","paid-memberships-pro")),Object(o.createElement)("span",{className:"pmpro-block-subtitle"},Be("Log in Form","paid-memberships-pro"))))]},save:function(){return null}});we=Object(o.createElement)("svg",{version:"1.1",id:"Layer_1",x:"0px",y:"0px",viewBox:"0 0 18 18"},Object(o.createElement)("path",{d:"M17.99,4.53c-0.35,0.12-0.7,0.26-1.06,0.4c-0.35,0.14-0.7,0.3-1.05,0.46c-0.35,0.16-0.69,0.33-1.03,0.51 c-0.34,0.18-0.68,0.37-1.02,0.56c-0.15,0.09-0.31,0.18-0.46,0.27c-0.15,0.09-0.3,0.19-0.45,0.28c-0.15,0.1-0.3,0.19-0.45,0.29 c-0.15,0.1-0.3,0.2-0.44,0.3c-0.08,0.05-0.16,0.11-0.23,0.16c-0.08,0.05-0.16,0.11-0.23,0.17c-0.08,0.06-0.15,0.11-0.23,0.17 c-0.08,0.06-0.15,0.11-0.23,0.17c-0.07,0.05-0.13,0.1-0.2,0.15c-0.07,0.05-0.13,0.1-0.2,0.15c-0.07,0.05-0.13,0.1-0.2,0.15 c-0.07,0.05-0.13,0.1-0.2,0.16c-0.04,0.03-0.09,0.07-0.13,0.1c-0.04,0.03-0.09,0.07-0.13,0.1C10,9.13,9.95,9.17,9.91,9.2 C9.87,9.24,9.83,9.27,9.79,9.31C9.77,9.32,9.75,9.33,9.74,9.35C9.72,9.36,9.71,9.37,9.69,9.39C9.67,9.4,9.66,9.42,9.64,9.43 C9.63,9.44,9.61,9.46,9.59,9.47C9.54,9.52,9.49,9.56,9.43,9.61C9.38,9.65,9.33,9.7,9.27,9.74C9.22,9.79,9.17,9.84,9.11,9.88 c-0.05,0.05-0.11,0.09-0.16,0.14c-0.27,0.24-0.54,0.49-0.81,0.75c-0.26,0.25-0.53,0.51-0.78,0.78c-0.26,0.26-0.51,0.53-0.76,0.81 c-0.25,0.27-0.49,0.55-0.73,0.84c-0.03,0.04-0.07,0.08-0.1,0.12c-0.03,0.04-0.07,0.08-0.1,0.12c-0.03,0.04-0.07,0.08-0.1,0.12 c-0.03,0.04-0.07,0.08-0.1,0.12c-0.03,0.04-0.07,0.08-0.1,0.12c-0.03,0.04-0.06,0.08-0.1,0.12c-0.03,0.04-0.06,0.08-0.1,0.12 c-0.03,0.04-0.06,0.08-0.1,0.12c0,0.01-0.01,0.01-0.01,0.02c0,0.01-0.01,0.01-0.01,0.02c0,0.01-0.01,0.01-0.01,0.02 c0,0.01-0.01,0.01-0.01,0.02c-0.03,0.03-0.05,0.07-0.08,0.1c-0.03,0.03-0.05,0.07-0.08,0.1c-0.03,0.03-0.05,0.07-0.08,0.11 c-0.03,0.03-0.05,0.07-0.08,0.11c-0.03,0.04-0.06,0.08-0.09,0.12c-0.03,0.04-0.06,0.08-0.09,0.12C4.5,14.96,4.47,15,4.44,15.05 c-0.03,0.04-0.06,0.08-0.09,0.13c0,0-0.01,0.01-0.01,0.01c0,0-0.01,0.01-0.01,0.01c0,0-0.01,0.01-0.01,0.01c0,0-0.01,0.01-0.01,0.01 c-0.15,0.22-0.31,0.44-0.46,0.67c-0.15,0.22-0.3,0.45-0.44,0.68c-0.14,0.23-0.29,0.46-0.43,0.7C2.85,17.52,2.71,17.76,2.58,18 c-0.08-0.19-0.16-0.38-0.23-0.56c-0.07-0.18-0.14-0.35-0.21-0.51c-0.07-0.16-0.13-0.32-0.19-0.47c-0.06-0.15-0.12-0.3-0.18-0.45 l-0.01,0.01l0.01-0.03c-0.01-0.03-0.02-0.05-0.03-0.08c-0.01-0.02-0.02-0.05-0.03-0.07c-0.01-0.02-0.02-0.05-0.03-0.07 c-0.01-0.02-0.02-0.05-0.03-0.07c0-0.01-0.01-0.02-0.01-0.02c0-0.01-0.01-0.02-0.01-0.02c0-0.01-0.01-0.02-0.01-0.02 c0-0.01-0.01-0.02-0.01-0.02c-0.01-0.02-0.01-0.04-0.02-0.05c-0.01-0.02-0.01-0.04-0.02-0.05c-0.01-0.02-0.01-0.04-0.02-0.05 c-0.01-0.02-0.01-0.04-0.02-0.05c-0.01-0.03-0.02-0.05-0.03-0.07c-0.01-0.02-0.02-0.05-0.03-0.07c-0.01-0.02-0.02-0.05-0.03-0.07 c-0.01-0.02-0.02-0.05-0.03-0.07c-0.01-0.02-0.02-0.05-0.03-0.07c-0.01-0.02-0.02-0.05-0.03-0.07c-0.01-0.02-0.02-0.05-0.03-0.07 c-0.01-0.02-0.02-0.05-0.03-0.07c-0.02-0.05-0.04-0.1-0.06-0.16c-0.02-0.05-0.04-0.1-0.06-0.16c-0.02-0.05-0.04-0.11-0.06-0.16 c-0.02-0.05-0.04-0.11-0.06-0.16c-0.08-0.23-0.16-0.47-0.25-0.72c-0.08-0.25-0.17-0.5-0.26-0.77c-0.09-0.27-0.18-0.55-0.27-0.84 c-0.09-0.29-0.19-0.6-0.29-0.93c0.05,0.07,0.1,0.15,0.15,0.22c0.05,0.07,0.1,0.14,0.14,0.2c0.05,0.07,0.09,0.13,0.14,0.19 c0.04,0.06,0.09,0.12,0.13,0.18c0.09,0.13,0.18,0.24,0.27,0.35c0.09,0.11,0.17,0.21,0.24,0.3c0.08,0.09,0.15,0.18,0.23,0.27 c0.07,0.09,0.15,0.17,0.22,0.25c0.02,0.02,0.03,0.04,0.05,0.06c0.02,0.02,0.03,0.04,0.05,0.06c0.02,0.02,0.03,0.04,0.05,0.06 c0.02,0.02,0.03,0.04,0.05,0.06c0.07,0.07,0.13,0.14,0.2,0.22c0.07,0.08,0.14,0.16,0.22,0.24c0.08,0.08,0.16,0.17,0.24,0.27 c0.09,0.1,0.18,0.2,0.27,0.31c0.01,0.01,0.02,0.02,0.03,0.03c0.01,0.01,0.02,0.02,0.03,0.03c0.01,0.01,0.02,0.02,0.03,0.04 c0.01,0.01,0.02,0.02,0.03,0.04c0.02-0.02,0.04-0.05,0.06-0.07c0.02-0.02,0.04-0.05,0.06-0.07c0.02-0.02,0.04-0.05,0.06-0.07 C2.96,14.03,2.98,14,3,13.98c0.03-0.03,0.05-0.06,0.08-0.09c0.03-0.03,0.05-0.06,0.08-0.09c0.03-0.03,0.05-0.06,0.08-0.09 c0.03-0.03,0.05-0.06,0.08-0.09c0.28-0.33,0.58-0.65,0.88-0.97c0.31-0.32,0.63-0.62,0.95-0.92c0.33-0.3,0.67-0.6,1.02-0.88 c0.35-0.29,0.72-0.57,1.09-0.84c0.06-0.04,0.11-0.08,0.17-0.12C7.49,9.83,7.55,9.79,7.6,9.75c0.06-0.04,0.11-0.08,0.17-0.12 c0.06-0.04,0.12-0.08,0.17-0.12C7.97,9.5,7.98,9.49,8,9.48c0.02-0.01,0.03-0.02,0.05-0.03C8.06,9.43,8.08,9.42,8.1,9.41 C8.11,9.4,8.13,9.38,8.14,9.37c0.05-0.03,0.1-0.06,0.14-0.1c0.05-0.03,0.1-0.06,0.14-0.1c0.05-0.03,0.1-0.06,0.14-0.1 c0.05-0.03,0.1-0.06,0.15-0.09C8.79,8.94,8.87,8.9,8.94,8.85C9.01,8.8,9.09,8.76,9.16,8.71c0.07-0.05,0.15-0.09,0.22-0.14 c0.07-0.05,0.15-0.09,0.22-0.14c0.09-0.05,0.17-0.11,0.26-0.16c0.09-0.05,0.17-0.1,0.26-0.16c0.09-0.05,0.18-0.1,0.27-0.15 c0.09-0.05,0.18-0.1,0.27-0.15c0.25-0.14,0.51-0.28,0.76-0.42c0.26-0.14,0.52-0.27,0.78-0.41c0.26-0.13,0.53-0.27,0.79-0.4 c0.27-0.13,0.54-0.26,0.81-0.38c0.01,0,0.02-0.01,0.03-0.01c0.01,0,0.02-0.01,0.03-0.01c0.01,0,0.02-0.01,0.03-0.01 c0.01,0,0.02-0.01,0.03-0.01c0.33-0.15,0.67-0.3,1-0.44c0.34-0.15,0.68-0.29,1.02-0.42c0.34-0.14,0.69-0.27,1.03-0.4 C17.31,4.77,17.65,4.64,17.99,4.53z M15.73,9.59l0.65,4.56l-10.4-0.05c-0.02,0.02-0.04,0.04-0.05,0.07 c-0.02,0.02-0.04,0.04-0.05,0.07c-0.02,0.02-0.04,0.04-0.05,0.07c-0.02,0.02-0.04,0.04-0.05,0.07c-0.02,0.02-0.03,0.04-0.05,0.06 c-0.02,0.02-0.03,0.04-0.05,0.06c-0.02,0.02-0.03,0.04-0.05,0.06c-0.02,0.02-0.03,0.04-0.05,0.06l11.23,0.2l-0.78-5.24L15.73,9.59z M6.75,13.2c-0.04,0.04-0.08,0.09-0.11,0.13c-0.04,0.04-0.08,0.09-0.11,0.13c-0.04,0.04-0.07,0.09-0.11,0.13l9.22-0.07L15.04,9.1 l-0.07-0.53l-0.39,0.04l0.55,4.3l-8.27,0.17C6.83,13.12,6.79,13.16,6.75,13.2z M13.78,7.66l-0.59,0.08 c-0.06,0.04-0.12,0.08-0.18,0.12c-0.06,0.04-0.12,0.08-0.18,0.12c-0.06,0.04-0.12,0.08-0.18,0.12c-0.06,0.04-0.12,0.08-0.18,0.12 c-0.08,0.05-0.16,0.11-0.24,0.16c-0.08,0.06-0.16,0.11-0.24,0.17c-0.08,0.06-0.16,0.11-0.24,0.17c-0.08,0.06-0.16,0.11-0.24,0.17 c-0.07,0.05-0.14,0.1-0.21,0.15c-0.07,0.05-0.14,0.1-0.21,0.15c-0.07,0.05-0.14,0.1-0.2,0.16c-0.07,0.05-0.14,0.11-0.2,0.16 c-0.04,0.03-0.09,0.07-0.13,0.1c-0.04,0.03-0.09,0.07-0.13,0.1c-0.04,0.04-0.09,0.07-0.13,0.11c-0.04,0.04-0.09,0.07-0.13,0.11 c-0.02,0.01-0.03,0.03-0.05,0.04c-0.02,0.01-0.03,0.03-0.05,0.04c-0.02,0.01-0.03,0.03-0.05,0.04c-0.02,0.01-0.03,0.03-0.05,0.04 c-0.06,0.05-0.11,0.09-0.16,0.14c-0.05,0.05-0.11,0.09-0.16,0.14c-0.05,0.05-0.11,0.09-0.16,0.14c-0.05,0.05-0.11,0.09-0.16,0.14 c-0.17,0.15-0.34,0.3-0.51,0.46c-0.17,0.16-0.33,0.31-0.5,0.47c-0.16,0.16-0.33,0.32-0.49,0.48c-0.16,0.16-0.32,0.33-0.48,0.49 l6.98-0.23l-0.48-4.16L13.78,7.66z M13.32,5.73c-0.06,0.03-0.11,0.05-0.17,0.08c-0.06,0.03-0.12,0.06-0.17,0.09 c-0.03,0.01-0.06,0.03-0.08,0.04c0,0,0,0,0,0c-0.02-0.01-0.04-0.03-0.06-0.04c-0.06-0.04-0.13-0.07-0.21-0.09 c-0.07-0.02-0.15-0.04-0.23-0.04c-0.08,0-0.16,0-0.24,0.01l-0.14,0.02c0.07-0.04,0.13-0.08,0.18-0.14c0.05-0.05,0.1-0.11,0.14-0.18 c0.04-0.06,0.06-0.13,0.08-0.2c0.02-0.07,0.02-0.15,0.01-0.22c-0.01-0.1-0.04-0.18-0.08-0.26c-0.05-0.08-0.11-0.14-0.18-0.19 c-0.07-0.05-0.16-0.08-0.25-0.1c-0.09-0.02-0.19-0.02-0.29,0c-0.1,0.02-0.19,0.06-0.27,0.11c-0.08,0.05-0.15,0.11-0.21,0.19 C11.08,4.9,11.03,4.98,11,5.07c-0.03,0.09-0.04,0.18-0.03,0.27c0.01,0.07,0.02,0.14,0.05,0.2c0.03,0.06,0.06,0.12,0.11,0.17 c0.05,0.05,0.1,0.09,0.16,0.12c0.06,0.03,0.13,0.06,0.2,0.07l-0.17,0.03C11.18,5.96,11.06,6,10.94,6.07 c-0.11,0.07-0.21,0.15-0.29,0.25c-0.08,0.1-0.14,0.21-0.19,0.33c-0.04,0.12-0.06,0.25-0.05,0.38l0.02,0.33 c-0.09,0.05-0.17,0.1-0.26,0.16c-0.02,0-0.05,0-0.07,0c0.02-0.01,0.04-0.02,0.06-0.03c-0.06-0.06-0.13-0.11-0.21-0.16 c-0.07-0.04-0.15-0.08-0.24-0.1C9.63,7.2,9.54,7.18,9.45,7.18c-0.09-0.01-0.18,0-0.27,0.01L9.01,7.21c0.08-0.05,0.16-0.1,0.23-0.17 C9.3,6.97,9.36,6.9,9.41,6.81C9.46,6.73,9.5,6.64,9.52,6.55c0.02-0.09,0.03-0.19,0.03-0.29C9.54,6.13,9.51,6.02,9.46,5.92 c-0.05-0.1-0.12-0.18-0.21-0.25C9.17,5.6,9.07,5.56,8.96,5.53c-0.11-0.02-0.22-0.03-0.34,0C8.5,5.55,8.39,5.6,8.29,5.66 C8.19,5.72,8.1,5.81,8.02,5.9C7.95,5.99,7.89,6.1,7.85,6.21C7.81,6.32,7.79,6.44,7.79,6.56c0,0.09,0.02,0.18,0.05,0.26 c0.03,0.08,0.07,0.16,0.12,0.22c0.05,0.07,0.11,0.12,0.18,0.17c0.07,0.04,0.15,0.08,0.23,0.1l-0.2,0.03 C8.01,7.37,7.85,7.42,7.72,7.51C7.58,7.59,7.46,7.7,7.35,7.82C7.25,7.95,7.17,8.1,7.11,8.25c-0.06,0.16-0.09,0.33-0.08,0.5 l0.01,0.74C6.98,9.53,6.93,9.58,6.88,9.62C6.81,9.49,6.74,9.38,6.65,9.28c-0.1-0.11-0.21-0.2-0.33-0.27 C6.2,8.94,6.07,8.89,5.93,8.87C5.8,8.84,5.66,8.83,5.51,8.85L5.3,8.88c0.1-0.06,0.2-0.13,0.29-0.22c0.09-0.09,0.16-0.19,0.23-0.3 c0.06-0.11,0.12-0.23,0.15-0.35C6,7.88,6.02,7.75,6.02,7.62c0-0.17-0.03-0.32-0.08-0.46C5.88,7.03,5.8,6.91,5.71,6.82 C5.61,6.73,5.5,6.67,5.37,6.63c-0.12-0.04-0.26-0.04-0.4-0.02c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0 c-0.14,0.03-0.28,0.08-0.4,0.16c-0.12,0.08-0.23,0.18-0.33,0.3C4.14,7.2,4.07,7.33,4.01,7.48c-0.06,0.15-0.09,0.3-0.1,0.46 c0,0.12,0.01,0.24,0.03,0.35c0.03,0.11,0.07,0.21,0.12,0.3c0.05,0.09,0.12,0.17,0.2,0.23c0.08,0.06,0.17,0.11,0.27,0.14L4.3,9 C4.1,9.03,3.92,9.09,3.75,9.2C3.58,9.3,3.43,9.44,3.3,9.6c-0.13,0.16-0.24,0.35-0.32,0.56c-0.08,0.21-0.13,0.43-0.14,0.67 l-0.12,2.26l-0.53-0.6l0.49-6.3C2.68,6.09,2.71,6,2.74,5.91c0.04-0.09,0.08-0.17,0.14-0.24c0.06-0.07,0.12-0.14,0.2-0.19 C3.15,5.44,3.23,5.4,3.32,5.38l0.71-0.17l0-0.02l0.18-0.04l0.06-1.19C4.3,3.56,4.39,3.15,4.55,2.77c0.16-0.38,0.37-0.75,0.64-1.08 C5.45,1.35,5.76,1.05,6.11,0.8c0.35-0.26,0.74-0.47,1.16-0.61C7.7,0.05,8.12-0.01,8.51,0c0.4,0.02,0.77,0.12,1.1,0.29 c0.33,0.18,0.62,0.43,0.83,0.75c0.21,0.33,0.35,0.73,0.38,1.19l0.1,1.36l0.3-0.07l0,0.02l0.89-0.21c0.13-0.03,0.25-0.03,0.36-0.02 c0.12,0.02,0.22,0.05,0.32,0.11c0.09,0.05,0.17,0.13,0.23,0.21c0.06,0.09,0.1,0.19,0.11,0.31L13.32,5.73z M9.46,3.96L9.4,2.61 C9.39,2.33,9.31,2.09,9.19,1.88C9.07,1.68,8.91,1.51,8.71,1.4C8.52,1.28,8.29,1.21,8.05,1.19C7.81,1.17,7.55,1.2,7.28,1.28 C7.01,1.37,6.76,1.49,6.53,1.65c-0.22,0.16-0.43,0.35-0.6,0.57C5.77,2.43,5.63,2.67,5.53,2.91c-0.1,0.25-0.16,0.5-0.17,0.76 L5.33,4.91L9.46,3.96z"})),wp.blocks.updateCategory("pmpro",{icon:we}),wp.blocks.updateCategory("pmpro-pages",{icon:we})}]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
js/pmpro-admin.js
CHANGED
@@ -67,7 +67,7 @@ jQuery(document).ready(function(){
|
|
67 |
jQuery('#'+notification_id).hide();
|
68 |
}
|
69 |
})
|
70 |
-
|
71 |
});
|
72 |
});
|
73 |
|
@@ -85,11 +85,11 @@ jQuery(document).ready(function() {
|
|
85 |
pmpro_stripe_check_api_keys();
|
86 |
});
|
87 |
pmpro_stripe_check_api_keys();
|
88 |
-
|
89 |
// AJAX call to create webhook.
|
90 |
jQuery('#pmpro_stripe_create_webhook').on( 'click', function(event){
|
91 |
event.preventDefault();
|
92 |
-
|
93 |
var postData = {
|
94 |
action: 'pmpro_stripe_create_webhook',
|
95 |
secretkey: pmpro_stripe_get_secretkey(),
|
@@ -101,10 +101,10 @@ jQuery(document).ready(function() {
|
|
101 |
success: function( response ) {
|
102 |
response = jQuery.parseJSON( response );
|
103 |
///console.log( response );
|
104 |
-
|
105 |
jQuery( '#pmpro_stripe_webhook_notice' ).parent('div').removeClass('error')
|
106 |
jQuery( '#pmpro_stripe_webhook_notice' ).parent('div').removeClass('notice-success')
|
107 |
-
|
108 |
if ( response.notice ) {
|
109 |
jQuery('#pmpro_stripe_webhook_notice').parent('div').addClass(response.notice);
|
110 |
}
|
@@ -117,11 +117,11 @@ jQuery(document).ready(function() {
|
|
117 |
}
|
118 |
})
|
119 |
});
|
120 |
-
|
121 |
// AJAX call to delete webhook.
|
122 |
jQuery('#pmpro_stripe_delete_webhook').on( 'click', function(event){
|
123 |
event.preventDefault();
|
124 |
-
|
125 |
var postData = {
|
126 |
action: 'pmpro_stripe_delete_webhook',
|
127 |
secretkey: pmpro_stripe_get_secretkey(),
|
@@ -134,10 +134,10 @@ jQuery(document).ready(function() {
|
|
134 |
success: function( response ) {
|
135 |
response = jQuery.parseJSON( response );
|
136 |
///console.log( response );
|
137 |
-
|
138 |
jQuery( '#pmpro_stripe_webhook_notice' ).parent('div').removeClass('error')
|
139 |
jQuery( '#pmpro_stripe_webhook_notice' ).parent('div').removeClass('notice-success')
|
140 |
-
|
141 |
if ( response.notice ) {
|
142 |
jQuery('#pmpro_stripe_webhook_notice').parent('div').addClass(response.notice);
|
143 |
}
|
@@ -146,7 +146,7 @@ jQuery(document).ready(function() {
|
|
146 |
}
|
147 |
if ( response.success ) {
|
148 |
jQuery('#pmpro_stripe_create_webhook').show();
|
149 |
-
}
|
150 |
}
|
151 |
})
|
152 |
});
|
@@ -154,7 +154,7 @@ jQuery(document).ready(function() {
|
|
154 |
// AJAX call to rebuild webhook.
|
155 |
jQuery('#pmpro_stripe_rebuild_webhook').on( 'click', function(event){
|
156 |
event.preventDefault();
|
157 |
-
|
158 |
var postData = {
|
159 |
action: 'pmpro_stripe_rebuild_webhook',
|
160 |
secretkey: pmpro_stripe_get_secretkey(),
|
@@ -167,10 +167,10 @@ jQuery(document).ready(function() {
|
|
167 |
success: function( response ) {
|
168 |
response = jQuery.parseJSON( response );
|
169 |
///console.log( response );
|
170 |
-
|
171 |
jQuery( '#pmpro_stripe_webhook_notice' ).parent('div').removeClass('error')
|
172 |
jQuery( '#pmpro_stripe_webhook_notice' ).parent('div').removeClass('notice-success')
|
173 |
-
|
174 |
if ( response.notice ) {
|
175 |
jQuery('#pmpro_stripe_webhook_notice').parent('div').addClass(response.notice);
|
176 |
}
|
@@ -179,18 +179,18 @@ jQuery(document).ready(function() {
|
|
179 |
}
|
180 |
if ( response.success ) {
|
181 |
jQuery('#pmpro_stripe_create_webhook').hide();
|
182 |
-
}
|
183 |
}
|
184 |
})
|
185 |
});
|
186 |
});
|
187 |
|
188 |
// Disable the webhook buttons if the API keys aren't complete yet.
|
189 |
-
function pmpro_stripe_check_api_keys() {
|
190 |
if( ( jQuery('#stripe_publishablekey').val().length > 0 && jQuery('#stripe_secretkey').val().length > 0 ) || jQuery('#live_stripe_connect_secretkey').val().length > 0 ) {
|
191 |
jQuery('#pmpro_stripe_create_webhook').removeClass('disabled');
|
192 |
jQuery('#pmpro_stripe_create_webhook').addClass('button-secondary');
|
193 |
-
} else {
|
194 |
jQuery('#pmpro_stripe_create_webhook').removeClass('button-secondary');
|
195 |
jQuery('#pmpro_stripe_create_webhook').addClass('disabled');
|
196 |
}
|
@@ -208,28 +208,28 @@ function pmpro_stripe_get_secretkey() {
|
|
208 |
|
209 |
// EMAIL TEMPLATES.
|
210 |
jQuery(document).ready(function($) {
|
211 |
-
|
212 |
/* Variables */
|
213 |
var template, disabled, $subject, $editor, $testemail;
|
214 |
$subject = $("#pmpro_email_template_subject").closest("tr");
|
215 |
$editor = $("#wp-email_template_body-wrap");
|
216 |
$testemail = $("#test_email_address").closest("tr");
|
217 |
-
|
218 |
-
$(".hide-while-loading").hide();
|
219 |
-
$(".controls").hide();
|
220 |
|
221 |
/* PMPro Email Template Switcher */
|
222 |
$("#pmpro_email_template_switcher").change(function() {
|
223 |
-
|
224 |
$(".status_message").hide();
|
225 |
template = $(this).val();
|
226 |
-
|
227 |
//get template data
|
228 |
if (template)
|
229 |
pmpro_get_template(template);
|
230 |
else {
|
231 |
-
$(".hide-while-loading").hide();
|
232 |
-
$(".controls").hide();
|
233 |
}
|
234 |
});
|
235 |
|
@@ -245,13 +245,13 @@ jQuery(document).ready(function($) {
|
|
245 |
pmpro_disable_template();
|
246 |
});
|
247 |
|
248 |
-
$("#send_test_email").click(function(e) {
|
249 |
pmpro_save_template().done(setTimeout(function(){pmpro_send_test_email();}, '1000'));
|
250 |
});
|
251 |
|
252 |
/* Functions */
|
253 |
-
function pmpro_get_template(template) {
|
254 |
-
|
255 |
//hide stuff and show ajax spinner
|
256 |
$(".hide-while-loading").hide();
|
257 |
$("#pmproet-spinner").show();
|
@@ -270,16 +270,16 @@ jQuery(document).ready(function($) {
|
|
270 |
|
271 |
//show/hide stuff
|
272 |
$("#pmproet-spinner").hide();
|
273 |
-
$(".controls").show();
|
274 |
-
$(".hide-while-loading").show();
|
275 |
-
$(".status").hide();
|
276 |
|
277 |
//change disable text
|
278 |
if (template == 'header' || template === 'footer') {
|
279 |
|
280 |
$subject.hide();
|
281 |
$testemail.hide();
|
282 |
-
|
283 |
if(template == 'header')
|
284 |
$("#disable_label").text("Disable email header for all PMPro emails?");
|
285 |
else
|
@@ -400,7 +400,7 @@ jQuery(document).ready(function($) {
|
|
400 |
|
401 |
data = {
|
402 |
template: template,
|
403 |
-
email: $("#test_email_address").val(),
|
404 |
action: 'pmpro_email_templates_send_test',
|
405 |
security: $('input[name=security]').val()
|
406 |
};
|
@@ -408,8 +408,8 @@ jQuery(document).ready(function($) {
|
|
408 |
$.post(ajaxurl, data, function(success) {
|
409 |
//show/hide stuff
|
410 |
$("#pmproet-spinner").hide();
|
411 |
-
$(".controls").show();
|
412 |
-
$(".hide-while-loading").show();
|
413 |
|
414 |
if(success) {
|
415 |
$(".status_message_wrapper").addClass("updated").removeClass("error");
|
@@ -428,13 +428,13 @@ jQuery(document).ready(function($) {
|
|
428 |
$("#pmpro_email_template_disable").prop('checked', true);
|
429 |
$("#pmpro_email_template_body").attr('readonly', 'readonly').attr('disabled', 'disabled');
|
430 |
$("#pmpro_email_template_subject").attr('readonly', 'readonly').attr('disabled', 'disabled');
|
431 |
-
$(".controls").hide();
|
432 |
}
|
433 |
else {
|
434 |
$("#pmpro_email_template_disable").prop('checked', false);
|
435 |
$("#pmpro_email_template_body").removeAttr('readonly','readonly').removeAttr('disabled', 'disabled');
|
436 |
$("#pmpro_email_template_subject").removeAttr('readonly','readonly').removeAttr('disabled', 'disabled');
|
437 |
-
$(".controls").show();
|
438 |
}
|
439 |
|
440 |
}
|
67 |
jQuery('#'+notification_id).hide();
|
68 |
}
|
69 |
})
|
70 |
+
|
71 |
});
|
72 |
});
|
73 |
|
85 |
pmpro_stripe_check_api_keys();
|
86 |
});
|
87 |
pmpro_stripe_check_api_keys();
|
88 |
+
|
89 |
// AJAX call to create webhook.
|
90 |
jQuery('#pmpro_stripe_create_webhook').on( 'click', function(event){
|
91 |
event.preventDefault();
|
92 |
+
|
93 |
var postData = {
|
94 |
action: 'pmpro_stripe_create_webhook',
|
95 |
secretkey: pmpro_stripe_get_secretkey(),
|
101 |
success: function( response ) {
|
102 |
response = jQuery.parseJSON( response );
|
103 |
///console.log( response );
|
104 |
+
|
105 |
jQuery( '#pmpro_stripe_webhook_notice' ).parent('div').removeClass('error')
|
106 |
jQuery( '#pmpro_stripe_webhook_notice' ).parent('div').removeClass('notice-success')
|
107 |
+
|
108 |
if ( response.notice ) {
|
109 |
jQuery('#pmpro_stripe_webhook_notice').parent('div').addClass(response.notice);
|
110 |
}
|
117 |
}
|
118 |
})
|
119 |
});
|
120 |
+
|
121 |
// AJAX call to delete webhook.
|
122 |
jQuery('#pmpro_stripe_delete_webhook').on( 'click', function(event){
|
123 |
event.preventDefault();
|
124 |
+
|
125 |
var postData = {
|
126 |
action: 'pmpro_stripe_delete_webhook',
|
127 |
secretkey: pmpro_stripe_get_secretkey(),
|
134 |
success: function( response ) {
|
135 |
response = jQuery.parseJSON( response );
|
136 |
///console.log( response );
|
137 |
+
|
138 |
jQuery( '#pmpro_stripe_webhook_notice' ).parent('div').removeClass('error')
|
139 |
jQuery( '#pmpro_stripe_webhook_notice' ).parent('div').removeClass('notice-success')
|
140 |
+
|
141 |
if ( response.notice ) {
|
142 |
jQuery('#pmpro_stripe_webhook_notice').parent('div').addClass(response.notice);
|
143 |
}
|
146 |
}
|
147 |
if ( response.success ) {
|
148 |
jQuery('#pmpro_stripe_create_webhook').show();
|
149 |
+
}
|
150 |
}
|
151 |
})
|
152 |
});
|
154 |
// AJAX call to rebuild webhook.
|
155 |
jQuery('#pmpro_stripe_rebuild_webhook').on( 'click', function(event){
|
156 |
event.preventDefault();
|
157 |
+
|
158 |
var postData = {
|
159 |
action: 'pmpro_stripe_rebuild_webhook',
|
160 |
secretkey: pmpro_stripe_get_secretkey(),
|
167 |
success: function( response ) {
|
168 |
response = jQuery.parseJSON( response );
|
169 |
///console.log( response );
|
170 |
+
|
171 |
jQuery( '#pmpro_stripe_webhook_notice' ).parent('div').removeClass('error')
|
172 |
jQuery( '#pmpro_stripe_webhook_notice' ).parent('div').removeClass('notice-success')
|
173 |
+
|
174 |
if ( response.notice ) {
|
175 |
jQuery('#pmpro_stripe_webhook_notice').parent('div').addClass(response.notice);
|
176 |
}
|
179 |
}
|
180 |
if ( response.success ) {
|
181 |
jQuery('#pmpro_stripe_create_webhook').hide();
|
182 |
+
}
|
183 |
}
|
184 |
})
|
185 |
});
|
186 |
});
|
187 |
|
188 |
// Disable the webhook buttons if the API keys aren't complete yet.
|
189 |
+
function pmpro_stripe_check_api_keys() {
|
190 |
if( ( jQuery('#stripe_publishablekey').val().length > 0 && jQuery('#stripe_secretkey').val().length > 0 ) || jQuery('#live_stripe_connect_secretkey').val().length > 0 ) {
|
191 |
jQuery('#pmpro_stripe_create_webhook').removeClass('disabled');
|
192 |
jQuery('#pmpro_stripe_create_webhook').addClass('button-secondary');
|
193 |
+
} else {
|
194 |
jQuery('#pmpro_stripe_create_webhook').removeClass('button-secondary');
|
195 |
jQuery('#pmpro_stripe_create_webhook').addClass('disabled');
|
196 |
}
|
208 |
|
209 |
// EMAIL TEMPLATES.
|
210 |
jQuery(document).ready(function($) {
|
211 |
+
|
212 |
/* Variables */
|
213 |
var template, disabled, $subject, $editor, $testemail;
|
214 |
$subject = $("#pmpro_email_template_subject").closest("tr");
|
215 |
$editor = $("#wp-email_template_body-wrap");
|
216 |
$testemail = $("#test_email_address").closest("tr");
|
217 |
+
|
218 |
+
$(".pmpro_admin .hide-while-loading").hide();
|
219 |
+
$(".pmpro_admin .controls").hide();
|
220 |
|
221 |
/* PMPro Email Template Switcher */
|
222 |
$("#pmpro_email_template_switcher").change(function() {
|
223 |
+
|
224 |
$(".status_message").hide();
|
225 |
template = $(this).val();
|
226 |
+
|
227 |
//get template data
|
228 |
if (template)
|
229 |
pmpro_get_template(template);
|
230 |
else {
|
231 |
+
$(".pmpro_admin .hide-while-loading").hide();
|
232 |
+
$(".pmpro_admin .controls").hide();
|
233 |
}
|
234 |
});
|
235 |
|
245 |
pmpro_disable_template();
|
246 |
});
|
247 |
|
248 |
+
$("#send_test_email").click(function(e) {
|
249 |
pmpro_save_template().done(setTimeout(function(){pmpro_send_test_email();}, '1000'));
|
250 |
});
|
251 |
|
252 |
/* Functions */
|
253 |
+
function pmpro_get_template(template) {
|
254 |
+
|
255 |
//hide stuff and show ajax spinner
|
256 |
$(".hide-while-loading").hide();
|
257 |
$("#pmproet-spinner").show();
|
270 |
|
271 |
//show/hide stuff
|
272 |
$("#pmproet-spinner").hide();
|
273 |
+
$(".pmpro_admin .controls").show();
|
274 |
+
$(".pmpro_admin .hide-while-loading").show();
|
275 |
+
$(".pmpro_admin .status").hide();
|
276 |
|
277 |
//change disable text
|
278 |
if (template == 'header' || template === 'footer') {
|
279 |
|
280 |
$subject.hide();
|
281 |
$testemail.hide();
|
282 |
+
|
283 |
if(template == 'header')
|
284 |
$("#disable_label").text("Disable email header for all PMPro emails?");
|
285 |
else
|
400 |
|
401 |
data = {
|
402 |
template: template,
|
403 |
+
email: $("#test_email_address").val(),
|
404 |
action: 'pmpro_email_templates_send_test',
|
405 |
security: $('input[name=security]').val()
|
406 |
};
|
408 |
$.post(ajaxurl, data, function(success) {
|
409 |
//show/hide stuff
|
410 |
$("#pmproet-spinner").hide();
|
411 |
+
$(".pmpro_admin .controls").show();
|
412 |
+
$(".pmpro_admin .hide-while-loading").show();
|
413 |
|
414 |
if(success) {
|
415 |
$(".status_message_wrapper").addClass("updated").removeClass("error");
|
428 |
$("#pmpro_email_template_disable").prop('checked', true);
|
429 |
$("#pmpro_email_template_body").attr('readonly', 'readonly').attr('disabled', 'disabled');
|
430 |
$("#pmpro_email_template_subject").attr('readonly', 'readonly').attr('disabled', 'disabled');
|
431 |
+
$(".pmpro_admin .controls").hide();
|
432 |
}
|
433 |
else {
|
434 |
$("#pmpro_email_template_disable").prop('checked', false);
|
435 |
$("#pmpro_email_template_body").removeAttr('readonly','readonly').removeAttr('disabled', 'disabled');
|
436 |
$("#pmpro_email_template_subject").removeAttr('readonly','readonly').removeAttr('disabled', 'disabled');
|
437 |
+
$(".pmpro_admin .controls").show();
|
438 |
}
|
439 |
|
440 |
}
|
js/pmpro-confirmation.js
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery( document ).ready( function() {
|
2 |
+
// If this script is loaded, then we are on the confirmation page for a pending or token order.
|
3 |
+
// We want to poll the server to see if the order has been completed and if so, refresh so
|
4 |
+
// the user can see the user can see their completed checkout.
|
5 |
+
var pollInterval = setInterval( function() {
|
6 |
+
// Get the level price so that information can be shown in payment request popup
|
7 |
+
jQuery.noConflict().ajax({
|
8 |
+
url: pmpro.restUrl + 'pmpro/v1/order',
|
9 |
+
beforeSend: function ( xhr ) {
|
10 |
+
xhr.setRequestHeader( 'X-WP-Nonce', pmpro.nonce );
|
11 |
+
},
|
12 |
+
dataType: 'json',
|
13 |
+
data: {
|
14 |
+
'code': pmpro.code
|
15 |
+
},
|
16 |
+
success: function( response ) {
|
17 |
+
if ( response.status == 'success' ) {
|
18 |
+
// Order is complete.
|
19 |
+
clearInterval( pollInterval );
|
20 |
+
window.location.reload();
|
21 |
+
}
|
22 |
+
}
|
23 |
+
} );
|
24 |
+
}, 5000 ); // Poll every 5 seconds.
|
25 |
+
});
|
languages/paid-memberships-pro-ca.mo
CHANGED
Binary file
|
languages/paid-memberships-pro-ca.po
CHANGED
@@ -2,14 +2,14 @@
|
|
2 |
# This file is distributed under the same license as the Paid Memberships Pro plugin.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Paid Memberships Pro 2.
|
6 |
"Report-Msgid-Bugs-To: info@paidmembershipspro.com\n"
|
7 |
"Last-Translator: Paid Memberships Pro <info@paidmembershipspro.com>\n"
|
8 |
"Language-Team: Paid Memberships Pro <info@paidmembershipspro.com>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"POT-Creation-Date: 2022-
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
"X-Generator: WP-CLI 2.6.0\n"
|
15 |
"X-Domain: paid-memberships-pro\n"
|
@@ -92,6 +92,8 @@ msgstr "Comproveu una vegada més"
|
|
92 |
#: adminpages/orders.php:1022
|
93 |
#: adminpages/orders.php:1014
|
94 |
#: includes/metaboxes.php:19
|
|
|
|
|
95 |
msgid "All"
|
96 |
msgstr "Tot"
|
97 |
|
@@ -135,6 +137,7 @@ msgstr "Tipus"
|
|
135 |
#: adminpages/membershiplevels.php:296
|
136 |
#: adminpages/membershiplevels.php:298
|
137 |
#: adminpages/membershiplevels.php:359
|
|
|
138 |
msgid "Description"
|
139 |
msgstr "Descripció"
|
140 |
|
@@ -215,6 +218,13 @@ msgstr "Activa %s"
|
|
215 |
#: adminpages/discountcodes.php:866
|
216 |
#: adminpages/orders.php:1417
|
217 |
#: adminpages/orders.php:1419
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
218 |
msgid "Delete"
|
219 |
msgstr "Esborra"
|
220 |
|
@@ -279,6 +289,22 @@ msgstr "WordPress.org"
|
|
279 |
#: adminpages/orders.php:1545
|
280 |
#: adminpages/addons.php:250
|
281 |
#: adminpages/orders.php:912
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
282 |
msgid "N/A"
|
283 |
msgstr "N/A"
|
284 |
|
@@ -471,6 +497,14 @@ msgstr "Passarela de pagament (Payment Gateway) & SSL"
|
|
471 |
#: includes/profile.php:758
|
472 |
#: adminpages/orders.php:1437
|
473 |
#: adminpages/orders.php:1440
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
474 |
msgid "Email"
|
475 |
msgstr "Correu electrònic"
|
476 |
|
@@ -486,6 +520,7 @@ msgstr "Avançat"
|
|
486 |
#: adminpages/advancedsettings.php:42
|
487 |
#: adminpages/advancedsettings.php:68
|
488 |
#: adminpages/advancedsettings.php:69
|
|
|
489 |
msgid "Your advanced settings have been updated."
|
490 |
msgstr "La vostra configuració avançada s’han actualitzat."
|
491 |
|
@@ -506,6 +541,7 @@ msgstr "Si us plau <a href=\"%s\">login</a> per a veure aquest contingut. (<a hr
|
|
506 |
#: adminpages/advancedsettings.php:116
|
507 |
#: includes/updates/upgrade_1.php:13
|
508 |
#: adminpages/advancedsettings.php:118
|
|
|
509 |
msgid "This content is for members only. Visit the site and log in/register to read."
|
510 |
msgstr "Aquest contingut és només per a subscriptors. Visita el lloc i registra’t/log in per a llegir."
|
511 |
|
@@ -524,6 +560,7 @@ msgstr "Aquest contingut és només per a subscriptors. Visita el lloc i registr
|
|
524 |
#: adminpages/advancedsettings.php:132
|
525 |
#: includes/adminpages.php:73
|
526 |
#: adminpages/advancedsettings.php:134
|
|
|
527 |
msgid "Advanced Settings"
|
528 |
msgstr "Configuració Avançada"
|
529 |
|
@@ -532,6 +569,7 @@ msgstr "Configuració Avançada"
|
|
532 |
#: adminpages/advancedsettings.php:92
|
533 |
#: adminpages/advancedsettings.php:164
|
534 |
#: adminpages/advancedsettings.php:166
|
|
|
535 |
msgid "Message for Logged-in Non-members"
|
536 |
msgstr "Missatge per a No subscriptors “Logged-in”"
|
537 |
|
@@ -540,6 +578,7 @@ msgstr "Missatge per a No subscriptors “Logged-in”"
|
|
540 |
#: adminpages/advancedsettings.php:96
|
541 |
#: adminpages/advancedsettings.php:168
|
542 |
#: adminpages/advancedsettings.php:170
|
|
|
543 |
msgid "This message replaces the post content for non-members. Available variables"
|
544 |
msgstr "Aquest missatge reemplaça el contingut de l’entrada per als no membres. Hi ha variables disponibles"
|
545 |
|
@@ -548,6 +587,7 @@ msgstr "Aquest missatge reemplaça el contingut de l’entrada per als no membre
|
|
548 |
#: adminpages/advancedsettings.php:101
|
549 |
#: adminpages/advancedsettings.php:173
|
550 |
#: adminpages/advancedsettings.php:175
|
|
|
551 |
msgid "Message for Logged-out Users"
|
552 |
msgstr "Missatge per als usuaris desconnectats (Logged-out)"
|
553 |
|
@@ -556,6 +596,7 @@ msgstr "Missatge per als usuaris desconnectats (Logged-out)"
|
|
556 |
#: adminpages/advancedsettings.php:105
|
557 |
#: adminpages/advancedsettings.php:177
|
558 |
#: adminpages/advancedsettings.php:179
|
|
|
559 |
msgid "This message replaces the post content for logged-out visitors."
|
560 |
msgstr "Aquest missatge remplaça el contingut del post per a visitants desconnectats (logged-out)"
|
561 |
|
@@ -564,6 +605,7 @@ msgstr "Aquest missatge remplaça el contingut del post per a visitants desconne
|
|
564 |
#: adminpages/advancedsettings.php:110
|
565 |
#: adminpages/advancedsettings.php:182
|
566 |
#: adminpages/advancedsettings.php:184
|
|
|
567 |
msgid "Message for RSS Feed"
|
568 |
msgstr "Missatge per a RSS Feed"
|
569 |
|
@@ -572,24 +614,28 @@ msgstr "Missatge per a RSS Feed"
|
|
572 |
#: adminpages/advancedsettings.php:114
|
573 |
#: adminpages/advancedsettings.php:186
|
574 |
#: adminpages/advancedsettings.php:188
|
|
|
575 |
msgid "This message replaces the post content in RSS feeds."
|
576 |
msgstr "Aquest missatge reemplaça el contingut del seu missatge en els canals RSS."
|
577 |
|
578 |
#: adminpages/advancedsettings.php:122
|
579 |
#: adminpages/advancedsettings.php:199
|
580 |
#: adminpages/advancedsettings.php:201
|
|
|
581 |
msgid "Filter searches and archives?"
|
582 |
msgstr "Filtra recerques i arxius?"
|
583 |
|
584 |
#: adminpages/advancedsettings.php:126
|
585 |
#: adminpages/advancedsettings.php:203
|
586 |
#: adminpages/advancedsettings.php:205
|
|
|
587 |
msgid "No - Non-members will see restricted posts/pages in searches and archives."
|
588 |
msgstr "No - No subscriptors veuran posts restringits/pàgines en les recerques i els arxius."
|
589 |
|
590 |
#: adminpages/advancedsettings.php:127
|
591 |
#: adminpages/advancedsettings.php:204
|
592 |
#: adminpages/advancedsettings.php:206
|
|
|
593 |
msgid "Yes - Only members will see restricted posts/pages in searches and archives."
|
594 |
msgstr "Sí - Només els subscriptors veuran posts restringits/pàgines en les recerques i els arxius."
|
595 |
|
@@ -598,6 +644,7 @@ msgstr "Sí - Només els subscriptors veuran posts restringits/pàgines en les r
|
|
598 |
#: adminpages/advancedsettings.php:120
|
599 |
#: adminpages/advancedsettings.php:210
|
600 |
#: adminpages/advancedsettings.php:212
|
|
|
601 |
msgid "Show Excerpts to Non-Members?"
|
602 |
msgstr "Mostrar extractes als no membres?"
|
603 |
|
@@ -606,6 +653,7 @@ msgstr "Mostrar extractes als no membres?"
|
|
606 |
#: adminpages/advancedsettings.php:124
|
607 |
#: adminpages/advancedsettings.php:214
|
608 |
#: adminpages/advancedsettings.php:216
|
|
|
609 |
msgid "No - Hide excerpts."
|
610 |
msgstr "No - Amaga extractes."
|
611 |
|
@@ -614,12 +662,14 @@ msgstr "No - Amaga extractes."
|
|
614 |
#: adminpages/advancedsettings.php:125
|
615 |
#: adminpages/advancedsettings.php:215
|
616 |
#: adminpages/advancedsettings.php:217
|
|
|
617 |
msgid "Yes - Show excerpts."
|
618 |
msgstr "Sí - Mostra extractes."
|
619 |
|
620 |
#: adminpages/advancedsettings.php:144
|
621 |
#: adminpages/advancedsettings.php:333
|
622 |
#: adminpages/advancedsettings.php:348
|
|
|
623 |
msgid "Hide Ads From Members?"
|
624 |
msgstr "Amaga els anuncis als subscriptors?"
|
625 |
|
@@ -685,6 +735,17 @@ msgstr "Amaga els anuncis als subscriptors?"
|
|
685 |
#: adminpages/advancedsettings.php:494
|
686 |
#: classes/gateways/class.pmprogateway_stripe.php:404
|
687 |
#: classes/gateways/class.pmprogateway_stripe.php:418
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
688 |
msgid "No"
|
689 |
msgstr "No"
|
690 |
|
@@ -693,6 +754,7 @@ msgstr "No"
|
|
693 |
#: adminpages/advancedsettings.php:136
|
694 |
#: adminpages/advancedsettings.php:338
|
695 |
#: adminpages/advancedsettings.php:353
|
|
|
696 |
msgid "Hide Ads From All Members"
|
697 |
msgstr "Amaga Anuncis de tots els subscriptors"
|
698 |
|
@@ -701,6 +763,7 @@ msgstr "Amaga Anuncis de tots els subscriptors"
|
|
701 |
#: adminpages/advancedsettings.php:137
|
702 |
#: adminpages/advancedsettings.php:339
|
703 |
#: adminpages/advancedsettings.php:354
|
|
|
704 |
msgid "Hide Ads From Certain Members"
|
705 |
msgstr "Amaga els anuncis a certs subscriptors"
|
706 |
|
@@ -715,6 +778,7 @@ msgstr "Els anuncis dels següents plugins seràn desactivats automàticament"
|
|
715 |
#: adminpages/advancedsettings.php:145
|
716 |
#: adminpages/advancedsettings.php:346
|
717 |
#: adminpages/advancedsettings.php:361
|
|
|
718 |
msgid "To hide ads in your template code, use code like the following"
|
719 |
msgstr "Per amagar els anuncis al codi de la plantilla, utilitzeu el codi següent"
|
720 |
|
@@ -723,6 +787,7 @@ msgstr "Per amagar els anuncis al codi de la plantilla, utilitzeu el codi següe
|
|
723 |
#: adminpages/advancedsettings.php:156
|
724 |
#: adminpages/advancedsettings.php:355
|
725 |
#: adminpages/advancedsettings.php:370
|
|
|
726 |
msgid "Choose Levels to Hide Ads From"
|
727 |
msgstr "Escull els nivells on amagar els anuncis"
|
728 |
|
@@ -741,6 +806,7 @@ msgstr "Redirigir tot el trànsit de la pàgina de registre a /susbcription/?"
|
|
741 |
#: adminpages/advancedsettings.php:390
|
742 |
#: adminpages/advancedsettings.php:392
|
743 |
#: adminpages/advancedsettings.php:407
|
|
|
744 |
msgid "multisite only"
|
745 |
msgstr "només “multisite”"
|
746 |
|
@@ -795,6 +861,13 @@ msgstr "només “multisite”"
|
|
795 |
#: adminpages/advancedsettings.php:412
|
796 |
#: classes/gateways/class.pmprogateway_stripe.php:406
|
797 |
#: classes/gateways/class.pmprogateway_stripe.php:420
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
798 |
msgid "Yes"
|
799 |
msgstr "Sí"
|
800 |
|
@@ -803,6 +876,7 @@ msgstr "Sí"
|
|
803 |
#: adminpages/advancedsettings.php:202
|
804 |
#: adminpages/advancedsettings.php:241
|
805 |
#: adminpages/advancedsettings.php:256
|
|
|
806 |
msgid "Use reCAPTCHA?"
|
807 |
msgstr "Utilitzar reCAPTCHA?"
|
808 |
|
@@ -818,6 +892,7 @@ msgstr "Sí - Només subscripcions gratuïtes"
|
|
818 |
#: adminpages/advancedsettings.php:208
|
819 |
#: adminpages/advancedsettings.php:247
|
820 |
#: adminpages/advancedsettings.php:262
|
|
|
821 |
msgid "Yes - All memberships."
|
822 |
msgstr "Sí - Tots els subscriptors"
|
823 |
|
@@ -826,6 +901,7 @@ msgstr "Sí - Tots els subscriptors"
|
|
826 |
#: adminpages/advancedsettings.php:210
|
827 |
#: adminpages/advancedsettings.php:249
|
828 |
#: adminpages/advancedsettings.php:264
|
|
|
829 |
msgid "A free reCAPTCHA key is required."
|
830 |
msgstr "Una clau reCAPTCHA gratuïta és necessària"
|
831 |
|
@@ -834,6 +910,7 @@ msgstr "Una clau reCAPTCHA gratuïta és necessària"
|
|
834 |
#: adminpages/advancedsettings.php:210
|
835 |
#: adminpages/advancedsettings.php:249
|
836 |
#: adminpages/advancedsettings.php:264
|
|
|
837 |
msgid "Click here to signup for reCAPTCHA"
|
838 |
msgstr "Clica aquí per a signar per al reCAPTCHA"
|
839 |
|
@@ -890,6 +967,10 @@ msgstr "Seleccionat"
|
|
890 |
#: adminpages/advancedsettings.php:542
|
891 |
#: adminpages/pagesettings.php:508
|
892 |
#: adminpages/pagesettings.php:512
|
|
|
|
|
|
|
|
|
893 |
msgid "Save Settings"
|
894 |
msgstr "Desa la configuració"
|
895 |
|
@@ -965,6 +1046,7 @@ msgstr "Error esborrant el codi de descompte. Si us plau torna a intentar-ho."
|
|
965 |
#: adminpages/discountcodes.php:796
|
966 |
#: adminpages/discountcodes.php:354
|
967 |
#: adminpages/discountcodes.php:798
|
|
|
968 |
msgid "Code not found."
|
969 |
msgstr "No s’ha trobat el codi."
|
970 |
|
@@ -987,6 +1069,7 @@ msgstr "Edita el codi de descompte"
|
|
987 |
#: adminpages/discountcodes.php:735
|
988 |
#: adminpages/discountcodes.php:377
|
989 |
#: adminpages/discountcodes.php:737
|
|
|
990 |
msgid "Add New Discount Code"
|
991 |
msgstr "Afegeix un nou codi de descompte"
|
992 |
|
@@ -1033,6 +1116,12 @@ msgstr "Afegeix un nou codi de descompte"
|
|
1033 |
#: adminpages/discountcodes.php:446
|
1034 |
#: adminpages/discountcodes.php:785
|
1035 |
#: adminpages/orders.php:1331
|
|
|
|
|
|
|
|
|
|
|
|
|
1036 |
msgid "ID"
|
1037 |
msgstr "ID"
|
1038 |
|
@@ -1047,6 +1136,7 @@ msgstr "ID"
|
|
1047 |
#: adminpages/orders.php:415
|
1048 |
#: adminpages/orders.php:421
|
1049 |
#: adminpages/discountcodes.php:447
|
|
|
1050 |
msgid "This will be generated when you save."
|
1051 |
msgstr "Es generarà quan salvis."
|
1052 |
|
@@ -1078,6 +1168,11 @@ msgstr "Es generarà quan salvis."
|
|
1078 |
#: adminpages/discountcodes.php:786
|
1079 |
#: adminpages/orders.php:1332
|
1080 |
#: adminpages/dashboard.php:292
|
|
|
|
|
|
|
|
|
|
|
1081 |
msgid "Code"
|
1082 |
msgstr "Codi"
|
1083 |
|
@@ -1091,6 +1186,7 @@ msgstr "Codi"
|
|
1091 |
#: adminpages/discountcodes.php:489
|
1092 |
#: includes/profile.php:501
|
1093 |
#: includes/profile.php:497
|
|
|
1094 |
msgid "Start Date"
|
1095 |
msgstr "Data d’inici"
|
1096 |
|
@@ -1127,6 +1223,9 @@ msgstr "Data d’inici"
|
|
1127 |
#: classes/gateways/class.pmprogateway_stripe.php:1320
|
1128 |
#: classes/gateways/class.pmprogateway_stripe.php:1326
|
1129 |
#: classes/gateways/class.pmprogateway_stripe.php:785
|
|
|
|
|
|
|
1130 |
msgid "Expiration Date"
|
1131 |
msgstr "Data final (d’expiració)"
|
1132 |
|
@@ -1141,6 +1240,7 @@ msgstr "Data final (d’expiració)"
|
|
1141 |
#: adminpages/discountcodes.php:787
|
1142 |
#: adminpages/discountcodes.php:525
|
1143 |
#: adminpages/discountcodes.php:789
|
|
|
1144 |
msgid "Uses"
|
1145 |
msgstr "Utilitza"
|
1146 |
|
@@ -1174,6 +1274,7 @@ msgstr "A quins nivells s’aplicarà aquest codi?"
|
|
1174 |
#: adminpages/discountcodes.php:574
|
1175 |
#: adminpages/membershiplevels.php:401
|
1176 |
#: adminpages/discountcodes.php:576
|
|
|
1177 |
msgid "Initial Payment"
|
1178 |
msgstr "Pagament inicial"
|
1179 |
|
@@ -1189,6 +1290,7 @@ msgstr "Pagament inicial"
|
|
1189 |
#: adminpages/discountcodes.php:585
|
1190 |
#: adminpages/membershiplevels.php:412
|
1191 |
#: adminpages/discountcodes.php:587
|
|
|
1192 |
msgid "The initial amount collected at registration."
|
1193 |
msgstr "El pagament inicial efectuat en el registre"
|
1194 |
|
@@ -1204,6 +1306,7 @@ msgstr "El pagament inicial efectuat en el registre"
|
|
1204 |
#: adminpages/discountcodes.php:590
|
1205 |
#: adminpages/membershiplevels.php:417
|
1206 |
#: adminpages/discountcodes.php:592
|
|
|
1207 |
msgid "Recurring Subscription"
|
1208 |
msgstr "Subscripció recurrent"
|
1209 |
|
@@ -1219,6 +1322,7 @@ msgstr "Subscripció recurrent"
|
|
1219 |
#: adminpages/discountcodes.php:591
|
1220 |
#: adminpages/membershiplevels.php:418
|
1221 |
#: adminpages/discountcodes.php:593
|
|
|
1222 |
msgid "Check if this level has a recurring subscription payment."
|
1223 |
msgstr "Clica si aquest nivell té un pagament de subscripció recurrent"
|
1224 |
|
@@ -1233,6 +1337,7 @@ msgstr "Clica si aquest nivell té un pagament de subscripció recurrent"
|
|
1233 |
#: adminpages/discountcodes.php:595
|
1234 |
#: adminpages/membershiplevels.php:422
|
1235 |
#: adminpages/discountcodes.php:597
|
|
|
1236 |
msgid "Billing Amount"
|
1237 |
msgstr "Total a facturar"
|
1238 |
|
@@ -1270,6 +1375,11 @@ msgstr "Total a facturar"
|
|
1270 |
#: classes/gateways/class.pmprogateway_stripe.php:2641
|
1271 |
#: classes/gateways/class.pmprogateway_stripe.php:2637
|
1272 |
#: classes/gateways/class.pmprogateway_stripe.php:2639
|
|
|
|
|
|
|
|
|
|
|
1273 |
msgid "Day(s)"
|
1274 |
msgstr "Dia(es)"
|
1275 |
|
@@ -1307,6 +1417,11 @@ msgstr "Dia(es)"
|
|
1307 |
#: classes/gateways/class.pmprogateway_stripe.php:2643
|
1308 |
#: classes/gateways/class.pmprogateway_stripe.php:2639
|
1309 |
#: classes/gateways/class.pmprogateway_stripe.php:2641
|
|
|
|
|
|
|
|
|
|
|
1310 |
msgid "Month(s)"
|
1311 |
msgstr "Mes(os)"
|
1312 |
|
@@ -1344,6 +1459,11 @@ msgstr "Mes(os)"
|
|
1344 |
#: classes/gateways/class.pmprogateway_stripe.php:2642
|
1345 |
#: classes/gateways/class.pmprogateway_stripe.php:2638
|
1346 |
#: classes/gateways/class.pmprogateway_stripe.php:2640
|
|
|
|
|
|
|
|
|
|
|
1347 |
msgid "Week(s)"
|
1348 |
msgstr "Setmana(es)"
|
1349 |
|
@@ -1381,6 +1501,11 @@ msgstr "Setmana(es)"
|
|
1381 |
#: classes/gateways/class.pmprogateway_stripe.php:2644
|
1382 |
#: classes/gateways/class.pmprogateway_stripe.php:2640
|
1383 |
#: classes/gateways/class.pmprogateway_stripe.php:2642
|
|
|
|
|
|
|
|
|
|
|
1384 |
msgid "Year(s)"
|
1385 |
msgstr "Any(s)"
|
1386 |
|
@@ -1396,6 +1521,7 @@ msgstr "Any(s)"
|
|
1396 |
#: adminpages/discountcodes.php:618
|
1397 |
#: adminpages/membershiplevels.php:446
|
1398 |
#: adminpages/discountcodes.php:620
|
|
|
1399 |
msgid "The amount to be billed one cycle after the initial payment."
|
1400 |
msgstr "Total a facturar en un cicle després del pagament inicial"
|
1401 |
|
@@ -1411,6 +1537,7 @@ msgstr "Total a facturar en un cicle després del pagament inicial"
|
|
1411 |
#: adminpages/discountcodes.php:628
|
1412 |
#: adminpages/membershiplevels.php:465
|
1413 |
#: adminpages/discountcodes.php:630
|
|
|
1414 |
msgid "Billing Cycle Limit"
|
1415 |
msgstr "Límit de cicle de facturació"
|
1416 |
|
@@ -1426,6 +1553,7 @@ msgstr "Límit de cicle de facturació"
|
|
1426 |
#: adminpages/discountcodes.php:632
|
1427 |
#: adminpages/membershiplevels.php:469
|
1428 |
#: adminpages/discountcodes.php:634
|
|
|
1429 |
msgid "The <strong>total</strong> number of recurring billing cycles for this level, including the trial period (if applicable) but not including the initial payment. Set to zero if membership is indefinite."
|
1430 |
msgstr "El <strong>total</strong> de cicles de pagament recurrent per a aquest nivell, incloent el període de prova (si s’aplica) però sense incloure el pagament inicial. Deixa-ho a zero si la subscripció és infinita."
|
1431 |
|
@@ -1441,6 +1569,8 @@ msgstr "El <strong>total</strong> de cicles de pagament recurrent per a aquest n
|
|
1441 |
#: adminpages/discountcodes.php:651
|
1442 |
#: adminpages/membershiplevels.php:488
|
1443 |
#: adminpages/discountcodes.php:653
|
|
|
|
|
1444 |
msgid "Custom Trial"
|
1445 |
msgstr "Prova personalitzada"
|
1446 |
|
@@ -1457,6 +1587,8 @@ msgstr "Prova personalitzada"
|
|
1457 |
#: adminpages/discountcodes.php:653
|
1458 |
#: adminpages/membershiplevels.php:490
|
1459 |
#: adminpages/discountcodes.php:655
|
|
|
|
|
1460 |
msgid "Check to add a custom trial period."
|
1461 |
msgstr "Clica per afegir un període de prova personalitzat."
|
1462 |
|
@@ -1473,6 +1605,7 @@ msgstr "Clica per afegir un període de prova personalitzat."
|
|
1473 |
#: adminpages/discountcodes.php:661
|
1474 |
#: adminpages/membershiplevels.php:510
|
1475 |
#: adminpages/discountcodes.php:663
|
|
|
1476 |
msgid "Trial Billing Amount"
|
1477 |
msgstr "Facturació per al període de prova"
|
1478 |
|
@@ -1489,6 +1622,7 @@ msgstr "Facturació per al període de prova"
|
|
1489 |
#: adminpages/discountcodes.php:672
|
1490 |
#: adminpages/membershiplevels.php:521
|
1491 |
#: adminpages/discountcodes.php:674
|
|
|
1492 |
msgid "for the first"
|
1493 |
msgstr "per al primer"
|
1494 |
|
@@ -1505,6 +1639,7 @@ msgstr "per al primer"
|
|
1505 |
#: adminpages/discountcodes.php:674
|
1506 |
#: adminpages/membershiplevels.php:523
|
1507 |
#: adminpages/discountcodes.php:676
|
|
|
1508 |
msgid "subscription payments"
|
1509 |
msgstr "pagaments de subscripció"
|
1510 |
|
@@ -1522,6 +1657,7 @@ msgstr "pagaments de subscripció"
|
|
1522 |
#: adminpages/discountcodes.php:686
|
1523 |
#: adminpages/membershiplevels.php:559
|
1524 |
#: adminpages/discountcodes.php:688
|
|
|
1525 |
msgid "Membership Expiration"
|
1526 |
msgstr "Venciment de la subscripció"
|
1527 |
|
@@ -1538,6 +1674,7 @@ msgstr "Venciment de la subscripció"
|
|
1538 |
#: adminpages/discountcodes.php:687
|
1539 |
#: adminpages/membershiplevels.php:560
|
1540 |
#: adminpages/discountcodes.php:689
|
|
|
1541 |
msgid "Check this to set when membership access expires."
|
1542 |
msgstr "Clica per afegir quan expira l’accés del subscriptor"
|
1543 |
|
@@ -1556,6 +1693,8 @@ msgstr "Clica per afegir quan expira l’accés del subscriptor"
|
|
1556 |
#: adminpages/membershiplevels.php:575
|
1557 |
#: pages/confirmation.php:140
|
1558 |
#: adminpages/discountcodes.php:693
|
|
|
|
|
1559 |
msgid "Expires In"
|
1560 |
msgstr "Expira En"
|
1561 |
|
@@ -1572,6 +1711,8 @@ msgstr "Expira En"
|
|
1572 |
#: adminpages/discountcodes.php:707
|
1573 |
#: adminpages/membershiplevels.php:586
|
1574 |
#: adminpages/discountcodes.php:709
|
|
|
|
|
1575 |
msgid "Set the duration of membership access. Note that the any future payments (recurring subscription, if any) will be cancelled when the membership expires."
|
1576 |
msgstr "Indiqueu la durada de l’accés de subcriptors. Recordeu que qualsevol pagament futur (recurrent de subscripció, si escau) es cancel·larà quan la subscripció caduqui."
|
1577 |
|
@@ -1581,6 +1722,7 @@ msgstr "Indiqueu la durada de l’accés de subcriptors. Recordeu que qualsevol
|
|
1581 |
#: adminpages/discountcodes.php:556
|
1582 |
#: adminpages/discountcodes.php:734
|
1583 |
#: adminpages/discountcodes.php:736
|
|
|
1584 |
msgid "Memberships Discount Codes"
|
1585 |
msgstr "Codis de descompte per a subscripcions"
|
1586 |
|
@@ -1590,6 +1732,7 @@ msgstr "Codis de descompte per a subscripcions"
|
|
1590 |
#: adminpages/discountcodes.php:566
|
1591 |
#: adminpages/discountcodes.php:771
|
1592 |
#: adminpages/discountcodes.php:773
|
|
|
1593 |
msgid "Search Discount Codes"
|
1594 |
msgstr "Cerca codis de descompte"
|
1595 |
|
@@ -1602,6 +1745,7 @@ msgstr "Cerca codis de descompte"
|
|
1602 |
#: adminpages/reports/login.php:83
|
1603 |
#: adminpages/discountcodes.php:774
|
1604 |
#: adminpages/discountcodes.php:776
|
|
|
1605 |
msgid "Search"
|
1606 |
msgstr "Cerca"
|
1607 |
|
@@ -1611,6 +1755,7 @@ msgstr "Cerca"
|
|
1611 |
#: adminpages/discountcodes.php:587
|
1612 |
#: adminpages/discountcodes.php:785
|
1613 |
#: adminpages/discountcodes.php:787
|
|
|
1614 |
msgid "Starts"
|
1615 |
msgstr "Comença"
|
1616 |
|
@@ -1639,6 +1784,9 @@ msgstr "Comença"
|
|
1639 |
#: adminpages/discountcodes.php:788
|
1640 |
#: includes/profile.php:65
|
1641 |
#: adminpages/dashboard.php:228
|
|
|
|
|
|
|
1642 |
msgid "Expires"
|
1643 |
msgstr "Acaba"
|
1644 |
|
@@ -1649,6 +1797,7 @@ msgstr "Acaba"
|
|
1649 |
#: adminpages/admin_header.php:253
|
1650 |
#: adminpages/discountcodes.php:788
|
1651 |
#: adminpages/discountcodes.php:790
|
|
|
1652 |
msgid "Levels"
|
1653 |
msgstr "Nivells"
|
1654 |
|
@@ -1690,6 +1839,8 @@ msgstr "Els codis de descompte et permeten oferir"
|
|
1690 |
#: adminpages/orders.php:1565
|
1691 |
#: adminpages/orders.php:1564
|
1692 |
#: adminpages/orders.php:1556
|
|
|
|
|
1693 |
msgid "edit"
|
1694 |
msgstr "Edita"
|
1695 |
|
@@ -1748,6 +1899,7 @@ msgstr "Configuració de correu electrònic"
|
|
1748 |
#: adminpages/emailsettings.php:70
|
1749 |
#: adminpages/emailsettings.php:61
|
1750 |
#: adminpages/emailsettings.php:88
|
|
|
1751 |
msgid "By default, system generated emails are sent from <em><strong>wordpress@yourdomain.com</strong></em>. You can update this from address using the fields below."
|
1752 |
msgstr "Per defecte, els correus electrònics generats són enviats desde <em><strong>wordpress@yourdomain.com</strong></em>. Pots modificar-ho utilitzant els camps que hi ha a continuació."
|
1753 |
|
@@ -1759,22 +1911,26 @@ msgstr "Per modificar l’aparença dels emails generats pel sistema, afegeix el
|
|
1759 |
#: adminpages/emailsettings.php:78
|
1760 |
#: adminpages/emailsettings.php:69
|
1761 |
#: adminpages/emailsettings.php:94
|
|
|
1762 |
msgid "From Email"
|
1763 |
msgstr "Del Correu Electrònic"
|
1764 |
|
1765 |
#: adminpages/emailsettings.php:86
|
1766 |
#: adminpages/emailsettings.php:77
|
1767 |
#: adminpages/emailsettings.php:102
|
|
|
1768 |
msgid "From Name"
|
1769 |
msgstr "Del Nom"
|
1770 |
|
1771 |
#: adminpages/emailsettings.php:94
|
1772 |
#: adminpages/emailsettings.php:110
|
|
|
1773 |
msgid "Only Filter PMPro Emails?"
|
1774 |
msgstr "Filtra només els correus de PMPro?"
|
1775 |
|
1776 |
#: adminpages/emailsettings.php:98
|
1777 |
#: adminpages/emailsettings.php:114
|
|
|
1778 |
#, php-format
|
1779 |
msgid "If unchecked, all emails from \"WordPress <%s>\" will be filtered to use the above settings."
|
1780 |
msgstr "Si no està clicat, tots els correus de \"WordPress <%s>\" seran filtrats per utilitzar la configuració de dalt."
|
@@ -1943,6 +2099,9 @@ msgstr "Afegeix un nou nivell de subscripció"
|
|
1943 |
#: adminpages/membershiplevels.php:808
|
1944 |
#: adminpages/reports/history.php:184
|
1945 |
#: adminpages/reports/login.php:181
|
|
|
|
|
|
|
1946 |
msgid "Name"
|
1947 |
msgstr "Nom"
|
1948 |
|
@@ -1950,6 +2109,7 @@ msgstr "Nom"
|
|
1950 |
#: adminpages/membershiplevels.php:314
|
1951 |
#: adminpages/membershiplevels.php:316
|
1952 |
#: adminpages/membershiplevels.php:377
|
|
|
1953 |
msgid "Confirmation Message"
|
1954 |
msgstr "Missatge de confirmació"
|
1955 |
|
@@ -1963,6 +2123,8 @@ msgstr "Missatge de confirmació"
|
|
1963 |
#: adminpages/membershiplevels.php:639
|
1964 |
#: adminpages/membershiplevels.php:397
|
1965 |
#: adminpages/membershiplevels.php:809
|
|
|
|
|
1966 |
msgid "Billing Details"
|
1967 |
msgstr "Detalls de facturació"
|
1968 |
|
@@ -1986,6 +2148,9 @@ msgstr "Detalls de facturació"
|
|
1986 |
#: classes/gateways/class.pmprogateway_stripe.php:2700
|
1987 |
#: classes/gateways/class.pmprogateway_stripe.php:2696
|
1988 |
#: classes/gateways/class.pmprogateway_stripe.php:2698
|
|
|
|
|
|
|
1989 |
msgid "per"
|
1990 |
msgstr "per"
|
1991 |
|
@@ -2004,6 +2169,7 @@ msgstr "La integració d’Stripe actualment només suporta períodes de factura
|
|
2004 |
#: adminpages/discountcodes.php:620
|
2005 |
#: adminpages/membershiplevels.php:448
|
2006 |
#: adminpages/discountcodes.php:622
|
|
|
2007 |
msgid "Braintree integration currently only supports billing periods of \"Month\" or \"Year\"."
|
2008 |
msgstr "La integració de Braintree actualment només suporta períodes de facturació de “mes” o “any”."
|
2009 |
|
@@ -2021,6 +2187,7 @@ msgstr "La integració de Payflow actualment només suporta períodes de factura
|
|
2021 |
#: adminpages/membershiplevels.php:393
|
2022 |
#: adminpages/membershiplevels.php:396
|
2023 |
#: adminpages/membershiplevels.php:454
|
|
|
2024 |
msgid "After saving this level, make note of the ID and create a \"Plan\" in your Braintree dashboard with the same settings and the \"Plan ID\" set to <em>pmpro_#</em>, where # is the level ID."
|
2025 |
msgstr "Després de salvar aquest nivell, anota’t la ID i crea un \"Plan\" al dashboard de Braintree amb la mateixa configuració i el \"Plan ID\" set to <em>pmpro_#</em>, on # és el level ID."
|
2026 |
|
@@ -2043,6 +2210,8 @@ msgstr "Després de salvar aquest nivell, anota’t la ID i crea un \"Plan\" al
|
|
2043 |
#: adminpages/membershiplevels.php:454
|
2044 |
#: adminpages/membershiplevels.php:459
|
2045 |
#: classes/gateways/class.pmprogateway_cybersource.php:89
|
|
|
|
|
2046 |
msgid "Note"
|
2047 |
msgstr "Nota"
|
2048 |
|
@@ -2062,6 +2231,7 @@ msgstr "Has de crear un “Plan\" a Braintree dashboard amb la mateixa configura
|
|
2062 |
#: adminpages/discountcodes.php:634
|
2063 |
#: adminpages/membershiplevels.php:471
|
2064 |
#: adminpages/discountcodes.php:636
|
|
|
2065 |
msgid "Stripe integration currently does not support billing limits. You can still set an expiration date below."
|
2066 |
msgstr "La integració d’Stripe no suporta límits de facturació actualment. Pots posar una data de límit de facturació a sota."
|
2067 |
|
@@ -2073,6 +2243,8 @@ msgstr "La integració d’Stripe no suporta límits de facturació actualment.
|
|
2073 |
#: adminpages/discountcodes.php:655
|
2074 |
#: adminpages/membershiplevels.php:493
|
2075 |
#: adminpages/discountcodes.php:657
|
|
|
|
|
2076 |
msgid "2Checkout integration does not support custom trials. You can do one period trials by setting an initial payment different from the billing amount."
|
2077 |
msgstr "La integració de 2Checkout no suporta proves personalitzades. Pots afegir un període de prova configurant un pagament inicial diferent del total de facturació."
|
2078 |
|
@@ -2085,6 +2257,7 @@ msgstr "La integració de 2Checkout no suporta proves personalitzades. Pots afeg
|
|
2085 |
#: adminpages/discountcodes.php:676
|
2086 |
#: adminpages/membershiplevels.php:525
|
2087 |
#: adminpages/discountcodes.php:678
|
|
|
2088 |
msgid "Stripe integration currently does not support trial amounts greater than $0."
|
2089 |
msgstr "La integració d’Stripe no suporta preus de prova majors que $0."
|
2090 |
|
@@ -2097,6 +2270,7 @@ msgstr "La integració d’Stripe no suporta preus de prova majors que $0."
|
|
2097 |
#: adminpages/discountcodes.php:678
|
2098 |
#: adminpages/membershiplevels.php:527
|
2099 |
#: adminpages/discountcodes.php:680
|
|
|
2100 |
msgid "Braintree integration currently does not support trial amounts greater than $0."
|
2101 |
msgstr "La integració de Braintree no suporta preus de prova majors que $0."
|
2102 |
|
@@ -2109,6 +2283,7 @@ msgstr "La integració de Braintree no suporta preus de prova majors que $0."
|
|
2109 |
#: adminpages/discountcodes.php:680
|
2110 |
#: adminpages/membershiplevels.php:529
|
2111 |
#: adminpages/discountcodes.php:682
|
|
|
2112 |
msgid "Payflow integration currently does not support trial amounts greater than $0."
|
2113 |
msgstr "La integració de Payflow no suporta preus de prova majors que $0."
|
2114 |
|
@@ -2123,6 +2298,7 @@ msgstr "La integració de Payflow no suporta preus de prova majors que $0."
|
|
2123 |
#: adminpages/dashboard.php:140
|
2124 |
#: adminpages/membershiplevels.php:550
|
2125 |
#: adminpages/advancedsettings.php:343
|
|
|
2126 |
msgid "Other Settings"
|
2127 |
msgstr "Configuració, altres"
|
2128 |
|
@@ -2158,6 +2334,8 @@ msgstr "Clica per amagar aquest nivell de la pàgina de nivells de subscripció
|
|
2158 |
#: adminpages/advancedsettings.php:194
|
2159 |
#: adminpages/membershiplevels.php:624
|
2160 |
#: adminpages/advancedsettings.php:196
|
|
|
|
|
2161 |
msgid "Content Settings"
|
2162 |
msgstr "Configuració de continguts"
|
2163 |
|
@@ -2169,12 +2347,14 @@ msgstr "Configuració de continguts"
|
|
2169 |
#: adminpages/membershiplevels.php:497
|
2170 |
#: adminpages/membershiplevels.php:500
|
2171 |
#: adminpages/membershiplevels.php:654
|
|
|
2172 |
msgid "Categories"
|
2173 |
msgstr "Categories"
|
2174 |
|
2175 |
#: adminpages/membershiplevels.php:516
|
2176 |
#: adminpages/membershiplevels.php:517
|
2177 |
#: adminpages/membershiplevels.php:674
|
|
|
2178 |
msgid "Save Level"
|
2179 |
msgstr "Salva nivell"
|
2180 |
|
@@ -2209,6 +2389,14 @@ msgstr "Salva nivell"
|
|
2209 |
#: includes/profile.php:918
|
2210 |
#: adminpages/orders.php:960
|
2211 |
#: pages/billing.php:436
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2212 |
msgid "Cancel"
|
2213 |
msgstr "Cancel·la"
|
2214 |
|
@@ -2249,6 +2437,7 @@ msgstr "Cerca Nivells"
|
|
2249 |
#: adminpages/membershiplevels.php:579
|
2250 |
#: adminpages/membershiplevels.php:631
|
2251 |
#: adminpages/membershiplevels.php:797
|
|
|
2252 |
msgid "Drag and drop membership levels to reorder them on the Levels page."
|
2253 |
msgstr "Arrossega i deixa anar els nivells de subscripció per a reordenar-los a la pàgina de nivells"
|
2254 |
|
@@ -2273,6 +2462,9 @@ msgstr "Arrossega i deixa anar els nivells de subscripció per a reordenar-los a
|
|
2273 |
#: pages/confirmation.php:99
|
2274 |
#: pages/invoice.php:89
|
2275 |
#: shortcodes/pmpro_account.php:44
|
|
|
|
|
|
|
2276 |
msgid "Expiration"
|
2277 |
msgstr "Data final (d’expiració)"
|
2278 |
|
@@ -2285,6 +2477,7 @@ msgstr "Data final (d’expiració)"
|
|
2285 |
#: adminpages/membershiplevels.php:587
|
2286 |
#: adminpages/membershiplevels.php:641
|
2287 |
#: adminpages/membershiplevels.php:811
|
|
|
2288 |
msgid "Allow Signups"
|
2289 |
msgstr "Permet nous “signups”"
|
2290 |
|
@@ -2298,6 +2491,7 @@ msgstr "Permet nous “signups”"
|
|
2298 |
#: adminpages/membershiplevels.php:656
|
2299 |
#: adminpages/membershiplevels.php:840
|
2300 |
#: adminpages/membershiplevels.php:921
|
|
|
2301 |
msgid "FREE"
|
2302 |
msgstr "GRATUÏT"
|
2303 |
|
@@ -2311,6 +2505,7 @@ msgstr "GRATUÏT"
|
|
2311 |
#: adminpages/membershiplevels.php:665
|
2312 |
#: adminpages/membershiplevels.php:849
|
2313 |
#: adminpages/membershiplevels.php:930
|
|
|
2314 |
msgid "After"
|
2315 |
msgstr "Després"
|
2316 |
|
@@ -2356,6 +2551,7 @@ msgstr "copia"
|
|
2356 |
#: includes/adminpages.php:149
|
2357 |
#: includes/adminpages.php:153
|
2358 |
#: adminpages/memberslist.php:20
|
|
|
2359 |
msgid "Members List"
|
2360 |
msgstr "Llistat de subscriptors"
|
2361 |
|
@@ -2368,6 +2564,9 @@ msgstr "Llistat de subscriptors"
|
|
2368 |
#: adminpages/orders.php:994
|
2369 |
#: adminpages/orders.php:1000
|
2370 |
#: adminpages/orders.php:992
|
|
|
|
|
|
|
2371 |
msgid "Export to CSV"
|
2372 |
msgstr "Exporta a CSV"
|
2373 |
|
@@ -2395,6 +2594,10 @@ msgstr "Exporta a CSV"
|
|
2395 |
#: adminpages/orders.php:1012
|
2396 |
#: adminpages/reports/sales.php:311
|
2397 |
#: classes/class-pmpro-members-list-table.php:651
|
|
|
|
|
|
|
|
|
2398 |
msgid "Show"
|
2399 |
msgstr "Mostra"
|
2400 |
|
@@ -2421,6 +2624,10 @@ msgstr "Mostra"
|
|
2421 |
#: classes/class.pmproemail.php:195
|
2422 |
#: classes/class.pmproemail.php:235
|
2423 |
#: classes/class-pmpro-members-list-table.php:653
|
|
|
|
|
|
|
|
|
2424 |
msgid "All Levels"
|
2425 |
msgstr "Tots els nivells"
|
2426 |
|
@@ -2430,6 +2637,7 @@ msgstr "Tots els nivells"
|
|
2430 |
#: classes/class-pmpro-members-list-table.php:234
|
2431 |
#: classes/class-pmpro-members-list-table.php:634
|
2432 |
#: classes/class-pmpro-members-list-table.php:663
|
|
|
2433 |
msgid "Cancelled Members"
|
2434 |
msgstr "Subscriptors cancel·lats"
|
2435 |
|
@@ -2439,6 +2647,7 @@ msgstr "Subscriptors cancel·lats"
|
|
2439 |
#: classes/class-pmpro-members-list-table.php:235
|
2440 |
#: classes/class-pmpro-members-list-table.php:635
|
2441 |
#: classes/class-pmpro-members-list-table.php:664
|
|
|
2442 |
msgid "Expired Members"
|
2443 |
msgstr "Subscriptors “expirats”"
|
2444 |
|
@@ -2449,6 +2658,7 @@ msgstr "Subscriptors “expirats”"
|
|
2449 |
#: classes/class-pmpro-members-list-table.php:236
|
2450 |
#: classes/class-pmpro-members-list-table.php:636
|
2451 |
#: classes/class-pmpro-members-list-table.php:665
|
|
|
2452 |
msgid "Old Members"
|
2453 |
msgstr "Subscriptors antics"
|
2454 |
|
@@ -2460,6 +2670,9 @@ msgstr "Subscriptors antics"
|
|
2460 |
#: adminpages/memberslist.php:28
|
2461 |
#: adminpages/reports/history.php:115
|
2462 |
#: adminpages/reports/history.php:119
|
|
|
|
|
|
|
2463 |
msgid "Search Members"
|
2464 |
msgstr "Cerca Subscriptors"
|
2465 |
|
@@ -2497,6 +2710,9 @@ msgstr "%d subscriptor no trobat."
|
|
2497 |
#: adminpages/dashboard.php:223
|
2498 |
#: adminpages/dashboard.php:225
|
2499 |
#: classes/class.memberorder.php:1003
|
|
|
|
|
|
|
2500 |
msgid "Username"
|
2501 |
msgstr "Nom d’usuari"
|
2502 |
|
@@ -2539,6 +2755,8 @@ msgstr "Cognoms"
|
|
2539 |
#: pages/checkout.php:230
|
2540 |
#: pages/confirmation.php:78
|
2541 |
#: pages/invoice.php:68
|
|
|
|
|
2542 |
msgid "Billing Address"
|
2543 |
msgstr "Adreça de Facturació"
|
2544 |
|
@@ -2574,6 +2792,7 @@ msgstr "Preu"
|
|
2574 |
#: adminpages/reports/login.php:183
|
2575 |
#: adminpages/dashboard.php:225
|
2576 |
#: adminpages/dashboard.php:227
|
|
|
2577 |
msgid "Joined"
|
2578 |
msgstr "Afegit"
|
2579 |
|
@@ -2597,6 +2816,7 @@ msgstr "Finalitzat"
|
|
2597 |
#: adminpages/dashboard.php:232
|
2598 |
#: classes/class-pmpro-members-list-table.php:225
|
2599 |
#: adminpages/dashboard.php:234
|
|
|
2600 |
msgid "No members found."
|
2601 |
msgstr "No s’han trobat subscriptors"
|
2602 |
|
@@ -2611,6 +2831,7 @@ msgstr "No s’han trobat subscriptors"
|
|
2611 |
#: adminpages/reports/login.php:263
|
2612 |
#: classes/class-pmpro-members-list-table.php:228
|
2613 |
#: classes/class-pmpro-members-list-table.php:227
|
|
|
2614 |
msgid "Search all levels"
|
2615 |
msgstr "Cerca a tots els nivells"
|
2616 |
|
@@ -2637,6 +2858,7 @@ msgstr "Comanda esborrada correctament"
|
|
2637 |
#: adminpages/orders.php:72
|
2638 |
#: adminpages/orders.php:164
|
2639 |
#: adminpages/orders.php:170
|
|
|
2640 |
msgid "Error deleting order."
|
2641 |
msgstr "Error esborrant comanda."
|
2642 |
|
@@ -2645,6 +2867,8 @@ msgstr "Error esborrant comanda."
|
|
2645 |
#: adminpages/orders.php:169
|
2646 |
#: adminpages/orders.php:309
|
2647 |
#: adminpages/orders.php:315
|
|
|
|
|
2648 |
msgid "Order saved successfully."
|
2649 |
msgstr "Comanda salvada correctament."
|
2650 |
|
@@ -2659,6 +2883,8 @@ msgstr "Error actualitzant la marca de temps de la comanda (order timestamp)"
|
|
2659 |
#: adminpages/orders.php:180
|
2660 |
#: adminpages/orders.php:312
|
2661 |
#: adminpages/orders.php:318
|
|
|
|
|
2662 |
msgid "Error saving order."
|
2663 |
msgstr "Error guardant la comanda."
|
2664 |
|
@@ -2671,6 +2897,8 @@ msgstr "Error guardant la comanda."
|
|
2671 |
#: classes/class.memberorder.php:963
|
2672 |
#: adminpages/orders.php:389
|
2673 |
#: classes/class.memberorder.php:1005
|
|
|
|
|
2674 |
msgid "Order"
|
2675 |
msgstr "Comanda"
|
2676 |
|
@@ -2680,6 +2908,8 @@ msgstr "Comanda"
|
|
2680 |
#: adminpages/orders.php:348
|
2681 |
#: adminpages/orders.php:387
|
2682 |
#: adminpages/orders.php:393
|
|
|
|
|
2683 |
msgid "New Order"
|
2684 |
msgstr "Nova comanda"
|
2685 |
|
@@ -2689,6 +2919,8 @@ msgstr "Nova comanda"
|
|
2689 |
#: adminpages/orders.php:371
|
2690 |
#: adminpages/orders.php:433
|
2691 |
#: adminpages/orders.php:439
|
|
|
|
|
2692 |
msgid "Randomly generated for you."
|
2693 |
msgstr "Generat aleatoriament per a tu"
|
2694 |
|
@@ -2698,6 +2930,8 @@ msgstr "Generat aleatoriament per a tu"
|
|
2698 |
#: adminpages/orders.php:376
|
2699 |
#: adminpages/orders.php:438
|
2700 |
#: adminpages/orders.php:444
|
|
|
|
|
2701 |
msgid "User ID"
|
2702 |
msgstr "ID d’usuari"
|
2703 |
|
@@ -2708,6 +2942,9 @@ msgstr "ID d’usuari"
|
|
2708 |
#: adminpages/emailtemplates.php:130
|
2709 |
#: adminpages/orders.php:451
|
2710 |
#: adminpages/orders.php:457
|
|
|
|
|
|
|
2711 |
msgid "Membership Level ID"
|
2712 |
msgstr "ID del Nivell de subscripció"
|
2713 |
|
@@ -2718,6 +2955,8 @@ msgstr "ID del Nivell de subscripció"
|
|
2718 |
#: adminpages/orders.php:464
|
2719 |
#: includes/privacy.php:245
|
2720 |
#: adminpages/orders.php:470
|
|
|
|
|
2721 |
msgid "Billing Name"
|
2722 |
msgstr "Nom de Facturació"
|
2723 |
|
@@ -2728,6 +2967,8 @@ msgstr "Nom de Facturació"
|
|
2728 |
#: adminpages/orders.php:478
|
2729 |
#: includes/privacy.php:249
|
2730 |
#: adminpages/orders.php:484
|
|
|
|
|
2731 |
msgid "Billing Street"
|
2732 |
msgstr "Adreça de Facturació"
|
2733 |
|
@@ -2740,6 +2981,7 @@ msgstr "Adreça de Facturació"
|
|
2740 |
#: includes/privacy.php:358
|
2741 |
#: adminpages/orders.php:497
|
2742 |
#: adminpages/orders.php:496
|
|
|
2743 |
msgid "Billing City"
|
2744 |
msgstr "Ciutat de Facturació"
|
2745 |
|
@@ -2751,6 +2993,7 @@ msgstr "Ciutat de Facturació"
|
|
2751 |
#: includes/privacy.php:257
|
2752 |
#: adminpages/orders.php:510
|
2753 |
#: adminpages/orders.php:509
|
|
|
2754 |
msgid "Billing State"
|
2755 |
msgstr "Provincia de Facturació"
|
2756 |
|
@@ -2763,6 +3006,8 @@ msgstr "Provincia de Facturació"
|
|
2763 |
#: includes/privacy.php:360
|
2764 |
#: adminpages/orders.php:523
|
2765 |
#: adminpages/orders.php:521
|
|
|
|
|
2766 |
msgid "Billing Postal Code"
|
2767 |
msgstr "Codi postal de Facturació"
|
2768 |
|
@@ -2775,6 +3020,8 @@ msgstr "Codi postal de Facturació"
|
|
2775 |
#: includes/privacy.php:362
|
2776 |
#: adminpages/orders.php:536
|
2777 |
#: adminpages/orders.php:533
|
|
|
|
|
2778 |
msgid "Billing Country"
|
2779 |
msgstr "País de Facturació"
|
2780 |
|
@@ -2786,6 +3033,8 @@ msgstr "País de Facturació"
|
|
2786 |
#: includes/privacy.php:269
|
2787 |
#: adminpages/orders.php:550
|
2788 |
#: adminpages/orders.php:546
|
|
|
|
|
2789 |
msgid "Billing Phone"
|
2790 |
msgstr "Telèfon de Facturació"
|
2791 |
|
@@ -2797,6 +3046,8 @@ msgstr "Telèfon de Facturació"
|
|
2797 |
#: includes/privacy.php:273
|
2798 |
#: adminpages/orders.php:602
|
2799 |
#: adminpages/orders.php:597
|
|
|
|
|
2800 |
msgid "Sub Total"
|
2801 |
msgstr "Subtotal"
|
2802 |
|
@@ -2814,6 +3065,10 @@ msgstr "Subtotal"
|
|
2814 |
#: adminpages/orders.php:615
|
2815 |
#: includes/functions.php:2880
|
2816 |
#: adminpages/orders.php:610
|
|
|
|
|
|
|
|
|
2817 |
msgid "Tax"
|
2818 |
msgstr "Impost"
|
2819 |
|
@@ -2825,6 +3080,8 @@ msgstr "Impost"
|
|
2825 |
#: includes/privacy.php:281
|
2826 |
#: adminpages/orders.php:632
|
2827 |
#: adminpages/orders.php:627
|
|
|
|
|
2828 |
msgid "Coupon Amount"
|
2829 |
msgstr "Valor del cupó"
|
2830 |
|
@@ -2853,6 +3110,12 @@ msgstr "Valor del cupó"
|
|
2853 |
#: adminpages/orders.php:645
|
2854 |
#: adminpages/orders.php:1336
|
2855 |
#: adminpages/dashboard.php:295
|
|
|
|
|
|
|
|
|
|
|
|
|
2856 |
msgid "Total"
|
2857 |
msgstr "Total"
|
2858 |
|
@@ -2871,6 +3134,8 @@ msgstr "Hauria de ser subtotal+impost+valor del cupó"
|
|
2871 |
#: includes/privacy.php:289
|
2872 |
#: adminpages/orders.php:664
|
2873 |
#: adminpages/orders.php:659
|
|
|
|
|
2874 |
msgid "Payment Type"
|
2875 |
msgstr "Tipus de pagament"
|
2876 |
|
@@ -2881,6 +3146,8 @@ msgstr "Tipus de pagament"
|
|
2881 |
#: adminpages/orders.php:669
|
2882 |
#: adminpages/orders.php:675
|
2883 |
#: adminpages/orders.php:670
|
|
|
|
|
2884 |
msgid "e.g. PayPal Express, PayPal Standard, Credit Card."
|
2885 |
msgstr "Per exemple PayPal Express, PayPal Standard, Tarja de crèdit"
|
2886 |
|
@@ -2919,6 +3186,11 @@ msgstr "Per exemple PayPal Express, PayPal Standard, Tarja de crèdit"
|
|
2919 |
#: classes/gateways/class.pmprogateway_stripe.php:1309
|
2920 |
#: adminpages/orders.php:674
|
2921 |
#: classes/gateways/class.pmprogateway_stripe.php:768
|
|
|
|
|
|
|
|
|
|
|
2922 |
msgid "Card Type"
|
2923 |
msgstr "Tipus de targeta"
|
2924 |
|
@@ -2929,6 +3201,8 @@ msgstr "Tipus de targeta"
|
|
2929 |
#: adminpages/orders.php:683
|
2930 |
#: adminpages/orders.php:689
|
2931 |
#: adminpages/orders.php:684
|
|
|
|
|
2932 |
msgid "e.g. Visa, MasterCard, AMEX, etc"
|
2933 |
msgstr "Per exemple Visa, MasterCard, AMEX, etc"
|
2934 |
|
@@ -2946,6 +3220,9 @@ msgstr "Per exemple Visa, MasterCard, AMEX, etc"
|
|
2946 |
#: includes/privacy.php:297
|
2947 |
#: adminpages/orders.php:693
|
2948 |
#: adminpages/orders.php:688
|
|
|
|
|
|
|
2949 |
msgid "Account Number"
|
2950 |
msgstr "Nombre de Compte"
|
2951 |
|
@@ -2955,6 +3232,8 @@ msgstr "Nombre de Compte"
|
|
2955 |
#: adminpages/orders.php:504
|
2956 |
#: adminpages/orders.php:698
|
2957 |
#: adminpages/orders.php:704
|
|
|
|
|
2958 |
msgid "Obscure all but last 4 digits."
|
2959 |
msgstr "Tot amagat menys els últims 4 dígits"
|
2960 |
|
@@ -2967,6 +3246,9 @@ msgstr "Tot amagat menys els últims 4 dígits"
|
|
2967 |
#: includes/privacy.php:301
|
2968 |
#: adminpages/orders.php:713
|
2969 |
#: adminpages/orders.php:724
|
|
|
|
|
|
|
2970 |
msgid "Expiration Month"
|
2971 |
msgstr "Mes de finalització/expiració"
|
2972 |
|
@@ -2977,6 +3259,7 @@ msgstr "Mes de finalització/expiració"
|
|
2977 |
#: adminpages/orders.php:726
|
2978 |
#: includes/privacy.php:305
|
2979 |
#: adminpages/orders.php:732
|
|
|
2980 |
msgid "Expiration Year"
|
2981 |
msgstr "Any de finalització/expiració"
|
2982 |
|
@@ -3007,6 +3290,11 @@ msgstr "Any de finalització/expiració"
|
|
3007 |
#: adminpages/orders.php:735
|
3008 |
#: adminpages/orders.php:1340
|
3009 |
#: adminpages/dashboard.php:296
|
|
|
|
|
|
|
|
|
|
|
3010 |
msgid "Status"
|
3011 |
msgstr "Estat"
|
3012 |
|
@@ -3028,6 +3316,10 @@ msgstr "Estat"
|
|
3028 |
#: adminpages/orders.php:757
|
3029 |
#: adminpages/orders.php:1338
|
3030 |
#: classes/class.memberorder.php:1006
|
|
|
|
|
|
|
|
|
3031 |
msgid "Gateway"
|
3032 |
msgstr "Passarel·la"
|
3033 |
|
@@ -3045,6 +3337,9 @@ msgstr "Passarel·la"
|
|
3045 |
#: includes/privacy.php:317
|
3046 |
#: adminpages/orders.php:787
|
3047 |
#: adminpages/orders.php:780
|
|
|
|
|
|
|
3048 |
msgid "Gateway Environment"
|
3049 |
msgstr "Entorn de passarel·la"
|
3050 |
|
@@ -3064,6 +3359,11 @@ msgstr "Entorn de passarel·la"
|
|
3064 |
#: classes/class-pmpro-site-health.php:206
|
3065 |
#: adminpages/orders.php:788
|
3066 |
#: classes/class-pmpro-site-health.php:210
|
|
|
|
|
|
|
|
|
|
|
3067 |
msgid "Sandbox/Testing"
|
3068 |
msgstr "Sandbox/Proves"
|
3069 |
|
@@ -3083,6 +3383,11 @@ msgstr "Sandbox/Proves"
|
|
3083 |
#: classes/class-pmpro-site-health.php:207
|
3084 |
#: adminpages/orders.php:789
|
3085 |
#: classes/class-pmpro-site-health.php:211
|
|
|
|
|
|
|
|
|
|
|
3086 |
msgid "Live/Production"
|
3087 |
msgstr "Live/Producció"
|
3088 |
|
@@ -3095,6 +3400,7 @@ msgstr "Live/Producció"
|
|
3095 |
#: includes/privacy.php:321
|
3096 |
#: adminpages/orders.php:804
|
3097 |
#: adminpages/orders.php:797
|
|
|
3098 |
msgid "Payment Transaction ID"
|
3099 |
msgstr "ID de la transacció de pagament"
|
3100 |
|
@@ -3106,6 +3412,7 @@ msgstr "ID de la transacció de pagament"
|
|
3106 |
#: adminpages/orders.php:808
|
3107 |
#: adminpages/orders.php:814
|
3108 |
#: adminpages/orders.php:807
|
|
|
3109 |
msgid "Generated by the gateway. Useful to cross reference orders."
|
3110 |
msgstr "Generat per la passarel·la. Útil per a comandes de referències creuades."
|
3111 |
|
@@ -3120,6 +3427,8 @@ msgstr "Generat per la passarel·la. Útil per a comandes de referències creuad
|
|
3120 |
#: adminpages/orders.php:819
|
3121 |
#: adminpages/orders.php:812
|
3122 |
#: classes/class.memberorder.php:1007
|
|
|
|
|
3123 |
msgid "Subscription Transaction ID"
|
3124 |
msgstr "ID de la transacció per a subscripció"
|
3125 |
|
@@ -3131,6 +3440,8 @@ msgstr "ID de la transacció per a subscripció"
|
|
3131 |
#: adminpages/orders.php:824
|
3132 |
#: adminpages/orders.php:830
|
3133 |
#: adminpages/orders.php:822
|
|
|
|
|
3134 |
msgid "Generated by the gateway. Useful to cross reference subscriptions."
|
3135 |
msgstr "Generat per la passarel·la. Útil per a subscripcions de referències creuades."
|
3136 |
|
@@ -3162,6 +3473,10 @@ msgstr "Generat per la passarel·la. Útil per a subscripcions de referències c
|
|
3162 |
#: adminpages/orders.php:827
|
3163 |
#: adminpages/orders.php:1341
|
3164 |
#: adminpages/dashboard.php:297
|
|
|
|
|
|
|
|
|
3165 |
msgid "Date"
|
3166 |
msgstr "Data"
|
3167 |
|
@@ -3172,6 +3487,8 @@ msgstr "Data"
|
|
3172 |
#: adminpages/orders.php:874
|
3173 |
#: adminpages/orders.php:880
|
3174 |
#: adminpages/orders.php:872
|
|
|
|
|
3175 |
msgid "Affiliate ID"
|
3176 |
msgstr "ID de subscripció"
|
3177 |
|
@@ -3182,6 +3499,8 @@ msgstr "ID de subscripció"
|
|
3182 |
#: adminpages/orders.php:887
|
3183 |
#: adminpages/orders.php:893
|
3184 |
#: adminpages/orders.php:885
|
|
|
|
|
3185 |
msgid "Affiliate SubID"
|
3186 |
msgstr "SubID de subscripció"
|
3187 |
|
@@ -3192,6 +3511,8 @@ msgstr "SubID de subscripció"
|
|
3192 |
#: adminpages/orders.php:923
|
3193 |
#: adminpages/orders.php:929
|
3194 |
#: adminpages/orders.php:921
|
|
|
|
|
3195 |
msgid "Notes"
|
3196 |
msgstr "Notes"
|
3197 |
|
@@ -3202,6 +3523,8 @@ msgstr "Notes"
|
|
3202 |
#: adminpages/orders.php:961
|
3203 |
#: adminpages/orders.php:967
|
3204 |
#: adminpages/orders.php:959
|
|
|
|
|
3205 |
msgid "Save Order"
|
3206 |
msgstr "Salva Comanda"
|
3207 |
|
@@ -3246,6 +3569,9 @@ msgstr "Envia Correu"
|
|
3246 |
#: adminpages/discountcodes.php:884
|
3247 |
#: classes/class-pmpro-site-health.php:77
|
3248 |
#: adminpages/orders.php:970
|
|
|
|
|
|
|
3249 |
msgid "Orders"
|
3250 |
msgstr "Comandes"
|
3251 |
|
@@ -3256,6 +3582,8 @@ msgstr "Comandes"
|
|
3256 |
#: adminpages/orders.php:973
|
3257 |
#: adminpages/orders.php:979
|
3258 |
#: adminpages/orders.php:971
|
|
|
|
|
3259 |
msgid "Add New Order"
|
3260 |
msgstr "Afegeix nova comanda"
|
3261 |
|
@@ -3265,6 +3593,8 @@ msgstr "Afegeix nova comanda"
|
|
3265 |
#: adminpages/orders.php:1018
|
3266 |
#: adminpages/orders.php:1024
|
3267 |
#: adminpages/orders.php:1016
|
|
|
|
|
3268 |
msgid "Within a Date Range"
|
3269 |
msgstr "Dins del període"
|
3270 |
|
@@ -3274,6 +3604,8 @@ msgstr "Dins del període"
|
|
3274 |
#: adminpages/orders.php:1020
|
3275 |
#: adminpages/orders.php:1026
|
3276 |
#: adminpages/orders.php:1018
|
|
|
|
|
3277 |
msgid "Predefined Date Range"
|
3278 |
msgstr "Període predefinit"
|
3279 |
|
@@ -3283,6 +3615,8 @@ msgstr "Període predefinit"
|
|
3283 |
#: adminpages/orders.php:1022
|
3284 |
#: adminpages/orders.php:1028
|
3285 |
#: adminpages/orders.php:1020
|
|
|
|
|
3286 |
msgid "Within a Level"
|
3287 |
msgstr "Dins del nivell"
|
3288 |
|
@@ -3292,6 +3626,8 @@ msgstr "Dins del nivell"
|
|
3292 |
#: adminpages/orders.php:1026
|
3293 |
#: adminpages/orders.php:1032
|
3294 |
#: adminpages/orders.php:1024
|
|
|
|
|
3295 |
msgid "Within a Status"
|
3296 |
msgstr "Dins de l’”Status”"
|
3297 |
|
@@ -3301,6 +3637,8 @@ msgstr "Dins de l’”Status”"
|
|
3301 |
#: adminpages/orders.php:1038
|
3302 |
#: adminpages/orders.php:1044
|
3303 |
#: adminpages/orders.php:1036
|
|
|
|
|
3304 |
msgid "From"
|
3305 |
msgstr "De"
|
3306 |
|
@@ -3310,6 +3648,8 @@ msgstr "De"
|
|
3310 |
#: adminpages/orders.php:1053
|
3311 |
#: adminpages/orders.php:1059
|
3312 |
#: adminpages/orders.php:1051
|
|
|
|
|
3313 |
msgid "To"
|
3314 |
msgstr "per a "
|
3315 |
|
@@ -3319,6 +3659,8 @@ msgstr "per a "
|
|
3319 |
#: adminpages/orders.php:1066
|
3320 |
#: adminpages/orders.php:1072
|
3321 |
#: adminpages/orders.php:1064
|
|
|
|
|
3322 |
msgid "filter by "
|
3323 |
msgstr "filtrat per"
|
3324 |
|
@@ -3328,6 +3670,8 @@ msgstr "filtrat per"
|
|
3328 |
#: adminpages/orders.php:1116
|
3329 |
#: adminpages/orders.php:1122
|
3330 |
#: adminpages/orders.php:1114
|
|
|
|
|
3331 |
msgid "Filter"
|
3332 |
msgstr "Filtre"
|
3333 |
|
@@ -3345,6 +3689,10 @@ msgstr "Filtre"
|
|
3345 |
#: adminpages/orders.php:1259
|
3346 |
#: adminpages/orders.php:1248
|
3347 |
#: adminpages/orders.php:1251
|
|
|
|
|
|
|
|
|
3348 |
msgid "Search Orders"
|
3349 |
msgstr "Cerca Comandes"
|
3350 |
|
@@ -3356,6 +3704,9 @@ msgstr "Cerca Comandes"
|
|
3356 |
#: adminpages/orders.php:1326
|
3357 |
#: adminpages/orders.php:1332
|
3358 |
#: adminpages/orders.php:1324
|
|
|
|
|
|
|
3359 |
#, php-format
|
3360 |
msgid "%d orders found."
|
3361 |
msgstr "%d comandes no trobades"
|
@@ -3379,6 +3730,8 @@ msgstr "%d comandes no trobades"
|
|
3379 |
#: adminpages/orders.php:1341
|
3380 |
#: adminpages/orders.php:1333
|
3381 |
#: adminpages/dashboard.php:293
|
|
|
|
|
3382 |
msgid "User"
|
3383 |
msgstr "Usuari"
|
3384 |
|
@@ -3422,6 +3775,8 @@ msgstr "Usuari"
|
|
3422 |
#: js/blocks.build.js:798
|
3423 |
#: js/blocks.build.js:1004
|
3424 |
#: js/blocks.build.js:1086
|
|
|
|
|
3425 |
msgid "Membership Level"
|
3426 |
msgstr "Nivell de subscripció"
|
3427 |
|
@@ -3441,6 +3796,9 @@ msgstr "Nivell de subscripció"
|
|
3441 |
#: adminpages/orders.php:1539
|
3442 |
#: adminpages/orders.php:1337
|
3443 |
#: adminpages/orders.php:1531
|
|
|
|
|
|
|
3444 |
msgid "Payment"
|
3445 |
msgstr "Pagament"
|
3446 |
|
@@ -3452,6 +3810,8 @@ msgstr "Pagament"
|
|
3452 |
#: adminpages/orders.php:1341
|
3453 |
#: adminpages/orders.php:1347
|
3454 |
#: adminpages/orders.php:1339
|
|
|
|
|
3455 |
msgid "Transaction IDs"
|
3456 |
msgstr "IDs de transacció"
|
3457 |
|
@@ -3473,6 +3833,10 @@ msgstr "IDs de transacció"
|
|
3473 |
#: adminpages/orders.php:1487
|
3474 |
#: adminpages/dashboard.php:321
|
3475 |
#: adminpages/dashboard.php:336
|
|
|
|
|
|
|
|
|
3476 |
msgid "deleted"
|
3477 |
msgstr "esborrat"
|
3478 |
|
@@ -3485,6 +3849,8 @@ msgstr "esborrat"
|
|
3485 |
#: adminpages/orders.php:1471
|
3486 |
#: adminpages/orders.php:1548
|
3487 |
#: adminpages/orders.php:1540
|
|
|
|
|
3488 |
msgid "Subscription"
|
3489 |
msgstr "Subscripció"
|
3490 |
|
@@ -3499,6 +3865,8 @@ msgstr "Subscripció"
|
|
3499 |
#: adminpages/orders.php:1372
|
3500 |
#: adminpages/orders.php:1375
|
3501 |
#: adminpages/orders.php:1367
|
|
|
|
|
3502 |
#, php-format
|
3503 |
msgid "Deleting orders is permanent and can affect active users. Are you sure you want to delete order %s?"
|
3504 |
msgstr "Esborra comandes és permanent i pot afectar usuaris actius. Estàs segur que vols esborrar la comanda %s?"
|
@@ -3527,6 +3895,8 @@ msgstr "correu electrònic"
|
|
3527 |
#: adminpages/orders.php:1576
|
3528 |
#: adminpages/orders.php:1568
|
3529 |
#: adminpages/dashboard.php:304
|
|
|
|
|
3530 |
msgid "No orders found."
|
3531 |
msgstr "No s’han trobat comandes"
|
3532 |
|
@@ -3599,6 +3969,7 @@ msgstr "Les següents pàgines han estat creades per a tu"
|
|
3599 |
#: adminpages/pagesettings.php:167
|
3600 |
#: adminpages/pagesettings.php:182
|
3601 |
#: adminpages/pagesettings.php:186
|
|
|
3602 |
msgid "Manage the WordPress pages assigned to each required Paid Memberships Pro page."
|
3603 |
msgstr "Utilitza les pàgines de WordPress a cadascuna de les pàgines requerides per al Paid Memberships Pro"
|
3604 |
|
@@ -3608,6 +3979,7 @@ msgstr "Utilitza les pàgines de WordPress a cadascuna de les pàgines requeride
|
|
3608 |
#: adminpages/pagesettings.php:169
|
3609 |
#: adminpages/pagesettings.php:184
|
3610 |
#: adminpages/pagesettings.php:188
|
|
|
3611 |
msgid "Assign the WordPress pages for each required Paid Memberships Pro page or"
|
3612 |
msgstr "Assigna pàgines al WordPress per cadascuna de les pàgines requerides pel Paid Memberships Pro o"
|
3613 |
|
@@ -3617,6 +3989,7 @@ msgstr "Assigna pàgines al WordPress per cadascuna de les pàgines requerides p
|
|
3617 |
#: adminpages/pagesettings.php:170
|
3618 |
#: adminpages/pagesettings.php:185
|
3619 |
#: adminpages/pagesettings.php:189
|
|
|
3620 |
msgid "click here to let us generate them for you"
|
3621 |
msgstr "Clica aquí per permetre’ns generar-les per a tu"
|
3622 |
|
@@ -3626,6 +3999,7 @@ msgstr "Clica aquí per permetre’ns generar-les per a tu"
|
|
3626 |
#: adminpages/pagesettings.php:186
|
3627 |
#: adminpages/pagesettings.php:201
|
3628 |
#: adminpages/pagesettings.php:205
|
|
|
3629 |
msgid "Account Page"
|
3630 |
msgstr "Pàgina de Compte"
|
3631 |
|
@@ -3672,6 +4046,14 @@ msgstr "Pàgina de Compte"
|
|
3672 |
#: adminpages/pagesettings.php:335
|
3673 |
#: adminpages/pagesettings.php:360
|
3674 |
#: adminpages/pagesettings.php:485
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3675 |
msgid "Choose One"
|
3676 |
msgstr "Escull-ne un"
|
3677 |
|
@@ -3732,6 +4114,16 @@ msgstr "Escull-ne un"
|
|
3732 |
#: adminpages/pagesettings.php:405
|
3733 |
#: adminpages/pagesettings.php:434
|
3734 |
#: adminpages/pagesettings.php:493
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3735 |
msgid "edit page"
|
3736 |
msgstr "Edita la pàgina"
|
3737 |
|
@@ -3789,6 +4181,15 @@ msgstr "Edita la pàgina"
|
|
3789 |
#: adminpages/pagesettings.php:408
|
3790 |
#: adminpages/pagesettings.php:437
|
3791 |
#: adminpages/pagesettings.php:496
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3792 |
msgid "view page"
|
3793 |
msgstr "Mira la pàgina"
|
3794 |
|
@@ -3842,6 +4243,12 @@ msgstr "Mira la pàgina"
|
|
3842 |
#: adminpages/pagesettings.php:323
|
3843 |
#: adminpages/pagesettings.php:348
|
3844 |
#: adminpages/pagesettings.php:373
|
|
|
|
|
|
|
|
|
|
|
|
|
3845 |
msgid "Include the shortcode"
|
3846 |
msgstr "Inclou l’”enllaç” (shortcode)"
|
3847 |
|
@@ -3853,6 +4260,7 @@ msgstr "Inclou l’”enllaç” (shortcode)"
|
|
3853 |
#: adminpages/pagesettings.php:203
|
3854 |
#: adminpages/pagesettings.php:225
|
3855 |
#: adminpages/pagesettings.php:229
|
|
|
3856 |
msgid "Billing Information Page"
|
3857 |
msgstr "Pàgina d’informació de Facturació"
|
3858 |
|
@@ -3864,6 +4272,7 @@ msgstr "Pàgina d’informació de Facturació"
|
|
3864 |
#: adminpages/pagesettings.php:220
|
3865 |
#: adminpages/pagesettings.php:249
|
3866 |
#: adminpages/pagesettings.php:253
|
|
|
3867 |
msgid "Cancel Page"
|
3868 |
msgstr "Cancel·la pàgina"
|
3869 |
|
@@ -3875,6 +4284,7 @@ msgstr "Cancel·la pàgina"
|
|
3875 |
#: adminpages/pagesettings.php:238
|
3876 |
#: adminpages/pagesettings.php:274
|
3877 |
#: adminpages/pagesettings.php:278
|
|
|
3878 |
msgid "Checkout Page"
|
3879 |
msgstr "Pàgina de Checkout"
|
3880 |
|
@@ -3886,6 +4296,7 @@ msgstr "Pàgina de Checkout"
|
|
3886 |
#: adminpages/pagesettings.php:256
|
3887 |
#: adminpages/pagesettings.php:299
|
3888 |
#: adminpages/pagesettings.php:303
|
|
|
3889 |
msgid "Confirmation Page"
|
3890 |
msgstr "Pàgina de Confirmació"
|
3891 |
|
@@ -3897,6 +4308,7 @@ msgstr "Pàgina de Confirmació"
|
|
3897 |
#: adminpages/pagesettings.php:274
|
3898 |
#: adminpages/pagesettings.php:324
|
3899 |
#: adminpages/pagesettings.php:328
|
|
|
3900 |
msgid "Invoice Page"
|
3901 |
msgstr "Pàgina de Factura"
|
3902 |
|
@@ -3908,6 +4320,7 @@ msgstr "Pàgina de Factura"
|
|
3908 |
#: adminpages/pagesettings.php:292
|
3909 |
#: adminpages/pagesettings.php:349
|
3910 |
#: adminpages/pagesettings.php:353
|
|
|
3911 |
msgid "Levels Page"
|
3912 |
msgstr "Pàgina de Nivells"
|
3913 |
|
@@ -3915,6 +4328,7 @@ msgstr "Pàgina de Nivells"
|
|
3915 |
#: adminpages/pagesettings.php:391
|
3916 |
#: adminpages/pagesettings.php:457
|
3917 |
#: adminpages/pagesettings.php:461
|
|
|
3918 |
msgid "Additional Page Settings"
|
3919 |
msgstr "Configuració addicional de pàgina"
|
3920 |
|
@@ -3928,6 +4342,9 @@ msgstr "Configuració addicional de pàgina"
|
|
3928 |
#: adminpages/pagesettings.php:411
|
3929 |
#: adminpages/pagesettings.php:440
|
3930 |
#: adminpages/pagesettings.php:499
|
|
|
|
|
|
|
3931 |
msgid "Generate Page"
|
3932 |
msgstr "Genera pàgina"
|
3933 |
|
@@ -3947,6 +4364,8 @@ msgstr "La teva configuració de pagament ha estat actualitzada"
|
|
3947 |
#: adminpages/paymentsettings.php:112
|
3948 |
#: adminpages/paymentsettings.php:127
|
3949 |
#: classes/class-pmpro-site-health.php:69
|
|
|
|
|
3950 |
msgid "Payment Gateway"
|
3951 |
msgstr "Passarela de pagament (Payment Gateway)"
|
3952 |
|
@@ -3956,6 +4375,8 @@ msgstr "Passarela de pagament (Payment Gateway)"
|
|
3956 |
#: adminpages/paymentsettings.php:146
|
3957 |
#: adminpages/paymentsettings.php:112
|
3958 |
#: adminpages/paymentsettings.php:248
|
|
|
|
|
3959 |
msgid "SSL Settings"
|
3960 |
msgstr "Configuració SSL"
|
3961 |
|
@@ -3966,11 +4387,15 @@ msgstr "Aprèn més sobre <a title=\"Paid Memberships Pro - SSL Settings\" targe
|
|
3966 |
|
3967 |
#: adminpages/paymentsettings.php:101
|
3968 |
#: adminpages/paymentsettings.php:122
|
|
|
|
|
3969 |
msgid "Choose a Gateway"
|
3970 |
msgstr "Escull una passarel·la"
|
3971 |
|
3972 |
#: adminpages/paymentsettings.php:148
|
3973 |
#: adminpages/paymentsettings.php:194
|
|
|
|
|
3974 |
msgid "Currency and Tax Settings"
|
3975 |
msgstr "Configuració de moneda i impostos"
|
3976 |
|
@@ -3981,6 +4406,8 @@ msgstr "Configuració de moneda i impostos"
|
|
3981 |
#: adminpages/paymentsettings.php:381
|
3982 |
#: adminpages/paymentsettings.php:386
|
3983 |
#: adminpages/paymentsettings.php:199
|
|
|
|
|
3984 |
msgid "Currency"
|
3985 |
msgstr "Moneda"
|
3986 |
|
@@ -3988,6 +4415,8 @@ msgstr "Moneda"
|
|
3988 |
#: adminpages/paymentsettings.php:400
|
3989 |
#: adminpages/paymentsettings.php:402
|
3990 |
#: adminpages/paymentsettings.php:215
|
|
|
|
|
3991 |
msgid "Not all currencies will be supported by every gateway. Please check with your gateway."
|
3992 |
msgstr "No totes les monedes es poden usar a totes les passarel·les. Si us plau comprova la teva passarel·la."
|
3993 |
|
@@ -3997,6 +4426,8 @@ msgstr "No totes les monedes es poden usar a totes les passarel·les. Si us plau
|
|
3997 |
#: adminpages/paymentsettings.php:406
|
3998 |
#: adminpages/paymentsettings.php:408
|
3999 |
#: adminpages/paymentsettings.php:220
|
|
|
|
|
4000 |
msgid "Accepted Credit Card Types"
|
4001 |
msgstr "Tipus de tarjetes de crèdit acceptades."
|
4002 |
|
@@ -4006,6 +4437,8 @@ msgstr "Tipus de tarjetes de crèdit acceptades."
|
|
4006 |
#: adminpages/paymentsettings.php:443
|
4007 |
#: adminpages/paymentsettings.php:445
|
4008 |
#: adminpages/paymentsettings.php:234
|
|
|
|
|
4009 |
msgid "Sales Tax"
|
4010 |
msgstr "Impost a la venta"
|
4011 |
|
@@ -4019,6 +4452,9 @@ msgstr "Impost a la venta"
|
|
4019 |
#: pages/billing.php:82
|
4020 |
#: adminpages/paymentsettings.php:234
|
4021 |
#: pages/billing.php:179
|
|
|
|
|
|
|
4022 |
msgid "optional"
|
4023 |
msgstr "opcional"
|
4024 |
|
@@ -4028,6 +4464,8 @@ msgstr "opcional"
|
|
4028 |
#: adminpages/paymentsettings.php:446
|
4029 |
#: adminpages/paymentsettings.php:448
|
4030 |
#: adminpages/paymentsettings.php:237
|
|
|
|
|
4031 |
msgid "Tax State"
|
4032 |
msgstr "Estat/país de la taxa"
|
4033 |
|
@@ -4037,11 +4475,15 @@ msgstr "Estat/país de la taxa"
|
|
4037 |
#: adminpages/paymentsettings.php:447
|
4038 |
#: adminpages/paymentsettings.php:449
|
4039 |
#: adminpages/paymentsettings.php:238
|
|
|
|
|
4040 |
msgid "abbreviation, e.g. \"PA\""
|
4041 |
msgstr "abreviació, per exemple “PA”"
|
4042 |
|
4043 |
#: adminpages/paymentsettings.php:193
|
4044 |
#: adminpages/paymentsettings.php:239
|
|
|
|
|
4045 |
msgid "Tax Rate"
|
4046 |
msgstr "Tarifa de l’impost"
|
4047 |
|
@@ -4051,6 +4493,8 @@ msgstr "Tarifa de l’impost"
|
|
4051 |
#: adminpages/paymentsettings.php:449
|
4052 |
#: adminpages/paymentsettings.php:451
|
4053 |
#: adminpages/paymentsettings.php:240
|
|
|
|
|
4054 |
msgid "decimal, e.g. \"0.06\""
|
4055 |
msgstr "decimal, per exemple \"0.06\""
|
4056 |
|
@@ -4065,6 +4509,8 @@ msgstr "Només US. Si es donen els valors, l’impost s’aplicarà per a qualse
|
|
4065 |
#: adminpages/paymentsettings.php:455
|
4066 |
#: adminpages/paymentsettings.php:457
|
4067 |
#: adminpages/paymentsettings.php:253
|
|
|
|
|
4068 |
msgid "Force SSL"
|
4069 |
msgstr "Força SSL"
|
4070 |
|
@@ -4073,11 +4519,15 @@ msgstr "Força SSL"
|
|
4073 |
#: adminpages/paymentsettings.php:461
|
4074 |
#: adminpages/paymentsettings.php:463
|
4075 |
#: adminpages/paymentsettings.php:268
|
|
|
|
|
4076 |
msgid "Yes (with JavaScript redirects)"
|
4077 |
msgstr "Sí (amb redirecció de JavaScript)"
|
4078 |
|
4079 |
#: adminpages/paymentsettings.php:214
|
4080 |
#: adminpages/paymentsettings.php:270
|
|
|
|
|
4081 |
msgid "Recommended: Yes. Try the JavaScript redirects setting if you are having issues with infinite redirect loops."
|
4082 |
msgstr "Recomanat: Sí. Prova la redirecció de JavaScript si tens problemes amb redireccions amb “loops” infinits."
|
4083 |
|
@@ -4087,6 +4537,8 @@ msgstr "Recomanat: Sí. Prova la redirecció de JavaScript si tens problemes amb
|
|
4087 |
#: adminpages/paymentsettings.php:468
|
4088 |
#: adminpages/paymentsettings.php:470
|
4089 |
#: adminpages/paymentsettings.php:278
|
|
|
|
|
4090 |
msgid "SSL Seal Code"
|
4091 |
msgstr "SSL Seal Code"
|
4092 |
|
@@ -4096,11 +4548,15 @@ msgstr "El teu<strong><a target=\"_blank\" href=\"http://www.paidmembershipspro.
|
|
4096 |
|
4097 |
#: adminpages/paymentsettings.php:228
|
4098 |
#: adminpages/paymentsettings.php:287
|
|
|
|
|
4099 |
msgid "Extra HTTPS URL Filter"
|
4100 |
msgstr "Extra HTTPS URL Filtre"
|
4101 |
|
4102 |
#: adminpages/paymentsettings.php:231
|
4103 |
#: adminpages/paymentsettings.php:290
|
|
|
|
|
4104 |
msgid "Pass all generated HTML through a URL filter to add HTTPS to URLs used on secure pages. Check this if you are using SSL and have warnings on your checkout pages."
|
4105 |
msgstr "Passa tot el codi HTML generat a través del filtre URL per a afegir HTTPS a URLs utilitzat a les pàgines segures. Comprova això si estàs utilitzant SSL i tens advertències a les teves pàgines de Checkout."
|
4106 |
|
@@ -4118,6 +4574,7 @@ msgstr "Detalls"
|
|
4118 |
#: adminpages/reports.php:61
|
4119 |
#: adminpages/reports.php:19
|
4120 |
#: adminpages/reports.php:18
|
|
|
4121 |
msgid "Back to Reports Dashboard"
|
4122 |
msgstr "Torna a l’escriptori de Reports (Reports Dashboard)"
|
4123 |
|
@@ -4159,6 +4616,8 @@ msgstr "Avui"
|
|
4159 |
#: adminpages/reports/sales.php:51
|
4160 |
#: adminpages/orders.php:1077
|
4161 |
#: adminpages/orders.php:1069
|
|
|
|
|
4162 |
msgid "This Month"
|
4163 |
msgstr "Aquest mes"
|
4164 |
|
@@ -4170,6 +4629,8 @@ msgstr "Aquest mes"
|
|
4170 |
#: adminpages/reports/login.php:62
|
4171 |
#: adminpages/reports/memberships.php:52
|
4172 |
#: adminpages/reports/sales.php:53
|
|
|
|
|
4173 |
msgid "All Time"
|
4174 |
msgstr "Sempre"
|
4175 |
|
@@ -4186,6 +4647,8 @@ msgstr "Visites, vistes i informe de Logins "
|
|
4186 |
#: adminpages/reports/login.php:104
|
4187 |
#: classes/class-pmpro-members-list-table.php:234
|
4188 |
#: classes/class-pmpro-members-list-table.php:233
|
|
|
|
|
4189 |
msgid "All Users"
|
4190 |
msgstr "Tots els usuaris"
|
4191 |
|
@@ -4193,6 +4656,7 @@ msgstr "Tots els usuaris"
|
|
4193 |
#: adminpages/reports/login.php:146
|
4194 |
#: adminpages/reports/login.php:148
|
4195 |
#: adminpages/reports/login.php:185
|
|
|
4196 |
msgid "Last Visit"
|
4197 |
msgstr "Última visita"
|
4198 |
|
@@ -4202,6 +4666,7 @@ msgstr "Última visita"
|
|
4202 |
#: adminpages/reports/login.php:147
|
4203 |
#: adminpages/reports/login.php:149
|
4204 |
#: adminpages/reports/login.php:187
|
|
|
4205 |
msgid "Visits This Month"
|
4206 |
msgstr "Visites aquest mes"
|
4207 |
|
@@ -4217,6 +4682,7 @@ msgstr "Visites totals"
|
|
4217 |
#: adminpages/reports/login.php:149
|
4218 |
#: adminpages/reports/login.php:151
|
4219 |
#: adminpages/reports/login.php:191
|
|
|
4220 |
msgid "Views This Month"
|
4221 |
msgstr "Visites aquest mes"
|
4222 |
|
@@ -4230,6 +4696,7 @@ msgstr "Visites totals"
|
|
4230 |
#: adminpages/reports/login.php:151
|
4231 |
#: adminpages/reports/login.php:153
|
4232 |
#: adminpages/reports/login.php:194
|
|
|
4233 |
msgid "Last Login"
|
4234 |
msgstr "Últim Login"
|
4235 |
|
@@ -4239,6 +4706,7 @@ msgstr "Últim Login"
|
|
4239 |
#: adminpages/reports/login.php:152
|
4240 |
#: adminpages/reports/login.php:154
|
4241 |
#: adminpages/reports/login.php:196
|
|
|
4242 |
msgid "Logins This Month"
|
4243 |
msgstr "Logins aquest mes"
|
4244 |
|
@@ -4277,6 +4745,8 @@ msgstr "Totes les cancel·lacions"
|
|
4277 |
#: adminpages/reports/sales.php:52
|
4278 |
#: adminpages/orders.php:1081
|
4279 |
#: adminpages/orders.php:1073
|
|
|
|
|
4280 |
msgid "This Year"
|
4281 |
msgstr "Aquest any"
|
4282 |
|
@@ -4292,6 +4762,8 @@ msgstr "Aquest any"
|
|
4292 |
#: adminpages/reports/sales.php:295
|
4293 |
#: adminpages/advancedsettings.php:322
|
4294 |
#: adminpages/reports/sales.php:313
|
|
|
|
|
4295 |
msgid "Daily"
|
4296 |
msgstr "Diari"
|
4297 |
|
@@ -4307,6 +4779,8 @@ msgstr "Diari"
|
|
4307 |
#: adminpages/reports/sales.php:296
|
4308 |
#: adminpages/advancedsettings.php:328
|
4309 |
#: adminpages/reports/sales.php:314
|
|
|
|
|
4310 |
msgid "Monthly"
|
4311 |
msgstr "Mensual"
|
4312 |
|
@@ -4320,11 +4794,13 @@ msgstr "Mensual"
|
|
4320 |
#: adminpages/reports/memberships.php:335
|
4321 |
#: adminpages/reports/sales.php:297
|
4322 |
#: adminpages/reports/sales.php:315
|
|
|
4323 |
msgid "Annual"
|
4324 |
msgstr "Anual"
|
4325 |
|
4326 |
#: adminpages/reports/memberships.php:270
|
4327 |
#: adminpages/reports/memberships.php:338
|
|
|
4328 |
msgid "Signups vs. All Cancellations"
|
4329 |
msgstr "Altes vs. totes les Cancel·lacions"
|
4330 |
|
@@ -4332,11 +4808,13 @@ msgstr "Altes vs. totes les Cancel·lacions"
|
|
4332 |
#: adminpages/reports/memberships.php:263
|
4333 |
#: adminpages/reports/memberships.php:299
|
4334 |
#: adminpages/reports/memberships.php:339
|
|
|
4335 |
msgid "Signups vs. Cancellations"
|
4336 |
msgstr "Altes vs. Cancel·lacions"
|
4337 |
|
4338 |
#: adminpages/reports/memberships.php:272
|
4339 |
#: adminpages/reports/memberships.php:340
|
|
|
4340 |
msgid "Signups vs. Expirations"
|
4341 |
msgstr "Altes vs. Expiracions"
|
4342 |
|
@@ -4367,6 +4845,8 @@ msgstr "Altes vs. Expiracions"
|
|
4367 |
#: adminpages/reports/sales.php:314
|
4368 |
#: adminpages/reports/sales.php:321
|
4369 |
#: adminpages/reports/sales.php:332
|
|
|
|
|
4370 |
msgid "for"
|
4371 |
msgstr "per a"
|
4372 |
|
@@ -4380,6 +4860,7 @@ msgstr "per a"
|
|
4380 |
#: adminpages/reports/memberships.php:385
|
4381 |
#: adminpages/reports/sales.php:342
|
4382 |
#: adminpages/reports/sales.php:360
|
|
|
4383 |
msgid "Generate Report"
|
4384 |
msgstr "Genera Informe"
|
4385 |
|
@@ -4422,20 +4903,27 @@ msgstr "Benefici"
|
|
4422 |
|
4423 |
#: adminpages/templates/orders-email.php:14
|
4424 |
#: adminpages/templates/orders-print.php:50
|
|
|
|
|
4425 |
msgid "Invoice #: "
|
4426 |
msgstr "Factura #: "
|
4427 |
|
4428 |
#: adminpages/templates/orders-email.php:18
|
4429 |
#: adminpages/templates/orders-print.php:54
|
|
|
|
|
4430 |
msgid "Date:"
|
4431 |
msgstr "Data:"
|
4432 |
|
4433 |
#: adminpages/templates/orders-email.php:24
|
|
|
4434 |
msgid "Bill to:"
|
4435 |
msgstr "Facturat a:"
|
4436 |
|
4437 |
#: adminpages/templates/orders-email.php:47
|
4438 |
#: adminpages/templates/orders-print.php:76
|
|
|
|
|
4439 |
msgid "Item"
|
4440 |
msgstr "Item"
|
4441 |
|
@@ -4444,6 +4932,8 @@ msgstr "Item"
|
|
4444 |
#: pages/levels.php:36
|
4445 |
#: pages/levels.php:14
|
4446 |
#: pages/levels.php:28
|
|
|
|
|
4447 |
msgid "Price"
|
4448 |
msgstr "Preu"
|
4449 |
|
@@ -4453,6 +4943,8 @@ msgstr "Preu"
|
|
4453 |
#: pages/invoice.php:77
|
4454 |
#: includes/functions.php:2842
|
4455 |
#: includes/functions.php:2873
|
|
|
|
|
4456 |
msgid "Subtotal"
|
4457 |
msgstr "Subtotal"
|
4458 |
|
@@ -4480,6 +4972,7 @@ msgstr "Actualització completa"
|
|
4480 |
#: includes/cleanup.php:24
|
4481 |
#: classes/class.memberorder.php:959
|
4482 |
#: classes/class.memberorder.php:1001
|
|
|
4483 |
#, php-format
|
4484 |
msgid "There was an error canceling the subscription for user with ID=%s. You will want to check your payment gateway to see if their subscription is still active."
|
4485 |
msgstr "Hi ha hagut un error cancel·lant la subscripció per a l’usuari ID=%s. Comprova a la passarel·la de pagament si la seva subscripció encara és activa."
|
@@ -4517,6 +5010,7 @@ msgstr "La subscripció per a %s a %s ha estat cancel·lada"
|
|
4517 |
#: classes/class.pmproemail.php:178
|
4518 |
#: classes/class.pmproemail.php:269
|
4519 |
#: classes/class.pmproemail.php:262
|
|
|
4520 |
#, php-format
|
4521 |
msgid "Your membership confirmation for %s"
|
4522 |
msgstr "Confirmació per a la seva subscripció %s"
|
@@ -4615,6 +5109,20 @@ msgstr "Confirmació per a la seva subscripció %s"
|
|
4615 |
#: classes/class.pmproemail.php:440
|
4616 |
#: classes/class.pmproemail.php:762
|
4617 |
#: classes/class.pmproemail.php:764
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4618 |
msgid "Discount Code"
|
4619 |
msgstr "Codi de descompte"
|
4620 |
|
@@ -4654,6 +5162,11 @@ msgstr "Codi de descompte"
|
|
4654 |
#: classes/class.pmproemail.php:771
|
4655 |
#: classes/class.pmproemail.php:905
|
4656 |
#: classes/class.pmproemail.php:950
|
|
|
|
|
|
|
|
|
|
|
4657 |
#, php-format
|
4658 |
msgid "This membership will expire on %s."
|
4659 |
msgstr "Aquesta subscripció expirarà a %s."
|
@@ -4671,6 +5184,7 @@ msgstr "Checkout de subscriptor per %s a %s"
|
|
4671 |
#: classes/class.pmproemail.php:463
|
4672 |
#: classes/class.pmproemail.php:475
|
4673 |
#: classes/class.pmproemail.php:468
|
|
|
4674 |
#, php-format
|
4675 |
msgid "Your billing information has been updated at %s"
|
4676 |
msgstr "S’ha actualitzat la seva informació de facturació a %s"
|
@@ -4679,6 +5193,7 @@ msgstr "S’ha actualitzat la seva informació de facturació a %s"
|
|
4679 |
#: classes/class.pmproemail.php:513
|
4680 |
#: classes/class.pmproemail.php:525
|
4681 |
#: classes/class.pmproemail.php:518
|
|
|
4682 |
#, php-format
|
4683 |
msgid "Billing information has been updated for %s at %s"
|
4684 |
msgstr "Informació de facturació ha estat actualitzat per %s a %s"
|
@@ -4726,6 +5241,7 @@ msgstr "FACTURA per a %s subscriptor"
|
|
4726 |
#: classes/class.pmproemail.php:794
|
4727 |
#: classes/class.pmproemail.php:806
|
4728 |
#: classes/class.pmproemail.php:799
|
|
|
4729 |
#, php-format
|
4730 |
msgid "Your trial at %s is ending soon"
|
4731 |
msgstr "El teu període de prova a %s aviat acabarà."
|
@@ -4738,6 +5254,7 @@ msgstr "El teu període de prova a %s aviat acabarà."
|
|
4738 |
#: classes/class.pmproemail.php:831
|
4739 |
#: classes/class.pmproemail.php:843
|
4740 |
#: classes/class.pmproemail.php:836
|
|
|
4741 |
#, php-format
|
4742 |
msgid "Your membership at %s has ended"
|
4743 |
msgstr "La teva subscripció a %s ha finalitzat"
|
@@ -4750,6 +5267,7 @@ msgstr "La teva subscripció a %s ha finalitzat"
|
|
4750 |
#: classes/class.pmproemail.php:858
|
4751 |
#: classes/class.pmproemail.php:870
|
4752 |
#: classes/class.pmproemail.php:863
|
|
|
4753 |
#, php-format
|
4754 |
msgid "Your membership at %s will end soon"
|
4755 |
msgstr "La teva subscripció a %s finalitzarà aviat."
|
@@ -4762,6 +5280,7 @@ msgstr "La teva subscripció a %s finalitzarà aviat."
|
|
4762 |
#: classes/class.pmproemail.php:888
|
4763 |
#: classes/class.pmproemail.php:900
|
4764 |
#: classes/class.pmproemail.php:893
|
|
|
4765 |
#, php-format
|
4766 |
msgid "Your membership at %s has been changed"
|
4767 |
msgstr "La teva subscripció a %s ha canviat"
|
@@ -4818,6 +5337,7 @@ msgstr "Aquesta subscripció no expira"
|
|
4818 |
#: classes/class.pmproemail.php:933
|
4819 |
#: classes/class.pmproemail.php:945
|
4820 |
#: classes/class.pmproemail.php:938
|
|
|
4821 |
#, php-format
|
4822 |
msgid "Membership for %s at %s has been changed"
|
4823 |
msgstr "Subscripció per %s a %s ha canviat"
|
@@ -4921,6 +5441,7 @@ msgstr "Un pagament parcial es va fer que no ens podia anular. Contacteu al prop
|
|
4921 |
#: paid-memberships-pro.php:164
|
4922 |
#: paid-memberships-pro.php:166
|
4923 |
#: paid-memberships-pro.php:167
|
|
|
4924 |
msgid "Authorize.net"
|
4925 |
msgstr "Authorize.net"
|
4926 |
|
@@ -4987,12 +5508,15 @@ msgstr "No podria connectar a Authorize.net"
|
|
4987 |
#: paid-memberships-pro.php:165
|
4988 |
#: paid-memberships-pro.php:167
|
4989 |
#: paid-memberships-pro.php:168
|
|
|
|
|
4990 |
msgid "Braintree Payments"
|
4991 |
msgstr "Pagaments Braintree"
|
4992 |
|
4993 |
#: classes/gateways/class.pmprogateway_braintree.php:132
|
4994 |
#: classes/gateways/class.pmprogateway_braintree.php:119
|
4995 |
#: classes/gateways/class.pmprogateway_braintree.php:308
|
|
|
4996 |
msgid "Braintree Settings"
|
4997 |
msgstr "Configuració Braintree"
|
4998 |
|
@@ -5006,6 +5530,7 @@ msgstr "Configuració Braintree"
|
|
5006 |
#: classes/gateways/class.pmprogateway_braintree.php:124
|
5007 |
#: classes/gateways/class.pmprogateway_braintree.php:313
|
5008 |
#: classes/gateways/class.pmprogateway_cybersource.php:94
|
|
|
5009 |
msgid "Merchant ID"
|
5010 |
msgstr "ID de comerciant"
|
5011 |
|
@@ -5015,6 +5540,7 @@ msgstr "ID de comerciant"
|
|
5015 |
#: adminpages/paymentsettings.php:311
|
5016 |
#: classes/gateways/class.pmprogateway_braintree.php:132
|
5017 |
#: classes/gateways/class.pmprogateway_braintree.php:321
|
|
|
5018 |
msgid "Public Key"
|
5019 |
msgstr "Clau Pública"
|
5020 |
|
@@ -5024,6 +5550,7 @@ msgstr "Clau Pública"
|
|
5024 |
#: adminpages/paymentsettings.php:319
|
5025 |
#: classes/gateways/class.pmprogateway_braintree.php:140
|
5026 |
#: classes/gateways/class.pmprogateway_braintree.php:329
|
|
|
5027 |
msgid "Private Key"
|
5028 |
msgstr "Clau Privada"
|
5029 |
|
@@ -5033,6 +5560,7 @@ msgstr "Clau Privada"
|
|
5033 |
#: adminpages/paymentsettings.php:327
|
5034 |
#: classes/gateways/class.pmprogateway_braintree.php:148
|
5035 |
#: classes/gateways/class.pmprogateway_braintree.php:337
|
|
|
5036 |
msgid "Client-Side Encryption Key"
|
5037 |
msgstr "Clau d’encriptació del Client"
|
5038 |
|
@@ -5050,6 +5578,7 @@ msgstr "Clau d’encriptació del Client"
|
|
5050 |
#: classes/gateways/class.pmprogateway_stripe.php:182
|
5051 |
#: classes/gateways/class.pmprogateway_stripe.php:192
|
5052 |
#: classes/gateways/class.pmprogateway_braintree.php:345
|
|
|
5053 |
msgid "Web Hook URL"
|
5054 |
msgstr "Web Hook URL"
|
5055 |
|
@@ -5060,6 +5589,7 @@ msgstr "Web Hook URL"
|
|
5060 |
#: adminpages/paymentsettings.php:523
|
5061 |
#: classes/gateways/class.pmprogateway_braintree.php:160
|
5062 |
#: classes/gateways/class.pmprogateway_braintree.php:348
|
|
|
5063 |
msgid "To fully integrate with Braintree, be sure to set your Web Hook URL to"
|
5064 |
msgstr "Per integrar totalment Braintree, assegura’t de configurar Web Hook URL a"
|
5065 |
|
@@ -5086,6 +5616,9 @@ msgstr "Per integrar totalment Braintree, assegura’t de configurar Web Hook UR
|
|
5086 |
#: classes/gateways/class.pmprogateway_stripe.php:1282
|
5087 |
#: classes/gateways/class.pmprogateway_stripe.php:1288
|
5088 |
#: classes/gateways/class.pmprogateway_stripe.php:747
|
|
|
|
|
|
|
5089 |
msgid "Payment Information"
|
5090 |
msgstr "Informació de pagament"
|
5091 |
|
@@ -5112,6 +5645,8 @@ msgstr "Informació de pagament"
|
|
5112 |
#: classes/gateways/class.pmprogateway_stripe.php:1283
|
5113 |
#: classes/gateways/class.pmprogateway_stripe.php:1289
|
5114 |
#: classes/gateways/class.pmprogateway_stripe.php:748
|
|
|
|
|
5115 |
#, php-format
|
5116 |
msgid "We Accept %s"
|
5117 |
msgstr "Acceptem %s"
|
@@ -5144,6 +5679,9 @@ msgstr "Acceptem %s"
|
|
5144 |
#: classes/gateways/class.pmprogateway_stripe.php:1316
|
5145 |
#: classes/gateways/class.pmprogateway_stripe.php:1322
|
5146 |
#: classes/gateways/class.pmprogateway_stripe.php:781
|
|
|
|
|
|
|
5147 |
msgid "Card Number"
|
5148 |
msgstr "Nombre de Tarjeta"
|
5149 |
|
@@ -5169,6 +5707,8 @@ msgstr "Nombre de Tarjeta"
|
|
5169 |
#: pages/checkout.php:603
|
5170 |
#: classes/gateways/class.pmprogateway_braintree.php:503
|
5171 |
#: pages/billing.php:410
|
|
|
|
|
5172 |
msgid "CVV"
|
5173 |
msgstr "CVV"
|
5174 |
|
@@ -5195,6 +5735,8 @@ msgstr "CVV"
|
|
5195 |
#: classes/gateways/class.pmprogateway_braintree.php:504
|
5196 |
#: pages/billing.php:411
|
5197 |
#: pages/checkout.php:425
|
|
|
|
|
5198 |
msgid "what's this?"
|
5199 |
msgstr "què és això?"
|
5200 |
|
@@ -5227,6 +5769,8 @@ msgstr "què és això?"
|
|
5227 |
#: classes/gateways/class.pmprogateway_stripe.php:1338
|
5228 |
#: classes/gateways/class.pmprogateway_stripe.php:1344
|
5229 |
#: classes/gateways/class.pmprogateway_stripe.php:803
|
|
|
|
|
5230 |
msgid "Apply"
|
5231 |
msgstr "Aplica"
|
5232 |
|
@@ -5242,6 +5786,7 @@ msgstr "Aplica"
|
|
5242 |
#: classes/gateways/class.pmprogateway_stripe.php:1036
|
5243 |
#: classes/gateways/class.pmprogateway_stripe.php:1040
|
5244 |
#: classes/gateways/class.pmprogateway_braintree.php:574
|
|
|
5245 |
msgid "Unknown error: Initial payment failed."
|
5246 |
msgstr "Error desconegut: ha fallat el pagament inicial"
|
5247 |
|
@@ -5250,6 +5795,8 @@ msgstr "Error desconegut: ha fallat el pagament inicial"
|
|
5250 |
#: classes/gateways/class.pmprogateway_braintree.php:465
|
5251 |
#: classes/gateways/class.pmprogateway_braintree.php:478
|
5252 |
#: classes/gateways/class.pmprogateway_braintree.php:650
|
|
|
|
|
5253 |
msgid "Error during settlement:"
|
5254 |
msgstr "Error durant la liquidació:"
|
5255 |
|
@@ -5258,6 +5805,8 @@ msgstr "Error durant la liquidació:"
|
|
5258 |
#: classes/gateways/class.pmprogateway_braintree.php:474
|
5259 |
#: classes/gateways/class.pmprogateway_braintree.php:487
|
5260 |
#: classes/gateways/class.pmprogateway_braintree.php:659
|
|
|
|
|
5261 |
msgid "Error during charge:"
|
5262 |
msgstr "Error durant la càrrega:"
|
5263 |
|
@@ -5267,6 +5816,8 @@ msgstr "Error durant la càrrega:"
|
|
5267 |
#: classes/gateways/class.pmprogateway_braintree.php:566
|
5268 |
#: classes/gateways/class.pmprogateway_braintree.php:579
|
5269 |
#: classes/gateways/class.pmprogateway_braintree.php:762
|
|
|
|
|
5270 |
msgid "Failed to update customer."
|
5271 |
msgstr "No s’ha pogut actualitzar el comprador."
|
5272 |
|
@@ -5276,6 +5827,8 @@ msgstr "No s’ha pogut actualitzar el comprador."
|
|
5276 |
#: classes/gateways/class.pmprogateway_braintree.php:614
|
5277 |
#: classes/gateways/class.pmprogateway_braintree.php:627
|
5278 |
#: classes/gateways/class.pmprogateway_braintree.php:810
|
|
|
|
|
5279 |
msgid "Failed to create customer."
|
5280 |
msgstr "No s’ha pogut crear el comprador"
|
5281 |
|
@@ -5285,6 +5838,8 @@ msgstr "No s’ha pogut crear el comprador"
|
|
5285 |
#: classes/gateways/class.pmprogateway_braintree.php:621
|
5286 |
#: classes/gateways/class.pmprogateway_braintree.php:634
|
5287 |
#: classes/gateways/class.pmprogateway_braintree.php:817
|
|
|
|
|
5288 |
msgid "Error creating customer record with Braintree:"
|
5289 |
msgstr "No s’ha pogut crear el comprador amb Branitree:"
|
5290 |
|
@@ -5333,6 +5888,8 @@ msgstr "No s’ha pogut subscriure a Braintree:"
|
|
5333 |
#: classes/gateways/class.pmprogateway_stripe.php:402
|
5334 |
#: classes/gateways/class.pmprogateway_stripe.php:423
|
5335 |
#: classes/gateways/class.pmprogateway_braintree.php:1036
|
|
|
|
|
5336 |
msgid "Could not find the subscription."
|
5337 |
msgstr "No s’ha trobat la subscripció"
|
5338 |
|
@@ -5350,6 +5907,7 @@ msgstr "No s’ha trobat la subscripció"
|
|
5350 |
#: paid-memberships-pro.php:158
|
5351 |
#: paid-memberships-pro.php:160
|
5352 |
#: paid-memberships-pro.php:161
|
|
|
5353 |
msgid "Pay by Check"
|
5354 |
msgstr "Pagament amb Check"
|
5355 |
|
@@ -5469,6 +6027,7 @@ msgstr "S’ha realitzat un pagament parcial que no s’ha pogut tornar. Contac
|
|
5469 |
#: paid-memberships-pro.php:161
|
5470 |
#: paid-memberships-pro.php:163
|
5471 |
#: paid-memberships-pro.php:164
|
|
|
5472 |
msgid "PayPal Website Payments Pro"
|
5473 |
msgstr "PayPal Website Payments Pro"
|
5474 |
|
@@ -5480,6 +6039,7 @@ msgstr "PayPal Website Payments Pro"
|
|
5480 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:141
|
5481 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:133
|
5482 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:151
|
|
|
5483 |
msgid "PayPal Settings"
|
5484 |
msgstr "Configuració PayPal"
|
5485 |
|
@@ -5502,6 +6062,7 @@ msgstr "No recomanem utilitzar PayPal Standard. Us recomanem que utilitzeu PayPa
|
|
5502 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:162
|
5503 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:154
|
5504 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:172
|
|
|
5505 |
msgid "Gateway Account Email"
|
5506 |
msgstr "Correu electrònic del compte de la Passarel·la"
|
5507 |
|
@@ -5522,6 +6083,8 @@ msgstr "Correu electrònic del compte de la Passarel·la"
|
|
5522 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:162
|
5523 |
#: classes/gateways/class.pmprogateway_twocheckout.php:120
|
5524 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:180
|
|
|
|
|
5525 |
msgid "API Username"
|
5526 |
msgstr "API Usuari"
|
5527 |
|
@@ -5542,6 +6105,8 @@ msgstr "API Usuari"
|
|
5542 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:170
|
5543 |
#: classes/gateways/class.pmprogateway_twocheckout.php:129
|
5544 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:188
|
|
|
|
|
5545 |
msgid "API Password"
|
5546 |
msgstr "API Clau"
|
5547 |
|
@@ -5556,6 +6121,7 @@ msgstr "API Clau"
|
|
5556 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:186
|
5557 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:178
|
5558 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:196
|
|
|
5559 |
msgid "API Signature"
|
5560 |
msgstr "API Signatura"
|
5561 |
|
@@ -5571,6 +6137,7 @@ msgstr "API Signatura"
|
|
5571 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:205
|
5572 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:186
|
5573 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:215
|
|
|
5574 |
msgid "IPN Handler URL"
|
5575 |
msgstr "IPN Handler URL"
|
5576 |
|
@@ -5598,6 +6165,7 @@ msgstr "Aquesta URL passa a PayPal per a tots els nous càrrecs i subscripcions.
|
|
5598 |
#: pages/checkout.php:218
|
5599 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:498
|
5600 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:502
|
|
|
5601 |
msgid "Check Out with PayPal"
|
5602 |
msgstr "Check Out amb PayPal"
|
5603 |
|
@@ -5619,6 +6187,8 @@ msgstr "Check Out amb PayPal"
|
|
5619 |
#: pages/checkout.php:526
|
5620 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:503
|
5621 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:507
|
|
|
|
|
5622 |
msgid "Submit and Check Out"
|
5623 |
msgstr "Envia i fés el Check Out"
|
5624 |
|
@@ -5644,6 +6214,9 @@ msgstr "Envia i fés el Check Out"
|
|
5644 |
#: pages/checkout.php:526
|
5645 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:503
|
5646 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:507
|
|
|
|
|
|
|
5647 |
msgid "Submit and Confirm"
|
5648 |
msgstr "Envia i confirma"
|
5649 |
|
@@ -5668,6 +6241,9 @@ msgstr "Envia i confirma"
|
|
5668 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:841
|
5669 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:845
|
5670 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:854
|
|
|
|
|
|
|
5671 |
msgid "Please contact the site owner or cancel your subscription from within PayPal to make sure you are not charged going forward."
|
5672 |
msgstr "Contacteu al propietari del lloc o cancel·leu la vostra subscripció de PayPal per assegurar-te que no et cobraran en el futur."
|
5673 |
|
@@ -5683,6 +6259,8 @@ msgstr "Contacteu al propietari del lloc o cancel·leu la vostra subscripció de
|
|
5683 |
#: paid-memberships-pro.php:162
|
5684 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:94
|
5685 |
#: paid-memberships-pro.php:163
|
|
|
|
|
5686 |
msgid "PayPal Express"
|
5687 |
msgstr "PayPal Express"
|
5688 |
|
@@ -5695,6 +6273,7 @@ msgstr "PayPal Express"
|
|
5695 |
#: classes/gateways/class.pmprogateway_paypal.php:199
|
5696 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:208
|
5697 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:218
|
|
|
5698 |
msgid "To fully integrate with PayPal, be sure to set your IPN Handler URL to "
|
5699 |
msgstr "Per integrar completament PayPal, assegura’t de configurar el teu IPN Handler URL a"
|
5700 |
|
@@ -5718,6 +6297,8 @@ msgstr "Per integrar completament PayPal, assegura’t de configurar el teu IPN
|
|
5718 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:401
|
5719 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:352
|
5720 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:411
|
|
|
|
|
5721 |
msgid "The PayPal Token was lost."
|
5722 |
msgstr "S’ha perdut el Token de PayPal"
|
5723 |
|
@@ -5731,6 +6312,7 @@ msgstr "S’ha perdut el Token de PayPal"
|
|
5731 |
#: paid-memberships-pro.php:163
|
5732 |
#: paid-memberships-pro.php:165
|
5733 |
#: paid-memberships-pro.php:166
|
|
|
5734 |
msgid "PayPal Standard"
|
5735 |
msgstr "PayPal Standard"
|
5736 |
|
@@ -5759,6 +6341,8 @@ msgstr "El/la %s de la passarela depèn de %s PHP extensió. Si us plau habilita
|
|
5759 |
#: classes/gateways/class.pmprogateway_stripe.php:258
|
5760 |
#: classes/gateways/class.pmprogateway_stripe.php:216
|
5761 |
#: paid-memberships-pro.php:162
|
|
|
|
|
5762 |
msgid "Stripe"
|
5763 |
msgstr "Stripe"
|
5764 |
|
@@ -5781,6 +6365,7 @@ msgstr "Configuració d’Stripe"
|
|
5781 |
#: classes/gateways/class.pmprogateway_stripe.php:570
|
5782 |
#: classes/gateways/class.pmprogateway_stripe.php:576
|
5783 |
#: classes/gateways/class.pmprogateway_stripe.php:340
|
|
|
5784 |
msgid "Secret Key"
|
5785 |
msgstr "Secret Key"
|
5786 |
|
@@ -5796,6 +6381,7 @@ msgstr "Secret Key"
|
|
5796 |
#: classes/gateways/class.pmprogateway_stripe.php:554
|
5797 |
#: classes/gateways/class.pmprogateway_stripe.php:560
|
5798 |
#: classes/gateways/class.pmprogateway_stripe.php:324
|
|
|
5799 |
msgid "Publishable Key"
|
5800 |
msgstr "Clau Publicable"
|
5801 |
|
@@ -5811,6 +6397,8 @@ msgstr "Clau Publicable"
|
|
5811 |
#: classes/gateways/class.pmprogateway_stripe.php:629
|
5812 |
#: classes/gateways/class.pmprogateway_stripe.php:635
|
5813 |
#: classes/gateways/class.pmprogateway_stripe.php:399
|
|
|
|
|
5814 |
msgid "Show Billing Address Fields"
|
5815 |
msgstr "Mostra els camps d’adreça de facturació"
|
5816 |
|
@@ -5825,6 +6413,7 @@ msgstr "Mostra els camps d’adreça de facturació"
|
|
5825 |
#: classes/gateways/class.pmprogateway_stripe.php:638
|
5826 |
#: classes/gateways/class.pmprogateway_stripe.php:644
|
5827 |
#: classes/gateways/class.pmprogateway_stripe.php:408
|
|
|
5828 |
msgid "Stripe doesn't require billing address fields. Choose 'No' to hide them on the checkout page.<br /><strong>If No, make sure you disable address verification in the Stripe dashboard settings.</strong>"
|
5829 |
msgstr "Stripe no necessita camps d’adreça de facturació. Escull “No” per amagar-los de la pàgina de Checkout.<br /><strong>Si No, assegura’t de desabilitar la verificació de l’adreça a l’escripori de configuració de l’Stripe.</strong>"
|
5830 |
|
@@ -5851,6 +6440,8 @@ msgstr "Per integrar totalment l’Stripe, assegura’t de configurar el teu Web
|
|
5851 |
#: classes/gateways/class.pmprogateway_stripe.php:2650
|
5852 |
#: classes/gateways/class.pmprogateway_stripe.php:2646
|
5853 |
#: classes/gateways/class.pmprogateway_stripe.php:2648
|
|
|
|
|
5854 |
msgid "Subscription Updates"
|
5855 |
msgstr "Actualització de subscripcions"
|
5856 |
|
@@ -5898,6 +6489,9 @@ msgstr "Actualització de subscripcions, et permet canviar el valor subscripció
|
|
5898 |
#: pages/billing.php:434
|
5899 |
#: classes/gateways/class.pmprogateway_stripe.php:2651
|
5900 |
#: classes/gateways/class.pmprogateway_stripe.php:2653
|
|
|
|
|
|
|
5901 |
msgid "Update"
|
5902 |
msgstr "Actualitza"
|
5903 |
|
@@ -5913,6 +6507,8 @@ msgstr "Actualitza"
|
|
5913 |
#: classes/gateways/class.pmprogateway_stripe.php:3045
|
5914 |
#: classes/gateways/class.pmprogateway_stripe.php:3041
|
5915 |
#: classes/gateways/class.pmprogateway_stripe.php:3043
|
|
|
|
|
5916 |
msgid "Could not cancel the old subscription. Updates have not been processed."
|
5917 |
msgstr "No s’ha pogut cancel·lar l’antiga subscripció. Les actualitzacions no s’han processat."
|
5918 |
|
@@ -5959,6 +6555,10 @@ msgstr "Error creant un registre d’usuari amb Stripe:"
|
|
5959 |
#: classes/gateways/class.pmprogateway_stripe.php:4065
|
5960 |
#: classes/gateways/class.pmprogateway_stripe.php:4062
|
5961 |
#: classes/gateways/class.pmprogateway_stripe.php:4067
|
|
|
|
|
|
|
|
|
5962 |
msgid "Error getting subscription with Stripe:"
|
5963 |
msgstr "Error agafant la subscripció amb Stripe:"
|
5964 |
|
@@ -5996,6 +6596,10 @@ msgstr "Error agafant la subscripció amb Stripe:"
|
|
5996 |
#: classes/gateways/class.pmprogateway_stripe.php:4166
|
5997 |
#: classes/gateways/class.pmprogateway_stripe.php:4163
|
5998 |
#: classes/gateways/class.pmprogateway_stripe.php:4168
|
|
|
|
|
|
|
|
|
5999 |
msgid "Error creating plan with Stripe:"
|
6000 |
msgstr "Error creant pla amb Stripe:"
|
6001 |
|
@@ -6028,6 +6632,10 @@ msgstr "Error creant pla amb Stripe:"
|
|
6028 |
#: classes/gateways/class.pmprogateway_stripe.php:4211
|
6029 |
#: classes/gateways/class.pmprogateway_stripe.php:4199
|
6030 |
#: classes/gateways/class.pmprogateway_stripe.php:4213
|
|
|
|
|
|
|
|
|
6031 |
msgid "Error subscribing customer to plan with Stripe:"
|
6032 |
msgstr "Error subscrivint un pla de comprador amb Stripe:"
|
6033 |
|
@@ -6049,6 +6657,7 @@ msgstr "Error subscrivint un pla de comprador amb Stripe:"
|
|
6049 |
#: classes/gateways/class.pmprogateway_stripe.php:2672
|
6050 |
#: classes/gateways/class.pmprogateway_stripe.php:1731
|
6051 |
#: classes/gateways/class.pmprogateway_stripe.php:1729
|
|
|
6052 |
msgid "Could not cancel old subscription."
|
6053 |
msgstr "No s’ha pogut cancel·lar l’antiga subscripció. "
|
6054 |
|
@@ -6067,6 +6676,7 @@ msgstr "No s’ha pogut cancel·lar l’antiga subscripció. "
|
|
6067 |
#: classes/gateways/class.pmprogateway_stripe.php:2688
|
6068 |
#: classes/gateways/class.pmprogateway_stripe.php:1747
|
6069 |
#: classes/gateways/class.pmprogateway_stripe.php:1745
|
|
|
6070 |
msgid "Could not find the customer."
|
6071 |
msgstr "No s’ha trobat el comprador."
|
6072 |
|
@@ -6078,6 +6688,7 @@ msgstr "No s’ha trobat el comprador."
|
|
6078 |
#: paid-memberships-pro.php:125
|
6079 |
#: paid-memberships-pro.php:132
|
6080 |
#: paid-memberships-pro.php:133
|
|
|
6081 |
msgid "2Checkout"
|
6082 |
msgstr "2Checkout"
|
6083 |
|
@@ -6085,24 +6696,28 @@ msgstr "2Checkout"
|
|
6085 |
#: classes/gateways/class.pmprogateway_twocheckout.php:108
|
6086 |
#: classes/gateways/class.pmprogateway_twocheckout.php:116
|
6087 |
#: classes/gateways/class.pmprogateway_twocheckout.php:115
|
|
|
6088 |
msgid "2Checkout Settings"
|
6089 |
msgstr "Configuració de 2Checkout"
|
6090 |
|
6091 |
#: classes/gateways/class.pmprogateway_twocheckout.php:123
|
6092 |
#: classes/gateways/class.pmprogateway_twocheckout.php:125
|
6093 |
#: classes/gateways/class.pmprogateway_twocheckout.php:124
|
|
|
6094 |
msgid "Go to Account » User Management in 2Checkout and create a user with API Access and API Updating."
|
6095 |
msgstr "Vés a Account » User Management in 2Checkout i crea un usuari amb API Access i API Updating."
|
6096 |
|
6097 |
#: classes/gateways/class.pmprogateway_twocheckout.php:132
|
6098 |
#: classes/gateways/class.pmprogateway_twocheckout.php:134
|
6099 |
#: classes/gateways/class.pmprogateway_twocheckout.php:133
|
|
|
6100 |
msgid "Password for the API user created."
|
6101 |
msgstr "Clau per a l’usuari de l’API creada."
|
6102 |
|
6103 |
#: classes/gateways/class.pmprogateway_twocheckout.php:141
|
6104 |
#: classes/gateways/class.pmprogateway_twocheckout.php:152
|
6105 |
#: classes/gateways/class.pmprogateway_twocheckout.php:142
|
|
|
6106 |
msgid "Click on the profile icon in 2Checkout to find your Account Number."
|
6107 |
msgstr "Clica a la icona del perfil a 2Checkout per trobar el teu Account Number."
|
6108 |
|
@@ -6112,12 +6727,14 @@ msgstr "Clica a la icona del perfil a 2Checkout per trobar el teu Account Number
|
|
6112 |
#: classes/gateways/class.pmprogateway_twocheckout.php:137
|
6113 |
#: classes/gateways/class.pmprogateway_twocheckout.php:157
|
6114 |
#: classes/gateways/class.pmprogateway_twocheckout.php:147
|
|
|
6115 |
msgid "Secret Word"
|
6116 |
msgstr "Paraula Secreta"
|
6117 |
|
6118 |
#: classes/gateways/class.pmprogateway_twocheckout.php:150
|
6119 |
#: classes/gateways/class.pmprogateway_twocheckout.php:161
|
6120 |
#: classes/gateways/class.pmprogateway_twocheckout.php:151
|
|
|
6121 |
msgid "Go to Account » Site Management. Look under Checkout Options to find the Secret Word."
|
6122 |
msgstr "Vés a Account » Site Management. Mira sota Checkout Options i troba la Paraula Secreta"
|
6123 |
|
@@ -6128,12 +6745,14 @@ msgstr "Vés a Account » Site Management. Mira sota Checkout Options i tro
|
|
6128 |
#: classes/gateways/class.pmprogateway_twocheckout.php:145
|
6129 |
#: classes/gateways/class.pmprogateway_twocheckout.php:166
|
6130 |
#: classes/gateways/class.pmprogateway_twocheckout.php:156
|
|
|
6131 |
msgid "TwoCheckout INS URL"
|
6132 |
msgstr "TwoCheckout INS URL"
|
6133 |
|
6134 |
#: classes/gateways/class.pmprogateway_twocheckout.php:158
|
6135 |
#: classes/gateways/class.pmprogateway_twocheckout.php:169
|
6136 |
#: classes/gateways/class.pmprogateway_twocheckout.php:159
|
|
|
6137 |
msgid "To fully integrate with 2Checkout, be sure to use the following for your INS URL and Approved URL"
|
6138 |
msgstr "Per integrar-te totalment amb 2Checkout, assegura’t d’utilitzar la següent INS URL i Approved URL"
|
6139 |
|
@@ -6141,6 +6760,7 @@ msgstr "Per integrar-te totalment amb 2Checkout, assegura’t d’utilitzar la s
|
|
6141 |
#: classes/gateways/class.pmprogateway_twocheckout.php:192
|
6142 |
#: classes/gateways/class.pmprogateway_twocheckout.php:214
|
6143 |
#: classes/gateways/class.pmprogateway_twocheckout.php:205
|
|
|
6144 |
msgid "Check Out with 2Checkout"
|
6145 |
msgstr "Check Out amb 2Checkout"
|
6146 |
|
@@ -6578,6 +7198,8 @@ msgstr "Vietnamese Dong"
|
|
6578 |
#: includes/functions.php:207
|
6579 |
#: includes/functions.php:393
|
6580 |
#: includes/functions.php:509
|
|
|
|
|
6581 |
#, php-format
|
6582 |
msgid "The price for membership is <strong>%s</strong> now"
|
6583 |
msgstr "El preu per a la subscripció és <strong>%s</strong> ara"
|
@@ -6590,6 +7212,8 @@ msgstr "El preu per a la subscripció és <strong>%s</strong> ara"
|
|
6590 |
#: includes/functions.php:209
|
6591 |
#: includes/functions.php:398
|
6592 |
#: includes/functions.php:511
|
|
|
|
|
6593 |
#, php-format
|
6594 |
msgid "<strong>%s</strong> now"
|
6595 |
msgstr "<strong>%s</strong> ara"
|
@@ -6699,6 +7323,7 @@ msgstr "i després <strong>%s cada %d %s</strong>."
|
|
6699 |
#: includes/functions.php:271
|
6700 |
#: pages/levels.php:82
|
6701 |
#: includes/functions.php:446
|
|
|
6702 |
msgid "After your initial payment, your first payment is Free."
|
6703 |
msgstr "Després del teu pagament inicial, el teu primer pagament és Gratuït."
|
6704 |
|
@@ -6714,6 +7339,7 @@ msgstr "Després del teu pagament inicial, el teu primer pagament és Gratuït."
|
|
6714 |
#: includes/functions.php:275
|
6715 |
#: pages/levels.php:86
|
6716 |
#: includes/functions.php:448
|
|
|
6717 |
#, php-format
|
6718 |
msgid "After your initial payment, your first %d payments are Free."
|
6719 |
msgstr "Després del teu pagament inicial, el teu %d pagaments són gratuïts."
|
@@ -6730,6 +7356,7 @@ msgstr "Després del teu pagament inicial, el teu %d pagaments són gratuïts."
|
|
6730 |
#: includes/functions.php:282
|
6731 |
#: pages/levels.php:93
|
6732 |
#: includes/functions.php:452
|
|
|
6733 |
#, php-format
|
6734 |
msgid "After your initial payment, your first payment will cost %s."
|
6735 |
msgstr "Després del teu pagament inicial, el teu primer pagament és de %s."
|
@@ -6791,6 +7418,7 @@ msgstr "La subscripció expira després de %d %s."
|
|
6791 |
#: includes/functions.php:592
|
6792 |
#: includes/functions.php:615
|
6793 |
#: includes/functions.php:979
|
|
|
6794 |
msgid "User ID not found."
|
6795 |
msgstr "No s’ha trobat el teu ID d’usuari"
|
6796 |
|
@@ -6810,6 +7438,8 @@ msgstr "No s’ha trobat el teu ID d’usuari"
|
|
6810 |
#: includes/functions.php:635
|
6811 |
#: includes/functions.php:1003
|
6812 |
#: includes/functions.php:1011
|
|
|
|
|
6813 |
msgid "Invalid level."
|
6814 |
msgstr "Nivell no vàlid"
|
6815 |
|
@@ -6870,6 +7500,7 @@ msgstr "no està canviant?"
|
|
6870 |
#: includes/functions.php:723
|
6871 |
#: includes/functions.php:746
|
6872 |
#: includes/functions.php:1085
|
|
|
6873 |
msgid "Error interacting with database"
|
6874 |
msgstr "Error interactuant amb la base de dades"
|
6875 |
|
@@ -6906,6 +7537,8 @@ msgstr "Error interactuant amb la base de dades"
|
|
6906 |
#: includes/functions.php:1342
|
6907 |
#: includes/functions.php:1335
|
6908 |
#: includes/functions.php:1373
|
|
|
|
|
6909 |
msgid "Membership level not found."
|
6910 |
msgstr "Nivell de subscripció no trobat."
|
6911 |
|
@@ -6921,6 +7554,7 @@ msgstr "Nivell de subscripció no trobat."
|
|
6921 |
#: includes/functions.php:1196
|
6922 |
#: includes/functions.php:1722
|
6923 |
#: includes/functions.php:1753
|
|
|
6924 |
msgid "No code was given to check."
|
6925 |
msgstr "No s’ha donat cap codi per a fer el check"
|
6926 |
|
@@ -6943,6 +7577,7 @@ msgstr "No s’ha donat cap codi per a fer el check"
|
|
6943 |
#: includes/functions.php:1205
|
6944 |
#: includes/functions.php:1731
|
6945 |
#: includes/functions.php:1762
|
|
|
6946 |
msgid "The discount code could not be found."
|
6947 |
msgstr "No s’ha trobat el codi de descompte"
|
6948 |
|
@@ -6965,6 +7600,7 @@ msgstr "No s’ha trobat el codi de descompte"
|
|
6965 |
#: includes/functions.php:1220
|
6966 |
#: includes/functions.php:1746
|
6967 |
#: includes/functions.php:1777
|
|
|
6968 |
#, php-format
|
6969 |
msgid "This discount code goes into effect on %s."
|
6970 |
msgstr "El codi de descompte serà efectiu a %s."
|
@@ -6988,6 +7624,7 @@ msgstr "El codi de descompte serà efectiu a %s."
|
|
6988 |
#: includes/functions.php:1227
|
6989 |
#: includes/functions.php:1753
|
6990 |
#: includes/functions.php:1784
|
|
|
6991 |
#, php-format
|
6992 |
msgid "This discount code expired on %s."
|
6993 |
msgstr "Aquest codi de descompte ha expirat a %s."
|
@@ -7011,6 +7648,7 @@ msgstr "Aquest codi de descompte ha expirat a %s."
|
|
7011 |
#: includes/functions.php:1237
|
7012 |
#: includes/functions.php:1762
|
7013 |
#: includes/functions.php:1793
|
|
|
7014 |
msgid "This discount code is no longer valid."
|
7015 |
msgstr "Aquest codi de descompte ja no és vàlid."
|
7016 |
|
@@ -7032,6 +7670,7 @@ msgstr "Aquest codi de descompte ja no és vàlid."
|
|
7032 |
#: includes/functions.php:1250
|
7033 |
#: includes/functions.php:1781
|
7034 |
#: includes/functions.php:1812
|
|
|
7035 |
msgid "This discount code does not apply to this membership level."
|
7036 |
msgstr "Aquest codi de descompte no s’aplica a aquest nivell de subscripció."
|
7037 |
|
@@ -7054,6 +7693,7 @@ msgstr "Aquest codi de descompte no s’aplica a aquest nivell de subscripció."
|
|
7054 |
#: includes/functions.php:1276
|
7055 |
#: includes/functions.php:1819
|
7056 |
#: includes/functions.php:1850
|
|
|
7057 |
msgid "This discount code is okay."
|
7058 |
msgstr "El codi de descompte és OK"
|
7059 |
|
@@ -7076,6 +7716,7 @@ msgstr "El codi de descompte és OK"
|
|
7076 |
#: includes/functions.php:1395
|
7077 |
#: includes/functions.php:1847
|
7078 |
#: includes/functions.php:1878
|
|
|
7079 |
msgid "and"
|
7080 |
msgstr "i"
|
7081 |
|
@@ -7099,6 +7740,8 @@ msgstr "i"
|
|
7099 |
#: includes/functions.php:1620
|
7100 |
#: includes/functions.php:2409
|
7101 |
#: includes/functions.php:2440
|
|
|
|
|
7102 |
msgid "Sign Up for !!name!! Now"
|
7103 |
msgstr "Sign Up per !!name!! Ara"
|
7104 |
|
@@ -7144,6 +7787,10 @@ msgstr "Si us plau especifica un ID de Nivell"
|
|
7144 |
#: includes/metaboxes.php:19
|
7145 |
#: classes/class.pmproemail.php:888
|
7146 |
#: classes/class.pmproemail.php:933
|
|
|
|
|
|
|
|
|
7147 |
msgid "None"
|
7148 |
msgstr "Cap"
|
7149 |
|
@@ -7155,6 +7802,7 @@ msgstr "La teva clau (license key) ha estat validada."
|
|
7155 |
#: includes/license.php:81
|
7156 |
#: adminpages/license.php:43
|
7157 |
#: adminpages/license.php:33
|
|
|
7158 |
msgid "Paid Memberships Pro Support License"
|
7159 |
msgstr "Paid Memberships Pro Support License"
|
7160 |
|
@@ -7175,6 +7823,7 @@ msgstr "Visita PMPro <a href=\"http://www.paidmembershipspro.com/login/?redirect
|
|
7175 |
#: adminpages/license.php:49
|
7176 |
#: adminpages/dashboard.php:178
|
7177 |
#: adminpages/license.php:41
|
|
|
7178 |
msgid "Your license is invalid or expired."
|
7179 |
msgstr "La teva license és invalida o ha expirat"
|
7180 |
|
@@ -7187,6 +7836,7 @@ msgstr "<p><strong>Moltes gràcies!</strong> A valid <strong>%s</strong> license
|
|
7187 |
#: adminpages/license.php:59
|
7188 |
#: adminpages/license.php:51
|
7189 |
#: adminpages/license.php:53
|
|
|
7190 |
msgid "Enter license key here..."
|
7191 |
msgstr "Introdueix license key aquí"
|
7192 |
|
@@ -7300,6 +7950,8 @@ msgstr "Nivell actual"
|
|
7300 |
#: includes/profile.php:255
|
7301 |
#: includes/profile.php:186
|
7302 |
#: includes/profile.php:233
|
|
|
|
|
7303 |
msgid "Not paying."
|
7304 |
msgstr "Sense pagament fet."
|
7305 |
|
@@ -7402,6 +8054,11 @@ msgstr "logout"
|
|
7402 |
#: adminpages/orders.php:1335
|
7403 |
#: adminpages/dashboard.php:226
|
7404 |
#: adminpages/dashboard.php:294
|
|
|
|
|
|
|
|
|
|
|
7405 |
msgid "Level"
|
7406 |
msgstr "Nivell"
|
7407 |
|
@@ -7409,6 +8066,7 @@ msgstr "Nivell"
|
|
7409 |
#: pages/account.php:14
|
7410 |
#: pages/billing.php:18
|
7411 |
#: pages/billing.php:72
|
|
|
7412 |
msgid "Membership Fee"
|
7413 |
msgstr "Preu de subscripció"
|
7414 |
|
@@ -7417,6 +8075,7 @@ msgstr "Preu de subscripció"
|
|
7417 |
#: pages/billing.php:22
|
7418 |
#: pages/levels.php:70
|
7419 |
#: pages/billing.php:76
|
|
|
7420 |
#, php-format
|
7421 |
msgid "%s every %d %s."
|
7422 |
msgstr "%s cada %d %s."
|
@@ -7426,6 +8085,7 @@ msgstr "%s cada %d %s."
|
|
7426 |
#: pages/billing.php:24
|
7427 |
#: pages/levels.php:66
|
7428 |
#: pages/billing.php:78
|
|
|
7429 |
#, php-format
|
7430 |
msgid "%s per %s."
|
7431 |
msgstr "%s per %s."
|
@@ -7436,6 +8096,7 @@ msgstr "%s per %s."
|
|
7436 |
#: pages/billing.php:29
|
7437 |
#: pages/billing.php:33
|
7438 |
#: pages/billing.php:89
|
|
|
7439 |
msgid "Duration"
|
7440 |
msgstr "Durada"
|
7441 |
|
@@ -7443,6 +8104,7 @@ msgstr "Durada"
|
|
7443 |
#: pages/billing.php:39
|
7444 |
#: pages/billing.php:43
|
7445 |
#: pages/billing.php:128
|
|
|
7446 |
msgid "Your payment subscription is managed by PayPal. Please <a href=\"http://www.paypal.com\">login to PayPal here</a> to update your billing information."
|
7447 |
msgstr "El pagament de la teva subscripció és gestionat per PayPal. Si us plau <a href=\"http://www.paypal.com\">login to PayPal aquí</a> per actualitzar la teva informació de pagament."
|
7448 |
|
@@ -7462,6 +8124,8 @@ msgstr "El pagament de la teva subscripció és gestionat per PayPal. Si us plau
|
|
7462 |
#: pages/checkout.php:234
|
7463 |
#: includes/profile.php:759
|
7464 |
#: includes/profile.php:755
|
|
|
|
|
7465 |
msgid "First Name"
|
7466 |
msgstr "Nom"
|
7467 |
|
@@ -7481,6 +8145,8 @@ msgstr "Nom"
|
|
7481 |
#: pages/checkout.php:238
|
7482 |
#: includes/profile.php:760
|
7483 |
#: includes/profile.php:756
|
|
|
|
|
7484 |
msgid "Last Name"
|
7485 |
msgstr "Cognoms"
|
7486 |
|
@@ -7497,6 +8163,7 @@ msgstr "Cognoms"
|
|
7497 |
#: pages/checkout.php:336
|
7498 |
#: pages/billing.php:174
|
7499 |
#: pages/checkout.php:242
|
|
|
7500 |
msgid "Address 1"
|
7501 |
msgstr "Adreça 1"
|
7502 |
|
@@ -7513,6 +8180,7 @@ msgstr "Adreça 1"
|
|
7513 |
#: pages/checkout.php:340
|
7514 |
#: pages/billing.php:178
|
7515 |
#: pages/checkout.php:246
|
|
|
7516 |
msgid "Address 2"
|
7517 |
msgstr "Adreça 2"
|
7518 |
|
@@ -7529,6 +8197,7 @@ msgstr "Adreça 2"
|
|
7529 |
#: pages/checkout.php:350
|
7530 |
#: pages/billing.php:188
|
7531 |
#: pages/checkout.php:253
|
|
|
7532 |
msgid "City"
|
7533 |
msgstr "Ciutat"
|
7534 |
|
@@ -7545,6 +8214,7 @@ msgstr "Ciutat"
|
|
7545 |
#: pages/checkout.php:354
|
7546 |
#: pages/billing.php:192
|
7547 |
#: pages/checkout.php:257
|
|
|
7548 |
msgid "State"
|
7549 |
msgstr "State/província"
|
7550 |
|
@@ -7561,6 +8231,7 @@ msgstr "State/província"
|
|
7561 |
#: pages/checkout.php:358
|
7562 |
#: pages/billing.php:196
|
7563 |
#: pages/checkout.php:261
|
|
|
7564 |
msgid "Postal Code"
|
7565 |
msgstr "Codi Postal"
|
7566 |
|
@@ -7577,6 +8248,7 @@ msgstr "Codi Postal"
|
|
7577 |
#: pages/checkout.php:367
|
7578 |
#: pages/billing.php:205
|
7579 |
#: pages/checkout.php:266
|
|
|
7580 |
msgid "City, State Zip"
|
7581 |
msgstr "Ciutat, CP"
|
7582 |
|
@@ -7593,6 +8265,7 @@ msgstr "Ciutat, CP"
|
|
7593 |
#: pages/checkout.php:420
|
7594 |
#: pages/billing.php:258
|
7595 |
#: pages/checkout.php:303
|
|
|
7596 |
msgid "Country"
|
7597 |
msgstr "País"
|
7598 |
|
@@ -7609,6 +8282,7 @@ msgstr "País"
|
|
7609 |
#: pages/checkout.php:445
|
7610 |
#: pages/billing.php:283
|
7611 |
#: pages/checkout.php:319
|
|
|
7612 |
msgid "Phone"
|
7613 |
msgstr "Telèfon"
|
7614 |
|
@@ -7632,6 +8306,7 @@ msgstr "Telèfon"
|
|
7632 |
#: pages/billing.php:294
|
7633 |
#: pages/checkout.php:164
|
7634 |
#: pages/checkout.php:334
|
|
|
7635 |
msgid "Email Address"
|
7636 |
msgstr "Correu electrònic"
|
7637 |
|
@@ -7648,6 +8323,7 @@ msgstr "Correu electrònic"
|
|
7648 |
#: pages/checkout.php:469
|
7649 |
#: pages/billing.php:298
|
7650 |
#: pages/checkout.php:341
|
|
|
7651 |
msgid "Confirm Email"
|
7652 |
msgstr "Confirma Correu electrònic"
|
7653 |
|
@@ -7656,6 +8332,7 @@ msgstr "Confirma Correu electrònic"
|
|
7656 |
#: pages/billing.php:221
|
7657 |
#: pages/billing.php:230
|
7658 |
#: pages/billing.php:321
|
|
|
7659 |
msgid "Credit Card Information"
|
7660 |
msgstr "Informació de la Tarjeta de Crèdit"
|
7661 |
|
@@ -7664,6 +8341,7 @@ msgstr "Informació de la Tarjeta de Crèdit"
|
|
7664 |
#: pages/billing.php:221
|
7665 |
#: pages/billing.php:230
|
7666 |
#: pages/billing.php:322
|
|
|
7667 |
#, php-format
|
7668 |
msgid "We accept %s"
|
7669 |
msgstr "Acceptem %s"
|
@@ -7676,6 +8354,7 @@ msgstr "Acceptem %s"
|
|
7676 |
#: pages/billing.php:356
|
7677 |
#: pages/billing.php:467
|
7678 |
#: pages/billing.php:477
|
|
|
7679 |
msgid "This subscription is not recurring. So you don't need to update your billing information."
|
7680 |
msgstr "Aquesta subscripció no és recurrent. Per tant, no necessites actualitzar la teva informació de pagament."
|
7681 |
|
@@ -7900,6 +8579,7 @@ msgstr "Check Out amb tarjeta de crèdit aquí"
|
|
7900 |
#: pages/checkout.php:681
|
7901 |
#: pages/checkout.php:690
|
7902 |
#: pages/checkout.php:476
|
|
|
7903 |
#, php-format
|
7904 |
msgid "I agree to the %s"
|
7905 |
msgstr "Estic d’acord amb %s"
|
@@ -7913,6 +8593,7 @@ msgstr "Estic d’acord amb %s"
|
|
7913 |
#: pages/checkout.php:701
|
7914 |
#: pages/checkout.php:710
|
7915 |
#: pages/checkout.php:514
|
|
|
7916 |
msgid "Complete Payment"
|
7917 |
msgstr "Completa pagament"
|
7918 |
|
@@ -7925,6 +8606,7 @@ msgstr "Completa pagament"
|
|
7925 |
#: pages/checkout.php:723
|
7926 |
#: pages/checkout.php:732
|
7927 |
#: pages/checkout.php:536
|
|
|
7928 |
msgid "Processing..."
|
7929 |
msgstr "Processant…"
|
7930 |
|
@@ -7966,6 +8648,13 @@ msgstr "Factura #%s a %s"
|
|
7966 |
#: includes/profile.php:433
|
7967 |
#: adminpages/orders.php:1423
|
7968 |
#: adminpages/orders.php:1433
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7969 |
msgid "Print"
|
7970 |
msgstr "Imprimeix"
|
7971 |
|
@@ -8000,6 +8689,7 @@ msgstr "La subscripció acaba"
|
|
8000 |
#: pages/billing.php:96
|
8001 |
#: pages/confirmation.php:95
|
8002 |
#: pages/invoice.php:85
|
|
|
8003 |
msgid "Payment Method"
|
8004 |
msgstr "Mètode de pagament"
|
8005 |
|
@@ -8015,6 +8705,7 @@ msgstr "Mètode de pagament"
|
|
8015 |
#: pages/invoice.php:97
|
8016 |
#: pages/invoice.php:125
|
8017 |
#: includes/profile.php:413
|
|
|
8018 |
msgid "Total Billed"
|
8019 |
msgstr "Total facturat"
|
8020 |
|
@@ -8025,6 +8716,7 @@ msgstr "Total facturat"
|
|
8025 |
#: pages/billing.php:98
|
8026 |
#: pages/confirmation.php:97
|
8027 |
#: pages/invoice.php:87
|
|
|
8028 |
msgid "ending in"
|
8029 |
msgstr "acaba a"
|
8030 |
|
@@ -8038,6 +8730,7 @@ msgstr "A sota hi ha els detalls del teu compte de subscripció. Un correu elect
|
|
8038 |
#: pages/confirmation.php:103
|
8039 |
#: pages/confirmation.php:138
|
8040 |
#: shortcodes/pmpro_account.php:247
|
|
|
8041 |
msgid "Pending"
|
8042 |
msgstr "Pendent"
|
8043 |
|
@@ -8049,6 +8742,8 @@ msgstr "Pendent"
|
|
8049 |
#: pages/billing.php:131
|
8050 |
#: pages/confirmation.php:149
|
8051 |
#: pages/invoice.php:155
|
|
|
|
|
8052 |
msgid "View Your Membership Account →"
|
8053 |
msgstr "Mira el teu compte de subscripció →"
|
8054 |
|
@@ -8062,6 +8757,8 @@ msgstr "Si el teu compte no s’activa en uns minuts, si us plau contacta amb l
|
|
8062 |
#: pages/invoice.php:80
|
8063 |
#: includes/functions.php:2857
|
8064 |
#: includes/functions.php:2888
|
|
|
|
|
8065 |
msgid "Coupon"
|
8066 |
msgstr "Cupó"
|
8067 |
|
@@ -8087,6 +8784,7 @@ msgstr "← Mira totes les factures"
|
|
8087 |
#: pages/levels.php:33
|
8088 |
#: pages/levels.php:43
|
8089 |
#: includes/functions.php:396
|
|
|
8090 |
msgid "Free"
|
8091 |
msgstr "Gratuït"
|
8092 |
|
@@ -8145,6 +8843,7 @@ msgstr "← Torna a la pàgina d’inici"
|
|
8145 |
#: paid-memberships-pro.php:157
|
8146 |
#: paid-memberships-pro.php:159
|
8147 |
#: paid-memberships-pro.php:160
|
|
|
8148 |
msgid "Testing Only"
|
8149 |
msgstr "Només test"
|
8150 |
|
@@ -8156,6 +8855,7 @@ msgstr "Només test"
|
|
8156 |
#: paid-memberships-pro.php:162
|
8157 |
#: paid-memberships-pro.php:164
|
8158 |
#: paid-memberships-pro.php:165
|
|
|
8159 |
msgid "PayPal Payflow Pro/PayPal Pro"
|
8160 |
msgstr "PayPal Payflow Pro/PayPal Pro"
|
8161 |
|
@@ -8167,12 +8867,14 @@ msgstr "PayPal Payflow Pro/PayPal Pro"
|
|
8167 |
#: paid-memberships-pro.php:166
|
8168 |
#: paid-memberships-pro.php:168
|
8169 |
#: paid-memberships-pro.php:169
|
|
|
8170 |
msgid "Cybersource"
|
8171 |
msgstr "Cybersource"
|
8172 |
|
8173 |
#: paid-memberships-pro.php:156
|
8174 |
#: paid-memberships-pro.php:194
|
8175 |
#: paid-memberships-pro.php:195
|
|
|
8176 |
msgid "Once a month"
|
8177 |
msgstr "Un cop al mes"
|
8178 |
|
@@ -8290,6 +8992,7 @@ msgstr "Error actualitzant la informació de facturació."
|
|
8290 |
#: classes/class.pmproemail.php:907
|
8291 |
#: includes/email.php:459
|
8292 |
#: classes/class.pmproemail.php:900
|
|
|
8293 |
msgid "Your membership has been cancelled."
|
8294 |
msgstr "La teva subscripció ha estat cancel·lada."
|
8295 |
|
@@ -8589,6 +9292,7 @@ msgstr "El codi <strong>%s</strong> s’ha aplicat a la teva comanda."
|
|
8589 |
#: services/authnet-silent-post.php:173
|
8590 |
#: services/authnet-silent-post.php:176
|
8591 |
#: services/authnet-silent-post.php:177
|
|
|
8592 |
msgid "<p>A payment is being held for review within Authorize.net.</p><p>Payment Information From Authorize.net"
|
8593 |
msgstr "<p>Un pagament s’està revisant a Authorize.net.</p><p>Payment Information From Authorize.net"
|
8594 |
|
@@ -8605,6 +9309,7 @@ msgstr "%s ha cancel·lat la seva subscripció per Stripe. Si us plau, confirma
|
|
8605 |
#: pages/account.php:19
|
8606 |
#: includes/email-templates.php:68
|
8607 |
#: shortcodes/pmpro_account.php:43
|
|
|
8608 |
msgid "Billing"
|
8609 |
msgstr "Facturació"
|
8610 |
|
@@ -8659,6 +9364,8 @@ msgstr "Edita el perfil"
|
|
8659 |
#: includes/profile.php:921
|
8660 |
#: includes/profile.php:880
|
8661 |
#: includes/profile.php:917
|
|
|
|
|
8662 |
msgid "Change Password"
|
8663 |
msgstr "Canvia Clau"
|
8664 |
|
@@ -8757,6 +9464,8 @@ msgstr "cada"
|
|
8757 |
#: includes/profile.php:515
|
8758 |
#: includes/profile.php:511
|
8759 |
#: adminpages/advancedsettings.php:331
|
|
|
|
|
8760 |
msgid "Never"
|
8761 |
msgstr "Mai"
|
8762 |
|
@@ -8816,6 +9525,7 @@ msgstr "Visites avui"
|
|
8816 |
#: adminpages/reports/login.php:28
|
8817 |
#: adminpages/reports/login.php:29
|
8818 |
#: adminpages/reports/login.php:189
|
|
|
8819 |
msgid "Visits All Time"
|
8820 |
msgstr "Visites sempre"
|
8821 |
|
@@ -8827,6 +9537,7 @@ msgstr "Vistes avui"
|
|
8827 |
#: adminpages/reports/login.php:33
|
8828 |
#: adminpages/reports/login.php:34
|
8829 |
#: adminpages/reports/login.php:193
|
|
|
8830 |
msgid "Views All Time"
|
8831 |
msgstr "Vistes sempre"
|
8832 |
|
@@ -8838,6 +9549,7 @@ msgstr "Logins avui"
|
|
8838 |
#: adminpages/reports/login.php:38
|
8839 |
#: adminpages/reports/login.php:39
|
8840 |
#: adminpages/reports/login.php:198
|
|
|
8841 |
msgid "Logins All Time"
|
8842 |
msgstr "Logins sempre"
|
8843 |
|
@@ -8938,6 +9650,7 @@ msgstr "El teu primer %d pagament serà de %s."
|
|
8938 |
#: pages/account.php:87
|
8939 |
#: pages/account.php:91
|
8940 |
#: adminpages/emailtemplates.php:156
|
|
|
8941 |
msgid "Billing Information"
|
8942 |
msgstr "Informació de Facturació"
|
8943 |
|
@@ -9054,6 +9767,18 @@ msgstr "Configura el teu compte"
|
|
9054 |
#: js/blocks.build.js:1342
|
9055 |
#: js/blocks.build.js:1502
|
9056 |
#: classes/class-pmpro-admin-activity-email.php:349
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9057 |
msgid "Paid Memberships Pro"
|
9058 |
msgstr ""
|
9059 |
|
@@ -9099,6 +9824,7 @@ msgstr ""
|
|
9099 |
#: classes/gateways/class.pmprogateway_stripe.php:76
|
9100 |
#: classes/gateways/class.pmprogateway_stripe.php:82
|
9101 |
#: classes/gateways/class.pmprogateway_stripe.php:1338
|
|
|
9102 |
msgid "The Stripe Gateway requires PHP 5.3.29 or greater. We recommend upgrading to PHP %s or greater. Ask your host to upgrade."
|
9103 |
msgstr ""
|
9104 |
|
@@ -9138,6 +9864,8 @@ msgstr ""
|
|
9138 |
#: adminpages/admin_header.php:226
|
9139 |
#: includes/adminpages.php:52
|
9140 |
#: includes/adminpages.php:158
|
|
|
|
|
9141 |
msgid "Members"
|
9142 |
msgstr ""
|
9143 |
|
@@ -9182,41 +9910,49 @@ msgstr ""
|
|
9182 |
#: adminpages/advancedsettings.php:106
|
9183 |
#: includes/updates/upgrade_1.php:7
|
9184 |
#: adminpages/advancedsettings.php:108
|
|
|
9185 |
msgid "This content is for !!levels!! members only.<br /><a href=\"%s\">Join Now</a>"
|
9186 |
msgstr ""
|
9187 |
|
9188 |
#: adminpages/advancedsettings.php:111
|
9189 |
#: adminpages/advancedsettings.php:113
|
|
|
9190 |
msgid "This content is for !!levels!! members only.<br /><a href=\"%s\">Log In</a> <a href=\"%s\">Join Now</a>"
|
9191 |
msgstr ""
|
9192 |
|
9193 |
#: adminpages/advancedsettings.php:135
|
9194 |
#: adminpages/advancedsettings.php:137
|
|
|
9195 |
msgid "Restrict Dashboard Access"
|
9196 |
msgstr ""
|
9197 |
|
9198 |
#: adminpages/advancedsettings.php:140
|
9199 |
#: adminpages/advancedsettings.php:142
|
|
|
9200 |
msgid "WordPress Dashboard"
|
9201 |
msgstr ""
|
9202 |
|
9203 |
#: adminpages/advancedsettings.php:143
|
9204 |
#: adminpages/advancedsettings.php:145
|
|
|
9205 |
msgid "Block all users with the Subscriber role from accessing the Dashboard."
|
9206 |
msgstr ""
|
9207 |
|
9208 |
#: adminpages/advancedsettings.php:148
|
9209 |
#: adminpages/advancedsettings.php:150
|
|
|
9210 |
msgid "WordPress Toolbar"
|
9211 |
msgstr ""
|
9212 |
|
9213 |
#: adminpages/advancedsettings.php:151
|
9214 |
#: adminpages/advancedsettings.php:153
|
|
|
9215 |
msgid "Hide the Toolbar from all users with the Subscriber role."
|
9216 |
msgstr ""
|
9217 |
|
9218 |
#: adminpages/advancedsettings.php:159
|
9219 |
#: adminpages/advancedsettings.php:161
|
|
|
9220 |
msgid "Message Settings"
|
9221 |
msgstr ""
|
9222 |
|
@@ -9224,93 +9960,111 @@ msgstr ""
|
|
9224 |
#: adminpages/advancedsettings.php:186
|
9225 |
#: adminpages/advancedsettings.php:179
|
9226 |
#: adminpages/advancedsettings.php:188
|
|
|
9227 |
msgid "Available variables"
|
9228 |
msgstr ""
|
9229 |
|
9230 |
#: adminpages/advancedsettings.php:224
|
9231 |
#: adminpages/advancedsettings.php:226
|
|
|
9232 |
msgid "Checkout Settings"
|
9233 |
msgstr ""
|
9234 |
|
9235 |
#: adminpages/advancedsettings.php:257
|
9236 |
#: adminpages/advancedsettings.php:272
|
|
|
9237 |
msgid "reCAPTCHA Version"
|
9238 |
msgstr ""
|
9239 |
|
9240 |
#: adminpages/advancedsettings.php:260
|
9241 |
#: adminpages/advancedsettings.php:275
|
|
|
9242 |
msgid " v2 - Checkbox"
|
9243 |
msgstr ""
|
9244 |
|
9245 |
#: adminpages/advancedsettings.php:261
|
9246 |
#: adminpages/advancedsettings.php:276
|
|
|
9247 |
msgid "v3 - Invisible"
|
9248 |
msgstr ""
|
9249 |
|
9250 |
#: adminpages/advancedsettings.php:263
|
9251 |
#: adminpages/advancedsettings.php:278
|
|
|
9252 |
msgid "Changing your version will require new API keys."
|
9253 |
msgstr ""
|
9254 |
|
9255 |
#: adminpages/advancedsettings.php:267
|
9256 |
#: adminpages/advancedsettings.php:282
|
|
|
9257 |
msgid "reCAPTCHA Site Key"
|
9258 |
msgstr ""
|
9259 |
|
9260 |
#: adminpages/advancedsettings.php:273
|
9261 |
#: adminpages/advancedsettings.php:288
|
|
|
9262 |
msgid "reCAPTCHA Secret Key"
|
9263 |
msgstr ""
|
9264 |
|
9265 |
#: adminpages/advancedsettings.php:283
|
9266 |
#: adminpages/advancedsettings.php:298
|
|
|
9267 |
msgid "Communication Settings"
|
9268 |
msgstr ""
|
9269 |
|
9270 |
#: adminpages/advancedsettings.php:286
|
9271 |
#: adminpages/advancedsettings.php:301
|
|
|
9272 |
msgid "Notifications"
|
9273 |
msgstr ""
|
9274 |
|
9275 |
#: adminpages/advancedsettings.php:290
|
9276 |
#: adminpages/advancedsettings.php:305
|
|
|
9277 |
msgid "Show all notifications."
|
9278 |
msgstr ""
|
9279 |
|
9280 |
#: adminpages/advancedsettings.php:293
|
9281 |
#: adminpages/advancedsettings.php:308
|
|
|
9282 |
msgid "Show only security notifications."
|
9283 |
msgstr ""
|
9284 |
|
9285 |
#: adminpages/advancedsettings.php:297
|
9286 |
#: adminpages/advancedsettings.php:312
|
|
|
9287 |
msgid "Notifications are occasionally shown on the Paid Memberships Pro settings pages."
|
9288 |
msgstr ""
|
9289 |
|
9290 |
#: adminpages/advancedsettings.php:302
|
9291 |
#: adminpages/advancedsettings.php:317
|
|
|
9292 |
msgid "Activity Email Frequency"
|
9293 |
msgstr ""
|
9294 |
|
9295 |
#: adminpages/advancedsettings.php:310
|
9296 |
#: adminpages/advancedsettings.php:325
|
|
|
9297 |
msgid "Weekly"
|
9298 |
msgstr ""
|
9299 |
|
9300 |
#: adminpages/advancedsettings.php:320
|
9301 |
#: adminpages/advancedsettings.php:335
|
|
|
9302 |
msgid "Send periodic sales and revenue updates from this site to the administration email address."
|
9303 |
msgstr ""
|
9304 |
|
9305 |
#: adminpages/advancedsettings.php:473
|
9306 |
#: adminpages/advancedsettings.php:475
|
9307 |
#: adminpages/advancedsettings.php:490
|
|
|
9308 |
msgid "Uninstall PMPro on deletion?"
|
9309 |
msgstr ""
|
9310 |
|
9311 |
#: adminpages/advancedsettings.php:478
|
9312 |
#: adminpages/advancedsettings.php:480
|
9313 |
#: adminpages/advancedsettings.php:495
|
|
|
9314 |
msgid "Yes - Delete all PMPro Data."
|
9315 |
msgstr ""
|
9316 |
|
@@ -9336,6 +10090,7 @@ msgstr ""
|
|
9336 |
|
9337 |
#: adminpages/dashboard.php:113
|
9338 |
#: adminpages/membershiplevels.php:779
|
|
|
9339 |
msgid "Create a Membership Level"
|
9340 |
msgstr ""
|
9341 |
|
@@ -9406,6 +10161,7 @@ msgstr ""
|
|
9406 |
#: adminpages/license.php:43
|
9407 |
#: adminpages/dashboard.php:183
|
9408 |
#: adminpages/license.php:45
|
|
|
9409 |
msgid "<strong>Thank you!</strong> A valid <strong>%s</strong> license key has been used to activate your support license on this site."
|
9410 |
msgstr ""
|
9411 |
|
@@ -9509,6 +10265,9 @@ msgstr ""
|
|
9509 |
#: adminpages/orders.php:1489
|
9510 |
#: adminpages/dashboard.php:323
|
9511 |
#: adminpages/dashboard.php:338
|
|
|
|
|
|
|
9512 |
msgid "none"
|
9513 |
msgstr ""
|
9514 |
|
@@ -9547,6 +10306,7 @@ msgstr ""
|
|
9547 |
#: adminpages/discountcodes.php:622
|
9548 |
#: adminpages/membershiplevels.php:450
|
9549 |
#: adminpages/discountcodes.php:624
|
|
|
9550 |
msgid "Stripe integration does not allow billing periods longer than 1 year."
|
9551 |
msgstr ""
|
9552 |
|
@@ -9559,31 +10319,39 @@ msgstr ""
|
|
9559 |
#: adminpages/discountcodes.php:697
|
9560 |
#: adminpages/membershiplevels.php:580
|
9561 |
#: adminpages/discountcodes.php:699
|
|
|
|
|
9562 |
msgid "Hour(s)"
|
9563 |
msgstr ""
|
9564 |
|
9565 |
#: adminpages/discountcodes.php:754
|
9566 |
#: adminpages/discountcodes.php:756
|
|
|
9567 |
msgid "No Discount Codes Found"
|
9568 |
msgstr ""
|
9569 |
|
9570 |
#: adminpages/discountcodes.php:755
|
9571 |
#: adminpages/discountcodes.php:757
|
|
|
9572 |
msgid "Discount codes allow you to override your membership level's default pricing."
|
9573 |
msgstr ""
|
9574 |
|
9575 |
#: adminpages/discountcodes.php:756
|
9576 |
#: adminpages/discountcodes.php:758
|
|
|
9577 |
msgid "Create a Discount Code"
|
9578 |
msgstr ""
|
9579 |
|
9580 |
#: adminpages/discountcodes.php:757
|
9581 |
#: adminpages/discountcodes.php:759
|
|
|
9582 |
msgid "Documentation: Discount Codes"
|
9583 |
msgstr ""
|
9584 |
|
9585 |
#: adminpages/discountcodes.php:766
|
9586 |
#: adminpages/discountcodes.php:768
|
|
|
|
|
9587 |
msgid "%d discount codes found."
|
9588 |
msgstr ""
|
9589 |
|
@@ -9607,6 +10375,15 @@ msgstr ""
|
|
9607 |
#: includes/profile.php:430
|
9608 |
#: adminpages/orders.php:1388
|
9609 |
#: adminpages/orders.php:1398
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9610 |
msgid "Edit"
|
9611 |
msgstr ""
|
9612 |
|
@@ -9623,6 +10400,14 @@ msgstr ""
|
|
9623 |
#: adminpages/discountcodes.php:860
|
9624 |
#: adminpages/orders.php:1402
|
9625 |
#: adminpages/orders.php:1413
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9626 |
msgid "Copy"
|
9627 |
msgstr ""
|
9628 |
|
@@ -9631,15 +10416,18 @@ msgid " View Orders"
|
|
9631 |
msgstr ""
|
9632 |
|
9633 |
#: adminpages/emailsettings.php:87
|
|
|
9634 |
msgid "Send Emails From"
|
9635 |
msgstr ""
|
9636 |
|
9637 |
#: adminpages/emailsettings.php:119
|
9638 |
#: adminpages/emailsettings.php:173
|
|
|
9639 |
msgid "Save All Settings"
|
9640 |
msgstr ""
|
9641 |
|
9642 |
#: adminpages/emailsettings.php:122
|
|
|
9643 |
msgid "Email Deliverability"
|
9644 |
msgstr ""
|
9645 |
|
@@ -9680,192 +10468,241 @@ msgid "Recommended: Leave unchecked. Members will still get an email confirmatio
|
|
9680 |
msgstr ""
|
9681 |
|
9682 |
#: adminpages/emailtemplates.php:23
|
|
|
9683 |
msgid "Select an email template from the dropdown below to customize the subject and body of emails sent through your membership site. You can also disable a specific email or send a test version through this admin page."
|
9684 |
msgstr ""
|
9685 |
|
9686 |
#: adminpages/emailtemplates.php:23
|
|
|
9687 |
msgid "Click here for a description of each email sent to your members and admins at different stages of the member experience."
|
9688 |
msgstr ""
|
9689 |
|
9690 |
#: adminpages/emailtemplates.php:38
|
|
|
9691 |
msgid "Email Template"
|
9692 |
msgstr ""
|
9693 |
|
9694 |
#: adminpages/emailtemplates.php:42
|
|
|
9695 |
msgid "Select a Template to Edit"
|
9696 |
msgstr ""
|
9697 |
|
9698 |
#: adminpages/emailtemplates.php:58
|
|
|
9699 |
msgid "Disable this email?"
|
9700 |
msgstr ""
|
9701 |
|
9702 |
#: adminpages/emailtemplates.php:61
|
|
|
9703 |
msgid "Emails with this template will not be sent."
|
9704 |
msgstr ""
|
9705 |
|
9706 |
#: adminpages/emailtemplates.php:66
|
|
|
9707 |
msgid "Subject"
|
9708 |
msgstr ""
|
9709 |
|
9710 |
#: adminpages/emailtemplates.php:73
|
|
|
9711 |
msgid "Body"
|
9712 |
msgstr ""
|
9713 |
|
9714 |
#: adminpages/emailtemplates.php:84
|
|
|
9715 |
msgid "Send a test email to "
|
9716 |
msgstr ""
|
9717 |
|
9718 |
#: adminpages/emailtemplates.php:87
|
|
|
9719 |
msgid "Save Template and Send Email"
|
9720 |
msgstr ""
|
9721 |
|
9722 |
#: adminpages/emailtemplates.php:92
|
|
|
9723 |
msgid "Your current membership will be used for any membership level data."
|
9724 |
msgstr ""
|
9725 |
|
9726 |
#: adminpages/emailtemplates.php:101
|
|
|
9727 |
msgid "Save Template"
|
9728 |
msgstr ""
|
9729 |
|
9730 |
#: adminpages/emailtemplates.php:104
|
|
|
9731 |
msgid "Reset Template"
|
9732 |
msgstr ""
|
9733 |
|
9734 |
#: adminpages/emailtemplates.php:114
|
|
|
9735 |
msgid "Variable Reference"
|
9736 |
msgstr ""
|
9737 |
|
9738 |
#: adminpages/emailtemplates.php:116
|
|
|
9739 |
msgid "Use the placeholder variables below to customize your member and admin emails with specific user or membership data."
|
9740 |
msgstr ""
|
9741 |
|
9742 |
#: adminpages/emailtemplates.php:120
|
|
|
9743 |
msgid "General Settings / Membership Info"
|
9744 |
msgstr ""
|
9745 |
|
9746 |
#: adminpages/emailtemplates.php:126
|
9747 |
#: adminpages/emailtemplates.php:136
|
|
|
|
|
9748 |
msgid "Display Name (Profile/Edit User > Display name publicly as)"
|
9749 |
msgstr ""
|
9750 |
|
9751 |
#: adminpages/emailtemplates.php:128
|
|
|
9752 |
msgid "Site Title"
|
9753 |
msgstr ""
|
9754 |
|
9755 |
#: adminpages/emailtemplates.php:129
|
|
|
9756 |
msgid "Site Email Address (General Settings > Email OR Memberships > Settings > Email Settings)"
|
9757 |
msgstr ""
|
9758 |
|
9759 |
#: adminpages/emailtemplates.php:131
|
|
|
9760 |
msgid "Membership Level Name"
|
9761 |
msgstr ""
|
9762 |
|
9763 |
#: adminpages/emailtemplates.php:132
|
|
|
9764 |
msgid "Membership Level Change"
|
9765 |
msgstr ""
|
9766 |
|
9767 |
#: adminpages/emailtemplates.php:133
|
|
|
9768 |
msgid "Membership Level Expiration"
|
9769 |
msgstr ""
|
9770 |
|
9771 |
#: adminpages/emailtemplates.php:134
|
|
|
9772 |
msgid "Membership Start Date"
|
9773 |
msgstr ""
|
9774 |
|
9775 |
#: adminpages/emailtemplates.php:135
|
|
|
9776 |
msgid "Membership End Date"
|
9777 |
msgstr ""
|
9778 |
|
9779 |
#: adminpages/emailtemplates.php:137
|
9780 |
#: classes/class.memberorder.php:960
|
9781 |
#: classes/class.memberorder.php:1002
|
|
|
|
|
9782 |
msgid "User Email"
|
9783 |
msgstr ""
|
9784 |
|
9785 |
#: adminpages/emailtemplates.php:138
|
|
|
9786 |
msgid "Login URL"
|
9787 |
msgstr ""
|
9788 |
|
9789 |
#: adminpages/emailtemplates.php:139
|
|
|
9790 |
msgid "Membership Levels Page URL"
|
9791 |
msgstr ""
|
9792 |
|
9793 |
#: adminpages/emailtemplates.php:162
|
|
|
9794 |
msgid "Billing Info Complete Address"
|
9795 |
msgstr ""
|
9796 |
|
9797 |
#: adminpages/emailtemplates.php:163
|
|
|
9798 |
msgid "Billing Info Name"
|
9799 |
msgstr ""
|
9800 |
|
9801 |
#: adminpages/emailtemplates.php:164
|
|
|
9802 |
msgid "Billing Info Street Address"
|
9803 |
msgstr ""
|
9804 |
|
9805 |
#: adminpages/emailtemplates.php:165
|
|
|
9806 |
msgid "Billing Info City"
|
9807 |
msgstr ""
|
9808 |
|
9809 |
#: adminpages/emailtemplates.php:166
|
|
|
9810 |
msgid "Billing Info State"
|
9811 |
msgstr ""
|
9812 |
|
9813 |
#: adminpages/emailtemplates.php:167
|
|
|
9814 |
msgid "Billing Info ZIP Code"
|
9815 |
msgstr ""
|
9816 |
|
9817 |
#: adminpages/emailtemplates.php:168
|
|
|
9818 |
msgid "Billing Info Country"
|
9819 |
msgstr ""
|
9820 |
|
9821 |
#: adminpages/emailtemplates.php:169
|
|
|
9822 |
msgid "Billing Info Phone #"
|
9823 |
msgstr ""
|
9824 |
|
9825 |
#: adminpages/emailtemplates.php:170
|
9826 |
#: includes/privacy.php:363
|
|
|
9827 |
msgid "Credit Card Type"
|
9828 |
msgstr ""
|
9829 |
|
9830 |
#: adminpages/emailtemplates.php:171
|
|
|
9831 |
msgid "Credit Card Number (last 4 digits)"
|
9832 |
msgstr ""
|
9833 |
|
9834 |
#: adminpages/emailtemplates.php:172
|
|
|
9835 |
msgid "Credit Card Expiration Month (mm format)"
|
9836 |
msgstr ""
|
9837 |
|
9838 |
#: adminpages/emailtemplates.php:173
|
|
|
9839 |
msgid "Credit Card Expiration Year (yyyy format)"
|
9840 |
msgstr ""
|
9841 |
|
9842 |
#: adminpages/emailtemplates.php:174
|
|
|
9843 |
msgid "Membership Level Cost Text"
|
9844 |
msgstr ""
|
9845 |
|
9846 |
#: adminpages/emailtemplates.php:175
|
|
|
9847 |
msgid "Payment Instructions (used in Checkout - Email Template)"
|
9848 |
msgstr ""
|
9849 |
|
9850 |
#: adminpages/emailtemplates.php:176
|
9851 |
#: includes/profile.php:423
|
9852 |
#: includes/profile.php:410
|
|
|
|
|
9853 |
msgid "Invoice ID"
|
9854 |
msgstr ""
|
9855 |
|
9856 |
#: adminpages/emailtemplates.php:177
|
|
|
9857 |
msgid "Invoice Total"
|
9858 |
msgstr ""
|
9859 |
|
9860 |
#: adminpages/emailtemplates.php:178
|
|
|
9861 |
msgid "Invoice Date"
|
9862 |
msgstr ""
|
9863 |
|
9864 |
#: adminpages/emailtemplates.php:179
|
|
|
9865 |
msgid "Invoice Page URL"
|
9866 |
msgstr ""
|
9867 |
|
9868 |
#: adminpages/emailtemplates.php:180
|
|
|
9869 |
msgid "Discount Code Applied"
|
9870 |
msgstr ""
|
9871 |
|
@@ -9883,6 +10720,7 @@ msgstr ""
|
|
9883 |
#: adminpages/license.php:61
|
9884 |
#: adminpages/license.php:53
|
9885 |
#: adminpages/license.php:55
|
|
|
9886 |
msgid "Validate Key"
|
9887 |
msgstr ""
|
9888 |
|
@@ -9890,14 +10728,17 @@ msgstr ""
|
|
9890 |
#: adminpages/license.php:87
|
9891 |
#: adminpages/license.php:86
|
9892 |
#: adminpages/license.php:92
|
|
|
9893 |
msgid "Paid Memberships Pro and our Add Ons are distributed under the <a href=\"%s\" title=\"GPLv2 license\" target=\"_blank\">GPLv2 license</a>. This means, among other things, that you may use the software on this site or any other site free of charge."
|
9894 |
msgstr ""
|
9895 |
|
9896 |
#: adminpages/membershiplevels.php:391
|
|
|
9897 |
msgid "Check to include this message in the membership confirmation email."
|
9898 |
msgstr ""
|
9899 |
|
9900 |
#: adminpages/membershiplevels.php:459
|
|
|
9901 |
msgid "You will need to create a \"Plan\" in your Braintree dashboard with the same settings and the \"Plan ID\" set to %s."
|
9902 |
msgstr ""
|
9903 |
|
@@ -9914,27 +10755,34 @@ msgid "WARNING: This level is set with both a recurring billing amount and an ex
|
|
9914 |
msgstr ""
|
9915 |
|
9916 |
#: adminpages/membershiplevels.php:640
|
|
|
9917 |
msgid "Non-members will not see posts in these categories. You can <a href=\"%s\" title=\"Advanced Settings\" target=\"_blank\">update this setting here</a>."
|
9918 |
msgstr ""
|
9919 |
|
9920 |
#: adminpages/membershiplevels.php:644
|
|
|
9921 |
msgid "Non-members will see the title and excerpt for posts in these categories. You can <a href=\"%s\" title=\"Advanced Settings\" target=\"_blank\">update this setting here</a>."
|
9922 |
msgstr ""
|
9923 |
|
9924 |
#: adminpages/membershiplevels.php:647
|
|
|
9925 |
msgid "Non-members will see the title only for posts in these categories. You can <a href=\"%s\" title=\"Advanced Settings\" target=\"_blank\">update this setting here</a>."
|
9926 |
msgstr ""
|
9927 |
|
9928 |
#: adminpages/membershiplevels.php:778
|
9929 |
#: adminpages/membershiplevels.php:819
|
|
|
|
|
9930 |
msgid "No Membership Levels Found"
|
9931 |
msgstr ""
|
9932 |
|
9933 |
#: adminpages/membershiplevels.php:780
|
|
|
9934 |
msgid "Video: Membership Levels"
|
9935 |
msgstr ""
|
9936 |
|
9937 |
#: adminpages/memberslist.php:41
|
|
|
9938 |
msgid "Optional: Capture additional member profile fields using the <a href=\"%s\" title=\"Paid Memberships Pro - Register Helper Add On\" target=\"_blank\">Register Helper Add On</a>."
|
9939 |
msgstr ""
|
9940 |
|
@@ -9943,42 +10791,57 @@ msgstr ""
|
|
9943 |
#: adminpages/orders.php:868
|
9944 |
#: includes/profile.php:85
|
9945 |
#: adminpages/orders.php:860
|
|
|
|
|
|
|
9946 |
msgid "at"
|
9947 |
msgstr ""
|
9948 |
|
9949 |
#: adminpages/orders.php:908
|
9950 |
#: adminpages/orders.php:914
|
9951 |
#: adminpages/orders.php:906
|
|
|
|
|
9952 |
msgid "TOS Consent"
|
9953 |
msgstr ""
|
9954 |
|
9955 |
#: adminpages/orders.php:1024
|
9956 |
#: adminpages/orders.php:1030
|
9957 |
#: adminpages/orders.php:1022
|
|
|
|
|
9958 |
msgid "With a Discount Code"
|
9959 |
msgstr ""
|
9960 |
|
9961 |
#: adminpages/orders.php:1028
|
9962 |
#: adminpages/orders.php:1034
|
9963 |
#: adminpages/orders.php:1026
|
|
|
|
|
9964 |
msgid "Only Paid Orders"
|
9965 |
msgstr ""
|
9966 |
|
9967 |
#: adminpages/orders.php:1030
|
9968 |
#: adminpages/orders.php:1036
|
9969 |
#: adminpages/orders.php:1028
|
|
|
|
|
9970 |
msgid "Only Free Orders"
|
9971 |
msgstr ""
|
9972 |
|
9973 |
#: adminpages/orders.php:1073
|
9974 |
#: adminpages/orders.php:1079
|
9975 |
#: adminpages/orders.php:1071
|
|
|
|
|
9976 |
msgid "Last Month"
|
9977 |
msgstr ""
|
9978 |
|
9979 |
#: adminpages/orders.php:1077
|
9980 |
#: adminpages/orders.php:1083
|
9981 |
#: adminpages/orders.php:1075
|
|
|
|
|
9982 |
msgid "Last Year"
|
9983 |
msgstr ""
|
9984 |
|
@@ -10017,78 +10880,91 @@ msgstr ""
|
|
10017 |
#: adminpages/pagesettings.php:174
|
10018 |
#: adminpages/pagesettings.php:189
|
10019 |
#: adminpages/pagesettings.php:193
|
|
|
10020 |
msgid "Manage Pages"
|
10021 |
msgstr ""
|
10022 |
|
10023 |
#: adminpages/pagesettings.php:175
|
10024 |
#: adminpages/pagesettings.php:190
|
10025 |
#: adminpages/pagesettings.php:194
|
|
|
10026 |
msgid "Several frontend pages are required for your Paid Memberships Pro site."
|
10027 |
msgstr ""
|
10028 |
|
10029 |
#: adminpages/pagesettings.php:176
|
10030 |
#: adminpages/pagesettings.php:191
|
10031 |
#: adminpages/pagesettings.php:195
|
|
|
10032 |
msgid "Generate Pages For Me"
|
10033 |
msgstr ""
|
10034 |
|
10035 |
#: adminpages/pagesettings.php:177
|
10036 |
#: adminpages/pagesettings.php:192
|
10037 |
#: adminpages/pagesettings.php:196
|
|
|
10038 |
msgid "Create Pages Manually"
|
10039 |
msgstr ""
|
10040 |
|
10041 |
#: adminpages/pagesettings.php:199
|
10042 |
#: adminpages/pagesettings.php:221
|
10043 |
#: adminpages/pagesettings.php:225
|
|
|
10044 |
msgid "or the Membership Account block"
|
10045 |
msgstr ""
|
10046 |
|
10047 |
#: adminpages/pagesettings.php:216
|
10048 |
#: adminpages/pagesettings.php:245
|
10049 |
#: adminpages/pagesettings.php:249
|
|
|
10050 |
msgid "or the Membership Billing block"
|
10051 |
msgstr ""
|
10052 |
|
10053 |
#: adminpages/pagesettings.php:233
|
10054 |
#: adminpages/pagesettings.php:269
|
10055 |
#: adminpages/pagesettings.php:273
|
|
|
10056 |
msgid "or the Membership Cancel block"
|
10057 |
msgstr ""
|
10058 |
|
10059 |
#: adminpages/pagesettings.php:251
|
10060 |
#: adminpages/pagesettings.php:294
|
10061 |
#: adminpages/pagesettings.php:298
|
|
|
10062 |
msgid "or the Membership Checkout block"
|
10063 |
msgstr ""
|
10064 |
|
10065 |
#: adminpages/pagesettings.php:269
|
10066 |
#: adminpages/pagesettings.php:319
|
10067 |
#: adminpages/pagesettings.php:323
|
|
|
10068 |
msgid "or the Membership Confirmation block"
|
10069 |
msgstr ""
|
10070 |
|
10071 |
#: adminpages/pagesettings.php:287
|
10072 |
#: adminpages/pagesettings.php:344
|
10073 |
#: adminpages/pagesettings.php:348
|
|
|
10074 |
msgid "or the Membership Invoice block"
|
10075 |
msgstr ""
|
10076 |
|
10077 |
#: adminpages/pagesettings.php:305
|
10078 |
#: adminpages/pagesettings.php:369
|
10079 |
#: adminpages/pagesettings.php:373
|
|
|
10080 |
msgid "or the Membership Levels block"
|
10081 |
msgstr ""
|
10082 |
|
10083 |
#: adminpages/pagesettings.php:315
|
10084 |
#: adminpages/pagesettings.php:379
|
10085 |
#: adminpages/pagesettings.php:383
|
|
|
10086 |
msgid "Optional: Customize your Membership Levels page using the <a href=\"%s\" title=\"Paid Memberships Pro - Advanced Levels Page Add On\" target=\"_blank\">Advanced Levels Page Add On</a>."
|
10087 |
msgstr ""
|
10088 |
|
10089 |
#: adminpages/pagesettings.php:321
|
10090 |
#: adminpages/pagesettings.php:385
|
10091 |
#: adminpages/pagesettings.php:389
|
|
|
10092 |
msgid "Log In Page"
|
10093 |
msgstr ""
|
10094 |
|
@@ -10098,12 +10974,15 @@ msgstr ""
|
|
10098 |
#: adminpages/pagesettings.php:421
|
10099 |
#: adminpages/pagesettings.php:396
|
10100 |
#: adminpages/pagesettings.php:425
|
|
|
|
|
10101 |
msgid "Use WordPress Default"
|
10102 |
msgstr ""
|
10103 |
|
10104 |
#: adminpages/pagesettings.php:344
|
10105 |
#: adminpages/pagesettings.php:409
|
10106 |
#: adminpages/pagesettings.php:413
|
|
|
10107 |
msgid "Include the shortcode %s or the Log In Form block."
|
10108 |
msgstr ""
|
10109 |
|
@@ -10111,18 +10990,21 @@ msgstr ""
|
|
10111 |
#: includes/adminpages.php:358
|
10112 |
#: adminpages/pagesettings.php:414
|
10113 |
#: adminpages/pagesettings.php:418
|
|
|
10114 |
msgid "Member Profile Edit Page"
|
10115 |
msgstr ""
|
10116 |
|
10117 |
#: adminpages/pagesettings.php:372
|
10118 |
#: adminpages/pagesettings.php:438
|
10119 |
#: adminpages/pagesettings.php:442
|
|
|
10120 |
msgid "Include the shortcode %s or the Member Profile Edit block."
|
10121 |
msgstr ""
|
10122 |
|
10123 |
#: adminpages/pagesettings.php:382
|
10124 |
#: adminpages/pagesettings.php:448
|
10125 |
#: adminpages/pagesettings.php:452
|
|
|
10126 |
msgid "Optional: Collect additional member fields at checkout, on the profile, or for admin-use only using the <a href=\"%s\" title=\"Paid Memberships Pro - Register Helper Add On\" target=\"_blank\">Register Helper Add On</a>."
|
10127 |
msgstr ""
|
10128 |
|
@@ -10131,10 +11013,14 @@ msgid "Learn more about <a title=\"Paid Memberships Pro - SSL Settings\" target=
|
|
10131 |
msgstr ""
|
10132 |
|
10133 |
#: adminpages/paymentsettings.php:142
|
|
|
|
|
10134 |
msgid "This gateway is for membership sites with Free levels or for sites that accept payment offline."
|
10135 |
msgstr ""
|
10136 |
|
10137 |
#: adminpages/paymentsettings.php:142
|
|
|
|
|
10138 |
msgid "It is not connected to a live gateway environment and cannot accept payments."
|
10139 |
msgstr ""
|
10140 |
|
@@ -10143,6 +11029,8 @@ msgid "US only. If values are given, tax will be applied for any members orderin
|
|
10143 |
msgstr ""
|
10144 |
|
10145 |
#: adminpages/paymentsettings.php:260
|
|
|
|
|
10146 |
msgid "Your Site URL starts with https:// and so PMPro will allow your entire site to be served over HTTPS."
|
10147 |
msgstr ""
|
10148 |
|
@@ -10174,6 +11062,7 @@ msgstr ""
|
|
10174 |
#: adminpages/reports/history.php:47
|
10175 |
#: classes/class.memberorder.php:967
|
10176 |
#: classes/class.memberorder.php:1009
|
|
|
10177 |
msgid "Edit User"
|
10178 |
msgstr ""
|
10179 |
|
@@ -10184,6 +11073,7 @@ msgstr ""
|
|
10184 |
#: adminpages/reports/history.php:188
|
10185 |
#: includes/profile.php:411
|
10186 |
#: includes/profile.php:389
|
|
|
10187 |
msgid "Total Paid"
|
10188 |
msgstr ""
|
10189 |
|
@@ -10196,45 +11086,55 @@ msgid "Year to Date"
|
|
10196 |
msgstr ""
|
10197 |
|
10198 |
#: adminpages/reports/login.php:186
|
|
|
10199 |
msgid "Visits This Week"
|
10200 |
msgstr ""
|
10201 |
|
10202 |
#: adminpages/reports/login.php:188
|
|
|
10203 |
msgid "Visits This Year"
|
10204 |
msgstr ""
|
10205 |
|
10206 |
#: adminpages/reports/login.php:190
|
|
|
10207 |
msgid "Views This Week"
|
10208 |
msgstr ""
|
10209 |
|
10210 |
#: adminpages/reports/login.php:192
|
|
|
10211 |
msgid "Views This Year"
|
10212 |
msgstr ""
|
10213 |
|
10214 |
#: adminpages/reports/login.php:195
|
|
|
10215 |
msgid "Logins This Week"
|
10216 |
msgstr ""
|
10217 |
|
10218 |
#: adminpages/reports/login.php:197
|
|
|
10219 |
msgid "Logins This Year"
|
10220 |
msgstr ""
|
10221 |
|
10222 |
#: adminpages/reports/memberships.php:356
|
|
|
10223 |
msgid "All Paid Levels"
|
10224 |
msgstr ""
|
10225 |
|
10226 |
#: adminpages/reports/memberships.php:357
|
|
|
10227 |
msgid "All Free Levels"
|
10228 |
msgstr ""
|
10229 |
|
10230 |
#: adminpages/reports/memberships.php:377
|
10231 |
#: adminpages/reports/sales.php:334
|
10232 |
#: adminpages/reports/sales.php:352
|
|
|
10233 |
msgid "All Codes"
|
10234 |
msgstr ""
|
10235 |
|
10236 |
#: adminpages/reports/sales.php:345
|
10237 |
#: adminpages/reports/sales.php:364
|
|
|
10238 |
msgid "Average line calculated using data prior to current day, month, or year."
|
10239 |
msgstr ""
|
10240 |
|
@@ -10392,51 +11292,64 @@ msgstr ""
|
|
10392 |
#: shortcodes/pmpro_account.php:145
|
10393 |
#: classes/class-pmpro-members-list-table.php:541
|
10394 |
#: classes/class-pmpro-members-list-table.php:570
|
|
|
|
|
|
|
|
|
10395 |
msgid "—"
|
10396 |
msgstr ""
|
10397 |
|
10398 |
#: classes/class.memberorder.php:962
|
10399 |
#: classes/class.memberorder.php:1004
|
|
|
10400 |
msgid "User Display Name"
|
10401 |
msgstr ""
|
10402 |
|
10403 |
#: classes/class.memberorder.php:968
|
10404 |
#: classes/class.memberorder.php:1010
|
|
|
|
|
10405 |
msgid "Edit Order"
|
10406 |
msgstr ""
|
10407 |
|
10408 |
#: classes/class.memberorder.php:1141
|
10409 |
#: classes/class.memberorder.php:1183
|
|
|
10410 |
msgid "This is a test order used with the PMPro Email Templates addon."
|
10411 |
msgstr ""
|
10412 |
|
10413 |
#: classes/class.pmproemail.php:371
|
10414 |
#: classes/class.pmproemail.php:377
|
10415 |
#: classes/class.pmproemail.php:370
|
|
|
10416 |
msgid "Member checkout for %s at %s"
|
10417 |
msgstr ""
|
10418 |
|
10419 |
#: classes/class.pmproemail.php:565
|
10420 |
#: classes/class.pmproemail.php:577
|
10421 |
#: classes/class.pmproemail.php:570
|
|
|
10422 |
msgid "Membership payment failed at %s"
|
10423 |
msgstr ""
|
10424 |
|
10425 |
#: classes/class.pmproemail.php:614
|
10426 |
#: classes/class.pmproemail.php:626
|
10427 |
#: classes/class.pmproemail.php:619
|
|
|
10428 |
msgid "Membership payment failed For %s at %s"
|
10429 |
msgstr ""
|
10430 |
|
10431 |
#: classes/class.pmproemail.php:663
|
10432 |
#: classes/class.pmproemail.php:675
|
10433 |
#: classes/class.pmproemail.php:668
|
|
|
10434 |
msgid "Credit card on file expiring soon at %s"
|
10435 |
msgstr ""
|
10436 |
|
10437 |
#: classes/class.pmproemail.php:715
|
10438 |
#: classes/class.pmproemail.php:727
|
10439 |
#: classes/class.pmproemail.php:720
|
|
|
10440 |
msgid "Invoice for %s membership"
|
10441 |
msgstr ""
|
10442 |
|
@@ -10449,6 +11362,8 @@ msgstr ""
|
|
10449 |
#: includes/email.php:465
|
10450 |
#: classes/class.pmproemail.php:898
|
10451 |
#: classes/class.pmproemail.php:943
|
|
|
|
|
10452 |
msgid "The new level is %s."
|
10453 |
msgstr ""
|
10454 |
|
@@ -10461,30 +11376,36 @@ msgstr ""
|
|
10461 |
#: includes/email.php:475
|
10462 |
#: classes/class.pmproemail.php:909
|
10463 |
#: classes/class.pmproemail.php:954
|
|
|
|
|
10464 |
msgid "This membership does not expire."
|
10465 |
msgstr ""
|
10466 |
|
10467 |
#: classes/class.pmproemail.php:940
|
10468 |
#: classes/class.pmproemail.php:952
|
10469 |
#: classes/class.pmproemail.php:945
|
|
|
10470 |
msgid "Membership has been cancelled."
|
10471 |
msgstr ""
|
10472 |
|
10473 |
#: classes/class.pmproemail.php:980
|
10474 |
#: classes/class.pmproemail.php:992
|
10475 |
#: classes/class.pmproemail.php:985
|
|
|
10476 |
msgid "Invoice for order #: "
|
10477 |
msgstr ""
|
10478 |
|
10479 |
#: classes/class.pmproemail.php:1030
|
10480 |
#: classes/class.pmproemail.php:1042
|
10481 |
#: classes/class.pmproemail.php:1035
|
|
|
10482 |
msgid "Payment action required for your %s membership"
|
10483 |
msgstr ""
|
10484 |
|
10485 |
#: classes/class.pmproemail.php:1068
|
10486 |
#: classes/class.pmproemail.php:1080
|
10487 |
#: classes/class.pmproemail.php:1073
|
|
|
10488 |
msgid "Payment action required: membership for %s at %s"
|
10489 |
msgstr ""
|
10490 |
|
@@ -10496,14 +11417,17 @@ msgstr ""
|
|
10496 |
#: classes/gateways/class.pmprogateway_stripe.php:91
|
10497 |
#: classes/gateways/class.pmprogateway_stripe.php:97
|
10498 |
#: classes/gateways/class.pmprogateway_stripe.php:1353
|
|
|
10499 |
msgid "The %s gateway depends on the %s PHP extension. Please enable it, or ask your hosting provider to enable it."
|
10500 |
msgstr ""
|
10501 |
|
10502 |
#: classes/gateways/class.pmprogateway_braintree.php:144
|
|
|
10503 |
msgid "Problem loading plans: %s"
|
10504 |
msgstr ""
|
10505 |
|
10506 |
#: classes/gateways/class.pmprogateway_braintree.php:146
|
|
|
10507 |
msgid "Problem accessing the Braintree Gateway. Please verify your PMPro Payment Settings (Keys, etc)."
|
10508 |
msgstr ""
|
10509 |
|
@@ -10513,27 +11437,49 @@ msgstr ""
|
|
10513 |
#: classes/gateways/class.pmprogateway_braintree.php:848
|
10514 |
#: classes/gateways/class.pmprogateway_braintree.php:957
|
10515 |
#: classes/gateways/class.pmprogateway_braintree.php:984
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10516 |
msgid "Payment error: Please contact the webmaster (braintree-load-error)"
|
10517 |
msgstr ""
|
10518 |
|
10519 |
#: classes/gateways/class.pmprogateway_braintree.php:750
|
|
|
|
|
10520 |
msgid "Failed to update customer: %s"
|
10521 |
msgstr ""
|
10522 |
|
10523 |
#: classes/gateways/class.pmprogateway_braintree.php:933
|
|
|
|
|
10524 |
msgid "Error subscribing customer to plan with Braintree: %s (%s)"
|
10525 |
msgstr ""
|
10526 |
|
10527 |
#: classes/gateways/class.pmprogateway_braintree.php:948
|
|
|
|
|
10528 |
msgid "Failed to subscribe with Braintree: %s"
|
10529 |
msgstr ""
|
10530 |
|
10531 |
#: classes/gateways/class.pmprogateway_braintree.php:1018
|
10532 |
#: classes/gateways/class.pmprogateway_braintree.php:1029
|
|
|
|
|
|
|
|
|
10533 |
msgid "Could not find the subscription. %s"
|
10534 |
msgstr ""
|
10535 |
|
10536 |
#: classes/gateways/class.pmprogateway_braintree.php:1082
|
|
|
|
|
10537 |
msgid "Error getting subscription with Braintree:"
|
10538 |
msgstr ""
|
10539 |
|
@@ -10795,6 +11741,7 @@ msgstr ""
|
|
10795 |
#: classes/gateways/class.pmprogateway_cybersource.php:922
|
10796 |
#: includes/license.php:159
|
10797 |
#: includes/license.php:164
|
|
|
10798 |
msgid "Unknown error."
|
10799 |
msgstr ""
|
10800 |
|
@@ -10810,17 +11757,20 @@ msgstr ""
|
|
10810 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:155
|
10811 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:147
|
10812 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:165
|
|
|
10813 |
msgid "Note: We do not recommend using PayPal Standard. We suggest using PayPal Express, Website Payments Pro (Legacy), or PayPal Pro (Payflow Pro). <a target=\"_blank\" href=\"%s\" title=\"More information on why can be found here\">More information on why can be found here</a>."
|
10814 |
msgstr ""
|
10815 |
|
10816 |
#: classes/gateways/class.pmprogateway_paypal.php:185
|
10817 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:194
|
10818 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:204
|
|
|
10819 |
msgid "Confirmation Step"
|
10820 |
msgstr ""
|
10821 |
|
10822 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:346
|
10823 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:356
|
|
|
10824 |
msgid "Checkout was already processed."
|
10825 |
msgstr ""
|
10826 |
|
@@ -10828,6 +11778,8 @@ msgstr ""
|
|
10828 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:791
|
10829 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:795
|
10830 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:804
|
|
|
|
|
10831 |
msgid "Something went wrong creating plan with PayPal; missing PROFILESTATUS."
|
10832 |
msgstr ""
|
10833 |
|
@@ -10835,6 +11787,8 @@ msgstr ""
|
|
10835 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:792
|
10836 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:796
|
10837 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:805
|
|
|
|
|
10838 |
msgid "Error creating plan with PayPal."
|
10839 |
msgstr ""
|
10840 |
|
@@ -10850,6 +11804,7 @@ msgstr ""
|
|
10850 |
#: classes/gateways/class.pmprogateway_stripe.php:450
|
10851 |
#: classes/gateways/class.pmprogateway_stripe.php:1790
|
10852 |
#: classes/gateways/class.pmprogateway_stripe.php:1788
|
|
|
10853 |
msgid "Stripe Connect Settings"
|
10854 |
msgstr ""
|
10855 |
|
@@ -10858,6 +11813,7 @@ msgstr ""
|
|
10858 |
#: classes/gateways/class.pmprogateway_stripe.php:362
|
10859 |
#: classes/gateways/class.pmprogateway_stripe.php:1793
|
10860 |
#: classes/gateways/class.pmprogateway_stripe.php:1791
|
|
|
10861 |
msgid "Live Mode:"
|
10862 |
msgstr ""
|
10863 |
|
@@ -10869,6 +11825,7 @@ msgstr ""
|
|
10869 |
#: classes/gateways/class.pmprogateway_stripe.php:454
|
10870 |
#: classes/gateways/class.pmprogateway_stripe.php:1795
|
10871 |
#: classes/gateways/class.pmprogateway_stripe.php:1793
|
|
|
10872 |
msgid "Connected"
|
10873 |
msgstr ""
|
10874 |
|
@@ -10880,6 +11837,7 @@ msgstr ""
|
|
10880 |
#: classes/gateways/class.pmprogateway_stripe.php:458
|
10881 |
#: classes/gateways/class.pmprogateway_stripe.php:1799
|
10882 |
#: classes/gateways/class.pmprogateway_stripe.php:1797
|
|
|
10883 |
msgid "Not Connected"
|
10884 |
msgstr ""
|
10885 |
|
@@ -10891,6 +11849,7 @@ msgstr ""
|
|
10891 |
#: classes/gateways/class.pmprogateway_stripe.php:465
|
10892 |
#: classes/gateways/class.pmprogateway_stripe.php:1807
|
10893 |
#: classes/gateways/class.pmprogateway_stripe.php:1805
|
|
|
10894 |
msgid "Your site is using legacy API keys to authenticate with Stripe."
|
10895 |
msgstr ""
|
10896 |
|
@@ -10899,6 +11858,7 @@ msgstr ""
|
|
10899 |
#: classes/gateways/class.pmprogateway_stripe.php:377
|
10900 |
#: classes/gateways/class.pmprogateway_stripe.php:1811
|
10901 |
#: classes/gateways/class.pmprogateway_stripe.php:1809
|
|
|
10902 |
msgid "Use the \"Connect with Stripe\" button below to securely authenticate with your Stripe account using Stripe Connect. Log in with the current Stripe account used for this site so that existing subscriptions are not affected by the update."
|
10903 |
msgstr ""
|
10904 |
|
@@ -10910,6 +11870,7 @@ msgstr ""
|
|
10910 |
#: classes/gateways/class.pmprogateway_stripe.php:476
|
10911 |
#: classes/gateways/class.pmprogateway_stripe.php:1824
|
10912 |
#: classes/gateways/class.pmprogateway_stripe.php:1822
|
|
|
10913 |
msgid "Stripe Connection:"
|
10914 |
msgstr ""
|
10915 |
|
@@ -10921,6 +11882,7 @@ msgstr ""
|
|
10921 |
#: classes/gateways/class.pmprogateway_stripe.php:500
|
10922 |
#: classes/gateways/class.pmprogateway_stripe.php:1840
|
10923 |
#: classes/gateways/class.pmprogateway_stripe.php:1838
|
|
|
10924 |
msgid "Disconnect From Stripe"
|
10925 |
msgstr ""
|
10926 |
|
@@ -10929,6 +11891,7 @@ msgstr ""
|
|
10929 |
#: classes/gateways/class.pmprogateway_stripe.php:403
|
10930 |
#: classes/gateways/class.pmprogateway_stripe.php:1844
|
10931 |
#: classes/gateways/class.pmprogateway_stripe.php:1842
|
|
|
10932 |
msgid "This will disconnect your site from Stripe. Users will not be able to complete membership checkout or update their billing information. Existing subscriptions will not be affected at the gateway, but new recurring orders will not be created in this site."
|
10933 |
msgstr ""
|
10934 |
|
@@ -10940,6 +11903,7 @@ msgstr ""
|
|
10940 |
#: classes/gateways/class.pmprogateway_stripe.php:514
|
10941 |
#: classes/gateways/class.pmprogateway_stripe.php:1861
|
10942 |
#: classes/gateways/class.pmprogateway_stripe.php:1859
|
|
|
10943 |
msgid "Connect with Stripe"
|
10944 |
msgstr ""
|
10945 |
|
@@ -10948,6 +11912,7 @@ msgstr ""
|
|
10948 |
#: classes/gateways/class.pmprogateway_stripe.php:422
|
10949 |
#: classes/gateways/class.pmprogateway_stripe.php:1868
|
10950 |
#: classes/gateways/class.pmprogateway_stripe.php:1866
|
|
|
10951 |
msgid "Note: You have a valid license and are not charged additional platform fees for payment processing."
|
10952 |
msgstr ""
|
10953 |
|
@@ -10971,6 +11936,8 @@ msgstr ""
|
|
10971 |
#: classes/gateways/class.pmprogateway_stripe.php:348
|
10972 |
#: classes/gateways/class.pmprogateway_stripe.php:1882
|
10973 |
#: classes/gateways/class.pmprogateway_stripe.php:1880
|
|
|
|
|
10974 |
msgid "Webhook"
|
10975 |
msgstr ""
|
10976 |
|
@@ -10987,6 +11954,8 @@ msgstr ""
|
|
10987 |
#: classes/gateways/class.pmprogateway_stripe.php:383
|
10988 |
#: classes/gateways/class.pmprogateway_stripe.php:1886
|
10989 |
#: classes/gateways/class.pmprogateway_stripe.php:1884
|
|
|
|
|
10990 |
msgid "Webhook URL"
|
10991 |
msgstr ""
|
10992 |
|
@@ -10995,6 +11964,7 @@ msgstr ""
|
|
10995 |
#: classes/gateways/class.pmprogateway_stripe.php:452
|
10996 |
#: classes/gateways/class.pmprogateway_stripe.php:1793
|
10997 |
#: classes/gateways/class.pmprogateway_stripe.php:1791
|
|
|
10998 |
msgid "Test Mode:"
|
10999 |
msgstr ""
|
11000 |
|
@@ -11003,6 +11973,7 @@ msgstr ""
|
|
11003 |
#: classes/gateways/class.pmprogateway_stripe.php:467
|
11004 |
#: classes/gateways/class.pmprogateway_stripe.php:1813
|
11005 |
#: classes/gateways/class.pmprogateway_stripe.php:1811
|
|
|
11006 |
msgid "Use the \"Connect with Stripe\" button below to securely authenticate with your Stripe account using Stripe Connect in test mode."
|
11007 |
msgstr ""
|
11008 |
|
@@ -11011,6 +11982,7 @@ msgstr ""
|
|
11011 |
#: classes/gateways/class.pmprogateway_stripe.php:501
|
11012 |
#: classes/gateways/class.pmprogateway_stripe.php:1846
|
11013 |
#: classes/gateways/class.pmprogateway_stripe.php:1844
|
|
|
11014 |
msgid "This will disconnect your site from Stripe in test mode only."
|
11015 |
msgstr ""
|
11016 |
|
@@ -11018,6 +11990,7 @@ msgstr ""
|
|
11018 |
#: classes/gateways/class.pmprogateway_stripe.php:530
|
11019 |
#: classes/gateways/class.pmprogateway_stripe.php:536
|
11020 |
#: classes/gateways/class.pmprogateway_stripe.php:300
|
|
|
11021 |
msgid "Stripe API Settings (Legacy)"
|
11022 |
msgstr ""
|
11023 |
|
@@ -11026,6 +11999,7 @@ msgstr ""
|
|
11026 |
#: classes/gateways/class.pmprogateway_stripe.php:562
|
11027 |
#: classes/gateways/class.pmprogateway_stripe.php:568
|
11028 |
#: classes/gateways/class.pmprogateway_stripe.php:332
|
|
|
11029 |
msgid "Your Publishable Key appears incorrect."
|
11030 |
msgstr ""
|
11031 |
|
@@ -11039,6 +12013,8 @@ msgstr ""
|
|
11039 |
#: classes/gateways/class.pmprogateway_stripe.php:612
|
11040 |
#: classes/gateways/class.pmprogateway_stripe.php:352
|
11041 |
#: classes/gateways/class.pmprogateway_stripe.php:376
|
|
|
|
|
11042 |
msgid "Create Webhook"
|
11043 |
msgstr ""
|
11044 |
|
@@ -11047,6 +12023,7 @@ msgstr ""
|
|
11047 |
#: classes/gateways/class.pmprogateway_stripe.php:588
|
11048 |
#: classes/gateways/class.pmprogateway_stripe.php:594
|
11049 |
#: classes/gateways/class.pmprogateway_stripe.php:358
|
|
|
11050 |
msgid "A webhook is set up in Stripe, but it is disabled."
|
11051 |
msgstr ""
|
11052 |
|
@@ -11055,6 +12032,7 @@ msgstr ""
|
|
11055 |
#: classes/gateways/class.pmprogateway_stripe.php:595
|
11056 |
#: classes/gateways/class.pmprogateway_stripe.php:601
|
11057 |
#: classes/gateways/class.pmprogateway_stripe.php:365
|
|
|
11058 |
msgid "A webhook is set up in Stripe, but it is using an old API version."
|
11059 |
msgstr ""
|
11060 |
|
@@ -11063,6 +12041,9 @@ msgstr ""
|
|
11063 |
#: classes/gateways/class.pmprogateway_stripe.php:595
|
11064 |
#: classes/gateways/class.pmprogateway_stripe.php:601
|
11065 |
#: classes/gateways/class.pmprogateway_stripe.php:365
|
|
|
|
|
|
|
11066 |
msgid "Rebuild Webhook"
|
11067 |
msgstr ""
|
11068 |
|
@@ -11080,6 +12061,8 @@ msgstr ""
|
|
11080 |
#: classes/gateways/class.pmprogateway_stripe.php:863
|
11081 |
#: classes/gateways/class.pmprogateway_stripe.php:371
|
11082 |
#: classes/gateways/class.pmprogateway_stripe.php:503
|
|
|
|
|
11083 |
msgid "Your webhook is enabled."
|
11084 |
msgstr ""
|
11085 |
|
@@ -11088,6 +12071,7 @@ msgstr ""
|
|
11088 |
#: classes/gateways/class.pmprogateway_stripe.php:601
|
11089 |
#: classes/gateways/class.pmprogateway_stripe.php:607
|
11090 |
#: classes/gateways/class.pmprogateway_stripe.php:371
|
|
|
11091 |
msgid "Disable Webhook"
|
11092 |
msgstr ""
|
11093 |
|
@@ -11109,6 +12093,8 @@ msgstr ""
|
|
11109 |
#: classes/gateways/class.pmprogateway_stripe.php:825
|
11110 |
#: classes/gateways/class.pmprogateway_stripe.php:378
|
11111 |
#: classes/gateways/class.pmprogateway_stripe.php:530
|
|
|
|
|
11112 |
msgid "A webhook in Stripe is required to process recurring payments, manage failed payments, and synchronize cancellations."
|
11113 |
msgstr ""
|
11114 |
|
@@ -11117,6 +12103,7 @@ msgstr ""
|
|
11117 |
#: classes/gateways/class.pmprogateway_stripe.php:620
|
11118 |
#: classes/gateways/class.pmprogateway_stripe.php:626
|
11119 |
#: classes/gateways/class.pmprogateway_stripe.php:390
|
|
|
11120 |
msgid "Other Stripe Settings"
|
11121 |
msgstr ""
|
11122 |
|
@@ -11125,6 +12112,7 @@ msgstr ""
|
|
11125 |
#: classes/gateways/class.pmprogateway_stripe.php:624
|
11126 |
#: classes/gateways/class.pmprogateway_stripe.php:630
|
11127 |
#: classes/gateways/class.pmprogateway_stripe.php:394
|
|
|
11128 |
msgid "Stripe API Version"
|
11129 |
msgstr ""
|
11130 |
|
@@ -11133,6 +12121,7 @@ msgstr ""
|
|
11133 |
#: classes/gateways/class.pmprogateway_stripe.php:643
|
11134 |
#: classes/gateways/class.pmprogateway_stripe.php:649
|
11135 |
#: classes/gateways/class.pmprogateway_stripe.php:413
|
|
|
11136 |
msgid "Enable Payment Request Button"
|
11137 |
msgstr ""
|
11138 |
|
@@ -11141,6 +12130,7 @@ msgstr ""
|
|
11141 |
#: classes/gateways/class.pmprogateway_stripe.php:661
|
11142 |
#: classes/gateways/class.pmprogateway_stripe.php:667
|
11143 |
#: classes/gateways/class.pmprogateway_stripe.php:431
|
|
|
11144 |
msgid "Allow users to pay using Apple Pay, Google Pay, or Microsoft Pay depending on their browser. When enabled, your domain will automatically be registered with Apple and a domain association file will be hosted on your site. <a target=\"_blank\" href=\"%s\" title=\"More Information about the domain association file for Apple Pay\">More Information »</a>"
|
11145 |
msgstr ""
|
11146 |
|
@@ -11149,6 +12139,7 @@ msgstr ""
|
|
11149 |
#: classes/gateways/class.pmprogateway_stripe.php:674
|
11150 |
#: classes/gateways/class.pmprogateway_stripe.php:680
|
11151 |
#: classes/gateways/class.pmprogateway_stripe.php:444
|
|
|
11152 |
msgid "This webpage is being served over HTTP, but the Stripe Payment Request Button will only work on pages being served over HTTPS. To resolve this, you must <a target=\"_blank\" href=\"%s\" title=\"Configuring WordPress to Always Use HTTPS/SSL\">set up WordPress to always use HTTPS</a>."
|
11153 |
msgstr ""
|
11154 |
|
@@ -11157,6 +12148,7 @@ msgstr ""
|
|
11157 |
#: classes/gateways/class.pmprogateway_stripe.php:676
|
11158 |
#: classes/gateways/class.pmprogateway_stripe.php:682
|
11159 |
#: classes/gateways/class.pmprogateway_stripe.php:446
|
|
|
11160 |
msgid "It looks like you are using an older Stripe publishable key. In order to use the Payment Request Button feature, you will need to update your API key, which will be prefixed with \"pk_live_\" or \"pk_test_\". <a target=\"_blank\" href=\"%s\" title=\"Stripe Dashboard API Key Settings\">Log in to your Stripe Dashboard to roll your publishable key</a>."
|
11161 |
msgstr ""
|
11162 |
|
@@ -11165,6 +12157,7 @@ msgstr ""
|
|
11165 |
#: classes/gateways/class.pmprogateway_stripe.php:678
|
11166 |
#: classes/gateways/class.pmprogateway_stripe.php:684
|
11167 |
#: classes/gateways/class.pmprogateway_stripe.php:448
|
|
|
11168 |
msgid "It looks like you are using an older Stripe secret key. In order to use the Payment Request Button feature, you will need to update your API key, which will be prefixed with \"sk_live_\" or \"sk_test_\". <a target=\"_blank\" href=\"%s\" title=\"Stripe Dashboard API Key Settings\">Log in to your Stripe Dashboard to roll your secret key</a>."
|
11169 |
msgstr ""
|
11170 |
|
@@ -11173,6 +12166,7 @@ msgstr ""
|
|
11173 |
#: classes/gateways/class.pmprogateway_stripe.php:680
|
11174 |
#: classes/gateways/class.pmprogateway_stripe.php:686
|
11175 |
#: classes/gateways/class.pmprogateway_stripe.php:450
|
|
|
11176 |
msgid "Your domain could not be registered with Apple to enable Apple Pay. Please try <a target=\"_blank\" href=\"%s\" title=\"Apple Pay Settings Page in Stripe\">registering your domain manually from the Apple Pay settings page in Stripe</a>."
|
11177 |
msgstr ""
|
11178 |
|
@@ -11181,6 +12175,7 @@ msgstr ""
|
|
11181 |
#: classes/gateways/class.pmprogateway_stripe.php:705
|
11182 |
#: classes/gateways/class.pmprogateway_stripe.php:711
|
11183 |
#: classes/gateways/class.pmprogateway_stripe.php:475
|
|
|
11184 |
msgid "Optional: Offer PayPal Express as an option at checkout using the <a target=\"_blank\" href=\"%s\" title=\"Paid Memberships Pro - Add PayPal Express Option at Checkout Add On\">Add PayPal Express Add On</a>."
|
11185 |
msgstr ""
|
11186 |
|
@@ -11189,6 +12184,7 @@ msgstr ""
|
|
11189 |
#: classes/gateways/class.pmprogateway_stripe.php:726
|
11190 |
#: classes/gateways/class.pmprogateway_stripe.php:732
|
11191 |
#: classes/gateways/class.pmprogateway_stripe.php:492
|
|
|
11192 |
msgid "Webhook creation failed. You might already have a webhook set up."
|
11193 |
msgstr ""
|
11194 |
|
@@ -11201,6 +12197,7 @@ msgstr ""
|
|
11201 |
#: classes/gateways/class.pmprogateway_stripe.php:798
|
11202 |
#: classes/gateways/class.pmprogateway_stripe.php:872
|
11203 |
#: classes/gateways/class.pmprogateway_stripe.php:536
|
|
|
11204 |
msgid "There was an error deleting the webhook."
|
11205 |
msgstr ""
|
11206 |
|
@@ -11209,6 +12206,7 @@ msgstr ""
|
|
11209 |
#: classes/gateways/class.pmprogateway_stripe.php:842
|
11210 |
#: classes/gateways/class.pmprogateway_stripe.php:848
|
11211 |
#: classes/gateways/class.pmprogateway_stripe.php:564
|
|
|
11212 |
msgid "Webhook creation failed. Please refresh and try again."
|
11213 |
msgstr ""
|
11214 |
|
@@ -11217,6 +12215,7 @@ msgstr ""
|
|
11217 |
#: classes/gateways/class.pmprogateway_stripe.php:898
|
11218 |
#: classes/gateways/class.pmprogateway_stripe.php:904
|
11219 |
#: classes/gateways/class.pmprogateway_stripe.php:592
|
|
|
11220 |
msgid "Verification steps confirmed. Your payment is processing."
|
11221 |
msgstr ""
|
11222 |
|
@@ -11225,6 +12224,7 @@ msgstr ""
|
|
11225 |
#: classes/gateways/class.pmprogateway_stripe.php:1293
|
11226 |
#: classes/gateways/class.pmprogateway_stripe.php:1299
|
11227 |
#: classes/gateways/class.pmprogateway_stripe.php:758
|
|
|
11228 |
msgid "Pay with Credit Card"
|
11229 |
msgstr ""
|
11230 |
|
@@ -11233,6 +12233,7 @@ msgstr ""
|
|
11233 |
#: classes/gateways/class.pmprogateway_stripe.php:1327
|
11234 |
#: classes/gateways/class.pmprogateway_stripe.php:1333
|
11235 |
#: classes/gateways/class.pmprogateway_stripe.php:792
|
|
|
11236 |
msgid "CVC"
|
11237 |
msgstr ""
|
11238 |
|
@@ -11275,6 +12276,9 @@ msgstr ""
|
|
11275 |
#: classes/gateways/class.pmprogateway_stripe.php:4331
|
11276 |
#: classes/gateways/class.pmprogateway_stripe.php:4327
|
11277 |
#: classes/gateways/class.pmprogateway_stripe.php:4333
|
|
|
|
|
|
|
11278 |
msgid "Error: "
|
11279 |
msgstr ""
|
11280 |
|
@@ -11285,6 +12289,8 @@ msgstr ""
|
|
11285 |
#: classes/gateways/class.pmprogateway_stripe.php:4349
|
11286 |
#: classes/gateways/class.pmprogateway_stripe.php:4345
|
11287 |
#: classes/gateways/class.pmprogateway_stripe.php:4347
|
|
|
|
|
11288 |
msgid "Error: Unkown error while refunding charge #%s"
|
11289 |
msgstr ""
|
11290 |
|
@@ -11294,6 +12300,7 @@ msgstr ""
|
|
11294 |
#: classes/gateways/class.pmprogateway_stripe.php:3370
|
11295 |
#: classes/gateways/class.pmprogateway_stripe.php:3366
|
11296 |
#: classes/gateways/class.pmprogateway_stripe.php:3368
|
|
|
11297 |
msgid "Customer authentication is required to complete this transaction. Please complete the verification steps issued by your payment provider."
|
11298 |
msgstr ""
|
11299 |
|
@@ -11311,6 +12318,13 @@ msgstr ""
|
|
11311 |
#: classes/gateways/class.pmprogateway_stripe.php:2546
|
11312 |
#: classes/gateways/class.pmprogateway_stripe.php:2583
|
11313 |
#: classes/gateways/class.pmprogateway_stripe.php:3388
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11314 |
msgid "Customer authentication is required to finish setting up your subscription. Please complete the verification steps issued by your payment provider."
|
11315 |
msgstr ""
|
11316 |
|
@@ -11319,6 +12333,7 @@ msgstr ""
|
|
11319 |
#: classes/gateways/class.pmprogateway_stripe.php:3567
|
11320 |
#: classes/gateways/class.pmprogateway_stripe.php:3573
|
11321 |
#: classes/gateways/class.pmprogateway_stripe.php:1199
|
|
|
11322 |
msgid "Invalid response from the Stripe Connect server."
|
11323 |
msgstr ""
|
11324 |
|
@@ -11328,6 +12343,7 @@ msgstr ""
|
|
11328 |
#: classes/gateways/class.pmprogateway_stripe.php:3595
|
11329 |
#: classes/gateways/class.pmprogateway_stripe.php:3601
|
11330 |
#: classes/gateways/class.pmprogateway_stripe.php:1227
|
|
|
11331 |
msgid "<strong>Error:</strong> PMPro could not connect to the Stripe API. Reason: %s"
|
11332 |
msgstr ""
|
11333 |
|
@@ -11337,6 +12353,7 @@ msgstr ""
|
|
11337 |
#: classes/gateways/class.pmprogateway_stripe.php:3631
|
11338 |
#: classes/gateways/class.pmprogateway_stripe.php:3637
|
11339 |
#: classes/gateways/class.pmprogateway_stripe.php:1263
|
|
|
11340 |
msgid "<strong>Error:</strong> PMPro could not disconnect from the Stripe API. Reason: %s"
|
11341 |
msgstr ""
|
11342 |
|
@@ -11347,6 +12364,8 @@ msgstr ""
|
|
11347 |
#: classes/gateways/class.pmprogateway_stripe.php:3674
|
11348 |
#: classes/gateways/class.pmprogateway_stripe.php:3670
|
11349 |
#: classes/gateways/class.pmprogateway_stripe.php:3672
|
|
|
|
|
11350 |
msgid "Last webhook received at"
|
11351 |
msgstr ""
|
11352 |
|
@@ -11357,6 +12376,8 @@ msgstr ""
|
|
11357 |
#: classes/gateways/class.pmprogateway_stripe.php:3676
|
11358 |
#: classes/gateways/class.pmprogateway_stripe.php:3672
|
11359 |
#: classes/gateways/class.pmprogateway_stripe.php:3674
|
|
|
|
|
11360 |
msgid "No webhooks have been received."
|
11361 |
msgstr ""
|
11362 |
|
@@ -11367,6 +12388,8 @@ msgstr ""
|
|
11367 |
#: classes/gateways/class.pmprogateway_stripe.php:3680
|
11368 |
#: classes/gateways/class.pmprogateway_stripe.php:3676
|
11369 |
#: classes/gateways/class.pmprogateway_stripe.php:3678
|
|
|
|
|
11370 |
msgid "Your webhook may not be working correctly."
|
11371 |
msgstr ""
|
11372 |
|
@@ -11377,6 +12400,8 @@ msgstr ""
|
|
11377 |
#: classes/gateways/class.pmprogateway_stripe.php:3682
|
11378 |
#: classes/gateways/class.pmprogateway_stripe.php:3678
|
11379 |
#: classes/gateways/class.pmprogateway_stripe.php:3680
|
|
|
|
|
11380 |
msgid "Click here for info on setting up your webhook with Stripe."
|
11381 |
msgstr ""
|
11382 |
|
@@ -11411,6 +12436,7 @@ msgstr ""
|
|
11411 |
#: blocks/account-page/block.js:59
|
11412 |
#: js/blocks.build.js:303
|
11413 |
#: js/blocks.build.js:342
|
|
|
11414 |
msgid "Membership Account Page"
|
11415 |
msgstr ""
|
11416 |
|
@@ -11423,6 +12449,7 @@ msgstr ""
|
|
11423 |
#: blocks/cancel-page/block.js:39
|
11424 |
#: js/blocks.build.js:677
|
11425 |
#: js/blocks.build.js:695
|
|
|
11426 |
msgid "Membership Cancel Page"
|
11427 |
msgstr ""
|
11428 |
|
@@ -11435,6 +12462,7 @@ msgstr ""
|
|
11435 |
#: blocks/confirmation-page/block.js:39
|
11436 |
#: js/blocks.build.js:1136
|
11437 |
#: js/blocks.build.js:1154
|
|
|
11438 |
msgid "Membership Confirmation Page"
|
11439 |
msgstr ""
|
11440 |
|
@@ -13225,14 +14253,17 @@ msgid "This email is sent to the member when the trial portion of their membersh
|
|
13225 |
msgstr ""
|
13226 |
|
13227 |
#: includes/email-templates.php:508
|
|
|
13228 |
msgid "Payment action required for your !!sitename!! membership"
|
13229 |
msgstr ""
|
13230 |
|
13231 |
#: includes/email-templates.php:509
|
|
|
13232 |
msgid "Payment Action Required"
|
13233 |
msgstr ""
|
13234 |
|
13235 |
#: includes/email-templates.php:510
|
|
|
13236 |
msgid ""
|
13237 |
"<p>Customer authentication is required to finish setting up your subscription at !!sitename!!.</p>\n"
|
13238 |
"\n"
|
@@ -13241,18 +14272,22 @@ msgid ""
|
|
13241 |
msgstr ""
|
13242 |
|
13243 |
#: includes/email-templates.php:514
|
|
|
13244 |
msgid "This email is sent to the user when an attempted membership checkout requires additional customer authentication."
|
13245 |
msgstr ""
|
13246 |
|
13247 |
#: includes/email-templates.php:517
|
|
|
13248 |
msgid "Payment action required: membership for !!user_login!! at !!sitename!!"
|
13249 |
msgstr ""
|
13250 |
|
13251 |
#: includes/email-templates.php:518
|
|
|
13252 |
msgid "Payment Action Required (admin)"
|
13253 |
msgstr ""
|
13254 |
|
13255 |
#: includes/email-templates.php:519
|
|
|
13256 |
msgid ""
|
13257 |
"<p>A payment at !!sitename!! for !!user_login!! requires additional customer authentication to complete.</p>\n"
|
13258 |
"<p>Below is a copy of the email we sent to !!user_email!! to notify them that they need to complete their payment:</p>\n"
|
@@ -13264,6 +14299,7 @@ msgid ""
|
|
13264 |
msgstr ""
|
13265 |
|
13266 |
#: includes/email-templates.php:526
|
|
|
13267 |
msgid "This email is sent to the site administrator when an attempted membership checkout requires additional customer authentication."
|
13268 |
msgstr ""
|
13269 |
|
@@ -13292,88 +14328,111 @@ msgid "Profile Start Date Issue Detected and Fixed at %s"
|
|
13292 |
msgstr ""
|
13293 |
|
13294 |
#: includes/functions.php:406
|
|
|
13295 |
msgid " and then <strong>%1$s per %2$s for %3$d more %4$s</strong>."
|
13296 |
msgstr ""
|
13297 |
|
13298 |
#: includes/functions.php:408
|
|
|
13299 |
msgid " and then <strong>%1$s every %2$d %3$s for %4$d more payments</strong>."
|
13300 |
msgstr ""
|
13301 |
|
13302 |
#: includes/functions.php:411
|
|
|
13303 |
msgid " and then <strong>%1$s after %2$d %3$s</strong>."
|
13304 |
msgstr ""
|
13305 |
|
13306 |
#: includes/functions.php:416
|
|
|
13307 |
msgid "The price for membership is <strong>%1$s per %2$s</strong>."
|
13308 |
msgstr ""
|
13309 |
|
13310 |
#: includes/functions.php:418
|
|
|
13311 |
msgid "<strong>%1$s per %2$s</strong>."
|
13312 |
msgstr ""
|
13313 |
|
13314 |
#: includes/functions.php:422
|
|
|
13315 |
msgid "The price for membership is <strong>%1$s every %2$d %3$s</strong>."
|
13316 |
msgstr ""
|
13317 |
|
13318 |
#: includes/functions.php:424
|
|
|
13319 |
msgid "<strong>%1$s every %2$d %3$s</strong>."
|
13320 |
msgstr ""
|
13321 |
|
13322 |
#: includes/functions.php:429
|
|
|
13323 |
msgid " and then <strong>%1$s per %2$s</strong>."
|
13324 |
msgstr ""
|
13325 |
|
13326 |
#: includes/functions.php:431
|
|
|
13327 |
msgid " and then <strong>%1$s every %2$d %3$s</strong>."
|
13328 |
msgstr ""
|
13329 |
|
13330 |
#: includes/functions.php:454
|
|
|
13331 |
msgid "After your initial payment, your first %1$d payments will cost %2$s."
|
13332 |
msgstr ""
|
13333 |
|
13334 |
#: includes/functions.php:464
|
13335 |
#: includes/functions.php:565
|
|
|
|
|
13336 |
msgid "Customers in %1$s will be charged %2$s%% tax."
|
13337 |
msgstr ""
|
13338 |
|
13339 |
#: includes/functions.php:522
|
|
|
13340 |
msgid "<strong>%1$s per %2$s for %3$d more %4$s</strong>"
|
13341 |
msgstr ""
|
13342 |
|
13343 |
#: includes/functions.php:524
|
|
|
13344 |
msgid "<strong>%1$s every %2$d %3$s for %4$d more payments</strong>"
|
13345 |
msgstr ""
|
13346 |
|
13347 |
#: includes/functions.php:527
|
|
|
13348 |
msgid "<strong>%1$s after %2$d %3$s</strong>"
|
13349 |
msgstr ""
|
13350 |
|
13351 |
#: includes/functions.php:530
|
|
|
13352 |
msgid "<strong>%1$s every %2$s</strong>"
|
13353 |
msgstr ""
|
13354 |
|
13355 |
#: includes/functions.php:532
|
|
|
13356 |
msgid "<strong>%1$s every %2$d %3$s</strong>"
|
13357 |
msgstr ""
|
13358 |
|
13359 |
#: includes/functions.php:582
|
|
|
13360 |
msgid "Membership expires after %1$d %2$s."
|
13361 |
msgstr ""
|
13362 |
|
13363 |
#: includes/functions.php:601
|
|
|
13364 |
msgid "%1$s membership expires after %2$d %3$s"
|
13365 |
msgstr ""
|
13366 |
|
13367 |
#: includes/functions.php:997
|
|
|
13368 |
msgid "No membership_id specified in pmpro_changeMembershipLevel."
|
13369 |
msgstr ""
|
13370 |
|
13371 |
#: includes/functions.php:1191
|
|
|
13372 |
msgid "Error interacting with database: %s"
|
13373 |
msgstr ""
|
13374 |
|
13375 |
#: includes/functions.php:2433
|
13376 |
#: includes/functions.php:2464
|
|
|
|
|
13377 |
msgid "Sign Up Now"
|
13378 |
msgstr ""
|
13379 |
|
@@ -13487,6 +14546,7 @@ msgstr ""
|
|
13487 |
#: includes/profile.php:843
|
13488 |
#: includes/profile.php:855
|
13489 |
#: includes/profile.php:851
|
|
|
13490 |
msgid "New passwords do not match."
|
13491 |
msgstr ""
|
13492 |
|
@@ -13494,6 +14554,7 @@ msgstr ""
|
|
13494 |
#: includes/profile.php:839
|
13495 |
#: includes/profile.php:851
|
13496 |
#: includes/profile.php:847
|
|
|
13497 |
msgid "Please complete all fields."
|
13498 |
msgstr ""
|
13499 |
|
@@ -13525,6 +14586,7 @@ msgstr ""
|
|
13525 |
#: includes/profile.php:891
|
13526 |
#: includes/profile.php:903
|
13527 |
#: includes/profile.php:899
|
|
|
13528 |
msgid "New Password"
|
13529 |
msgstr ""
|
13530 |
|
@@ -13534,6 +14596,7 @@ msgstr ""
|
|
13534 |
#: includes/profile.php:906
|
13535 |
#: includes/scripts.php:85
|
13536 |
#: includes/profile.php:902
|
|
|
13537 |
msgid "Strength Indicator"
|
13538 |
msgstr ""
|
13539 |
|
@@ -13541,6 +14604,7 @@ msgstr ""
|
|
13541 |
#: includes/profile.php:898
|
13542 |
#: includes/profile.php:910
|
13543 |
#: includes/profile.php:906
|
|
|
13544 |
msgid "Confirm New Password"
|
13545 |
msgstr ""
|
13546 |
|
@@ -13640,6 +14704,8 @@ msgstr ""
|
|
13640 |
#: includes/profile.php:499
|
13641 |
#: includes/profile.php:412
|
13642 |
#: includes/profile.php:495
|
|
|
|
|
13643 |
msgid "Level ID"
|
13644 |
msgstr ""
|
13645 |
|
@@ -13647,6 +14713,7 @@ msgstr ""
|
|
13647 |
#: includes/profile.php:496
|
13648 |
#: includes/profile.php:502
|
13649 |
#: includes/profile.php:498
|
|
|
13650 |
msgid "Date Modified"
|
13651 |
msgstr ""
|
13652 |
|
@@ -13654,6 +14721,7 @@ msgstr ""
|
|
13654 |
#: includes/profile.php:497
|
13655 |
#: includes/profile.php:503
|
13656 |
#: includes/profile.php:499
|
|
|
13657 |
msgid "End Date"
|
13658 |
msgstr ""
|
13659 |
|
@@ -13661,6 +14729,7 @@ msgstr ""
|
|
13661 |
#: includes/profile.php:498
|
13662 |
#: includes/profile.php:504
|
13663 |
#: includes/profile.php:500
|
|
|
13664 |
msgid "Level Cost"
|
13665 |
msgstr ""
|
13666 |
|
@@ -13725,132 +14794,155 @@ msgid "Views Data"
|
|
13725 |
msgstr ""
|
13726 |
|
13727 |
#: includes/privacy.php:520
|
|
|
13728 |
msgid "That post has since been updated."
|
13729 |
msgstr ""
|
13730 |
|
13731 |
#: includes/profile.php:58
|
13732 |
#: pages/invoice.php:43
|
13733 |
#: shortcodes/pmpro_account.php:244
|
|
|
13734 |
msgid "Paid"
|
13735 |
msgstr ""
|
13736 |
|
13737 |
#: includes/profile.php:138
|
13738 |
#: includes/profile.php:114
|
|
|
13739 |
msgid "Send the user an email about this change."
|
13740 |
msgstr ""
|
13741 |
|
13742 |
#: includes/profile.php:144
|
13743 |
#: includes/profile.php:120
|
|
|
13744 |
msgid "Cancel this user's subscription at the gateway."
|
13745 |
msgstr ""
|
13746 |
|
13747 |
#: includes/profile.php:158
|
13748 |
#: includes/profile.php:134
|
|
|
13749 |
msgid "TOS Consent History"
|
13750 |
msgstr ""
|
13751 |
|
13752 |
#: includes/profile.php:410
|
13753 |
#: includes/profile.php:388
|
|
|
13754 |
msgid "Member History"
|
13755 |
msgstr ""
|
13756 |
|
13757 |
#: includes/profile.php:413
|
13758 |
#: includes/profile.php:391
|
|
|
13759 |
msgid "Order History"
|
13760 |
msgstr ""
|
13761 |
|
13762 |
#: includes/profile.php:414
|
13763 |
#: includes/profile.php:392
|
|
|
13764 |
msgid "Membership Levels History"
|
13765 |
msgstr ""
|
13766 |
|
13767 |
#: includes/profile.php:485
|
13768 |
#: includes/profile.php:488
|
13769 |
#: includes/profile.php:475
|
|
|
13770 |
msgid "No membership orders found."
|
13771 |
msgstr ""
|
13772 |
|
13773 |
#: includes/profile.php:537
|
13774 |
#: includes/profile.php:546
|
13775 |
#: includes/profile.php:542
|
|
|
13776 |
msgid "No membership history found."
|
13777 |
msgstr ""
|
13778 |
|
13779 |
#: includes/profile.php:644
|
13780 |
#: includes/profile.php:656
|
13781 |
#: includes/profile.php:652
|
|
|
13782 |
msgid "Log in to edit your profile."
|
13783 |
msgstr ""
|
13784 |
|
13785 |
#: includes/profile.php:679
|
13786 |
#: includes/profile.php:691
|
13787 |
#: includes/profile.php:687
|
|
|
13788 |
msgid "Please enter a display name."
|
13789 |
msgstr ""
|
13790 |
|
13791 |
#: includes/profile.php:689
|
13792 |
#: includes/profile.php:701
|
13793 |
#: includes/profile.php:697
|
|
|
13794 |
msgid "Please enter an email address."
|
13795 |
msgstr ""
|
13796 |
|
13797 |
#: includes/profile.php:691
|
13798 |
#: includes/profile.php:703
|
13799 |
#: includes/profile.php:699
|
|
|
13800 |
msgid "The email address isn’t correct."
|
13801 |
msgstr ""
|
13802 |
|
13803 |
#: includes/profile.php:695
|
13804 |
#: includes/profile.php:707
|
13805 |
#: includes/profile.php:703
|
|
|
13806 |
msgid "This email is already registered, please choose another one."
|
13807 |
msgstr ""
|
13808 |
|
13809 |
#: includes/profile.php:722
|
13810 |
#: includes/profile.php:734
|
13811 |
#: includes/profile.php:730
|
|
|
13812 |
msgid "Your profile has been updated."
|
13813 |
msgstr ""
|
13814 |
|
13815 |
#: includes/profile.php:749
|
13816 |
#: includes/profile.php:761
|
13817 |
#: includes/profile.php:757
|
|
|
13818 |
msgid "Display name publicly as"
|
13819 |
msgstr ""
|
13820 |
|
13821 |
#: includes/profile.php:762
|
13822 |
#: includes/profile.php:774
|
13823 |
#: includes/profile.php:770
|
|
|
13824 |
msgid "Site administrators must use the WordPress dashboard to update their email address."
|
13825 |
msgstr ""
|
13826 |
|
13827 |
#: includes/profile.php:785
|
13828 |
#: includes/profile.php:797
|
13829 |
#: includes/profile.php:793
|
|
|
13830 |
msgid "Update Profile"
|
13831 |
msgstr ""
|
13832 |
|
13833 |
#: includes/profile.php:841
|
13834 |
#: includes/profile.php:853
|
13835 |
#: includes/profile.php:849
|
|
|
13836 |
msgid "Please enter your current password."
|
13837 |
msgstr ""
|
13838 |
|
13839 |
#: includes/profile.php:845
|
13840 |
#: includes/profile.php:857
|
13841 |
#: includes/profile.php:853
|
|
|
13842 |
msgid "Your current password is incorrect."
|
13843 |
msgstr ""
|
13844 |
|
13845 |
#: includes/profile.php:856
|
13846 |
#: includes/profile.php:868
|
13847 |
#: includes/profile.php:864
|
|
|
13848 |
msgid "Your password has been updated."
|
13849 |
msgstr ""
|
13850 |
|
13851 |
#: includes/profile.php:886
|
13852 |
#: includes/profile.php:898
|
13853 |
#: includes/profile.php:894
|
|
|
13854 |
msgid "Current Password"
|
13855 |
msgstr ""
|
13856 |
|
@@ -13862,6 +14954,9 @@ msgstr ""
|
|
13862 |
#: includes/profile.php:896
|
13863 |
#: includes/profile.php:901
|
13864 |
#: includes/profile.php:908
|
|
|
|
|
|
|
13865 |
msgid "Required Field"
|
13866 |
msgstr ""
|
13867 |
|
@@ -13911,24 +15006,28 @@ msgid "Customize this menu per level using the <a href=\"%s\" title=\"Paid Membe
|
|
13911 |
msgstr ""
|
13912 |
|
13913 |
#: pages/billing.php:136
|
|
|
13914 |
msgid "Your billing information cannot be updated at this time."
|
13915 |
msgstr ""
|
13916 |
|
13917 |
#: pages/billing.php:458
|
13918 |
#: shortcodes/pmpro_account.php:68
|
13919 |
#: pages/billing.php:468
|
|
|
13920 |
msgid "Your membership is not active. <a href='%s'>Renew now.</a>"
|
13921 |
msgstr ""
|
13922 |
|
13923 |
#: pages/billing.php:461
|
13924 |
#: shortcodes/pmpro_account.php:71
|
13925 |
#: pages/billing.php:471
|
|
|
13926 |
msgid "You do not have an active membership. <a href='%s'>Register here.</a>"
|
13927 |
msgstr ""
|
13928 |
|
13929 |
#: pages/billing.php:464
|
13930 |
#: shortcodes/pmpro_account.php:74
|
13931 |
#: pages/billing.php:474
|
|
|
13932 |
msgid "You do not have an active membership. <a href='%s'>Choose a membership level.</a>"
|
13933 |
msgstr ""
|
13934 |
|
@@ -13955,6 +15054,7 @@ msgstr ""
|
|
13955 |
#: paid-memberships-pro.php:170
|
13956 |
#: paid-memberships-pro.php:172
|
13957 |
#: paid-memberships-pro.php:173
|
|
|
13958 |
msgid "Default"
|
13959 |
msgstr ""
|
13960 |
|
@@ -13980,6 +15080,7 @@ msgstr ""
|
|
13980 |
#: blocks/account-invoices-section/block.js:39
|
13981 |
#: js/blocks.build.js:119
|
13982 |
#: js/blocks.build.js:137
|
|
|
13983 |
msgid "Membership Account: Invoices"
|
13984 |
msgstr ""
|
13985 |
|
@@ -14018,6 +15119,21 @@ msgstr ""
|
|
14018 |
#: js/blocks.build.js:1335
|
14019 |
#: js/blocks.build.js:1496
|
14020 |
#: js/blocks.build.js:1560
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14021 |
msgid "pmpro"
|
14022 |
msgstr ""
|
14023 |
|
@@ -14033,6 +15149,7 @@ msgstr ""
|
|
14033 |
|
14034 |
#: blocks/account-links-section/block.js:39
|
14035 |
#: js/blocks.build.js:194
|
|
|
14036 |
msgid "Membership Account: Member Links"
|
14037 |
msgstr ""
|
14038 |
|
@@ -14048,6 +15165,7 @@ msgstr ""
|
|
14048 |
|
14049 |
#: blocks/account-membership-section/block.js:39
|
14050 |
#: js/blocks.build.js:251
|
|
|
14051 |
msgid "Membership Account: My Memberships"
|
14052 |
msgstr ""
|
14053 |
|
@@ -14080,6 +15198,7 @@ msgstr ""
|
|
14080 |
#: blocks/account-profile-section/block.js:40
|
14081 |
#: js/blocks.build.js:492
|
14082 |
#: js/blocks.build.js:510
|
|
|
14083 |
msgid "Membership Account: Profile"
|
14084 |
msgstr ""
|
14085 |
|
@@ -14092,6 +15211,7 @@ msgstr ""
|
|
14092 |
#: blocks/billing-page/block.js:39
|
14093 |
#: js/blocks.build.js:549
|
14094 |
#: js/blocks.build.js:567
|
|
|
14095 |
msgid "Membership Billing Page"
|
14096 |
msgstr ""
|
14097 |
|
@@ -14117,11 +15237,16 @@ msgstr ""
|
|
14117 |
|
14118 |
#: blocks/checkout-button/block.js:41
|
14119 |
#: js/blocks.build.js:758
|
|
|
|
|
|
|
14120 |
msgid "buy"
|
14121 |
msgstr ""
|
14122 |
|
14123 |
#: blocks/checkout-button/block.js:42
|
14124 |
#: js/blocks.build.js:758
|
|
|
|
|
14125 |
msgid "level"
|
14126 |
msgstr ""
|
14127 |
|
@@ -14129,6 +15254,7 @@ msgstr ""
|
|
14129 |
#: blocks/checkout-button/inspector.js:31
|
14130 |
#: js/blocks.build.js:790
|
14131 |
#: js/blocks.build.js:891
|
|
|
14132 |
msgid "Button Text"
|
14133 |
msgstr ""
|
14134 |
|
@@ -14136,6 +15262,7 @@ msgstr ""
|
|
14136 |
#: blocks/checkout-button/inspector.js:48
|
14137 |
#: js/blocks.build.js:807
|
14138 |
#: js/blocks.build.js:910
|
|
|
14139 |
msgid "CSS Class"
|
14140 |
msgstr ""
|
14141 |
|
@@ -14158,6 +15285,7 @@ msgstr ""
|
|
14158 |
#: blocks/checkout-page/block.js:52
|
14159 |
#: js/blocks.build.js:973
|
14160 |
#: js/blocks.build.js:1003
|
|
|
14161 |
msgid "Membership Checkout Form"
|
14162 |
msgstr ""
|
14163 |
|
@@ -14183,6 +15311,7 @@ msgstr ""
|
|
14183 |
|
14184 |
#: blocks/invoice-page/block.js:39
|
14185 |
#: js/blocks.build.js:1224
|
|
|
14186 |
msgid "Membership Invoices"
|
14187 |
msgstr ""
|
14188 |
|
@@ -14190,6 +15319,7 @@ msgstr ""
|
|
14190 |
#: blocks/levels-page/block.js:39
|
14191 |
#: js/blocks.build.js:1263
|
14192 |
#: js/blocks.build.js:1281
|
|
|
14193 |
msgid "Membership Levels List"
|
14194 |
msgstr ""
|
14195 |
|
@@ -14222,6 +15352,7 @@ msgstr ""
|
|
14222 |
|
14223 |
#: blocks/login/block.js:38
|
14224 |
#: js/blocks.build.js:1335
|
|
|
14225 |
msgid "log in"
|
14226 |
msgstr ""
|
14227 |
|
@@ -14244,6 +15375,7 @@ msgstr ""
|
|
14244 |
#: blocks/member-profile-edit/block.js:35
|
14245 |
#: js/blocks.build.js:1488
|
14246 |
#: js/blocks.build.js:1504
|
|
|
14247 |
msgid "Member Profile Edit"
|
14248 |
msgstr ""
|
14249 |
|
@@ -14254,11 +15386,22 @@ msgstr ""
|
|
14254 |
|
14255 |
#: blocks/member-profile-edit/block.js:27
|
14256 |
#: js/blocks.build.js:1496
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14257 |
msgid "member"
|
14258 |
msgstr ""
|
14259 |
|
14260 |
#: blocks/member-profile-edit/block.js:28
|
14261 |
#: js/blocks.build.js:1496
|
|
|
14262 |
msgid "profile"
|
14263 |
msgstr ""
|
14264 |
|
@@ -14278,6 +15421,7 @@ msgstr ""
|
|
14278 |
|
14279 |
#: adminpages/discountcodes.php:871
|
14280 |
#: adminpages/discountcodes.php:873
|
|
|
14281 |
msgid "View Orders"
|
14282 |
msgstr ""
|
14283 |
|
@@ -14291,6 +15435,7 @@ msgstr ""
|
|
14291 |
#: classes/gateways/class.pmprogateway_stripe.php:456
|
14292 |
#: classes/gateways/class.pmprogateway_stripe.php:1797
|
14293 |
#: classes/gateways/class.pmprogateway_stripe.php:1795
|
|
|
14294 |
msgid "Connected with Legacy Keys"
|
14295 |
msgstr ""
|
14296 |
|
@@ -14300,6 +15445,7 @@ msgstr ""
|
|
14300 |
#: classes/gateways/class.pmprogateway_stripe.php:466
|
14301 |
#: classes/gateways/class.pmprogateway_stripe.php:1808
|
14302 |
#: classes/gateways/class.pmprogateway_stripe.php:1806
|
|
|
14303 |
msgid "You can continue to use the legacy API keys or choose to upgrade to our new Stripe Connect solution below."
|
14304 |
msgstr ""
|
14305 |
|
@@ -14309,10 +15455,12 @@ msgstr ""
|
|
14309 |
#: classes/gateways/class.pmprogateway_stripe.php:468
|
14310 |
#: classes/gateways/class.pmprogateway_stripe.php:1816
|
14311 |
#: classes/gateways/class.pmprogateway_stripe.php:1814
|
|
|
14312 |
msgid "Read the documentation on switching to Stripe Connect »"
|
14313 |
msgstr ""
|
14314 |
|
14315 |
#: adminpages/emailtemplates.php:181
|
|
|
14316 |
msgid "Custom Level Confirmation Message"
|
14317 |
msgstr ""
|
14318 |
|
@@ -14323,6 +15471,7 @@ msgstr ""
|
|
14323 |
#: classes/class-pmpro-site-health.php:109
|
14324 |
#: classes/class-pmpro-site-health.php:120
|
14325 |
#: classes/class-pmpro-site-health.php:124
|
|
|
14326 |
msgid "No Levels Found"
|
14327 |
msgstr ""
|
14328 |
|
@@ -14330,6 +15479,7 @@ msgstr ""
|
|
14330 |
#: classes/class-pmpro-site-health.php:128
|
14331 |
#: classes/class-pmpro-site-health.php:139
|
14332 |
#: classes/class-pmpro-site-health.php:143
|
|
|
14333 |
msgid "%d discount code"
|
14334 |
msgid_plural "%d discount codes"
|
14335 |
msgstr[0] ""
|
@@ -14339,6 +15489,7 @@ msgstr[1] ""
|
|
14339 |
#: classes/class-pmpro-site-health.php:144
|
14340 |
#: classes/class-pmpro-site-health.php:155
|
14341 |
#: classes/class-pmpro-site-health.php:159
|
|
|
14342 |
msgid "%d order"
|
14343 |
msgid_plural "%d orders"
|
14344 |
msgstr[0] ""
|
@@ -14348,18 +15499,24 @@ msgstr[1] ""
|
|
14348 |
#: classes/class-pmpro-site-health.php:161
|
14349 |
#: classes/class-pmpro-site-health.php:172
|
14350 |
#: classes/class-pmpro-site-health.php:176
|
|
|
14351 |
msgid "%s (gateway not registered)"
|
14352 |
msgstr ""
|
14353 |
|
14354 |
#: classes/class-pmpro-site-health.php:174
|
14355 |
#: classes/class-pmpro-site-health.php:185
|
14356 |
#: classes/class-pmpro-site-health.php:189
|
|
|
|
|
14357 |
msgid "Legacy Keys"
|
14358 |
msgstr ""
|
14359 |
|
14360 |
#: classes/class-pmpro-site-health.php:178
|
14361 |
#: classes/class-pmpro-site-health.php:189
|
14362 |
#: classes/class-pmpro-site-health.php:193
|
|
|
|
|
|
|
14363 |
msgid "Stripe Connect"
|
14364 |
msgstr ""
|
14365 |
|
@@ -14367,12 +15524,16 @@ msgstr ""
|
|
14367 |
#: classes/class-pmpro-site-health.php:202
|
14368 |
#: classes/class-pmpro-site-health.php:213
|
14369 |
#: classes/class-pmpro-site-health.php:217
|
|
|
|
|
14370 |
msgid "%s (environment not registered)"
|
14371 |
msgstr ""
|
14372 |
|
14373 |
#: classes/class-pmpro-site-health.php:226
|
14374 |
#: classes/class-pmpro-site-health.php:268
|
14375 |
#: classes/class-pmpro-site-health.php:272
|
|
|
|
|
14376 |
msgid "Unable to verify"
|
14377 |
msgstr ""
|
14378 |
|
@@ -14380,22 +15541,26 @@ msgstr ""
|
|
14380 |
#: classes/class-pmpro-site-health.php:345
|
14381 |
#: classes/class-pmpro-site-health.php:349
|
14382 |
#: classes/class-pmpro-site-health.php:346
|
|
|
14383 |
msgid "missing"
|
14384 |
msgstr ""
|
14385 |
|
14386 |
#: classes/gateways/class.pmprogateway_stripe.php:533
|
14387 |
#: classes/gateways/class.pmprogateway_stripe.php:539
|
14388 |
#: classes/gateways/class.pmprogateway_stripe.php:303
|
|
|
14389 |
msgid "Having trouble connecting through the button above or otherwise need to use your own API keys?"
|
14390 |
msgstr ""
|
14391 |
|
14392 |
#: classes/gateways/class.pmprogateway_stripe.php:534
|
14393 |
#: classes/gateways/class.pmprogateway_stripe.php:540
|
14394 |
#: classes/gateways/class.pmprogateway_stripe.php:304
|
|
|
14395 |
msgid "Click here to use the legacy API settings."
|
14396 |
msgstr ""
|
14397 |
|
14398 |
#: adminpages/license.php:37
|
|
|
14399 |
msgid "There was an issue validating your license key: %s"
|
14400 |
msgstr ""
|
14401 |
|
@@ -14453,12 +15618,14 @@ msgstr ""
|
|
14453 |
#: classes/class-pmpro-site-health.php:365
|
14454 |
#: classes/class-pmpro-site-health.php:406
|
14455 |
#: classes/class-pmpro-site-health.php:403
|
|
|
14456 |
msgid "PMPRO_GETFILE_ENABLED is not set"
|
14457 |
msgstr ""
|
14458 |
|
14459 |
#: classes/class-pmpro-site-health.php:369
|
14460 |
#: classes/class-pmpro-site-health.php:410
|
14461 |
#: classes/class-pmpro-site-health.php:407
|
|
|
14462 |
msgid "PMPRO_GETFILE_ENABLED is off"
|
14463 |
msgstr ""
|
14464 |
|
@@ -14468,6 +15635,7 @@ msgstr ""
|
|
14468 |
#: classes/class-pmpro-site-health.php:457
|
14469 |
#: classes/class-pmpro-site-health.php:420
|
14470 |
#: classes/class-pmpro-site-health.php:454
|
|
|
14471 |
msgid "Unable to access .htaccess file"
|
14472 |
msgstr ""
|
14473 |
|
@@ -14477,6 +15645,7 @@ msgstr ""
|
|
14477 |
#: classes/class-pmpro-site-health.php:461
|
14478 |
#: classes/class-pmpro-site-health.php:424
|
14479 |
#: classes/class-pmpro-site-health.php:458
|
|
|
14480 |
msgid "Off - No .htaccess file"
|
14481 |
msgstr ""
|
14482 |
|
@@ -14486,54 +15655,64 @@ msgstr ""
|
|
14486 |
#: classes/class-pmpro-site-health.php:472
|
14487 |
#: classes/class-pmpro-site-health.php:430
|
14488 |
#: classes/class-pmpro-site-health.php:469
|
|
|
|
|
14489 |
msgid "Off"
|
14490 |
msgstr ""
|
14491 |
|
14492 |
#: classes/class-pmpro-site-health.php:395
|
14493 |
#: classes/class-pmpro-site-health.php:436
|
14494 |
#: classes/class-pmpro-site-health.php:433
|
|
|
14495 |
msgid "On - .htaccess contains services/getfile.php usage"
|
14496 |
msgstr ""
|
14497 |
|
14498 |
#: classes/class-pmpro-site-health.php:426
|
14499 |
#: classes/class-pmpro-site-health.php:467
|
14500 |
#: classes/class-pmpro-site-health.php:464
|
|
|
14501 |
msgid "On - Browser cache enabled for HTML (ExpiresByType text/html), this may interfere with Content Restriction after Login. Remove that line from your .htaccess to resolve this problem."
|
14502 |
msgstr ""
|
14503 |
|
14504 |
#: classes/class-pmpro-site-health.php:428
|
14505 |
#: classes/class-pmpro-site-health.php:469
|
14506 |
#: classes/class-pmpro-site-health.php:466
|
|
|
14507 |
msgid "On - Browser cache enabled for HTML (ExpiresDefault), this may interfere with Content Restriction after Login. Remove that line from your .htaccess to resolve this problem."
|
14508 |
msgstr ""
|
14509 |
|
14510 |
#: classes/class-pmpro-site-health.php:443
|
14511 |
#: classes/class-pmpro-site-health.php:484
|
14512 |
#: classes/class-pmpro-site-health.php:481
|
|
|
14513 |
msgid "Cron Limit"
|
14514 |
msgstr ""
|
14515 |
|
14516 |
#: classes/class-pmpro-site-health.php:444
|
14517 |
#: classes/class-pmpro-site-health.php:485
|
14518 |
#: classes/class-pmpro-site-health.php:482
|
|
|
14519 |
msgid "Default Membership Level"
|
14520 |
msgstr ""
|
14521 |
|
14522 |
#: classes/class-pmpro-site-health.php:445
|
14523 |
#: classes/class-pmpro-site-health.php:486
|
14524 |
#: classes/class-pmpro-site-health.php:483
|
|
|
14525 |
msgid "Use Sessions"
|
14526 |
msgstr ""
|
14527 |
|
14528 |
#: classes/class-pmpro-site-health.php:450
|
14529 |
#: classes/class-pmpro-site-health.php:491
|
14530 |
#: classes/class-pmpro-site-health.php:488
|
|
|
14531 |
msgid "Authorize.net Silent Post Debug Mode"
|
14532 |
msgstr ""
|
14533 |
|
14534 |
#: classes/class-pmpro-site-health.php:453
|
14535 |
#: classes/class-pmpro-site-health.php:494
|
14536 |
#: classes/class-pmpro-site-health.php:491
|
|
|
14537 |
msgid "Braintree Webhook Debug Mode"
|
14538 |
msgstr ""
|
14539 |
|
@@ -14544,41 +15723,52 @@ msgstr ""
|
|
14544 |
#: classes/class-pmpro-site-health.php:500
|
14545 |
#: classes/class-pmpro-site-health.php:503
|
14546 |
#: classes/class-pmpro-site-health.php:494
|
|
|
|
|
|
|
14547 |
msgid "PayPal IPN Debug Mode"
|
14548 |
msgstr ""
|
14549 |
|
14550 |
#: classes/class-pmpro-site-health.php:465
|
14551 |
#: classes/class-pmpro-site-health.php:506
|
14552 |
#: classes/class-pmpro-site-health.php:503
|
|
|
14553 |
msgid "Stripe Webhook Delay"
|
14554 |
msgstr ""
|
14555 |
|
14556 |
#: classes/class-pmpro-site-health.php:466
|
14557 |
#: classes/class-pmpro-site-health.php:507
|
14558 |
#: classes/class-pmpro-site-health.php:504
|
|
|
14559 |
msgid "Stripe Webhook Debug Mode"
|
14560 |
msgstr ""
|
14561 |
|
14562 |
#: classes/class-pmpro-site-health.php:469
|
14563 |
#: classes/class-pmpro-site-health.php:510
|
14564 |
#: classes/class-pmpro-site-health.php:507
|
|
|
14565 |
msgid "2Checkout INS Debug Mode"
|
14566 |
msgstr ""
|
14567 |
|
14568 |
#: adminpages/advancedsettings.php:243
|
|
|
14569 |
msgid "Enable Spam Protection?"
|
14570 |
msgstr ""
|
14571 |
|
14572 |
#: adminpages/advancedsettings.php:249
|
|
|
14573 |
msgid "Yes - Enable Spam Protection"
|
14574 |
msgstr ""
|
14575 |
|
14576 |
#: adminpages/advancedsettings.php:251
|
|
|
14577 |
msgid "Block IPs from checkout if there are more than %d failures within %d minutes."
|
14578 |
msgstr ""
|
14579 |
|
14580 |
#: adminpages/dashboard.php:186
|
14581 |
#: adminpages/dashboard.php:188
|
|
|
|
|
14582 |
msgid "View Plans and Pricing"
|
14583 |
msgstr ""
|
14584 |
|
@@ -14593,69 +15783,87 @@ msgstr ""
|
|
14593 |
|
14594 |
#: classes/class-pmpro-site-health.php:389
|
14595 |
#: classes/class-pmpro-site-health.php:386
|
|
|
14596 |
msgid "No Membership Pages Found"
|
14597 |
msgstr ""
|
14598 |
|
14599 |
#: classes/gateways/class.pmprogateway_stripe.php:847
|
|
|
14600 |
msgid "Edit customer in Stripe"
|
14601 |
msgstr ""
|
14602 |
|
14603 |
#: classes/gateways/class.pmprogateway_stripe.php:1387
|
|
|
14604 |
msgid "Error processing setup intent."
|
14605 |
msgstr ""
|
14606 |
|
14607 |
#: classes/gateways/class.pmprogateway_stripe.php:1402
|
|
|
14608 |
msgid "Error processing payment intent."
|
14609 |
msgstr ""
|
14610 |
|
14611 |
#: classes/gateways/class.pmprogateway_stripe.php:1424
|
14612 |
#: classes/gateways/class.pmprogateway_stripe.php:1679
|
14613 |
#: classes/gateways/class.pmprogateway_stripe.php:1677
|
|
|
|
|
14614 |
msgid "Error retrieving payment method."
|
14615 |
msgstr ""
|
14616 |
|
14617 |
#: classes/gateways/class.pmprogateway_stripe.php:1432
|
14618 |
#: classes/gateways/class.pmprogateway_stripe.php:1687
|
14619 |
#: classes/gateways/class.pmprogateway_stripe.php:1685
|
|
|
|
|
14620 |
msgid "Error updating default payment method."
|
14621 |
msgstr ""
|
14622 |
|
14623 |
#: classes/gateways/class.pmprogateway_stripe.php:1460
|
|
|
14624 |
msgid "Error creating subscription for customer."
|
14625 |
msgstr ""
|
14626 |
|
14627 |
#: classes/gateways/class.pmprogateway_stripe.php:1693
|
14628 |
#: classes/gateways/class.pmprogateway_stripe.php:1691
|
|
|
14629 |
msgid "Error updating payment method for subscription."
|
14630 |
msgstr ""
|
14631 |
|
14632 |
#: classes/gateways/class.pmprogateway_stripe.php:2088
|
14633 |
#: classes/gateways/class.pmprogateway_stripe.php:2086
|
14634 |
#: classes/gateways/class.pmprogateway_stripe.php:2087
|
|
|
14635 |
msgid "Error updating customer record with Stripe."
|
14636 |
msgstr ""
|
14637 |
|
14638 |
#: classes/gateways/class.pmprogateway_stripe.php:2099
|
14639 |
#: classes/gateways/class.pmprogateway_stripe.php:2097
|
14640 |
#: classes/gateways/class.pmprogateway_stripe.php:2098
|
|
|
14641 |
msgid "Error creating customer record with Stripe."
|
14642 |
msgstr ""
|
14643 |
|
14644 |
#: classes/gateways/class.pmprogateway_stripe.php:2424
|
14645 |
#: classes/gateways/class.pmprogateway_stripe.php:2420
|
14646 |
#: classes/gateways/class.pmprogateway_stripe.php:2422
|
|
|
|
|
14647 |
msgid "Cannot find product for membership level."
|
14648 |
msgstr ""
|
14649 |
|
14650 |
#: classes/gateways/class.pmprogateway_stripe.php:2430
|
14651 |
#: classes/gateways/class.pmprogateway_stripe.php:2426
|
14652 |
#: classes/gateways/class.pmprogateway_stripe.php:2428
|
|
|
|
|
14653 |
msgid "Cannot get price."
|
14654 |
msgstr ""
|
14655 |
|
14656 |
#: classes/gateways/class.pmprogateway_stripe.php:2580
|
14657 |
#: classes/gateways/class.pmprogateway_stripe.php:2576
|
14658 |
#: classes/gateways/class.pmprogateway_stripe.php:2578
|
|
|
|
|
14659 |
msgid "Cannot reuse an old setup intent."
|
14660 |
msgstr ""
|
14661 |
|
@@ -14663,6 +15871,9 @@ msgstr ""
|
|
14663 |
#: classes/gateways/class.pmprogateway_stripe.php:2616
|
14664 |
#: classes/gateways/class.pmprogateway_stripe.php:2610
|
14665 |
#: classes/gateways/class.pmprogateway_stripe.php:2612
|
|
|
|
|
|
|
14666 |
msgid "Error adding metadata to setup intent."
|
14667 |
msgstr ""
|
14668 |
|
@@ -14675,6 +15886,8 @@ msgstr ""
|
|
14675 |
#: classes/gateways/class.pmprogateway_stripe.php:2716
|
14676 |
#: classes/gateways/class.pmprogateway_stripe.php:2712
|
14677 |
#: classes/gateways/class.pmprogateway_stripe.php:2714
|
|
|
|
|
14678 |
msgid "Remove"
|
14679 |
msgstr ""
|
14680 |
|
@@ -14695,52 +15908,65 @@ msgid "PMPro Builder"
|
|
14695 |
msgstr ""
|
14696 |
|
14697 |
#: adminpages/advancedsettings.php:497
|
|
|
14698 |
msgid "To delete all PMPro data from the database, set to Yes, deactivate PMPro, and then click to delete PMPro from the plugins page."
|
14699 |
msgstr ""
|
14700 |
|
14701 |
#: adminpages/dashboard.php:181
|
14702 |
#: adminpages/license.php:43
|
|
|
14703 |
msgid "Your <strong>%1$s</strong> key is active. %1$s accounts include access to documentation and free downloads."
|
14704 |
msgstr ""
|
14705 |
|
14706 |
#: adminpages/license.php:96
|
|
|
14707 |
msgid "<strong>Paid Memberships Pro offers plans for automatic updates of Add Ons and premium support.</strong> These plans include a license key which we recommend for all public websites running Paid Memberships Pro. A license key allows you to automatically install Add Ons included in your plan and update active Add Ons included in your plan when a new security, bug fix, or feature enhancement is released."
|
14708 |
msgstr ""
|
14709 |
|
14710 |
#: adminpages/license.php:100
|
|
|
14711 |
msgid "<strong>Need help?</strong> Your license allows you to open new tickets in our private support area. Purchases are backed by a 30 day, no questions asked refund policy."
|
14712 |
msgstr ""
|
14713 |
|
14714 |
#: adminpages/orders.php:1549
|
|
|
14715 |
msgid "renewal"
|
14716 |
msgstr ""
|
14717 |
|
14718 |
#: adminpages/reports/sales.php:406
|
|
|
14719 |
msgid "Renewals"
|
14720 |
msgstr ""
|
14721 |
|
14722 |
#: adminpages/reports/sales.php:407
|
|
|
14723 |
msgid "New %s"
|
14724 |
msgstr ""
|
14725 |
|
14726 |
#: adminpages/reports/sales.php:409
|
14727 |
#: adminpages/reports/sales.php:411
|
|
|
|
|
14728 |
msgid "Average: %s"
|
14729 |
msgstr ""
|
14730 |
|
14731 |
#: adminpages/reports/sales.php:526
|
|
|
14732 |
msgid "New:"
|
14733 |
msgstr ""
|
14734 |
|
14735 |
#: adminpages/reports/sales.php:529
|
|
|
14736 |
msgid "Renewals:"
|
14737 |
msgstr ""
|
14738 |
|
14739 |
#: adminpages/reports/sales.php:532
|
|
|
14740 |
msgid "Total:"
|
14741 |
msgstr ""
|
14742 |
|
14743 |
#: adminpages/reports/sales.php:545
|
|
|
14744 |
msgid "%s %s for %s"
|
14745 |
msgstr ""
|
14746 |
|
@@ -14765,19 +15991,26 @@ msgid "PMPro News and Updates"
|
|
14765 |
msgstr ""
|
14766 |
|
14767 |
#: classes/class-pmpro-site-health.php:276
|
|
|
|
|
14768 |
msgid "No template overrides"
|
14769 |
msgstr ""
|
14770 |
|
14771 |
#: classes/class-pmpro-site-health.php:282
|
|
|
|
|
14772 |
msgid "Empty override folder -- no template overrides"
|
14773 |
msgstr ""
|
14774 |
|
14775 |
#: classes/gateways/class.pmprogateway_stripe.php:1868
|
|
|
14776 |
msgid "Note: You are using the free Stripe payment gateway integration. This includes an additional 1% fee for payment processing. This fee is removed by activating a premium PMPro license."
|
14777 |
msgstr ""
|
14778 |
|
14779 |
#: classes/gateways/class.pmprogateway_stripe.php:2363
|
14780 |
#: classes/gateways/class.pmprogateway_stripe.php:2365
|
|
|
|
|
14781 |
msgid "Could not create price."
|
14782 |
msgstr ""
|
14783 |
|
@@ -14837,6 +16070,7 @@ msgid "Paid Memberships Pro Order History"
|
|
14837 |
msgstr ""
|
14838 |
|
14839 |
#: includes/privacy.php:512
|
|
|
14840 |
msgid "%s agreed to %s (ID #%d, last modified %s) on %s."
|
14841 |
msgstr ""
|
14842 |
|
@@ -14844,3 +16078,914 @@ msgstr ""
|
|
14844 |
#: js/blocks.build.js:1433
|
14845 |
msgid "Assign the menu under Appearance > Menus."
|
14846 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
# This file is distributed under the same license as the Paid Memberships Pro plugin.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Paid Memberships Pro 2.8\n"
|
6 |
"Report-Msgid-Bugs-To: info@paidmembershipspro.com\n"
|
7 |
"Last-Translator: Paid Memberships Pro <info@paidmembershipspro.com>\n"
|
8 |
"Language-Team: Paid Memberships Pro <info@paidmembershipspro.com>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"POT-Creation-Date: 2022-05-05T20:36:56+00:00\n"
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
"X-Generator: WP-CLI 2.6.0\n"
|
15 |
"X-Domain: paid-memberships-pro\n"
|
92 |
#: adminpages/orders.php:1022
|
93 |
#: adminpages/orders.php:1014
|
94 |
#: includes/metaboxes.php:19
|
95 |
+
#: adminpages/orders.php:1015
|
96 |
+
#: adminpages/orders.php:1103
|
97 |
msgid "All"
|
98 |
msgstr "Tot"
|
99 |
|
137 |
#: adminpages/membershiplevels.php:296
|
138 |
#: adminpages/membershiplevels.php:298
|
139 |
#: adminpages/membershiplevels.php:359
|
140 |
+
#: adminpages/membershiplevels.php:357
|
141 |
msgid "Description"
|
142 |
msgstr "Descripció"
|
143 |
|
218 |
#: adminpages/discountcodes.php:866
|
219 |
#: adminpages/orders.php:1417
|
220 |
#: adminpages/orders.php:1419
|
221 |
+
#: adminpages/orders.php:1418
|
222 |
+
#: adminpages/orders.php:1420
|
223 |
+
#: adminpages/discountcodes.php:869
|
224 |
+
#: adminpages/discountcodes.php:871
|
225 |
+
#: adminpages/membershiplevels.php:885
|
226 |
+
#: adminpages/orders.php:1533
|
227 |
+
#: adminpages/orders.php:1535
|
228 |
msgid "Delete"
|
229 |
msgstr "Esborra"
|
230 |
|
289 |
#: adminpages/orders.php:1545
|
290 |
#: adminpages/addons.php:250
|
291 |
#: adminpages/orders.php:912
|
292 |
+
#: adminpages/orders.php:583
|
293 |
+
#: adminpages/orders.php:913
|
294 |
+
#: adminpages/orders.php:1537
|
295 |
+
#: adminpages/orders.php:1546
|
296 |
+
#: adminpages/orders.php:704
|
297 |
+
#: adminpages/orders.php:996
|
298 |
+
#: adminpages/orders.php:1689
|
299 |
+
#: adminpages/orders.php:1698
|
300 |
+
#: classes/class.pmproemail.php:261
|
301 |
+
#: classes/class.pmproemail.php:327
|
302 |
+
#: includes/profile.php:167
|
303 |
+
#: includes/profile.php:483
|
304 |
+
#: includes/profile.php:484
|
305 |
+
#: includes/profile.php:556
|
306 |
+
#: includes/profile.php:557
|
307 |
+
#: includes/profile.php:558
|
308 |
msgid "N/A"
|
309 |
msgstr "N/A"
|
310 |
|
497 |
#: includes/profile.php:758
|
498 |
#: adminpages/orders.php:1437
|
499 |
#: adminpages/orders.php:1440
|
500 |
+
#: adminpages/orders.php:392
|
501 |
+
#: adminpages/orders.php:1438
|
502 |
+
#: adminpages/orders.php:1441
|
503 |
+
#: adminpages/orders.php:440
|
504 |
+
#: adminpages/orders.php:1553
|
505 |
+
#: adminpages/orders.php:1556
|
506 |
+
#: includes/profile.php:478
|
507 |
+
#: includes/profile.php:798
|
508 |
msgid "Email"
|
509 |
msgstr "Correu electrònic"
|
510 |
|
520 |
#: adminpages/advancedsettings.php:42
|
521 |
#: adminpages/advancedsettings.php:68
|
522 |
#: adminpages/advancedsettings.php:69
|
523 |
+
#: adminpages/advancedsettings.php:76
|
524 |
msgid "Your advanced settings have been updated."
|
525 |
msgstr "La vostra configuració avançada s’han actualitzat."
|
526 |
|
541 |
#: adminpages/advancedsettings.php:116
|
542 |
#: includes/updates/upgrade_1.php:13
|
543 |
#: adminpages/advancedsettings.php:118
|
544 |
+
#: adminpages/advancedsettings.php:126
|
545 |
msgid "This content is for members only. Visit the site and log in/register to read."
|
546 |
msgstr "Aquest contingut és només per a subscriptors. Visita el lloc i registra’t/log in per a llegir."
|
547 |
|
560 |
#: adminpages/advancedsettings.php:132
|
561 |
#: includes/adminpages.php:73
|
562 |
#: adminpages/advancedsettings.php:134
|
563 |
+
#: adminpages/advancedsettings.php:142
|
564 |
msgid "Advanced Settings"
|
565 |
msgstr "Configuració Avançada"
|
566 |
|
569 |
#: adminpages/advancedsettings.php:92
|
570 |
#: adminpages/advancedsettings.php:164
|
571 |
#: adminpages/advancedsettings.php:166
|
572 |
+
#: adminpages/advancedsettings.php:173
|
573 |
msgid "Message for Logged-in Non-members"
|
574 |
msgstr "Missatge per a No subscriptors “Logged-in”"
|
575 |
|
578 |
#: adminpages/advancedsettings.php:96
|
579 |
#: adminpages/advancedsettings.php:168
|
580 |
#: adminpages/advancedsettings.php:170
|
581 |
+
#: adminpages/advancedsettings.php:177
|
582 |
msgid "This message replaces the post content for non-members. Available variables"
|
583 |
msgstr "Aquest missatge reemplaça el contingut de l’entrada per als no membres. Hi ha variables disponibles"
|
584 |
|
587 |
#: adminpages/advancedsettings.php:101
|
588 |
#: adminpages/advancedsettings.php:173
|
589 |
#: adminpages/advancedsettings.php:175
|
590 |
+
#: adminpages/advancedsettings.php:182
|
591 |
msgid "Message for Logged-out Users"
|
592 |
msgstr "Missatge per als usuaris desconnectats (Logged-out)"
|
593 |
|
596 |
#: adminpages/advancedsettings.php:105
|
597 |
#: adminpages/advancedsettings.php:177
|
598 |
#: adminpages/advancedsettings.php:179
|
599 |
+
#: adminpages/advancedsettings.php:186
|
600 |
msgid "This message replaces the post content for logged-out visitors."
|
601 |
msgstr "Aquest missatge remplaça el contingut del post per a visitants desconnectats (logged-out)"
|
602 |
|
605 |
#: adminpages/advancedsettings.php:110
|
606 |
#: adminpages/advancedsettings.php:182
|
607 |
#: adminpages/advancedsettings.php:184
|
608 |
+
#: adminpages/advancedsettings.php:191
|
609 |
msgid "Message for RSS Feed"
|
610 |
msgstr "Missatge per a RSS Feed"
|
611 |
|
614 |
#: adminpages/advancedsettings.php:114
|
615 |
#: adminpages/advancedsettings.php:186
|
616 |
#: adminpages/advancedsettings.php:188
|
617 |
+
#: adminpages/advancedsettings.php:195
|
618 |
msgid "This message replaces the post content in RSS feeds."
|
619 |
msgstr "Aquest missatge reemplaça el contingut del seu missatge en els canals RSS."
|
620 |
|
621 |
#: adminpages/advancedsettings.php:122
|
622 |
#: adminpages/advancedsettings.php:199
|
623 |
#: adminpages/advancedsettings.php:201
|
624 |
+
#: adminpages/advancedsettings.php:208
|
625 |
msgid "Filter searches and archives?"
|
626 |
msgstr "Filtra recerques i arxius?"
|
627 |
|
628 |
#: adminpages/advancedsettings.php:126
|
629 |
#: adminpages/advancedsettings.php:203
|
630 |
#: adminpages/advancedsettings.php:205
|
631 |
+
#: adminpages/advancedsettings.php:212
|
632 |
msgid "No - Non-members will see restricted posts/pages in searches and archives."
|
633 |
msgstr "No - No subscriptors veuran posts restringits/pàgines en les recerques i els arxius."
|
634 |
|
635 |
#: adminpages/advancedsettings.php:127
|
636 |
#: adminpages/advancedsettings.php:204
|
637 |
#: adminpages/advancedsettings.php:206
|
638 |
+
#: adminpages/advancedsettings.php:213
|
639 |
msgid "Yes - Only members will see restricted posts/pages in searches and archives."
|
640 |
msgstr "Sí - Només els subscriptors veuran posts restringits/pàgines en les recerques i els arxius."
|
641 |
|
644 |
#: adminpages/advancedsettings.php:120
|
645 |
#: adminpages/advancedsettings.php:210
|
646 |
#: adminpages/advancedsettings.php:212
|
647 |
+
#: adminpages/advancedsettings.php:219
|
648 |
msgid "Show Excerpts to Non-Members?"
|
649 |
msgstr "Mostrar extractes als no membres?"
|
650 |
|
653 |
#: adminpages/advancedsettings.php:124
|
654 |
#: adminpages/advancedsettings.php:214
|
655 |
#: adminpages/advancedsettings.php:216
|
656 |
+
#: adminpages/advancedsettings.php:223
|
657 |
msgid "No - Hide excerpts."
|
658 |
msgstr "No - Amaga extractes."
|
659 |
|
662 |
#: adminpages/advancedsettings.php:125
|
663 |
#: adminpages/advancedsettings.php:215
|
664 |
#: adminpages/advancedsettings.php:217
|
665 |
+
#: adminpages/advancedsettings.php:224
|
666 |
msgid "Yes - Show excerpts."
|
667 |
msgstr "Sí - Mostra extractes."
|
668 |
|
669 |
#: adminpages/advancedsettings.php:144
|
670 |
#: adminpages/advancedsettings.php:333
|
671 |
#: adminpages/advancedsettings.php:348
|
672 |
+
#: adminpages/advancedsettings.php:355
|
673 |
msgid "Hide Ads From Members?"
|
674 |
msgstr "Amaga els anuncis als subscriptors?"
|
675 |
|
735 |
#: adminpages/advancedsettings.php:494
|
736 |
#: classes/gateways/class.pmprogateway_stripe.php:404
|
737 |
#: classes/gateways/class.pmprogateway_stripe.php:418
|
738 |
+
#: adminpages/paymentsettings.php:279
|
739 |
+
#: adminpages/advancedsettings.php:254
|
740 |
+
#: adminpages/advancedsettings.php:267
|
741 |
+
#: adminpages/advancedsettings.php:359
|
742 |
+
#: adminpages/advancedsettings.php:418
|
743 |
+
#: adminpages/advancedsettings.php:526
|
744 |
+
#: adminpages/membershiplevels.php:939
|
745 |
+
#: adminpages/paymentsettings.php:277
|
746 |
+
#: classes/gateways/class.pmprogateway_stripe.php:430
|
747 |
+
#: classes/gateways/class.pmprogateway_stripe.php:444
|
748 |
+
#: includes/profile.php:78
|
749 |
msgid "No"
|
750 |
msgstr "No"
|
751 |
|
754 |
#: adminpages/advancedsettings.php:136
|
755 |
#: adminpages/advancedsettings.php:338
|
756 |
#: adminpages/advancedsettings.php:353
|
757 |
+
#: adminpages/advancedsettings.php:360
|
758 |
msgid "Hide Ads From All Members"
|
759 |
msgstr "Amaga Anuncis de tots els subscriptors"
|
760 |
|
763 |
#: adminpages/advancedsettings.php:137
|
764 |
#: adminpages/advancedsettings.php:339
|
765 |
#: adminpages/advancedsettings.php:354
|
766 |
+
#: adminpages/advancedsettings.php:361
|
767 |
msgid "Hide Ads From Certain Members"
|
768 |
msgstr "Amaga els anuncis a certs subscriptors"
|
769 |
|
778 |
#: adminpages/advancedsettings.php:145
|
779 |
#: adminpages/advancedsettings.php:346
|
780 |
#: adminpages/advancedsettings.php:361
|
781 |
+
#: adminpages/advancedsettings.php:368
|
782 |
msgid "To hide ads in your template code, use code like the following"
|
783 |
msgstr "Per amagar els anuncis al codi de la plantilla, utilitzeu el codi següent"
|
784 |
|
787 |
#: adminpages/advancedsettings.php:156
|
788 |
#: adminpages/advancedsettings.php:355
|
789 |
#: adminpages/advancedsettings.php:370
|
790 |
+
#: adminpages/advancedsettings.php:377
|
791 |
msgid "Choose Levels to Hide Ads From"
|
792 |
msgstr "Escull els nivells on amagar els anuncis"
|
793 |
|
806 |
#: adminpages/advancedsettings.php:390
|
807 |
#: adminpages/advancedsettings.php:392
|
808 |
#: adminpages/advancedsettings.php:407
|
809 |
+
#: adminpages/advancedsettings.php:414
|
810 |
msgid "multisite only"
|
811 |
msgstr "només “multisite”"
|
812 |
|
861 |
#: adminpages/advancedsettings.php:412
|
862 |
#: classes/gateways/class.pmprogateway_stripe.php:406
|
863 |
#: classes/gateways/class.pmprogateway_stripe.php:420
|
864 |
+
#: adminpages/paymentsettings.php:280
|
865 |
+
#: adminpages/advancedsettings.php:419
|
866 |
+
#: adminpages/membershiplevels.php:934
|
867 |
+
#: adminpages/paymentsettings.php:278
|
868 |
+
#: classes/gateways/class.pmprogateway_stripe.php:432
|
869 |
+
#: classes/gateways/class.pmprogateway_stripe.php:446
|
870 |
+
#: includes/profile.php:79
|
871 |
msgid "Yes"
|
872 |
msgstr "Sí"
|
873 |
|
876 |
#: adminpages/advancedsettings.php:202
|
877 |
#: adminpages/advancedsettings.php:241
|
878 |
#: adminpages/advancedsettings.php:256
|
879 |
+
#: adminpages/advancedsettings.php:263
|
880 |
msgid "Use reCAPTCHA?"
|
881 |
msgstr "Utilitzar reCAPTCHA?"
|
882 |
|
892 |
#: adminpages/advancedsettings.php:208
|
893 |
#: adminpages/advancedsettings.php:247
|
894 |
#: adminpages/advancedsettings.php:262
|
895 |
+
#: adminpages/advancedsettings.php:269
|
896 |
msgid "Yes - All memberships."
|
897 |
msgstr "Sí - Tots els subscriptors"
|
898 |
|
901 |
#: adminpages/advancedsettings.php:210
|
902 |
#: adminpages/advancedsettings.php:249
|
903 |
#: adminpages/advancedsettings.php:264
|
904 |
+
#: adminpages/advancedsettings.php:271
|
905 |
msgid "A free reCAPTCHA key is required."
|
906 |
msgstr "Una clau reCAPTCHA gratuïta és necessària"
|
907 |
|
910 |
#: adminpages/advancedsettings.php:210
|
911 |
#: adminpages/advancedsettings.php:249
|
912 |
#: adminpages/advancedsettings.php:264
|
913 |
+
#: adminpages/advancedsettings.php:271
|
914 |
msgid "Click here to signup for reCAPTCHA"
|
915 |
msgstr "Clica aquí per a signar per al reCAPTCHA"
|
916 |
|
967 |
#: adminpages/advancedsettings.php:542
|
968 |
#: adminpages/pagesettings.php:508
|
969 |
#: adminpages/pagesettings.php:512
|
970 |
+
#: adminpages/paymentsettings.php:316
|
971 |
+
#: adminpages/advancedsettings.php:574
|
972 |
+
#: adminpages/pagesettings.php:511
|
973 |
+
#: adminpages/paymentsettings.php:314
|
974 |
msgid "Save Settings"
|
975 |
msgstr "Desa la configuració"
|
976 |
|
1046 |
#: adminpages/discountcodes.php:796
|
1047 |
#: adminpages/discountcodes.php:354
|
1048 |
#: adminpages/discountcodes.php:798
|
1049 |
+
#: adminpages/discountcodes.php:799
|
1050 |
msgid "Code not found."
|
1051 |
msgstr "No s’ha trobat el codi."
|
1052 |
|
1069 |
#: adminpages/discountcodes.php:735
|
1070 |
#: adminpages/discountcodes.php:377
|
1071 |
#: adminpages/discountcodes.php:737
|
1072 |
+
#: adminpages/discountcodes.php:738
|
1073 |
msgid "Add New Discount Code"
|
1074 |
msgstr "Afegeix un nou codi de descompte"
|
1075 |
|
1116 |
#: adminpages/discountcodes.php:446
|
1117 |
#: adminpages/discountcodes.php:785
|
1118 |
#: adminpages/orders.php:1331
|
1119 |
+
#: adminpages/orders.php:1332
|
1120 |
+
#: adminpages/reports/login.php:182
|
1121 |
+
#: adminpages/templates/orders-email.php:49
|
1122 |
+
#: adminpages/templates/orders-print.php:78
|
1123 |
+
#: adminpages/membershiplevels.php:345
|
1124 |
+
#: adminpages/membershiplevels.php:805
|
1125 |
msgid "ID"
|
1126 |
msgstr "ID"
|
1127 |
|
1136 |
#: adminpages/orders.php:415
|
1137 |
#: adminpages/orders.php:421
|
1138 |
#: adminpages/discountcodes.php:447
|
1139 |
+
#: adminpages/orders.php:422
|
1140 |
msgid "This will be generated when you save."
|
1141 |
msgstr "Es generarà quan salvis."
|
1142 |
|
1168 |
#: adminpages/discountcodes.php:786
|
1169 |
#: adminpages/orders.php:1332
|
1170 |
#: adminpages/dashboard.php:292
|
1171 |
+
#: adminpages/orders.php:429
|
1172 |
+
#: adminpages/orders.php:1333
|
1173 |
+
#: adminpages/discountcodes.php:787
|
1174 |
+
#: adminpages/orders.php:475
|
1175 |
+
#: adminpages/orders.php:1426
|
1176 |
msgid "Code"
|
1177 |
msgstr "Codi"
|
1178 |
|
1186 |
#: adminpages/discountcodes.php:489
|
1187 |
#: includes/profile.php:501
|
1188 |
#: includes/profile.php:497
|
1189 |
+
#: includes/profile.php:537
|
1190 |
msgid "Start Date"
|
1191 |
msgstr "Data d’inici"
|
1192 |
|
1223 |
#: classes/gateways/class.pmprogateway_stripe.php:1320
|
1224 |
#: classes/gateways/class.pmprogateway_stripe.php:1326
|
1225 |
#: classes/gateways/class.pmprogateway_stripe.php:785
|
1226 |
+
#: pages/billing.php:381
|
1227 |
+
#: classes/gateways/class.pmprogateway_braintree.php:486
|
1228 |
+
#: classes/gateways/class.pmprogateway_stripe.php:893
|
1229 |
msgid "Expiration Date"
|
1230 |
msgstr "Data final (d’expiració)"
|
1231 |
|
1240 |
#: adminpages/discountcodes.php:787
|
1241 |
#: adminpages/discountcodes.php:525
|
1242 |
#: adminpages/discountcodes.php:789
|
1243 |
+
#: adminpages/discountcodes.php:790
|
1244 |
msgid "Uses"
|
1245 |
msgstr "Utilitza"
|
1246 |
|
1274 |
#: adminpages/discountcodes.php:574
|
1275 |
#: adminpages/membershiplevels.php:401
|
1276 |
#: adminpages/discountcodes.php:576
|
1277 |
+
#: adminpages/membershiplevels.php:399
|
1278 |
msgid "Initial Payment"
|
1279 |
msgstr "Pagament inicial"
|
1280 |
|
1290 |
#: adminpages/discountcodes.php:585
|
1291 |
#: adminpages/membershiplevels.php:412
|
1292 |
#: adminpages/discountcodes.php:587
|
1293 |
+
#: adminpages/membershiplevels.php:410
|
1294 |
msgid "The initial amount collected at registration."
|
1295 |
msgstr "El pagament inicial efectuat en el registre"
|
1296 |
|
1306 |
#: adminpages/discountcodes.php:590
|
1307 |
#: adminpages/membershiplevels.php:417
|
1308 |
#: adminpages/discountcodes.php:592
|
1309 |
+
#: adminpages/membershiplevels.php:415
|
1310 |
msgid "Recurring Subscription"
|
1311 |
msgstr "Subscripció recurrent"
|
1312 |
|
1322 |
#: adminpages/discountcodes.php:591
|
1323 |
#: adminpages/membershiplevels.php:418
|
1324 |
#: adminpages/discountcodes.php:593
|
1325 |
+
#: adminpages/membershiplevels.php:416
|
1326 |
msgid "Check if this level has a recurring subscription payment."
|
1327 |
msgstr "Clica si aquest nivell té un pagament de subscripció recurrent"
|
1328 |
|
1337 |
#: adminpages/discountcodes.php:595
|
1338 |
#: adminpages/membershiplevels.php:422
|
1339 |
#: adminpages/discountcodes.php:597
|
1340 |
+
#: adminpages/membershiplevels.php:420
|
1341 |
msgid "Billing Amount"
|
1342 |
msgstr "Total a facturar"
|
1343 |
|
1375 |
#: classes/gateways/class.pmprogateway_stripe.php:2641
|
1376 |
#: classes/gateways/class.pmprogateway_stripe.php:2637
|
1377 |
#: classes/gateways/class.pmprogateway_stripe.php:2639
|
1378 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2635
|
1379 |
+
#: adminpages/discountcodes.php:700
|
1380 |
+
#: adminpages/membershiplevels.php:435
|
1381 |
+
#: adminpages/membershiplevels.php:581
|
1382 |
+
#: classes/gateways/class.pmprogateway_stripe.php:3092
|
1383 |
msgid "Day(s)"
|
1384 |
msgstr "Dia(es)"
|
1385 |
|
1417 |
#: classes/gateways/class.pmprogateway_stripe.php:2643
|
1418 |
#: classes/gateways/class.pmprogateway_stripe.php:2639
|
1419 |
#: classes/gateways/class.pmprogateway_stripe.php:2641
|
1420 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2637
|
1421 |
+
#: adminpages/discountcodes.php:700
|
1422 |
+
#: adminpages/membershiplevels.php:435
|
1423 |
+
#: adminpages/membershiplevels.php:581
|
1424 |
+
#: classes/gateways/class.pmprogateway_stripe.php:3094
|
1425 |
msgid "Month(s)"
|
1426 |
msgstr "Mes(os)"
|
1427 |
|
1459 |
#: classes/gateways/class.pmprogateway_stripe.php:2642
|
1460 |
#: classes/gateways/class.pmprogateway_stripe.php:2638
|
1461 |
#: classes/gateways/class.pmprogateway_stripe.php:2640
|
1462 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2636
|
1463 |
+
#: adminpages/discountcodes.php:700
|
1464 |
+
#: adminpages/membershiplevels.php:435
|
1465 |
+
#: adminpages/membershiplevels.php:581
|
1466 |
+
#: classes/gateways/class.pmprogateway_stripe.php:3093
|
1467 |
msgid "Week(s)"
|
1468 |
msgstr "Setmana(es)"
|
1469 |
|
1501 |
#: classes/gateways/class.pmprogateway_stripe.php:2644
|
1502 |
#: classes/gateways/class.pmprogateway_stripe.php:2640
|
1503 |
#: classes/gateways/class.pmprogateway_stripe.php:2642
|
1504 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2638
|
1505 |
+
#: adminpages/discountcodes.php:700
|
1506 |
+
#: adminpages/membershiplevels.php:435
|
1507 |
+
#: adminpages/membershiplevels.php:581
|
1508 |
+
#: classes/gateways/class.pmprogateway_stripe.php:3095
|
1509 |
msgid "Year(s)"
|
1510 |
msgstr "Any(s)"
|
1511 |
|
1521 |
#: adminpages/discountcodes.php:618
|
1522 |
#: adminpages/membershiplevels.php:446
|
1523 |
#: adminpages/discountcodes.php:620
|
1524 |
+
#: adminpages/membershiplevels.php:444
|
1525 |
msgid "The amount to be billed one cycle after the initial payment."
|
1526 |
msgstr "Total a facturar en un cicle després del pagament inicial"
|
1527 |
|
1537 |
#: adminpages/discountcodes.php:628
|
1538 |
#: adminpages/membershiplevels.php:465
|
1539 |
#: adminpages/discountcodes.php:630
|
1540 |
+
#: adminpages/membershiplevels.php:463
|
1541 |
msgid "Billing Cycle Limit"
|
1542 |
msgstr "Límit de cicle de facturació"
|
1543 |
|
1553 |
#: adminpages/discountcodes.php:632
|
1554 |
#: adminpages/membershiplevels.php:469
|
1555 |
#: adminpages/discountcodes.php:634
|
1556 |
+
#: adminpages/membershiplevels.php:467
|
1557 |
msgid "The <strong>total</strong> number of recurring billing cycles for this level, including the trial period (if applicable) but not including the initial payment. Set to zero if membership is indefinite."
|
1558 |
msgstr "El <strong>total</strong> de cicles de pagament recurrent per a aquest nivell, incloent el període de prova (si s’aplica) però sense incloure el pagament inicial. Deixa-ho a zero si la subscripció és infinita."
|
1559 |
|
1569 |
#: adminpages/discountcodes.php:651
|
1570 |
#: adminpages/membershiplevels.php:488
|
1571 |
#: adminpages/discountcodes.php:653
|
1572 |
+
#: adminpages/discountcodes.php:654
|
1573 |
+
#: adminpages/membershiplevels.php:487
|
1574 |
msgid "Custom Trial"
|
1575 |
msgstr "Prova personalitzada"
|
1576 |
|
1587 |
#: adminpages/discountcodes.php:653
|
1588 |
#: adminpages/membershiplevels.php:490
|
1589 |
#: adminpages/discountcodes.php:655
|
1590 |
+
#: adminpages/discountcodes.php:656
|
1591 |
+
#: adminpages/membershiplevels.php:489
|
1592 |
msgid "Check to add a custom trial period."
|
1593 |
msgstr "Clica per afegir un període de prova personalitzat."
|
1594 |
|
1605 |
#: adminpages/discountcodes.php:661
|
1606 |
#: adminpages/membershiplevels.php:510
|
1607 |
#: adminpages/discountcodes.php:663
|
1608 |
+
#: adminpages/discountcodes.php:664
|
1609 |
msgid "Trial Billing Amount"
|
1610 |
msgstr "Facturació per al període de prova"
|
1611 |
|
1622 |
#: adminpages/discountcodes.php:672
|
1623 |
#: adminpages/membershiplevels.php:521
|
1624 |
#: adminpages/discountcodes.php:674
|
1625 |
+
#: adminpages/discountcodes.php:675
|
1626 |
msgid "for the first"
|
1627 |
msgstr "per al primer"
|
1628 |
|
1639 |
#: adminpages/discountcodes.php:674
|
1640 |
#: adminpages/membershiplevels.php:523
|
1641 |
#: adminpages/discountcodes.php:676
|
1642 |
+
#: adminpages/discountcodes.php:677
|
1643 |
msgid "subscription payments"
|
1644 |
msgstr "pagaments de subscripció"
|
1645 |
|
1657 |
#: adminpages/discountcodes.php:686
|
1658 |
#: adminpages/membershiplevels.php:559
|
1659 |
#: adminpages/discountcodes.php:688
|
1660 |
+
#: adminpages/discountcodes.php:689
|
1661 |
msgid "Membership Expiration"
|
1662 |
msgstr "Venciment de la subscripció"
|
1663 |
|
1674 |
#: adminpages/discountcodes.php:687
|
1675 |
#: adminpages/membershiplevels.php:560
|
1676 |
#: adminpages/discountcodes.php:689
|
1677 |
+
#: adminpages/discountcodes.php:690
|
1678 |
msgid "Check this to set when membership access expires."
|
1679 |
msgstr "Clica per afegir quan expira l’accés del subscriptor"
|
1680 |
|
1693 |
#: adminpages/membershiplevels.php:575
|
1694 |
#: pages/confirmation.php:140
|
1695 |
#: adminpages/discountcodes.php:693
|
1696 |
+
#: adminpages/discountcodes.php:694
|
1697 |
+
#: adminpages/membershiplevels.php:576
|
1698 |
msgid "Expires In"
|
1699 |
msgstr "Expira En"
|
1700 |
|
1711 |
#: adminpages/discountcodes.php:707
|
1712 |
#: adminpages/membershiplevels.php:586
|
1713 |
#: adminpages/discountcodes.php:709
|
1714 |
+
#: adminpages/discountcodes.php:710
|
1715 |
+
#: adminpages/membershiplevels.php:587
|
1716 |
msgid "Set the duration of membership access. Note that the any future payments (recurring subscription, if any) will be cancelled when the membership expires."
|
1717 |
msgstr "Indiqueu la durada de l’accés de subcriptors. Recordeu que qualsevol pagament futur (recurrent de subscripció, si escau) es cancel·larà quan la subscripció caduqui."
|
1718 |
|
1722 |
#: adminpages/discountcodes.php:556
|
1723 |
#: adminpages/discountcodes.php:734
|
1724 |
#: adminpages/discountcodes.php:736
|
1725 |
+
#: adminpages/discountcodes.php:737
|
1726 |
msgid "Memberships Discount Codes"
|
1727 |
msgstr "Codis de descompte per a subscripcions"
|
1728 |
|
1732 |
#: adminpages/discountcodes.php:566
|
1733 |
#: adminpages/discountcodes.php:771
|
1734 |
#: adminpages/discountcodes.php:773
|
1735 |
+
#: adminpages/discountcodes.php:768
|
1736 |
msgid "Search Discount Codes"
|
1737 |
msgstr "Cerca codis de descompte"
|
1738 |
|
1745 |
#: adminpages/reports/login.php:83
|
1746 |
#: adminpages/discountcodes.php:774
|
1747 |
#: adminpages/discountcodes.php:776
|
1748 |
+
#: adminpages/discountcodes.php:771
|
1749 |
msgid "Search"
|
1750 |
msgstr "Cerca"
|
1751 |
|
1755 |
#: adminpages/discountcodes.php:587
|
1756 |
#: adminpages/discountcodes.php:785
|
1757 |
#: adminpages/discountcodes.php:787
|
1758 |
+
#: adminpages/discountcodes.php:788
|
1759 |
msgid "Starts"
|
1760 |
msgstr "Comença"
|
1761 |
|
1784 |
#: adminpages/discountcodes.php:788
|
1785 |
#: includes/profile.php:65
|
1786 |
#: adminpages/dashboard.php:228
|
1787 |
+
#: adminpages/reports/login.php:187
|
1788 |
+
#: adminpages/discountcodes.php:789
|
1789 |
+
#: includes/profile.php:75
|
1790 |
msgid "Expires"
|
1791 |
msgstr "Acaba"
|
1792 |
|
1797 |
#: adminpages/admin_header.php:253
|
1798 |
#: adminpages/discountcodes.php:788
|
1799 |
#: adminpages/discountcodes.php:790
|
1800 |
+
#: adminpages/discountcodes.php:791
|
1801 |
msgid "Levels"
|
1802 |
msgstr "Nivells"
|
1803 |
|
1839 |
#: adminpages/orders.php:1565
|
1840 |
#: adminpages/orders.php:1564
|
1841 |
#: adminpages/orders.php:1556
|
1842 |
+
#: adminpages/orders.php:1557
|
1843 |
+
#: adminpages/orders.php:1726
|
1844 |
msgid "edit"
|
1845 |
msgstr "Edita"
|
1846 |
|
1899 |
#: adminpages/emailsettings.php:70
|
1900 |
#: adminpages/emailsettings.php:61
|
1901 |
#: adminpages/emailsettings.php:88
|
1902 |
+
#: adminpages/emailsettings.php:87
|
1903 |
msgid "By default, system generated emails are sent from <em><strong>wordpress@yourdomain.com</strong></em>. You can update this from address using the fields below."
|
1904 |
msgstr "Per defecte, els correus electrònics generats són enviats desde <em><strong>wordpress@yourdomain.com</strong></em>. Pots modificar-ho utilitzant els camps que hi ha a continuació."
|
1905 |
|
1911 |
#: adminpages/emailsettings.php:78
|
1912 |
#: adminpages/emailsettings.php:69
|
1913 |
#: adminpages/emailsettings.php:94
|
1914 |
+
#: adminpages/emailsettings.php:93
|
1915 |
msgid "From Email"
|
1916 |
msgstr "Del Correu Electrònic"
|
1917 |
|
1918 |
#: adminpages/emailsettings.php:86
|
1919 |
#: adminpages/emailsettings.php:77
|
1920 |
#: adminpages/emailsettings.php:102
|
1921 |
+
#: adminpages/emailsettings.php:101
|
1922 |
msgid "From Name"
|
1923 |
msgstr "Del Nom"
|
1924 |
|
1925 |
#: adminpages/emailsettings.php:94
|
1926 |
#: adminpages/emailsettings.php:110
|
1927 |
+
#: adminpages/emailsettings.php:109
|
1928 |
msgid "Only Filter PMPro Emails?"
|
1929 |
msgstr "Filtra només els correus de PMPro?"
|
1930 |
|
1931 |
#: adminpages/emailsettings.php:98
|
1932 |
#: adminpages/emailsettings.php:114
|
1933 |
+
#: adminpages/emailsettings.php:113
|
1934 |
#, php-format
|
1935 |
msgid "If unchecked, all emails from \"WordPress <%s>\" will be filtered to use the above settings."
|
1936 |
msgstr "Si no està clicat, tots els correus de \"WordPress <%s>\" seran filtrats per utilitzar la configuració de dalt."
|
2099 |
#: adminpages/membershiplevels.php:808
|
2100 |
#: adminpages/reports/history.php:184
|
2101 |
#: adminpages/reports/login.php:181
|
2102 |
+
#: adminpages/reports/login.php:184
|
2103 |
+
#: adminpages/membershiplevels.php:352
|
2104 |
+
#: adminpages/membershiplevels.php:806
|
2105 |
msgid "Name"
|
2106 |
msgstr "Nom"
|
2107 |
|
2109 |
#: adminpages/membershiplevels.php:314
|
2110 |
#: adminpages/membershiplevels.php:316
|
2111 |
#: adminpages/membershiplevels.php:377
|
2112 |
+
#: adminpages/membershiplevels.php:375
|
2113 |
msgid "Confirmation Message"
|
2114 |
msgstr "Missatge de confirmació"
|
2115 |
|
2123 |
#: adminpages/membershiplevels.php:639
|
2124 |
#: adminpages/membershiplevels.php:397
|
2125 |
#: adminpages/membershiplevels.php:809
|
2126 |
+
#: adminpages/membershiplevels.php:395
|
2127 |
+
#: adminpages/membershiplevels.php:807
|
2128 |
msgid "Billing Details"
|
2129 |
msgstr "Detalls de facturació"
|
2130 |
|
2148 |
#: classes/gateways/class.pmprogateway_stripe.php:2700
|
2149 |
#: classes/gateways/class.pmprogateway_stripe.php:2696
|
2150 |
#: classes/gateways/class.pmprogateway_stripe.php:2698
|
2151 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2694
|
2152 |
+
#: adminpages/membershiplevels.php:431
|
2153 |
+
#: classes/gateways/class.pmprogateway_stripe.php:3151
|
2154 |
msgid "per"
|
2155 |
msgstr "per"
|
2156 |
|
2169 |
#: adminpages/discountcodes.php:620
|
2170 |
#: adminpages/membershiplevels.php:448
|
2171 |
#: adminpages/discountcodes.php:622
|
2172 |
+
#: adminpages/membershiplevels.php:446
|
2173 |
msgid "Braintree integration currently only supports billing periods of \"Month\" or \"Year\"."
|
2174 |
msgstr "La integració de Braintree actualment només suporta períodes de facturació de “mes” o “any”."
|
2175 |
|
2187 |
#: adminpages/membershiplevels.php:393
|
2188 |
#: adminpages/membershiplevels.php:396
|
2189 |
#: adminpages/membershiplevels.php:454
|
2190 |
+
#: adminpages/membershiplevels.php:452
|
2191 |
msgid "After saving this level, make note of the ID and create a \"Plan\" in your Braintree dashboard with the same settings and the \"Plan ID\" set to <em>pmpro_#</em>, where # is the level ID."
|
2192 |
msgstr "Després de salvar aquest nivell, anota’t la ID i crea un \"Plan\" al dashboard de Braintree amb la mateixa configuració i el \"Plan ID\" set to <em>pmpro_#</em>, on # és el level ID."
|
2193 |
|
2210 |
#: adminpages/membershiplevels.php:454
|
2211 |
#: adminpages/membershiplevels.php:459
|
2212 |
#: classes/gateways/class.pmprogateway_cybersource.php:89
|
2213 |
+
#: adminpages/membershiplevels.php:452
|
2214 |
+
#: adminpages/membershiplevels.php:457
|
2215 |
msgid "Note"
|
2216 |
msgstr "Nota"
|
2217 |
|
2231 |
#: adminpages/discountcodes.php:634
|
2232 |
#: adminpages/membershiplevels.php:471
|
2233 |
#: adminpages/discountcodes.php:636
|
2234 |
+
#: adminpages/membershiplevels.php:469
|
2235 |
msgid "Stripe integration currently does not support billing limits. You can still set an expiration date below."
|
2236 |
msgstr "La integració d’Stripe no suporta límits de facturació actualment. Pots posar una data de límit de facturació a sota."
|
2237 |
|
2243 |
#: adminpages/discountcodes.php:655
|
2244 |
#: adminpages/membershiplevels.php:493
|
2245 |
#: adminpages/discountcodes.php:657
|
2246 |
+
#: adminpages/discountcodes.php:658
|
2247 |
+
#: adminpages/membershiplevels.php:492
|
2248 |
msgid "2Checkout integration does not support custom trials. You can do one period trials by setting an initial payment different from the billing amount."
|
2249 |
msgstr "La integració de 2Checkout no suporta proves personalitzades. Pots afegir un període de prova configurant un pagament inicial diferent del total de facturació."
|
2250 |
|
2257 |
#: adminpages/discountcodes.php:676
|
2258 |
#: adminpages/membershiplevels.php:525
|
2259 |
#: adminpages/discountcodes.php:678
|
2260 |
+
#: adminpages/discountcodes.php:679
|
2261 |
msgid "Stripe integration currently does not support trial amounts greater than $0."
|
2262 |
msgstr "La integració d’Stripe no suporta preus de prova majors que $0."
|
2263 |
|
2270 |
#: adminpages/discountcodes.php:678
|
2271 |
#: adminpages/membershiplevels.php:527
|
2272 |
#: adminpages/discountcodes.php:680
|
2273 |
+
#: adminpages/discountcodes.php:681
|
2274 |
msgid "Braintree integration currently does not support trial amounts greater than $0."
|
2275 |
msgstr "La integració de Braintree no suporta preus de prova majors que $0."
|
2276 |
|
2283 |
#: adminpages/discountcodes.php:680
|
2284 |
#: adminpages/membershiplevels.php:529
|
2285 |
#: adminpages/discountcodes.php:682
|
2286 |
+
#: adminpages/discountcodes.php:683
|
2287 |
msgid "Payflow integration currently does not support trial amounts greater than $0."
|
2288 |
msgstr "La integració de Payflow no suporta preus de prova majors que $0."
|
2289 |
|
2298 |
#: adminpages/dashboard.php:140
|
2299 |
#: adminpages/membershiplevels.php:550
|
2300 |
#: adminpages/advancedsettings.php:343
|
2301 |
+
#: adminpages/advancedsettings.php:350
|
2302 |
msgid "Other Settings"
|
2303 |
msgstr "Configuració, altres"
|
2304 |
|
2334 |
#: adminpages/advancedsettings.php:194
|
2335 |
#: adminpages/membershiplevels.php:624
|
2336 |
#: adminpages/advancedsettings.php:196
|
2337 |
+
#: adminpages/advancedsettings.php:203
|
2338 |
+
#: adminpages/membershiplevels.php:625
|
2339 |
msgid "Content Settings"
|
2340 |
msgstr "Configuració de continguts"
|
2341 |
|
2347 |
#: adminpages/membershiplevels.php:497
|
2348 |
#: adminpages/membershiplevels.php:500
|
2349 |
#: adminpages/membershiplevels.php:654
|
2350 |
+
#: adminpages/membershiplevels.php:655
|
2351 |
msgid "Categories"
|
2352 |
msgstr "Categories"
|
2353 |
|
2354 |
#: adminpages/membershiplevels.php:516
|
2355 |
#: adminpages/membershiplevels.php:517
|
2356 |
#: adminpages/membershiplevels.php:674
|
2357 |
+
#: adminpages/membershiplevels.php:675
|
2358 |
msgid "Save Level"
|
2359 |
msgstr "Salva nivell"
|
2360 |
|
2389 |
#: includes/profile.php:918
|
2390 |
#: adminpages/orders.php:960
|
2391 |
#: pages/billing.php:436
|
2392 |
+
#: adminpages/discountcodes.php:729
|
2393 |
+
#: adminpages/orders.php:961
|
2394 |
+
#: pages/billing.php:443
|
2395 |
+
#: adminpages/discountcodes.php:730
|
2396 |
+
#: adminpages/membershiplevels.php:676
|
2397 |
+
#: adminpages/orders.php:1044
|
2398 |
+
#: includes/profile.php:834
|
2399 |
+
#: includes/profile.php:958
|
2400 |
msgid "Cancel"
|
2401 |
msgstr "Cancel·la"
|
2402 |
|
2437 |
#: adminpages/membershiplevels.php:579
|
2438 |
#: adminpages/membershiplevels.php:631
|
2439 |
#: adminpages/membershiplevels.php:797
|
2440 |
+
#: adminpages/membershiplevels.php:795
|
2441 |
msgid "Drag and drop membership levels to reorder them on the Levels page."
|
2442 |
msgstr "Arrossega i deixa anar els nivells de subscripció per a reordenar-los a la pàgina de nivells"
|
2443 |
|
2462 |
#: pages/confirmation.php:99
|
2463 |
#: pages/invoice.php:89
|
2464 |
#: shortcodes/pmpro_account.php:44
|
2465 |
+
#: pages/billing.php:102
|
2466 |
+
#: adminpages/membershiplevels.php:808
|
2467 |
+
#: adminpages/orders.php:838
|
2468 |
msgid "Expiration"
|
2469 |
msgstr "Data final (d’expiració)"
|
2470 |
|
2477 |
#: adminpages/membershiplevels.php:587
|
2478 |
#: adminpages/membershiplevels.php:641
|
2479 |
#: adminpages/membershiplevels.php:811
|
2480 |
+
#: adminpages/membershiplevels.php:809
|
2481 |
msgid "Allow Signups"
|
2482 |
msgstr "Permet nous “signups”"
|
2483 |
|
2491 |
#: adminpages/membershiplevels.php:656
|
2492 |
#: adminpages/membershiplevels.php:840
|
2493 |
#: adminpages/membershiplevels.php:921
|
2494 |
+
#: adminpages/membershiplevels.php:919
|
2495 |
msgid "FREE"
|
2496 |
msgstr "GRATUÏT"
|
2497 |
|
2505 |
#: adminpages/membershiplevels.php:665
|
2506 |
#: adminpages/membershiplevels.php:849
|
2507 |
#: adminpages/membershiplevels.php:930
|
2508 |
+
#: adminpages/membershiplevels.php:928
|
2509 |
msgid "After"
|
2510 |
msgstr "Després"
|
2511 |
|
2551 |
#: includes/adminpages.php:149
|
2552 |
#: includes/adminpages.php:153
|
2553 |
#: adminpages/memberslist.php:20
|
2554 |
+
#: adminpages/memberslist.php:21
|
2555 |
msgid "Members List"
|
2556 |
msgstr "Llistat de subscriptors"
|
2557 |
|
2564 |
#: adminpages/orders.php:994
|
2565 |
#: adminpages/orders.php:1000
|
2566 |
#: adminpages/orders.php:992
|
2567 |
+
#: adminpages/orders.php:993
|
2568 |
+
#: adminpages/memberslist.php:22
|
2569 |
+
#: adminpages/orders.php:1076
|
2570 |
msgid "Export to CSV"
|
2571 |
msgstr "Exporta a CSV"
|
2572 |
|
2594 |
#: adminpages/orders.php:1012
|
2595 |
#: adminpages/reports/sales.php:311
|
2596 |
#: classes/class-pmpro-members-list-table.php:651
|
2597 |
+
#: adminpages/orders.php:1013
|
2598 |
+
#: classes/class-pmpro-members-list-table.php:657
|
2599 |
+
#: adminpages/orders.php:1101
|
2600 |
+
#: adminpages/reports/memberships.php:330
|
2601 |
msgid "Show"
|
2602 |
msgstr "Mostra"
|
2603 |
|
2624 |
#: classes/class.pmproemail.php:195
|
2625 |
#: classes/class.pmproemail.php:235
|
2626 |
#: classes/class-pmpro-members-list-table.php:653
|
2627 |
+
#: adminpages/reports/login.php:106
|
2628 |
+
#: classes/class-pmpro-members-list-table.php:659
|
2629 |
+
#: adminpages/reports/login.php:112
|
2630 |
+
#: adminpages/reports/memberships.php:354
|
2631 |
msgid "All Levels"
|
2632 |
msgstr "Tots els nivells"
|
2633 |
|
2637 |
#: classes/class-pmpro-members-list-table.php:234
|
2638 |
#: classes/class-pmpro-members-list-table.php:634
|
2639 |
#: classes/class-pmpro-members-list-table.php:663
|
2640 |
+
#: classes/class-pmpro-members-list-table.php:669
|
2641 |
msgid "Cancelled Members"
|
2642 |
msgstr "Subscriptors cancel·lats"
|
2643 |
|
2647 |
#: classes/class-pmpro-members-list-table.php:235
|
2648 |
#: classes/class-pmpro-members-list-table.php:635
|
2649 |
#: classes/class-pmpro-members-list-table.php:664
|
2650 |
+
#: classes/class-pmpro-members-list-table.php:670
|
2651 |
msgid "Expired Members"
|
2652 |
msgstr "Subscriptors “expirats”"
|
2653 |
|
2658 |
#: classes/class-pmpro-members-list-table.php:236
|
2659 |
#: classes/class-pmpro-members-list-table.php:636
|
2660 |
#: classes/class-pmpro-members-list-table.php:665
|
2661 |
+
#: classes/class-pmpro-members-list-table.php:671
|
2662 |
msgid "Old Members"
|
2663 |
msgstr "Subscriptors antics"
|
2664 |
|
2670 |
#: adminpages/memberslist.php:28
|
2671 |
#: adminpages/reports/history.php:115
|
2672 |
#: adminpages/reports/history.php:119
|
2673 |
+
#: adminpages/reports/login.php:127
|
2674 |
+
#: adminpages/memberslist.php:27
|
2675 |
+
#: adminpages/reports/login.php:106
|
2676 |
msgid "Search Members"
|
2677 |
msgstr "Cerca Subscriptors"
|
2678 |
|
2710 |
#: adminpages/dashboard.php:223
|
2711 |
#: adminpages/dashboard.php:225
|
2712 |
#: classes/class.memberorder.php:1003
|
2713 |
+
#: adminpages/reports/login.php:183
|
2714 |
+
#: adminpages/emailtemplates.php:122
|
2715 |
+
#: classes/class.memberorder.php:1012
|
2716 |
msgid "Username"
|
2717 |
msgstr "Nom d’usuari"
|
2718 |
|
2755 |
#: pages/checkout.php:230
|
2756 |
#: pages/confirmation.php:78
|
2757 |
#: pages/invoice.php:68
|
2758 |
+
#: pages/billing.php:162
|
2759 |
+
#: adminpages/orders.php:568
|
2760 |
msgid "Billing Address"
|
2761 |
msgstr "Adreça de Facturació"
|
2762 |
|
2792 |
#: adminpages/reports/login.php:183
|
2793 |
#: adminpages/dashboard.php:225
|
2794 |
#: adminpages/dashboard.php:227
|
2795 |
+
#: adminpages/reports/login.php:186
|
2796 |
msgid "Joined"
|
2797 |
msgstr "Afegit"
|
2798 |
|
2816 |
#: adminpages/dashboard.php:232
|
2817 |
#: classes/class-pmpro-members-list-table.php:225
|
2818 |
#: adminpages/dashboard.php:234
|
2819 |
+
#: adminpages/reports/login.php:266
|
2820 |
msgid "No members found."
|
2821 |
msgstr "No s’han trobat subscriptors"
|
2822 |
|
2831 |
#: adminpages/reports/login.php:263
|
2832 |
#: classes/class-pmpro-members-list-table.php:228
|
2833 |
#: classes/class-pmpro-members-list-table.php:227
|
2834 |
+
#: adminpages/reports/login.php:266
|
2835 |
msgid "Search all levels"
|
2836 |
msgstr "Cerca a tots els nivells"
|
2837 |
|
2858 |
#: adminpages/orders.php:72
|
2859 |
#: adminpages/orders.php:164
|
2860 |
#: adminpages/orders.php:170
|
2861 |
+
#: adminpages/orders.php:171
|
2862 |
msgid "Error deleting order."
|
2863 |
msgstr "Error esborrant comanda."
|
2864 |
|
2867 |
#: adminpages/orders.php:169
|
2868 |
#: adminpages/orders.php:309
|
2869 |
#: adminpages/orders.php:315
|
2870 |
+
#: adminpages/orders.php:316
|
2871 |
+
#: adminpages/orders.php:342
|
2872 |
msgid "Order saved successfully."
|
2873 |
msgstr "Comanda salvada correctament."
|
2874 |
|
2883 |
#: adminpages/orders.php:180
|
2884 |
#: adminpages/orders.php:312
|
2885 |
#: adminpages/orders.php:318
|
2886 |
+
#: adminpages/orders.php:319
|
2887 |
+
#: adminpages/orders.php:345
|
2888 |
msgid "Error saving order."
|
2889 |
msgstr "Error guardant la comanda."
|
2890 |
|
2897 |
#: classes/class.memberorder.php:963
|
2898 |
#: adminpages/orders.php:389
|
2899 |
#: classes/class.memberorder.php:1005
|
2900 |
+
#: adminpages/orders.php:390
|
2901 |
+
#: classes/class.memberorder.php:1014
|
2902 |
msgid "Order"
|
2903 |
msgstr "Comanda"
|
2904 |
|
2908 |
#: adminpages/orders.php:348
|
2909 |
#: adminpages/orders.php:387
|
2910 |
#: adminpages/orders.php:393
|
2911 |
+
#: adminpages/orders.php:394
|
2912 |
+
#: adminpages/orders.php:454
|
2913 |
msgid "New Order"
|
2914 |
msgstr "Nova comanda"
|
2915 |
|
2919 |
#: adminpages/orders.php:371
|
2920 |
#: adminpages/orders.php:433
|
2921 |
#: adminpages/orders.php:439
|
2922 |
+
#: adminpages/orders.php:440
|
2923 |
+
#: adminpages/orders.php:487
|
2924 |
msgid "Randomly generated for you."
|
2925 |
msgstr "Generat aleatoriament per a tu"
|
2926 |
|
2930 |
#: adminpages/orders.php:376
|
2931 |
#: adminpages/orders.php:438
|
2932 |
#: adminpages/orders.php:444
|
2933 |
+
#: adminpages/orders.php:445
|
2934 |
+
#: adminpages/orders.php:539
|
2935 |
msgid "User ID"
|
2936 |
msgstr "ID d’usuari"
|
2937 |
|
2942 |
#: adminpages/emailtemplates.php:130
|
2943 |
#: adminpages/orders.php:451
|
2944 |
#: adminpages/orders.php:457
|
2945 |
+
#: adminpages/orders.php:458
|
2946 |
+
#: adminpages/emailtemplates.php:125
|
2947 |
+
#: adminpages/orders.php:552
|
2948 |
msgid "Membership Level ID"
|
2949 |
msgstr "ID del Nivell de subscripció"
|
2950 |
|
2955 |
#: adminpages/orders.php:464
|
2956 |
#: includes/privacy.php:245
|
2957 |
#: adminpages/orders.php:470
|
2958 |
+
#: adminpages/orders.php:471
|
2959 |
+
#: adminpages/orders.php:576
|
2960 |
msgid "Billing Name"
|
2961 |
msgstr "Nom de Facturació"
|
2962 |
|
2967 |
#: adminpages/orders.php:478
|
2968 |
#: includes/privacy.php:249
|
2969 |
#: adminpages/orders.php:484
|
2970 |
+
#: adminpages/orders.php:485
|
2971 |
+
#: adminpages/orders.php:590
|
2972 |
msgid "Billing Street"
|
2973 |
msgstr "Adreça de Facturació"
|
2974 |
|
2981 |
#: includes/privacy.php:358
|
2982 |
#: adminpages/orders.php:497
|
2983 |
#: adminpages/orders.php:496
|
2984 |
+
#: adminpages/orders.php:602
|
2985 |
msgid "Billing City"
|
2986 |
msgstr "Ciutat de Facturació"
|
2987 |
|
2993 |
#: includes/privacy.php:257
|
2994 |
#: adminpages/orders.php:510
|
2995 |
#: adminpages/orders.php:509
|
2996 |
+
#: adminpages/orders.php:615
|
2997 |
msgid "Billing State"
|
2998 |
msgstr "Provincia de Facturació"
|
2999 |
|
3006 |
#: includes/privacy.php:360
|
3007 |
#: adminpages/orders.php:523
|
3008 |
#: adminpages/orders.php:521
|
3009 |
+
#: adminpages/orders.php:522
|
3010 |
+
#: adminpages/orders.php:627
|
3011 |
msgid "Billing Postal Code"
|
3012 |
msgstr "Codi postal de Facturació"
|
3013 |
|
3020 |
#: includes/privacy.php:362
|
3021 |
#: adminpages/orders.php:536
|
3022 |
#: adminpages/orders.php:533
|
3023 |
+
#: adminpages/orders.php:534
|
3024 |
+
#: adminpages/orders.php:639
|
3025 |
msgid "Billing Country"
|
3026 |
msgstr "País de Facturació"
|
3027 |
|
3033 |
#: includes/privacy.php:269
|
3034 |
#: adminpages/orders.php:550
|
3035 |
#: adminpages/orders.php:546
|
3036 |
+
#: adminpages/orders.php:547
|
3037 |
+
#: adminpages/orders.php:652
|
3038 |
msgid "Billing Phone"
|
3039 |
msgstr "Telèfon de Facturació"
|
3040 |
|
3046 |
#: includes/privacy.php:273
|
3047 |
#: adminpages/orders.php:602
|
3048 |
#: adminpages/orders.php:597
|
3049 |
+
#: adminpages/orders.php:598
|
3050 |
+
#: adminpages/orders.php:719
|
3051 |
msgid "Sub Total"
|
3052 |
msgstr "Subtotal"
|
3053 |
|
3065 |
#: adminpages/orders.php:615
|
3066 |
#: includes/functions.php:2880
|
3067 |
#: adminpages/orders.php:610
|
3068 |
+
#: adminpages/orders.php:611
|
3069 |
+
#: includes/functions.php:2902
|
3070 |
+
#: adminpages/orders.php:732
|
3071 |
+
#: includes/functions.php:2904
|
3072 |
msgid "Tax"
|
3073 |
msgstr "Impost"
|
3074 |
|
3080 |
#: includes/privacy.php:281
|
3081 |
#: adminpages/orders.php:632
|
3082 |
#: adminpages/orders.php:627
|
3083 |
+
#: adminpages/orders.php:628
|
3084 |
+
#: adminpages/orders.php:749
|
3085 |
msgid "Coupon Amount"
|
3086 |
msgstr "Valor del cupó"
|
3087 |
|
3110 |
#: adminpages/orders.php:645
|
3111 |
#: adminpages/orders.php:1336
|
3112 |
#: adminpages/dashboard.php:295
|
3113 |
+
#: adminpages/orders.php:646
|
3114 |
+
#: adminpages/orders.php:1337
|
3115 |
+
#: includes/functions.php:2931
|
3116 |
+
#: adminpages/orders.php:767
|
3117 |
+
#: adminpages/orders.php:1430
|
3118 |
+
#: includes/functions.php:2933
|
3119 |
msgid "Total"
|
3120 |
msgstr "Total"
|
3121 |
|
3134 |
#: includes/privacy.php:289
|
3135 |
#: adminpages/orders.php:664
|
3136 |
#: adminpages/orders.php:659
|
3137 |
+
#: adminpages/orders.php:660
|
3138 |
+
#: adminpages/orders.php:781
|
3139 |
msgid "Payment Type"
|
3140 |
msgstr "Tipus de pagament"
|
3141 |
|
3146 |
#: adminpages/orders.php:669
|
3147 |
#: adminpages/orders.php:675
|
3148 |
#: adminpages/orders.php:670
|
3149 |
+
#: adminpages/orders.php:671
|
3150 |
+
#: adminpages/orders.php:792
|
3151 |
msgid "e.g. PayPal Express, PayPal Standard, Credit Card."
|
3152 |
msgstr "Per exemple PayPal Express, PayPal Standard, Tarja de crèdit"
|
3153 |
|
3186 |
#: classes/gateways/class.pmprogateway_stripe.php:1309
|
3187 |
#: adminpages/orders.php:674
|
3188 |
#: classes/gateways/class.pmprogateway_stripe.php:768
|
3189 |
+
#: adminpages/orders.php:675
|
3190 |
+
#: pages/billing.php:338
|
3191 |
+
#: adminpages/orders.php:796
|
3192 |
+
#: classes/gateways/class.pmprogateway_braintree.php:473
|
3193 |
+
#: classes/gateways/class.pmprogateway_stripe.php:876
|
3194 |
msgid "Card Type"
|
3195 |
msgstr "Tipus de targeta"
|
3196 |
|
3201 |
#: adminpages/orders.php:683
|
3202 |
#: adminpages/orders.php:689
|
3203 |
#: adminpages/orders.php:684
|
3204 |
+
#: adminpages/orders.php:685
|
3205 |
+
#: adminpages/orders.php:806
|
3206 |
msgid "e.g. Visa, MasterCard, AMEX, etc"
|
3207 |
msgstr "Per exemple Visa, MasterCard, AMEX, etc"
|
3208 |
|
3220 |
#: includes/privacy.php:297
|
3221 |
#: adminpages/orders.php:693
|
3222 |
#: adminpages/orders.php:688
|
3223 |
+
#: adminpages/orders.php:689
|
3224 |
+
#: adminpages/orders.php:810
|
3225 |
+
#: classes/gateways/class.pmprogateway_twocheckout.php:145
|
3226 |
msgid "Account Number"
|
3227 |
msgstr "Nombre de Compte"
|
3228 |
|
3232 |
#: adminpages/orders.php:504
|
3233 |
#: adminpages/orders.php:698
|
3234 |
#: adminpages/orders.php:704
|
3235 |
+
#: adminpages/orders.php:699
|
3236 |
+
#: adminpages/orders.php:820
|
3237 |
msgid "Obscure all but last 4 digits."
|
3238 |
msgstr "Tot amagat menys els últims 4 dígits"
|
3239 |
|
3246 |
#: includes/privacy.php:301
|
3247 |
#: adminpages/orders.php:713
|
3248 |
#: adminpages/orders.php:724
|
3249 |
+
#: adminpages/orders.php:708
|
3250 |
+
#: adminpages/orders.php:719
|
3251 |
+
#: adminpages/orders.php:829
|
3252 |
msgid "Expiration Month"
|
3253 |
msgstr "Mes de finalització/expiració"
|
3254 |
|
3259 |
#: adminpages/orders.php:726
|
3260 |
#: includes/privacy.php:305
|
3261 |
#: adminpages/orders.php:732
|
3262 |
+
#: adminpages/orders.php:727
|
3263 |
msgid "Expiration Year"
|
3264 |
msgstr "Any de finalització/expiració"
|
3265 |
|
3290 |
#: adminpages/orders.php:735
|
3291 |
#: adminpages/orders.php:1340
|
3292 |
#: adminpages/dashboard.php:296
|
3293 |
+
#: adminpages/orders.php:1341
|
3294 |
+
#: adminpages/orders.php:849
|
3295 |
+
#: adminpages/orders.php:1434
|
3296 |
+
#: includes/profile.php:455
|
3297 |
+
#: includes/profile.php:541
|
3298 |
msgid "Status"
|
3299 |
msgstr "Estat"
|
3300 |
|
3316 |
#: adminpages/orders.php:757
|
3317 |
#: adminpages/orders.php:1338
|
3318 |
#: classes/class.memberorder.php:1006
|
3319 |
+
#: adminpages/orders.php:1339
|
3320 |
+
#: adminpages/orders.php:876
|
3321 |
+
#: adminpages/orders.php:1432
|
3322 |
+
#: classes/class.memberorder.php:1015
|
3323 |
msgid "Gateway"
|
3324 |
msgstr "Passarel·la"
|
3325 |
|
3337 |
#: includes/privacy.php:317
|
3338 |
#: adminpages/orders.php:787
|
3339 |
#: adminpages/orders.php:780
|
3340 |
+
#: adminpages/paymentsettings.php:155
|
3341 |
+
#: adminpages/orders.php:899
|
3342 |
+
#: adminpages/paymentsettings.php:153
|
3343 |
msgid "Gateway Environment"
|
3344 |
msgstr "Entorn de passarel·la"
|
3345 |
|
3359 |
#: classes/class-pmpro-site-health.php:206
|
3360 |
#: adminpages/orders.php:788
|
3361 |
#: classes/class-pmpro-site-health.php:210
|
3362 |
+
#: adminpages/paymentsettings.php:159
|
3363 |
+
#: classes/class-pmpro-site-health.php:213
|
3364 |
+
#: adminpages/orders.php:907
|
3365 |
+
#: adminpages/paymentsettings.php:157
|
3366 |
+
#: classes/class-pmpro-site-health.php:217
|
3367 |
msgid "Sandbox/Testing"
|
3368 |
msgstr "Sandbox/Proves"
|
3369 |
|
3383 |
#: classes/class-pmpro-site-health.php:207
|
3384 |
#: adminpages/orders.php:789
|
3385 |
#: classes/class-pmpro-site-health.php:211
|
3386 |
+
#: adminpages/paymentsettings.php:160
|
3387 |
+
#: classes/class-pmpro-site-health.php:214
|
3388 |
+
#: adminpages/orders.php:908
|
3389 |
+
#: adminpages/paymentsettings.php:158
|
3390 |
+
#: classes/class-pmpro-site-health.php:218
|
3391 |
msgid "Live/Production"
|
3392 |
msgstr "Live/Producció"
|
3393 |
|
3400 |
#: includes/privacy.php:321
|
3401 |
#: adminpages/orders.php:804
|
3402 |
#: adminpages/orders.php:797
|
3403 |
+
#: adminpages/orders.php:916
|
3404 |
msgid "Payment Transaction ID"
|
3405 |
msgstr "ID de la transacció de pagament"
|
3406 |
|
3412 |
#: adminpages/orders.php:808
|
3413 |
#: adminpages/orders.php:814
|
3414 |
#: adminpages/orders.php:807
|
3415 |
+
#: adminpages/orders.php:926
|
3416 |
msgid "Generated by the gateway. Useful to cross reference orders."
|
3417 |
msgstr "Generat per la passarel·la. Útil per a comandes de referències creuades."
|
3418 |
|
3427 |
#: adminpages/orders.php:819
|
3428 |
#: adminpages/orders.php:812
|
3429 |
#: classes/class.memberorder.php:1007
|
3430 |
+
#: adminpages/orders.php:931
|
3431 |
+
#: classes/class.memberorder.php:1016
|
3432 |
msgid "Subscription Transaction ID"
|
3433 |
msgstr "ID de la transacció per a subscripció"
|
3434 |
|
3440 |
#: adminpages/orders.php:824
|
3441 |
#: adminpages/orders.php:830
|
3442 |
#: adminpages/orders.php:822
|
3443 |
+
#: adminpages/orders.php:823
|
3444 |
+
#: adminpages/orders.php:942
|
3445 |
msgid "Generated by the gateway. Useful to cross reference subscriptions."
|
3446 |
msgstr "Generat per la passarel·la. Útil per a subscripcions de referències creuades."
|
3447 |
|
3473 |
#: adminpages/orders.php:827
|
3474 |
#: adminpages/orders.php:1341
|
3475 |
#: adminpages/dashboard.php:297
|
3476 |
+
#: adminpages/orders.php:828
|
3477 |
+
#: adminpages/orders.php:1342
|
3478 |
+
#: adminpages/orders.php:1435
|
3479 |
+
#: includes/profile.php:449
|
3480 |
msgid "Date"
|
3481 |
msgstr "Data"
|
3482 |
|
3487 |
#: adminpages/orders.php:874
|
3488 |
#: adminpages/orders.php:880
|
3489 |
#: adminpages/orders.php:872
|
3490 |
+
#: adminpages/orders.php:873
|
3491 |
+
#: adminpages/orders.php:956
|
3492 |
msgid "Affiliate ID"
|
3493 |
msgstr "ID de subscripció"
|
3494 |
|
3499 |
#: adminpages/orders.php:887
|
3500 |
#: adminpages/orders.php:893
|
3501 |
#: adminpages/orders.php:885
|
3502 |
+
#: adminpages/orders.php:886
|
3503 |
+
#: adminpages/orders.php:969
|
3504 |
msgid "Affiliate SubID"
|
3505 |
msgstr "SubID de subscripció"
|
3506 |
|
3511 |
#: adminpages/orders.php:923
|
3512 |
#: adminpages/orders.php:929
|
3513 |
#: adminpages/orders.php:921
|
3514 |
+
#: adminpages/orders.php:922
|
3515 |
+
#: adminpages/orders.php:1005
|
3516 |
msgid "Notes"
|
3517 |
msgstr "Notes"
|
3518 |
|
3523 |
#: adminpages/orders.php:961
|
3524 |
#: adminpages/orders.php:967
|
3525 |
#: adminpages/orders.php:959
|
3526 |
+
#: adminpages/orders.php:960
|
3527 |
+
#: adminpages/orders.php:1043
|
3528 |
msgid "Save Order"
|
3529 |
msgstr "Salva Comanda"
|
3530 |
|
3569 |
#: adminpages/discountcodes.php:884
|
3570 |
#: classes/class-pmpro-site-health.php:77
|
3571 |
#: adminpages/orders.php:970
|
3572 |
+
#: adminpages/orders.php:971
|
3573 |
+
#: adminpages/discountcodes.php:889
|
3574 |
+
#: adminpages/orders.php:1054
|
3575 |
msgid "Orders"
|
3576 |
msgstr "Comandes"
|
3577 |
|
3582 |
#: adminpages/orders.php:973
|
3583 |
#: adminpages/orders.php:979
|
3584 |
#: adminpages/orders.php:971
|
3585 |
+
#: adminpages/orders.php:972
|
3586 |
+
#: adminpages/orders.php:1055
|
3587 |
msgid "Add New Order"
|
3588 |
msgstr "Afegeix nova comanda"
|
3589 |
|
3593 |
#: adminpages/orders.php:1018
|
3594 |
#: adminpages/orders.php:1024
|
3595 |
#: adminpages/orders.php:1016
|
3596 |
+
#: adminpages/orders.php:1017
|
3597 |
+
#: adminpages/orders.php:1105
|
3598 |
msgid "Within a Date Range"
|
3599 |
msgstr "Dins del període"
|
3600 |
|
3604 |
#: adminpages/orders.php:1020
|
3605 |
#: adminpages/orders.php:1026
|
3606 |
#: adminpages/orders.php:1018
|
3607 |
+
#: adminpages/orders.php:1019
|
3608 |
+
#: adminpages/orders.php:1107
|
3609 |
msgid "Predefined Date Range"
|
3610 |
msgstr "Període predefinit"
|
3611 |
|
3615 |
#: adminpages/orders.php:1022
|
3616 |
#: adminpages/orders.php:1028
|
3617 |
#: adminpages/orders.php:1020
|
3618 |
+
#: adminpages/orders.php:1021
|
3619 |
+
#: adminpages/orders.php:1109
|
3620 |
msgid "Within a Level"
|
3621 |
msgstr "Dins del nivell"
|
3622 |
|
3626 |
#: adminpages/orders.php:1026
|
3627 |
#: adminpages/orders.php:1032
|
3628 |
#: adminpages/orders.php:1024
|
3629 |
+
#: adminpages/orders.php:1025
|
3630 |
+
#: adminpages/orders.php:1113
|
3631 |
msgid "Within a Status"
|
3632 |
msgstr "Dins de l’”Status”"
|
3633 |
|
3637 |
#: adminpages/orders.php:1038
|
3638 |
#: adminpages/orders.php:1044
|
3639 |
#: adminpages/orders.php:1036
|
3640 |
+
#: adminpages/orders.php:1037
|
3641 |
+
#: adminpages/orders.php:1125
|
3642 |
msgid "From"
|
3643 |
msgstr "De"
|
3644 |
|
3648 |
#: adminpages/orders.php:1053
|
3649 |
#: adminpages/orders.php:1059
|
3650 |
#: adminpages/orders.php:1051
|
3651 |
+
#: adminpages/orders.php:1052
|
3652 |
+
#: adminpages/orders.php:1140
|
3653 |
msgid "To"
|
3654 |
msgstr "per a "
|
3655 |
|
3659 |
#: adminpages/orders.php:1066
|
3660 |
#: adminpages/orders.php:1072
|
3661 |
#: adminpages/orders.php:1064
|
3662 |
+
#: adminpages/orders.php:1065
|
3663 |
+
#: adminpages/orders.php:1153
|
3664 |
msgid "filter by "
|
3665 |
msgstr "filtrat per"
|
3666 |
|
3670 |
#: adminpages/orders.php:1116
|
3671 |
#: adminpages/orders.php:1122
|
3672 |
#: adminpages/orders.php:1114
|
3673 |
+
#: adminpages/orders.php:1115
|
3674 |
+
#: adminpages/orders.php:1203
|
3675 |
msgid "Filter"
|
3676 |
msgstr "Filtre"
|
3677 |
|
3689 |
#: adminpages/orders.php:1259
|
3690 |
#: adminpages/orders.php:1248
|
3691 |
#: adminpages/orders.php:1251
|
3692 |
+
#: adminpages/orders.php:1249
|
3693 |
+
#: adminpages/orders.php:1252
|
3694 |
+
#: adminpages/orders.php:1094
|
3695 |
+
#: adminpages/orders.php:1097
|
3696 |
msgid "Search Orders"
|
3697 |
msgstr "Cerca Comandes"
|
3698 |
|
3704 |
#: adminpages/orders.php:1326
|
3705 |
#: adminpages/orders.php:1332
|
3706 |
#: adminpages/orders.php:1324
|
3707 |
+
#: adminpages/orders.php:1325
|
3708 |
+
#: adminpages/orders.php:1405
|
3709 |
+
#: adminpages/orders.php:1752
|
3710 |
#, php-format
|
3711 |
msgid "%d orders found."
|
3712 |
msgstr "%d comandes no trobades"
|
3730 |
#: adminpages/orders.php:1341
|
3731 |
#: adminpages/orders.php:1333
|
3732 |
#: adminpages/dashboard.php:293
|
3733 |
+
#: adminpages/orders.php:1334
|
3734 |
+
#: adminpages/orders.php:1427
|
3735 |
msgid "User"
|
3736 |
msgstr "Usuari"
|
3737 |
|
3775 |
#: js/blocks.build.js:798
|
3776 |
#: js/blocks.build.js:1004
|
3777 |
#: js/blocks.build.js:1086
|
3778 |
+
#: blocks/checkout-button/block.js:76
|
3779 |
+
#: blocks/checkout-page/block.js:62
|
3780 |
msgid "Membership Level"
|
3781 |
msgstr "Nivell de subscripció"
|
3782 |
|
3796 |
#: adminpages/orders.php:1539
|
3797 |
#: adminpages/orders.php:1337
|
3798 |
#: adminpages/orders.php:1531
|
3799 |
+
#: adminpages/orders.php:1338
|
3800 |
+
#: adminpages/orders.php:1532
|
3801 |
+
#: adminpages/orders.php:1684
|
3802 |
msgid "Payment"
|
3803 |
msgstr "Pagament"
|
3804 |
|
3810 |
#: adminpages/orders.php:1341
|
3811 |
#: adminpages/orders.php:1347
|
3812 |
#: adminpages/orders.php:1339
|
3813 |
+
#: adminpages/orders.php:1340
|
3814 |
+
#: adminpages/orders.php:1433
|
3815 |
msgid "Transaction IDs"
|
3816 |
msgstr "IDs de transacció"
|
3817 |
|
3833 |
#: adminpages/orders.php:1487
|
3834 |
#: adminpages/dashboard.php:321
|
3835 |
#: adminpages/dashboard.php:336
|
3836 |
+
#: adminpages/orders.php:1476
|
3837 |
+
#: adminpages/orders.php:1488
|
3838 |
+
#: adminpages/orders.php:1600
|
3839 |
+
#: adminpages/orders.php:1612
|
3840 |
msgid "deleted"
|
3841 |
msgstr "esborrat"
|
3842 |
|
3849 |
#: adminpages/orders.php:1471
|
3850 |
#: adminpages/orders.php:1548
|
3851 |
#: adminpages/orders.php:1540
|
3852 |
+
#: adminpages/orders.php:1541
|
3853 |
+
#: adminpages/orders.php:1693
|
3854 |
msgid "Subscription"
|
3855 |
msgstr "Subscripció"
|
3856 |
|
3865 |
#: adminpages/orders.php:1372
|
3866 |
#: adminpages/orders.php:1375
|
3867 |
#: adminpages/orders.php:1367
|
3868 |
+
#: adminpages/orders.php:1368
|
3869 |
+
#: adminpages/orders.php:1457
|
3870 |
#, php-format
|
3871 |
msgid "Deleting orders is permanent and can affect active users. Are you sure you want to delete order %s?"
|
3872 |
msgstr "Esborra comandes és permanent i pot afectar usuaris actius. Estàs segur que vols esborrar la comanda %s?"
|
3895 |
#: adminpages/orders.php:1576
|
3896 |
#: adminpages/orders.php:1568
|
3897 |
#: adminpages/dashboard.php:304
|
3898 |
+
#: adminpages/orders.php:1569
|
3899 |
+
#: adminpages/orders.php:1741
|
3900 |
msgid "No orders found."
|
3901 |
msgstr "No s’han trobat comandes"
|
3902 |
|
3969 |
#: adminpages/pagesettings.php:167
|
3970 |
#: adminpages/pagesettings.php:182
|
3971 |
#: adminpages/pagesettings.php:186
|
3972 |
+
#: adminpages/pagesettings.php:185
|
3973 |
msgid "Manage the WordPress pages assigned to each required Paid Memberships Pro page."
|
3974 |
msgstr "Utilitza les pàgines de WordPress a cadascuna de les pàgines requerides per al Paid Memberships Pro"
|
3975 |
|
3979 |
#: adminpages/pagesettings.php:169
|
3980 |
#: adminpages/pagesettings.php:184
|
3981 |
#: adminpages/pagesettings.php:188
|
3982 |
+
#: adminpages/pagesettings.php:187
|
3983 |
msgid "Assign the WordPress pages for each required Paid Memberships Pro page or"
|
3984 |
msgstr "Assigna pàgines al WordPress per cadascuna de les pàgines requerides pel Paid Memberships Pro o"
|
3985 |
|
3989 |
#: adminpages/pagesettings.php:170
|
3990 |
#: adminpages/pagesettings.php:185
|
3991 |
#: adminpages/pagesettings.php:189
|
3992 |
+
#: adminpages/pagesettings.php:188
|
3993 |
msgid "click here to let us generate them for you"
|
3994 |
msgstr "Clica aquí per permetre’ns generar-les per a tu"
|
3995 |
|
3999 |
#: adminpages/pagesettings.php:186
|
4000 |
#: adminpages/pagesettings.php:201
|
4001 |
#: adminpages/pagesettings.php:205
|
4002 |
+
#: adminpages/pagesettings.php:204
|
4003 |
msgid "Account Page"
|
4004 |
msgstr "Pàgina de Compte"
|
4005 |
|
4046 |
#: adminpages/pagesettings.php:335
|
4047 |
#: adminpages/pagesettings.php:360
|
4048 |
#: adminpages/pagesettings.php:485
|
4049 |
+
#: adminpages/pagesettings.php:211
|
4050 |
+
#: adminpages/pagesettings.php:235
|
4051 |
+
#: adminpages/pagesettings.php:259
|
4052 |
+
#: adminpages/pagesettings.php:284
|
4053 |
+
#: adminpages/pagesettings.php:309
|
4054 |
+
#: adminpages/pagesettings.php:334
|
4055 |
+
#: adminpages/pagesettings.php:359
|
4056 |
+
#: adminpages/pagesettings.php:484
|
4057 |
msgid "Choose One"
|
4058 |
msgstr "Escull-ne un"
|
4059 |
|
4114 |
#: adminpages/pagesettings.php:405
|
4115 |
#: adminpages/pagesettings.php:434
|
4116 |
#: adminpages/pagesettings.php:493
|
4117 |
+
#: adminpages/pagesettings.php:219
|
4118 |
+
#: adminpages/pagesettings.php:243
|
4119 |
+
#: adminpages/pagesettings.php:267
|
4120 |
+
#: adminpages/pagesettings.php:292
|
4121 |
+
#: adminpages/pagesettings.php:317
|
4122 |
+
#: adminpages/pagesettings.php:342
|
4123 |
+
#: adminpages/pagesettings.php:367
|
4124 |
+
#: adminpages/pagesettings.php:404
|
4125 |
+
#: adminpages/pagesettings.php:433
|
4126 |
+
#: adminpages/pagesettings.php:492
|
4127 |
msgid "edit page"
|
4128 |
msgstr "Edita la pàgina"
|
4129 |
|
4181 |
#: adminpages/pagesettings.php:408
|
4182 |
#: adminpages/pagesettings.php:437
|
4183 |
#: adminpages/pagesettings.php:496
|
4184 |
+
#: adminpages/pagesettings.php:222
|
4185 |
+
#: adminpages/pagesettings.php:270
|
4186 |
+
#: adminpages/pagesettings.php:295
|
4187 |
+
#: adminpages/pagesettings.php:320
|
4188 |
+
#: adminpages/pagesettings.php:345
|
4189 |
+
#: adminpages/pagesettings.php:370
|
4190 |
+
#: adminpages/pagesettings.php:407
|
4191 |
+
#: adminpages/pagesettings.php:436
|
4192 |
+
#: adminpages/pagesettings.php:495
|
4193 |
msgid "view page"
|
4194 |
msgstr "Mira la pàgina"
|
4195 |
|
4243 |
#: adminpages/pagesettings.php:323
|
4244 |
#: adminpages/pagesettings.php:348
|
4245 |
#: adminpages/pagesettings.php:373
|
4246 |
+
#: adminpages/pagesettings.php:224
|
4247 |
+
#: adminpages/pagesettings.php:272
|
4248 |
+
#: adminpages/pagesettings.php:297
|
4249 |
+
#: adminpages/pagesettings.php:322
|
4250 |
+
#: adminpages/pagesettings.php:347
|
4251 |
+
#: adminpages/pagesettings.php:372
|
4252 |
msgid "Include the shortcode"
|
4253 |
msgstr "Inclou l’”enllaç” (shortcode)"
|
4254 |
|
4260 |
#: adminpages/pagesettings.php:203
|
4261 |
#: adminpages/pagesettings.php:225
|
4262 |
#: adminpages/pagesettings.php:229
|
4263 |
+
#: adminpages/pagesettings.php:228
|
4264 |
msgid "Billing Information Page"
|
4265 |
msgstr "Pàgina d’informació de Facturació"
|
4266 |
|
4272 |
#: adminpages/pagesettings.php:220
|
4273 |
#: adminpages/pagesettings.php:249
|
4274 |
#: adminpages/pagesettings.php:253
|
4275 |
+
#: adminpages/pagesettings.php:252
|
4276 |
msgid "Cancel Page"
|
4277 |
msgstr "Cancel·la pàgina"
|
4278 |
|
4284 |
#: adminpages/pagesettings.php:238
|
4285 |
#: adminpages/pagesettings.php:274
|
4286 |
#: adminpages/pagesettings.php:278
|
4287 |
+
#: adminpages/pagesettings.php:277
|
4288 |
msgid "Checkout Page"
|
4289 |
msgstr "Pàgina de Checkout"
|
4290 |
|
4296 |
#: adminpages/pagesettings.php:256
|
4297 |
#: adminpages/pagesettings.php:299
|
4298 |
#: adminpages/pagesettings.php:303
|
4299 |
+
#: adminpages/pagesettings.php:302
|
4300 |
msgid "Confirmation Page"
|
4301 |
msgstr "Pàgina de Confirmació"
|
4302 |
|
4308 |
#: adminpages/pagesettings.php:274
|
4309 |
#: adminpages/pagesettings.php:324
|
4310 |
#: adminpages/pagesettings.php:328
|
4311 |
+
#: adminpages/pagesettings.php:327
|
4312 |
msgid "Invoice Page"
|
4313 |
msgstr "Pàgina de Factura"
|
4314 |
|
4320 |
#: adminpages/pagesettings.php:292
|
4321 |
#: adminpages/pagesettings.php:349
|
4322 |
#: adminpages/pagesettings.php:353
|
4323 |
+
#: adminpages/pagesettings.php:352
|
4324 |
msgid "Levels Page"
|
4325 |
msgstr "Pàgina de Nivells"
|
4326 |
|
4328 |
#: adminpages/pagesettings.php:391
|
4329 |
#: adminpages/pagesettings.php:457
|
4330 |
#: adminpages/pagesettings.php:461
|
4331 |
+
#: adminpages/pagesettings.php:460
|
4332 |
msgid "Additional Page Settings"
|
4333 |
msgstr "Configuració addicional de pàgina"
|
4334 |
|
4342 |
#: adminpages/pagesettings.php:411
|
4343 |
#: adminpages/pagesettings.php:440
|
4344 |
#: adminpages/pagesettings.php:499
|
4345 |
+
#: adminpages/pagesettings.php:410
|
4346 |
+
#: adminpages/pagesettings.php:439
|
4347 |
+
#: adminpages/pagesettings.php:498
|
4348 |
msgid "Generate Page"
|
4349 |
msgstr "Genera pàgina"
|
4350 |
|
4364 |
#: adminpages/paymentsettings.php:112
|
4365 |
#: adminpages/paymentsettings.php:127
|
4366 |
#: classes/class-pmpro-site-health.php:69
|
4367 |
+
#: adminpages/paymentsettings.php:132
|
4368 |
+
#: adminpages/paymentsettings.php:130
|
4369 |
msgid "Payment Gateway"
|
4370 |
msgstr "Passarela de pagament (Payment Gateway)"
|
4371 |
|
4375 |
#: adminpages/paymentsettings.php:146
|
4376 |
#: adminpages/paymentsettings.php:112
|
4377 |
#: adminpages/paymentsettings.php:248
|
4378 |
+
#: adminpages/paymentsettings.php:261
|
4379 |
+
#: adminpages/paymentsettings.php:259
|
4380 |
msgid "SSL Settings"
|
4381 |
msgstr "Configuració SSL"
|
4382 |
|
4387 |
|
4388 |
#: adminpages/paymentsettings.php:101
|
4389 |
#: adminpages/paymentsettings.php:122
|
4390 |
+
#: adminpages/paymentsettings.php:127
|
4391 |
+
#: adminpages/paymentsettings.php:125
|
4392 |
msgid "Choose a Gateway"
|
4393 |
msgstr "Escull una passarel·la"
|
4394 |
|
4395 |
#: adminpages/paymentsettings.php:148
|
4396 |
#: adminpages/paymentsettings.php:194
|
4397 |
+
#: adminpages/paymentsettings.php:201
|
4398 |
+
#: adminpages/paymentsettings.php:199
|
4399 |
msgid "Currency and Tax Settings"
|
4400 |
msgstr "Configuració de moneda i impostos"
|
4401 |
|
4406 |
#: adminpages/paymentsettings.php:381
|
4407 |
#: adminpages/paymentsettings.php:386
|
4408 |
#: adminpages/paymentsettings.php:199
|
4409 |
+
#: adminpages/paymentsettings.php:206
|
4410 |
+
#: adminpages/paymentsettings.php:204
|
4411 |
msgid "Currency"
|
4412 |
msgstr "Moneda"
|
4413 |
|
4415 |
#: adminpages/paymentsettings.php:400
|
4416 |
#: adminpages/paymentsettings.php:402
|
4417 |
#: adminpages/paymentsettings.php:215
|
4418 |
+
#: adminpages/paymentsettings.php:222
|
4419 |
+
#: adminpages/paymentsettings.php:220
|
4420 |
msgid "Not all currencies will be supported by every gateway. Please check with your gateway."
|
4421 |
msgstr "No totes les monedes es poden usar a totes les passarel·les. Si us plau comprova la teva passarel·la."
|
4422 |
|
4426 |
#: adminpages/paymentsettings.php:406
|
4427 |
#: adminpages/paymentsettings.php:408
|
4428 |
#: adminpages/paymentsettings.php:220
|
4429 |
+
#: adminpages/paymentsettings.php:227
|
4430 |
+
#: adminpages/paymentsettings.php:225
|
4431 |
msgid "Accepted Credit Card Types"
|
4432 |
msgstr "Tipus de tarjetes de crèdit acceptades."
|
4433 |
|
4437 |
#: adminpages/paymentsettings.php:443
|
4438 |
#: adminpages/paymentsettings.php:445
|
4439 |
#: adminpages/paymentsettings.php:234
|
4440 |
+
#: adminpages/paymentsettings.php:241
|
4441 |
+
#: adminpages/paymentsettings.php:239
|
4442 |
msgid "Sales Tax"
|
4443 |
msgstr "Impost a la venta"
|
4444 |
|
4452 |
#: pages/billing.php:82
|
4453 |
#: adminpages/paymentsettings.php:234
|
4454 |
#: pages/billing.php:179
|
4455 |
+
#: adminpages/paymentsettings.php:241
|
4456 |
+
#: pages/billing.php:181
|
4457 |
+
#: adminpages/paymentsettings.php:239
|
4458 |
msgid "optional"
|
4459 |
msgstr "opcional"
|
4460 |
|
4464 |
#: adminpages/paymentsettings.php:446
|
4465 |
#: adminpages/paymentsettings.php:448
|
4466 |
#: adminpages/paymentsettings.php:237
|
4467 |
+
#: adminpages/paymentsettings.php:244
|
4468 |
+
#: adminpages/paymentsettings.php:242
|
4469 |
msgid "Tax State"
|
4470 |
msgstr "Estat/país de la taxa"
|
4471 |
|
4475 |
#: adminpages/paymentsettings.php:447
|
4476 |
#: adminpages/paymentsettings.php:449
|
4477 |
#: adminpages/paymentsettings.php:238
|
4478 |
+
#: adminpages/paymentsettings.php:245
|
4479 |
+
#: adminpages/paymentsettings.php:243
|
4480 |
msgid "abbreviation, e.g. \"PA\""
|
4481 |
msgstr "abreviació, per exemple “PA”"
|
4482 |
|
4483 |
#: adminpages/paymentsettings.php:193
|
4484 |
#: adminpages/paymentsettings.php:239
|
4485 |
+
#: adminpages/paymentsettings.php:246
|
4486 |
+
#: adminpages/paymentsettings.php:244
|
4487 |
msgid "Tax Rate"
|
4488 |
msgstr "Tarifa de l’impost"
|
4489 |
|
4493 |
#: adminpages/paymentsettings.php:449
|
4494 |
#: adminpages/paymentsettings.php:451
|
4495 |
#: adminpages/paymentsettings.php:240
|
4496 |
+
#: adminpages/paymentsettings.php:247
|
4497 |
+
#: adminpages/paymentsettings.php:245
|
4498 |
msgid "decimal, e.g. \"0.06\""
|
4499 |
msgstr "decimal, per exemple \"0.06\""
|
4500 |
|
4509 |
#: adminpages/paymentsettings.php:455
|
4510 |
#: adminpages/paymentsettings.php:457
|
4511 |
#: adminpages/paymentsettings.php:253
|
4512 |
+
#: adminpages/paymentsettings.php:266
|
4513 |
+
#: adminpages/paymentsettings.php:264
|
4514 |
msgid "Force SSL"
|
4515 |
msgstr "Força SSL"
|
4516 |
|
4519 |
#: adminpages/paymentsettings.php:461
|
4520 |
#: adminpages/paymentsettings.php:463
|
4521 |
#: adminpages/paymentsettings.php:268
|
4522 |
+
#: adminpages/paymentsettings.php:281
|
4523 |
+
#: adminpages/paymentsettings.php:279
|
4524 |
msgid "Yes (with JavaScript redirects)"
|
4525 |
msgstr "Sí (amb redirecció de JavaScript)"
|
4526 |
|
4527 |
#: adminpages/paymentsettings.php:214
|
4528 |
#: adminpages/paymentsettings.php:270
|
4529 |
+
#: adminpages/paymentsettings.php:283
|
4530 |
+
#: adminpages/paymentsettings.php:281
|
4531 |
msgid "Recommended: Yes. Try the JavaScript redirects setting if you are having issues with infinite redirect loops."
|
4532 |
msgstr "Recomanat: Sí. Prova la redirecció de JavaScript si tens problemes amb redireccions amb “loops” infinits."
|
4533 |
|
4537 |
#: adminpages/paymentsettings.php:468
|
4538 |
#: adminpages/paymentsettings.php:470
|
4539 |
#: adminpages/paymentsettings.php:278
|
4540 |
+
#: adminpages/paymentsettings.php:291
|
4541 |
+
#: adminpages/paymentsettings.php:289
|
4542 |
msgid "SSL Seal Code"
|
4543 |
msgstr "SSL Seal Code"
|
4544 |
|
4548 |
|
4549 |
#: adminpages/paymentsettings.php:228
|
4550 |
#: adminpages/paymentsettings.php:287
|
4551 |
+
#: adminpages/paymentsettings.php:306
|
4552 |
+
#: adminpages/paymentsettings.php:304
|
4553 |
msgid "Extra HTTPS URL Filter"
|
4554 |
msgstr "Extra HTTPS URL Filtre"
|
4555 |
|
4556 |
#: adminpages/paymentsettings.php:231
|
4557 |
#: adminpages/paymentsettings.php:290
|
4558 |
+
#: adminpages/paymentsettings.php:309
|
4559 |
+
#: adminpages/paymentsettings.php:307
|
4560 |
msgid "Pass all generated HTML through a URL filter to add HTTPS to URLs used on secure pages. Check this if you are using SSL and have warnings on your checkout pages."
|
4561 |
msgstr "Passa tot el codi HTML generat a través del filtre URL per a afegir HTTPS a URLs utilitzat a les pàgines segures. Comprova això si estàs utilitzant SSL i tens advertències a les teves pàgines de Checkout."
|
4562 |
|
4574 |
#: adminpages/reports.php:61
|
4575 |
#: adminpages/reports.php:19
|
4576 |
#: adminpages/reports.php:18
|
4577 |
+
#: adminpages/reports.php:21
|
4578 |
msgid "Back to Reports Dashboard"
|
4579 |
msgstr "Torna a l’escriptori de Reports (Reports Dashboard)"
|
4580 |
|
4616 |
#: adminpages/reports/sales.php:51
|
4617 |
#: adminpages/orders.php:1077
|
4618 |
#: adminpages/orders.php:1069
|
4619 |
+
#: adminpages/orders.php:1070
|
4620 |
+
#: adminpages/orders.php:1158
|
4621 |
msgid "This Month"
|
4622 |
msgstr "Aquest mes"
|
4623 |
|
4629 |
#: adminpages/reports/login.php:62
|
4630 |
#: adminpages/reports/memberships.php:52
|
4631 |
#: adminpages/reports/sales.php:53
|
4632 |
+
#: adminpages/reports/sales.php:542
|
4633 |
+
#: adminpages/reports/sales.php:543
|
4634 |
msgid "All Time"
|
4635 |
msgstr "Sempre"
|
4636 |
|
4647 |
#: adminpages/reports/login.php:104
|
4648 |
#: classes/class-pmpro-members-list-table.php:234
|
4649 |
#: classes/class-pmpro-members-list-table.php:233
|
4650 |
+
#: adminpages/reports/login.php:105
|
4651 |
+
#: adminpages/reports/login.php:111
|
4652 |
msgid "All Users"
|
4653 |
msgstr "Tots els usuaris"
|
4654 |
|
4656 |
#: adminpages/reports/login.php:146
|
4657 |
#: adminpages/reports/login.php:148
|
4658 |
#: adminpages/reports/login.php:185
|
4659 |
+
#: adminpages/reports/login.php:188
|
4660 |
msgid "Last Visit"
|
4661 |
msgstr "Última visita"
|
4662 |
|
4666 |
#: adminpages/reports/login.php:147
|
4667 |
#: adminpages/reports/login.php:149
|
4668 |
#: adminpages/reports/login.php:187
|
4669 |
+
#: adminpages/reports/login.php:190
|
4670 |
msgid "Visits This Month"
|
4671 |
msgstr "Visites aquest mes"
|
4672 |
|
4682 |
#: adminpages/reports/login.php:149
|
4683 |
#: adminpages/reports/login.php:151
|
4684 |
#: adminpages/reports/login.php:191
|
4685 |
+
#: adminpages/reports/login.php:194
|
4686 |
msgid "Views This Month"
|
4687 |
msgstr "Visites aquest mes"
|
4688 |
|
4696 |
#: adminpages/reports/login.php:151
|
4697 |
#: adminpages/reports/login.php:153
|
4698 |
#: adminpages/reports/login.php:194
|
4699 |
+
#: adminpages/reports/login.php:197
|
4700 |
msgid "Last Login"
|
4701 |
msgstr "Últim Login"
|
4702 |
|
4706 |
#: adminpages/reports/login.php:152
|
4707 |
#: adminpages/reports/login.php:154
|
4708 |
#: adminpages/reports/login.php:196
|
4709 |
+
#: adminpages/reports/login.php:199
|
4710 |
msgid "Logins This Month"
|
4711 |
msgstr "Logins aquest mes"
|
4712 |
|
4745 |
#: adminpages/reports/sales.php:52
|
4746 |
#: adminpages/orders.php:1081
|
4747 |
#: adminpages/orders.php:1073
|
4748 |
+
#: adminpages/orders.php:1074
|
4749 |
+
#: adminpages/orders.php:1162
|
4750 |
msgid "This Year"
|
4751 |
msgstr "Aquest any"
|
4752 |
|
4762 |
#: adminpages/reports/sales.php:295
|
4763 |
#: adminpages/advancedsettings.php:322
|
4764 |
#: adminpages/reports/sales.php:313
|
4765 |
+
#: adminpages/advancedsettings.php:329
|
4766 |
+
#: adminpages/reports/memberships.php:332
|
4767 |
msgid "Daily"
|
4768 |
msgstr "Diari"
|
4769 |
|
4779 |
#: adminpages/reports/sales.php:296
|
4780 |
#: adminpages/advancedsettings.php:328
|
4781 |
#: adminpages/reports/sales.php:314
|
4782 |
+
#: adminpages/advancedsettings.php:335
|
4783 |
+
#: adminpages/reports/memberships.php:333
|
4784 |
msgid "Monthly"
|
4785 |
msgstr "Mensual"
|
4786 |
|
4794 |
#: adminpages/reports/memberships.php:335
|
4795 |
#: adminpages/reports/sales.php:297
|
4796 |
#: adminpages/reports/sales.php:315
|
4797 |
+
#: adminpages/reports/memberships.php:334
|
4798 |
msgid "Annual"
|
4799 |
msgstr "Anual"
|
4800 |
|
4801 |
#: adminpages/reports/memberships.php:270
|
4802 |
#: adminpages/reports/memberships.php:338
|
4803 |
+
#: adminpages/reports/memberships.php:337
|
4804 |
msgid "Signups vs. All Cancellations"
|
4805 |
msgstr "Altes vs. totes les Cancel·lacions"
|
4806 |
|
4808 |
#: adminpages/reports/memberships.php:263
|
4809 |
#: adminpages/reports/memberships.php:299
|
4810 |
#: adminpages/reports/memberships.php:339
|
4811 |
+
#: adminpages/reports/memberships.php:338
|
4812 |
msgid "Signups vs. Cancellations"
|
4813 |
msgstr "Altes vs. Cancel·lacions"
|
4814 |
|
4815 |
#: adminpages/reports/memberships.php:272
|
4816 |
#: adminpages/reports/memberships.php:340
|
4817 |
+
#: adminpages/reports/memberships.php:339
|
4818 |
msgid "Signups vs. Expirations"
|
4819 |
msgstr "Altes vs. Expiracions"
|
4820 |
|
4845 |
#: adminpages/reports/sales.php:314
|
4846 |
#: adminpages/reports/sales.php:321
|
4847 |
#: adminpages/reports/sales.php:332
|
4848 |
+
#: adminpages/reports/memberships.php:341
|
4849 |
+
#: adminpages/reports/memberships.php:352
|
4850 |
msgid "for"
|
4851 |
msgstr "per a"
|
4852 |
|
4860 |
#: adminpages/reports/memberships.php:385
|
4861 |
#: adminpages/reports/sales.php:342
|
4862 |
#: adminpages/reports/sales.php:360
|
4863 |
+
#: adminpages/reports/memberships.php:384
|
4864 |
msgid "Generate Report"
|
4865 |
msgstr "Genera Informe"
|
4866 |
|
4903 |
|
4904 |
#: adminpages/templates/orders-email.php:14
|
4905 |
#: adminpages/templates/orders-print.php:50
|
4906 |
+
#: adminpages/templates/orders-email.php:17
|
4907 |
+
#: adminpages/templates/orders-print.php:53
|
4908 |
msgid "Invoice #: "
|
4909 |
msgstr "Factura #: "
|
4910 |
|
4911 |
#: adminpages/templates/orders-email.php:18
|
4912 |
#: adminpages/templates/orders-print.php:54
|
4913 |
+
#: adminpages/templates/orders-email.php:21
|
4914 |
+
#: adminpages/templates/orders-print.php:57
|
4915 |
msgid "Date:"
|
4916 |
msgstr "Data:"
|
4917 |
|
4918 |
#: adminpages/templates/orders-email.php:24
|
4919 |
+
#: adminpages/templates/orders-email.php:27
|
4920 |
msgid "Bill to:"
|
4921 |
msgstr "Facturat a:"
|
4922 |
|
4923 |
#: adminpages/templates/orders-email.php:47
|
4924 |
#: adminpages/templates/orders-print.php:76
|
4925 |
+
#: adminpages/templates/orders-email.php:50
|
4926 |
+
#: adminpages/templates/orders-print.php:79
|
4927 |
msgid "Item"
|
4928 |
msgstr "Item"
|
4929 |
|
4932 |
#: pages/levels.php:36
|
4933 |
#: pages/levels.php:14
|
4934 |
#: pages/levels.php:28
|
4935 |
+
#: adminpages/templates/orders-email.php:51
|
4936 |
+
#: adminpages/templates/orders-print.php:80
|
4937 |
msgid "Price"
|
4938 |
msgstr "Preu"
|
4939 |
|
4943 |
#: pages/invoice.php:77
|
4944 |
#: includes/functions.php:2842
|
4945 |
#: includes/functions.php:2873
|
4946 |
+
#: includes/functions.php:2895
|
4947 |
+
#: includes/functions.php:2897
|
4948 |
msgid "Subtotal"
|
4949 |
msgstr "Subtotal"
|
4950 |
|
4972 |
#: includes/cleanup.php:24
|
4973 |
#: classes/class.memberorder.php:959
|
4974 |
#: classes/class.memberorder.php:1001
|
4975 |
+
#: classes/class.memberorder.php:1010
|
4976 |
#, php-format
|
4977 |
msgid "There was an error canceling the subscription for user with ID=%s. You will want to check your payment gateway to see if their subscription is still active."
|
4978 |
msgstr "Hi ha hagut un error cancel·lant la subscripció per a l’usuari ID=%s. Comprova a la passarel·la de pagament si la seva subscripció encara és activa."
|
5010 |
#: classes/class.pmproemail.php:178
|
5011 |
#: classes/class.pmproemail.php:269
|
5012 |
#: classes/class.pmproemail.php:262
|
5013 |
+
#: classes/class.pmproemail.php:395
|
5014 |
#, php-format
|
5015 |
msgid "Your membership confirmation for %s"
|
5016 |
msgstr "Confirmació per a la seva subscripció %s"
|
5109 |
#: classes/class.pmproemail.php:440
|
5110 |
#: classes/class.pmproemail.php:762
|
5111 |
#: classes/class.pmproemail.php:764
|
5112 |
+
#: adminpages/orders.php:576
|
5113 |
+
#: adminpages/orders.php:1343
|
5114 |
+
#: adminpages/orders.php:697
|
5115 |
+
#: adminpages/orders.php:1437
|
5116 |
+
#: classes/class.pmproemail.php:465
|
5117 |
+
#: classes/class.pmproemail.php:471
|
5118 |
+
#: classes/class.pmproemail.php:477
|
5119 |
+
#: classes/class.pmproemail.php:567
|
5120 |
+
#: classes/class.pmproemail.php:573
|
5121 |
+
#: classes/class.pmproemail.php:895
|
5122 |
+
#: classes/class.pmproemail.php:897
|
5123 |
+
#: classes/gateways/class.pmprogateway_braintree.php:516
|
5124 |
+
#: classes/gateways/class.pmprogateway_stripe.php:906
|
5125 |
+
#: includes/profile.php:454
|
5126 |
msgid "Discount Code"
|
5127 |
msgstr "Codi de descompte"
|
5128 |
|
5162 |
#: classes/class.pmproemail.php:771
|
5163 |
#: classes/class.pmproemail.php:905
|
5164 |
#: classes/class.pmproemail.php:950
|
5165 |
+
#: classes/class.pmproemail.php:485
|
5166 |
+
#: classes/class.pmproemail.php:583
|
5167 |
+
#: classes/class.pmproemail.php:904
|
5168 |
+
#: classes/class.pmproemail.php:1038
|
5169 |
+
#: classes/class.pmproemail.php:1083
|
5170 |
#, php-format
|
5171 |
msgid "This membership will expire on %s."
|
5172 |
msgstr "Aquesta subscripció expirarà a %s."
|
5184 |
#: classes/class.pmproemail.php:463
|
5185 |
#: classes/class.pmproemail.php:475
|
5186 |
#: classes/class.pmproemail.php:468
|
5187 |
+
#: classes/class.pmproemail.php:601
|
5188 |
#, php-format
|
5189 |
msgid "Your billing information has been updated at %s"
|
5190 |
msgstr "S’ha actualitzat la seva informació de facturació a %s"
|
5193 |
#: classes/class.pmproemail.php:513
|
5194 |
#: classes/class.pmproemail.php:525
|
5195 |
#: classes/class.pmproemail.php:518
|
5196 |
+
#: classes/class.pmproemail.php:651
|
5197 |
#, php-format
|
5198 |
msgid "Billing information has been updated for %s at %s"
|
5199 |
msgstr "Informació de facturació ha estat actualitzat per %s a %s"
|
5241 |
#: classes/class.pmproemail.php:794
|
5242 |
#: classes/class.pmproemail.php:806
|
5243 |
#: classes/class.pmproemail.php:799
|
5244 |
+
#: classes/class.pmproemail.php:932
|
5245 |
#, php-format
|
5246 |
msgid "Your trial at %s is ending soon"
|
5247 |
msgstr "El teu període de prova a %s aviat acabarà."
|
5254 |
#: classes/class.pmproemail.php:831
|
5255 |
#: classes/class.pmproemail.php:843
|
5256 |
#: classes/class.pmproemail.php:836
|
5257 |
+
#: classes/class.pmproemail.php:969
|
5258 |
#, php-format
|
5259 |
msgid "Your membership at %s has ended"
|
5260 |
msgstr "La teva subscripció a %s ha finalitzat"
|
5267 |
#: classes/class.pmproemail.php:858
|
5268 |
#: classes/class.pmproemail.php:870
|
5269 |
#: classes/class.pmproemail.php:863
|
5270 |
+
#: classes/class.pmproemail.php:996
|
5271 |
#, php-format
|
5272 |
msgid "Your membership at %s will end soon"
|
5273 |
msgstr "La teva subscripció a %s finalitzarà aviat."
|
5280 |
#: classes/class.pmproemail.php:888
|
5281 |
#: classes/class.pmproemail.php:900
|
5282 |
#: classes/class.pmproemail.php:893
|
5283 |
+
#: classes/class.pmproemail.php:1026
|
5284 |
#, php-format
|
5285 |
msgid "Your membership at %s has been changed"
|
5286 |
msgstr "La teva subscripció a %s ha canviat"
|
5337 |
#: classes/class.pmproemail.php:933
|
5338 |
#: classes/class.pmproemail.php:945
|
5339 |
#: classes/class.pmproemail.php:938
|
5340 |
+
#: classes/class.pmproemail.php:1071
|
5341 |
#, php-format
|
5342 |
msgid "Membership for %s at %s has been changed"
|
5343 |
msgstr "Subscripció per %s a %s ha canviat"
|
5441 |
#: paid-memberships-pro.php:164
|
5442 |
#: paid-memberships-pro.php:166
|
5443 |
#: paid-memberships-pro.php:167
|
5444 |
+
#: paid-memberships-pro.php:173
|
5445 |
msgid "Authorize.net"
|
5446 |
msgstr "Authorize.net"
|
5447 |
|
5508 |
#: paid-memberships-pro.php:165
|
5509 |
#: paid-memberships-pro.php:167
|
5510 |
#: paid-memberships-pro.php:168
|
5511 |
+
#: classes/gateways/class.pmprogateway_braintree.php:258
|
5512 |
+
#: paid-memberships-pro.php:174
|
5513 |
msgid "Braintree Payments"
|
5514 |
msgstr "Pagaments Braintree"
|
5515 |
|
5516 |
#: classes/gateways/class.pmprogateway_braintree.php:132
|
5517 |
#: classes/gateways/class.pmprogateway_braintree.php:119
|
5518 |
#: classes/gateways/class.pmprogateway_braintree.php:308
|
5519 |
+
#: classes/gateways/class.pmprogateway_braintree.php:315
|
5520 |
msgid "Braintree Settings"
|
5521 |
msgstr "Configuració Braintree"
|
5522 |
|
5530 |
#: classes/gateways/class.pmprogateway_braintree.php:124
|
5531 |
#: classes/gateways/class.pmprogateway_braintree.php:313
|
5532 |
#: classes/gateways/class.pmprogateway_cybersource.php:94
|
5533 |
+
#: classes/gateways/class.pmprogateway_braintree.php:320
|
5534 |
msgid "Merchant ID"
|
5535 |
msgstr "ID de comerciant"
|
5536 |
|
5540 |
#: adminpages/paymentsettings.php:311
|
5541 |
#: classes/gateways/class.pmprogateway_braintree.php:132
|
5542 |
#: classes/gateways/class.pmprogateway_braintree.php:321
|
5543 |
+
#: classes/gateways/class.pmprogateway_braintree.php:328
|
5544 |
msgid "Public Key"
|
5545 |
msgstr "Clau Pública"
|
5546 |
|
5550 |
#: adminpages/paymentsettings.php:319
|
5551 |
#: classes/gateways/class.pmprogateway_braintree.php:140
|
5552 |
#: classes/gateways/class.pmprogateway_braintree.php:329
|
5553 |
+
#: classes/gateways/class.pmprogateway_braintree.php:336
|
5554 |
msgid "Private Key"
|
5555 |
msgstr "Clau Privada"
|
5556 |
|
5560 |
#: adminpages/paymentsettings.php:327
|
5561 |
#: classes/gateways/class.pmprogateway_braintree.php:148
|
5562 |
#: classes/gateways/class.pmprogateway_braintree.php:337
|
5563 |
+
#: classes/gateways/class.pmprogateway_braintree.php:344
|
5564 |
msgid "Client-Side Encryption Key"
|
5565 |
msgstr "Clau d’encriptació del Client"
|
5566 |
|
5578 |
#: classes/gateways/class.pmprogateway_stripe.php:182
|
5579 |
#: classes/gateways/class.pmprogateway_stripe.php:192
|
5580 |
#: classes/gateways/class.pmprogateway_braintree.php:345
|
5581 |
+
#: classes/gateways/class.pmprogateway_braintree.php:352
|
5582 |
msgid "Web Hook URL"
|
5583 |
msgstr "Web Hook URL"
|
5584 |
|
5589 |
#: adminpages/paymentsettings.php:523
|
5590 |
#: classes/gateways/class.pmprogateway_braintree.php:160
|
5591 |
#: classes/gateways/class.pmprogateway_braintree.php:348
|
5592 |
+
#: classes/gateways/class.pmprogateway_braintree.php:355
|
5593 |
msgid "To fully integrate with Braintree, be sure to set your Web Hook URL to"
|
5594 |
msgstr "Per integrar totalment Braintree, assegura’t de configurar Web Hook URL a"
|
5595 |
|
5616 |
#: classes/gateways/class.pmprogateway_stripe.php:1282
|
5617 |
#: classes/gateways/class.pmprogateway_stripe.php:1288
|
5618 |
#: classes/gateways/class.pmprogateway_stripe.php:747
|
5619 |
+
#: adminpages/orders.php:676
|
5620 |
+
#: classes/gateways/class.pmprogateway_braintree.php:461
|
5621 |
+
#: classes/gateways/class.pmprogateway_stripe.php:855
|
5622 |
msgid "Payment Information"
|
5623 |
msgstr "Informació de pagament"
|
5624 |
|
5645 |
#: classes/gateways/class.pmprogateway_stripe.php:1283
|
5646 |
#: classes/gateways/class.pmprogateway_stripe.php:1289
|
5647 |
#: classes/gateways/class.pmprogateway_stripe.php:748
|
5648 |
+
#: classes/gateways/class.pmprogateway_braintree.php:462
|
5649 |
+
#: classes/gateways/class.pmprogateway_stripe.php:856
|
5650 |
#, php-format
|
5651 |
msgid "We Accept %s"
|
5652 |
msgstr "Acceptem %s"
|
5679 |
#: classes/gateways/class.pmprogateway_stripe.php:1316
|
5680 |
#: classes/gateways/class.pmprogateway_stripe.php:1322
|
5681 |
#: classes/gateways/class.pmprogateway_stripe.php:781
|
5682 |
+
#: pages/billing.php:377
|
5683 |
+
#: classes/gateways/class.pmprogateway_braintree.php:482
|
5684 |
+
#: classes/gateways/class.pmprogateway_stripe.php:889
|
5685 |
msgid "Card Number"
|
5686 |
msgstr "Nombre de Tarjeta"
|
5687 |
|
5707 |
#: pages/checkout.php:603
|
5708 |
#: classes/gateways/class.pmprogateway_braintree.php:503
|
5709 |
#: pages/billing.php:410
|
5710 |
+
#: pages/billing.php:417
|
5711 |
+
#: classes/gateways/class.pmprogateway_braintree.php:510
|
5712 |
msgid "CVV"
|
5713 |
msgstr "CVV"
|
5714 |
|
5735 |
#: classes/gateways/class.pmprogateway_braintree.php:504
|
5736 |
#: pages/billing.php:411
|
5737 |
#: pages/checkout.php:425
|
5738 |
+
#: pages/billing.php:418
|
5739 |
+
#: classes/gateways/class.pmprogateway_braintree.php:511
|
5740 |
msgid "what's this?"
|
5741 |
msgstr "què és això?"
|
5742 |
|
5769 |
#: classes/gateways/class.pmprogateway_stripe.php:1338
|
5770 |
#: classes/gateways/class.pmprogateway_stripe.php:1344
|
5771 |
#: classes/gateways/class.pmprogateway_stripe.php:803
|
5772 |
+
#: classes/gateways/class.pmprogateway_braintree.php:518
|
5773 |
+
#: classes/gateways/class.pmprogateway_stripe.php:911
|
5774 |
msgid "Apply"
|
5775 |
msgstr "Aplica"
|
5776 |
|
5786 |
#: classes/gateways/class.pmprogateway_stripe.php:1036
|
5787 |
#: classes/gateways/class.pmprogateway_stripe.php:1040
|
5788 |
#: classes/gateways/class.pmprogateway_braintree.php:574
|
5789 |
+
#: classes/gateways/class.pmprogateway_braintree.php:581
|
5790 |
msgid "Unknown error: Initial payment failed."
|
5791 |
msgstr "Error desconegut: ha fallat el pagament inicial"
|
5792 |
|
5795 |
#: classes/gateways/class.pmprogateway_braintree.php:465
|
5796 |
#: classes/gateways/class.pmprogateway_braintree.php:478
|
5797 |
#: classes/gateways/class.pmprogateway_braintree.php:650
|
5798 |
+
#: classes/gateways/class.pmprogateway_braintree.php:653
|
5799 |
+
#: classes/gateways/class.pmprogateway_braintree.php:660
|
5800 |
msgid "Error during settlement:"
|
5801 |
msgstr "Error durant la liquidació:"
|
5802 |
|
5805 |
#: classes/gateways/class.pmprogateway_braintree.php:474
|
5806 |
#: classes/gateways/class.pmprogateway_braintree.php:487
|
5807 |
#: classes/gateways/class.pmprogateway_braintree.php:659
|
5808 |
+
#: classes/gateways/class.pmprogateway_braintree.php:662
|
5809 |
+
#: classes/gateways/class.pmprogateway_braintree.php:669
|
5810 |
msgid "Error during charge:"
|
5811 |
msgstr "Error durant la càrrega:"
|
5812 |
|
5816 |
#: classes/gateways/class.pmprogateway_braintree.php:566
|
5817 |
#: classes/gateways/class.pmprogateway_braintree.php:579
|
5818 |
#: classes/gateways/class.pmprogateway_braintree.php:762
|
5819 |
+
#: classes/gateways/class.pmprogateway_braintree.php:765
|
5820 |
+
#: classes/gateways/class.pmprogateway_braintree.php:772
|
5821 |
msgid "Failed to update customer."
|
5822 |
msgstr "No s’ha pogut actualitzar el comprador."
|
5823 |
|
5827 |
#: classes/gateways/class.pmprogateway_braintree.php:614
|
5828 |
#: classes/gateways/class.pmprogateway_braintree.php:627
|
5829 |
#: classes/gateways/class.pmprogateway_braintree.php:810
|
5830 |
+
#: classes/gateways/class.pmprogateway_braintree.php:813
|
5831 |
+
#: classes/gateways/class.pmprogateway_braintree.php:820
|
5832 |
msgid "Failed to create customer."
|
5833 |
msgstr "No s’ha pogut crear el comprador"
|
5834 |
|
5838 |
#: classes/gateways/class.pmprogateway_braintree.php:621
|
5839 |
#: classes/gateways/class.pmprogateway_braintree.php:634
|
5840 |
#: classes/gateways/class.pmprogateway_braintree.php:817
|
5841 |
+
#: classes/gateways/class.pmprogateway_braintree.php:820
|
5842 |
+
#: classes/gateways/class.pmprogateway_braintree.php:827
|
5843 |
msgid "Error creating customer record with Braintree:"
|
5844 |
msgstr "No s’ha pogut crear el comprador amb Branitree:"
|
5845 |
|
5888 |
#: classes/gateways/class.pmprogateway_stripe.php:402
|
5889 |
#: classes/gateways/class.pmprogateway_stripe.php:423
|
5890 |
#: classes/gateways/class.pmprogateway_braintree.php:1036
|
5891 |
+
#: classes/gateways/class.pmprogateway_braintree.php:1039
|
5892 |
+
#: classes/gateways/class.pmprogateway_braintree.php:1046
|
5893 |
msgid "Could not find the subscription."
|
5894 |
msgstr "No s’ha trobat la subscripció"
|
5895 |
|
5907 |
#: paid-memberships-pro.php:158
|
5908 |
#: paid-memberships-pro.php:160
|
5909 |
#: paid-memberships-pro.php:161
|
5910 |
+
#: paid-memberships-pro.php:167
|
5911 |
msgid "Pay by Check"
|
5912 |
msgstr "Pagament amb Check"
|
5913 |
|
6027 |
#: paid-memberships-pro.php:161
|
6028 |
#: paid-memberships-pro.php:163
|
6029 |
#: paid-memberships-pro.php:164
|
6030 |
+
#: paid-memberships-pro.php:170
|
6031 |
msgid "PayPal Website Payments Pro"
|
6032 |
msgstr "PayPal Website Payments Pro"
|
6033 |
|
6039 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:141
|
6040 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:133
|
6041 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:151
|
6042 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:152
|
6043 |
msgid "PayPal Settings"
|
6044 |
msgstr "Configuració PayPal"
|
6045 |
|
6062 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:162
|
6063 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:154
|
6064 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:172
|
6065 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:173
|
6066 |
msgid "Gateway Account Email"
|
6067 |
msgstr "Correu electrònic del compte de la Passarel·la"
|
6068 |
|
6083 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:162
|
6084 |
#: classes/gateways/class.pmprogateway_twocheckout.php:120
|
6085 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:180
|
6086 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:181
|
6087 |
+
#: classes/gateways/class.pmprogateway_twocheckout.php:127
|
6088 |
msgid "API Username"
|
6089 |
msgstr "API Usuari"
|
6090 |
|
6105 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:170
|
6106 |
#: classes/gateways/class.pmprogateway_twocheckout.php:129
|
6107 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:188
|
6108 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:189
|
6109 |
+
#: classes/gateways/class.pmprogateway_twocheckout.php:136
|
6110 |
msgid "API Password"
|
6111 |
msgstr "API Clau"
|
6112 |
|
6121 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:186
|
6122 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:178
|
6123 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:196
|
6124 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:197
|
6125 |
msgid "API Signature"
|
6126 |
msgstr "API Signatura"
|
6127 |
|
6137 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:205
|
6138 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:186
|
6139 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:215
|
6140 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:216
|
6141 |
msgid "IPN Handler URL"
|
6142 |
msgstr "IPN Handler URL"
|
6143 |
|
6165 |
#: pages/checkout.php:218
|
6166 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:498
|
6167 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:502
|
6168 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:503
|
6169 |
msgid "Check Out with PayPal"
|
6170 |
msgstr "Check Out amb PayPal"
|
6171 |
|
6187 |
#: pages/checkout.php:526
|
6188 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:503
|
6189 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:507
|
6190 |
+
#: pages/checkout.php:538
|
6191 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:508
|
6192 |
msgid "Submit and Check Out"
|
6193 |
msgstr "Envia i fés el Check Out"
|
6194 |
|
6214 |
#: pages/checkout.php:526
|
6215 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:503
|
6216 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:507
|
6217 |
+
#: pages/checkout.php:538
|
6218 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:508
|
6219 |
+
#: classes/gateways/class.pmprogateway_twocheckout.php:212
|
6220 |
msgid "Submit and Confirm"
|
6221 |
msgstr "Envia i confirma"
|
6222 |
|
6241 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:841
|
6242 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:845
|
6243 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:854
|
6244 |
+
#: classes/gateways/class.pmprogateway_paypal.php:726
|
6245 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:865
|
6246 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:866
|
6247 |
msgid "Please contact the site owner or cancel your subscription from within PayPal to make sure you are not charged going forward."
|
6248 |
msgstr "Contacteu al propietari del lloc o cancel·leu la vostra subscripció de PayPal per assegurar-te que no et cobraran en el futur."
|
6249 |
|
6259 |
#: paid-memberships-pro.php:162
|
6260 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:94
|
6261 |
#: paid-memberships-pro.php:163
|
6262 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:95
|
6263 |
+
#: paid-memberships-pro.php:169
|
6264 |
msgid "PayPal Express"
|
6265 |
msgstr "PayPal Express"
|
6266 |
|
6273 |
#: classes/gateways/class.pmprogateway_paypal.php:199
|
6274 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:208
|
6275 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:218
|
6276 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:219
|
6277 |
msgid "To fully integrate with PayPal, be sure to set your IPN Handler URL to "
|
6278 |
msgstr "Per integrar completament PayPal, assegura’t de configurar el teu IPN Handler URL a"
|
6279 |
|
6297 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:401
|
6298 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:352
|
6299 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:411
|
6300 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:353
|
6301 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:412
|
6302 |
msgid "The PayPal Token was lost."
|
6303 |
msgstr "S’ha perdut el Token de PayPal"
|
6304 |
|
6312 |
#: paid-memberships-pro.php:163
|
6313 |
#: paid-memberships-pro.php:165
|
6314 |
#: paid-memberships-pro.php:166
|
6315 |
+
#: paid-memberships-pro.php:172
|
6316 |
msgid "PayPal Standard"
|
6317 |
msgstr "PayPal Standard"
|
6318 |
|
6341 |
#: classes/gateways/class.pmprogateway_stripe.php:258
|
6342 |
#: classes/gateways/class.pmprogateway_stripe.php:216
|
6343 |
#: paid-memberships-pro.php:162
|
6344 |
+
#: classes/gateways/class.pmprogateway_stripe.php:234
|
6345 |
+
#: paid-memberships-pro.php:168
|
6346 |
msgid "Stripe"
|
6347 |
msgstr "Stripe"
|
6348 |
|
6365 |
#: classes/gateways/class.pmprogateway_stripe.php:570
|
6366 |
#: classes/gateways/class.pmprogateway_stripe.php:576
|
6367 |
#: classes/gateways/class.pmprogateway_stripe.php:340
|
6368 |
+
#: classes/gateways/class.pmprogateway_stripe.php:366
|
6369 |
msgid "Secret Key"
|
6370 |
msgstr "Secret Key"
|
6371 |
|
6381 |
#: classes/gateways/class.pmprogateway_stripe.php:554
|
6382 |
#: classes/gateways/class.pmprogateway_stripe.php:560
|
6383 |
#: classes/gateways/class.pmprogateway_stripe.php:324
|
6384 |
+
#: classes/gateways/class.pmprogateway_stripe.php:350
|
6385 |
msgid "Publishable Key"
|
6386 |
msgstr "Clau Publicable"
|
6387 |
|
6397 |
#: classes/gateways/class.pmprogateway_stripe.php:629
|
6398 |
#: classes/gateways/class.pmprogateway_stripe.php:635
|
6399 |
#: classes/gateways/class.pmprogateway_stripe.php:399
|
6400 |
+
#: adminpages/orders.php:570
|
6401 |
+
#: classes/gateways/class.pmprogateway_stripe.php:425
|
6402 |
msgid "Show Billing Address Fields"
|
6403 |
msgstr "Mostra els camps d’adreça de facturació"
|
6404 |
|
6413 |
#: classes/gateways/class.pmprogateway_stripe.php:638
|
6414 |
#: classes/gateways/class.pmprogateway_stripe.php:644
|
6415 |
#: classes/gateways/class.pmprogateway_stripe.php:408
|
6416 |
+
#: classes/gateways/class.pmprogateway_stripe.php:434
|
6417 |
msgid "Stripe doesn't require billing address fields. Choose 'No' to hide them on the checkout page.<br /><strong>If No, make sure you disable address verification in the Stripe dashboard settings.</strong>"
|
6418 |
msgstr "Stripe no necessita camps d’adreça de facturació. Escull “No” per amagar-los de la pàgina de Checkout.<br /><strong>Si No, assegura’t de desabilitar la verificació de l’adreça a l’escripori de configuració de l’Stripe.</strong>"
|
6419 |
|
6440 |
#: classes/gateways/class.pmprogateway_stripe.php:2650
|
6441 |
#: classes/gateways/class.pmprogateway_stripe.php:2646
|
6442 |
#: classes/gateways/class.pmprogateway_stripe.php:2648
|
6443 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2644
|
6444 |
+
#: classes/gateways/class.pmprogateway_stripe.php:3101
|
6445 |
msgid "Subscription Updates"
|
6446 |
msgstr "Actualització de subscripcions"
|
6447 |
|
6489 |
#: pages/billing.php:434
|
6490 |
#: classes/gateways/class.pmprogateway_stripe.php:2651
|
6491 |
#: classes/gateways/class.pmprogateway_stripe.php:2653
|
6492 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2649
|
6493 |
+
#: pages/billing.php:441
|
6494 |
+
#: classes/gateways/class.pmprogateway_stripe.php:3106
|
6495 |
msgid "Update"
|
6496 |
msgstr "Actualitza"
|
6497 |
|
6507 |
#: classes/gateways/class.pmprogateway_stripe.php:3045
|
6508 |
#: classes/gateways/class.pmprogateway_stripe.php:3041
|
6509 |
#: classes/gateways/class.pmprogateway_stripe.php:3043
|
6510 |
+
#: classes/gateways/class.pmprogateway_stripe.php:3039
|
6511 |
+
#: classes/gateways/class.pmprogateway_stripe.php:3504
|
6512 |
msgid "Could not cancel the old subscription. Updates have not been processed."
|
6513 |
msgstr "No s’ha pogut cancel·lar l’antiga subscripció. Les actualitzacions no s’han processat."
|
6514 |
|
6555 |
#: classes/gateways/class.pmprogateway_stripe.php:4065
|
6556 |
#: classes/gateways/class.pmprogateway_stripe.php:4062
|
6557 |
#: classes/gateways/class.pmprogateway_stripe.php:4067
|
6558 |
+
#: classes/gateways/class.pmprogateway_stripe.php:4058
|
6559 |
+
#: classes/gateways/class.pmprogateway_stripe.php:4063
|
6560 |
+
#: classes/gateways/class.pmprogateway_stripe.php:4522
|
6561 |
+
#: classes/gateways/class.pmprogateway_stripe.php:4527
|
6562 |
msgid "Error getting subscription with Stripe:"
|
6563 |
msgstr "Error agafant la subscripció amb Stripe:"
|
6564 |
|
6596 |
#: classes/gateways/class.pmprogateway_stripe.php:4166
|
6597 |
#: classes/gateways/class.pmprogateway_stripe.php:4163
|
6598 |
#: classes/gateways/class.pmprogateway_stripe.php:4168
|
6599 |
+
#: classes/gateways/class.pmprogateway_stripe.php:4159
|
6600 |
+
#: classes/gateways/class.pmprogateway_stripe.php:4164
|
6601 |
+
#: classes/gateways/class.pmprogateway_stripe.php:4623
|
6602 |
+
#: classes/gateways/class.pmprogateway_stripe.php:4628
|
6603 |
msgid "Error creating plan with Stripe:"
|
6604 |
msgstr "Error creant pla amb Stripe:"
|
6605 |
|
6632 |
#: classes/gateways/class.pmprogateway_stripe.php:4211
|
6633 |
#: classes/gateways/class.pmprogateway_stripe.php:4199
|
6634 |
#: classes/gateways/class.pmprogateway_stripe.php:4213
|
6635 |
+
#: classes/gateways/class.pmprogateway_stripe.php:4195
|
6636 |
+
#: classes/gateways/class.pmprogateway_stripe.php:4209
|
6637 |
+
#: classes/gateways/class.pmprogateway_stripe.php:4659
|
6638 |
+
#: classes/gateways/class.pmprogateway_stripe.php:4673
|
6639 |
msgid "Error subscribing customer to plan with Stripe:"
|
6640 |
msgstr "Error subscrivint un pla de comprador amb Stripe:"
|
6641 |
|
6657 |
#: classes/gateways/class.pmprogateway_stripe.php:2672
|
6658 |
#: classes/gateways/class.pmprogateway_stripe.php:1731
|
6659 |
#: classes/gateways/class.pmprogateway_stripe.php:1729
|
6660 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2148
|
6661 |
msgid "Could not cancel old subscription."
|
6662 |
msgstr "No s’ha pogut cancel·lar l’antiga subscripció. "
|
6663 |
|
6676 |
#: classes/gateways/class.pmprogateway_stripe.php:2688
|
6677 |
#: classes/gateways/class.pmprogateway_stripe.php:1747
|
6678 |
#: classes/gateways/class.pmprogateway_stripe.php:1745
|
6679 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2164
|
6680 |
msgid "Could not find the customer."
|
6681 |
msgstr "No s’ha trobat el comprador."
|
6682 |
|
6688 |
#: paid-memberships-pro.php:125
|
6689 |
#: paid-memberships-pro.php:132
|
6690 |
#: paid-memberships-pro.php:133
|
6691 |
+
#: classes/gateways/class.pmprogateway_twocheckout.php:66
|
6692 |
msgid "2Checkout"
|
6693 |
msgstr "2Checkout"
|
6694 |
|
6696 |
#: classes/gateways/class.pmprogateway_twocheckout.php:108
|
6697 |
#: classes/gateways/class.pmprogateway_twocheckout.php:116
|
6698 |
#: classes/gateways/class.pmprogateway_twocheckout.php:115
|
6699 |
+
#: classes/gateways/class.pmprogateway_twocheckout.php:122
|
6700 |
msgid "2Checkout Settings"
|
6701 |
msgstr "Configuració de 2Checkout"
|
6702 |
|
6703 |
#: classes/gateways/class.pmprogateway_twocheckout.php:123
|
6704 |
#: classes/gateways/class.pmprogateway_twocheckout.php:125
|
6705 |
#: classes/gateways/class.pmprogateway_twocheckout.php:124
|
6706 |
+
#: classes/gateways/class.pmprogateway_twocheckout.php:131
|
6707 |
msgid "Go to Account » User Management in 2Checkout and create a user with API Access and API Updating."
|
6708 |
msgstr "Vés a Account » User Management in 2Checkout i crea un usuari amb API Access i API Updating."
|
6709 |
|
6710 |
#: classes/gateways/class.pmprogateway_twocheckout.php:132
|
6711 |
#: classes/gateways/class.pmprogateway_twocheckout.php:134
|
6712 |
#: classes/gateways/class.pmprogateway_twocheckout.php:133
|
6713 |
+
#: classes/gateways/class.pmprogateway_twocheckout.php:140
|
6714 |
msgid "Password for the API user created."
|
6715 |
msgstr "Clau per a l’usuari de l’API creada."
|
6716 |
|
6717 |
#: classes/gateways/class.pmprogateway_twocheckout.php:141
|
6718 |
#: classes/gateways/class.pmprogateway_twocheckout.php:152
|
6719 |
#: classes/gateways/class.pmprogateway_twocheckout.php:142
|
6720 |
+
#: classes/gateways/class.pmprogateway_twocheckout.php:149
|
6721 |
msgid "Click on the profile icon in 2Checkout to find your Account Number."
|
6722 |
msgstr "Clica a la icona del perfil a 2Checkout per trobar el teu Account Number."
|
6723 |
|
6727 |
#: classes/gateways/class.pmprogateway_twocheckout.php:137
|
6728 |
#: classes/gateways/class.pmprogateway_twocheckout.php:157
|
6729 |
#: classes/gateways/class.pmprogateway_twocheckout.php:147
|
6730 |
+
#: classes/gateways/class.pmprogateway_twocheckout.php:154
|
6731 |
msgid "Secret Word"
|
6732 |
msgstr "Paraula Secreta"
|
6733 |
|
6734 |
#: classes/gateways/class.pmprogateway_twocheckout.php:150
|
6735 |
#: classes/gateways/class.pmprogateway_twocheckout.php:161
|
6736 |
#: classes/gateways/class.pmprogateway_twocheckout.php:151
|
6737 |
+
#: classes/gateways/class.pmprogateway_twocheckout.php:158
|
6738 |
msgid "Go to Account » Site Management. Look under Checkout Options to find the Secret Word."
|
6739 |
msgstr "Vés a Account » Site Management. Mira sota Checkout Options i troba la Paraula Secreta"
|
6740 |
|
6745 |
#: classes/gateways/class.pmprogateway_twocheckout.php:145
|
6746 |
#: classes/gateways/class.pmprogateway_twocheckout.php:166
|
6747 |
#: classes/gateways/class.pmprogateway_twocheckout.php:156
|
6748 |
+
#: classes/gateways/class.pmprogateway_twocheckout.php:163
|
6749 |
msgid "TwoCheckout INS URL"
|
6750 |
msgstr "TwoCheckout INS URL"
|
6751 |
|
6752 |
#: classes/gateways/class.pmprogateway_twocheckout.php:158
|
6753 |
#: classes/gateways/class.pmprogateway_twocheckout.php:169
|
6754 |
#: classes/gateways/class.pmprogateway_twocheckout.php:159
|
6755 |
+
#: classes/gateways/class.pmprogateway_twocheckout.php:166
|
6756 |
msgid "To fully integrate with 2Checkout, be sure to use the following for your INS URL and Approved URL"
|
6757 |
msgstr "Per integrar-te totalment amb 2Checkout, assegura’t d’utilitzar la següent INS URL i Approved URL"
|
6758 |
|
6760 |
#: classes/gateways/class.pmprogateway_twocheckout.php:192
|
6761 |
#: classes/gateways/class.pmprogateway_twocheckout.php:214
|
6762 |
#: classes/gateways/class.pmprogateway_twocheckout.php:205
|
6763 |
+
#: classes/gateways/class.pmprogateway_twocheckout.php:212
|
6764 |
msgid "Check Out with 2Checkout"
|
6765 |
msgstr "Check Out amb 2Checkout"
|
6766 |
|
7198 |
#: includes/functions.php:207
|
7199 |
#: includes/functions.php:393
|
7200 |
#: includes/functions.php:509
|
7201 |
+
#: includes/functions.php:397
|
7202 |
+
#: includes/functions.php:515
|
7203 |
#, php-format
|
7204 |
msgid "The price for membership is <strong>%s</strong> now"
|
7205 |
msgstr "El preu per a la subscripció és <strong>%s</strong> ara"
|
7212 |
#: includes/functions.php:209
|
7213 |
#: includes/functions.php:398
|
7214 |
#: includes/functions.php:511
|
7215 |
+
#: includes/functions.php:402
|
7216 |
+
#: includes/functions.php:517
|
7217 |
#, php-format
|
7218 |
msgid "<strong>%s</strong> now"
|
7219 |
msgstr "<strong>%s</strong> ara"
|
7323 |
#: includes/functions.php:271
|
7324 |
#: pages/levels.php:82
|
7325 |
#: includes/functions.php:446
|
7326 |
+
#: includes/functions.php:450
|
7327 |
msgid "After your initial payment, your first payment is Free."
|
7328 |
msgstr "Després del teu pagament inicial, el teu primer pagament és Gratuït."
|
7329 |
|
7339 |
#: includes/functions.php:275
|
7340 |
#: pages/levels.php:86
|
7341 |
#: includes/functions.php:448
|
7342 |
+
#: includes/functions.php:452
|
7343 |
#, php-format
|
7344 |
msgid "After your initial payment, your first %d payments are Free."
|
7345 |
msgstr "Després del teu pagament inicial, el teu %d pagaments són gratuïts."
|
7356 |
#: includes/functions.php:282
|
7357 |
#: pages/levels.php:93
|
7358 |
#: includes/functions.php:452
|
7359 |
+
#: includes/functions.php:456
|
7360 |
#, php-format
|
7361 |
msgid "After your initial payment, your first payment will cost %s."
|
7362 |
msgstr "Després del teu pagament inicial, el teu primer pagament és de %s."
|
7418 |
#: includes/functions.php:592
|
7419 |
#: includes/functions.php:615
|
7420 |
#: includes/functions.php:979
|
7421 |
+
#: includes/functions.php:986
|
7422 |
msgid "User ID not found."
|
7423 |
msgstr "No s’ha trobat el teu ID d’usuari"
|
7424 |
|
7438 |
#: includes/functions.php:635
|
7439 |
#: includes/functions.php:1003
|
7440 |
#: includes/functions.php:1011
|
7441 |
+
#: includes/functions.php:1010
|
7442 |
+
#: includes/functions.php:1018
|
7443 |
msgid "Invalid level."
|
7444 |
msgstr "Nivell no vàlid"
|
7445 |
|
7500 |
#: includes/functions.php:723
|
7501 |
#: includes/functions.php:746
|
7502 |
#: includes/functions.php:1085
|
7503 |
+
#: includes/functions.php:1092
|
7504 |
msgid "Error interacting with database"
|
7505 |
msgstr "Error interactuant amb la base de dades"
|
7506 |
|
7537 |
#: includes/functions.php:1342
|
7538 |
#: includes/functions.php:1335
|
7539 |
#: includes/functions.php:1373
|
7540 |
+
#: includes/functions.php:1343
|
7541 |
+
#: includes/functions.php:1382
|
7542 |
msgid "Membership level not found."
|
7543 |
msgstr "Nivell de subscripció no trobat."
|
7544 |
|
7554 |
#: includes/functions.php:1196
|
7555 |
#: includes/functions.php:1722
|
7556 |
#: includes/functions.php:1753
|
7557 |
+
#: includes/functions.php:1767
|
7558 |
msgid "No code was given to check."
|
7559 |
msgstr "No s’ha donat cap codi per a fer el check"
|
7560 |
|
7577 |
#: includes/functions.php:1205
|
7578 |
#: includes/functions.php:1731
|
7579 |
#: includes/functions.php:1762
|
7580 |
+
#: includes/functions.php:1776
|
7581 |
msgid "The discount code could not be found."
|
7582 |
msgstr "No s’ha trobat el codi de descompte"
|
7583 |
|
7600 |
#: includes/functions.php:1220
|
7601 |
#: includes/functions.php:1746
|
7602 |
#: includes/functions.php:1777
|
7603 |
+
#: includes/functions.php:1791
|
7604 |
#, php-format
|
7605 |
msgid "This discount code goes into effect on %s."
|
7606 |
msgstr "El codi de descompte serà efectiu a %s."
|
7624 |
#: includes/functions.php:1227
|
7625 |
#: includes/functions.php:1753
|
7626 |
#: includes/functions.php:1784
|
7627 |
+
#: includes/functions.php:1798
|
7628 |
#, php-format
|
7629 |
msgid "This discount code expired on %s."
|
7630 |
msgstr "Aquest codi de descompte ha expirat a %s."
|
7648 |
#: includes/functions.php:1237
|
7649 |
#: includes/functions.php:1762
|
7650 |
#: includes/functions.php:1793
|
7651 |
+
#: includes/functions.php:1807
|
7652 |
msgid "This discount code is no longer valid."
|
7653 |
msgstr "Aquest codi de descompte ja no és vàlid."
|
7654 |
|
7670 |
#: includes/functions.php:1250
|
7671 |
#: includes/functions.php:1781
|
7672 |
#: includes/functions.php:1812
|
7673 |
+
#: includes/functions.php:1826
|
7674 |
msgid "This discount code does not apply to this membership level."
|
7675 |
msgstr "Aquest codi de descompte no s’aplica a aquest nivell de subscripció."
|
7676 |
|
7693 |
#: includes/functions.php:1276
|
7694 |
#: includes/functions.php:1819
|
7695 |
#: includes/functions.php:1850
|
7696 |
+
#: includes/functions.php:1864
|
7697 |
msgid "This discount code is okay."
|
7698 |
msgstr "El codi de descompte és OK"
|
7699 |
|
7716 |
#: includes/functions.php:1395
|
7717 |
#: includes/functions.php:1847
|
7718 |
#: includes/functions.php:1878
|
7719 |
+
#: includes/functions.php:1894
|
7720 |
msgid "and"
|
7721 |
msgstr "i"
|
7722 |
|
7740 |
#: includes/functions.php:1620
|
7741 |
#: includes/functions.php:2409
|
7742 |
#: includes/functions.php:2440
|
7743 |
+
#: includes/functions.php:2460
|
7744 |
+
#: includes/functions.php:2462
|
7745 |
msgid "Sign Up for !!name!! Now"
|
7746 |
msgstr "Sign Up per !!name!! Ara"
|
7747 |
|
7787 |
#: includes/metaboxes.php:19
|
7788 |
#: classes/class.pmproemail.php:888
|
7789 |
#: classes/class.pmproemail.php:933
|
7790 |
+
#: adminpages/orders.php:587
|
7791 |
+
#: adminpages/orders.php:708
|
7792 |
+
#: classes/class.pmproemail.php:1021
|
7793 |
+
#: classes/class.pmproemail.php:1066
|
7794 |
msgid "None"
|
7795 |
msgstr "Cap"
|
7796 |
|
7802 |
#: includes/license.php:81
|
7803 |
#: adminpages/license.php:43
|
7804 |
#: adminpages/license.php:33
|
7805 |
+
#: adminpages/license.php:45
|
7806 |
msgid "Paid Memberships Pro Support License"
|
7807 |
msgstr "Paid Memberships Pro Support License"
|
7808 |
|
7823 |
#: adminpages/license.php:49
|
7824 |
#: adminpages/dashboard.php:178
|
7825 |
#: adminpages/license.php:41
|
7826 |
+
#: adminpages/license.php:53
|
7827 |
msgid "Your license is invalid or expired."
|
7828 |
msgstr "La teva license és invalida o ha expirat"
|
7829 |
|
7836 |
#: adminpages/license.php:59
|
7837 |
#: adminpages/license.php:51
|
7838 |
#: adminpages/license.php:53
|
7839 |
+
#: adminpages/license.php:65
|
7840 |
msgid "Enter license key here..."
|
7841 |
msgstr "Introdueix license key aquí"
|
7842 |
|
7950 |
#: includes/profile.php:255
|
7951 |
#: includes/profile.php:186
|
7952 |
#: includes/profile.php:233
|
7953 |
+
#: includes/profile.php:202
|
7954 |
+
#: includes/profile.php:249
|
7955 |
msgid "Not paying."
|
7956 |
msgstr "Sense pagament fet."
|
7957 |
|
8054 |
#: adminpages/orders.php:1335
|
8055 |
#: adminpages/dashboard.php:226
|
8056 |
#: adminpages/dashboard.php:294
|
8057 |
+
#: adminpages/orders.php:1336
|
8058 |
+
#: adminpages/reports/login.php:185
|
8059 |
+
#: adminpages/orders.php:1429
|
8060 |
+
#: includes/profile.php:451
|
8061 |
+
#: includes/profile.php:536
|
8062 |
msgid "Level"
|
8063 |
msgstr "Nivell"
|
8064 |
|
8066 |
#: pages/account.php:14
|
8067 |
#: pages/billing.php:18
|
8068 |
#: pages/billing.php:72
|
8069 |
+
#: pages/billing.php:73
|
8070 |
msgid "Membership Fee"
|
8071 |
msgstr "Preu de subscripció"
|
8072 |
|
8075 |
#: pages/billing.php:22
|
8076 |
#: pages/levels.php:70
|
8077 |
#: pages/billing.php:76
|
8078 |
+
#: pages/billing.php:77
|
8079 |
#, php-format
|
8080 |
msgid "%s every %d %s."
|
8081 |
msgstr "%s cada %d %s."
|
8085 |
#: pages/billing.php:24
|
8086 |
#: pages/levels.php:66
|
8087 |
#: pages/billing.php:78
|
8088 |
+
#: pages/billing.php:79
|
8089 |
#, php-format
|
8090 |
msgid "%s per %s."
|
8091 |
msgstr "%s per %s."
|
8096 |
#: pages/billing.php:29
|
8097 |
#: pages/billing.php:33
|
8098 |
#: pages/billing.php:89
|
8099 |
+
#: pages/billing.php:90
|
8100 |
msgid "Duration"
|
8101 |
msgstr "Durada"
|
8102 |
|
8104 |
#: pages/billing.php:39
|
8105 |
#: pages/billing.php:43
|
8106 |
#: pages/billing.php:128
|
8107 |
+
#: pages/billing.php:130
|
8108 |
msgid "Your payment subscription is managed by PayPal. Please <a href=\"http://www.paypal.com\">login to PayPal here</a> to update your billing information."
|
8109 |
msgstr "El pagament de la teva subscripció és gestionat per PayPal. Si us plau <a href=\"http://www.paypal.com\">login to PayPal aquí</a> per actualitzar la teva informació de pagament."
|
8110 |
|
8124 |
#: pages/checkout.php:234
|
8125 |
#: includes/profile.php:759
|
8126 |
#: includes/profile.php:755
|
8127 |
+
#: pages/billing.php:166
|
8128 |
+
#: includes/profile.php:795
|
8129 |
msgid "First Name"
|
8130 |
msgstr "Nom"
|
8131 |
|
8145 |
#: pages/checkout.php:238
|
8146 |
#: includes/profile.php:760
|
8147 |
#: includes/profile.php:756
|
8148 |
+
#: pages/billing.php:170
|
8149 |
+
#: includes/profile.php:796
|
8150 |
msgid "Last Name"
|
8151 |
msgstr "Cognoms"
|
8152 |
|
8163 |
#: pages/checkout.php:336
|
8164 |
#: pages/billing.php:174
|
8165 |
#: pages/checkout.php:242
|
8166 |
+
#: pages/billing.php:176
|
8167 |
msgid "Address 1"
|
8168 |
msgstr "Adreça 1"
|
8169 |
|
8180 |
#: pages/checkout.php:340
|
8181 |
#: pages/billing.php:178
|
8182 |
#: pages/checkout.php:246
|
8183 |
+
#: pages/billing.php:180
|
8184 |
msgid "Address 2"
|
8185 |
msgstr "Adreça 2"
|
8186 |
|
8197 |
#: pages/checkout.php:350
|
8198 |
#: pages/billing.php:188
|
8199 |
#: pages/checkout.php:253
|
8200 |
+
#: pages/billing.php:191
|
8201 |
msgid "City"
|
8202 |
msgstr "Ciutat"
|
8203 |
|
8214 |
#: pages/checkout.php:354
|
8215 |
#: pages/billing.php:192
|
8216 |
#: pages/checkout.php:257
|
8217 |
+
#: pages/billing.php:195
|
8218 |
msgid "State"
|
8219 |
msgstr "State/província"
|
8220 |
|
8231 |
#: pages/checkout.php:358
|
8232 |
#: pages/billing.php:196
|
8233 |
#: pages/checkout.php:261
|
8234 |
+
#: pages/billing.php:199
|
8235 |
msgid "Postal Code"
|
8236 |
msgstr "Codi Postal"
|
8237 |
|
8248 |
#: pages/checkout.php:367
|
8249 |
#: pages/billing.php:205
|
8250 |
#: pages/checkout.php:266
|
8251 |
+
#: pages/billing.php:208
|
8252 |
msgid "City, State Zip"
|
8253 |
msgstr "Ciutat, CP"
|
8254 |
|
8265 |
#: pages/checkout.php:420
|
8266 |
#: pages/billing.php:258
|
8267 |
#: pages/checkout.php:303
|
8268 |
+
#: pages/billing.php:261
|
8269 |
msgid "Country"
|
8270 |
msgstr "País"
|
8271 |
|
8282 |
#: pages/checkout.php:445
|
8283 |
#: pages/billing.php:283
|
8284 |
#: pages/checkout.php:319
|
8285 |
+
#: pages/billing.php:287
|
8286 |
msgid "Phone"
|
8287 |
msgstr "Telèfon"
|
8288 |
|
8306 |
#: pages/billing.php:294
|
8307 |
#: pages/checkout.php:164
|
8308 |
#: pages/checkout.php:334
|
8309 |
+
#: pages/billing.php:298
|
8310 |
msgid "Email Address"
|
8311 |
msgstr "Correu electrònic"
|
8312 |
|
8323 |
#: pages/checkout.php:469
|
8324 |
#: pages/billing.php:298
|
8325 |
#: pages/checkout.php:341
|
8326 |
+
#: pages/billing.php:302
|
8327 |
msgid "Confirm Email"
|
8328 |
msgstr "Confirma Correu electrònic"
|
8329 |
|
8332 |
#: pages/billing.php:221
|
8333 |
#: pages/billing.php:230
|
8334 |
#: pages/billing.php:321
|
8335 |
+
#: pages/billing.php:325
|
8336 |
msgid "Credit Card Information"
|
8337 |
msgstr "Informació de la Tarjeta de Crèdit"
|
8338 |
|
8341 |
#: pages/billing.php:221
|
8342 |
#: pages/billing.php:230
|
8343 |
#: pages/billing.php:322
|
8344 |
+
#: pages/billing.php:326
|
8345 |
#, php-format
|
8346 |
msgid "We accept %s"
|
8347 |
msgstr "Acceptem %s"
|
8354 |
#: pages/billing.php:356
|
8355 |
#: pages/billing.php:467
|
8356 |
#: pages/billing.php:477
|
8357 |
+
#: pages/billing.php:484
|
8358 |
msgid "This subscription is not recurring. So you don't need to update your billing information."
|
8359 |
msgstr "Aquesta subscripció no és recurrent. Per tant, no necessites actualitzar la teva informació de pagament."
|
8360 |
|
8579 |
#: pages/checkout.php:681
|
8580 |
#: pages/checkout.php:690
|
8581 |
#: pages/checkout.php:476
|
8582 |
+
#: pages/checkout.php:478
|
8583 |
#, php-format
|
8584 |
msgid "I agree to the %s"
|
8585 |
msgstr "Estic d’acord amb %s"
|
8593 |
#: pages/checkout.php:701
|
8594 |
#: pages/checkout.php:710
|
8595 |
#: pages/checkout.php:514
|
8596 |
+
#: pages/checkout.php:526
|
8597 |
msgid "Complete Payment"
|
8598 |
msgstr "Completa pagament"
|
8599 |
|
8606 |
#: pages/checkout.php:723
|
8607 |
#: pages/checkout.php:732
|
8608 |
#: pages/checkout.php:536
|
8609 |
+
#: pages/checkout.php:548
|
8610 |
msgid "Processing..."
|
8611 |
msgstr "Processant…"
|
8612 |
|
8648 |
#: includes/profile.php:433
|
8649 |
#: adminpages/orders.php:1423
|
8650 |
#: adminpages/orders.php:1433
|
8651 |
+
#: adminpages/orders.php:391
|
8652 |
+
#: adminpages/orders.php:1424
|
8653 |
+
#: adminpages/orders.php:1434
|
8654 |
+
#: adminpages/orders.php:439
|
8655 |
+
#: adminpages/orders.php:1539
|
8656 |
+
#: adminpages/orders.php:1549
|
8657 |
+
#: includes/profile.php:473
|
8658 |
msgid "Print"
|
8659 |
msgstr "Imprimeix"
|
8660 |
|
8689 |
#: pages/billing.php:96
|
8690 |
#: pages/confirmation.php:95
|
8691 |
#: pages/invoice.php:85
|
8692 |
+
#: pages/billing.php:98
|
8693 |
msgid "Payment Method"
|
8694 |
msgstr "Mètode de pagament"
|
8695 |
|
8705 |
#: pages/invoice.php:97
|
8706 |
#: pages/invoice.php:125
|
8707 |
#: includes/profile.php:413
|
8708 |
+
#: includes/profile.php:453
|
8709 |
msgid "Total Billed"
|
8710 |
msgstr "Total facturat"
|
8711 |
|
8716 |
#: pages/billing.php:98
|
8717 |
#: pages/confirmation.php:97
|
8718 |
#: pages/invoice.php:87
|
8719 |
+
#: pages/billing.php:100
|
8720 |
msgid "ending in"
|
8721 |
msgstr "acaba a"
|
8722 |
|
8730 |
#: pages/confirmation.php:103
|
8731 |
#: pages/confirmation.php:138
|
8732 |
#: shortcodes/pmpro_account.php:247
|
8733 |
+
#: pages/confirmation.php:65
|
8734 |
msgid "Pending"
|
8735 |
msgstr "Pendent"
|
8736 |
|
8742 |
#: pages/billing.php:131
|
8743 |
#: pages/confirmation.php:149
|
8744 |
#: pages/invoice.php:155
|
8745 |
+
#: pages/billing.php:127
|
8746 |
+
#: pages/billing.php:133
|
8747 |
msgid "View Your Membership Account →"
|
8748 |
msgstr "Mira el teu compte de subscripció →"
|
8749 |
|
8757 |
#: pages/invoice.php:80
|
8758 |
#: includes/functions.php:2857
|
8759 |
#: includes/functions.php:2888
|
8760 |
+
#: includes/functions.php:2910
|
8761 |
+
#: includes/functions.php:2912
|
8762 |
msgid "Coupon"
|
8763 |
msgstr "Cupó"
|
8764 |
|
8784 |
#: pages/levels.php:33
|
8785 |
#: pages/levels.php:43
|
8786 |
#: includes/functions.php:396
|
8787 |
+
#: includes/functions.php:400
|
8788 |
msgid "Free"
|
8789 |
msgstr "Gratuït"
|
8790 |
|
8843 |
#: paid-memberships-pro.php:157
|
8844 |
#: paid-memberships-pro.php:159
|
8845 |
#: paid-memberships-pro.php:160
|
8846 |
+
#: paid-memberships-pro.php:166
|
8847 |
msgid "Testing Only"
|
8848 |
msgstr "Només test"
|
8849 |
|
8855 |
#: paid-memberships-pro.php:162
|
8856 |
#: paid-memberships-pro.php:164
|
8857 |
#: paid-memberships-pro.php:165
|
8858 |
+
#: paid-memberships-pro.php:171
|
8859 |
msgid "PayPal Payflow Pro/PayPal Pro"
|
8860 |
msgstr "PayPal Payflow Pro/PayPal Pro"
|
8861 |
|
8867 |
#: paid-memberships-pro.php:166
|
8868 |
#: paid-memberships-pro.php:168
|
8869 |
#: paid-memberships-pro.php:169
|
8870 |
+
#: paid-memberships-pro.php:175
|
8871 |
msgid "Cybersource"
|
8872 |
msgstr "Cybersource"
|
8873 |
|
8874 |
#: paid-memberships-pro.php:156
|
8875 |
#: paid-memberships-pro.php:194
|
8876 |
#: paid-memberships-pro.php:195
|
8877 |
+
#: paid-memberships-pro.php:201
|
8878 |
msgid "Once a month"
|
8879 |
msgstr "Un cop al mes"
|
8880 |
|
8992 |
#: classes/class.pmproemail.php:907
|
8993 |
#: includes/email.php:459
|
8994 |
#: classes/class.pmproemail.php:900
|
8995 |
+
#: classes/class.pmproemail.php:1033
|
8996 |
msgid "Your membership has been cancelled."
|
8997 |
msgstr "La teva subscripció ha estat cancel·lada."
|
8998 |
|
9292 |
#: services/authnet-silent-post.php:173
|
9293 |
#: services/authnet-silent-post.php:176
|
9294 |
#: services/authnet-silent-post.php:177
|
9295 |
+
#: services/authnet-silent-post.php:178
|
9296 |
msgid "<p>A payment is being held for review within Authorize.net.</p><p>Payment Information From Authorize.net"
|
9297 |
msgstr "<p>Un pagament s’està revisant a Authorize.net.</p><p>Payment Information From Authorize.net"
|
9298 |
|
9309 |
#: pages/account.php:19
|
9310 |
#: includes/email-templates.php:68
|
9311 |
#: shortcodes/pmpro_account.php:43
|
9312 |
+
#: adminpages/orders.php:1431
|
9313 |
msgid "Billing"
|
9314 |
msgstr "Facturació"
|
9315 |
|
9364 |
#: includes/profile.php:921
|
9365 |
#: includes/profile.php:880
|
9366 |
#: includes/profile.php:917
|
9367 |
+
#: includes/profile.php:920
|
9368 |
+
#: includes/profile.php:957
|
9369 |
msgid "Change Password"
|
9370 |
msgstr "Canvia Clau"
|
9371 |
|
9464 |
#: includes/profile.php:515
|
9465 |
#: includes/profile.php:511
|
9466 |
#: adminpages/advancedsettings.php:331
|
9467 |
+
#: adminpages/advancedsettings.php:338
|
9468 |
+
#: includes/profile.php:551
|
9469 |
msgid "Never"
|
9470 |
msgstr "Mai"
|
9471 |
|
9525 |
#: adminpages/reports/login.php:28
|
9526 |
#: adminpages/reports/login.php:29
|
9527 |
#: adminpages/reports/login.php:189
|
9528 |
+
#: adminpages/reports/login.php:192
|
9529 |
msgid "Visits All Time"
|
9530 |
msgstr "Visites sempre"
|
9531 |
|
9537 |
#: adminpages/reports/login.php:33
|
9538 |
#: adminpages/reports/login.php:34
|
9539 |
#: adminpages/reports/login.php:193
|
9540 |
+
#: adminpages/reports/login.php:196
|
9541 |
msgid "Views All Time"
|
9542 |
msgstr "Vistes sempre"
|
9543 |
|
9549 |
#: adminpages/reports/login.php:38
|
9550 |
#: adminpages/reports/login.php:39
|
9551 |
#: adminpages/reports/login.php:198
|
9552 |
+
#: adminpages/reports/login.php:201
|
9553 |
msgid "Logins All Time"
|
9554 |
msgstr "Logins sempre"
|
9555 |
|
9650 |
#: pages/account.php:87
|
9651 |
#: pages/account.php:91
|
9652 |
#: adminpages/emailtemplates.php:156
|
9653 |
+
#: adminpages/emailtemplates.php:149
|
9654 |
msgid "Billing Information"
|
9655 |
msgstr "Informació de Facturació"
|
9656 |
|
9767 |
#: js/blocks.build.js:1342
|
9768 |
#: js/blocks.build.js:1502
|
9769 |
#: classes/class-pmpro-admin-activity-email.php:349
|
9770 |
+
#: blocks/account-invoices-section/block.js:47
|
9771 |
+
#: blocks/account-links-section/block.js:47
|
9772 |
+
#: blocks/account-membership-section/block.js:45
|
9773 |
+
#: blocks/account-page/block.js:72
|
9774 |
+
#: blocks/account-profile-section/block.js:45
|
9775 |
+
#: blocks/billing-page/block.js:44
|
9776 |
+
#: blocks/cancel-page/block.js:44
|
9777 |
+
#: blocks/checkout-page/block.js:58
|
9778 |
+
#: blocks/confirmation-page/block.js:46
|
9779 |
+
#: blocks/invoice-page/block.js:45
|
9780 |
+
#: blocks/levels-page/block.js:44
|
9781 |
+
#: blocks/member-profile-edit/block.js:37
|
9782 |
msgid "Paid Memberships Pro"
|
9783 |
msgstr ""
|
9784 |
|
9824 |
#: classes/gateways/class.pmprogateway_stripe.php:76
|
9825 |
#: classes/gateways/class.pmprogateway_stripe.php:82
|
9826 |
#: classes/gateways/class.pmprogateway_stripe.php:1338
|
9827 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1463
|
9828 |
msgid "The Stripe Gateway requires PHP 5.3.29 or greater. We recommend upgrading to PHP %s or greater. Ask your host to upgrade."
|
9829 |
msgstr ""
|
9830 |
|
9864 |
#: adminpages/admin_header.php:226
|
9865 |
#: includes/adminpages.php:52
|
9866 |
#: includes/adminpages.php:158
|
9867 |
+
#: adminpages/reports/login.php:122
|
9868 |
+
#: adminpages/reports/login.php:102
|
9869 |
msgid "Members"
|
9870 |
msgstr ""
|
9871 |
|
9910 |
#: adminpages/advancedsettings.php:106
|
9911 |
#: includes/updates/upgrade_1.php:7
|
9912 |
#: adminpages/advancedsettings.php:108
|
9913 |
+
#: adminpages/advancedsettings.php:116
|
9914 |
msgid "This content is for !!levels!! members only.<br /><a href=\"%s\">Join Now</a>"
|
9915 |
msgstr ""
|
9916 |
|
9917 |
#: adminpages/advancedsettings.php:111
|
9918 |
#: adminpages/advancedsettings.php:113
|
9919 |
+
#: adminpages/advancedsettings.php:121
|
9920 |
msgid "This content is for !!levels!! members only.<br /><a href=\"%s\">Log In</a> <a href=\"%s\">Join Now</a>"
|
9921 |
msgstr ""
|
9922 |
|
9923 |
#: adminpages/advancedsettings.php:135
|
9924 |
#: adminpages/advancedsettings.php:137
|
9925 |
+
#: adminpages/advancedsettings.php:144
|
9926 |
msgid "Restrict Dashboard Access"
|
9927 |
msgstr ""
|
9928 |
|
9929 |
#: adminpages/advancedsettings.php:140
|
9930 |
#: adminpages/advancedsettings.php:142
|
9931 |
+
#: adminpages/advancedsettings.php:149
|
9932 |
msgid "WordPress Dashboard"
|
9933 |
msgstr ""
|
9934 |
|
9935 |
#: adminpages/advancedsettings.php:143
|
9936 |
#: adminpages/advancedsettings.php:145
|
9937 |
+
#: adminpages/advancedsettings.php:152
|
9938 |
msgid "Block all users with the Subscriber role from accessing the Dashboard."
|
9939 |
msgstr ""
|
9940 |
|
9941 |
#: adminpages/advancedsettings.php:148
|
9942 |
#: adminpages/advancedsettings.php:150
|
9943 |
+
#: adminpages/advancedsettings.php:157
|
9944 |
msgid "WordPress Toolbar"
|
9945 |
msgstr ""
|
9946 |
|
9947 |
#: adminpages/advancedsettings.php:151
|
9948 |
#: adminpages/advancedsettings.php:153
|
9949 |
+
#: adminpages/advancedsettings.php:160
|
9950 |
msgid "Hide the Toolbar from all users with the Subscriber role."
|
9951 |
msgstr ""
|
9952 |
|
9953 |
#: adminpages/advancedsettings.php:159
|
9954 |
#: adminpages/advancedsettings.php:161
|
9955 |
+
#: adminpages/advancedsettings.php:168
|
9956 |
msgid "Message Settings"
|
9957 |
msgstr ""
|
9958 |
|
9960 |
#: adminpages/advancedsettings.php:186
|
9961 |
#: adminpages/advancedsettings.php:179
|
9962 |
#: adminpages/advancedsettings.php:188
|
9963 |
+
#: adminpages/advancedsettings.php:195
|
9964 |
msgid "Available variables"
|
9965 |
msgstr ""
|
9966 |
|
9967 |
#: adminpages/advancedsettings.php:224
|
9968 |
#: adminpages/advancedsettings.php:226
|
9969 |
+
#: adminpages/advancedsettings.php:233
|
9970 |
msgid "Checkout Settings"
|
9971 |
msgstr ""
|
9972 |
|
9973 |
#: adminpages/advancedsettings.php:257
|
9974 |
#: adminpages/advancedsettings.php:272
|
9975 |
+
#: adminpages/advancedsettings.php:279
|
9976 |
msgid "reCAPTCHA Version"
|
9977 |
msgstr ""
|
9978 |
|
9979 |
#: adminpages/advancedsettings.php:260
|
9980 |
#: adminpages/advancedsettings.php:275
|
9981 |
+
#: adminpages/advancedsettings.php:282
|
9982 |
msgid " v2 - Checkbox"
|
9983 |
msgstr ""
|
9984 |
|
9985 |
#: adminpages/advancedsettings.php:261
|
9986 |
#: adminpages/advancedsettings.php:276
|
9987 |
+
#: adminpages/advancedsettings.php:283
|
9988 |
msgid "v3 - Invisible"
|
9989 |
msgstr ""
|
9990 |
|
9991 |
#: adminpages/advancedsettings.php:263
|
9992 |
#: adminpages/advancedsettings.php:278
|
9993 |
+
#: adminpages/advancedsettings.php:285
|
9994 |
msgid "Changing your version will require new API keys."
|
9995 |
msgstr ""
|
9996 |
|
9997 |
#: adminpages/advancedsettings.php:267
|
9998 |
#: adminpages/advancedsettings.php:282
|
9999 |
+
#: adminpages/advancedsettings.php:289
|
10000 |
msgid "reCAPTCHA Site Key"
|
10001 |
msgstr ""
|
10002 |
|
10003 |
#: adminpages/advancedsettings.php:273
|
10004 |
#: adminpages/advancedsettings.php:288
|
10005 |
+
#: adminpages/advancedsettings.php:295
|
10006 |
msgid "reCAPTCHA Secret Key"
|
10007 |
msgstr ""
|
10008 |
|
10009 |
#: adminpages/advancedsettings.php:283
|
10010 |
#: adminpages/advancedsettings.php:298
|
10011 |
+
#: adminpages/advancedsettings.php:305
|
10012 |
msgid "Communication Settings"
|
10013 |
msgstr ""
|
10014 |
|
10015 |
#: adminpages/advancedsettings.php:286
|
10016 |
#: adminpages/advancedsettings.php:301
|
10017 |
+
#: adminpages/advancedsettings.php:308
|
10018 |
msgid "Notifications"
|
10019 |
msgstr ""
|
10020 |
|
10021 |
#: adminpages/advancedsettings.php:290
|
10022 |
#: adminpages/advancedsettings.php:305
|
10023 |
+
#: adminpages/advancedsettings.php:312
|
10024 |
msgid "Show all notifications."
|
10025 |
msgstr ""
|
10026 |
|
10027 |
#: adminpages/advancedsettings.php:293
|
10028 |
#: adminpages/advancedsettings.php:308
|
10029 |
+
#: adminpages/advancedsettings.php:315
|
10030 |
msgid "Show only security notifications."
|
10031 |
msgstr ""
|
10032 |
|
10033 |
#: adminpages/advancedsettings.php:297
|
10034 |
#: adminpages/advancedsettings.php:312
|
10035 |
+
#: adminpages/advancedsettings.php:319
|
10036 |
msgid "Notifications are occasionally shown on the Paid Memberships Pro settings pages."
|
10037 |
msgstr ""
|
10038 |
|
10039 |
#: adminpages/advancedsettings.php:302
|
10040 |
#: adminpages/advancedsettings.php:317
|
10041 |
+
#: adminpages/advancedsettings.php:324
|
10042 |
msgid "Activity Email Frequency"
|
10043 |
msgstr ""
|
10044 |
|
10045 |
#: adminpages/advancedsettings.php:310
|
10046 |
#: adminpages/advancedsettings.php:325
|
10047 |
+
#: adminpages/advancedsettings.php:332
|
10048 |
msgid "Weekly"
|
10049 |
msgstr ""
|
10050 |
|
10051 |
#: adminpages/advancedsettings.php:320
|
10052 |
#: adminpages/advancedsettings.php:335
|
10053 |
+
#: adminpages/advancedsettings.php:342
|
10054 |
msgid "Send periodic sales and revenue updates from this site to the administration email address."
|
10055 |
msgstr ""
|
10056 |
|
10057 |
#: adminpages/advancedsettings.php:473
|
10058 |
#: adminpages/advancedsettings.php:475
|
10059 |
#: adminpages/advancedsettings.php:490
|
10060 |
+
#: adminpages/advancedsettings.php:522
|
10061 |
msgid "Uninstall PMPro on deletion?"
|
10062 |
msgstr ""
|
10063 |
|
10064 |
#: adminpages/advancedsettings.php:478
|
10065 |
#: adminpages/advancedsettings.php:480
|
10066 |
#: adminpages/advancedsettings.php:495
|
10067 |
+
#: adminpages/advancedsettings.php:527
|
10068 |
msgid "Yes - Delete all PMPro Data."
|
10069 |
msgstr ""
|
10070 |
|
10090 |
|
10091 |
#: adminpages/dashboard.php:113
|
10092 |
#: adminpages/membershiplevels.php:779
|
10093 |
+
#: adminpages/membershiplevels.php:780
|
10094 |
msgid "Create a Membership Level"
|
10095 |
msgstr ""
|
10096 |
|
10161 |
#: adminpages/license.php:43
|
10162 |
#: adminpages/dashboard.php:183
|
10163 |
#: adminpages/license.php:45
|
10164 |
+
#: adminpages/license.php:57
|
10165 |
msgid "<strong>Thank you!</strong> A valid <strong>%s</strong> license key has been used to activate your support license on this site."
|
10166 |
msgstr ""
|
10167 |
|
10265 |
#: adminpages/orders.php:1489
|
10266 |
#: adminpages/dashboard.php:323
|
10267 |
#: adminpages/dashboard.php:338
|
10268 |
+
#: adminpages/orders.php:1478
|
10269 |
+
#: adminpages/orders.php:1490
|
10270 |
+
#: adminpages/orders.php:1602
|
10271 |
msgid "none"
|
10272 |
msgstr ""
|
10273 |
|
10306 |
#: adminpages/discountcodes.php:622
|
10307 |
#: adminpages/membershiplevels.php:450
|
10308 |
#: adminpages/discountcodes.php:624
|
10309 |
+
#: adminpages/membershiplevels.php:448
|
10310 |
msgid "Stripe integration does not allow billing periods longer than 1 year."
|
10311 |
msgstr ""
|
10312 |
|
10319 |
#: adminpages/discountcodes.php:697
|
10320 |
#: adminpages/membershiplevels.php:580
|
10321 |
#: adminpages/discountcodes.php:699
|
10322 |
+
#: adminpages/discountcodes.php:700
|
10323 |
+
#: adminpages/membershiplevels.php:581
|
10324 |
msgid "Hour(s)"
|
10325 |
msgstr ""
|
10326 |
|
10327 |
#: adminpages/discountcodes.php:754
|
10328 |
#: adminpages/discountcodes.php:756
|
10329 |
+
#: adminpages/discountcodes.php:755
|
10330 |
msgid "No Discount Codes Found"
|
10331 |
msgstr ""
|
10332 |
|
10333 |
#: adminpages/discountcodes.php:755
|
10334 |
#: adminpages/discountcodes.php:757
|
10335 |
+
#: adminpages/discountcodes.php:756
|
10336 |
msgid "Discount codes allow you to override your membership level's default pricing."
|
10337 |
msgstr ""
|
10338 |
|
10339 |
#: adminpages/discountcodes.php:756
|
10340 |
#: adminpages/discountcodes.php:758
|
10341 |
+
#: adminpages/discountcodes.php:757
|
10342 |
msgid "Create a Discount Code"
|
10343 |
msgstr ""
|
10344 |
|
10345 |
#: adminpages/discountcodes.php:757
|
10346 |
#: adminpages/discountcodes.php:759
|
10347 |
+
#: adminpages/discountcodes.php:758
|
10348 |
msgid "Documentation: Discount Codes"
|
10349 |
msgstr ""
|
10350 |
|
10351 |
#: adminpages/discountcodes.php:766
|
10352 |
#: adminpages/discountcodes.php:768
|
10353 |
+
#: adminpages/discountcodes.php:778
|
10354 |
+
#: adminpages/discountcodes.php:971
|
10355 |
msgid "%d discount codes found."
|
10356 |
msgstr ""
|
10357 |
|
10375 |
#: includes/profile.php:430
|
10376 |
#: adminpages/orders.php:1388
|
10377 |
#: adminpages/orders.php:1398
|
10378 |
+
#: adminpages/orders.php:1389
|
10379 |
+
#: adminpages/orders.php:1399
|
10380 |
+
#: adminpages/discountcodes.php:840
|
10381 |
+
#: adminpages/discountcodes.php:850
|
10382 |
+
#: adminpages/membershiplevels.php:856
|
10383 |
+
#: adminpages/membershiplevels.php:866
|
10384 |
+
#: adminpages/orders.php:1504
|
10385 |
+
#: adminpages/orders.php:1514
|
10386 |
+
#: includes/profile.php:470
|
10387 |
msgid "Edit"
|
10388 |
msgstr ""
|
10389 |
|
10400 |
#: adminpages/discountcodes.php:860
|
10401 |
#: adminpages/orders.php:1402
|
10402 |
#: adminpages/orders.php:1413
|
10403 |
+
#: adminpages/orders.php:1403
|
10404 |
+
#: adminpages/orders.php:1414
|
10405 |
+
#: adminpages/discountcodes.php:854
|
10406 |
+
#: adminpages/discountcodes.php:865
|
10407 |
+
#: adminpages/membershiplevels.php:870
|
10408 |
+
#: adminpages/membershiplevels.php:881
|
10409 |
+
#: adminpages/orders.php:1518
|
10410 |
+
#: adminpages/orders.php:1529
|
10411 |
msgid "Copy"
|
10412 |
msgstr ""
|
10413 |
|
10416 |
msgstr ""
|
10417 |
|
10418 |
#: adminpages/emailsettings.php:87
|
10419 |
+
#: adminpages/emailsettings.php:86
|
10420 |
msgid "Send Emails From"
|
10421 |
msgstr ""
|
10422 |
|
10423 |
#: adminpages/emailsettings.php:119
|
10424 |
#: adminpages/emailsettings.php:173
|
10425 |
+
#: adminpages/emailsettings.php:118
|
10426 |
msgid "Save All Settings"
|
10427 |
msgstr ""
|
10428 |
|
10429 |
#: adminpages/emailsettings.php:122
|
10430 |
+
#: adminpages/emailsettings.php:121
|
10431 |
msgid "Email Deliverability"
|
10432 |
msgstr ""
|
10433 |
|
10468 |
msgstr ""
|
10469 |
|
10470 |
#: adminpages/emailtemplates.php:23
|
10471 |
+
#: adminpages/emailtemplates.php:21
|
10472 |
msgid "Select an email template from the dropdown below to customize the subject and body of emails sent through your membership site. You can also disable a specific email or send a test version through this admin page."
|
10473 |
msgstr ""
|
10474 |
|
10475 |
#: adminpages/emailtemplates.php:23
|
10476 |
+
#: adminpages/emailtemplates.php:21
|
10477 |
msgid "Click here for a description of each email sent to your members and admins at different stages of the member experience."
|
10478 |
msgstr ""
|
10479 |
|
10480 |
#: adminpages/emailtemplates.php:38
|
10481 |
+
#: adminpages/emailtemplates.php:36
|
10482 |
msgid "Email Template"
|
10483 |
msgstr ""
|
10484 |
|
10485 |
#: adminpages/emailtemplates.php:42
|
10486 |
+
#: adminpages/emailtemplates.php:40
|
10487 |
msgid "Select a Template to Edit"
|
10488 |
msgstr ""
|
10489 |
|
10490 |
#: adminpages/emailtemplates.php:58
|
10491 |
+
#: adminpages/emailtemplates.php:56
|
10492 |
msgid "Disable this email?"
|
10493 |
msgstr ""
|
10494 |
|
10495 |
#: adminpages/emailtemplates.php:61
|
10496 |
+
#: adminpages/emailtemplates.php:59
|
10497 |
msgid "Emails with this template will not be sent."
|
10498 |
msgstr ""
|
10499 |
|
10500 |
#: adminpages/emailtemplates.php:66
|
10501 |
+
#: adminpages/emailtemplates.php:64
|
10502 |
msgid "Subject"
|
10503 |
msgstr ""
|
10504 |
|
10505 |
#: adminpages/emailtemplates.php:73
|
10506 |
+
#: adminpages/emailtemplates.php:71
|
10507 |
msgid "Body"
|
10508 |
msgstr ""
|
10509 |
|
10510 |
#: adminpages/emailtemplates.php:84
|
10511 |
+
#: adminpages/emailtemplates.php:82
|
10512 |
msgid "Send a test email to "
|
10513 |
msgstr ""
|
10514 |
|
10515 |
#: adminpages/emailtemplates.php:87
|
10516 |
+
#: adminpages/emailtemplates.php:85
|
10517 |
msgid "Save Template and Send Email"
|
10518 |
msgstr ""
|
10519 |
|
10520 |
#: adminpages/emailtemplates.php:92
|
10521 |
+
#: adminpages/emailtemplates.php:90
|
10522 |
msgid "Your current membership will be used for any membership level data."
|
10523 |
msgstr ""
|
10524 |
|
10525 |
#: adminpages/emailtemplates.php:101
|
10526 |
+
#: adminpages/emailtemplates.php:99
|
10527 |
msgid "Save Template"
|
10528 |
msgstr ""
|
10529 |
|
10530 |
#: adminpages/emailtemplates.php:104
|
10531 |
+
#: adminpages/emailtemplates.php:102
|
10532 |
msgid "Reset Template"
|
10533 |
msgstr ""
|
10534 |
|
10535 |
#: adminpages/emailtemplates.php:114
|
10536 |
+
#: adminpages/emailtemplates.php:112
|
10537 |
msgid "Variable Reference"
|
10538 |
msgstr ""
|
10539 |
|
10540 |
#: adminpages/emailtemplates.php:116
|
10541 |
+
#: adminpages/emailtemplates.php:114
|
10542 |
msgid "Use the placeholder variables below to customize your member and admin emails with specific user or membership data."
|
10543 |
msgstr ""
|
10544 |
|
10545 |
#: adminpages/emailtemplates.php:120
|
10546 |
+
#: adminpages/emailtemplates.php:116
|
10547 |
msgid "General Settings / Membership Info"
|
10548 |
msgstr ""
|
10549 |
|
10550 |
#: adminpages/emailtemplates.php:126
|
10551 |
#: adminpages/emailtemplates.php:136
|
10552 |
+
#: adminpages/emailtemplates.php:121
|
10553 |
+
#: adminpages/emailtemplates.php:131
|
10554 |
msgid "Display Name (Profile/Edit User > Display name publicly as)"
|
10555 |
msgstr ""
|
10556 |
|
10557 |
#: adminpages/emailtemplates.php:128
|
10558 |
+
#: adminpages/emailtemplates.php:123
|
10559 |
msgid "Site Title"
|
10560 |
msgstr ""
|
10561 |
|
10562 |
#: adminpages/emailtemplates.php:129
|
10563 |
+
#: adminpages/emailtemplates.php:124
|
10564 |
msgid "Site Email Address (General Settings > Email OR Memberships > Settings > Email Settings)"
|
10565 |
msgstr ""
|
10566 |
|
10567 |
#: adminpages/emailtemplates.php:131
|
10568 |
+
#: adminpages/emailtemplates.php:126
|
10569 |
msgid "Membership Level Name"
|
10570 |
msgstr ""
|
10571 |
|
10572 |
#: adminpages/emailtemplates.php:132
|
10573 |
+
#: adminpages/emailtemplates.php:127
|
10574 |
msgid "Membership Level Change"
|
10575 |
msgstr ""
|
10576 |
|
10577 |
#: adminpages/emailtemplates.php:133
|
10578 |
+
#: adminpages/emailtemplates.php:128
|
10579 |
msgid "Membership Level Expiration"
|
10580 |
msgstr ""
|
10581 |
|
10582 |
#: adminpages/emailtemplates.php:134
|
10583 |
+
#: adminpages/emailtemplates.php:129
|
10584 |
msgid "Membership Start Date"
|
10585 |
msgstr ""
|
10586 |
|
10587 |
#: adminpages/emailtemplates.php:135
|
10588 |
+
#: adminpages/emailtemplates.php:130
|
10589 |
msgid "Membership End Date"
|
10590 |
msgstr ""
|
10591 |
|
10592 |
#: adminpages/emailtemplates.php:137
|
10593 |
#: classes/class.memberorder.php:960
|
10594 |
#: classes/class.memberorder.php:1002
|
10595 |
+
#: adminpages/emailtemplates.php:132
|
10596 |
+
#: classes/class.memberorder.php:1011
|
10597 |
msgid "User Email"
|
10598 |
msgstr ""
|
10599 |
|
10600 |
#: adminpages/emailtemplates.php:138
|
10601 |
+
#: adminpages/emailtemplates.php:133
|
10602 |
msgid "Login URL"
|
10603 |
msgstr ""
|
10604 |
|
10605 |
#: adminpages/emailtemplates.php:139
|
10606 |
+
#: adminpages/emailtemplates.php:134
|
10607 |
msgid "Membership Levels Page URL"
|
10608 |
msgstr ""
|
10609 |
|
10610 |
#: adminpages/emailtemplates.php:162
|
10611 |
+
#: adminpages/emailtemplates.php:154
|
10612 |
msgid "Billing Info Complete Address"
|
10613 |
msgstr ""
|
10614 |
|
10615 |
#: adminpages/emailtemplates.php:163
|
10616 |
+
#: adminpages/emailtemplates.php:155
|
10617 |
msgid "Billing Info Name"
|
10618 |
msgstr ""
|
10619 |
|
10620 |
#: adminpages/emailtemplates.php:164
|
10621 |
+
#: adminpages/emailtemplates.php:156
|
10622 |
msgid "Billing Info Street Address"
|
10623 |
msgstr ""
|
10624 |
|
10625 |
#: adminpages/emailtemplates.php:165
|
10626 |
+
#: adminpages/emailtemplates.php:157
|
10627 |
msgid "Billing Info City"
|
10628 |
msgstr ""
|
10629 |
|
10630 |
#: adminpages/emailtemplates.php:166
|
10631 |
+
#: adminpages/emailtemplates.php:158
|
10632 |
msgid "Billing Info State"
|
10633 |
msgstr ""
|
10634 |
|
10635 |
#: adminpages/emailtemplates.php:167
|
10636 |
+
#: adminpages/emailtemplates.php:159
|
10637 |
msgid "Billing Info ZIP Code"
|
10638 |
msgstr ""
|
10639 |
|
10640 |
#: adminpages/emailtemplates.php:168
|
10641 |
+
#: adminpages/emailtemplates.php:160
|
10642 |
msgid "Billing Info Country"
|
10643 |
msgstr ""
|
10644 |
|
10645 |
#: adminpages/emailtemplates.php:169
|
10646 |
+
#: adminpages/emailtemplates.php:161
|
10647 |
msgid "Billing Info Phone #"
|
10648 |
msgstr ""
|
10649 |
|
10650 |
#: adminpages/emailtemplates.php:170
|
10651 |
#: includes/privacy.php:363
|
10652 |
+
#: adminpages/emailtemplates.php:162
|
10653 |
msgid "Credit Card Type"
|
10654 |
msgstr ""
|
10655 |
|
10656 |
#: adminpages/emailtemplates.php:171
|
10657 |
+
#: adminpages/emailtemplates.php:163
|
10658 |
msgid "Credit Card Number (last 4 digits)"
|
10659 |
msgstr ""
|
10660 |
|
10661 |
#: adminpages/emailtemplates.php:172
|
10662 |
+
#: adminpages/emailtemplates.php:164
|
10663 |
msgid "Credit Card Expiration Month (mm format)"
|
10664 |
msgstr ""
|
10665 |
|
10666 |
#: adminpages/emailtemplates.php:173
|
10667 |
+
#: adminpages/emailtemplates.php:165
|
10668 |
msgid "Credit Card Expiration Year (yyyy format)"
|
10669 |
msgstr ""
|
10670 |
|
10671 |
#: adminpages/emailtemplates.php:174
|
10672 |
+
#: adminpages/emailtemplates.php:166
|
10673 |
msgid "Membership Level Cost Text"
|
10674 |
msgstr ""
|
10675 |
|
10676 |
#: adminpages/emailtemplates.php:175
|
10677 |
+
#: adminpages/emailtemplates.php:167
|
10678 |
msgid "Payment Instructions (used in Checkout - Email Template)"
|
10679 |
msgstr ""
|
10680 |
|
10681 |
#: adminpages/emailtemplates.php:176
|
10682 |
#: includes/profile.php:423
|
10683 |
#: includes/profile.php:410
|
10684 |
+
#: adminpages/emailtemplates.php:168
|
10685 |
+
#: includes/profile.php:450
|
10686 |
msgid "Invoice ID"
|
10687 |
msgstr ""
|
10688 |
|
10689 |
#: adminpages/emailtemplates.php:177
|
10690 |
+
#: adminpages/emailtemplates.php:169
|
10691 |
msgid "Invoice Total"
|
10692 |
msgstr ""
|
10693 |
|
10694 |
#: adminpages/emailtemplates.php:178
|
10695 |
+
#: adminpages/emailtemplates.php:170
|
10696 |
msgid "Invoice Date"
|
10697 |
msgstr ""
|
10698 |
|
10699 |
#: adminpages/emailtemplates.php:179
|
10700 |
+
#: adminpages/emailtemplates.php:171
|
10701 |
msgid "Invoice Page URL"
|
10702 |
msgstr ""
|
10703 |
|
10704 |
#: adminpages/emailtemplates.php:180
|
10705 |
+
#: adminpages/emailtemplates.php:172
|
10706 |
msgid "Discount Code Applied"
|
10707 |
msgstr ""
|
10708 |
|
10720 |
#: adminpages/license.php:61
|
10721 |
#: adminpages/license.php:53
|
10722 |
#: adminpages/license.php:55
|
10723 |
+
#: adminpages/license.php:67
|
10724 |
msgid "Validate Key"
|
10725 |
msgstr ""
|
10726 |
|
10728 |
#: adminpages/license.php:87
|
10729 |
#: adminpages/license.php:86
|
10730 |
#: adminpages/license.php:92
|
10731 |
+
#: adminpages/license.php:94
|
10732 |
msgid "Paid Memberships Pro and our Add Ons are distributed under the <a href=\"%s\" title=\"GPLv2 license\" target=\"_blank\">GPLv2 license</a>. This means, among other things, that you may use the software on this site or any other site free of charge."
|
10733 |
msgstr ""
|
10734 |
|
10735 |
#: adminpages/membershiplevels.php:391
|
10736 |
+
#: adminpages/membershiplevels.php:389
|
10737 |
msgid "Check to include this message in the membership confirmation email."
|
10738 |
msgstr ""
|
10739 |
|
10740 |
#: adminpages/membershiplevels.php:459
|
10741 |
+
#: adminpages/membershiplevels.php:457
|
10742 |
msgid "You will need to create a \"Plan\" in your Braintree dashboard with the same settings and the \"Plan ID\" set to %s."
|
10743 |
msgstr ""
|
10744 |
|
10755 |
msgstr ""
|
10756 |
|
10757 |
#: adminpages/membershiplevels.php:640
|
10758 |
+
#: adminpages/membershiplevels.php:641
|
10759 |
msgid "Non-members will not see posts in these categories. You can <a href=\"%s\" title=\"Advanced Settings\" target=\"_blank\">update this setting here</a>."
|
10760 |
msgstr ""
|
10761 |
|
10762 |
#: adminpages/membershiplevels.php:644
|
10763 |
+
#: adminpages/membershiplevels.php:645
|
10764 |
msgid "Non-members will see the title and excerpt for posts in these categories. You can <a href=\"%s\" title=\"Advanced Settings\" target=\"_blank\">update this setting here</a>."
|
10765 |
msgstr ""
|
10766 |
|
10767 |
#: adminpages/membershiplevels.php:647
|
10768 |
+
#: adminpages/membershiplevels.php:648
|
10769 |
msgid "Non-members will see the title only for posts in these categories. You can <a href=\"%s\" title=\"Advanced Settings\" target=\"_blank\">update this setting here</a>."
|
10770 |
msgstr ""
|
10771 |
|
10772 |
#: adminpages/membershiplevels.php:778
|
10773 |
#: adminpages/membershiplevels.php:819
|
10774 |
+
#: adminpages/membershiplevels.php:779
|
10775 |
+
#: adminpages/membershiplevels.php:817
|
10776 |
msgid "No Membership Levels Found"
|
10777 |
msgstr ""
|
10778 |
|
10779 |
#: adminpages/membershiplevels.php:780
|
10780 |
+
#: adminpages/membershiplevels.php:781
|
10781 |
msgid "Video: Membership Levels"
|
10782 |
msgstr ""
|
10783 |
|
10784 |
#: adminpages/memberslist.php:41
|
10785 |
+
#: adminpages/memberslist.php:40
|
10786 |
msgid "Optional: Capture additional member profile fields using the <a href=\"%s\" title=\"Paid Memberships Pro - Register Helper Add On\" target=\"_blank\">Register Helper Add On</a>."
|
10787 |
msgstr ""
|
10788 |
|
10791 |
#: adminpages/orders.php:868
|
10792 |
#: includes/profile.php:85
|
10793 |
#: adminpages/orders.php:860
|
10794 |
+
#: adminpages/orders.php:861
|
10795 |
+
#: adminpages/orders.php:525
|
10796 |
+
#: includes/profile.php:95
|
10797 |
msgid "at"
|
10798 |
msgstr ""
|
10799 |
|
10800 |
#: adminpages/orders.php:908
|
10801 |
#: adminpages/orders.php:914
|
10802 |
#: adminpages/orders.php:906
|
10803 |
+
#: adminpages/orders.php:907
|
10804 |
+
#: adminpages/orders.php:990
|
10805 |
msgid "TOS Consent"
|
10806 |
msgstr ""
|
10807 |
|
10808 |
#: adminpages/orders.php:1024
|
10809 |
#: adminpages/orders.php:1030
|
10810 |
#: adminpages/orders.php:1022
|
10811 |
+
#: adminpages/orders.php:1023
|
10812 |
+
#: adminpages/orders.php:1111
|
10813 |
msgid "With a Discount Code"
|
10814 |
msgstr ""
|
10815 |
|
10816 |
#: adminpages/orders.php:1028
|
10817 |
#: adminpages/orders.php:1034
|
10818 |
#: adminpages/orders.php:1026
|
10819 |
+
#: adminpages/orders.php:1027
|
10820 |
+
#: adminpages/orders.php:1115
|
10821 |
msgid "Only Paid Orders"
|
10822 |
msgstr ""
|
10823 |
|
10824 |
#: adminpages/orders.php:1030
|
10825 |
#: adminpages/orders.php:1036
|
10826 |
#: adminpages/orders.php:1028
|
10827 |
+
#: adminpages/orders.php:1029
|
10828 |
+
#: adminpages/orders.php:1117
|
10829 |
msgid "Only Free Orders"
|
10830 |
msgstr ""
|
10831 |
|
10832 |
#: adminpages/orders.php:1073
|
10833 |
#: adminpages/orders.php:1079
|
10834 |
#: adminpages/orders.php:1071
|
10835 |
+
#: adminpages/orders.php:1072
|
10836 |
+
#: adminpages/orders.php:1160
|
10837 |
msgid "Last Month"
|
10838 |
msgstr ""
|
10839 |
|
10840 |
#: adminpages/orders.php:1077
|
10841 |
#: adminpages/orders.php:1083
|
10842 |
#: adminpages/orders.php:1075
|
10843 |
+
#: adminpages/orders.php:1076
|
10844 |
+
#: adminpages/orders.php:1164
|
10845 |
msgid "Last Year"
|
10846 |
msgstr ""
|
10847 |
|
10880 |
#: adminpages/pagesettings.php:174
|
10881 |
#: adminpages/pagesettings.php:189
|
10882 |
#: adminpages/pagesettings.php:193
|
10883 |
+
#: adminpages/pagesettings.php:192
|
10884 |
msgid "Manage Pages"
|
10885 |
msgstr ""
|
10886 |
|
10887 |
#: adminpages/pagesettings.php:175
|
10888 |
#: adminpages/pagesettings.php:190
|
10889 |
#: adminpages/pagesettings.php:194
|
10890 |
+
#: adminpages/pagesettings.php:193
|
10891 |
msgid "Several frontend pages are required for your Paid Memberships Pro site."
|
10892 |
msgstr ""
|
10893 |
|
10894 |
#: adminpages/pagesettings.php:176
|
10895 |
#: adminpages/pagesettings.php:191
|
10896 |
#: adminpages/pagesettings.php:195
|
10897 |
+
#: adminpages/pagesettings.php:194
|
10898 |
msgid "Generate Pages For Me"
|
10899 |
msgstr ""
|
10900 |
|
10901 |
#: adminpages/pagesettings.php:177
|
10902 |
#: adminpages/pagesettings.php:192
|
10903 |
#: adminpages/pagesettings.php:196
|
10904 |
+
#: adminpages/pagesettings.php:195
|
10905 |
msgid "Create Pages Manually"
|
10906 |
msgstr ""
|
10907 |
|
10908 |
#: adminpages/pagesettings.php:199
|
10909 |
#: adminpages/pagesettings.php:221
|
10910 |
#: adminpages/pagesettings.php:225
|
10911 |
+
#: adminpages/pagesettings.php:224
|
10912 |
msgid "or the Membership Account block"
|
10913 |
msgstr ""
|
10914 |
|
10915 |
#: adminpages/pagesettings.php:216
|
10916 |
#: adminpages/pagesettings.php:245
|
10917 |
#: adminpages/pagesettings.php:249
|
10918 |
+
#: adminpages/pagesettings.php:248
|
10919 |
msgid "or the Membership Billing block"
|
10920 |
msgstr ""
|
10921 |
|
10922 |
#: adminpages/pagesettings.php:233
|
10923 |
#: adminpages/pagesettings.php:269
|
10924 |
#: adminpages/pagesettings.php:273
|
10925 |
+
#: adminpages/pagesettings.php:272
|
10926 |
msgid "or the Membership Cancel block"
|
10927 |
msgstr ""
|
10928 |
|
10929 |
#: adminpages/pagesettings.php:251
|
10930 |
#: adminpages/pagesettings.php:294
|
10931 |
#: adminpages/pagesettings.php:298
|
10932 |
+
#: adminpages/pagesettings.php:297
|
10933 |
msgid "or the Membership Checkout block"
|
10934 |
msgstr ""
|
10935 |
|
10936 |
#: adminpages/pagesettings.php:269
|
10937 |
#: adminpages/pagesettings.php:319
|
10938 |
#: adminpages/pagesettings.php:323
|
10939 |
+
#: adminpages/pagesettings.php:322
|
10940 |
msgid "or the Membership Confirmation block"
|
10941 |
msgstr ""
|
10942 |
|
10943 |
#: adminpages/pagesettings.php:287
|
10944 |
#: adminpages/pagesettings.php:344
|
10945 |
#: adminpages/pagesettings.php:348
|
10946 |
+
#: adminpages/pagesettings.php:347
|
10947 |
msgid "or the Membership Invoice block"
|
10948 |
msgstr ""
|
10949 |
|
10950 |
#: adminpages/pagesettings.php:305
|
10951 |
#: adminpages/pagesettings.php:369
|
10952 |
#: adminpages/pagesettings.php:373
|
10953 |
+
#: adminpages/pagesettings.php:372
|
10954 |
msgid "or the Membership Levels block"
|
10955 |
msgstr ""
|
10956 |
|
10957 |
#: adminpages/pagesettings.php:315
|
10958 |
#: adminpages/pagesettings.php:379
|
10959 |
#: adminpages/pagesettings.php:383
|
10960 |
+
#: adminpages/pagesettings.php:382
|
10961 |
msgid "Optional: Customize your Membership Levels page using the <a href=\"%s\" title=\"Paid Memberships Pro - Advanced Levels Page Add On\" target=\"_blank\">Advanced Levels Page Add On</a>."
|
10962 |
msgstr ""
|
10963 |
|
10964 |
#: adminpages/pagesettings.php:321
|
10965 |
#: adminpages/pagesettings.php:385
|
10966 |
#: adminpages/pagesettings.php:389
|
10967 |
+
#: adminpages/pagesettings.php:388
|
10968 |
msgid "Log In Page"
|
10969 |
msgstr ""
|
10970 |
|
10974 |
#: adminpages/pagesettings.php:421
|
10975 |
#: adminpages/pagesettings.php:396
|
10976 |
#: adminpages/pagesettings.php:425
|
10977 |
+
#: adminpages/pagesettings.php:395
|
10978 |
+
#: adminpages/pagesettings.php:424
|
10979 |
msgid "Use WordPress Default"
|
10980 |
msgstr ""
|
10981 |
|
10982 |
#: adminpages/pagesettings.php:344
|
10983 |
#: adminpages/pagesettings.php:409
|
10984 |
#: adminpages/pagesettings.php:413
|
10985 |
+
#: adminpages/pagesettings.php:412
|
10986 |
msgid "Include the shortcode %s or the Log In Form block."
|
10987 |
msgstr ""
|
10988 |
|
10990 |
#: includes/adminpages.php:358
|
10991 |
#: adminpages/pagesettings.php:414
|
10992 |
#: adminpages/pagesettings.php:418
|
10993 |
+
#: adminpages/pagesettings.php:417
|
10994 |
msgid "Member Profile Edit Page"
|
10995 |
msgstr ""
|
10996 |
|
10997 |
#: adminpages/pagesettings.php:372
|
10998 |
#: adminpages/pagesettings.php:438
|
10999 |
#: adminpages/pagesettings.php:442
|
11000 |
+
#: adminpages/pagesettings.php:441
|
11001 |
msgid "Include the shortcode %s or the Member Profile Edit block."
|
11002 |
msgstr ""
|
11003 |
|
11004 |
#: adminpages/pagesettings.php:382
|
11005 |
#: adminpages/pagesettings.php:448
|
11006 |
#: adminpages/pagesettings.php:452
|
11007 |
+
#: adminpages/pagesettings.php:451
|
11008 |
msgid "Optional: Collect additional member fields at checkout, on the profile, or for admin-use only using the <a href=\"%s\" title=\"Paid Memberships Pro - Register Helper Add On\" target=\"_blank\">Register Helper Add On</a>."
|
11009 |
msgstr ""
|
11010 |
|
11013 |
msgstr ""
|
11014 |
|
11015 |
#: adminpages/paymentsettings.php:142
|
11016 |
+
#: adminpages/paymentsettings.php:147
|
11017 |
+
#: adminpages/paymentsettings.php:145
|
11018 |
msgid "This gateway is for membership sites with Free levels or for sites that accept payment offline."
|
11019 |
msgstr ""
|
11020 |
|
11021 |
#: adminpages/paymentsettings.php:142
|
11022 |
+
#: adminpages/paymentsettings.php:149
|
11023 |
+
#: adminpages/paymentsettings.php:147
|
11024 |
msgid "It is not connected to a live gateway environment and cannot accept payments."
|
11025 |
msgstr ""
|
11026 |
|
11029 |
msgstr ""
|
11030 |
|
11031 |
#: adminpages/paymentsettings.php:260
|
11032 |
+
#: adminpages/paymentsettings.php:273
|
11033 |
+
#: adminpages/paymentsettings.php:271
|
11034 |
msgid "Your Site URL starts with https:// and so PMPro will allow your entire site to be served over HTTPS."
|
11035 |
msgstr ""
|
11036 |
|
11062 |
#: adminpages/reports/history.php:47
|
11063 |
#: classes/class.memberorder.php:967
|
11064 |
#: classes/class.memberorder.php:1009
|
11065 |
+
#: classes/class.memberorder.php:1018
|
11066 |
msgid "Edit User"
|
11067 |
msgstr ""
|
11068 |
|
11073 |
#: adminpages/reports/history.php:188
|
11074 |
#: includes/profile.php:411
|
11075 |
#: includes/profile.php:389
|
11076 |
+
#: includes/profile.php:429
|
11077 |
msgid "Total Paid"
|
11078 |
msgstr ""
|
11079 |
|
11086 |
msgstr ""
|
11087 |
|
11088 |
#: adminpages/reports/login.php:186
|
11089 |
+
#: adminpages/reports/login.php:189
|
11090 |
msgid "Visits This Week"
|
11091 |
msgstr ""
|
11092 |
|
11093 |
#: adminpages/reports/login.php:188
|
11094 |
+
#: adminpages/reports/login.php:191
|
11095 |
msgid "Visits This Year"
|
11096 |
msgstr ""
|
11097 |
|
11098 |
#: adminpages/reports/login.php:190
|
11099 |
+
#: adminpages/reports/login.php:193
|
11100 |
msgid "Views This Week"
|
11101 |
msgstr ""
|
11102 |
|
11103 |
#: adminpages/reports/login.php:192
|
11104 |
+
#: adminpages/reports/login.php:195
|
11105 |
msgid "Views This Year"
|
11106 |
msgstr ""
|
11107 |
|
11108 |
#: adminpages/reports/login.php:195
|
11109 |
+
#: adminpages/reports/login.php:198
|
11110 |
msgid "Logins This Week"
|
11111 |
msgstr ""
|
11112 |
|
11113 |
#: adminpages/reports/login.php:197
|
11114 |
+
#: adminpages/reports/login.php:200
|
11115 |
msgid "Logins This Year"
|
11116 |
msgstr ""
|
11117 |
|
11118 |
#: adminpages/reports/memberships.php:356
|
11119 |
+
#: adminpages/reports/memberships.php:355
|
11120 |
msgid "All Paid Levels"
|
11121 |
msgstr ""
|
11122 |
|
11123 |
#: adminpages/reports/memberships.php:357
|
11124 |
+
#: adminpages/reports/memberships.php:356
|
11125 |
msgid "All Free Levels"
|
11126 |
msgstr ""
|
11127 |
|
11128 |
#: adminpages/reports/memberships.php:377
|
11129 |
#: adminpages/reports/sales.php:334
|
11130 |
#: adminpages/reports/sales.php:352
|
11131 |
+
#: adminpages/reports/memberships.php:376
|
11132 |
msgid "All Codes"
|
11133 |
msgstr ""
|
11134 |
|
11135 |
#: adminpages/reports/sales.php:345
|
11136 |
#: adminpages/reports/sales.php:364
|
11137 |
+
#: adminpages/reports/sales.php:365
|
11138 |
msgid "Average line calculated using data prior to current day, month, or year."
|
11139 |
msgstr ""
|
11140 |
|
11292 |
#: shortcodes/pmpro_account.php:145
|
11293 |
#: classes/class-pmpro-members-list-table.php:541
|
11294 |
#: classes/class-pmpro-members-list-table.php:570
|
11295 |
+
#: classes/class-pmpro-members-list-table.php:576
|
11296 |
+
#: adminpages/orders.php:1614
|
11297 |
+
#: adminpages/orders.php:1679
|
11298 |
+
#: adminpages/orders.php:1730
|
11299 |
msgid "—"
|
11300 |
msgstr ""
|
11301 |
|
11302 |
#: classes/class.memberorder.php:962
|
11303 |
#: classes/class.memberorder.php:1004
|
11304 |
+
#: classes/class.memberorder.php:1013
|
11305 |
msgid "User Display Name"
|
11306 |
msgstr ""
|
11307 |
|
11308 |
#: classes/class.memberorder.php:968
|
11309 |
#: classes/class.memberorder.php:1010
|
11310 |
+
#: adminpages/orders.php:438
|
11311 |
+
#: classes/class.memberorder.php:1019
|
11312 |
msgid "Edit Order"
|
11313 |
msgstr ""
|
11314 |
|
11315 |
#: classes/class.memberorder.php:1141
|
11316 |
#: classes/class.memberorder.php:1183
|
11317 |
+
#: classes/class.memberorder.php:1192
|
11318 |
msgid "This is a test order used with the PMPro Email Templates addon."
|
11319 |
msgstr ""
|
11320 |
|
11321 |
#: classes/class.pmproemail.php:371
|
11322 |
#: classes/class.pmproemail.php:377
|
11323 |
#: classes/class.pmproemail.php:370
|
11324 |
+
#: classes/class.pmproemail.php:503
|
11325 |
msgid "Member checkout for %s at %s"
|
11326 |
msgstr ""
|
11327 |
|
11328 |
#: classes/class.pmproemail.php:565
|
11329 |
#: classes/class.pmproemail.php:577
|
11330 |
#: classes/class.pmproemail.php:570
|
11331 |
+
#: classes/class.pmproemail.php:703
|
11332 |
msgid "Membership payment failed at %s"
|
11333 |
msgstr ""
|
11334 |
|
11335 |
#: classes/class.pmproemail.php:614
|
11336 |
#: classes/class.pmproemail.php:626
|
11337 |
#: classes/class.pmproemail.php:619
|
11338 |
+
#: classes/class.pmproemail.php:752
|
11339 |
msgid "Membership payment failed For %s at %s"
|
11340 |
msgstr ""
|
11341 |
|
11342 |
#: classes/class.pmproemail.php:663
|
11343 |
#: classes/class.pmproemail.php:675
|
11344 |
#: classes/class.pmproemail.php:668
|
11345 |
+
#: classes/class.pmproemail.php:801
|
11346 |
msgid "Credit card on file expiring soon at %s"
|
11347 |
msgstr ""
|
11348 |
|
11349 |
#: classes/class.pmproemail.php:715
|
11350 |
#: classes/class.pmproemail.php:727
|
11351 |
#: classes/class.pmproemail.php:720
|
11352 |
+
#: classes/class.pmproemail.php:853
|
11353 |
msgid "Invoice for %s membership"
|
11354 |
msgstr ""
|
11355 |
|
11362 |
#: includes/email.php:465
|
11363 |
#: classes/class.pmproemail.php:898
|
11364 |
#: classes/class.pmproemail.php:943
|
11365 |
+
#: classes/class.pmproemail.php:1031
|
11366 |
+
#: classes/class.pmproemail.php:1076
|
11367 |
msgid "The new level is %s."
|
11368 |
msgstr ""
|
11369 |
|
11376 |
#: includes/email.php:475
|
11377 |
#: classes/class.pmproemail.php:909
|
11378 |
#: classes/class.pmproemail.php:954
|
11379 |
+
#: classes/class.pmproemail.php:1042
|
11380 |
+
#: classes/class.pmproemail.php:1087
|
11381 |
msgid "This membership does not expire."
|
11382 |
msgstr ""
|
11383 |
|
11384 |
#: classes/class.pmproemail.php:940
|
11385 |
#: classes/class.pmproemail.php:952
|
11386 |
#: classes/class.pmproemail.php:945
|
11387 |
+
#: classes/class.pmproemail.php:1078
|
11388 |
msgid "Membership has been cancelled."
|
11389 |
msgstr ""
|
11390 |
|
11391 |
#: classes/class.pmproemail.php:980
|
11392 |
#: classes/class.pmproemail.php:992
|
11393 |
#: classes/class.pmproemail.php:985
|
11394 |
+
#: classes/class.pmproemail.php:1118
|
11395 |
msgid "Invoice for order #: "
|
11396 |
msgstr ""
|
11397 |
|
11398 |
#: classes/class.pmproemail.php:1030
|
11399 |
#: classes/class.pmproemail.php:1042
|
11400 |
#: classes/class.pmproemail.php:1035
|
11401 |
+
#: classes/class.pmproemail.php:1168
|
11402 |
msgid "Payment action required for your %s membership"
|
11403 |
msgstr ""
|
11404 |
|
11405 |
#: classes/class.pmproemail.php:1068
|
11406 |
#: classes/class.pmproemail.php:1080
|
11407 |
#: classes/class.pmproemail.php:1073
|
11408 |
+
#: classes/class.pmproemail.php:1206
|
11409 |
msgid "Payment action required: membership for %s at %s"
|
11410 |
msgstr ""
|
11411 |
|
11417 |
#: classes/gateways/class.pmprogateway_stripe.php:91
|
11418 |
#: classes/gateways/class.pmprogateway_stripe.php:97
|
11419 |
#: classes/gateways/class.pmprogateway_stripe.php:1353
|
11420 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1478
|
11421 |
msgid "The %s gateway depends on the %s PHP extension. Please enable it, or ask your hosting provider to enable it."
|
11422 |
msgstr ""
|
11423 |
|
11424 |
#: classes/gateways/class.pmprogateway_braintree.php:144
|
11425 |
+
#: classes/gateways/class.pmprogateway_braintree.php:151
|
11426 |
msgid "Problem loading plans: %s"
|
11427 |
msgstr ""
|
11428 |
|
11429 |
#: classes/gateways/class.pmprogateway_braintree.php:146
|
11430 |
+
#: classes/gateways/class.pmprogateway_braintree.php:153
|
11431 |
msgid "Problem accessing the Braintree Gateway. Please verify your PMPro Payment Settings (Keys, etc)."
|
11432 |
msgstr ""
|
11433 |
|
11437 |
#: classes/gateways/class.pmprogateway_braintree.php:848
|
11438 |
#: classes/gateways/class.pmprogateway_braintree.php:957
|
11439 |
#: classes/gateways/class.pmprogateway_braintree.php:984
|
11440 |
+
#: classes/gateways/class.pmprogateway_braintree.php:680
|
11441 |
+
#: classes/gateways/class.pmprogateway_braintree.php:851
|
11442 |
+
#: classes/gateways/class.pmprogateway_braintree.php:960
|
11443 |
+
#: classes/gateways/class.pmprogateway_braintree.php:987
|
11444 |
+
#: classes/gateways/class.pmprogateway_braintree.php:577
|
11445 |
+
#: classes/gateways/class.pmprogateway_braintree.php:594
|
11446 |
+
#: classes/gateways/class.pmprogateway_braintree.php:687
|
11447 |
+
#: classes/gateways/class.pmprogateway_braintree.php:858
|
11448 |
+
#: classes/gateways/class.pmprogateway_braintree.php:967
|
11449 |
+
#: classes/gateways/class.pmprogateway_braintree.php:994
|
11450 |
msgid "Payment error: Please contact the webmaster (braintree-load-error)"
|
11451 |
msgstr ""
|
11452 |
|
11453 |
#: classes/gateways/class.pmprogateway_braintree.php:750
|
11454 |
+
#: classes/gateways/class.pmprogateway_braintree.php:753
|
11455 |
+
#: classes/gateways/class.pmprogateway_braintree.php:760
|
11456 |
msgid "Failed to update customer: %s"
|
11457 |
msgstr ""
|
11458 |
|
11459 |
#: classes/gateways/class.pmprogateway_braintree.php:933
|
11460 |
+
#: classes/gateways/class.pmprogateway_braintree.php:936
|
11461 |
+
#: classes/gateways/class.pmprogateway_braintree.php:943
|
11462 |
msgid "Error subscribing customer to plan with Braintree: %s (%s)"
|
11463 |
msgstr ""
|
11464 |
|
11465 |
#: classes/gateways/class.pmprogateway_braintree.php:948
|
11466 |
+
#: classes/gateways/class.pmprogateway_braintree.php:951
|
11467 |
+
#: classes/gateways/class.pmprogateway_braintree.php:958
|
11468 |
msgid "Failed to subscribe with Braintree: %s"
|
11469 |
msgstr ""
|
11470 |
|
11471 |
#: classes/gateways/class.pmprogateway_braintree.php:1018
|
11472 |
#: classes/gateways/class.pmprogateway_braintree.php:1029
|
11473 |
+
#: classes/gateways/class.pmprogateway_braintree.php:1021
|
11474 |
+
#: classes/gateways/class.pmprogateway_braintree.php:1032
|
11475 |
+
#: classes/gateways/class.pmprogateway_braintree.php:1028
|
11476 |
+
#: classes/gateways/class.pmprogateway_braintree.php:1039
|
11477 |
msgid "Could not find the subscription. %s"
|
11478 |
msgstr ""
|
11479 |
|
11480 |
#: classes/gateways/class.pmprogateway_braintree.php:1082
|
11481 |
+
#: classes/gateways/class.pmprogateway_braintree.php:1085
|
11482 |
+
#: classes/gateways/class.pmprogateway_braintree.php:1092
|
11483 |
msgid "Error getting subscription with Braintree:"
|
11484 |
msgstr ""
|
11485 |
|
11741 |
#: classes/gateways/class.pmprogateway_cybersource.php:922
|
11742 |
#: includes/license.php:159
|
11743 |
#: includes/license.php:164
|
11744 |
+
#: includes/license.php:165
|
11745 |
msgid "Unknown error."
|
11746 |
msgstr ""
|
11747 |
|
11757 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:155
|
11758 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:147
|
11759 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:165
|
11760 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:166
|
11761 |
msgid "Note: We do not recommend using PayPal Standard. We suggest using PayPal Express, Website Payments Pro (Legacy), or PayPal Pro (Payflow Pro). <a target=\"_blank\" href=\"%s\" title=\"More information on why can be found here\">More information on why can be found here</a>."
|
11762 |
msgstr ""
|
11763 |
|
11764 |
#: classes/gateways/class.pmprogateway_paypal.php:185
|
11765 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:194
|
11766 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:204
|
11767 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:205
|
11768 |
msgid "Confirmation Step"
|
11769 |
msgstr ""
|
11770 |
|
11771 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:346
|
11772 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:356
|
11773 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:357
|
11774 |
msgid "Checkout was already processed."
|
11775 |
msgstr ""
|
11776 |
|
11778 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:791
|
11779 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:795
|
11780 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:804
|
11781 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:815
|
11782 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:816
|
11783 |
msgid "Something went wrong creating plan with PayPal; missing PROFILESTATUS."
|
11784 |
msgstr ""
|
11785 |
|
11787 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:792
|
11788 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:796
|
11789 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:805
|
11790 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:816
|
11791 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:817
|
11792 |
msgid "Error creating plan with PayPal."
|
11793 |
msgstr ""
|
11794 |
|
11804 |
#: classes/gateways/class.pmprogateway_stripe.php:450
|
11805 |
#: classes/gateways/class.pmprogateway_stripe.php:1790
|
11806 |
#: classes/gateways/class.pmprogateway_stripe.php:1788
|
11807 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2227
|
11808 |
msgid "Stripe Connect Settings"
|
11809 |
msgstr ""
|
11810 |
|
11813 |
#: classes/gateways/class.pmprogateway_stripe.php:362
|
11814 |
#: classes/gateways/class.pmprogateway_stripe.php:1793
|
11815 |
#: classes/gateways/class.pmprogateway_stripe.php:1791
|
11816 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2230
|
11817 |
msgid "Live Mode:"
|
11818 |
msgstr ""
|
11819 |
|
11825 |
#: classes/gateways/class.pmprogateway_stripe.php:454
|
11826 |
#: classes/gateways/class.pmprogateway_stripe.php:1795
|
11827 |
#: classes/gateways/class.pmprogateway_stripe.php:1793
|
11828 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2232
|
11829 |
msgid "Connected"
|
11830 |
msgstr ""
|
11831 |
|
11837 |
#: classes/gateways/class.pmprogateway_stripe.php:458
|
11838 |
#: classes/gateways/class.pmprogateway_stripe.php:1799
|
11839 |
#: classes/gateways/class.pmprogateway_stripe.php:1797
|
11840 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2236
|
11841 |
msgid "Not Connected"
|
11842 |
msgstr ""
|
11843 |
|
11849 |
#: classes/gateways/class.pmprogateway_stripe.php:465
|
11850 |
#: classes/gateways/class.pmprogateway_stripe.php:1807
|
11851 |
#: classes/gateways/class.pmprogateway_stripe.php:1805
|
11852 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2244
|
11853 |
msgid "Your site is using legacy API keys to authenticate with Stripe."
|
11854 |
msgstr ""
|
11855 |
|
11858 |
#: classes/gateways/class.pmprogateway_stripe.php:377
|
11859 |
#: classes/gateways/class.pmprogateway_stripe.php:1811
|
11860 |
#: classes/gateways/class.pmprogateway_stripe.php:1809
|
11861 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2248
|
11862 |
msgid "Use the \"Connect with Stripe\" button below to securely authenticate with your Stripe account using Stripe Connect. Log in with the current Stripe account used for this site so that existing subscriptions are not affected by the update."
|
11863 |
msgstr ""
|
11864 |
|
11870 |
#: classes/gateways/class.pmprogateway_stripe.php:476
|
11871 |
#: classes/gateways/class.pmprogateway_stripe.php:1824
|
11872 |
#: classes/gateways/class.pmprogateway_stripe.php:1822
|
11873 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2261
|
11874 |
msgid "Stripe Connection:"
|
11875 |
msgstr ""
|
11876 |
|
11882 |
#: classes/gateways/class.pmprogateway_stripe.php:500
|
11883 |
#: classes/gateways/class.pmprogateway_stripe.php:1840
|
11884 |
#: classes/gateways/class.pmprogateway_stripe.php:1838
|
11885 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2277
|
11886 |
msgid "Disconnect From Stripe"
|
11887 |
msgstr ""
|
11888 |
|
11891 |
#: classes/gateways/class.pmprogateway_stripe.php:403
|
11892 |
#: classes/gateways/class.pmprogateway_stripe.php:1844
|
11893 |
#: classes/gateways/class.pmprogateway_stripe.php:1842
|
11894 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2281
|
11895 |
msgid "This will disconnect your site from Stripe. Users will not be able to complete membership checkout or update their billing information. Existing subscriptions will not be affected at the gateway, but new recurring orders will not be created in this site."
|
11896 |
msgstr ""
|
11897 |
|
11903 |
#: classes/gateways/class.pmprogateway_stripe.php:514
|
11904 |
#: classes/gateways/class.pmprogateway_stripe.php:1861
|
11905 |
#: classes/gateways/class.pmprogateway_stripe.php:1859
|
11906 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2298
|
11907 |
msgid "Connect with Stripe"
|
11908 |
msgstr ""
|
11909 |
|
11912 |
#: classes/gateways/class.pmprogateway_stripe.php:422
|
11913 |
#: classes/gateways/class.pmprogateway_stripe.php:1868
|
11914 |
#: classes/gateways/class.pmprogateway_stripe.php:1866
|
11915 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2305
|
11916 |
msgid "Note: You have a valid license and are not charged additional platform fees for payment processing."
|
11917 |
msgstr ""
|
11918 |
|
11936 |
#: classes/gateways/class.pmprogateway_stripe.php:348
|
11937 |
#: classes/gateways/class.pmprogateway_stripe.php:1882
|
11938 |
#: classes/gateways/class.pmprogateway_stripe.php:1880
|
11939 |
+
#: classes/gateways/class.pmprogateway_stripe.php:374
|
11940 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2319
|
11941 |
msgid "Webhook"
|
11942 |
msgstr ""
|
11943 |
|
11954 |
#: classes/gateways/class.pmprogateway_stripe.php:383
|
11955 |
#: classes/gateways/class.pmprogateway_stripe.php:1886
|
11956 |
#: classes/gateways/class.pmprogateway_stripe.php:1884
|
11957 |
+
#: classes/gateways/class.pmprogateway_stripe.php:409
|
11958 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2323
|
11959 |
msgid "Webhook URL"
|
11960 |
msgstr ""
|
11961 |
|
11964 |
#: classes/gateways/class.pmprogateway_stripe.php:452
|
11965 |
#: classes/gateways/class.pmprogateway_stripe.php:1793
|
11966 |
#: classes/gateways/class.pmprogateway_stripe.php:1791
|
11967 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2230
|
11968 |
msgid "Test Mode:"
|
11969 |
msgstr ""
|
11970 |
|
11973 |
#: classes/gateways/class.pmprogateway_stripe.php:467
|
11974 |
#: classes/gateways/class.pmprogateway_stripe.php:1813
|
11975 |
#: classes/gateways/class.pmprogateway_stripe.php:1811
|
11976 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2250
|
11977 |
msgid "Use the \"Connect with Stripe\" button below to securely authenticate with your Stripe account using Stripe Connect in test mode."
|
11978 |
msgstr ""
|
11979 |
|
11982 |
#: classes/gateways/class.pmprogateway_stripe.php:501
|
11983 |
#: classes/gateways/class.pmprogateway_stripe.php:1846
|
11984 |
#: classes/gateways/class.pmprogateway_stripe.php:1844
|
11985 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2283
|
11986 |
msgid "This will disconnect your site from Stripe in test mode only."
|
11987 |
msgstr ""
|
11988 |
|
11990 |
#: classes/gateways/class.pmprogateway_stripe.php:530
|
11991 |
#: classes/gateways/class.pmprogateway_stripe.php:536
|
11992 |
#: classes/gateways/class.pmprogateway_stripe.php:300
|
11993 |
+
#: classes/gateways/class.pmprogateway_stripe.php:326
|
11994 |
msgid "Stripe API Settings (Legacy)"
|
11995 |
msgstr ""
|
11996 |
|
11999 |
#: classes/gateways/class.pmprogateway_stripe.php:562
|
12000 |
#: classes/gateways/class.pmprogateway_stripe.php:568
|
12001 |
#: classes/gateways/class.pmprogateway_stripe.php:332
|
12002 |
+
#: classes/gateways/class.pmprogateway_stripe.php:358
|
12003 |
msgid "Your Publishable Key appears incorrect."
|
12004 |
msgstr ""
|
12005 |
|
12013 |
#: classes/gateways/class.pmprogateway_stripe.php:612
|
12014 |
#: classes/gateways/class.pmprogateway_stripe.php:352
|
12015 |
#: classes/gateways/class.pmprogateway_stripe.php:376
|
12016 |
+
#: classes/gateways/class.pmprogateway_stripe.php:378
|
12017 |
+
#: classes/gateways/class.pmprogateway_stripe.php:402
|
12018 |
msgid "Create Webhook"
|
12019 |
msgstr ""
|
12020 |
|
12023 |
#: classes/gateways/class.pmprogateway_stripe.php:588
|
12024 |
#: classes/gateways/class.pmprogateway_stripe.php:594
|
12025 |
#: classes/gateways/class.pmprogateway_stripe.php:358
|
12026 |
+
#: classes/gateways/class.pmprogateway_stripe.php:384
|
12027 |
msgid "A webhook is set up in Stripe, but it is disabled."
|
12028 |
msgstr ""
|
12029 |
|
12032 |
#: classes/gateways/class.pmprogateway_stripe.php:595
|
12033 |
#: classes/gateways/class.pmprogateway_stripe.php:601
|
12034 |
#: classes/gateways/class.pmprogateway_stripe.php:365
|
12035 |
+
#: classes/gateways/class.pmprogateway_stripe.php:391
|
12036 |
msgid "A webhook is set up in Stripe, but it is using an old API version."
|
12037 |
msgstr ""
|
12038 |
|
12041 |
#: classes/gateways/class.pmprogateway_stripe.php:595
|
12042 |
#: classes/gateways/class.pmprogateway_stripe.php:601
|
12043 |
#: classes/gateways/class.pmprogateway_stripe.php:365
|
12044 |
+
#: classes/gateways/class.pmprogateway_stripe.php:358
|
12045 |
+
#: classes/gateways/class.pmprogateway_stripe.php:384
|
12046 |
+
#: classes/gateways/class.pmprogateway_stripe.php:391
|
12047 |
msgid "Rebuild Webhook"
|
12048 |
msgstr ""
|
12049 |
|
12061 |
#: classes/gateways/class.pmprogateway_stripe.php:863
|
12062 |
#: classes/gateways/class.pmprogateway_stripe.php:371
|
12063 |
#: classes/gateways/class.pmprogateway_stripe.php:503
|
12064 |
+
#: classes/gateways/class.pmprogateway_stripe.php:397
|
12065 |
+
#: classes/gateways/class.pmprogateway_stripe.php:615
|
12066 |
msgid "Your webhook is enabled."
|
12067 |
msgstr ""
|
12068 |
|
12071 |
#: classes/gateways/class.pmprogateway_stripe.php:601
|
12072 |
#: classes/gateways/class.pmprogateway_stripe.php:607
|
12073 |
#: classes/gateways/class.pmprogateway_stripe.php:371
|
12074 |
+
#: classes/gateways/class.pmprogateway_stripe.php:397
|
12075 |
msgid "Disable Webhook"
|
12076 |
msgstr ""
|
12077 |
|
12093 |
#: classes/gateways/class.pmprogateway_stripe.php:825
|
12094 |
#: classes/gateways/class.pmprogateway_stripe.php:378
|
12095 |
#: classes/gateways/class.pmprogateway_stripe.php:530
|
12096 |
+
#: classes/gateways/class.pmprogateway_stripe.php:404
|
12097 |
+
#: classes/gateways/class.pmprogateway_stripe.php:642
|
12098 |
msgid "A webhook in Stripe is required to process recurring payments, manage failed payments, and synchronize cancellations."
|
12099 |
msgstr ""
|
12100 |
|
12103 |
#: classes/gateways/class.pmprogateway_stripe.php:620
|
12104 |
#: classes/gateways/class.pmprogateway_stripe.php:626
|
12105 |
#: classes/gateways/class.pmprogateway_stripe.php:390
|
12106 |
+
#: classes/gateways/class.pmprogateway_stripe.php:416
|
12107 |
msgid "Other Stripe Settings"
|
12108 |
msgstr ""
|
12109 |
|
12112 |
#: classes/gateways/class.pmprogateway_stripe.php:624
|
12113 |
#: classes/gateways/class.pmprogateway_stripe.php:630
|
12114 |
#: classes/gateways/class.pmprogateway_stripe.php:394
|
12115 |
+
#: classes/gateways/class.pmprogateway_stripe.php:420
|
12116 |
msgid "Stripe API Version"
|
12117 |
msgstr ""
|
12118 |
|
12121 |
#: classes/gateways/class.pmprogateway_stripe.php:643
|
12122 |
#: classes/gateways/class.pmprogateway_stripe.php:649
|
12123 |
#: classes/gateways/class.pmprogateway_stripe.php:413
|
12124 |
+
#: classes/gateways/class.pmprogateway_stripe.php:439
|
12125 |
msgid "Enable Payment Request Button"
|
12126 |
msgstr ""
|
12127 |
|
12130 |
#: classes/gateways/class.pmprogateway_stripe.php:661
|
12131 |
#: classes/gateways/class.pmprogateway_stripe.php:667
|
12132 |
#: classes/gateways/class.pmprogateway_stripe.php:431
|
12133 |
+
#: classes/gateways/class.pmprogateway_stripe.php:457
|
12134 |
msgid "Allow users to pay using Apple Pay, Google Pay, or Microsoft Pay depending on their browser. When enabled, your domain will automatically be registered with Apple and a domain association file will be hosted on your site. <a target=\"_blank\" href=\"%s\" title=\"More Information about the domain association file for Apple Pay\">More Information »</a>"
|
12135 |
msgstr ""
|
12136 |
|
12139 |
#: classes/gateways/class.pmprogateway_stripe.php:674
|
12140 |
#: classes/gateways/class.pmprogateway_stripe.php:680
|
12141 |
#: classes/gateways/class.pmprogateway_stripe.php:444
|
12142 |
+
#: classes/gateways/class.pmprogateway_stripe.php:470
|
12143 |
msgid "This webpage is being served over HTTP, but the Stripe Payment Request Button will only work on pages being served over HTTPS. To resolve this, you must <a target=\"_blank\" href=\"%s\" title=\"Configuring WordPress to Always Use HTTPS/SSL\">set up WordPress to always use HTTPS</a>."
|
12144 |
msgstr ""
|
12145 |
|
12148 |
#: classes/gateways/class.pmprogateway_stripe.php:676
|
12149 |
#: classes/gateways/class.pmprogateway_stripe.php:682
|
12150 |
#: classes/gateways/class.pmprogateway_stripe.php:446
|
12151 |
+
#: classes/gateways/class.pmprogateway_stripe.php:472
|
12152 |
msgid "It looks like you are using an older Stripe publishable key. In order to use the Payment Request Button feature, you will need to update your API key, which will be prefixed with \"pk_live_\" or \"pk_test_\". <a target=\"_blank\" href=\"%s\" title=\"Stripe Dashboard API Key Settings\">Log in to your Stripe Dashboard to roll your publishable key</a>."
|
12153 |
msgstr ""
|
12154 |
|
12157 |
#: classes/gateways/class.pmprogateway_stripe.php:678
|
12158 |
#: classes/gateways/class.pmprogateway_stripe.php:684
|
12159 |
#: classes/gateways/class.pmprogateway_stripe.php:448
|
12160 |
+
#: classes/gateways/class.pmprogateway_stripe.php:474
|
12161 |
msgid "It looks like you are using an older Stripe secret key. In order to use the Payment Request Button feature, you will need to update your API key, which will be prefixed with \"sk_live_\" or \"sk_test_\". <a target=\"_blank\" href=\"%s\" title=\"Stripe Dashboard API Key Settings\">Log in to your Stripe Dashboard to roll your secret key</a>."
|
12162 |
msgstr ""
|
12163 |
|
12166 |
#: classes/gateways/class.pmprogateway_stripe.php:680
|
12167 |
#: classes/gateways/class.pmprogateway_stripe.php:686
|
12168 |
#: classes/gateways/class.pmprogateway_stripe.php:450
|
12169 |
+
#: classes/gateways/class.pmprogateway_stripe.php:476
|
12170 |
msgid "Your domain could not be registered with Apple to enable Apple Pay. Please try <a target=\"_blank\" href=\"%s\" title=\"Apple Pay Settings Page in Stripe\">registering your domain manually from the Apple Pay settings page in Stripe</a>."
|
12171 |
msgstr ""
|
12172 |
|
12175 |
#: classes/gateways/class.pmprogateway_stripe.php:705
|
12176 |
#: classes/gateways/class.pmprogateway_stripe.php:711
|
12177 |
#: classes/gateways/class.pmprogateway_stripe.php:475
|
12178 |
+
#: classes/gateways/class.pmprogateway_stripe.php:501
|
12179 |
msgid "Optional: Offer PayPal Express as an option at checkout using the <a target=\"_blank\" href=\"%s\" title=\"Paid Memberships Pro - Add PayPal Express Option at Checkout Add On\">Add PayPal Express Add On</a>."
|
12180 |
msgstr ""
|
12181 |
|
12184 |
#: classes/gateways/class.pmprogateway_stripe.php:726
|
12185 |
#: classes/gateways/class.pmprogateway_stripe.php:732
|
12186 |
#: classes/gateways/class.pmprogateway_stripe.php:492
|
12187 |
+
#: classes/gateways/class.pmprogateway_stripe.php:604
|
12188 |
msgid "Webhook creation failed. You might already have a webhook set up."
|
12189 |
msgstr ""
|
12190 |
|
12197 |
#: classes/gateways/class.pmprogateway_stripe.php:798
|
12198 |
#: classes/gateways/class.pmprogateway_stripe.php:872
|
12199 |
#: classes/gateways/class.pmprogateway_stripe.php:536
|
12200 |
+
#: classes/gateways/class.pmprogateway_stripe.php:648
|
12201 |
msgid "There was an error deleting the webhook."
|
12202 |
msgstr ""
|
12203 |
|
12206 |
#: classes/gateways/class.pmprogateway_stripe.php:842
|
12207 |
#: classes/gateways/class.pmprogateway_stripe.php:848
|
12208 |
#: classes/gateways/class.pmprogateway_stripe.php:564
|
12209 |
+
#: classes/gateways/class.pmprogateway_stripe.php:676
|
12210 |
msgid "Webhook creation failed. Please refresh and try again."
|
12211 |
msgstr ""
|
12212 |
|
12215 |
#: classes/gateways/class.pmprogateway_stripe.php:898
|
12216 |
#: classes/gateways/class.pmprogateway_stripe.php:904
|
12217 |
#: classes/gateways/class.pmprogateway_stripe.php:592
|
12218 |
+
#: classes/gateways/class.pmprogateway_stripe.php:704
|
12219 |
msgid "Verification steps confirmed. Your payment is processing."
|
12220 |
msgstr ""
|
12221 |
|
12224 |
#: classes/gateways/class.pmprogateway_stripe.php:1293
|
12225 |
#: classes/gateways/class.pmprogateway_stripe.php:1299
|
12226 |
#: classes/gateways/class.pmprogateway_stripe.php:758
|
12227 |
+
#: classes/gateways/class.pmprogateway_stripe.php:866
|
12228 |
msgid "Pay with Credit Card"
|
12229 |
msgstr ""
|
12230 |
|
12233 |
#: classes/gateways/class.pmprogateway_stripe.php:1327
|
12234 |
#: classes/gateways/class.pmprogateway_stripe.php:1333
|
12235 |
#: classes/gateways/class.pmprogateway_stripe.php:792
|
12236 |
+
#: classes/gateways/class.pmprogateway_stripe.php:900
|
12237 |
msgid "CVC"
|
12238 |
msgstr ""
|
12239 |
|
12276 |
#: classes/gateways/class.pmprogateway_stripe.php:4331
|
12277 |
#: classes/gateways/class.pmprogateway_stripe.php:4327
|
12278 |
#: classes/gateways/class.pmprogateway_stripe.php:4333
|
12279 |
+
#: classes/gateways/class.pmprogateway_stripe.php:4323
|
12280 |
+
#: classes/gateways/class.pmprogateway_stripe.php:4872
|
12281 |
+
#: classes/gateways/class.pmprogateway_stripe.php:4878
|
12282 |
msgid "Error: "
|
12283 |
msgstr ""
|
12284 |
|
12289 |
#: classes/gateways/class.pmprogateway_stripe.php:4349
|
12290 |
#: classes/gateways/class.pmprogateway_stripe.php:4345
|
12291 |
#: classes/gateways/class.pmprogateway_stripe.php:4347
|
12292 |
+
#: classes/gateways/class.pmprogateway_stripe.php:4343
|
12293 |
+
#: classes/gateways/class.pmprogateway_stripe.php:4892
|
12294 |
msgid "Error: Unkown error while refunding charge #%s"
|
12295 |
msgstr ""
|
12296 |
|
12300 |
#: classes/gateways/class.pmprogateway_stripe.php:3370
|
12301 |
#: classes/gateways/class.pmprogateway_stripe.php:3366
|
12302 |
#: classes/gateways/class.pmprogateway_stripe.php:3368
|
12303 |
+
#: classes/gateways/class.pmprogateway_stripe.php:3829
|
12304 |
msgid "Customer authentication is required to complete this transaction. Please complete the verification steps issued by your payment provider."
|
12305 |
msgstr ""
|
12306 |
|
12318 |
#: classes/gateways/class.pmprogateway_stripe.php:2546
|
12319 |
#: classes/gateways/class.pmprogateway_stripe.php:2583
|
12320 |
#: classes/gateways/class.pmprogateway_stripe.php:3388
|
12321 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2542
|
12322 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2579
|
12323 |
+
#: classes/gateways/class.pmprogateway_stripe.php:3384
|
12324 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1897
|
12325 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2999
|
12326 |
+
#: classes/gateways/class.pmprogateway_stripe.php:3036
|
12327 |
+
#: classes/gateways/class.pmprogateway_stripe.php:3849
|
12328 |
msgid "Customer authentication is required to finish setting up your subscription. Please complete the verification steps issued by your payment provider."
|
12329 |
msgstr ""
|
12330 |
|
12333 |
#: classes/gateways/class.pmprogateway_stripe.php:3567
|
12334 |
#: classes/gateways/class.pmprogateway_stripe.php:3573
|
12335 |
#: classes/gateways/class.pmprogateway_stripe.php:1199
|
12336 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1324
|
12337 |
msgid "Invalid response from the Stripe Connect server."
|
12338 |
msgstr ""
|
12339 |
|
12343 |
#: classes/gateways/class.pmprogateway_stripe.php:3595
|
12344 |
#: classes/gateways/class.pmprogateway_stripe.php:3601
|
12345 |
#: classes/gateways/class.pmprogateway_stripe.php:1227
|
12346 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1352
|
12347 |
msgid "<strong>Error:</strong> PMPro could not connect to the Stripe API. Reason: %s"
|
12348 |
msgstr ""
|
12349 |
|
12353 |
#: classes/gateways/class.pmprogateway_stripe.php:3631
|
12354 |
#: classes/gateways/class.pmprogateway_stripe.php:3637
|
12355 |
#: classes/gateways/class.pmprogateway_stripe.php:1263
|
12356 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1388
|
12357 |
msgid "<strong>Error:</strong> PMPro could not disconnect from the Stripe API. Reason: %s"
|
12358 |
msgstr ""
|
12359 |
|
12364 |
#: classes/gateways/class.pmprogateway_stripe.php:3674
|
12365 |
#: classes/gateways/class.pmprogateway_stripe.php:3670
|
12366 |
#: classes/gateways/class.pmprogateway_stripe.php:3672
|
12367 |
+
#: classes/gateways/class.pmprogateway_stripe.php:3668
|
12368 |
+
#: classes/gateways/class.pmprogateway_stripe.php:4132
|
12369 |
msgid "Last webhook received at"
|
12370 |
msgstr ""
|
12371 |
|
12376 |
#: classes/gateways/class.pmprogateway_stripe.php:3676
|
12377 |
#: classes/gateways/class.pmprogateway_stripe.php:3672
|
12378 |
#: classes/gateways/class.pmprogateway_stripe.php:3674
|
12379 |
+
#: classes/gateways/class.pmprogateway_stripe.php:3670
|
12380 |
+
#: classes/gateways/class.pmprogateway_stripe.php:4134
|
12381 |
msgid "No webhooks have been received."
|
12382 |
msgstr ""
|
12383 |
|
12388 |
#: classes/gateways/class.pmprogateway_stripe.php:3680
|
12389 |
#: classes/gateways/class.pmprogateway_stripe.php:3676
|
12390 |
#: classes/gateways/class.pmprogateway_stripe.php:3678
|
12391 |
+
#: classes/gateways/class.pmprogateway_stripe.php:3674
|
12392 |
+
#: classes/gateways/class.pmprogateway_stripe.php:4138
|
12393 |
msgid "Your webhook may not be working correctly."
|
12394 |
msgstr ""
|
12395 |
|
12400 |
#: classes/gateways/class.pmprogateway_stripe.php:3682
|
12401 |
#: classes/gateways/class.pmprogateway_stripe.php:3678
|
12402 |
#: classes/gateways/class.pmprogateway_stripe.php:3680
|
12403 |
+
#: classes/gateways/class.pmprogateway_stripe.php:3676
|
12404 |
+
#: classes/gateways/class.pmprogateway_stripe.php:4140
|
12405 |
msgid "Click here for info on setting up your webhook with Stripe."
|
12406 |
msgstr ""
|
12407 |
|
12436 |
#: blocks/account-page/block.js:59
|
12437 |
#: js/blocks.build.js:303
|
12438 |
#: js/blocks.build.js:342
|
12439 |
+
#: blocks/account-page/block.js:73
|
12440 |
msgid "Membership Account Page"
|
12441 |
msgstr ""
|
12442 |
|
12449 |
#: blocks/cancel-page/block.js:39
|
12450 |
#: js/blocks.build.js:677
|
12451 |
#: js/blocks.build.js:695
|
12452 |
+
#: blocks/cancel-page/block.js:45
|
12453 |
msgid "Membership Cancel Page"
|
12454 |
msgstr ""
|
12455 |
|
12462 |
#: blocks/confirmation-page/block.js:39
|
12463 |
#: js/blocks.build.js:1136
|
12464 |
#: js/blocks.build.js:1154
|
12465 |
+
#: blocks/confirmation-page/block.js:47
|
12466 |
msgid "Membership Confirmation Page"
|
12467 |
msgstr ""
|
12468 |
|
14253 |
msgstr ""
|
14254 |
|
14255 |
#: includes/email-templates.php:508
|
14256 |
+
#: includes/email-templates.php:538
|
14257 |
msgid "Payment action required for your !!sitename!! membership"
|
14258 |
msgstr ""
|
14259 |
|
14260 |
#: includes/email-templates.php:509
|
14261 |
+
#: includes/email-templates.php:539
|
14262 |
msgid "Payment Action Required"
|
14263 |
msgstr ""
|
14264 |
|
14265 |
#: includes/email-templates.php:510
|
14266 |
+
#: includes/email-templates.php:540
|
14267 |
msgid ""
|
14268 |
"<p>Customer authentication is required to finish setting up your subscription at !!sitename!!.</p>\n"
|
14269 |
"\n"
|
14272 |
msgstr ""
|
14273 |
|
14274 |
#: includes/email-templates.php:514
|
14275 |
+
#: includes/email-templates.php:544
|
14276 |
msgid "This email is sent to the user when an attempted membership checkout requires additional customer authentication."
|
14277 |
msgstr ""
|
14278 |
|
14279 |
#: includes/email-templates.php:517
|
14280 |
+
#: includes/email-templates.php:547
|
14281 |
msgid "Payment action required: membership for !!user_login!! at !!sitename!!"
|
14282 |
msgstr ""
|
14283 |
|
14284 |
#: includes/email-templates.php:518
|
14285 |
+
#: includes/email-templates.php:548
|
14286 |
msgid "Payment Action Required (admin)"
|
14287 |
msgstr ""
|
14288 |
|
14289 |
#: includes/email-templates.php:519
|
14290 |
+
#: includes/email-templates.php:549
|
14291 |
msgid ""
|
14292 |
"<p>A payment at !!sitename!! for !!user_login!! requires additional customer authentication to complete.</p>\n"
|
14293 |
"<p>Below is a copy of the email we sent to !!user_email!! to notify them that they need to complete their payment:</p>\n"
|
14299 |
msgstr ""
|
14300 |
|
14301 |
#: includes/email-templates.php:526
|
14302 |
+
#: includes/email-templates.php:556
|
14303 |
msgid "This email is sent to the site administrator when an attempted membership checkout requires additional customer authentication."
|
14304 |
msgstr ""
|
14305 |
|
14328 |
msgstr ""
|
14329 |
|
14330 |
#: includes/functions.php:406
|
14331 |
+
#: includes/functions.php:410
|
14332 |
msgid " and then <strong>%1$s per %2$s for %3$d more %4$s</strong>."
|
14333 |
msgstr ""
|
14334 |
|
14335 |
#: includes/functions.php:408
|
14336 |
+
#: includes/functions.php:412
|
14337 |
msgid " and then <strong>%1$s every %2$d %3$s for %4$d more payments</strong>."
|
14338 |
msgstr ""
|
14339 |
|
14340 |
#: includes/functions.php:411
|
14341 |
+
#: includes/functions.php:415
|
14342 |
msgid " and then <strong>%1$s after %2$d %3$s</strong>."
|
14343 |
msgstr ""
|
14344 |
|
14345 |
#: includes/functions.php:416
|
14346 |
+
#: includes/functions.php:420
|
14347 |
msgid "The price for membership is <strong>%1$s per %2$s</strong>."
|
14348 |
msgstr ""
|
14349 |
|
14350 |
#: includes/functions.php:418
|
14351 |
+
#: includes/functions.php:422
|
14352 |
msgid "<strong>%1$s per %2$s</strong>."
|
14353 |
msgstr ""
|
14354 |
|
14355 |
#: includes/functions.php:422
|
14356 |
+
#: includes/functions.php:426
|
14357 |
msgid "The price for membership is <strong>%1$s every %2$d %3$s</strong>."
|
14358 |
msgstr ""
|
14359 |
|
14360 |
#: includes/functions.php:424
|
14361 |
+
#: includes/functions.php:428
|
14362 |
msgid "<strong>%1$s every %2$d %3$s</strong>."
|
14363 |
msgstr ""
|
14364 |
|
14365 |
#: includes/functions.php:429
|
14366 |
+
#: includes/functions.php:433
|
14367 |
msgid " and then <strong>%1$s per %2$s</strong>."
|
14368 |
msgstr ""
|
14369 |
|
14370 |
#: includes/functions.php:431
|
14371 |
+
#: includes/functions.php:435
|
14372 |
msgid " and then <strong>%1$s every %2$d %3$s</strong>."
|
14373 |
msgstr ""
|
14374 |
|
14375 |
#: includes/functions.php:454
|
14376 |
+
#: includes/functions.php:458
|
14377 |
msgid "After your initial payment, your first %1$d payments will cost %2$s."
|
14378 |
msgstr ""
|
14379 |
|
14380 |
#: includes/functions.php:464
|
14381 |
#: includes/functions.php:565
|
14382 |
+
#: includes/functions.php:468
|
14383 |
+
#: includes/functions.php:571
|
14384 |
msgid "Customers in %1$s will be charged %2$s%% tax."
|
14385 |
msgstr ""
|
14386 |
|
14387 |
#: includes/functions.php:522
|
14388 |
+
#: includes/functions.php:528
|
14389 |
msgid "<strong>%1$s per %2$s for %3$d more %4$s</strong>"
|
14390 |
msgstr ""
|
14391 |
|
14392 |
#: includes/functions.php:524
|
14393 |
+
#: includes/functions.php:530
|
14394 |
msgid "<strong>%1$s every %2$d %3$s for %4$d more payments</strong>"
|
14395 |
msgstr ""
|
14396 |
|
14397 |
#: includes/functions.php:527
|
14398 |
+
#: includes/functions.php:533
|
14399 |
msgid "<strong>%1$s after %2$d %3$s</strong>"
|
14400 |
msgstr ""
|
14401 |
|
14402 |
#: includes/functions.php:530
|
14403 |
+
#: includes/functions.php:536
|
14404 |
msgid "<strong>%1$s every %2$s</strong>"
|
14405 |
msgstr ""
|
14406 |
|
14407 |
#: includes/functions.php:532
|
14408 |
+
#: includes/functions.php:538
|
14409 |
msgid "<strong>%1$s every %2$d %3$s</strong>"
|
14410 |
msgstr ""
|
14411 |
|
14412 |
#: includes/functions.php:582
|
14413 |
+
#: includes/functions.php:588
|
14414 |
msgid "Membership expires after %1$d %2$s."
|
14415 |
msgstr ""
|
14416 |
|
14417 |
#: includes/functions.php:601
|
14418 |
+
#: includes/functions.php:607
|
14419 |
msgid "%1$s membership expires after %2$d %3$s"
|
14420 |
msgstr ""
|
14421 |
|
14422 |
#: includes/functions.php:997
|
14423 |
+
#: includes/functions.php:1004
|
14424 |
msgid "No membership_id specified in pmpro_changeMembershipLevel."
|
14425 |
msgstr ""
|
14426 |
|
14427 |
#: includes/functions.php:1191
|
14428 |
+
#: includes/functions.php:1198
|
14429 |
msgid "Error interacting with database: %s"
|
14430 |
msgstr ""
|
14431 |
|
14432 |
#: includes/functions.php:2433
|
14433 |
#: includes/functions.php:2464
|
14434 |
+
#: includes/functions.php:2484
|
14435 |
+
#: includes/functions.php:2486
|
14436 |
msgid "Sign Up Now"
|
14437 |
msgstr ""
|
14438 |
|
14546 |
#: includes/profile.php:843
|
14547 |
#: includes/profile.php:855
|
14548 |
#: includes/profile.php:851
|
14549 |
+
#: includes/profile.php:891
|
14550 |
msgid "New passwords do not match."
|
14551 |
msgstr ""
|
14552 |
|
14554 |
#: includes/profile.php:839
|
14555 |
#: includes/profile.php:851
|
14556 |
#: includes/profile.php:847
|
14557 |
+
#: includes/profile.php:887
|
14558 |
msgid "Please complete all fields."
|
14559 |
msgstr ""
|
14560 |
|
14586 |
#: includes/profile.php:891
|
14587 |
#: includes/profile.php:903
|
14588 |
#: includes/profile.php:899
|
14589 |
+
#: includes/profile.php:939
|
14590 |
msgid "New Password"
|
14591 |
msgstr ""
|
14592 |
|
14596 |
#: includes/profile.php:906
|
14597 |
#: includes/scripts.php:85
|
14598 |
#: includes/profile.php:902
|
14599 |
+
#: includes/profile.php:942
|
14600 |
msgid "Strength Indicator"
|
14601 |
msgstr ""
|
14602 |
|
14604 |
#: includes/profile.php:898
|
14605 |
#: includes/profile.php:910
|
14606 |
#: includes/profile.php:906
|
14607 |
+
#: includes/profile.php:946
|
14608 |
msgid "Confirm New Password"
|
14609 |
msgstr ""
|
14610 |
|
14704 |
#: includes/profile.php:499
|
14705 |
#: includes/profile.php:412
|
14706 |
#: includes/profile.php:495
|
14707 |
+
#: includes/profile.php:452
|
14708 |
+
#: includes/profile.php:535
|
14709 |
msgid "Level ID"
|
14710 |
msgstr ""
|
14711 |
|
14713 |
#: includes/profile.php:496
|
14714 |
#: includes/profile.php:502
|
14715 |
#: includes/profile.php:498
|
14716 |
+
#: includes/profile.php:538
|
14717 |
msgid "Date Modified"
|
14718 |
msgstr ""
|
14719 |
|
14721 |
#: includes/profile.php:497
|
14722 |
#: includes/profile.php:503
|
14723 |
#: includes/profile.php:499
|
14724 |
+
#: includes/profile.php:539
|
14725 |
msgid "End Date"
|
14726 |
msgstr ""
|
14727 |
|
14729 |
#: includes/profile.php:498
|
14730 |
#: includes/profile.php:504
|
14731 |
#: includes/profile.php:500
|
14732 |
+
#: includes/profile.php:540
|
14733 |
msgid "Level Cost"
|
14734 |
msgstr ""
|
14735 |
|
14794 |
msgstr ""
|
14795 |
|
14796 |
#: includes/privacy.php:520
|
14797 |
+
#: includes/privacy.php:521
|
14798 |
msgid "That post has since been updated."
|
14799 |
msgstr ""
|
14800 |
|
14801 |
#: includes/profile.php:58
|
14802 |
#: pages/invoice.php:43
|
14803 |
#: shortcodes/pmpro_account.php:244
|
14804 |
+
#: adminpages/orders.php:1705
|
14805 |
msgid "Paid"
|
14806 |
msgstr ""
|
14807 |
|
14808 |
#: includes/profile.php:138
|
14809 |
#: includes/profile.php:114
|
14810 |
+
#: includes/profile.php:124
|
14811 |
msgid "Send the user an email about this change."
|
14812 |
msgstr ""
|
14813 |
|
14814 |
#: includes/profile.php:144
|
14815 |
#: includes/profile.php:120
|
14816 |
+
#: includes/profile.php:130
|
14817 |
msgid "Cancel this user's subscription at the gateway."
|
14818 |
msgstr ""
|
14819 |
|
14820 |
#: includes/profile.php:158
|
14821 |
#: includes/profile.php:134
|
14822 |
+
#: includes/profile.php:150
|
14823 |
msgid "TOS Consent History"
|
14824 |
msgstr ""
|
14825 |
|
14826 |
#: includes/profile.php:410
|
14827 |
#: includes/profile.php:388
|
14828 |
+
#: includes/profile.php:428
|
14829 |
msgid "Member History"
|
14830 |
msgstr ""
|
14831 |
|
14832 |
#: includes/profile.php:413
|
14833 |
#: includes/profile.php:391
|
14834 |
+
#: includes/profile.php:431
|
14835 |
msgid "Order History"
|
14836 |
msgstr ""
|
14837 |
|
14838 |
#: includes/profile.php:414
|
14839 |
#: includes/profile.php:392
|
14840 |
+
#: includes/profile.php:432
|
14841 |
msgid "Membership Levels History"
|
14842 |
msgstr ""
|
14843 |
|
14844 |
#: includes/profile.php:485
|
14845 |
#: includes/profile.php:488
|
14846 |
#: includes/profile.php:475
|
14847 |
+
#: includes/profile.php:515
|
14848 |
msgid "No membership orders found."
|
14849 |
msgstr ""
|
14850 |
|
14851 |
#: includes/profile.php:537
|
14852 |
#: includes/profile.php:546
|
14853 |
#: includes/profile.php:542
|
14854 |
+
#: includes/profile.php:582
|
14855 |
msgid "No membership history found."
|
14856 |
msgstr ""
|
14857 |
|
14858 |
#: includes/profile.php:644
|
14859 |
#: includes/profile.php:656
|
14860 |
#: includes/profile.php:652
|
14861 |
+
#: includes/profile.php:692
|
14862 |
msgid "Log in to edit your profile."
|
14863 |
msgstr ""
|
14864 |
|
14865 |
#: includes/profile.php:679
|
14866 |
#: includes/profile.php:691
|
14867 |
#: includes/profile.php:687
|
14868 |
+
#: includes/profile.php:727
|
14869 |
msgid "Please enter a display name."
|
14870 |
msgstr ""
|
14871 |
|
14872 |
#: includes/profile.php:689
|
14873 |
#: includes/profile.php:701
|
14874 |
#: includes/profile.php:697
|
14875 |
+
#: includes/profile.php:737
|
14876 |
msgid "Please enter an email address."
|
14877 |
msgstr ""
|
14878 |
|
14879 |
#: includes/profile.php:691
|
14880 |
#: includes/profile.php:703
|
14881 |
#: includes/profile.php:699
|
14882 |
+
#: includes/profile.php:739
|
14883 |
msgid "The email address isn’t correct."
|
14884 |
msgstr ""
|
14885 |
|
14886 |
#: includes/profile.php:695
|
14887 |
#: includes/profile.php:707
|
14888 |
#: includes/profile.php:703
|
14889 |
+
#: includes/profile.php:743
|
14890 |
msgid "This email is already registered, please choose another one."
|
14891 |
msgstr ""
|
14892 |
|
14893 |
#: includes/profile.php:722
|
14894 |
#: includes/profile.php:734
|
14895 |
#: includes/profile.php:730
|
14896 |
+
#: includes/profile.php:770
|
14897 |
msgid "Your profile has been updated."
|
14898 |
msgstr ""
|
14899 |
|
14900 |
#: includes/profile.php:749
|
14901 |
#: includes/profile.php:761
|
14902 |
#: includes/profile.php:757
|
14903 |
+
#: includes/profile.php:797
|
14904 |
msgid "Display name publicly as"
|
14905 |
msgstr ""
|
14906 |
|
14907 |
#: includes/profile.php:762
|
14908 |
#: includes/profile.php:774
|
14909 |
#: includes/profile.php:770
|
14910 |
+
#: includes/profile.php:810
|
14911 |
msgid "Site administrators must use the WordPress dashboard to update their email address."
|
14912 |
msgstr ""
|
14913 |
|
14914 |
#: includes/profile.php:785
|
14915 |
#: includes/profile.php:797
|
14916 |
#: includes/profile.php:793
|
14917 |
+
#: includes/profile.php:833
|
14918 |
msgid "Update Profile"
|
14919 |
msgstr ""
|
14920 |
|
14921 |
#: includes/profile.php:841
|
14922 |
#: includes/profile.php:853
|
14923 |
#: includes/profile.php:849
|
14924 |
+
#: includes/profile.php:889
|
14925 |
msgid "Please enter your current password."
|
14926 |
msgstr ""
|
14927 |
|
14928 |
#: includes/profile.php:845
|
14929 |
#: includes/profile.php:857
|
14930 |
#: includes/profile.php:853
|
14931 |
+
#: includes/profile.php:893
|
14932 |
msgid "Your current password is incorrect."
|
14933 |
msgstr ""
|
14934 |
|
14935 |
#: includes/profile.php:856
|
14936 |
#: includes/profile.php:868
|
14937 |
#: includes/profile.php:864
|
14938 |
+
#: includes/profile.php:904
|
14939 |
msgid "Your password has been updated."
|
14940 |
msgstr ""
|
14941 |
|
14942 |
#: includes/profile.php:886
|
14943 |
#: includes/profile.php:898
|
14944 |
#: includes/profile.php:894
|
14945 |
+
#: includes/profile.php:934
|
14946 |
msgid "Current Password"
|
14947 |
msgstr ""
|
14948 |
|
14954 |
#: includes/profile.php:896
|
14955 |
#: includes/profile.php:901
|
14956 |
#: includes/profile.php:908
|
14957 |
+
#: includes/profile.php:936
|
14958 |
+
#: includes/profile.php:941
|
14959 |
+
#: includes/profile.php:948
|
14960 |
msgid "Required Field"
|
14961 |
msgstr ""
|
14962 |
|
15006 |
msgstr ""
|
15007 |
|
15008 |
#: pages/billing.php:136
|
15009 |
+
#: pages/billing.php:138
|
15010 |
msgid "Your billing information cannot be updated at this time."
|
15011 |
msgstr ""
|
15012 |
|
15013 |
#: pages/billing.php:458
|
15014 |
#: shortcodes/pmpro_account.php:68
|
15015 |
#: pages/billing.php:468
|
15016 |
+
#: pages/billing.php:475
|
15017 |
msgid "Your membership is not active. <a href='%s'>Renew now.</a>"
|
15018 |
msgstr ""
|
15019 |
|
15020 |
#: pages/billing.php:461
|
15021 |
#: shortcodes/pmpro_account.php:71
|
15022 |
#: pages/billing.php:471
|
15023 |
+
#: pages/billing.php:478
|
15024 |
msgid "You do not have an active membership. <a href='%s'>Register here.</a>"
|
15025 |
msgstr ""
|
15026 |
|
15027 |
#: pages/billing.php:464
|
15028 |
#: shortcodes/pmpro_account.php:74
|
15029 |
#: pages/billing.php:474
|
15030 |
+
#: pages/billing.php:481
|
15031 |
msgid "You do not have an active membership. <a href='%s'>Choose a membership level.</a>"
|
15032 |
msgstr ""
|
15033 |
|
15054 |
#: paid-memberships-pro.php:170
|
15055 |
#: paid-memberships-pro.php:172
|
15056 |
#: paid-memberships-pro.php:173
|
15057 |
+
#: paid-memberships-pro.php:179
|
15058 |
msgid "Default"
|
15059 |
msgstr ""
|
15060 |
|
15080 |
#: blocks/account-invoices-section/block.js:39
|
15081 |
#: js/blocks.build.js:119
|
15082 |
#: js/blocks.build.js:137
|
15083 |
+
#: blocks/account-invoices-section/block.js:48
|
15084 |
msgid "Membership Account: Invoices"
|
15085 |
msgstr ""
|
15086 |
|
15119 |
#: js/blocks.build.js:1335
|
15120 |
#: js/blocks.build.js:1496
|
15121 |
#: js/blocks.build.js:1560
|
15122 |
+
#: blocks/account-invoices-section/block.js:35
|
15123 |
+
#: blocks/account-links-section/block.js:36
|
15124 |
+
#: blocks/account-membership-section/block.js:34
|
15125 |
+
#: blocks/account-page/block.js:40
|
15126 |
+
#: blocks/account-profile-section/block.js:35
|
15127 |
+
#: blocks/billing-page/block.js:35
|
15128 |
+
#: blocks/cancel-page/block.js:34
|
15129 |
+
#: blocks/checkout-button/block.js:44
|
15130 |
+
#: blocks/checkout-page/block.js:39
|
15131 |
+
#: blocks/confirmation-page/block.js:34
|
15132 |
+
#: blocks/invoice-page/block.js:34
|
15133 |
+
#: blocks/levels-page/block.js:33
|
15134 |
+
#: blocks/login/block.js:38
|
15135 |
+
#: blocks/member-profile-edit/block.js:31
|
15136 |
+
#: blocks/membership/block.js:47
|
15137 |
msgid "pmpro"
|
15138 |
msgstr ""
|
15139 |
|
15149 |
|
15150 |
#: blocks/account-links-section/block.js:39
|
15151 |
#: js/blocks.build.js:194
|
15152 |
+
#: blocks/account-links-section/block.js:48
|
15153 |
msgid "Membership Account: Member Links"
|
15154 |
msgstr ""
|
15155 |
|
15165 |
|
15166 |
#: blocks/account-membership-section/block.js:39
|
15167 |
#: js/blocks.build.js:251
|
15168 |
+
#: blocks/account-membership-section/block.js:46
|
15169 |
msgid "Membership Account: My Memberships"
|
15170 |
msgstr ""
|
15171 |
|
15198 |
#: blocks/account-profile-section/block.js:40
|
15199 |
#: js/blocks.build.js:492
|
15200 |
#: js/blocks.build.js:510
|
15201 |
+
#: blocks/account-profile-section/block.js:46
|
15202 |
msgid "Membership Account: Profile"
|
15203 |
msgstr ""
|
15204 |
|
15211 |
#: blocks/billing-page/block.js:39
|
15212 |
#: js/blocks.build.js:549
|
15213 |
#: js/blocks.build.js:567
|
15214 |
+
#: blocks/billing-page/block.js:45
|
15215 |
msgid "Membership Billing Page"
|
15216 |
msgstr ""
|
15217 |
|
15237 |
|
15238 |
#: blocks/checkout-button/block.js:41
|
15239 |
#: js/blocks.build.js:758
|
15240 |
+
#: blocks/checkout-button/block.js:40
|
15241 |
+
#: blocks/checkout-page/block.js:40
|
15242 |
+
#: blocks/confirmation-page/block.js:32
|
15243 |
msgid "buy"
|
15244 |
msgstr ""
|
15245 |
|
15246 |
#: blocks/checkout-button/block.js:42
|
15247 |
#: js/blocks.build.js:758
|
15248 |
+
#: blocks/checkout-button/block.js:41
|
15249 |
+
#: blocks/levels-page/block.js:31
|
15250 |
msgid "level"
|
15251 |
msgstr ""
|
15252 |
|
15254 |
#: blocks/checkout-button/inspector.js:31
|
15255 |
#: js/blocks.build.js:790
|
15256 |
#: js/blocks.build.js:891
|
15257 |
+
#: blocks/checkout-button/block.js:71
|
15258 |
msgid "Button Text"
|
15259 |
msgstr ""
|
15260 |
|
15262 |
#: blocks/checkout-button/inspector.js:48
|
15263 |
#: js/blocks.build.js:807
|
15264 |
#: js/blocks.build.js:910
|
15265 |
+
#: blocks/checkout-button/block.js:82
|
15266 |
msgid "CSS Class"
|
15267 |
msgstr ""
|
15268 |
|
15285 |
#: blocks/checkout-page/block.js:52
|
15286 |
#: js/blocks.build.js:973
|
15287 |
#: js/blocks.build.js:1003
|
15288 |
+
#: blocks/checkout-page/block.js:59
|
15289 |
msgid "Membership Checkout Form"
|
15290 |
msgstr ""
|
15291 |
|
15311 |
|
15312 |
#: blocks/invoice-page/block.js:39
|
15313 |
#: js/blocks.build.js:1224
|
15314 |
+
#: blocks/invoice-page/block.js:46
|
15315 |
msgid "Membership Invoices"
|
15316 |
msgstr ""
|
15317 |
|
15319 |
#: blocks/levels-page/block.js:39
|
15320 |
#: js/blocks.build.js:1263
|
15321 |
#: js/blocks.build.js:1281
|
15322 |
+
#: blocks/levels-page/block.js:45
|
15323 |
msgid "Membership Levels List"
|
15324 |
msgstr ""
|
15325 |
|
15352 |
|
15353 |
#: blocks/login/block.js:38
|
15354 |
#: js/blocks.build.js:1335
|
15355 |
+
#: blocks/login/block.js:34
|
15356 |
msgid "log in"
|
15357 |
msgstr ""
|
15358 |
|
15375 |
#: blocks/member-profile-edit/block.js:35
|
15376 |
#: js/blocks.build.js:1488
|
15377 |
#: js/blocks.build.js:1504
|
15378 |
+
#: blocks/member-profile-edit/block.js:39
|
15379 |
msgid "Member Profile Edit"
|
15380 |
msgstr ""
|
15381 |
|
15386 |
|
15387 |
#: blocks/member-profile-edit/block.js:27
|
15388 |
#: js/blocks.build.js:1496
|
15389 |
+
#: blocks/account-invoices-section/block.js:32
|
15390 |
+
#: blocks/account-links-section/block.js:34
|
15391 |
+
#: blocks/account-membership-section/block.js:32
|
15392 |
+
#: blocks/account-page/block.js:37
|
15393 |
+
#: blocks/account-profile-section/block.js:33
|
15394 |
+
#: blocks/billing-page/block.js:32
|
15395 |
+
#: blocks/cancel-page/block.js:31
|
15396 |
+
#: blocks/checkout-button/block.js:42
|
15397 |
+
#: blocks/checkout-page/block.js:37
|
15398 |
+
#: blocks/confirmation-page/block.js:31
|
15399 |
msgid "member"
|
15400 |
msgstr ""
|
15401 |
|
15402 |
#: blocks/member-profile-edit/block.js:28
|
15403 |
#: js/blocks.build.js:1496
|
15404 |
+
#: blocks/account-page/block.js:41
|
15405 |
msgid "profile"
|
15406 |
msgstr ""
|
15407 |
|
15421 |
|
15422 |
#: adminpages/discountcodes.php:871
|
15423 |
#: adminpages/discountcodes.php:873
|
15424 |
+
#: adminpages/discountcodes.php:878
|
15425 |
msgid "View Orders"
|
15426 |
msgstr ""
|
15427 |
|
15435 |
#: classes/gateways/class.pmprogateway_stripe.php:456
|
15436 |
#: classes/gateways/class.pmprogateway_stripe.php:1797
|
15437 |
#: classes/gateways/class.pmprogateway_stripe.php:1795
|
15438 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2234
|
15439 |
msgid "Connected with Legacy Keys"
|
15440 |
msgstr ""
|
15441 |
|
15445 |
#: classes/gateways/class.pmprogateway_stripe.php:466
|
15446 |
#: classes/gateways/class.pmprogateway_stripe.php:1808
|
15447 |
#: classes/gateways/class.pmprogateway_stripe.php:1806
|
15448 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2245
|
15449 |
msgid "You can continue to use the legacy API keys or choose to upgrade to our new Stripe Connect solution below."
|
15450 |
msgstr ""
|
15451 |
|
15455 |
#: classes/gateways/class.pmprogateway_stripe.php:468
|
15456 |
#: classes/gateways/class.pmprogateway_stripe.php:1816
|
15457 |
#: classes/gateways/class.pmprogateway_stripe.php:1814
|
15458 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2253
|
15459 |
msgid "Read the documentation on switching to Stripe Connect »"
|
15460 |
msgstr ""
|
15461 |
|
15462 |
#: adminpages/emailtemplates.php:181
|
15463 |
+
#: adminpages/emailtemplates.php:173
|
15464 |
msgid "Custom Level Confirmation Message"
|
15465 |
msgstr ""
|
15466 |
|
15471 |
#: classes/class-pmpro-site-health.php:109
|
15472 |
#: classes/class-pmpro-site-health.php:120
|
15473 |
#: classes/class-pmpro-site-health.php:124
|
15474 |
+
#: classes/class-pmpro-site-health.php:128
|
15475 |
msgid "No Levels Found"
|
15476 |
msgstr ""
|
15477 |
|
15479 |
#: classes/class-pmpro-site-health.php:128
|
15480 |
#: classes/class-pmpro-site-health.php:139
|
15481 |
#: classes/class-pmpro-site-health.php:143
|
15482 |
+
#: classes/class-pmpro-site-health.php:147
|
15483 |
msgid "%d discount code"
|
15484 |
msgid_plural "%d discount codes"
|
15485 |
msgstr[0] ""
|
15489 |
#: classes/class-pmpro-site-health.php:144
|
15490 |
#: classes/class-pmpro-site-health.php:155
|
15491 |
#: classes/class-pmpro-site-health.php:159
|
15492 |
+
#: classes/class-pmpro-site-health.php:163
|
15493 |
msgid "%d order"
|
15494 |
msgid_plural "%d orders"
|
15495 |
msgstr[0] ""
|
15499 |
#: classes/class-pmpro-site-health.php:161
|
15500 |
#: classes/class-pmpro-site-health.php:172
|
15501 |
#: classes/class-pmpro-site-health.php:176
|
15502 |
+
#: classes/class-pmpro-site-health.php:180
|
15503 |
msgid "%s (gateway not registered)"
|
15504 |
msgstr ""
|
15505 |
|
15506 |
#: classes/class-pmpro-site-health.php:174
|
15507 |
#: classes/class-pmpro-site-health.php:185
|
15508 |
#: classes/class-pmpro-site-health.php:189
|
15509 |
+
#: classes/class-pmpro-site-health.php:193
|
15510 |
+
#: classes/class-pmpro-wisdom-integration.php:345
|
15511 |
msgid "Legacy Keys"
|
15512 |
msgstr ""
|
15513 |
|
15514 |
#: classes/class-pmpro-site-health.php:178
|
15515 |
#: classes/class-pmpro-site-health.php:189
|
15516 |
#: classes/class-pmpro-site-health.php:193
|
15517 |
+
#: classes/class-pmpro-site-health.php:194
|
15518 |
+
#: classes/class-pmpro-site-health.php:198
|
15519 |
+
#: classes/class-pmpro-wisdom-integration.php:350
|
15520 |
msgid "Stripe Connect"
|
15521 |
msgstr ""
|
15522 |
|
15524 |
#: classes/class-pmpro-site-health.php:202
|
15525 |
#: classes/class-pmpro-site-health.php:213
|
15526 |
#: classes/class-pmpro-site-health.php:217
|
15527 |
+
#: classes/class-pmpro-site-health.php:220
|
15528 |
+
#: classes/class-pmpro-site-health.php:224
|
15529 |
msgid "%s (environment not registered)"
|
15530 |
msgstr ""
|
15531 |
|
15532 |
#: classes/class-pmpro-site-health.php:226
|
15533 |
#: classes/class-pmpro-site-health.php:268
|
15534 |
#: classes/class-pmpro-site-health.php:272
|
15535 |
+
#: classes/class-pmpro-site-health.php:275
|
15536 |
+
#: classes/class-pmpro-site-health.php:279
|
15537 |
msgid "Unable to verify"
|
15538 |
msgstr ""
|
15539 |
|
15541 |
#: classes/class-pmpro-site-health.php:345
|
15542 |
#: classes/class-pmpro-site-health.php:349
|
15543 |
#: classes/class-pmpro-site-health.php:346
|
15544 |
+
#: classes/class-pmpro-site-health.php:342
|
15545 |
msgid "missing"
|
15546 |
msgstr ""
|
15547 |
|
15548 |
#: classes/gateways/class.pmprogateway_stripe.php:533
|
15549 |
#: classes/gateways/class.pmprogateway_stripe.php:539
|
15550 |
#: classes/gateways/class.pmprogateway_stripe.php:303
|
15551 |
+
#: classes/gateways/class.pmprogateway_stripe.php:329
|
15552 |
msgid "Having trouble connecting through the button above or otherwise need to use your own API keys?"
|
15553 |
msgstr ""
|
15554 |
|
15555 |
#: classes/gateways/class.pmprogateway_stripe.php:534
|
15556 |
#: classes/gateways/class.pmprogateway_stripe.php:540
|
15557 |
#: classes/gateways/class.pmprogateway_stripe.php:304
|
15558 |
+
#: classes/gateways/class.pmprogateway_stripe.php:330
|
15559 |
msgid "Click here to use the legacy API settings."
|
15560 |
msgstr ""
|
15561 |
|
15562 |
#: adminpages/license.php:37
|
15563 |
+
#: adminpages/license.php:49
|
15564 |
msgid "There was an issue validating your license key: %s"
|
15565 |
msgstr ""
|
15566 |
|
15618 |
#: classes/class-pmpro-site-health.php:365
|
15619 |
#: classes/class-pmpro-site-health.php:406
|
15620 |
#: classes/class-pmpro-site-health.php:403
|
15621 |
+
#: classes/class-pmpro-site-health.php:399
|
15622 |
msgid "PMPRO_GETFILE_ENABLED is not set"
|
15623 |
msgstr ""
|
15624 |
|
15625 |
#: classes/class-pmpro-site-health.php:369
|
15626 |
#: classes/class-pmpro-site-health.php:410
|
15627 |
#: classes/class-pmpro-site-health.php:407
|
15628 |
+
#: classes/class-pmpro-site-health.php:403
|
15629 |
msgid "PMPRO_GETFILE_ENABLED is off"
|
15630 |
msgstr ""
|
15631 |
|
15635 |
#: classes/class-pmpro-site-health.php:457
|
15636 |
#: classes/class-pmpro-site-health.php:420
|
15637 |
#: classes/class-pmpro-site-health.php:454
|
15638 |
+
#: classes/class-pmpro-site-health.php:450
|
15639 |
msgid "Unable to access .htaccess file"
|
15640 |
msgstr ""
|
15641 |
|
15645 |
#: classes/class-pmpro-site-health.php:461
|
15646 |
#: classes/class-pmpro-site-health.php:424
|
15647 |
#: classes/class-pmpro-site-health.php:458
|
15648 |
+
#: classes/class-pmpro-site-health.php:454
|
15649 |
msgid "Off - No .htaccess file"
|
15650 |
msgstr ""
|
15651 |
|
15655 |
#: classes/class-pmpro-site-health.php:472
|
15656 |
#: classes/class-pmpro-site-health.php:430
|
15657 |
#: classes/class-pmpro-site-health.php:469
|
15658 |
+
#: classes/class-pmpro-site-health.php:426
|
15659 |
+
#: classes/class-pmpro-site-health.php:465
|
15660 |
msgid "Off"
|
15661 |
msgstr ""
|
15662 |
|
15663 |
#: classes/class-pmpro-site-health.php:395
|
15664 |
#: classes/class-pmpro-site-health.php:436
|
15665 |
#: classes/class-pmpro-site-health.php:433
|
15666 |
+
#: classes/class-pmpro-site-health.php:429
|
15667 |
msgid "On - .htaccess contains services/getfile.php usage"
|
15668 |
msgstr ""
|
15669 |
|
15670 |
#: classes/class-pmpro-site-health.php:426
|
15671 |
#: classes/class-pmpro-site-health.php:467
|
15672 |
#: classes/class-pmpro-site-health.php:464
|
15673 |
+
#: classes/class-pmpro-site-health.php:460
|
15674 |
msgid "On - Browser cache enabled for HTML (ExpiresByType text/html), this may interfere with Content Restriction after Login. Remove that line from your .htaccess to resolve this problem."
|
15675 |
msgstr ""
|
15676 |
|
15677 |
#: classes/class-pmpro-site-health.php:428
|
15678 |
#: classes/class-pmpro-site-health.php:469
|
15679 |
#: classes/class-pmpro-site-health.php:466
|
15680 |
+
#: classes/class-pmpro-site-health.php:462
|
15681 |
msgid "On - Browser cache enabled for HTML (ExpiresDefault), this may interfere with Content Restriction after Login. Remove that line from your .htaccess to resolve this problem."
|
15682 |
msgstr ""
|
15683 |
|
15684 |
#: classes/class-pmpro-site-health.php:443
|
15685 |
#: classes/class-pmpro-site-health.php:484
|
15686 |
#: classes/class-pmpro-site-health.php:481
|
15687 |
+
#: classes/class-pmpro-site-health.php:508
|
15688 |
msgid "Cron Limit"
|
15689 |
msgstr ""
|
15690 |
|
15691 |
#: classes/class-pmpro-site-health.php:444
|
15692 |
#: classes/class-pmpro-site-health.php:485
|
15693 |
#: classes/class-pmpro-site-health.php:482
|
15694 |
+
#: classes/class-pmpro-site-health.php:509
|
15695 |
msgid "Default Membership Level"
|
15696 |
msgstr ""
|
15697 |
|
15698 |
#: classes/class-pmpro-site-health.php:445
|
15699 |
#: classes/class-pmpro-site-health.php:486
|
15700 |
#: classes/class-pmpro-site-health.php:483
|
15701 |
+
#: classes/class-pmpro-site-health.php:510
|
15702 |
msgid "Use Sessions"
|
15703 |
msgstr ""
|
15704 |
|
15705 |
#: classes/class-pmpro-site-health.php:450
|
15706 |
#: classes/class-pmpro-site-health.php:491
|
15707 |
#: classes/class-pmpro-site-health.php:488
|
15708 |
+
#: classes/class-pmpro-site-health.php:515
|
15709 |
msgid "Authorize.net Silent Post Debug Mode"
|
15710 |
msgstr ""
|
15711 |
|
15712 |
#: classes/class-pmpro-site-health.php:453
|
15713 |
#: classes/class-pmpro-site-health.php:494
|
15714 |
#: classes/class-pmpro-site-health.php:491
|
15715 |
+
#: classes/class-pmpro-site-health.php:518
|
15716 |
msgid "Braintree Webhook Debug Mode"
|
15717 |
msgstr ""
|
15718 |
|
15723 |
#: classes/class-pmpro-site-health.php:500
|
15724 |
#: classes/class-pmpro-site-health.php:503
|
15725 |
#: classes/class-pmpro-site-health.php:494
|
15726 |
+
#: classes/class-pmpro-site-health.php:521
|
15727 |
+
#: classes/class-pmpro-site-health.php:524
|
15728 |
+
#: classes/class-pmpro-site-health.php:527
|
15729 |
msgid "PayPal IPN Debug Mode"
|
15730 |
msgstr ""
|
15731 |
|
15732 |
#: classes/class-pmpro-site-health.php:465
|
15733 |
#: classes/class-pmpro-site-health.php:506
|
15734 |
#: classes/class-pmpro-site-health.php:503
|
15735 |
+
#: classes/class-pmpro-site-health.php:530
|
15736 |
msgid "Stripe Webhook Delay"
|
15737 |
msgstr ""
|
15738 |
|
15739 |
#: classes/class-pmpro-site-health.php:466
|
15740 |
#: classes/class-pmpro-site-health.php:507
|
15741 |
#: classes/class-pmpro-site-health.php:504
|
15742 |
+
#: classes/class-pmpro-site-health.php:531
|
15743 |
msgid "Stripe Webhook Debug Mode"
|
15744 |
msgstr ""
|
15745 |
|
15746 |
#: classes/class-pmpro-site-health.php:469
|
15747 |
#: classes/class-pmpro-site-health.php:510
|
15748 |
#: classes/class-pmpro-site-health.php:507
|
15749 |
+
#: classes/class-pmpro-site-health.php:534
|
15750 |
msgid "2Checkout INS Debug Mode"
|
15751 |
msgstr ""
|
15752 |
|
15753 |
#: adminpages/advancedsettings.php:243
|
15754 |
+
#: adminpages/advancedsettings.php:250
|
15755 |
msgid "Enable Spam Protection?"
|
15756 |
msgstr ""
|
15757 |
|
15758 |
#: adminpages/advancedsettings.php:249
|
15759 |
+
#: adminpages/advancedsettings.php:256
|
15760 |
msgid "Yes - Enable Spam Protection"
|
15761 |
msgstr ""
|
15762 |
|
15763 |
#: adminpages/advancedsettings.php:251
|
15764 |
+
#: adminpages/advancedsettings.php:258
|
15765 |
msgid "Block IPs from checkout if there are more than %d failures within %d minutes."
|
15766 |
msgstr ""
|
15767 |
|
15768 |
#: adminpages/dashboard.php:186
|
15769 |
#: adminpages/dashboard.php:188
|
15770 |
+
#: adminpages/license.php:64
|
15771 |
+
#: adminpages/license.php:76
|
15772 |
msgid "View Plans and Pricing"
|
15773 |
msgstr ""
|
15774 |
|
15783 |
|
15784 |
#: classes/class-pmpro-site-health.php:389
|
15785 |
#: classes/class-pmpro-site-health.php:386
|
15786 |
+
#: classes/class-pmpro-site-health.php:382
|
15787 |
msgid "No Membership Pages Found"
|
15788 |
msgstr ""
|
15789 |
|
15790 |
#: classes/gateways/class.pmprogateway_stripe.php:847
|
15791 |
+
#: classes/gateways/class.pmprogateway_stripe.php:955
|
15792 |
msgid "Edit customer in Stripe"
|
15793 |
msgstr ""
|
15794 |
|
15795 |
#: classes/gateways/class.pmprogateway_stripe.php:1387
|
15796 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1806
|
15797 |
msgid "Error processing setup intent."
|
15798 |
msgstr ""
|
15799 |
|
15800 |
#: classes/gateways/class.pmprogateway_stripe.php:1402
|
15801 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1821
|
15802 |
msgid "Error processing payment intent."
|
15803 |
msgstr ""
|
15804 |
|
15805 |
#: classes/gateways/class.pmprogateway_stripe.php:1424
|
15806 |
#: classes/gateways/class.pmprogateway_stripe.php:1679
|
15807 |
#: classes/gateways/class.pmprogateway_stripe.php:1677
|
15808 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1843
|
15809 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2096
|
15810 |
msgid "Error retrieving payment method."
|
15811 |
msgstr ""
|
15812 |
|
15813 |
#: classes/gateways/class.pmprogateway_stripe.php:1432
|
15814 |
#: classes/gateways/class.pmprogateway_stripe.php:1687
|
15815 |
#: classes/gateways/class.pmprogateway_stripe.php:1685
|
15816 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1851
|
15817 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2104
|
15818 |
msgid "Error updating default payment method."
|
15819 |
msgstr ""
|
15820 |
|
15821 |
#: classes/gateways/class.pmprogateway_stripe.php:1460
|
15822 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1879
|
15823 |
msgid "Error creating subscription for customer."
|
15824 |
msgstr ""
|
15825 |
|
15826 |
#: classes/gateways/class.pmprogateway_stripe.php:1693
|
15827 |
#: classes/gateways/class.pmprogateway_stripe.php:1691
|
15828 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2110
|
15829 |
msgid "Error updating payment method for subscription."
|
15830 |
msgstr ""
|
15831 |
|
15832 |
#: classes/gateways/class.pmprogateway_stripe.php:2088
|
15833 |
#: classes/gateways/class.pmprogateway_stripe.php:2086
|
15834 |
#: classes/gateways/class.pmprogateway_stripe.php:2087
|
15835 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2526
|
15836 |
msgid "Error updating customer record with Stripe."
|
15837 |
msgstr ""
|
15838 |
|
15839 |
#: classes/gateways/class.pmprogateway_stripe.php:2099
|
15840 |
#: classes/gateways/class.pmprogateway_stripe.php:2097
|
15841 |
#: classes/gateways/class.pmprogateway_stripe.php:2098
|
15842 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2537
|
15843 |
msgid "Error creating customer record with Stripe."
|
15844 |
msgstr ""
|
15845 |
|
15846 |
#: classes/gateways/class.pmprogateway_stripe.php:2424
|
15847 |
#: classes/gateways/class.pmprogateway_stripe.php:2420
|
15848 |
#: classes/gateways/class.pmprogateway_stripe.php:2422
|
15849 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2418
|
15850 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2875
|
15851 |
msgid "Cannot find product for membership level."
|
15852 |
msgstr ""
|
15853 |
|
15854 |
#: classes/gateways/class.pmprogateway_stripe.php:2430
|
15855 |
#: classes/gateways/class.pmprogateway_stripe.php:2426
|
15856 |
#: classes/gateways/class.pmprogateway_stripe.php:2428
|
15857 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2424
|
15858 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2881
|
15859 |
msgid "Cannot get price."
|
15860 |
msgstr ""
|
15861 |
|
15862 |
#: classes/gateways/class.pmprogateway_stripe.php:2580
|
15863 |
#: classes/gateways/class.pmprogateway_stripe.php:2576
|
15864 |
#: classes/gateways/class.pmprogateway_stripe.php:2578
|
15865 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2574
|
15866 |
+
#: classes/gateways/class.pmprogateway_stripe.php:3031
|
15867 |
msgid "Cannot reuse an old setup intent."
|
15868 |
msgstr ""
|
15869 |
|
15871 |
#: classes/gateways/class.pmprogateway_stripe.php:2616
|
15872 |
#: classes/gateways/class.pmprogateway_stripe.php:2610
|
15873 |
#: classes/gateways/class.pmprogateway_stripe.php:2612
|
15874 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2608
|
15875 |
+
#: classes/gateways/class.pmprogateway_stripe.php:3065
|
15876 |
+
#: classes/gateways/class.pmprogateway_stripe.php:3067
|
15877 |
msgid "Error adding metadata to setup intent."
|
15878 |
msgstr ""
|
15879 |
|
15886 |
#: classes/gateways/class.pmprogateway_stripe.php:2716
|
15887 |
#: classes/gateways/class.pmprogateway_stripe.php:2712
|
15888 |
#: classes/gateways/class.pmprogateway_stripe.php:2714
|
15889 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2710
|
15890 |
+
#: classes/gateways/class.pmprogateway_stripe.php:3167
|
15891 |
msgid "Remove"
|
15892 |
msgstr ""
|
15893 |
|
15908 |
msgstr ""
|
15909 |
|
15910 |
#: adminpages/advancedsettings.php:497
|
15911 |
+
#: adminpages/advancedsettings.php:529
|
15912 |
msgid "To delete all PMPro data from the database, set to Yes, deactivate PMPro, and then click to delete PMPro from the plugins page."
|
15913 |
msgstr ""
|
15914 |
|
15915 |
#: adminpages/dashboard.php:181
|
15916 |
#: adminpages/license.php:43
|
15917 |
+
#: adminpages/license.php:55
|
15918 |
msgid "Your <strong>%1$s</strong> key is active. %1$s accounts include access to documentation and free downloads."
|
15919 |
msgstr ""
|
15920 |
|
15921 |
#: adminpages/license.php:96
|
15922 |
+
#: adminpages/license.php:98
|
15923 |
msgid "<strong>Paid Memberships Pro offers plans for automatic updates of Add Ons and premium support.</strong> These plans include a license key which we recommend for all public websites running Paid Memberships Pro. A license key allows you to automatically install Add Ons included in your plan and update active Add Ons included in your plan when a new security, bug fix, or feature enhancement is released."
|
15924 |
msgstr ""
|
15925 |
|
15926 |
#: adminpages/license.php:100
|
15927 |
+
#: adminpages/license.php:102
|
15928 |
msgid "<strong>Need help?</strong> Your license allows you to open new tickets in our private support area. Purchases are backed by a 30 day, no questions asked refund policy."
|
15929 |
msgstr ""
|
15930 |
|
15931 |
#: adminpages/orders.php:1549
|
15932 |
+
#: adminpages/orders.php:1550
|
15933 |
msgid "renewal"
|
15934 |
msgstr ""
|
15935 |
|
15936 |
#: adminpages/reports/sales.php:406
|
15937 |
+
#: adminpages/reports/sales.php:407
|
15938 |
msgid "Renewals"
|
15939 |
msgstr ""
|
15940 |
|
15941 |
#: adminpages/reports/sales.php:407
|
15942 |
+
#: adminpages/reports/sales.php:408
|
15943 |
msgid "New %s"
|
15944 |
msgstr ""
|
15945 |
|
15946 |
#: adminpages/reports/sales.php:409
|
15947 |
#: adminpages/reports/sales.php:411
|
15948 |
+
#: adminpages/reports/sales.php:410
|
15949 |
+
#: adminpages/reports/sales.php:412
|
15950 |
msgid "Average: %s"
|
15951 |
msgstr ""
|
15952 |
|
15953 |
#: adminpages/reports/sales.php:526
|
15954 |
+
#: adminpages/reports/sales.php:527
|
15955 |
msgid "New:"
|
15956 |
msgstr ""
|
15957 |
|
15958 |
#: adminpages/reports/sales.php:529
|
15959 |
+
#: adminpages/reports/sales.php:530
|
15960 |
msgid "Renewals:"
|
15961 |
msgstr ""
|
15962 |
|
15963 |
#: adminpages/reports/sales.php:532
|
15964 |
+
#: adminpages/reports/sales.php:533
|
15965 |
msgid "Total:"
|
15966 |
msgstr ""
|
15967 |
|
15968 |
#: adminpages/reports/sales.php:545
|
15969 |
+
#: adminpages/reports/sales.php:546
|
15970 |
msgid "%s %s for %s"
|
15971 |
msgstr ""
|
15972 |
|
15991 |
msgstr ""
|
15992 |
|
15993 |
#: classes/class-pmpro-site-health.php:276
|
15994 |
+
#: classes/class-pmpro-site-health.php:279
|
15995 |
+
#: classes/class-pmpro-site-health.php:283
|
15996 |
msgid "No template overrides"
|
15997 |
msgstr ""
|
15998 |
|
15999 |
#: classes/class-pmpro-site-health.php:282
|
16000 |
+
#: classes/class-pmpro-site-health.php:285
|
16001 |
+
#: classes/class-pmpro-site-health.php:289
|
16002 |
msgid "Empty override folder -- no template overrides"
|
16003 |
msgstr ""
|
16004 |
|
16005 |
#: classes/gateways/class.pmprogateway_stripe.php:1868
|
16006 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2307
|
16007 |
msgid "Note: You are using the free Stripe payment gateway integration. This includes an additional 1% fee for payment processing. This fee is removed by activating a premium PMPro license."
|
16008 |
msgstr ""
|
16009 |
|
16010 |
#: classes/gateways/class.pmprogateway_stripe.php:2363
|
16011 |
#: classes/gateways/class.pmprogateway_stripe.php:2365
|
16012 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2361
|
16013 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2815
|
16014 |
msgid "Could not create price."
|
16015 |
msgstr ""
|
16016 |
|
16070 |
msgstr ""
|
16071 |
|
16072 |
#: includes/privacy.php:512
|
16073 |
+
#: includes/privacy.php:513
|
16074 |
msgid "%s agreed to %s (ID #%d, last modified %s) on %s."
|
16075 |
msgstr ""
|
16076 |
|
16078 |
#: js/blocks.build.js:1433
|
16079 |
msgid "Assign the menu under Appearance > Menus."
|
16080 |
msgstr ""
|
16081 |
+
|
16082 |
+
#: adminpages/advancedsettings.php:407
|
16083 |
+
#: adminpages/advancedsettings.php:414
|
16084 |
+
msgid "Redirect all traffic from registration page to /subscription/?"
|
16085 |
+
msgstr ""
|
16086 |
+
|
16087 |
+
#: adminpages/discountcodes.php:728
|
16088 |
+
#: adminpages/discountcodes.php:729
|
16089 |
+
msgid "Save Code"
|
16090 |
+
msgstr ""
|
16091 |
+
|
16092 |
+
#: adminpages/license.php:66
|
16093 |
+
#: adminpages/license.php:78
|
16094 |
+
msgid "Manage My Account"
|
16095 |
+
msgstr ""
|
16096 |
+
|
16097 |
+
#: adminpages/license.php:68
|
16098 |
+
#: adminpages/license.php:80
|
16099 |
+
msgid "Open Support Ticket"
|
16100 |
+
msgstr ""
|
16101 |
+
|
16102 |
+
#: adminpages/license.php:70
|
16103 |
+
#: adminpages/license.php:82
|
16104 |
+
msgid "Upgrade For Support"
|
16105 |
+
msgstr ""
|
16106 |
+
|
16107 |
+
#: adminpages/license.php:103
|
16108 |
+
#: adminpages/license.php:105
|
16109 |
+
msgid "View Support License Options »"
|
16110 |
+
msgstr ""
|
16111 |
+
|
16112 |
+
#: adminpages/orders.php:168
|
16113 |
+
msgid "Order %s deleted successfully."
|
16114 |
+
msgstr ""
|
16115 |
+
|
16116 |
+
#: adminpages/paymentsettings.php:116
|
16117 |
+
#: adminpages/paymentsettings.php:114
|
16118 |
+
msgid "Paid Memberships Pro - Payment Gateway Settings"
|
16119 |
+
msgstr ""
|
16120 |
+
|
16121 |
+
#: adminpages/paymentsettings.php:116
|
16122 |
+
#: adminpages/paymentsettings.php:114
|
16123 |
+
msgid "Payment Gateway Settings"
|
16124 |
+
msgstr ""
|
16125 |
+
|
16126 |
+
#: adminpages/paymentsettings.php:117
|
16127 |
+
#: adminpages/paymentsettings.php:115
|
16128 |
+
msgid "Paid Memberships Pro - SSL Settings"
|
16129 |
+
msgstr ""
|
16130 |
+
|
16131 |
+
#: adminpages/paymentsettings.php:117
|
16132 |
+
#: adminpages/paymentsettings.php:115
|
16133 |
+
msgid "SSL"
|
16134 |
+
msgstr ""
|
16135 |
+
|
16136 |
+
#. translators: %s and %s: Links to Payment Gateway Settings and SSL Settings docs.
|
16137 |
+
#: adminpages/paymentsettings.php:119
|
16138 |
+
#: adminpages/paymentsettings.php:117
|
16139 |
+
msgid "Learn more about %s and %s."
|
16140 |
+
msgstr ""
|
16141 |
+
|
16142 |
+
#. translators: %s: A link to the docs for the pmpro_tax filter.
|
16143 |
+
#: adminpages/paymentsettings.php:252
|
16144 |
+
#: adminpages/paymentsettings.php:250
|
16145 |
+
msgid "US only. If values are given, tax will be applied for any members ordering from the selected state. For non-US or more complex tax rules, use the %s."
|
16146 |
+
msgstr ""
|
16147 |
+
|
16148 |
+
#: adminpages/paymentsettings.php:297
|
16149 |
+
#: adminpages/paymentsettings.php:295
|
16150 |
+
msgid "SSL Certificate"
|
16151 |
+
msgstr ""
|
16152 |
+
|
16153 |
+
#. translators: %s: Link to SSL Certificate docs.
|
16154 |
+
#: adminpages/paymentsettings.php:299
|
16155 |
+
#: adminpages/paymentsettings.php:297
|
16156 |
+
msgid "Your %s must be installed by your web host. Use this field to display your seal or other trusted merchant images. This field does not accept JavaScript."
|
16157 |
+
msgstr ""
|
16158 |
+
|
16159 |
+
#: adminpages/reports/login.php:103
|
16160 |
+
#: adminpages/reports/login.php:109
|
16161 |
+
msgctxt "Dropdown label, e.g. Show All Users"
|
16162 |
+
msgid "Show"
|
16163 |
+
msgstr ""
|
16164 |
+
|
16165 |
+
#: adminpages/reports/login.php:122
|
16166 |
+
#: adminpages/reports/login.php:102
|
16167 |
+
msgctxt "Search form label"
|
16168 |
+
msgid "Search"
|
16169 |
+
msgstr ""
|
16170 |
+
|
16171 |
+
#: adminpages/reports/login.php:122
|
16172 |
+
#: adminpages/reports/login.php:102
|
16173 |
+
msgid "Users"
|
16174 |
+
msgstr ""
|
16175 |
+
|
16176 |
+
#: classes/class-pmpro-members-list-table.php:584
|
16177 |
+
msgid " + "
|
16178 |
+
msgstr ""
|
16179 |
+
|
16180 |
+
#: classes/class-pmpro-members-list-table.php:589
|
16181 |
+
msgid " per "
|
16182 |
+
msgstr ""
|
16183 |
+
|
16184 |
+
#: classes/gateways/class.pmprogateway_paypal.php:189
|
16185 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:208
|
16186 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:209
|
16187 |
+
msgid "Require an extra confirmation after users return from PayPal."
|
16188 |
+
msgstr ""
|
16189 |
+
|
16190 |
+
#: classes/gateways/class.pmprogateway_paypal.php:190
|
16191 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:209
|
16192 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:210
|
16193 |
+
msgid "Skip the extra confirmation after users return from PayPal."
|
16194 |
+
msgstr ""
|
16195 |
+
|
16196 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1870
|
16197 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2309
|
16198 |
+
msgid "Learn More »"
|
16199 |
+
msgstr ""
|
16200 |
+
|
16201 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2645
|
16202 |
+
#: classes/gateways/class.pmprogateway_stripe.php:3102
|
16203 |
+
msgid "Subscription updates will be deprecated in a future version of PMPro, though your existing subscription updates will still trigger as expected. We now instead recommend updating the subscription directly in Stripe."
|
16204 |
+
msgstr ""
|
16205 |
+
|
16206 |
+
#: includes/lib/Twocheckout/Twocheckout/TwocheckoutCharge.php:15
|
16207 |
+
msgid "Click here if you are not redirected automatically."
|
16208 |
+
msgstr ""
|
16209 |
+
|
16210 |
+
#: includes/lib/Twocheckout/Twocheckout/TwocheckoutCharge.php:33
|
16211 |
+
msgid "Click here if the payment form does not open automatically."
|
16212 |
+
msgstr ""
|
16213 |
+
|
16214 |
+
#: includes/license.php:140
|
16215 |
+
msgid "Bad response code %s."
|
16216 |
+
msgstr ""
|
16217 |
+
|
16218 |
+
#: includes/updates.php:150
|
16219 |
+
msgid "You currently have the Better Login Reports Add On activated. This functionality has now been merged into Paid Memberships Pro. %s"
|
16220 |
+
msgstr ""
|
16221 |
+
|
16222 |
+
#: includes/updates.php:150
|
16223 |
+
msgid "Please deactivate and remove this plugin."
|
16224 |
+
msgstr ""
|
16225 |
+
|
16226 |
+
#: pages/levels.php:82
|
16227 |
+
msgid "Return to Your Account"
|
16228 |
+
msgstr ""
|
16229 |
+
|
16230 |
+
#: pages/levels.php:84
|
16231 |
+
msgid "Return to Home"
|
16232 |
+
msgstr ""
|
16233 |
+
|
16234 |
+
#. translators: $1$s - Paid Memberships Pro plugin name; $2$s - WP.org review link.
|
16235 |
+
#: adminpages/admin_footer.php:6
|
16236 |
+
msgid "<p>Please <a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">rate us ★★★★★ on WordPress.org</a> to help others find %2$s. Thank you from the %3$s team!</p>"
|
16237 |
+
msgstr ""
|
16238 |
+
|
16239 |
+
#: adminpages/advancedsettings.php:498
|
16240 |
+
msgid "Enable Tracking"
|
16241 |
+
msgstr ""
|
16242 |
+
|
16243 |
+
#: adminpages/advancedsettings.php:505
|
16244 |
+
msgid "Allow usage of Paid Memberships Pro to be tracked."
|
16245 |
+
msgstr ""
|
16246 |
+
|
16247 |
+
#: adminpages/advancedsettings.php:511
|
16248 |
+
msgid "Do not track usage of Paid Memberships Pro on my site."
|
16249 |
+
msgstr ""
|
16250 |
+
|
16251 |
+
#: adminpages/advancedsettings.php:515
|
16252 |
+
msgid "Sharing non-sensitive membership site data helps us analyze how our plugin is meeting your needs and identify opportunities to improve. Read about what usage data is tracked:"
|
16253 |
+
msgstr ""
|
16254 |
+
|
16255 |
+
#: adminpages/advancedsettings.php:516
|
16256 |
+
msgid "PaidMembershipsPro.com Usage Tracking"
|
16257 |
+
msgstr ""
|
16258 |
+
|
16259 |
+
#: adminpages/advancedsettings.php:516
|
16260 |
+
msgid "Paid Memberships Pro Usage Tracking"
|
16261 |
+
msgstr ""
|
16262 |
+
|
16263 |
+
#: adminpages/discountcodes.php:360
|
16264 |
+
#: adminpages/membershiplevels.php:169
|
16265 |
+
msgid "WARNING: A level was set with both a recurring billing amount and an expiration date. You only need to set one of these unless you really want this membership to expire after a specific time period. For more information, <a target=\"_blank\" rel=\"nofollow noopener\" href=\"%s\">see our post here</a>."
|
16266 |
+
msgstr ""
|
16267 |
+
|
16268 |
+
#: adminpages/discountcodes.php:646
|
16269 |
+
msgid "Optional: Allow billing limits with Stripe using the <a href=\"%s\" title=\"Paid Memberships Pro - Stripe Billing Limits Add On\" target=\"_blank\" rel=\"nofollow nopopener\">Stripe Billing Limits Add On</a>."
|
16270 |
+
msgstr ""
|
16271 |
+
|
16272 |
+
#. translators: %s is the Order ID.
|
16273 |
+
#: adminpages/discountcodes.php:835
|
16274 |
+
#: adminpages/orders.php:1499
|
16275 |
+
msgid "ID: %s"
|
16276 |
+
msgstr ""
|
16277 |
+
|
16278 |
+
#: adminpages/emailsettings.php:133
|
16279 |
+
msgid "If you are having issues with email delivery from your server, <a href=\"%s\" title=\"Paid Memberships Pro - Subscription Delays Add On\" target=\"_blank\" rel=\"nofollow noopener\">please read our email troubleshooting guide</a>. As an alternative, Paid Memberships Pro offers built-in integration for SendWP. <em>Optional: SendWP is a third-party service for transactional email in WordPress. <a href=\"%s\" title=\"Documentation on SendWP and Paid Memberships Pro\" target=\"_blank\" rel=\"nofollow noopener\">Click here to learn more about SendWP and Paid Memberships Pro</a></em>."
|
16280 |
+
msgstr ""
|
16281 |
+
|
16282 |
+
#: adminpages/license.php:49
|
16283 |
+
#: adminpages/license.php:53
|
16284 |
+
msgid "Visit the PMPro <a href=\"%s\" target=\"_blank\">Membership Account</a> page to confirm that your account is active and to find your license key."
|
16285 |
+
msgstr ""
|
16286 |
+
|
16287 |
+
#: adminpages/license.php:51
|
16288 |
+
msgid "<strong>Enter your support license key</strong>. Your license key can be found in your membership email receipt or in your <a href=\"%s\" target=\"_blank\">Membership Account</a>."
|
16289 |
+
msgstr ""
|
16290 |
+
|
16291 |
+
#: adminpages/membershiplevels.php:479
|
16292 |
+
msgid "Optional: Allow billing limits with Stripe using the <a href=\"%s\" title=\"Paid Memberships Pro - Stripe Billing Limits Add On\" target=\"_blank\" rel=\"nofollow noopener\">Stripe Billing Limits Add On</a>."
|
16293 |
+
msgstr ""
|
16294 |
+
|
16295 |
+
#: adminpages/membershiplevels.php:506
|
16296 |
+
msgid "Optional: Allow more customizable trial periods and renewal dates using the <a href=\"%s\" title=\"Paid Memberships Pro - Subscription Delays Add On\" target=\"_blank\" rel=\"nofollow noopener\">Subscription Delays Add On</a>."
|
16297 |
+
msgstr ""
|
16298 |
+
|
16299 |
+
#: adminpages/membershiplevels.php:572
|
16300 |
+
msgid "Optional: Allow more customizable expiration dates using the <a href=\"%s\" title=\"Paid Memberships Pro - Set Expiration Date Add On\" target=\"_blank\" rel=\"nofollow noopener\">Set Expiration Date Add On</a>."
|
16301 |
+
msgstr ""
|
16302 |
+
|
16303 |
+
#: adminpages/membershiplevels.php:590
|
16304 |
+
msgid "WARNING: This level is set with both a recurring billing amount and an expiration date. You only need to set one of these unless you really want this membership to expire after a certain number of payments. For more information, <a target=\"_blank\" rel=\"nofollow noopener\" href=\"%s\">see our post here</a>."
|
16305 |
+
msgstr ""
|
16306 |
+
|
16307 |
+
#: adminpages/orders.php:188
|
16308 |
+
msgid "Order refunded successfully."
|
16309 |
+
msgstr ""
|
16310 |
+
|
16311 |
+
#: adminpages/orders.php:191
|
16312 |
+
#: adminpages/orders.php:196
|
16313 |
+
msgid "Error refunding order. Please check the order notes for more information."
|
16314 |
+
msgstr ""
|
16315 |
+
|
16316 |
+
#. translators: %s is the Order Code.
|
16317 |
+
#: adminpages/orders.php:419
|
16318 |
+
#: adminpages/orders.php:1478
|
16319 |
+
msgid "Refund order %s at the payment gateway. This action is permanent. The user and admin will receive an email confirmation after the refund is processed. Are you sure you want to refund this order?"
|
16320 |
+
msgstr ""
|
16321 |
+
|
16322 |
+
#: adminpages/orders.php:441
|
16323 |
+
msgid "View"
|
16324 |
+
msgstr ""
|
16325 |
+
|
16326 |
+
#: adminpages/orders.php:446
|
16327 |
+
#: adminpages/orders.php:448
|
16328 |
+
#: adminpages/orders.php:1563
|
16329 |
+
#: adminpages/orders.php:1565
|
16330 |
+
#: includes/email-templates.php:503
|
16331 |
+
msgid "Refund"
|
16332 |
+
msgstr ""
|
16333 |
+
|
16334 |
+
#: adminpages/orders.php:485
|
16335 |
+
msgid "A randomly generated code that serves as a unique, non-sequential invoice number."
|
16336 |
+
msgstr ""
|
16337 |
+
|
16338 |
+
#: adminpages/orders.php:534
|
16339 |
+
msgid "Member Information"
|
16340 |
+
msgstr ""
|
16341 |
+
|
16342 |
+
#: adminpages/orders.php:844
|
16343 |
+
msgid "MM/YYYY"
|
16344 |
+
msgstr ""
|
16345 |
+
|
16346 |
+
#: adminpages/orders.php:872
|
16347 |
+
msgid "Payment Gateway Information"
|
16348 |
+
msgstr ""
|
16349 |
+
|
16350 |
+
#: adminpages/orders.php:939
|
16351 |
+
#: adminpages/orders.php:1711
|
16352 |
+
msgid "View all orders for this subscription"
|
16353 |
+
msgstr ""
|
16354 |
+
|
16355 |
+
#: adminpages/orders.php:939
|
16356 |
+
#: adminpages/orders.php:1711
|
16357 |
+
msgid "Renewal"
|
16358 |
+
msgstr ""
|
16359 |
+
|
16360 |
+
#: adminpages/orders.php:948
|
16361 |
+
msgid "Additional Order Information"
|
16362 |
+
msgstr ""
|
16363 |
+
|
16364 |
+
#. translators: %1$s is the date and %2$s is the time.
|
16365 |
+
#: adminpages/orders.php:1718
|
16366 |
+
msgid "%1$s at %2$s"
|
16367 |
+
msgstr ""
|
16368 |
+
|
16369 |
+
#: blocks/blocks.php:45
|
16370 |
+
msgid "Paid Memberships Pro Pages"
|
16371 |
+
msgstr ""
|
16372 |
+
|
16373 |
+
#: classes/class-pmpro-site-health.php:105
|
16374 |
+
msgid "Library Conflicts"
|
16375 |
+
msgstr ""
|
16376 |
+
|
16377 |
+
#: classes/class-pmpro-site-health.php:481
|
16378 |
+
msgid "No library conflicts detected."
|
16379 |
+
msgstr ""
|
16380 |
+
|
16381 |
+
#: classes/class-pmpro-wisdom-integration.php:218
|
16382 |
+
msgid "Share your usage data to help us improve Paid Memberships Pro. We use this data to analyze how our plugin is meeting your needs and identify new opportunities to help you create a thriving membership business. You can always visit the Advanced Settings and change this preference."
|
16383 |
+
msgstr ""
|
16384 |
+
|
16385 |
+
#: classes/class-pmpro-wisdom-integration.php:219
|
16386 |
+
msgid "Read more about what data we collect."
|
16387 |
+
msgstr ""
|
16388 |
+
|
16389 |
+
#: classes/class-pmpro-wisdom-tracker.php:313
|
16390 |
+
msgid "We can't detect any product information. This is most probably because you have not included the code snippet."
|
16391 |
+
msgstr ""
|
16392 |
+
|
16393 |
+
#: classes/class-pmpro-wisdom-tracker.php:840
|
16394 |
+
msgid "Thank you for installing our %1$s. We would like to track its usage on your site. We don't record any sensitive data, only information regarding the WordPress environment and %1$s settings, which we will use to help us make improvements to the %1$s. Tracking is completely optional."
|
16395 |
+
msgstr ""
|
16396 |
+
|
16397 |
+
#: classes/class-pmpro-wisdom-tracker.php:843
|
16398 |
+
msgid "Thank you for installing our %1$s. We'd like your permission to track its usage on your site and subscribe you to our newsletter. We won't record any sensitive data, only information regarding the WordPress environment and %1$s settings, which we will use to help us make improvements to the %1$s. Tracking is completely optional."
|
16399 |
+
msgstr ""
|
16400 |
+
|
16401 |
+
#: classes/class-pmpro-wisdom-tracker.php:852
|
16402 |
+
msgid "Allow"
|
16403 |
+
msgstr ""
|
16404 |
+
|
16405 |
+
#: classes/class-pmpro-wisdom-tracker.php:853
|
16406 |
+
msgid "Do Not Allow"
|
16407 |
+
msgstr ""
|
16408 |
+
|
16409 |
+
#: classes/class-pmpro-wisdom-tracker.php:888
|
16410 |
+
msgid "Thank you for opting in to tracking. Would you like to receive occasional news about this %s, including details of new features and special offers?"
|
16411 |
+
msgstr ""
|
16412 |
+
|
16413 |
+
#: classes/class-pmpro-wisdom-tracker.php:895
|
16414 |
+
msgid "Yes Please"
|
16415 |
+
msgstr ""
|
16416 |
+
|
16417 |
+
#: classes/class-pmpro-wisdom-tracker.php:896
|
16418 |
+
msgid "No Thank You"
|
16419 |
+
msgstr ""
|
16420 |
+
|
16421 |
+
#: classes/class-pmpro-wisdom-tracker.php:929
|
16422 |
+
msgid "Sorry to see you go"
|
16423 |
+
msgstr ""
|
16424 |
+
|
16425 |
+
#: classes/class-pmpro-wisdom-tracker.php:930
|
16426 |
+
msgid "Before you deactivate the plugin, would you quickly give us your reason for doing so?"
|
16427 |
+
msgstr ""
|
16428 |
+
|
16429 |
+
#: classes/class-pmpro-wisdom-tracker.php:932
|
16430 |
+
msgid "Set up is too difficult"
|
16431 |
+
msgstr ""
|
16432 |
+
|
16433 |
+
#: classes/class-pmpro-wisdom-tracker.php:933
|
16434 |
+
msgid "Lack of documentation"
|
16435 |
+
msgstr ""
|
16436 |
+
|
16437 |
+
#: classes/class-pmpro-wisdom-tracker.php:934
|
16438 |
+
msgid "Not the features I wanted"
|
16439 |
+
msgstr ""
|
16440 |
+
|
16441 |
+
#: classes/class-pmpro-wisdom-tracker.php:935
|
16442 |
+
msgid "Found a better plugin"
|
16443 |
+
msgstr ""
|
16444 |
+
|
16445 |
+
#: classes/class-pmpro-wisdom-tracker.php:936
|
16446 |
+
msgid "Installed by mistake"
|
16447 |
+
msgstr ""
|
16448 |
+
|
16449 |
+
#: classes/class-pmpro-wisdom-tracker.php:937
|
16450 |
+
msgid "Only required temporarily"
|
16451 |
+
msgstr ""
|
16452 |
+
|
16453 |
+
#: classes/class-pmpro-wisdom-tracker.php:938
|
16454 |
+
msgid "Didn't work"
|
16455 |
+
msgstr ""
|
16456 |
+
|
16457 |
+
#: classes/class-pmpro-wisdom-tracker.php:940
|
16458 |
+
msgid "Details (optional)"
|
16459 |
+
msgstr ""
|
16460 |
+
|
16461 |
+
#: classes/class-pmpro-wisdom-tracker.php:983
|
16462 |
+
msgid "Submitting form"
|
16463 |
+
msgstr ""
|
16464 |
+
|
16465 |
+
#: classes/class-pmpro-wisdom-tracker.php:1052
|
16466 |
+
msgid "Submit and Deactivate"
|
16467 |
+
msgstr ""
|
16468 |
+
|
16469 |
+
#: classes/class-pmpro-wisdom-tracker.php:1052
|
16470 |
+
msgid "Just Deactivate"
|
16471 |
+
msgstr ""
|
16472 |
+
|
16473 |
+
#: classes/class.pmproemail.php:265
|
16474 |
+
msgid "Your invoice for order #%s at %s has been REFUNDED"
|
16475 |
+
msgstr ""
|
16476 |
+
|
16477 |
+
#: classes/class.pmproemail.php:331
|
16478 |
+
msgid "Invoice for order #%s at %s has been REFUNDED"
|
16479 |
+
msgstr ""
|
16480 |
+
|
16481 |
+
#. translators: %1$s is the Transaction ID. %2$s is the user display name that initiated the refund.
|
16482 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:1128
|
16483 |
+
#: classes/gateways/class.pmprogateway_stripe.php:4791
|
16484 |
+
msgid "Admin: Order successfully refunded on %1$s for transaction ID %2$s by %3$s."
|
16485 |
+
msgstr ""
|
16486 |
+
|
16487 |
+
#. translators: %1$s is the Transaction ID. %1$s is the Gateway Error
|
16488 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:1143
|
16489 |
+
msgid "Admin: There was a problem processing a refund for transaction ID %1$s. Gateway Error: %2$s."
|
16490 |
+
msgstr ""
|
16491 |
+
|
16492 |
+
#: classes/gateways/class.pmprogateway_stripe.php:511
|
16493 |
+
msgid "Stripe Checkout Settings (Beta)"
|
16494 |
+
msgstr ""
|
16495 |
+
|
16496 |
+
#: classes/gateways/class.pmprogateway_stripe.php:514
|
16497 |
+
msgid "Stripe Checkout is currently in beta and not recommended for use on live sites."
|
16498 |
+
msgstr ""
|
16499 |
+
|
16500 |
+
#: classes/gateways/class.pmprogateway_stripe.php:515
|
16501 |
+
msgid "Stripe Checkout is a secure, Stripe-hosted payment page that lets you collect payments quickly. The offsite, conversion-optimized payment form works across devices, removes friction with real-time card validation, and has built-in error messaging. This gateway option relies heavily on the webhooks sent by Stripe. Your Stripe webhooks must be properly configured before enabling Stripe Checkout."
|
16502 |
+
msgstr ""
|
16503 |
+
|
16504 |
+
#: classes/gateways/class.pmprogateway_stripe.php:522
|
16505 |
+
msgid "Payment Flow"
|
16506 |
+
msgstr ""
|
16507 |
+
|
16508 |
+
#: classes/gateways/class.pmprogateway_stripe.php:526
|
16509 |
+
msgid "Accept payments on this site"
|
16510 |
+
msgstr ""
|
16511 |
+
|
16512 |
+
#: classes/gateways/class.pmprogateway_stripe.php:527
|
16513 |
+
msgid "Accept payments in Stripe (Stripe Checkout)"
|
16514 |
+
msgstr ""
|
16515 |
+
|
16516 |
+
#: classes/gateways/class.pmprogateway_stripe.php:529
|
16517 |
+
msgid "Embed the payment information fields on your Membership Checkout page or use the Stripe-hosted payment page (Stripe Checkout)."
|
16518 |
+
msgstr ""
|
16519 |
+
|
16520 |
+
#: classes/gateways/class.pmprogateway_stripe.php:534
|
16521 |
+
msgid "Update Billing Flow"
|
16522 |
+
msgstr ""
|
16523 |
+
|
16524 |
+
#: classes/gateways/class.pmprogateway_stripe.php:538
|
16525 |
+
msgid "Update billing on this site"
|
16526 |
+
msgstr ""
|
16527 |
+
|
16528 |
+
#: classes/gateways/class.pmprogateway_stripe.php:539
|
16529 |
+
msgid "Update billing in the Stripe Customer Portal"
|
16530 |
+
msgstr ""
|
16531 |
+
|
16532 |
+
#: classes/gateways/class.pmprogateway_stripe.php:541
|
16533 |
+
msgid "Embed the billing information fields on your Membership Billing page or use the Stripe Customer Portal hosted by Stripe."
|
16534 |
+
msgstr ""
|
16535 |
+
|
16536 |
+
#: classes/gateways/class.pmprogateway_stripe.php:546
|
16537 |
+
msgid "Collect Billing Address in Stripe Checkout"
|
16538 |
+
msgstr ""
|
16539 |
+
|
16540 |
+
#: classes/gateways/class.pmprogateway_stripe.php:550
|
16541 |
+
msgid "Only when necessary"
|
16542 |
+
msgstr ""
|
16543 |
+
|
16544 |
+
#: classes/gateways/class.pmprogateway_stripe.php:551
|
16545 |
+
msgid "Always"
|
16546 |
+
msgstr ""
|
16547 |
+
|
16548 |
+
#: classes/gateways/class.pmprogateway_stripe.php:557
|
16549 |
+
msgid "Stripe Tax"
|
16550 |
+
msgstr ""
|
16551 |
+
|
16552 |
+
#: classes/gateways/class.pmprogateway_stripe.php:561
|
16553 |
+
msgid "Do not calculate tax"
|
16554 |
+
msgstr ""
|
16555 |
+
|
16556 |
+
#: classes/gateways/class.pmprogateway_stripe.php:562
|
16557 |
+
msgid "Membership price includes tax"
|
16558 |
+
msgstr ""
|
16559 |
+
|
16560 |
+
#: classes/gateways/class.pmprogateway_stripe.php:563
|
16561 |
+
msgid "Calculate tax on top of membership price"
|
16562 |
+
msgstr ""
|
16563 |
+
|
16564 |
+
#: classes/gateways/class.pmprogateway_stripe.php:574
|
16565 |
+
msgid "Stripe Tax is only available when using Stripe Checkout (the Stripe-hosted payment page). You must <a target=\"_blank\" href=\"%s\">activate Stripe Tax</a> in your Stripe dashboard. <a target=\"_blank\" href=\"%s\">More information about Stripe Tax »</a>"
|
16566 |
+
msgstr ""
|
16567 |
+
|
16568 |
+
#: classes/gateways/class.pmprogateway_stripe.php:579
|
16569 |
+
msgid "Collect Tax IDs"
|
16570 |
+
msgstr ""
|
16571 |
+
|
16572 |
+
#: classes/gateways/class.pmprogateway_stripe.php:583
|
16573 |
+
msgid "No, do not collect tax IDs."
|
16574 |
+
msgstr ""
|
16575 |
+
|
16576 |
+
#: classes/gateways/class.pmprogateway_stripe.php:584
|
16577 |
+
msgid "Yes, collect tax IDs."
|
16578 |
+
msgstr ""
|
16579 |
+
|
16580 |
+
#: classes/gateways/class.pmprogateway_stripe.php:586
|
16581 |
+
msgid "Tax IDs are only collected if you have enabled Stripe Tax. Stripe only performs automatic validation for ABN, EU VAT, and GB VAT numbers. You must verify that provided tax IDs are valid during the Session for all other numbers."
|
16582 |
+
msgstr ""
|
16583 |
+
|
16584 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1539
|
16585 |
+
msgid "Your previous order has not yet been processed. Submitting your payment again will cause a separate charge to be initiated."
|
16586 |
+
msgstr ""
|
16587 |
+
|
16588 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1596
|
16589 |
+
msgid "Could not get customer. "
|
16590 |
+
msgstr ""
|
16591 |
+
|
16592 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1605
|
16593 |
+
msgid "Could not get product ID."
|
16594 |
+
msgstr ""
|
16595 |
+
|
16596 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1623
|
16597 |
+
msgid "Could not get price for initial payment. "
|
16598 |
+
msgstr ""
|
16599 |
+
|
16600 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1648
|
16601 |
+
msgid "Could not get price for recurring payment. "
|
16602 |
+
msgstr ""
|
16603 |
+
|
16604 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1717
|
16605 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1721
|
16606 |
+
msgid "Could not create checkout session. "
|
16607 |
+
msgstr ""
|
16608 |
+
|
16609 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1745
|
16610 |
+
msgid "Last order was not charged with Stripe."
|
16611 |
+
msgstr ""
|
16612 |
+
|
16613 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1752
|
16614 |
+
msgid "Could not get Stripe customer for user."
|
16615 |
+
msgstr ""
|
16616 |
+
|
16617 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1762
|
16618 |
+
msgid "Could not get Customer Portal URL. This feature may not be set up in Stripe."
|
16619 |
+
msgstr ""
|
16620 |
+
|
16621 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1767
|
16622 |
+
msgid "Please contact the site administrator."
|
16623 |
+
msgstr ""
|
16624 |
+
|
16625 |
+
#: classes/gateways/class.pmprogateway_stripe.php:4803
|
16626 |
+
msgid "Admin: An error occured while attempting to process this refund."
|
16627 |
+
msgstr ""
|
16628 |
+
|
16629 |
+
#: classes/gateways/class.pmprogateway_stripe.php:4807
|
16630 |
+
#: classes/gateways/class.pmprogateway_stripe.php:4809
|
16631 |
+
msgid "Admin: There was a problem processing the refund"
|
16632 |
+
msgstr ""
|
16633 |
+
|
16634 |
+
#: includes/email-templates.php:502
|
16635 |
+
msgid "Your invoice for order #!!invoice_id!! at !!sitename!! has been REFUNDED"
|
16636 |
+
msgstr ""
|
16637 |
+
|
16638 |
+
#: includes/email-templates.php:504
|
16639 |
+
msgid ""
|
16640 |
+
"<p>Your invoice for order #!!invoice_id!! at !!sitename!! has been refunded.</p>\n"
|
16641 |
+
"\n"
|
16642 |
+
"<p>Account: !!display_name!! (!!user_email!!)</p>\n"
|
16643 |
+
"<p>\n"
|
16644 |
+
"\tInvoice #!!invoice_id!! on !!invoice_date!!<br />\n"
|
16645 |
+
"\tTotal Refunded: !!invoice_total!!\n"
|
16646 |
+
"</p>\n"
|
16647 |
+
"\n"
|
16648 |
+
"<p>Log in to your membership account here: !!login_url!!</p>\n"
|
16649 |
+
"<p>To view an online version of this invoice, click here: !!invoice_url!!</p>\n"
|
16650 |
+
"\n"
|
16651 |
+
"<p>If you did not request this refund and would like more information please contact us at !!siteemail!!</p>"
|
16652 |
+
msgstr ""
|
16653 |
+
|
16654 |
+
#: includes/email-templates.php:516
|
16655 |
+
msgid "This email is sent to the member as confirmation of a refunded payment. The email is sent after your membership site receives notification of a successful payment refund through your gateway."
|
16656 |
+
msgstr ""
|
16657 |
+
|
16658 |
+
#: includes/email-templates.php:519
|
16659 |
+
msgid "Invoice for order #!!invoice_id!! at !!sitename!! has been REFUNDED"
|
16660 |
+
msgstr ""
|
16661 |
+
|
16662 |
+
#: includes/email-templates.php:520
|
16663 |
+
msgid "Refund (admin)"
|
16664 |
+
msgstr ""
|
16665 |
+
|
16666 |
+
#: includes/email-templates.php:521
|
16667 |
+
msgid ""
|
16668 |
+
"<p>The invoice for order #!!invoice_id!! at !!sitename!! has been refunded.</p>\n"
|
16669 |
+
"\n"
|
16670 |
+
"<p>Account: !!display_name!! (!!user_email!!)</p>\n"
|
16671 |
+
"<p>\n"
|
16672 |
+
"\tInvoice #!!invoice_id!! on !!invoice_date!!<br />\n"
|
16673 |
+
"\tTotal Refunded: !!invoice_total!!\n"
|
16674 |
+
"</p>\n"
|
16675 |
+
"\n"
|
16676 |
+
"<p>Log in to your WordPress admin here: !!login_url!!</p>"
|
16677 |
+
msgstr ""
|
16678 |
+
|
16679 |
+
#: includes/email-templates.php:530
|
16680 |
+
msgid "This email is sent to the admin as confirmation of a refunded payment. The email is sent after your membership site receives notification of a successful payment refund through your gateway."
|
16681 |
+
msgstr ""
|
16682 |
+
|
16683 |
+
#: includes/profile.php:136
|
16684 |
+
msgid "Refund this user's most recent order."
|
16685 |
+
msgstr ""
|
16686 |
+
|
16687 |
+
#: blocks/account-invoices-section/block.js:22
|
16688 |
+
msgid "PMPro Page: Account Invoices"
|
16689 |
+
msgstr ""
|
16690 |
+
|
16691 |
+
#: blocks/account-invoices-section/block.js:23
|
16692 |
+
msgid "Dynamic page section that displays a list of the last 5 membership invoices for the active member."
|
16693 |
+
msgstr ""
|
16694 |
+
|
16695 |
+
#: blocks/account-invoices-section/block.js:31
|
16696 |
+
#: blocks/account-links-section/block.js:32
|
16697 |
+
#: blocks/account-page/block.js:33
|
16698 |
+
msgid "account"
|
16699 |
+
msgstr ""
|
16700 |
+
|
16701 |
+
#: blocks/account-invoices-section/block.js:33
|
16702 |
+
#: blocks/account-page/block.js:38
|
16703 |
+
#: blocks/invoice-page/block.js:32
|
16704 |
+
msgid "order"
|
16705 |
+
msgstr ""
|
16706 |
+
|
16707 |
+
#: blocks/account-invoices-section/block.js:34
|
16708 |
+
#: blocks/account-links-section/block.js:35
|
16709 |
+
#: blocks/account-membership-section/block.js:33
|
16710 |
+
#: blocks/account-page/block.js:39
|
16711 |
+
#: blocks/account-profile-section/block.js:34
|
16712 |
+
#: blocks/billing-page/block.js:33
|
16713 |
+
#: blocks/cancel-page/block.js:32
|
16714 |
+
#: blocks/checkout-button/block.js:43
|
16715 |
+
#: blocks/checkout-page/block.js:38
|
16716 |
+
#: blocks/confirmation-page/block.js:33
|
16717 |
+
#: blocks/invoice-page/block.js:33
|
16718 |
+
#: blocks/levels-page/block.js:32
|
16719 |
+
#: blocks/login/block.js:36
|
16720 |
+
#: blocks/member-profile-edit/block.js:30
|
16721 |
+
#: blocks/membership/block.js:46
|
16722 |
+
msgid "paid memberships pro"
|
16723 |
+
msgstr ""
|
16724 |
+
|
16725 |
+
#: blocks/account-invoices-section/block.js:36
|
16726 |
+
#: blocks/account-membership-section/block.js:35
|
16727 |
+
#: blocks/account-page/block.js:42
|
16728 |
+
#: blocks/invoice-page/block.js:35
|
16729 |
+
msgid "purchases"
|
16730 |
+
msgstr ""
|
16731 |
+
|
16732 |
+
#: blocks/account-invoices-section/block.js:37
|
16733 |
+
#: blocks/account-page/block.js:44
|
16734 |
+
#: blocks/confirmation-page/block.js:36
|
16735 |
+
#: blocks/invoice-page/block.js:36
|
16736 |
+
msgid "receipt"
|
16737 |
+
msgstr ""
|
16738 |
+
|
16739 |
+
#: blocks/account-invoices-section/block.js:38
|
16740 |
+
#: blocks/account-links-section/block.js:38
|
16741 |
+
#: blocks/account-membership-section/block.js:36
|
16742 |
+
#: blocks/account-page/block.js:45
|
16743 |
+
#: blocks/account-profile-section/block.js:36
|
16744 |
+
msgid "user"
|
16745 |
+
msgstr ""
|
16746 |
+
|
16747 |
+
#: blocks/account-links-section/block.js:22
|
16748 |
+
msgid "PMPro Page: Account Links"
|
16749 |
+
msgstr ""
|
16750 |
+
|
16751 |
+
#: blocks/account-links-section/block.js:23
|
16752 |
+
msgid "Dynamic page section that displays custom links available for the active member only. This block is only visible if other Add Ons or custom code have added links."
|
16753 |
+
msgstr ""
|
16754 |
+
|
16755 |
+
#: blocks/account-links-section/block.js:31
|
16756 |
+
msgid "access"
|
16757 |
+
msgstr ""
|
16758 |
+
|
16759 |
+
#: blocks/account-links-section/block.js:33
|
16760 |
+
msgid "link"
|
16761 |
+
msgstr ""
|
16762 |
+
|
16763 |
+
#: blocks/account-links-section/block.js:37
|
16764 |
+
#: blocks/account-page/block.js:43
|
16765 |
+
msgid "quick link"
|
16766 |
+
msgstr ""
|
16767 |
+
|
16768 |
+
#: blocks/account-membership-section/block.js:22
|
16769 |
+
msgid "PMPro Page: Account Memberships"
|
16770 |
+
msgstr ""
|
16771 |
+
|
16772 |
+
#: blocks/account-membership-section/block.js:23
|
16773 |
+
msgid "Dynamic page section to display the member's active membership information with links to view all membership options, update billing information, and change or cancel membership."
|
16774 |
+
msgstr ""
|
16775 |
+
|
16776 |
+
#: blocks/account-membership-section/block.js:31
|
16777 |
+
msgid "active"
|
16778 |
+
msgstr ""
|
16779 |
+
|
16780 |
+
#: blocks/account-page/block.js:24
|
16781 |
+
msgid "PMPro Page: Account (Full)"
|
16782 |
+
msgstr ""
|
16783 |
+
|
16784 |
+
#: blocks/account-page/block.js:25
|
16785 |
+
msgid "Dynamic page section to display the selected sections of the Membership Account page including Memberships, Profile, Invoices, and Member Links. These sections can also be added via separate blocks."
|
16786 |
+
msgstr ""
|
16787 |
+
|
16788 |
+
#: blocks/account-page/block.js:34
|
16789 |
+
msgid "billing"
|
16790 |
+
msgstr ""
|
16791 |
+
|
16792 |
+
#: blocks/account-page/block.js:35
|
16793 |
+
msgid "invoice"
|
16794 |
+
msgstr ""
|
16795 |
+
|
16796 |
+
#: blocks/account-page/block.js:36
|
16797 |
+
msgid "links"
|
16798 |
+
msgstr ""
|
16799 |
+
|
16800 |
+
#: blocks/account-profile-section/block.js:23
|
16801 |
+
msgid "PMPro Page: Account Profile View"
|
16802 |
+
msgstr ""
|
16803 |
+
|
16804 |
+
#: blocks/account-profile-section/block.js:24
|
16805 |
+
msgid "Dynamic page section that displays the member's profile as read-only information with a link to edit fields or their change password."
|
16806 |
+
msgstr ""
|
16807 |
+
|
16808 |
+
#: blocks/account-profile-section/block.js:32
|
16809 |
+
#: blocks/member-profile-edit/block.js:29
|
16810 |
+
msgid "fields"
|
16811 |
+
msgstr ""
|
16812 |
+
|
16813 |
+
#: blocks/billing-page/block.js:22
|
16814 |
+
msgid "PMPro Page: Billing"
|
16815 |
+
msgstr ""
|
16816 |
+
|
16817 |
+
#: blocks/billing-page/block.js:23
|
16818 |
+
msgid "Dynamic page section to display the member's billing information. Members can update their subscription payment method from this form."
|
16819 |
+
msgstr ""
|
16820 |
+
|
16821 |
+
#: blocks/billing-page/block.js:31
|
16822 |
+
msgid "credit card"
|
16823 |
+
msgstr ""
|
16824 |
+
|
16825 |
+
#: blocks/billing-page/block.js:34
|
16826 |
+
#: blocks/cancel-page/block.js:33
|
16827 |
+
msgid "payment method"
|
16828 |
+
msgstr ""
|
16829 |
+
|
16830 |
+
#: blocks/cancel-page/block.js:22
|
16831 |
+
msgid "PMPro Page: Cancel"
|
16832 |
+
msgstr ""
|
16833 |
+
|
16834 |
+
#: blocks/cancel-page/block.js:23
|
16835 |
+
msgid "Dynamic page section where members can cancel their membership and active subscription if applicable."
|
16836 |
+
msgstr ""
|
16837 |
+
|
16838 |
+
#: blocks/cancel-page/block.js:35
|
16839 |
+
msgid "terminate"
|
16840 |
+
msgstr ""
|
16841 |
+
|
16842 |
+
#: blocks/checkout-button/block.js:32
|
16843 |
+
msgid "Inserts a button that links directly to membership checkout for the selected level."
|
16844 |
+
msgstr ""
|
16845 |
+
|
16846 |
+
#: blocks/checkout-button/block.js:45
|
16847 |
+
#: blocks/checkout-page/block.js:41
|
16848 |
+
#: blocks/confirmation-page/block.js:35
|
16849 |
+
msgid "purchase"
|
16850 |
+
msgstr ""
|
16851 |
+
|
16852 |
+
#: blocks/checkout-page/block.js:29
|
16853 |
+
msgid "Dynamic form that allows users to complete free registration or paid checkout for the selected membership level."
|
16854 |
+
msgstr ""
|
16855 |
+
|
16856 |
+
#: blocks/checkout-page/block.js:42
|
16857 |
+
msgid "sell"
|
16858 |
+
msgstr ""
|
16859 |
+
|
16860 |
+
#: blocks/confirmation-page/block.js:22
|
16861 |
+
msgid "PMPro Page: Confirmation"
|
16862 |
+
msgstr ""
|
16863 |
+
|
16864 |
+
#: blocks/confirmation-page/block.js:23
|
16865 |
+
msgid "Dynamic page section that displays a confirmation message and purchase information for the active member immediately after membership registration and checkout."
|
16866 |
+
msgstr ""
|
16867 |
+
|
16868 |
+
#: blocks/confirmation-page/block.js:37
|
16869 |
+
msgid "success"
|
16870 |
+
msgstr ""
|
16871 |
+
|
16872 |
+
#: blocks/invoice-page/block.js:22
|
16873 |
+
msgid "PMPro Page: Invoice"
|
16874 |
+
msgstr ""
|
16875 |
+
|
16876 |
+
#: blocks/invoice-page/block.js:23
|
16877 |
+
msgid "Dynamic page section that displays a list of all invoices (purchase history) for the active member. Each invoice can be selected and viewed in full detail."
|
16878 |
+
msgstr ""
|
16879 |
+
|
16880 |
+
#: blocks/invoice-page/block.js:31
|
16881 |
+
msgid "history"
|
16882 |
+
msgstr ""
|
16883 |
+
|
16884 |
+
#: blocks/levels-page/block.js:22
|
16885 |
+
msgid "Membership Levels and Pricing Table"
|
16886 |
+
msgstr ""
|
16887 |
+
|
16888 |
+
#: blocks/levels-page/block.js:23
|
16889 |
+
msgid "Dynamic page section that displays a list of membership levels and pricing, linked to membership checkout. To reorder the display, navigate to Memberships > Settings > Levels."
|
16890 |
+
msgstr ""
|
16891 |
+
|
16892 |
+
#: blocks/levels-page/block.js:34
|
16893 |
+
msgid "price"
|
16894 |
+
msgstr ""
|
16895 |
+
|
16896 |
+
#: blocks/levels-page/block.js:35
|
16897 |
+
msgid "pricing table"
|
16898 |
+
msgstr ""
|
16899 |
+
|
16900 |
+
#: blocks/login/block.js:25
|
16901 |
+
msgid "Login Form"
|
16902 |
+
msgstr ""
|
16903 |
+
|
16904 |
+
#: blocks/login/block.js:26
|
16905 |
+
msgid "Dynamic form that allows users to log in or recover a loast password. Logged in users can see a welcome message with the selected custom menu."
|
16906 |
+
msgstr ""
|
16907 |
+
|
16908 |
+
#: blocks/login/block.js:35
|
16909 |
+
msgid "lost password"
|
16910 |
+
msgstr ""
|
16911 |
+
|
16912 |
+
#: blocks/login/block.js:37
|
16913 |
+
msgid "password reset"
|
16914 |
+
msgstr ""
|
16915 |
+
|
16916 |
+
#: blocks/member-profile-edit/block.js:19
|
16917 |
+
msgid "PMPro Page: Account Profile Edit"
|
16918 |
+
msgstr ""
|
16919 |
+
|
16920 |
+
#: blocks/member-profile-edit/block.js:20
|
16921 |
+
msgid "Dynaimc form that allows the current logged in member to edit their default user profile information and any custom user profile fields."
|
16922 |
+
msgstr ""
|
16923 |
+
|
16924 |
+
#: blocks/member-profile-edit/block.js:28
|
16925 |
+
msgid "custom field"
|
16926 |
+
msgstr ""
|
16927 |
+
|
16928 |
+
#: blocks/member-profile-edit/block.js:32
|
16929 |
+
msgid "user fields"
|
16930 |
+
msgstr ""
|
16931 |
+
|
16932 |
+
#: blocks/membership/block.js:32
|
16933 |
+
msgid "Membership Required Block"
|
16934 |
+
msgstr ""
|
16935 |
+
|
16936 |
+
#: blocks/membership/block.js:33
|
16937 |
+
msgid "Nest blocks within this wrapper to control the inner block visibility by membership level or for non-members only."
|
16938 |
+
msgstr ""
|
16939 |
+
|
16940 |
+
#: blocks/membership/block.js:41
|
16941 |
+
msgid "block visibility"
|
16942 |
+
msgstr ""
|
16943 |
+
|
16944 |
+
#: blocks/membership/block.js:42
|
16945 |
+
msgid "confitional"
|
16946 |
+
msgstr ""
|
16947 |
+
|
16948 |
+
#: blocks/membership/block.js:43
|
16949 |
+
msgid "content"
|
16950 |
+
msgstr ""
|
16951 |
+
|
16952 |
+
#: blocks/membership/block.js:44
|
16953 |
+
msgid "hide"
|
16954 |
+
msgstr ""
|
16955 |
+
|
16956 |
+
#: blocks/membership/block.js:45
|
16957 |
+
msgid "hidden"
|
16958 |
+
msgstr ""
|
16959 |
+
|
16960 |
+
#: blocks/membership/block.js:48
|
16961 |
+
msgid "private"
|
16962 |
+
msgstr ""
|
16963 |
+
|
16964 |
+
#: blocks/membership/block.js:49
|
16965 |
+
msgid "restrict"
|
16966 |
+
msgstr ""
|
16967 |
+
|
16968 |
+
#: blocks/membership/block.js:98
|
16969 |
+
msgid "Which membership levels can view this block?"
|
16970 |
+
msgstr ""
|
16971 |
+
|
16972 |
+
#: blocks/membership/block.js:103
|
16973 |
+
msgid "What should users without access see?"
|
16974 |
+
msgstr ""
|
16975 |
+
|
16976 |
+
#: blocks/membership/block.js:106
|
16977 |
+
msgid "Modify the 'no access' message on the Memberships > Advanced Settings page."
|
16978 |
+
msgstr ""
|
16979 |
+
|
16980 |
+
#: blocks/membership/block.js:108
|
16981 |
+
msgid "Show nothing"
|
16982 |
+
msgstr ""
|
16983 |
+
|
16984 |
+
#: blocks/membership/block.js:109
|
16985 |
+
msgid "Show the 'no access' message"
|
16986 |
+
msgstr ""
|
16987 |
+
|
16988 |
+
#: blocks/membership/block.js:116
|
16989 |
+
#: blocks/membership/block.js:130
|
16990 |
+
msgid "Membership Required"
|
16991 |
+
msgstr ""
|
languages/paid-memberships-pro-ca_AD.mo
CHANGED
Binary file
|
languages/paid-memberships-pro-ca_AD.po
CHANGED
@@ -2,14 +2,14 @@
|
|
2 |
# This file is distributed under the same license as the Paid Memberships Pro plugin.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Paid Memberships Pro 2.
|
6 |
"Report-Msgid-Bugs-To: info@paidmembershipspro.com\n"
|
7 |
"Last-Translator: Paid Memberships Pro <info@paidmembershipspro.com>\n"
|
8 |
"Language-Team: Paid Memberships Pro <info@paidmembershipspro.com>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"POT-Creation-Date: 2022-
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
"X-Generator: WP-CLI 2.6.0\n"
|
15 |
"X-Domain: paid-memberships-pro\n"
|
@@ -92,6 +92,8 @@ msgstr "Comproveu una vegada més"
|
|
92 |
#: adminpages/orders.php:1022
|
93 |
#: adminpages/orders.php:1014
|
94 |
#: includes/metaboxes.php:19
|
|
|
|
|
95 |
msgid "All"
|
96 |
msgstr "Tot"
|
97 |
|
@@ -135,6 +137,7 @@ msgstr "Tipus"
|
|
135 |
#: adminpages/membershiplevels.php:296
|
136 |
#: adminpages/membershiplevels.php:298
|
137 |
#: adminpages/membershiplevels.php:359
|
|
|
138 |
msgid "Description"
|
139 |
msgstr "Descripció"
|
140 |
|
@@ -215,6 +218,13 @@ msgstr "Activa %s"
|
|
215 |
#: adminpages/discountcodes.php:866
|
216 |
#: adminpages/orders.php:1417
|
217 |
#: adminpages/orders.php:1419
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
218 |
msgid "Delete"
|
219 |
msgstr "Esborra"
|
220 |
|
@@ -279,6 +289,22 @@ msgstr "WordPress.org"
|
|
279 |
#: adminpages/orders.php:1545
|
280 |
#: adminpages/addons.php:250
|
281 |
#: adminpages/orders.php:912
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
282 |
msgid "N/A"
|
283 |
msgstr "N/A"
|
284 |
|
@@ -471,6 +497,14 @@ msgstr "Passarela de pagament (Payment Gateway) & SSL"
|
|
471 |
#: includes/profile.php:758
|
472 |
#: adminpages/orders.php:1437
|
473 |
#: adminpages/orders.php:1440
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
474 |
msgid "Email"
|
475 |
msgstr "Correu electrònic"
|
476 |
|
@@ -486,6 +520,7 @@ msgstr "Avançat"
|
|
486 |
#: adminpages/advancedsettings.php:42
|
487 |
#: adminpages/advancedsettings.php:68
|
488 |
#: adminpages/advancedsettings.php:69
|
|
|
489 |
msgid "Your advanced settings have been updated."
|
490 |
msgstr "La vostra configuració avançada s’han actualitzat."
|
491 |
|
@@ -506,6 +541,7 @@ msgstr "Si us plau <a href=\"%s\">login</a> per a veure aquest contingut. (<a hr
|
|
506 |
#: adminpages/advancedsettings.php:116
|
507 |
#: includes/updates/upgrade_1.php:13
|
508 |
#: adminpages/advancedsettings.php:118
|
|
|
509 |
msgid "This content is for members only. Visit the site and log in/register to read."
|
510 |
msgstr "Aquest contingut és només per a subscriptors. Visita el lloc i registra’t/log in per a llegir."
|
511 |
|
@@ -524,6 +560,7 @@ msgstr "Aquest contingut és només per a subscriptors. Visita el lloc i registr
|
|
524 |
#: adminpages/advancedsettings.php:132
|
525 |
#: includes/adminpages.php:73
|
526 |
#: adminpages/advancedsettings.php:134
|
|
|
527 |
msgid "Advanced Settings"
|
528 |
msgstr "Configuració Avançada"
|
529 |
|
@@ -532,6 +569,7 @@ msgstr "Configuració Avançada"
|
|
532 |
#: adminpages/advancedsettings.php:92
|
533 |
#: adminpages/advancedsettings.php:164
|
534 |
#: adminpages/advancedsettings.php:166
|
|
|
535 |
msgid "Message for Logged-in Non-members"
|
536 |
msgstr "Missatge per a No subscriptors “Logged-in”"
|
537 |
|
@@ -540,6 +578,7 @@ msgstr "Missatge per a No subscriptors “Logged-in”"
|
|
540 |
#: adminpages/advancedsettings.php:96
|
541 |
#: adminpages/advancedsettings.php:168
|
542 |
#: adminpages/advancedsettings.php:170
|
|
|
543 |
msgid "This message replaces the post content for non-members. Available variables"
|
544 |
msgstr "Aquest missatge reemplaça el contingut de l’entrada per als no membres. Hi ha variables disponibles"
|
545 |
|
@@ -548,6 +587,7 @@ msgstr "Aquest missatge reemplaça el contingut de l’entrada per als no membre
|
|
548 |
#: adminpages/advancedsettings.php:101
|
549 |
#: adminpages/advancedsettings.php:173
|
550 |
#: adminpages/advancedsettings.php:175
|
|
|
551 |
msgid "Message for Logged-out Users"
|
552 |
msgstr "Missatge per als usuaris desconnectats (Logged-out)"
|
553 |
|
@@ -556,6 +596,7 @@ msgstr "Missatge per als usuaris desconnectats (Logged-out)"
|
|
556 |
#: adminpages/advancedsettings.php:105
|
557 |
#: adminpages/advancedsettings.php:177
|
558 |
#: adminpages/advancedsettings.php:179
|
|
|
559 |
msgid "This message replaces the post content for logged-out visitors."
|
560 |
msgstr "Aquest missatge remplaça el contingut del post per a visitants desconnectats (logged-out)"
|
561 |
|
@@ -564,6 +605,7 @@ msgstr "Aquest missatge remplaça el contingut del post per a visitants desconne
|
|
564 |
#: adminpages/advancedsettings.php:110
|
565 |
#: adminpages/advancedsettings.php:182
|
566 |
#: adminpages/advancedsettings.php:184
|
|
|
567 |
msgid "Message for RSS Feed"
|
568 |
msgstr "Missatge per a RSS Feed"
|
569 |
|
@@ -572,24 +614,28 @@ msgstr "Missatge per a RSS Feed"
|
|
572 |
#: adminpages/advancedsettings.php:114
|
573 |
#: adminpages/advancedsettings.php:186
|
574 |
#: adminpages/advancedsettings.php:188
|
|
|
575 |
msgid "This message replaces the post content in RSS feeds."
|
576 |
msgstr "Aquest missatge reemplaça el contingut del seu missatge en els canals RSS."
|
577 |
|
578 |
#: adminpages/advancedsettings.php:122
|
579 |
#: adminpages/advancedsettings.php:199
|
580 |
#: adminpages/advancedsettings.php:201
|
|
|
581 |
msgid "Filter searches and archives?"
|
582 |
msgstr "Filtra recerques i arxius?"
|
583 |
|
584 |
#: adminpages/advancedsettings.php:126
|
585 |
#: adminpages/advancedsettings.php:203
|
586 |
#: adminpages/advancedsettings.php:205
|
|
|
587 |
msgid "No - Non-members will see restricted posts/pages in searches and archives."
|
588 |
msgstr "No - No subscriptors veuran posts restringits/pàgines en les recerques i els arxius."
|
589 |
|
590 |
#: adminpages/advancedsettings.php:127
|
591 |
#: adminpages/advancedsettings.php:204
|
592 |
#: adminpages/advancedsettings.php:206
|
|
|
593 |
msgid "Yes - Only members will see restricted posts/pages in searches and archives."
|
594 |
msgstr "Sí - Només els subscriptors veuran posts restringits/pàgines en les recerques i els arxius."
|
595 |
|
@@ -598,6 +644,7 @@ msgstr "Sí - Només els subscriptors veuran posts restringits/pàgines en les r
|
|
598 |
#: adminpages/advancedsettings.php:120
|
599 |
#: adminpages/advancedsettings.php:210
|
600 |
#: adminpages/advancedsettings.php:212
|
|
|
601 |
msgid "Show Excerpts to Non-Members?"
|
602 |
msgstr "Mostrar extractes als no membres?"
|
603 |
|
@@ -606,6 +653,7 @@ msgstr "Mostrar extractes als no membres?"
|
|
606 |
#: adminpages/advancedsettings.php:124
|
607 |
#: adminpages/advancedsettings.php:214
|
608 |
#: adminpages/advancedsettings.php:216
|
|
|
609 |
msgid "No - Hide excerpts."
|
610 |
msgstr "No - Amaga extractes."
|
611 |
|
@@ -614,12 +662,14 @@ msgstr "No - Amaga extractes."
|
|
614 |
#: adminpages/advancedsettings.php:125
|
615 |
#: adminpages/advancedsettings.php:215
|
616 |
#: adminpages/advancedsettings.php:217
|
|
|
617 |
msgid "Yes - Show excerpts."
|
618 |
msgstr "Sí - Mostra extractes."
|
619 |
|
620 |
#: adminpages/advancedsettings.php:144
|
621 |
#: adminpages/advancedsettings.php:333
|
622 |
#: adminpages/advancedsettings.php:348
|
|
|
623 |
msgid "Hide Ads From Members?"
|
624 |
msgstr "Amaga els anuncis als subscriptors?"
|
625 |
|
@@ -685,6 +735,17 @@ msgstr "Amaga els anuncis als subscriptors?"
|
|
685 |
#: adminpages/advancedsettings.php:494
|
686 |
#: classes/gateways/class.pmprogateway_stripe.php:404
|
687 |
#: classes/gateways/class.pmprogateway_stripe.php:418
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
688 |
msgid "No"
|
689 |
msgstr "No"
|
690 |
|
@@ -693,6 +754,7 @@ msgstr "No"
|
|
693 |
#: adminpages/advancedsettings.php:136
|
694 |
#: adminpages/advancedsettings.php:338
|
695 |
#: adminpages/advancedsettings.php:353
|
|
|
696 |
msgid "Hide Ads From All Members"
|
697 |
msgstr "Amaga Anuncis de tots els subscriptors"
|
698 |
|
@@ -701,6 +763,7 @@ msgstr "Amaga Anuncis de tots els subscriptors"
|
|
701 |
#: adminpages/advancedsettings.php:137
|
702 |
#: adminpages/advancedsettings.php:339
|
703 |
#: adminpages/advancedsettings.php:354
|
|
|
704 |
msgid "Hide Ads From Certain Members"
|
705 |
msgstr "Amaga els anuncis a certs subscriptors"
|
706 |
|
@@ -715,6 +778,7 @@ msgstr "Els anuncis dels següents plugins seràn desactivats automàticament"
|
|
715 |
#: adminpages/advancedsettings.php:145
|
716 |
#: adminpages/advancedsettings.php:346
|
717 |
#: adminpages/advancedsettings.php:361
|
|
|
718 |
msgid "To hide ads in your template code, use code like the following"
|
719 |
msgstr "Per amagar els anuncis al codi de la plantilla, utilitzeu el codi següent"
|
720 |
|
@@ -723,6 +787,7 @@ msgstr "Per amagar els anuncis al codi de la plantilla, utilitzeu el codi següe
|
|
723 |
#: adminpages/advancedsettings.php:156
|
724 |
#: adminpages/advancedsettings.php:355
|
725 |
#: adminpages/advancedsettings.php:370
|
|
|
726 |
msgid "Choose Levels to Hide Ads From"
|
727 |
msgstr "Escull els nivells on amagar els anuncis"
|
728 |
|
@@ -741,6 +806,7 @@ msgstr "Redirigir tot el trànsit de la pàgina de registre a /susbcription/?"
|
|
741 |
#: adminpages/advancedsettings.php:390
|
742 |
#: adminpages/advancedsettings.php:392
|
743 |
#: adminpages/advancedsettings.php:407
|
|
|
744 |
msgid "multisite only"
|
745 |
msgstr "només “multisite”"
|
746 |
|
@@ -795,6 +861,13 @@ msgstr "només “multisite”"
|
|
795 |
#: adminpages/advancedsettings.php:412
|
796 |
#: classes/gateways/class.pmprogateway_stripe.php:406
|
797 |
#: classes/gateways/class.pmprogateway_stripe.php:420
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
798 |
msgid "Yes"
|
799 |
msgstr "Sí"
|
800 |
|
@@ -803,6 +876,7 @@ msgstr "Sí"
|
|
803 |
#: adminpages/advancedsettings.php:202
|
804 |
#: adminpages/advancedsettings.php:241
|
805 |
#: adminpages/advancedsettings.php:256
|
|
|
806 |
msgid "Use reCAPTCHA?"
|
807 |
msgstr "Utilitzar reCAPTCHA?"
|
808 |
|
@@ -818,6 +892,7 @@ msgstr "Sí - Només subscripcions gratuïtes"
|
|
818 |
#: adminpages/advancedsettings.php:208
|
819 |
#: adminpages/advancedsettings.php:247
|
820 |
#: adminpages/advancedsettings.php:262
|
|
|
821 |
msgid "Yes - All memberships."
|
822 |
msgstr "Sí - Tots els subscriptors"
|
823 |
|
@@ -826,6 +901,7 @@ msgstr "Sí - Tots els subscriptors"
|
|
826 |
#: adminpages/advancedsettings.php:210
|
827 |
#: adminpages/advancedsettings.php:249
|
828 |
#: adminpages/advancedsettings.php:264
|
|
|
829 |
msgid "A free reCAPTCHA key is required."
|
830 |
msgstr "Una clau reCAPTCHA gratuïta és necessària"
|
831 |
|
@@ -834,6 +910,7 @@ msgstr "Una clau reCAPTCHA gratuïta és necessària"
|
|
834 |
#: adminpages/advancedsettings.php:210
|
835 |
#: adminpages/advancedsettings.php:249
|
836 |
#: adminpages/advancedsettings.php:264
|
|
|
837 |
msgid "Click here to signup for reCAPTCHA"
|
838 |
msgstr "Clica aquí per a signar per al reCAPTCHA"
|
839 |
|
@@ -890,6 +967,10 @@ msgstr "Seleccionat"
|
|
890 |
#: adminpages/advancedsettings.php:542
|
891 |
#: adminpages/pagesettings.php:508
|
892 |
#: adminpages/pagesettings.php:512
|
|
|
|
|
|
|
|
|
893 |
msgid "Save Settings"
|
894 |
msgstr "Desa la configuració"
|
895 |
|
@@ -965,6 +1046,7 @@ msgstr "Error esborrant el codi de descompte. Si us plau torna a intentar-ho."
|
|
965 |
#: adminpages/discountcodes.php:796
|
966 |
#: adminpages/discountcodes.php:354
|
967 |
#: adminpages/discountcodes.php:798
|
|
|
968 |
msgid "Code not found."
|
969 |
msgstr "No s’ha trobat el codi."
|
970 |
|
@@ -987,6 +1069,7 @@ msgstr "Edita el codi de descompte"
|
|
987 |
#: adminpages/discountcodes.php:735
|
988 |
#: adminpages/discountcodes.php:377
|
989 |
#: adminpages/discountcodes.php:737
|
|
|
990 |
msgid "Add New Discount Code"
|
991 |
msgstr "Afegeix un nou codi de descompte"
|
992 |
|
@@ -1033,6 +1116,12 @@ msgstr "Afegeix un nou codi de descompte"
|
|
1033 |
#: adminpages/discountcodes.php:446
|
1034 |
#: adminpages/discountcodes.php:785
|
1035 |
#: adminpages/orders.php:1331
|
|
|
|
|
|
|
|
|
|
|
|
|
1036 |
msgid "ID"
|
1037 |
msgstr "ID"
|
1038 |
|
@@ -1047,6 +1136,7 @@ msgstr "ID"
|
|
1047 |
#: adminpages/orders.php:415
|
1048 |
#: adminpages/orders.php:421
|
1049 |
#: adminpages/discountcodes.php:447
|
|
|
1050 |
msgid "This will be generated when you save."
|
1051 |
msgstr "Es generarà quan salvis."
|
1052 |
|
@@ -1078,6 +1168,11 @@ msgstr "Es generarà quan salvis."
|
|
1078 |
#: adminpages/discountcodes.php:786
|
1079 |
#: adminpages/orders.php:1332
|
1080 |
#: adminpages/dashboard.php:292
|
|
|
|
|
|
|
|
|
|
|
1081 |
msgid "Code"
|
1082 |
msgstr "Codi"
|
1083 |
|
@@ -1091,6 +1186,7 @@ msgstr "Codi"
|
|
1091 |
#: adminpages/discountcodes.php:489
|
1092 |
#: includes/profile.php:501
|
1093 |
#: includes/profile.php:497
|
|
|
1094 |
msgid "Start Date"
|
1095 |
msgstr "Data d’inici"
|
1096 |
|
@@ -1127,6 +1223,9 @@ msgstr "Data d’inici"
|
|
1127 |
#: classes/gateways/class.pmprogateway_stripe.php:1320
|
1128 |
#: classes/gateways/class.pmprogateway_stripe.php:1326
|
1129 |
#: classes/gateways/class.pmprogateway_stripe.php:785
|
|
|
|
|
|
|
1130 |
msgid "Expiration Date"
|
1131 |
msgstr "Data final (d’expiració)"
|
1132 |
|
@@ -1141,6 +1240,7 @@ msgstr "Data final (d’expiració)"
|
|
1141 |
#: adminpages/discountcodes.php:787
|
1142 |
#: adminpages/discountcodes.php:525
|
1143 |
#: adminpages/discountcodes.php:789
|
|
|
1144 |
msgid "Uses"
|
1145 |
msgstr "Utilitza"
|
1146 |
|
@@ -1174,6 +1274,7 @@ msgstr "A quins nivells s’aplicarà aquest codi?"
|
|
1174 |
#: adminpages/discountcodes.php:574
|
1175 |
#: adminpages/membershiplevels.php:401
|
1176 |
#: adminpages/discountcodes.php:576
|
|
|
1177 |
msgid "Initial Payment"
|
1178 |
msgstr "Pagament inicial"
|
1179 |
|
@@ -1189,6 +1290,7 @@ msgstr "Pagament inicial"
|
|
1189 |
#: adminpages/discountcodes.php:585
|
1190 |
#: adminpages/membershiplevels.php:412
|
1191 |
#: adminpages/discountcodes.php:587
|
|
|
1192 |
msgid "The initial amount collected at registration."
|
1193 |
msgstr "El pagament inicial efectuat en el registre"
|
1194 |
|
@@ -1204,6 +1306,7 @@ msgstr "El pagament inicial efectuat en el registre"
|
|
1204 |
#: adminpages/discountcodes.php:590
|
1205 |
#: adminpages/membershiplevels.php:417
|
1206 |
#: adminpages/discountcodes.php:592
|
|
|
1207 |
msgid "Recurring Subscription"
|
1208 |
msgstr "Subscripció recurrent"
|
1209 |
|
@@ -1219,6 +1322,7 @@ msgstr "Subscripció recurrent"
|
|
1219 |
#: adminpages/discountcodes.php:591
|
1220 |
#: adminpages/membershiplevels.php:418
|
1221 |
#: adminpages/discountcodes.php:593
|
|
|
1222 |
msgid "Check if this level has a recurring subscription payment."
|
1223 |
msgstr "Clica si aquest nivell té un pagament de subscripció recurrent"
|
1224 |
|
@@ -1233,6 +1337,7 @@ msgstr "Clica si aquest nivell té un pagament de subscripció recurrent"
|
|
1233 |
#: adminpages/discountcodes.php:595
|
1234 |
#: adminpages/membershiplevels.php:422
|
1235 |
#: adminpages/discountcodes.php:597
|
|
|
1236 |
msgid "Billing Amount"
|
1237 |
msgstr "Total a facturar"
|
1238 |
|
@@ -1270,6 +1375,11 @@ msgstr "Total a facturar"
|
|
1270 |
#: classes/gateways/class.pmprogateway_stripe.php:2641
|
1271 |
#: classes/gateways/class.pmprogateway_stripe.php:2637
|
1272 |
#: classes/gateways/class.pmprogateway_stripe.php:2639
|
|
|
|
|
|
|
|
|
|
|
1273 |
msgid "Day(s)"
|
1274 |
msgstr "Dia(es)"
|
1275 |
|
@@ -1307,6 +1417,11 @@ msgstr "Dia(es)"
|
|
1307 |
#: classes/gateways/class.pmprogateway_stripe.php:2643
|
1308 |
#: classes/gateways/class.pmprogateway_stripe.php:2639
|
1309 |
#: classes/gateways/class.pmprogateway_stripe.php:2641
|
|
|
|
|
|
|
|
|
|
|
1310 |
msgid "Month(s)"
|
1311 |
msgstr "Mes(os)"
|
1312 |
|
@@ -1344,6 +1459,11 @@ msgstr "Mes(os)"
|
|
1344 |
#: classes/gateways/class.pmprogateway_stripe.php:2642
|
1345 |
#: classes/gateways/class.pmprogateway_stripe.php:2638
|
1346 |
#: classes/gateways/class.pmprogateway_stripe.php:2640
|
|
|
|
|
|
|
|
|
|
|
1347 |
msgid "Week(s)"
|
1348 |
msgstr "Setmana(es)"
|
1349 |
|
@@ -1381,6 +1501,11 @@ msgstr "Setmana(es)"
|
|
1381 |
#: classes/gateways/class.pmprogateway_stripe.php:2644
|
1382 |
#: classes/gateways/class.pmprogateway_stripe.php:2640
|
1383 |
#: classes/gateways/class.pmprogateway_stripe.php:2642
|
|
|
|
|
|
|
|
|
|
|
1384 |
msgid "Year(s)"
|
1385 |
msgstr "Any(s)"
|
1386 |
|
@@ -1396,6 +1521,7 @@ msgstr "Any(s)"
|
|
1396 |
#: adminpages/discountcodes.php:618
|
1397 |
#: adminpages/membershiplevels.php:446
|
1398 |
#: adminpages/discountcodes.php:620
|
|
|
1399 |
msgid "The amount to be billed one cycle after the initial payment."
|
1400 |
msgstr "Total a facturar en un cicle després del pagament inicial"
|
1401 |
|
@@ -1411,6 +1537,7 @@ msgstr "Total a facturar en un cicle després del pagament inicial"
|
|
1411 |
#: adminpages/discountcodes.php:628
|
1412 |
#: adminpages/membershiplevels.php:465
|
1413 |
#: adminpages/discountcodes.php:630
|
|
|
1414 |
msgid "Billing Cycle Limit"
|
1415 |
msgstr "Límit de cicle de facturació"
|
1416 |
|
@@ -1426,6 +1553,7 @@ msgstr "Límit de cicle de facturació"
|
|
1426 |
#: adminpages/discountcodes.php:632
|
1427 |
#: adminpages/membershiplevels.php:469
|
1428 |
#: adminpages/discountcodes.php:634
|
|
|
1429 |
msgid "The <strong>total</strong> number of recurring billing cycles for this level, including the trial period (if applicable) but not including the initial payment. Set to zero if membership is indefinite."
|
1430 |
msgstr "El <strong>total</strong> de cicles de pagament recurrent per a aquest nivell, incloent el període de prova (si s’aplica) però sense incloure el pagament inicial. Deixa-ho a zero si la subscripció és infinita."
|
1431 |
|
@@ -1441,6 +1569,8 @@ msgstr "El <strong>total</strong> de cicles de pagament recurrent per a aquest n
|
|
1441 |
#: adminpages/discountcodes.php:651
|
1442 |
#: adminpages/membershiplevels.php:488
|
1443 |
#: adminpages/discountcodes.php:653
|
|
|
|
|
1444 |
msgid "Custom Trial"
|
1445 |
msgstr "Prova personalitzada"
|
1446 |
|
@@ -1457,6 +1587,8 @@ msgstr "Prova personalitzada"
|
|
1457 |
#: adminpages/discountcodes.php:653
|
1458 |
#: adminpages/membershiplevels.php:490
|
1459 |
#: adminpages/discountcodes.php:655
|
|
|
|
|
1460 |
msgid "Check to add a custom trial period."
|
1461 |
msgstr "Clica per afegir un període de prova personalitzat."
|
1462 |
|
@@ -1473,6 +1605,7 @@ msgstr "Clica per afegir un període de prova personalitzat."
|
|
1473 |
#: adminpages/discountcodes.php:661
|
1474 |
#: adminpages/membershiplevels.php:510
|
1475 |
#: adminpages/discountcodes.php:663
|
|
|
1476 |
msgid "Trial Billing Amount"
|
1477 |
msgstr "Facturació per al període de prova"
|
1478 |
|
@@ -1489,6 +1622,7 @@ msgstr "Facturació per al període de prova"
|
|
1489 |
#: adminpages/discountcodes.php:672
|
1490 |
#: adminpages/membershiplevels.php:521
|
1491 |
#: adminpages/discountcodes.php:674
|
|
|
1492 |
msgid "for the first"
|
1493 |
msgstr "per al primer"
|
1494 |
|
@@ -1505,6 +1639,7 @@ msgstr "per al primer"
|
|
1505 |
#: adminpages/discountcodes.php:674
|
1506 |
#: adminpages/membershiplevels.php:523
|
1507 |
#: adminpages/discountcodes.php:676
|
|
|
1508 |
msgid "subscription payments"
|
1509 |
msgstr "pagaments de subscripció"
|
1510 |
|
@@ -1522,6 +1657,7 @@ msgstr "pagaments de subscripció"
|
|
1522 |
#: adminpages/discountcodes.php:686
|
1523 |
#: adminpages/membershiplevels.php:559
|
1524 |
#: adminpages/discountcodes.php:688
|
|
|
1525 |
msgid "Membership Expiration"
|
1526 |
msgstr "Venciment de la subscripció"
|
1527 |
|
@@ -1538,6 +1674,7 @@ msgstr "Venciment de la subscripció"
|
|
1538 |
#: adminpages/discountcodes.php:687
|
1539 |
#: adminpages/membershiplevels.php:560
|
1540 |
#: adminpages/discountcodes.php:689
|
|
|
1541 |
msgid "Check this to set when membership access expires."
|
1542 |
msgstr "Clica per afegir quan expira l’accés del subscriptor"
|
1543 |
|
@@ -1556,6 +1693,8 @@ msgstr "Clica per afegir quan expira l’accés del subscriptor"
|
|
1556 |
#: adminpages/membershiplevels.php:575
|
1557 |
#: pages/confirmation.php:140
|
1558 |
#: adminpages/discountcodes.php:693
|
|
|
|
|
1559 |
msgid "Expires In"
|
1560 |
msgstr "Expira En"
|
1561 |
|
@@ -1572,6 +1711,8 @@ msgstr "Expira En"
|
|
1572 |
#: adminpages/discountcodes.php:707
|
1573 |
#: adminpages/membershiplevels.php:586
|
1574 |
#: adminpages/discountcodes.php:709
|
|
|
|
|
1575 |
msgid "Set the duration of membership access. Note that the any future payments (recurring subscription, if any) will be cancelled when the membership expires."
|
1576 |
msgstr "Indiqueu la durada de l’accés de subcriptors. Recordeu que qualsevol pagament futur (recurrent de subscripció, si escau) es cancel·larà quan la subscripció caduqui."
|
1577 |
|
@@ -1581,6 +1722,7 @@ msgstr "Indiqueu la durada de l’accés de subcriptors. Recordeu que qualsevol
|
|
1581 |
#: adminpages/discountcodes.php:556
|
1582 |
#: adminpages/discountcodes.php:734
|
1583 |
#: adminpages/discountcodes.php:736
|
|
|
1584 |
msgid "Memberships Discount Codes"
|
1585 |
msgstr "Codis de descompte per a subscripcions"
|
1586 |
|
@@ -1590,6 +1732,7 @@ msgstr "Codis de descompte per a subscripcions"
|
|
1590 |
#: adminpages/discountcodes.php:566
|
1591 |
#: adminpages/discountcodes.php:771
|
1592 |
#: adminpages/discountcodes.php:773
|
|
|
1593 |
msgid "Search Discount Codes"
|
1594 |
msgstr "Cerca codis de descompte"
|
1595 |
|
@@ -1602,6 +1745,7 @@ msgstr "Cerca codis de descompte"
|
|
1602 |
#: adminpages/reports/login.php:83
|
1603 |
#: adminpages/discountcodes.php:774
|
1604 |
#: adminpages/discountcodes.php:776
|
|
|
1605 |
msgid "Search"
|
1606 |
msgstr "Cerca"
|
1607 |
|
@@ -1611,6 +1755,7 @@ msgstr "Cerca"
|
|
1611 |
#: adminpages/discountcodes.php:587
|
1612 |
#: adminpages/discountcodes.php:785
|
1613 |
#: adminpages/discountcodes.php:787
|
|
|
1614 |
msgid "Starts"
|
1615 |
msgstr "Comença"
|
1616 |
|
@@ -1639,6 +1784,9 @@ msgstr "Comença"
|
|
1639 |
#: adminpages/discountcodes.php:788
|
1640 |
#: includes/profile.php:65
|
1641 |
#: adminpages/dashboard.php:228
|
|
|
|
|
|
|
1642 |
msgid "Expires"
|
1643 |
msgstr "Acaba"
|
1644 |
|
@@ -1649,6 +1797,7 @@ msgstr "Acaba"
|
|
1649 |
#: adminpages/admin_header.php:253
|
1650 |
#: adminpages/discountcodes.php:788
|
1651 |
#: adminpages/discountcodes.php:790
|
|
|
1652 |
msgid "Levels"
|
1653 |
msgstr "Nivells"
|
1654 |
|
@@ -1690,6 +1839,8 @@ msgstr "Els codis de descompte et permeten oferir"
|
|
1690 |
#: adminpages/orders.php:1565
|
1691 |
#: adminpages/orders.php:1564
|
1692 |
#: adminpages/orders.php:1556
|
|
|
|
|
1693 |
msgid "edit"
|
1694 |
msgstr "Edita"
|
1695 |
|
@@ -1748,6 +1899,7 @@ msgstr "Configuració de correu electrònic"
|
|
1748 |
#: adminpages/emailsettings.php:70
|
1749 |
#: adminpages/emailsettings.php:61
|
1750 |
#: adminpages/emailsettings.php:88
|
|
|
1751 |
msgid "By default, system generated emails are sent from <em><strong>wordpress@yourdomain.com</strong></em>. You can update this from address using the fields below."
|
1752 |
msgstr "Per defecte, els correus electrònics generats són enviats desde <em><strong>wordpress@yourdomain.com</strong></em>. Pots modificar-ho utilitzant els camps que hi ha a continuació."
|
1753 |
|
@@ -1759,22 +1911,26 @@ msgstr "Per modificar l’aparença dels emails generats pel sistema, afegeix el
|
|
1759 |
#: adminpages/emailsettings.php:78
|
1760 |
#: adminpages/emailsettings.php:69
|
1761 |
#: adminpages/emailsettings.php:94
|
|
|
1762 |
msgid "From Email"
|
1763 |
msgstr "Del Correu Electrònic"
|
1764 |
|
1765 |
#: adminpages/emailsettings.php:86
|
1766 |
#: adminpages/emailsettings.php:77
|
1767 |
#: adminpages/emailsettings.php:102
|
|
|
1768 |
msgid "From Name"
|
1769 |
msgstr "Del Nom"
|
1770 |
|
1771 |
#: adminpages/emailsettings.php:94
|
1772 |
#: adminpages/emailsettings.php:110
|
|
|
1773 |
msgid "Only Filter PMPro Emails?"
|
1774 |
msgstr "Filtra només els correus de PMPro?"
|
1775 |
|
1776 |
#: adminpages/emailsettings.php:98
|
1777 |
#: adminpages/emailsettings.php:114
|
|
|
1778 |
#, php-format
|
1779 |
msgid "If unchecked, all emails from \"WordPress <%s>\" will be filtered to use the above settings."
|
1780 |
msgstr "Si no està clicat, tots els correus de \"WordPress <%s>\" seran filtrats per utilitzar la configuració de dalt."
|
@@ -1943,6 +2099,9 @@ msgstr "Afegeix un nou nivell de subscripció"
|
|
1943 |
#: adminpages/membershiplevels.php:808
|
1944 |
#: adminpages/reports/history.php:184
|
1945 |
#: adminpages/reports/login.php:181
|
|
|
|
|
|
|
1946 |
msgid "Name"
|
1947 |
msgstr "Nom"
|
1948 |
|
@@ -1950,6 +2109,7 @@ msgstr "Nom"
|
|
1950 |
#: adminpages/membershiplevels.php:314
|
1951 |
#: adminpages/membershiplevels.php:316
|
1952 |
#: adminpages/membershiplevels.php:377
|
|
|
1953 |
msgid "Confirmation Message"
|
1954 |
msgstr "Missatge de confirmació"
|
1955 |
|
@@ -1963,6 +2123,8 @@ msgstr "Missatge de confirmació"
|
|
1963 |
#: adminpages/membershiplevels.php:639
|
1964 |
#: adminpages/membershiplevels.php:397
|
1965 |
#: adminpages/membershiplevels.php:809
|
|
|
|
|
1966 |
msgid "Billing Details"
|
1967 |
msgstr "Detalls de facturació"
|
1968 |
|
@@ -1986,6 +2148,9 @@ msgstr "Detalls de facturació"
|
|
1986 |
#: classes/gateways/class.pmprogateway_stripe.php:2700
|
1987 |
#: classes/gateways/class.pmprogateway_stripe.php:2696
|
1988 |
#: classes/gateways/class.pmprogateway_stripe.php:2698
|
|
|
|
|
|
|
1989 |
msgid "per"
|
1990 |
msgstr "per"
|
1991 |
|
@@ -2004,6 +2169,7 @@ msgstr "La integració d’Stripe actualment només suporta períodes de factura
|
|
2004 |
#: adminpages/discountcodes.php:620
|
2005 |
#: adminpages/membershiplevels.php:448
|
2006 |
#: adminpages/discountcodes.php:622
|
|
|
2007 |
msgid "Braintree integration currently only supports billing periods of \"Month\" or \"Year\"."
|
2008 |
msgstr "La integració de Braintree actualment només suporta períodes de facturació de “mes” o “any”."
|
2009 |
|
@@ -2021,6 +2187,7 @@ msgstr "La integració de Payflow actualment només suporta períodes de factura
|
|
2021 |
#: adminpages/membershiplevels.php:393
|
2022 |
#: adminpages/membershiplevels.php:396
|
2023 |
#: adminpages/membershiplevels.php:454
|
|
|
2024 |
msgid "After saving this level, make note of the ID and create a \"Plan\" in your Braintree dashboard with the same settings and the \"Plan ID\" set to <em>pmpro_#</em>, where # is the level ID."
|
2025 |
msgstr "Després de salvar aquest nivell, anota’t la ID i crea un \"Plan\" al dashboard de Braintree amb la mateixa configuració i el \"Plan ID\" set to <em>pmpro_#</em>, on # és el level ID."
|
2026 |
|
@@ -2043,6 +2210,8 @@ msgstr "Després de salvar aquest nivell, anota’t la ID i crea un \"Plan\" al
|
|
2043 |
#: adminpages/membershiplevels.php:454
|
2044 |
#: adminpages/membershiplevels.php:459
|
2045 |
#: classes/gateways/class.pmprogateway_cybersource.php:89
|
|
|
|
|
2046 |
msgid "Note"
|
2047 |
msgstr "Nota"
|
2048 |
|
@@ -2062,6 +2231,7 @@ msgstr "Has de crear un “Plan\" a Braintree dashboard amb la mateixa configura
|
|
2062 |
#: adminpages/discountcodes.php:634
|
2063 |
#: adminpages/membershiplevels.php:471
|
2064 |
#: adminpages/discountcodes.php:636
|
|
|
2065 |
msgid "Stripe integration currently does not support billing limits. You can still set an expiration date below."
|
2066 |
msgstr "La integració d’Stripe no suporta límits de facturació actualment. Pots posar una data de límit de facturació a sota."
|
2067 |
|
@@ -2073,6 +2243,8 @@ msgstr "La integració d’Stripe no suporta límits de facturació actualment.
|
|
2073 |
#: adminpages/discountcodes.php:655
|
2074 |
#: adminpages/membershiplevels.php:493
|
2075 |
#: adminpages/discountcodes.php:657
|
|
|
|
|
2076 |
msgid "2Checkout integration does not support custom trials. You can do one period trials by setting an initial payment different from the billing amount."
|
2077 |
msgstr "La integració de 2Checkout no suporta proves personalitzades. Pots afegir un període de prova configurant un pagament inicial diferent del total de facturació."
|
2078 |
|
@@ -2085,6 +2257,7 @@ msgstr "La integració de 2Checkout no suporta proves personalitzades. Pots afeg
|
|
2085 |
#: adminpages/discountcodes.php:676
|
2086 |
#: adminpages/membershiplevels.php:525
|
2087 |
#: adminpages/discountcodes.php:678
|
|
|
2088 |
msgid "Stripe integration currently does not support trial amounts greater than $0."
|
2089 |
msgstr "La integració d’Stripe no suporta preus de prova majors que $0."
|
2090 |
|
@@ -2097,6 +2270,7 @@ msgstr "La integració d’Stripe no suporta preus de prova majors que $0."
|
|
2097 |
#: adminpages/discountcodes.php:678
|
2098 |
#: adminpages/membershiplevels.php:527
|
2099 |
#: adminpages/discountcodes.php:680
|
|
|
2100 |
msgid "Braintree integration currently does not support trial amounts greater than $0."
|
2101 |
msgstr "La integració de Braintree no suporta preus de prova majors que $0."
|
2102 |
|
@@ -2109,6 +2283,7 @@ msgstr "La integració de Braintree no suporta preus de prova majors que $0."
|
|
2109 |
#: adminpages/discountcodes.php:680
|
2110 |
#: adminpages/membershiplevels.php:529
|
2111 |
#: adminpages/discountcodes.php:682
|
|
|
2112 |
msgid "Payflow integration currently does not support trial amounts greater than $0."
|
2113 |
msgstr "La integració de Payflow no suporta preus de prova majors que $0."
|
2114 |
|
@@ -2123,6 +2298,7 @@ msgstr "La integració de Payflow no suporta preus de prova majors que $0."
|
|
2123 |
#: adminpages/dashboard.php:140
|
2124 |
#: adminpages/membershiplevels.php:550
|
2125 |
#: adminpages/advancedsettings.php:343
|
|
|
2126 |
msgid "Other Settings"
|
2127 |
msgstr "Configuració, altres"
|
2128 |
|
@@ -2158,6 +2334,8 @@ msgstr "Clica per amagar aquest nivell de la pàgina de nivells de subscripció
|
|
2158 |
#: adminpages/advancedsettings.php:194
|
2159 |
#: adminpages/membershiplevels.php:624
|
2160 |
#: adminpages/advancedsettings.php:196
|
|
|
|
|
2161 |
msgid "Content Settings"
|
2162 |
msgstr "Configuració de continguts"
|
2163 |
|
@@ -2169,12 +2347,14 @@ msgstr "Configuració de continguts"
|
|
2169 |
#: adminpages/membershiplevels.php:497
|
2170 |
#: adminpages/membershiplevels.php:500
|
2171 |
#: adminpages/membershiplevels.php:654
|
|
|
2172 |
msgid "Categories"
|
2173 |
msgstr "Categories"
|
2174 |
|
2175 |
#: adminpages/membershiplevels.php:516
|
2176 |
#: adminpages/membershiplevels.php:517
|
2177 |
#: adminpages/membershiplevels.php:674
|
|
|
2178 |
msgid "Save Level"
|
2179 |
msgstr "Salva nivell"
|
2180 |
|
@@ -2209,6 +2389,14 @@ msgstr "Salva nivell"
|
|
2209 |
#: includes/profile.php:918
|
2210 |
#: adminpages/orders.php:960
|
2211 |
#: pages/billing.php:436
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2212 |
msgid "Cancel"
|
2213 |
msgstr "Cancel·la"
|
2214 |
|
@@ -2249,6 +2437,7 @@ msgstr "Cerca Nivells"
|
|
2249 |
#: adminpages/membershiplevels.php:579
|
2250 |
#: adminpages/membershiplevels.php:631
|
2251 |
#: adminpages/membershiplevels.php:797
|
|
|
2252 |
msgid "Drag and drop membership levels to reorder them on the Levels page."
|
2253 |
msgstr "Arrossega i deixa anar els nivells de subscripció per a reordenar-los a la pàgina de nivells"
|
2254 |
|
@@ -2273,6 +2462,9 @@ msgstr "Arrossega i deixa anar els nivells de subscripció per a reordenar-los a
|
|
2273 |
#: pages/confirmation.php:99
|
2274 |
#: pages/invoice.php:89
|
2275 |
#: shortcodes/pmpro_account.php:44
|
|
|
|
|
|
|
2276 |
msgid "Expiration"
|
2277 |
msgstr "Data final (d’expiració)"
|
2278 |
|
@@ -2285,6 +2477,7 @@ msgstr "Data final (d’expiració)"
|
|
2285 |
#: adminpages/membershiplevels.php:587
|
2286 |
#: adminpages/membershiplevels.php:641
|
2287 |
#: adminpages/membershiplevels.php:811
|
|
|
2288 |
msgid "Allow Signups"
|
2289 |
msgstr "Permet nous “signups”"
|
2290 |
|
@@ -2298,6 +2491,7 @@ msgstr "Permet nous “signups”"
|
|
2298 |
#: adminpages/membershiplevels.php:656
|
2299 |
#: adminpages/membershiplevels.php:840
|
2300 |
#: adminpages/membershiplevels.php:921
|
|
|
2301 |
msgid "FREE"
|
2302 |
msgstr "GRATUÏT"
|
2303 |
|
@@ -2311,6 +2505,7 @@ msgstr "GRATUÏT"
|
|
2311 |
#: adminpages/membershiplevels.php:665
|
2312 |
#: adminpages/membershiplevels.php:849
|
2313 |
#: adminpages/membershiplevels.php:930
|
|
|
2314 |
msgid "After"
|
2315 |
msgstr "Després"
|
2316 |
|
@@ -2356,6 +2551,7 @@ msgstr "copia"
|
|
2356 |
#: includes/adminpages.php:149
|
2357 |
#: includes/adminpages.php:153
|
2358 |
#: adminpages/memberslist.php:20
|
|
|
2359 |
msgid "Members List"
|
2360 |
msgstr "Llistat de subscriptors"
|
2361 |
|
@@ -2368,6 +2564,9 @@ msgstr "Llistat de subscriptors"
|
|
2368 |
#: adminpages/orders.php:994
|
2369 |
#: adminpages/orders.php:1000
|
2370 |
#: adminpages/orders.php:992
|
|
|
|
|
|
|
2371 |
msgid "Export to CSV"
|
2372 |
msgstr "Exporta a CSV"
|
2373 |
|
@@ -2395,6 +2594,10 @@ msgstr "Exporta a CSV"
|
|
2395 |
#: adminpages/orders.php:1012
|
2396 |
#: adminpages/reports/sales.php:311
|
2397 |
#: classes/class-pmpro-members-list-table.php:651
|
|
|
|
|
|
|
|
|
2398 |
msgid "Show"
|
2399 |
msgstr "Mostra"
|
2400 |
|
@@ -2421,6 +2624,10 @@ msgstr "Mostra"
|
|
2421 |
#: classes/class.pmproemail.php:195
|
2422 |
#: classes/class.pmproemail.php:235
|
2423 |
#: classes/class-pmpro-members-list-table.php:653
|
|
|
|
|
|
|
|
|
2424 |
msgid "All Levels"
|
2425 |
msgstr "Tots els nivells"
|
2426 |
|
@@ -2430,6 +2637,7 @@ msgstr "Tots els nivells"
|
|
2430 |
#: classes/class-pmpro-members-list-table.php:234
|
2431 |
#: classes/class-pmpro-members-list-table.php:634
|
2432 |
#: classes/class-pmpro-members-list-table.php:663
|
|
|
2433 |
msgid "Cancelled Members"
|
2434 |
msgstr "Subscriptors cancel·lats"
|
2435 |
|
@@ -2439,6 +2647,7 @@ msgstr "Subscriptors cancel·lats"
|
|
2439 |
#: classes/class-pmpro-members-list-table.php:235
|
2440 |
#: classes/class-pmpro-members-list-table.php:635
|
2441 |
#: classes/class-pmpro-members-list-table.php:664
|
|
|
2442 |
msgid "Expired Members"
|
2443 |
msgstr "Subscriptors “expirats”"
|
2444 |
|
@@ -2449,6 +2658,7 @@ msgstr "Subscriptors “expirats”"
|
|
2449 |
#: classes/class-pmpro-members-list-table.php:236
|
2450 |
#: classes/class-pmpro-members-list-table.php:636
|
2451 |
#: classes/class-pmpro-members-list-table.php:665
|
|
|
2452 |
msgid "Old Members"
|
2453 |
msgstr "Subscriptors antics"
|
2454 |
|
@@ -2460,6 +2670,9 @@ msgstr "Subscriptors antics"
|
|
2460 |
#: adminpages/memberslist.php:28
|
2461 |
#: adminpages/reports/history.php:115
|
2462 |
#: adminpages/reports/history.php:119
|
|
|
|
|
|
|
2463 |
msgid "Search Members"
|
2464 |
msgstr "Cerca Subscriptors"
|
2465 |
|
@@ -2497,6 +2710,9 @@ msgstr "%d subscriptor no trobat."
|
|
2497 |
#: adminpages/dashboard.php:223
|
2498 |
#: adminpages/dashboard.php:225
|
2499 |
#: classes/class.memberorder.php:1003
|
|
|
|
|
|
|
2500 |
msgid "Username"
|
2501 |
msgstr "Nom d’usuari"
|
2502 |
|
@@ -2539,6 +2755,8 @@ msgstr "Cognoms"
|
|
2539 |
#: pages/checkout.php:230
|
2540 |
#: pages/confirmation.php:78
|
2541 |
#: pages/invoice.php:68
|
|
|
|
|
2542 |
msgid "Billing Address"
|
2543 |
msgstr "Adreça de Facturació"
|
2544 |
|
@@ -2574,6 +2792,7 @@ msgstr "Preu"
|
|
2574 |
#: adminpages/reports/login.php:183
|
2575 |
#: adminpages/dashboard.php:225
|
2576 |
#: adminpages/dashboard.php:227
|
|
|
2577 |
msgid "Joined"
|
2578 |
msgstr "Afegit"
|
2579 |
|
@@ -2597,6 +2816,7 @@ msgstr "Finalitzat"
|
|
2597 |
#: adminpages/dashboard.php:232
|
2598 |
#: classes/class-pmpro-members-list-table.php:225
|
2599 |
#: adminpages/dashboard.php:234
|
|
|
2600 |
msgid "No members found."
|
2601 |
msgstr "No s’han trobat subscriptors"
|
2602 |
|
@@ -2611,6 +2831,7 @@ msgstr "No s’han trobat subscriptors"
|
|
2611 |
#: adminpages/reports/login.php:263
|
2612 |
#: classes/class-pmpro-members-list-table.php:228
|
2613 |
#: classes/class-pmpro-members-list-table.php:227
|
|
|
2614 |
msgid "Search all levels"
|
2615 |
msgstr "Cerca a tots els nivells"
|
2616 |
|
@@ -2637,6 +2858,7 @@ msgstr "Comanda esborrada correctament"
|
|
2637 |
#: adminpages/orders.php:72
|
2638 |
#: adminpages/orders.php:164
|
2639 |
#: adminpages/orders.php:170
|
|
|
2640 |
msgid "Error deleting order."
|
2641 |
msgstr "Error esborrant comanda."
|
2642 |
|
@@ -2645,6 +2867,8 @@ msgstr "Error esborrant comanda."
|
|
2645 |
#: adminpages/orders.php:169
|
2646 |
#: adminpages/orders.php:309
|
2647 |
#: adminpages/orders.php:315
|
|
|
|
|
2648 |
msgid "Order saved successfully."
|
2649 |
msgstr "Comanda salvada correctament."
|
2650 |
|
@@ -2659,6 +2883,8 @@ msgstr "Error actualitzant la marca de temps de la comanda (order timestamp)"
|
|
2659 |
#: adminpages/orders.php:180
|
2660 |
#: adminpages/orders.php:312
|
2661 |
#: adminpages/orders.php:318
|
|
|
|
|
2662 |
msgid "Error saving order."
|
2663 |
msgstr "Error guardant la comanda."
|
2664 |
|
@@ -2671,6 +2897,8 @@ msgstr "Error guardant la comanda."
|
|
2671 |
#: classes/class.memberorder.php:963
|
2672 |
#: adminpages/orders.php:389
|
2673 |
#: classes/class.memberorder.php:1005
|
|
|
|
|
2674 |
msgid "Order"
|
2675 |
msgstr "Comanda"
|
2676 |
|
@@ -2680,6 +2908,8 @@ msgstr "Comanda"
|
|
2680 |
#: adminpages/orders.php:348
|
2681 |
#: adminpages/orders.php:387
|
2682 |
#: adminpages/orders.php:393
|
|
2 |
# This file is distributed under the same license as the Paid Memberships Pro plugin.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Paid Memberships Pro 2.8\n"
|
6 |
"Report-Msgid-Bugs-To: info@paidmembershipspro.com\n"
|
7 |
"Last-Translator: Paid Memberships Pro <info@paidmembershipspro.com>\n"
|
8 |
"Language-Team: Paid Memberships Pro <info@paidmembershipspro.com>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"POT-Creation-Date: 2022-05-05T20:36:59+00:00\n"
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
"X-Generator: WP-CLI 2.6.0\n"
|
15 |
"X-Domain: paid-memberships-pro\n"
|
92 |
#: adminpages/orders.php:1022
|
93 |
#: adminpages/orders.php:1014
|
94 |
#: includes/metaboxes.php:19
|
95 |
+
#: adminpages/orders.php:1015
|
96 |
+
#: adminpages/orders.php:1103
|
97 |
msgid "All"
|
98 |
msgstr "Tot"
|
99 |
|
137 |
#: adminpages/membershiplevels.php:296
|
138 |
#: adminpages/membershiplevels.php:298
|
139 |
#: adminpages/membershiplevels.php:359
|
140 |
+
#: adminpages/membershiplevels.php:357
|
141 |
msgid "Description"
|
142 |
msgstr "Descripció"
|
143 |
|
218 |
#: adminpages/discountcodes.php:866
|
219 |
#: adminpages/orders.php:1417
|
220 |
#: adminpages/orders.php:1419
|
221 |
+
#: adminpages/orders.php:1418
|
222 |
+
#: adminpages/orders.php:1420
|
223 |
+
#: adminpages/discountcodes.php:869
|
224 |
+
#: adminpages/discountcodes.php:871
|
225 |
+
#: adminpages/membershiplevels.php:885
|
226 |
+
#: adminpages/orders.php:1533
|
227 |
+
#: adminpages/orders.php:1535
|
228 |
msgid "Delete"
|
229 |
msgstr "Esborra"
|
230 |
|
289 |
#: adminpages/orders.php:1545
|
290 |
#: adminpages/addons.php:250
|
291 |
#: adminpages/orders.php:912
|
292 |
+
#: adminpages/orders.php:583
|
293 |
+
#: adminpages/orders.php:913
|
294 |
+
#: adminpages/orders.php:1537
|
295 |
+
#: adminpages/orders.php:1546
|
296 |
+
#: adminpages/orders.php:704
|
297 |
+
#: adminpages/orders.php:996
|
298 |
+
#: adminpages/orders.php:1689
|
299 |
+
#: adminpages/orders.php:1698
|
300 |
+
#: classes/class.pmproemail.php:261
|
301 |
+
#: classes/class.pmproemail.php:327
|
302 |
+
#: includes/profile.php:167
|
303 |
+
#: includes/profile.php:483
|
304 |
+
#: includes/profile.php:484
|
305 |
+
#: includes/profile.php:556
|
306 |
+
#: includes/profile.php:557
|
307 |
+
#: includes/profile.php:558
|
308 |
msgid "N/A"
|
309 |
msgstr "N/A"
|
310 |
|
497 |
#: includes/profile.php:758
|
498 |
#: adminpages/orders.php:1437
|
499 |
#: adminpages/orders.php:1440
|
500 |
+
#: adminpages/orders.php:392
|
501 |
+
#: adminpages/orders.php:1438
|
502 |
+
#: adminpages/orders.php:1441
|
503 |
+
#: adminpages/orders.php:440
|
504 |
+
#: adminpages/orders.php:1553
|
505 |
+
#: adminpages/orders.php:1556
|
506 |
+
#: includes/profile.php:478
|
507 |
+
#: includes/profile.php:798
|
508 |
msgid "Email"
|
509 |
msgstr "Correu electrònic"
|
510 |
|
520 |
#: adminpages/advancedsettings.php:42
|
521 |
#: adminpages/advancedsettings.php:68
|
522 |
#: adminpages/advancedsettings.php:69
|
523 |
+
#: adminpages/advancedsettings.php:76
|
524 |
msgid "Your advanced settings have been updated."
|
525 |
msgstr "La vostra configuració avançada s’han actualitzat."
|
526 |
|
541 |
#: adminpages/advancedsettings.php:116
|
542 |
#: includes/updates/upgrade_1.php:13
|
543 |
#: adminpages/advancedsettings.php:118
|
544 |
+
#: adminpages/advancedsettings.php:126
|
545 |
msgid "This content is for members only. Visit the site and log in/register to read."
|
546 |
msgstr "Aquest contingut és només per a subscriptors. Visita el lloc i registra’t/log in per a llegir."
|
547 |
|
560 |
#: adminpages/advancedsettings.php:132
|
561 |
#: includes/adminpages.php:73
|
562 |
#: adminpages/advancedsettings.php:134
|
563 |
+
#: adminpages/advancedsettings.php:142
|
564 |
msgid "Advanced Settings"
|
565 |
msgstr "Configuració Avançada"
|
566 |
|
569 |
#: adminpages/advancedsettings.php:92
|
570 |
#: adminpages/advancedsettings.php:164
|
571 |
#: adminpages/advancedsettings.php:166
|
572 |
+
#: adminpages/advancedsettings.php:173
|
573 |
msgid "Message for Logged-in Non-members"
|
574 |
msgstr "Missatge per a No subscriptors “Logged-in”"
|
575 |
|
578 |
#: adminpages/advancedsettings.php:96
|
579 |
#: adminpages/advancedsettings.php:168
|
580 |
#: adminpages/advancedsettings.php:170
|
581 |
+
#: adminpages/advancedsettings.php:177
|
582 |
msgid "This message replaces the post content for non-members. Available variables"
|
583 |
msgstr "Aquest missatge reemplaça el contingut de l’entrada per als no membres. Hi ha variables disponibles"
|
584 |
|
587 |
#: adminpages/advancedsettings.php:101
|
588 |
#: adminpages/advancedsettings.php:173
|
589 |
#: adminpages/advancedsettings.php:175
|
590 |
+
#: adminpages/advancedsettings.php:182
|
591 |
msgid "Message for Logged-out Users"
|
592 |
msgstr "Missatge per als usuaris desconnectats (Logged-out)"
|
593 |
|
596 |
#: adminpages/advancedsettings.php:105
|
597 |
#: adminpages/advancedsettings.php:177
|
598 |
#: adminpages/advancedsettings.php:179
|
599 |
+
#: adminpages/advancedsettings.php:186
|
600 |
msgid "This message replaces the post content for logged-out visitors."
|
601 |
msgstr "Aquest missatge remplaça el contingut del post per a visitants desconnectats (logged-out)"
|
602 |
|
605 |
#: adminpages/advancedsettings.php:110
|
606 |
#: adminpages/advancedsettings.php:182
|
607 |
#: adminpages/advancedsettings.php:184
|
608 |
+
#: adminpages/advancedsettings.php:191
|
609 |
msgid "Message for RSS Feed"
|
610 |
msgstr "Missatge per a RSS Feed"
|
611 |
|
614 |
#: adminpages/advancedsettings.php:114
|
615 |
#: adminpages/advancedsettings.php:186
|
616 |
#: adminpages/advancedsettings.php:188
|
617 |
+
#: adminpages/advancedsettings.php:195
|
618 |
msgid "This message replaces the post content in RSS feeds."
|
619 |
msgstr "Aquest missatge reemplaça el contingut del seu missatge en els canals RSS."
|
620 |
|
621 |
#: adminpages/advancedsettings.php:122
|
622 |
#: adminpages/advancedsettings.php:199
|
623 |
#: adminpages/advancedsettings.php:201
|
624 |
+
#: adminpages/advancedsettings.php:208
|
625 |
msgid "Filter searches and archives?"
|
626 |
msgstr "Filtra recerques i arxius?"
|
627 |
|
628 |
#: adminpages/advancedsettings.php:126
|
629 |
#: adminpages/advancedsettings.php:203
|
630 |
#: adminpages/advancedsettings.php:205
|
631 |
+
#: adminpages/advancedsettings.php:212
|
632 |
msgid "No - Non-members will see restricted posts/pages in searches and archives."
|
633 |
msgstr "No - No subscriptors veuran posts restringits/pàgines en les recerques i els arxius."
|
634 |
|
635 |
#: adminpages/advancedsettings.php:127
|
636 |
#: adminpages/advancedsettings.php:204
|
637 |
#: adminpages/advancedsettings.php:206
|
638 |
+
#: adminpages/advancedsettings.php:213
|
639 |
msgid "Yes - Only members will see restricted posts/pages in searches and archives."
|
640 |
msgstr "Sí - Només els subscriptors veuran posts restringits/pàgines en les recerques i els arxius."
|
641 |
|
644 |
#: adminpages/advancedsettings.php:120
|
645 |
#: adminpages/advancedsettings.php:210
|
646 |
#: adminpages/advancedsettings.php:212
|
647 |
+
#: adminpages/advancedsettings.php:219
|
648 |
msgid "Show Excerpts to Non-Members?"
|
649 |
msgstr "Mostrar extractes als no membres?"
|
650 |
|
653 |
#: adminpages/advancedsettings.php:124
|
654 |
#: adminpages/advancedsettings.php:214
|
655 |
#: adminpages/advancedsettings.php:216
|
656 |
+
#: adminpages/advancedsettings.php:223
|
657 |
msgid "No - Hide excerpts."
|
658 |
msgstr "No - Amaga extractes."
|
659 |
|
662 |
#: adminpages/advancedsettings.php:125
|
663 |
#: adminpages/advancedsettings.php:215
|
664 |
#: adminpages/advancedsettings.php:217
|
665 |
+
#: adminpages/advancedsettings.php:224
|
666 |
msgid "Yes - Show excerpts."
|
667 |
msgstr "Sí - Mostra extractes."
|
668 |
|
669 |
#: adminpages/advancedsettings.php:144
|
670 |
#: adminpages/advancedsettings.php:333
|
671 |
#: adminpages/advancedsettings.php:348
|
672 |
+
#: adminpages/advancedsettings.php:355
|
673 |
msgid "Hide Ads From Members?"
|
674 |
msgstr "Amaga els anuncis als subscriptors?"
|
675 |
|
735 |
#: adminpages/advancedsettings.php:494
|
736 |
#: classes/gateways/class.pmprogateway_stripe.php:404
|
737 |
#: classes/gateways/class.pmprogateway_stripe.php:418
|
738 |
+
#: adminpages/paymentsettings.php:279
|
739 |
+
#: adminpages/advancedsettings.php:254
|
740 |
+
#: adminpages/advancedsettings.php:267
|
741 |
+
#: adminpages/advancedsettings.php:359
|
742 |
+
#: adminpages/advancedsettings.php:418
|
743 |
+
#: adminpages/advancedsettings.php:526
|
744 |
+
#: adminpages/membershiplevels.php:939
|
745 |
+
#: adminpages/paymentsettings.php:277
|
746 |
+
#: classes/gateways/class.pmprogateway_stripe.php:430
|
747 |
+
#: classes/gateways/class.pmprogateway_stripe.php:444
|
748 |
+
#: includes/profile.php:78
|
749 |
msgid "No"
|
750 |
msgstr "No"
|
751 |
|
754 |
#: adminpages/advancedsettings.php:136
|
755 |
#: adminpages/advancedsettings.php:338
|
756 |
#: adminpages/advancedsettings.php:353
|
757 |
+
#: adminpages/advancedsettings.php:360
|
758 |
msgid "Hide Ads From All Members"
|
759 |
msgstr "Amaga Anuncis de tots els subscriptors"
|
760 |
|
763 |
#: adminpages/advancedsettings.php:137
|
764 |
#: adminpages/advancedsettings.php:339
|
765 |
#: adminpages/advancedsettings.php:354
|
766 |
+
#: adminpages/advancedsettings.php:361
|
767 |
msgid "Hide Ads From Certain Members"
|
768 |
msgstr "Amaga els anuncis a certs subscriptors"
|
769 |
|
778 |
#: adminpages/advancedsettings.php:145
|
779 |
#: adminpages/advancedsettings.php:346
|
780 |
#: adminpages/advancedsettings.php:361
|
781 |
+
#: adminpages/advancedsettings.php:368
|
782 |
msgid "To hide ads in your template code, use code like the following"
|
783 |
msgstr "Per amagar els anuncis al codi de la plantilla, utilitzeu el codi següent"
|
784 |
|
787 |
#: adminpages/advancedsettings.php:156
|
788 |
#: adminpages/advancedsettings.php:355
|
789 |
#: adminpages/advancedsettings.php:370
|
790 |
+
#: adminpages/advancedsettings.php:377
|
791 |
msgid "Choose Levels to Hide Ads From"
|
792 |
msgstr "Escull els nivells on amagar els anuncis"
|
793 |
|
806 |
#: adminpages/advancedsettings.php:390
|
807 |
#: adminpages/advancedsettings.php:392
|
808 |
#: adminpages/advancedsettings.php:407
|
809 |
+
#: adminpages/advancedsettings.php:414
|
810 |
msgid "multisite only"
|
811 |
msgstr "només “multisite”"
|
812 |
|
861 |
#: adminpages/advancedsettings.php:412
|
862 |
#: classes/gateways/class.pmprogateway_stripe.php:406
|
863 |
#: classes/gateways/class.pmprogateway_stripe.php:420
|
864 |
+
#: adminpages/paymentsettings.php:280
|
865 |
+
#: adminpages/advancedsettings.php:419
|
866 |
+
#: adminpages/membershiplevels.php:934
|
867 |
+
#: adminpages/paymentsettings.php:278
|
868 |
+
#: classes/gateways/class.pmprogateway_stripe.php:432
|
869 |
+
#: classes/gateways/class.pmprogateway_stripe.php:446
|
870 |
+
#: includes/profile.php:79
|
871 |
msgid "Yes"
|
872 |
msgstr "Sí"
|
873 |
|
876 |
#: adminpages/advancedsettings.php:202
|
877 |
#: adminpages/advancedsettings.php:241
|
878 |
#: adminpages/advancedsettings.php:256
|
879 |
+
#: adminpages/advancedsettings.php:263
|
880 |
msgid "Use reCAPTCHA?"
|
881 |
msgstr "Utilitzar reCAPTCHA?"
|
882 |
|
892 |
#: adminpages/advancedsettings.php:208
|
893 |
#: adminpages/advancedsettings.php:247
|
894 |
#: adminpages/advancedsettings.php:262
|
895 |
+
#: adminpages/advancedsettings.php:269
|
896 |
msgid "Yes - All memberships."
|
897 |
msgstr "Sí - Tots els subscriptors"
|
898 |
|
901 |
#: adminpages/advancedsettings.php:210
|
902 |
#: adminpages/advancedsettings.php:249
|
903 |
#: adminpages/advancedsettings.php:264
|
904 |
+
#: adminpages/advancedsettings.php:271
|
905 |
msgid "A free reCAPTCHA key is required."
|
906 |
msgstr "Una clau reCAPTCHA gratuïta és necessària"
|
907 |
|
910 |
#: adminpages/advancedsettings.php:210
|
911 |
#: adminpages/advancedsettings.php:249
|
912 |
#: adminpages/advancedsettings.php:264
|
913 |
+
#: adminpages/advancedsettings.php:271
|
914 |
msgid "Click here to signup for reCAPTCHA"
|
915 |
msgstr "Clica aquí per a signar per al reCAPTCHA"
|
916 |
|
967 |
#: adminpages/advancedsettings.php:542
|
968 |
#: adminpages/pagesettings.php:508
|
969 |
#: adminpages/pagesettings.php:512
|
970 |
+
#: adminpages/paymentsettings.php:316
|
971 |
+
#: adminpages/advancedsettings.php:574
|
972 |
+
#: adminpages/pagesettings.php:511
|
973 |
+
#: adminpages/paymentsettings.php:314
|
974 |
msgid "Save Settings"
|
975 |
msgstr "Desa la configuració"
|
976 |
|
1046 |
#: adminpages/discountcodes.php:796
|
1047 |
#: adminpages/discountcodes.php:354
|
1048 |
#: adminpages/discountcodes.php:798
|
1049 |
+
#: adminpages/discountcodes.php:799
|
1050 |
msgid "Code not found."
|
1051 |
msgstr "No s’ha trobat el codi."
|
1052 |
|
1069 |
#: adminpages/discountcodes.php:735
|
1070 |
#: adminpages/discountcodes.php:377
|
1071 |
#: adminpages/discountcodes.php:737
|
1072 |
+
#: adminpages/discountcodes.php:738
|
1073 |
msgid "Add New Discount Code"
|
1074 |
msgstr "Afegeix un nou codi de descompte"
|
1075 |
|
1116 |
#: adminpages/discountcodes.php:446
|
1117 |
#: adminpages/discountcodes.php:785
|
1118 |
#: adminpages/orders.php:1331
|
1119 |
+
#: adminpages/orders.php:1332
|
1120 |
+
#: adminpages/reports/login.php:182
|
1121 |
+
#: adminpages/templates/orders-email.php:49
|
1122 |
+
#: adminpages/templates/orders-print.php:78
|
1123 |
+
#: adminpages/membershiplevels.php:345
|
1124 |
+
#: adminpages/membershiplevels.php:805
|
1125 |
msgid "ID"
|
1126 |
msgstr "ID"
|
1127 |
|
1136 |
#: adminpages/orders.php:415
|
1137 |
#: adminpages/orders.php:421
|
1138 |
#: adminpages/discountcodes.php:447
|
1139 |
+
#: adminpages/orders.php:422
|
1140 |
msgid "This will be generated when you save."
|
1141 |
msgstr "Es generarà quan salvis."
|
1142 |
|
1168 |
#: adminpages/discountcodes.php:786
|
1169 |
#: adminpages/orders.php:1332
|
1170 |
#: adminpages/dashboard.php:292
|
1171 |
+
#: adminpages/orders.php:429
|
1172 |
+
#: adminpages/orders.php:1333
|
1173 |
+
#: adminpages/discountcodes.php:787
|
1174 |
+
#: adminpages/orders.php:475
|
1175 |
+
#: adminpages/orders.php:1426
|
1176 |
msgid "Code"
|
1177 |
msgstr "Codi"
|
1178 |
|
1186 |
#: adminpages/discountcodes.php:489
|
1187 |
#: includes/profile.php:501
|
1188 |
#: includes/profile.php:497
|
1189 |
+
#: includes/profile.php:537
|
1190 |
msgid "Start Date"
|
1191 |
msgstr "Data d’inici"
|
1192 |
|
1223 |
#: classes/gateways/class.pmprogateway_stripe.php:1320
|
1224 |
#: classes/gateways/class.pmprogateway_stripe.php:1326
|
1225 |
#: classes/gateways/class.pmprogateway_stripe.php:785
|
1226 |
+
#: pages/billing.php:381
|
1227 |
+
#: classes/gateways/class.pmprogateway_braintree.php:486
|
1228 |
+
#: classes/gateways/class.pmprogateway_stripe.php:893
|
1229 |
msgid "Expiration Date"
|
1230 |
msgstr "Data final (d’expiració)"
|
1231 |
|
1240 |
#: adminpages/discountcodes.php:787
|
1241 |
#: adminpages/discountcodes.php:525
|
1242 |
#: adminpages/discountcodes.php:789
|
1243 |
+
#: adminpages/discountcodes.php:790
|
1244 |
msgid "Uses"
|
1245 |
msgstr "Utilitza"
|
1246 |
|
1274 |
#: adminpages/discountcodes.php:574
|
1275 |
#: adminpages/membershiplevels.php:401
|
1276 |
#: adminpages/discountcodes.php:576
|
1277 |
+
#: adminpages/membershiplevels.php:399
|
1278 |
msgid "Initial Payment"
|
1279 |
msgstr "Pagament inicial"
|
1280 |
|
1290 |
#: adminpages/discountcodes.php:585
|
1291 |
#: adminpages/membershiplevels.php:412
|
1292 |
#: adminpages/discountcodes.php:587
|
1293 |
+
#: adminpages/membershiplevels.php:410
|
1294 |
msgid "The initial amount collected at registration."
|
1295 |
msgstr "El pagament inicial efectuat en el registre"
|
1296 |
|
1306 |
#: adminpages/discountcodes.php:590
|
1307 |
#: adminpages/membershiplevels.php:417
|
1308 |
#: adminpages/discountcodes.php:592
|
1309 |
+
#: adminpages/membershiplevels.php:415
|
1310 |
msgid "Recurring Subscription"
|
1311 |
msgstr "Subscripció recurrent"
|
1312 |
|
1322 |
#: adminpages/discountcodes.php:591
|
1323 |
#: adminpages/membershiplevels.php:418
|
1324 |
#: adminpages/discountcodes.php:593
|
1325 |
+
#: adminpages/membershiplevels.php:416
|
1326 |
msgid "Check if this level has a recurring subscription payment."
|
1327 |
msgstr "Clica si aquest nivell té un pagament de subscripció recurrent"
|
1328 |
|
1337 |
#: adminpages/discountcodes.php:595
|
1338 |
#: adminpages/membershiplevels.php:422
|
1339 |
#: adminpages/discountcodes.php:597
|
1340 |
+
#: adminpages/membershiplevels.php:420
|
1341 |
msgid "Billing Amount"
|
1342 |
msgstr "Total a facturar"
|
1343 |
|
1375 |
#: classes/gateways/class.pmprogateway_stripe.php:2641
|
1376 |
#: classes/gateways/class.pmprogateway_stripe.php:2637
|
1377 |
#: classes/gateways/class.pmprogateway_stripe.php:2639
|
1378 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2635
|
1379 |
+
#: adminpages/discountcodes.php:700
|
1380 |
+
#: adminpages/membershiplevels.php:435
|
1381 |
+
#: adminpages/membershiplevels.php:581
|
1382 |
+
#: classes/gateways/class.pmprogateway_stripe.php:3092
|
1383 |
msgid "Day(s)"
|
1384 |
msgstr "Dia(es)"
|
1385 |
|
1417 |
#: classes/gateways/class.pmprogateway_stripe.php:2643
|
1418 |
#: classes/gateways/class.pmprogateway_stripe.php:2639
|
1419 |
#: classes/gateways/class.pmprogateway_stripe.php:2641
|
1420 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2637
|
1421 |
+
#: adminpages/discountcodes.php:700
|
1422 |
+
#: adminpages/membershiplevels.php:435
|
1423 |
+
#: adminpages/membershiplevels.php:581
|
1424 |
+
#: classes/gateways/class.pmprogateway_stripe.php:3094
|
1425 |
msgid "Month(s)"
|
1426 |
msgstr "Mes(os)"
|
1427 |
|
1459 |
#: classes/gateways/class.pmprogateway_stripe.php:2642
|
1460 |
#: classes/gateways/class.pmprogateway_stripe.php:2638
|
1461 |
#: classes/gateways/class.pmprogateway_stripe.php:2640
|
1462 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2636
|
1463 |
+
#: adminpages/discountcodes.php:700
|
1464 |
+
#: adminpages/membershiplevels.php:435
|
1465 |
+
#: adminpages/membershiplevels.php:581
|
1466 |
+
#: classes/gateways/class.pmprogateway_stripe.php:3093
|
1467 |
msgid "Week(s)"
|
1468 |
msgstr "Setmana(es)"
|
1469 |
|
1501 |
#: classes/gateways/class.pmprogateway_stripe.php:2644
|
1502 |
#: classes/gateways/class.pmprogateway_stripe.php:2640
|
1503 |
#: classes/gateways/class.pmprogateway_stripe.php:2642
|
1504 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2638
|
1505 |
+
#: adminpages/discountcodes.php:700
|
1506 |
+
#: adminpages/membershiplevels.php:435
|
1507 |
+
#: adminpages/membershiplevels.php:581
|
1508 |
+
#: classes/gateways/class.pmprogateway_stripe.php:3095
|
1509 |
msgid "Year(s)"
|
1510 |
msgstr "Any(s)"
|
1511 |
|
1521 |
#: adminpages/discountcodes.php:618
|
1522 |
#: adminpages/membershiplevels.php:446
|
1523 |
#: adminpages/discountcodes.php:620
|
1524 |
+
#: adminpages/membershiplevels.php:444
|
1525 |
msgid "The amount to be billed one cycle after the initial payment."
|
1526 |
msgstr "Total a facturar en un cicle després del pagament inicial"
|
1527 |
|
1537 |
#: adminpages/discountcodes.php:628
|
1538 |
#: adminpages/membershiplevels.php:465
|
1539 |
#: adminpages/discountcodes.php:630
|
1540 |
+
#: adminpages/membershiplevels.php:463
|
1541 |
msgid "Billing Cycle Limit"
|
1542 |
msgstr "Límit de cicle de facturació"
|
1543 |
|
1553 |
#: adminpages/discountcodes.php:632
|
1554 |
#: adminpages/membershiplevels.php:469
|
1555 |
#: adminpages/discountcodes.php:634
|
1556 |
+
#: adminpages/membershiplevels.php:467
|
1557 |
msgid "The <strong>total</strong> number of recurring billing cycles for this level, including the trial period (if applicable) but not including the initial payment. Set to zero if membership is indefinite."
|
1558 |
msgstr "El <strong>total</strong> de cicles de pagament recurrent per a aquest nivell, incloent el període de prova (si s’aplica) però sense incloure el pagament inicial. Deixa-ho a zero si la subscripció és infinita."
|
1559 |
|
1569 |
#: adminpages/discountcodes.php:651
|
1570 |
#: adminpages/membershiplevels.php:488
|
1571 |
#: adminpages/discountcodes.php:653
|
1572 |
+
#: adminpages/discountcodes.php:654
|
1573 |
+
#: adminpages/membershiplevels.php:487
|
1574 |
msgid "Custom Trial"
|
1575 |
msgstr "Prova personalitzada"
|
1576 |
|
1587 |
#: adminpages/discountcodes.php:653
|
1588 |
#: adminpages/membershiplevels.php:490
|
1589 |
#: adminpages/discountcodes.php:655
|
1590 |
+
#: adminpages/discountcodes.php:656
|
1591 |
+
#: adminpages/membershiplevels.php:489
|
1592 |
msgid "Check to add a custom trial period."
|
1593 |
msgstr "Clica per afegir un període de prova personalitzat."
|
1594 |
|
1605 |
#: adminpages/discountcodes.php:661
|
1606 |
#: adminpages/membershiplevels.php:510
|
1607 |
#: adminpages/discountcodes.php:663
|
1608 |
+
#: adminpages/discountcodes.php:664
|
1609 |
msgid "Trial Billing Amount"
|
1610 |
msgstr "Facturació per al període de prova"
|
1611 |
|
1622 |
#: adminpages/discountcodes.php:672
|
1623 |
#: adminpages/membershiplevels.php:521
|
1624 |
#: adminpages/discountcodes.php:674
|
1625 |
+
#: adminpages/discountcodes.php:675
|
1626 |
msgid "for the first"
|
1627 |
msgstr "per al primer"
|
1628 |
|
1639 |
#: adminpages/discountcodes.php:674
|
1640 |
#: adminpages/membershiplevels.php:523
|
1641 |
#: adminpages/discountcodes.php:676
|
1642 |
+
#: adminpages/discountcodes.php:677
|
1643 |
msgid "subscription payments"
|
1644 |
msgstr "pagaments de subscripció"
|
1645 |
|
1657 |
#: adminpages/discountcodes.php:686
|
1658 |
#: adminpages/membershiplevels.php:559
|
1659 |
#: adminpages/discountcodes.php:688
|
1660 |
+
#: adminpages/discountcodes.php:689
|
1661 |
msgid "Membership Expiration"
|
1662 |
msgstr "Venciment de la subscripció"
|
1663 |
|
1674 |
#: adminpages/discountcodes.php:687
|
1675 |
#: adminpages/membershiplevels.php:560
|
1676 |
#: adminpages/discountcodes.php:689
|
1677 |
+
#: adminpages/discountcodes.php:690
|
1678 |
msgid "Check this to set when membership access expires."
|
1679 |
msgstr "Clica per afegir quan expira l’accés del subscriptor"
|
1680 |
|
1693 |
#: adminpages/membershiplevels.php:575
|
1694 |
#: pages/confirmation.php:140
|
1695 |
#: adminpages/discountcodes.php:693
|
1696 |
+
#: adminpages/discountcodes.php:694
|
1697 |
+
#: adminpages/membershiplevels.php:576
|
1698 |
msgid "Expires In"
|
1699 |
msgstr "Expira En"
|
1700 |
|
1711 |
#: adminpages/discountcodes.php:707
|
1712 |
#: adminpages/membershiplevels.php:586
|
1713 |
#: adminpages/discountcodes.php:709
|
1714 |
+
#: adminpages/discountcodes.php:710
|
1715 |
+
#: adminpages/membershiplevels.php:587
|
1716 |
msgid "Set the duration of membership access. Note that the any future payments (recurring subscription, if any) will be cancelled when the membership expires."
|
1717 |
msgstr "Indiqueu la durada de l’accés de subcriptors. Recordeu que qualsevol pagament futur (recurrent de subscripció, si escau) es cancel·larà quan la subscripció caduqui."
|
1718 |
|
1722 |
#: adminpages/discountcodes.php:556
|
1723 |
#: adminpages/discountcodes.php:734
|
1724 |
#: adminpages/discountcodes.php:736
|
1725 |
+
#: adminpages/discountcodes.php:737
|
1726 |
msgid "Memberships Discount Codes"
|
1727 |
msgstr "Codis de descompte per a subscripcions"
|
1728 |
|
1732 |
#: adminpages/discountcodes.php:566
|
1733 |
#: adminpages/discountcodes.php:771
|
1734 |
#: adminpages/discountcodes.php:773
|
1735 |
+
#: adminpages/discountcodes.php:768
|
1736 |
msgid "Search Discount Codes"
|
1737 |
msgstr "Cerca codis de descompte"
|
1738 |
|
1745 |
#: adminpages/reports/login.php:83
|
1746 |
#: adminpages/discountcodes.php:774
|
1747 |
#: adminpages/discountcodes.php:776
|
1748 |
+
#: adminpages/discountcodes.php:771
|
1749 |
msgid "Search"
|
1750 |
msgstr "Cerca"
|
1751 |
|
1755 |
#: adminpages/discountcodes.php:587
|
1756 |
#: adminpages/discountcodes.php:785
|
1757 |
#: adminpages/discountcodes.php:787
|
1758 |
+
#: adminpages/discountcodes.php:788
|
1759 |
msgid "Starts"
|
1760 |
msgstr "Comença"
|
1761 |
|
1784 |
#: adminpages/discountcodes.php:788
|
1785 |
#: includes/profile.php:65
|
1786 |
#: adminpages/dashboard.php:228
|
1787 |
+
#: adminpages/reports/login.php:187
|
1788 |
+
#: adminpages/discountcodes.php:789
|
1789 |
+
#: includes/profile.php:75
|
1790 |
msgid "Expires"
|
1791 |
msgstr "Acaba"
|
1792 |
|
1797 |
#: adminpages/admin_header.php:253
|
1798 |
#: adminpages/discountcodes.php:788
|
1799 |
#: adminpages/discountcodes.php:790
|
1800 |
+
#: adminpages/discountcodes.php:791
|
1801 |
msgid "Levels"
|
1802 |
msgstr "Nivells"
|
1803 |
|
1839 |
#: adminpages/orders.php:1565
|
1840 |
#: adminpages/orders.php:1564
|
1841 |
#: adminpages/orders.php:1556
|
1842 |
+
#: adminpages/orders.php:1557
|
1843 |
+
#: adminpages/orders.php:1726
|
1844 |
msgid "edit"
|
1845 |
msgstr "Edita"
|
1846 |
|
1899 |
#: adminpages/emailsettings.php:70
|
1900 |
#: adminpages/emailsettings.php:61
|
1901 |
#: adminpages/emailsettings.php:88
|
1902 |
+
#: adminpages/emailsettings.php:87
|
1903 |
msgid "By default, system generated emails are sent from <em><strong>wordpress@yourdomain.com</strong></em>. You can update this from address using the fields below."
|
1904 |
msgstr "Per defecte, els correus electrònics generats són enviats desde <em><strong>wordpress@yourdomain.com</strong></em>. Pots modificar-ho utilitzant els camps que hi ha a continuació."
|
1905 |
|
1911 |
#: adminpages/emailsettings.php:78
|
1912 |
#: adminpages/emailsettings.php:69
|
1913 |
#: adminpages/emailsettings.php:94
|
1914 |
+
#: adminpages/emailsettings.php:93
|
1915 |
msgid "From Email"
|
1916 |
msgstr "Del Correu Electrònic"
|
1917 |
|
1918 |
#: adminpages/emailsettings.php:86
|
1919 |
#: adminpages/emailsettings.php:77
|
1920 |
#: adminpages/emailsettings.php:102
|
1921 |
+
#: adminpages/emailsettings.php:101
|
1922 |
msgid "From Name"
|
1923 |
msgstr "Del Nom"
|
1924 |
|
1925 |
#: adminpages/emailsettings.php:94
|
1926 |
#: adminpages/emailsettings.php:110
|
1927 |
+
#: adminpages/emailsettings.php:109
|
1928 |
msgid "Only Filter PMPro Emails?"
|
1929 |
msgstr "Filtra només els correus de PMPro?"
|
1930 |
|
1931 |
#: adminpages/emailsettings.php:98
|
1932 |
#: adminpages/emailsettings.php:114
|
1933 |
+
#: adminpages/emailsettings.php:113
|
1934 |
#, php-format
|
1935 |
msgid "If unchecked, all emails from \"WordPress <%s>\" will be filtered to use the above settings."
|
1936 |
msgstr "Si no està clicat, tots els correus de \"WordPress <%s>\" seran filtrats per utilitzar la configuració de dalt."
|
2099 |
#: adminpages/membershiplevels.php:808
|
2100 |
#: adminpages/reports/history.php:184
|
2101 |
#: adminpages/reports/login.php:181
|
2102 |
+
#: adminpages/reports/login.php:184
|
2103 |
+
#: adminpages/membershiplevels.php:352
|
2104 |
+
#: adminpages/membershiplevels.php:806
|
2105 |
msgid "Name"
|
2106 |
msgstr "Nom"
|
2107 |
|
2109 |
#: adminpages/membershiplevels.php:314
|
2110 |
#: adminpages/membershiplevels.php:316
|
2111 |
#: adminpages/membershiplevels.php:377
|
2112 |
+
#: adminpages/membershiplevels.php:375
|
2113 |
msgid "Confirmation Message"
|
2114 |
msgstr "Missatge de confirmació"
|
2115 |
|
2123 |
#: adminpages/membershiplevels.php:639
|
2124 |
#: adminpages/membershiplevels.php:397
|
2125 |
#: adminpages/membershiplevels.php:809
|
2126 |
+
#: adminpages/membershiplevels.php:395
|
2127 |
+
#: adminpages/membershiplevels.php:807
|
2128 |
msgid "Billing Details"
|
2129 |
msgstr "Detalls de facturació"
|
2130 |
|
2148 |
#: classes/gateways/class.pmprogateway_stripe.php:2700
|
2149 |
#: classes/gateways/class.pmprogateway_stripe.php:2696
|
2150 |
#: classes/gateways/class.pmprogateway_stripe.php:2698
|
2151 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2694
|
2152 |
+
#: adminpages/membershiplevels.php:431
|
2153 |
+
#: classes/gateways/class.pmprogateway_stripe.php:3151
|
2154 |
msgid "per"
|
2155 |
msgstr "per"
|
2156 |
|
2169 |
#: adminpages/discountcodes.php:620
|
2170 |
#: adminpages/membershiplevels.php:448
|
2171 |
#: adminpages/discountcodes.php:622
|
2172 |
+
#: adminpages/membershiplevels.php:446
|
2173 |
msgid "Braintree integration currently only supports billing periods of \"Month\" or \"Year\"."
|
2174 |
msgstr "La integració de Braintree actualment només suporta períodes de facturació de “mes” o “any”."
|
2175 |
|
2187 |
#: adminpages/membershiplevels.php:393
|
2188 |
#: adminpages/membershiplevels.php:396
|
2189 |
#: adminpages/membershiplevels.php:454
|
2190 |
+
#: adminpages/membershiplevels.php:452
|
2191 |
msgid "After saving this level, make note of the ID and create a \"Plan\" in your Braintree dashboard with the same settings and the \"Plan ID\" set to <em>pmpro_#</em>, where # is the level ID."
|
2192 |
msgstr "Després de salvar aquest nivell, anota’t la ID i crea un \"Plan\" al dashboard de Braintree amb la mateixa configuració i el \"Plan ID\" set to <em>pmpro_#</em>, on # és el level ID."
|
2193 |
|
2210 |
#: adminpages/membershiplevels.php:454
|
2211 |
#: adminpages/membershiplevels.php:459
|
2212 |
#: classes/gateways/class.pmprogateway_cybersource.php:89
|
2213 |
+
#: adminpages/membershiplevels.php:452
|
2214 |
+
#: adminpages/membershiplevels.php:457
|
2215 |
msgid "Note"
|
2216 |
msgstr "Nota"
|
2217 |
|
2231 |
#: adminpages/discountcodes.php:634
|
2232 |
#: adminpages/membershiplevels.php:471
|
2233 |
#: adminpages/discountcodes.php:636
|
2234 |
+
#: adminpages/membershiplevels.php:469
|
2235 |
msgid "Stripe integration currently does not support billing limits. You can still set an expiration date below."
|
2236 |
msgstr "La integració d’Stripe no suporta límits de facturació actualment. Pots posar una data de límit de facturació a sota."
|
2237 |
|
2243 |
#: adminpages/discountcodes.php:655
|
2244 |
#: adminpages/membershiplevels.php:493
|
2245 |
#: adminpages/discountcodes.php:657
|
2246 |
+
#: adminpages/discountcodes.php:658
|
2247 |
+
#: adminpages/membershiplevels.php:492
|
2248 |
msgid "2Checkout integration does not support custom trials. You can do one period trials by setting an initial payment different from the billing amount."
|
2249 |
msgstr "La integració de 2Checkout no suporta proves personalitzades. Pots afegir un període de prova configurant un pagament inicial diferent del total de facturació."
|
2250 |
|
2257 |
#: adminpages/discountcodes.php:676
|
2258 |
#: adminpages/membershiplevels.php:525
|
2259 |
#: adminpages/discountcodes.php:678
|
2260 |
+
#: adminpages/discountcodes.php:679
|
2261 |
msgid "Stripe integration currently does not support trial amounts greater than $0."
|
2262 |
msgstr "La integració d’Stripe no suporta preus de prova majors que $0."
|
2263 |
|
2270 |
#: adminpages/discountcodes.php:678
|
2271 |
#: adminpages/membershiplevels.php:527
|
2272 |
#: adminpages/discountcodes.php:680
|
2273 |
+
#: adminpages/discountcodes.php:681
|
2274 |
msgid "Braintree integration currently does not support trial amounts greater than $0."
|
2275 |
msgstr "La integració de Braintree no suporta preus de prova majors que $0."
|
2276 |
|
2283 |
#: adminpages/discountcodes.php:680
|
2284 |
#: adminpages/membershiplevels.php:529
|
2285 |
#: adminpages/discountcodes.php:682
|
2286 |
+
#: adminpages/discountcodes.php:683
|
2287 |
msgid "Payflow integration currently does not support trial amounts greater than $0."
|
2288 |
msgstr "La integració de Payflow no suporta preus de prova majors que $0."
|
2289 |
|
2298 |
#: adminpages/dashboard.php:140
|
2299 |
#: adminpages/membershiplevels.php:550
|
2300 |
#: adminpages/advancedsettings.php:343
|
2301 |
+
#: adminpages/advancedsettings.php:350
|
2302 |
msgid "Other Settings"
|
2303 |
msgstr "Configuració, altres"
|
2304 |
|
2334 |
#: adminpages/advancedsettings.php:194
|
2335 |
#: adminpages/membershiplevels.php:624
|
2336 |
#: adminpages/advancedsettings.php:196
|
2337 |
+
#: adminpages/advancedsettings.php:203
|
2338 |
+
#: adminpages/membershiplevels.php:625
|
2339 |
msgid "Content Settings"
|
2340 |
msgstr "Configuració de continguts"
|
2341 |
|
2347 |
#: adminpages/membershiplevels.php:497
|
2348 |
#: adminpages/membershiplevels.php:500
|
2349 |
#: adminpages/membershiplevels.php:654
|
2350 |
+
#: adminpages/membershiplevels.php:655
|
2351 |
msgid "Categories"
|
2352 |
msgstr "Categories"
|
2353 |
|
2354 |
#: adminpages/membershiplevels.php:516
|
2355 |
#: adminpages/membershiplevels.php:517
|
2356 |
#: adminpages/membershiplevels.php:674
|
2357 |
+
#: adminpages/membershiplevels.php:675
|
2358 |
msgid "Save Level"
|
2359 |
msgstr "Salva nivell"
|
2360 |
|
2389 |
#: includes/profile.php:918
|
2390 |
#: adminpages/orders.php:960
|
2391 |
#: pages/billing.php:436
|
2392 |
+
#: adminpages/discountcodes.php:729
|
2393 |
+
#: adminpages/orders.php:961
|
2394 |
+
#: pages/billing.php:443
|
2395 |
+
#: adminpages/discountcodes.php:730
|
2396 |
+
#: adminpages/membershiplevels.php:676
|
2397 |
+
#: adminpages/orders.php:1044
|
2398 |
+
#: includes/profile.php:834
|
2399 |
+
#: includes/profile.php:958
|
2400 |
msgid "Cancel"
|
2401 |
msgstr "Cancel·la"
|
2402 |
|
2437 |
#: adminpages/membershiplevels.php:579
|
2438 |
#: adminpages/membershiplevels.php:631
|
2439 |
#: adminpages/membershiplevels.php:797
|
2440 |
+
#: adminpages/membershiplevels.php:795
|
2441 |
msgid "Drag and drop membership levels to reorder them on the Levels page."
|
2442 |
msgstr "Arrossega i deixa anar els nivells de subscripció per a reordenar-los a la pàgina de nivells"
|
2443 |
|
2462 |
#: pages/confirmation.php:99
|
2463 |
#: pages/invoice.php:89
|
2464 |
#: shortcodes/pmpro_account.php:44
|
2465 |
+
#: pages/billing.php:102
|
2466 |
+
#: adminpages/membershiplevels.php:808
|
2467 |
+
#: adminpages/orders.php:838
|
2468 |
msgid "Expiration"
|
2469 |
msgstr "Data final (d’expiració)"
|
2470 |
|
2477 |
#: adminpages/membershiplevels.php:587
|
2478 |
#: adminpages/membershiplevels.php:641
|
2479 |
#: adminpages/membershiplevels.php:811
|
2480 |
+
#: adminpages/membershiplevels.php:809
|
2481 |
msgid "Allow Signups"
|
2482 |
msgstr "Permet nous “signups”"
|
2483 |
|
2491 |
#: adminpages/membershiplevels.php:656
|
2492 |
#: adminpages/membershiplevels.php:840
|
2493 |
#: adminpages/membershiplevels.php:921
|
2494 |
+
#: adminpages/membershiplevels.php:919
|
2495 |
msgid "FREE"
|
2496 |
msgstr "GRATUÏT"
|
2497 |
|
2505 |
#: adminpages/membershiplevels.php:665
|
2506 |
#: adminpages/membershiplevels.php:849
|
2507 |
#: adminpages/membershiplevels.php:930
|
2508 |
+
#: adminpages/membershiplevels.php:928
|
2509 |
msgid "After"
|
2510 |
msgstr "Després"
|
2511 |
|
2551 |
#: includes/adminpages.php:149
|
2552 |
#: includes/adminpages.php:153
|
2553 |
#: adminpages/memberslist.php:20
|
2554 |
+
#: adminpages/memberslist.php:21
|
2555 |
msgid "Members List"
|
2556 |
msgstr "Llistat de subscriptors"
|
2557 |
|
2564 |
#: adminpages/orders.php:994
|
2565 |
#: adminpages/orders.php:1000
|
2566 |
#: adminpages/orders.php:992
|
2567 |
+
#: adminpages/orders.php:993
|
2568 |
+
#: adminpages/memberslist.php:22
|
2569 |
+
#: adminpages/orders.php:1076
|
2570 |
msgid "Export to CSV"
|
2571 |
msgstr "Exporta a CSV"
|
2572 |
|
2594 |
#: adminpages/orders.php:1012
|
2595 |
#: adminpages/reports/sales.php:311
|
2596 |
#: classes/class-pmpro-members-list-table.php:651
|
2597 |
+
#: adminpages/orders.php:1013
|
2598 |
+
#: classes/class-pmpro-members-list-table.php:657
|
2599 |
+
#: adminpages/orders.php:1101
|
2600 |
+
#: adminpages/reports/memberships.php:330
|
2601 |
msgid "Show"
|
2602 |
msgstr "Mostra"
|
2603 |
|
2624 |
#: classes/class.pmproemail.php:195
|
2625 |
#: classes/class.pmproemail.php:235
|
2626 |
#: classes/class-pmpro-members-list-table.php:653
|
2627 |
+
#: adminpages/reports/login.php:106
|
2628 |
+
#: classes/class-pmpro-members-list-table.php:659
|
2629 |
+
#: adminpages/reports/login.php:112
|
2630 |
+
#: adminpages/reports/memberships.php:354
|
2631 |
msgid "All Levels"
|
2632 |
msgstr "Tots els nivells"
|
2633 |
|
2637 |
#: classes/class-pmpro-members-list-table.php:234
|
2638 |
#: classes/class-pmpro-members-list-table.php:634
|
2639 |
#: classes/class-pmpro-members-list-table.php:663
|
2640 |
+
#: classes/class-pmpro-members-list-table.php:669
|
2641 |
msgid "Cancelled Members"
|
2642 |
msgstr "Subscriptors cancel·lats"
|
2643 |
|
2647 |
#: classes/class-pmpro-members-list-table.php:235
|
2648 |
#: classes/class-pmpro-members-list-table.php:635
|
2649 |
#: classes/class-pmpro-members-list-table.php:664
|
2650 |
+
#: classes/class-pmpro-members-list-table.php:670
|
2651 |
msgid "Expired Members"
|
2652 |
msgstr "Subscriptors “expirats”"
|
2653 |
|
2658 |
#: classes/class-pmpro-members-list-table.php:236
|
2659 |
#: classes/class-pmpro-members-list-table.php:636
|
2660 |
#: classes/class-pmpro-members-list-table.php:665
|
2661 |
+
#: classes/class-pmpro-members-list-table.php:671
|
2662 |
msgid "Old Members"
|
2663 |
msgstr "Subscriptors antics"
|
2664 |
|
2670 |
#: adminpages/memberslist.php:28
|
2671 |
#: adminpages/reports/history.php:115
|
2672 |
#: adminpages/reports/history.php:119
|
2673 |
+
#: adminpages/reports/login.php:127
|
2674 |
+
#: adminpages/memberslist.php:27
|
2675 |
+
#: adminpages/reports/login.php:106
|
2676 |
msgid "Search Members"
|
2677 |
msgstr "Cerca Subscriptors"
|
2678 |
|
2710 |
#: adminpages/dashboard.php:223
|
2711 |
#: adminpages/dashboard.php:225
|
2712 |
#: classes/class.memberorder.php:1003
|
2713 |
+
#: adminpages/reports/login.php:183
|
2714 |
+
#: adminpages/emailtemplates.php:122
|
2715 |
+
#: classes/class.memberorder.php:1012
|
2716 |
msgid "Username"
|
2717 |
msgstr "Nom d’usuari"
|
2718 |
|
2755 |
#: pages/checkout.php:230
|
2756 |
#: pages/confirmation.php:78
|
2757 |
#: pages/invoice.php:68
|
2758 |
+
#: pages/billing.php:162
|
2759 |
+
#: adminpages/orders.php:568
|
2760 |
msgid "Billing Address"
|
2761 |
msgstr "Adreça de Facturació"
|
2762 |
|
2792 |
#: adminpages/reports/login.php:183
|
2793 |
#: adminpages/dashboard.php:225
|
2794 |
#: adminpages/dashboard.php:227
|
2795 |
+
#: adminpages/reports/login.php:186
|
2796 |
msgid "Joined"
|
2797 |
msgstr "Afegit"
|
2798 |
|
2816 |
#: adminpages/dashboard.php:232
|
2817 |
#: classes/class-pmpro-members-list-table.php:225
|
2818 |
#: adminpages/dashboard.php:234
|
2819 |
+
#: adminpages/reports/login.php:266
|
2820 |
msgid "No members found."
|
2821 |
msgstr "No s’han trobat subscriptors"
|
2822 |
|
2831 |
#: adminpages/reports/login.php:263
|
2832 |
#: classes/class-pmpro-members-list-table.php:228
|
2833 |
#: classes/class-pmpro-members-list-table.php:227
|
2834 |
+
#: adminpages/reports/login.php:266
|
2835 |
msgid "Search all levels"
|
2836 |
msgstr "Cerca a tots els nivells"
|
2837 |
|
2858 |
#: adminpages/orders.php:72
|
2859 |
#: adminpages/orders.php:164
|
2860 |
#: adminpages/orders.php:170
|
2861 |
+
#: adminpages/orders.php:171
|
2862 |
msgid "Error deleting order."
|
2863 |
msgstr "Error esborrant comanda."
|
2864 |
|
2867 |
#: adminpages/orders.php:169
|
2868 |
#: adminpages/orders.php:309
|
2869 |
#: adminpages/orders.php:315
|
2870 |
+
#: adminpages/orders.php:316
|
2871 |
+
#: adminpages/orders.php:342
|
2872 |
msgid "Order saved successfully."
|
2873 |
msgstr "Comanda salvada correctament."
|
2874 |
|
2883 |
#: adminpages/orders.php:180
|
2884 |
#: adminpages/orders.php:312
|
2885 |
#: adminpages/orders.php:318
|
2886 |
+
#: adminpages/orders.php:319
|
2887 |
+
#: adminpages/orders.php:345
|
2888 |
msgid "Error saving order."
|
2889 |
msgstr "Error guardant la comanda."
|
2890 |
|
2897 |
#: classes/class.memberorder.php:963
|
2898 |
#: adminpages/orders.php:389
|
2899 |
#: classes/class.memberorder.php:1005
|
2900 |
+
#: adminpages/orders.php:390
|
2901 |
+
#: classes/class.memberorder.php:1014
|
2902 |
msgid "Order"
|
2903 |
msgstr "Comanda"
|
2904 |
|
2908 |
#: adminpages/orders.php:348
|
2909 |
#: adminpages/orders.php:387
|
2910 |
#: adminpages/orders.php:393
|
2911 |
+
#: adminpages/orders.p
|