Paid Memberships Pro - Version 1.8.11

Version Description

  • BUG: Fixed URL used when checking for addon updates.
  • BUG: Now enqueueing the jquery.creditCardValidator.js file in Billing preheader.
  • BUG: Fixed issues where PayPal IPN updates would sometimes log $0 instead of the actual billing amount.
  • BUG: Fixed warnings in the PayPal IPN handler.
  • BUG/ENHANCEMENT: Added pmpro_checkout_level filter and now using that filter to apply the_content filters to the level description at checkout. This allows you to turn off the the_content filters (e.g. processing shortcodes) by using remove_filter('pmpro_checkout_level', 'pmpro_pmpro_checkout_level'); in a custom plugin.
  • BUG/ENHANCEMENT: Using the pmpro_confirmation_message filter on the confirmation page whether there is an invoice or not. Now also adding the the_content filters to the confirmation message. You can disable this by using remove_filter('pmpro_confirmation_message', 'pmpro_pmpro_confirmation_message'); in a custom plugin.
  • ENHANCEMENT: Now tracking IPN event ids in order notes for recurring orders.
  • ENHANCEMENT: Added pmpro_subscription_ipn_event_processed hook to IPN handler.
  • ENHANCEMENT: Added pmpro_set_message filter to edit PMPro error messages. Passes the message and type.
  • ENHANCEMENT: Now listing categories in hierarchical format in the Content Settings section of Membership Levels.
  • ENHANCEMENT: Added pmpro_areLevelsFree() function to check if all levels in an array of levels are free.
  • ENHANCEMENT: Added pmpro_getLevelsCost() - with an s - function to get the combined cost of multiple levels in an array.
  • ENHANCEMENT: Added pmpro_getLevelsExpiration() - with an s - function to get the combined expiration text for multiple levels in array.
  • ENHANCEMENT: Created the pmpro_getLevelAtCheckout function that modularizes some of the logic of creating the pmpro_level global at checkout.
  • ENHANCEMENT: Added pmpro_members_list_user filter used on the admin members list and members list CSV export.
  • ENHANCEMENT: Added a 4th parameter $cancel_level to pmpro_changeMembershipLevel(). If set, that level will definitely be cancelled locally and at the gateway. This parameter is also passed to the pmpro_before_change_membership_level and pmpro_after_change_membership_level hook.
  • ENHANCEMENT: Added a new function pmpro_cancelMembershipLevel($level_id, $user_id, $old_level_status) that acts as a wrapper to pass the $cancel_level param to pmpro_changeMembershipLevel().
  • ENHANCEMENT: Updated the cancel page on the frontend to support the Multiple Memberships per User addon. All memberships are shown. You can cancel individual memberships separately. The language of the confirm button mentions memberships vs account.
  • ENHANCEMENT: Added pmpro_getMemberOrdersByCheckoutID($checkout_id) function to support Multiple Memberships per User and others using the checkout_id.
  • ENHANCEMENT: Added a refund($order, $transaction_id) method to the PMPro_stripe class. This will be used by the Multiple Memberships per User addon and eventually used in other areas by the core pluginn.
Download this release

Release Info

Developer strangerstudios
Plugin Icon 128x128 Paid Memberships Pro
Version 1.8.11
Comparing to
See all releases

Code changes from version 1.8.10.4 to 1.8.11

adminpages/functions.php CHANGED
@@ -38,8 +38,8 @@ function pmpro_checkLevelForStripeCompatibility($level = NULL)
38
foreach($levels as $level)
39
{
40
/*
41
- Stripe currently does not support:
42
- * Billing Limits.
43
*/
44
if($level->billing_limit > 0)
45
{
@@ -52,7 +52,7 @@ function pmpro_checkLevelForStripeCompatibility($level = NULL)
52
{
53
//need to look it up?
54
if(is_numeric($level))
55
- $level = $wpdb->get_row("SELECT * FROM $wpdb->pmpro_membership_levels WHERE id = '" . esc_sql($level) . "' LIMIT 1");
56
57
//check this level
58
if($level->billing_limit > 0)
@@ -102,7 +102,7 @@ function pmpro_checkLevelForPayflowCompatibility($level = NULL)
102
{
103
//need to look it up?
104
if(is_numeric($level))
105
- $level = $wpdb->get_row("SELECT * FROM $wpdb->pmpro_membership_levels WHERE id = '" . esc_sql($level) . "' LIMIT 1");
106
107
//check this level
108
if($level->trial_amount > 0 ||
@@ -153,7 +153,7 @@ function pmpro_checkLevelForBraintreeCompatibility($level = NULL)
153
{
154
//need to look it up?
155
if(is_numeric($level))
156
- $level = $wpdb->get_row("SELECT * FROM $wpdb->pmpro_membership_levels WHERE id = '" . esc_sql($level) . "' LIMIT 1");
157
158
//check this level
159
if($level->trial_amount > 0 ||
@@ -201,7 +201,7 @@ function pmpro_checkLevelForTwoCheckoutCompatibility($level = NULL)
201
{
202
//need to look it up?
203
if(is_numeric($level))
204
- $level = $wpdb->get_row("SELECT * FROM $wpdb->pmpro_membership_levels WHERE id = '" . esc_sql($level) . "' LIMIT 1");
205
206
//check this level
207
if(pmpro_isLevelTrial($level))
@@ -252,4 +252,4 @@ function pmpro_getClassesForPaymentSettingsField($field, $force = false)
252
253
//return space separated string
254
return implode(" ", $rgateways);
255
- }
38
foreach($levels as $level)
39
{
40
/*
41
+ Stripe currently does not support:
42
+ * Billing Limits.
43
*/
44
if($level->billing_limit > 0)
45
{
52
{
53
//need to look it up?
54
if(is_numeric($level))
55
+ $level = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->pmpro_membership_levels WHERE id = %d LIMIT 1" ), $level );
56
57
//check this level
58
if($level->billing_limit > 0)
102
{
103
//need to look it up?
104
if(is_numeric($level))
105
+ $level = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->pmpro_membership_levels WHERE id = %d LIMIT 1" ), $level );
106
107
//check this level
108
if($level->trial_amount > 0 ||
153
{
154
//need to look it up?
155
if(is_numeric($level))
156
+ $level = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->pmpro_membership_levels WHERE id = %d LIMIT 1" ), $level );
157
158
//check this level
159
if($level->trial_amount > 0 ||
201
{
202
//need to look it up?
203
if(is_numeric($level))
204
+ $level = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->pmpro_membership_levels WHERE id = %d LIMIT 1" ), $level );
205
206
//check this level
207
if(pmpro_isLevelTrial($level))
252
253
//return space separated string
254
return implode(" ", $rgateways);
255
+ }
adminpages/membershiplevels.php CHANGED
@@ -495,20 +495,10 @@
495
<h3 class="topborder"><?php _e('Content Settings', 'pmpro');?></h3>
496
<table class="form-table">
497
<tbody>
498
- <tr>
499
<th scope="row" valign="top"><label><?php _e('Categories', 'pmpro');?>:</label></th>
500
<td>
501
- <?php
502
- $categories = get_categories( array( 'hide_empty' => 0 ) );
503
- echo "<ul>";
504
- foreach ( $categories as $cat )
505
- {
506
- $checked = in_array( $cat->term_id, $level->categories ) ? "checked='checked'" : '';
507
- $catclass = empty( $cat->category_parent ) ? '' : 'membershipcategory_hasparent';
508
- echo "<li class='membershipcategory $catclass'><input id='membershipcategory_{$cat->term_id}' name='membershipcategory_{$cat->term_id}' type='checkbox' value='yes' $checked /> <label for='membershipcategory_{$cat->term_id}'>{$cat->name}</label></li>\n";
509
- }
510
- echo "</ul>";
511
- ?>
512
</td>
513
</tr>
514
</tbody>
495
<h3 class="topborder"><?php _e('Content Settings', 'pmpro');?></h3>
496
<table class="form-table">
497
<tbody>
498
+ <tr class="membership_categories">
499
<th scope="row" valign="top"><label><?php _e('Categories', 'pmpro');?>:</label></th>
500
<td>
501
+ <?php pmpro_listCategories(0, $level->categories); ?>
502
</td>
503
</tr>
504
</tbody>
adminpages/memberslist.php CHANGED
@@ -186,6 +186,7 @@
186
$count = 0;
187
foreach($theusers as $auser)
188
{
189
//get meta
190
$theuser = get_userdata($auser->ID);
191
?>
186
$count = 0;
187
foreach($theusers as $auser)
188
{
189
+ $auser = apply_filters("pmpro_members_list_user", $auser);
190
//get meta
191
$theuser = get_userdata($auser->ID);
192
?>
classes/class.memberorder.php CHANGED
@@ -39,7 +39,6 @@
39
$order->subtotal = "";
40
$order->tax = "";
41
$order->couponamount = "";
42
- $order->checkout_id = "";
43
$order->total = "";
44
$order->payment_type = "";
45
$order->cardtype = "";
@@ -54,6 +53,7 @@
54
$order->affiliate_id = "";
55
$order->affiliate_subid = "";
56
$order->notes = "";
57
58
$order->billing = new stdClass();
59
$order->billing->name = "";
@@ -117,7 +117,6 @@
117
$this->subtotal = $dbobj->subtotal;
118
$this->tax = $dbobj->tax;
119
$this->couponamount = $dbobj->couponamount;
120
- $this->checkout_id = $dbobj->checkout_id;
121
$this->certificate_id = $dbobj->certificate_id;
122
$this->certificateamount = $dbobj->certificateamount;
123
$this->total = $dbobj->total;
@@ -141,6 +140,7 @@
141
$this->affiliate_subid = $dbobj->affiliate_subid;
142
143
$this->notes = $dbobj->notes;
144
145
//reset the gateway
146
if(empty($this->nogateway))
@@ -444,7 +444,7 @@
444
*/
445
function saveOrder()
446
{
447
- global $current_user, $wpdb;
448
449
//get a random code to use for the public ID
450
if(empty($this->code))
@@ -523,6 +523,12 @@
523
524
if(empty($this->notes))
525
$this->notes = "";
526
527
//build query
528
if(!empty($this->id))
@@ -563,7 +569,8 @@
563
`timestamp` = '" . esc_sql($this->datetime) . "',
564
`affiliate_id` = '" . esc_sql($this->affiliate_id) . "',
565
`affiliate_subid` = '" . esc_sql($this->affiliate_subid) . "',
566
- `notes` = '" . esc_sql($this->notes) . "'
567
WHERE id = '" . $this->id . "'
568
LIMIT 1";
569
}
@@ -574,7 +581,7 @@
574
$after_action = "pmpro_added_order";
575
//insert
576
$this->sqlQuery = "INSERT INTO $wpdb->pmpro_membership_orders
577
- (`code`, `session_id`, `user_id`, `membership_id`, `paypal_token`, `billing_name`, `billing_street`, `billing_city`, `billing_state`, `billing_zip`, `billing_country`, `billing_phone`, `subtotal`, `tax`, `couponamount`, `certificate_id`, `certificateamount`, `total`, `payment_type`, `cardtype`, `accountnumber`, `expirationmonth`, `expirationyear`, `status`, `gateway`, `gateway_environment`, `payment_transaction_id`, `subscription_transaction_id`, `timestamp`, `affiliate_id`, `affiliate_subid`, `notes`)
578
VALUES('" . $this->code . "',
579
'" . session_id() . "',
580
" . intval($this->user_id) . ",
@@ -606,7 +613,8 @@
606
'" . esc_sql($this->datetime) . "',
607
'" . esc_sql($this->affiliate_id) . "',
608
'" . esc_sql($this->affiliate_subid) . "',
609
- '" . esc_sql($this->notes) . "'
610
)";
611
}
612
39
$order->subtotal = "";
40
$order->tax = "";
41
$order->couponamount = "";
42
$order->total = "";
43
$order->payment_type = "";
44
$order->cardtype = "";
53
$order->affiliate_id = "";
54
$order->affiliate_subid = "";
55
$order->notes = "";
56
+ $order->checkout_id = 0;
57
58
$order->billing = new stdClass();
59
$order->billing->name = "";
117
$this->subtotal = $dbobj->subtotal;
118
$this->tax = $dbobj->tax;
119
$this->couponamount = $dbobj->couponamount;
120
$this->certificate_id = $dbobj->certificate_id;
121
$this->certificateamount = $dbobj->certificateamount;
122
$this->total = $dbobj->total;
140
$this->affiliate_subid = $dbobj->affiliate_subid;
141
142
$this->notes = $dbobj->notes;
143
+ $this->checkout_id = $dbobj->checkout_id;
144
145
//reset the gateway
146
if(empty($this->nogateway))
444
*/
445
function saveOrder()
446
{
447
+ global $current_user, $wpdb, $pmpro_checkout_id;
448
449
//get a random code to use for the public ID
450
if(empty($this->code))
523
524
if(empty($this->notes))
525
$this->notes = "";
526
+
527
+ if(empty($this->checkout_id) || intval($this->checkout_id)<1) {
528
+ $highestval = $wpdb->get_var("SELECT MAX(checkout_id) FROM $wpdb->pmpro_membership_orders");
529
+ $this->checkout_id = intval($highestval)+1;
530
+ $pmpro_checkout_id = $this->checkout_id;
531
+ }
532
533
//build query
534
if(!empty($this->id))
569
`timestamp` = '" . esc_sql($this->datetime) . "',
570
`affiliate_id` = '" . esc_sql($this->affiliate_id) . "',
571
`affiliate_subid` = '" . esc_sql($this->affiliate_subid) . "',
572
+ `notes` = '" . esc_sql($this->notes) . "',
573
+ `checkout_id` = " . intval($this->checkout_id) . "
574
WHERE id = '" . $this->id . "'
575
LIMIT 1";
576
}
581
$after_action = "pmpro_added_order";
582
//insert
583
$this->sqlQuery = "INSERT INTO $wpdb->pmpro_membership_orders
584
+ (`code`, `session_id`, `user_id`, `membership_id`, `paypal_token`, `billing_name`, `billing_street`, `billing_city`, `billing_state`, `billing_zip`, `billing_country`, `billing_phone`, `subtotal`, `tax`, `couponamount`, `certificate_id`, `certificateamount`, `total`, `payment_type`, `cardtype`, `accountnumber`, `expirationmonth`, `expirationyear`, `status`, `gateway`, `gateway_environment`, `payment_transaction_id`, `subscription_transaction_id`, `timestamp`, `affiliate_id`, `affiliate_subid`, `notes`, `checkout_id`)
585
VALUES('" . $this->code . "',
586
'" . session_id() . "',
587
" . intval($this->user_id) . ",
613
'" . esc_sql($this->datetime) . "',
614
'" . esc_sql($this->affiliate_id) . "',
615
'" . esc_sql($this->affiliate_subid) . "',
616
+ '" . esc_sql($this->notes) . "',
617
+ " . intval($this->checkout_id) . "
618
)";
619
}
620
classes/class.pmproemail.php CHANGED
@@ -121,9 +121,9 @@
121
}
122
}
123
124
- function sendCancelEmail($user = NULL)
125
{
126
- global $current_user;
127
if(!$user)
128
$user = $current_user;
129
@@ -134,11 +134,21 @@
134
$this->subject = sprintf(__("Your membership at %s has been CANCELLED", "pmpro"), get_option("blogname"));
135
$this->template = "cancel";
136
$this->data = array("name" => $user->display_name, "user_login" => $user->user_login, "sitename" => get_option("blogname"), "siteemail" => pmpro_getOption("from_email"));
137
138
return $this->sendEmail();
139
}
140
141
- function sendCancelAdminEmail($user = NULL, $old_level_id)
142
{
143
global $wpdb, $current_user;
144
if(!$user)
@@ -156,21 +166,31 @@
156
$this->subject = sprintf(__("Membership for %s at %s has been CANCELLED", "pmpro"), $user->user_login, get_option("blogname"));
157
$this->template = "cancel_admin";
158
$this->data = array("user_login" => $user->user_login, "user_email" => $user->user_email, "display_name" => $user->display_name, "sitename" => get_option("blogname"), "siteemail" => pmpro_getOption("from_email"), "login_link" => wp_login_url());
159
- $this->data['membership_id'] = $old_level_id;
160
- $this->data['membership_level_name'] = $wpdb->get_var("SELECT name FROM $wpdb->pmpro_membership_levels WHERE id = '" . $old_level_id . "' LIMIT 1");
161
162
- //start and end date
163
- $startdate = $wpdb->get_var("SELECT UNIX_TIMESTAMP(startdate) as startdate FROM $wpdb->pmpro_memberships_users WHERE user_id = '" . $user->ID . "' AND membership_id = '" . $old_level_id . "' AND status IN('inactive', 'cancelled', 'admin_cancelled') ORDER BY id DESC");
164
- if(!empty($startdate))
165
- $this->data['startdate'] = date_i18n(get_option('date_format'), $startdate);
166
- else
167
- $this->data['startdate'] = "";
168
- $enddate = $wpdb->get_var("SELECT UNIX_TIMESTAMP(enddate) as enddate FROM $wpdb->pmpro_memberships_users WHERE user_id = '" . $user->ID . "' AND membership_id = '" . $old_level_id . "' AND status IN('inactive', 'cancelled', 'admin_cancelled') ORDER BY id DESC");
169
- if(!empty($enddate))
170
- $this->data['enddate'] = date_i18n(get_option('date_format'), $enddate);
171
- else
172
- $this->data['enddate'] = "";
173
-
174
return $this->sendEmail();
175
}
176
121
}
122
}
123
124
+ function sendCancelEmail($user = NULL, $old_level_id = NULL)
125
{
126
+ global $wpdb, $current_user;
127
if(!$user)
128
$user = $current_user;
129
134
$this->subject = sprintf(__("Your membership at %s has been CANCELLED", "pmpro"), get_option("blogname"));
135
$this->template = "cancel";
136
$this->data = array("name" => $user->display_name, "user_login" => $user->user_login, "sitename" => get_option("blogname"), "siteemail" => pmpro_getOption("from_email"));
137
+
138
+ if(!empty($old_level_id)) {
139
+ if(!is_array($old_level_id))
140
+ $old_level_id = array($old_level_id);
141
+ $this->data['membership_id'] = $old_level_id[0]; //pass just the first as the level id
142
+ $this->data['membership_level_name'] = pmpro_implodeToEnglish($wpdb->get_col("SELECT name FROM $wpdb->pmpro_membership_levels WHERE id IN('" . implode("','", $old_level_id) . "')"));
143
+ } else {
144
+ $this->data['membership_id'] = '';
145
+ $this->data['membership_level_name'] = __('All Levels', 'pmpro');
146
+ }
147
148
return $this->sendEmail();
149
}
150
151
+ function sendCancelAdminEmail($user = NULL, $old_level_id = NULL)
152
{
153
global $wpdb, $current_user;
154
if(!$user)
166
$this->subject = sprintf(__("Membership for %s at %s has been CANCELLED", "pmpro"), $user->user_login, get_option("blogname"));
167
$this->template = "cancel_admin";
168
$this->data = array("user_login" => $user->user_login, "user_email" => $user->user_email, "display_name" => $user->display_name, "sitename" => get_option("blogname"), "siteemail" => pmpro_getOption("from_email"), "login_link" => wp_login_url());
169
170
+ if(!empty($old_level_id)) {
171
+ if(!is_array($old_level_id))
172
+ $old_level_id = array($old_level_id);
173
+ $this->data['membership_id'] = $old_level_id[0]; //pass just the first as the level id
174
+ $this->data['membership_level_name'] = pmpro_implodeToEnglish($wpdb->get_col("SELECT name FROM $wpdb->pmpro_membership_levels WHERE id IN('" . implode("','", $old_level_id) . "')"));
175
+
176
+ //start and end date
177
+ $startdate = $wpdb->get_var("SELECT UNIX_TIMESTAMP(startdate) as startdate FROM $wpdb->pmpro_memberships_users WHERE user_id = '" . $user->ID . "' AND membership_id = '" . $old_level_id[0] . "' AND status IN('inactive', 'cancelled', 'admin_cancelled') ORDER BY id DESC");
178
+ if(!empty($startdate))
179
+ $this->data['startdate'] = date_i18n(get_option('date_format'), $startdate);
180
+ else
181
+ $this->data['startdate'] = "";
182
+ $enddate = $wpdb->get_var("SELECT UNIX_TIMESTAMP(enddate) as enddate FROM $wpdb->pmpro_memberships_users WHERE user_id = '" . $user->ID . "' AND membership_id = '" . $old_level_id[0] . "' AND status IN('inactive', 'cancelled', 'admin_cancelled') ORDER BY id DESC");
183
+ if(!empty($enddate))
184
+ $this->data['enddate'] = date_i18n(get_option('date_format'), $enddate);
185
+ else
186
+ $this->data['enddate'] = "";
187
+ } else {
188
+ $this->data['membership_id'] = '';
189
+ $this->data['membership_level_name'] = __('All Levels', 'pmpro');
190
+ $this->data['startdate'] = '';
191
+ $this->data['enddate'] = '';
192
+ }
193
+
194
return $this->sendEmail();
195
}
196
classes/gateways/class.pmprogateway_stripe.php CHANGED
@@ -251,6 +251,8 @@
251
252
pmpro_require_billing = true;
253
254
jQuery(document).ready(function() {
255
jQuery("#pmpro_form, .pmpro_form").submit(function(event) {
256
@@ -286,8 +288,11 @@
286
if (jQuery('#bfirstname').length && jQuery('#blastname').length)
287
args['name'] = jQuery.trim(jQuery('#bfirstname').val() + ' ' + jQuery('#blastname').val());
288
289
- //create token
290
- Stripe.createToken(args, stripeResponseHandler);
291
292
// prevent the form from submitting with the default action
293
return false;
@@ -313,8 +318,9 @@
313
// token contains id, last4, and card type
314
var token = response['id'];
315
// insert the token into the form so it gets submitted to the server
316
- form$.append("<input type='hidden' name='stripeToken' value='" + token + "'/>");
317
-
318
//console.log(response);
319
320
//insert fields for other card fields
@@ -354,9 +360,21 @@
354
static function pmpro_checkout_order($morder)
355
{
356
//load up token values
357
- if(isset($_REQUEST['stripeToken']))
358
{
359
- $morder->stripeToken = $_REQUEST['stripeToken'];
360
}
361
362
//stripe lite code to get name from other sources if available
@@ -1320,12 +1338,14 @@
1320
//user not registered yet, queue it up
1321
global $pmpro_stripe_customer_id;
1322
$pmpro_stripe_customer_id = $this->customer->id;
1323
- function pmpro_user_register_stripe_customerid($user_id)
1324
- {
1325
- global $pmpro_stripe_customer_id;
1326
- update_user_meta($user_id, "pmpro_stripe_customerid", $pmpro_stripe_customer_id);
1327
}
1328
- add_action("user_register", "pmpro_user_register_stripe_customerid");
1329
}
1330
1331
return apply_filters('pmpro_stripe_create_customer', $this->customer);
@@ -1755,4 +1775,82 @@
1755
1756
return $timestamp;
1757
}
1758
}
251
252
pmpro_require_billing = true;
253
254
+ var tokenNum = 0;
255
+
256
jQuery(document).ready(function() {
257
jQuery("#pmpro_form, .pmpro_form").submit(function(event) {
258
288
if (jQuery('#bfirstname').length && jQuery('#blastname').length)
289
args['name'] = jQuery.trim(jQuery('#bfirstname').val() + ' ' + jQuery('#blastname').val());
290
291
+ //create token(s)
292
+ var levelnums = jQuery("#level").val().split(",");
293
+ for(var cnt = 0, len = levelnums.length; cnt < len; cnt++) {
294
+ Stripe.createToken(args, stripeResponseHandler);
295
+ }
296
297
// prevent the form from submitting with the default action
298
return false;
318
// token contains id, last4, and card type
319
var token = response['id'];
320
// insert the token into the form so it gets submitted to the server
321
+ form$.append("<input type='hidden' name='stripeToken" + tokenNum + "' value='" + token + "'/>");
322
+ tokenNum++;
323
+
324
//console.log(response);
325
326
//insert fields for other card fields
360
static function pmpro_checkout_order($morder)
361
{
362
//load up token values
363
+ if(isset($_REQUEST['stripeToken0']))
364
{
365
+ // find the highest one still around, and use it - then remove it from $_REQUEST.
366
+ $thetoken = "";
367
+ $tokennum = -1;
368
+ foreach($_REQUEST as $key => $param) {
369
+ if(preg_match('/stripeToken(\d+)/', $key, $matches)) {
370
+ if(intval($matches[1])>$tokennum) {
371
+ $thetoken = $param;
372
+ $tokennum = intval($matches[1]);
373
+ }
374
+ }
375
+ }
376
+ $morder->stripeToken = $thetoken;
377
+ unset($_REQUEST['stripeToken'.$tokennum]);
378
}
379
380
//stripe lite code to get name from other sources if available
1338
//user not registered yet, queue it up
1339
global $pmpro_stripe_customer_id;
1340
$pmpro_stripe_customer_id = $this->customer->id;
1341
+ if(! function_exists('pmpro_user_register_stripe_customerid')) {
1342
+ function pmpro_user_register_stripe_customerid($user_id)
1343
+ {
1344
+ global $pmpro_stripe_customer_id;
1345
+ update_user_meta($user_id, "pmpro_stripe_customerid", $pmpro_stripe_customer_id);
1346
+ }
1347
+ add_action("user_register", "pmpro_user_register_stripe_customerid");
1348
}
1349
}
1350
1351
return apply_filters('pmpro_stripe_create_customer', $this->customer);
1775
1776
return $timestamp;
1777
}
1778
+
1779
+ /**
1780
+ * Refund a payment or invoice
1781
+ * @param object &$order Related PMPro order object.
1782
+ * @param string $transaction_id Payment or Invoice id to void.
1783
+ * @return bool True or false if the void worked
1784
+ */
1785
+ function void(&$order, $transaction_id = null)
1786
+ {
1787
+ //stripe doesn't differentiate between voids and refunds, so let's just pass on to the refund function
1788
+ return $this->refund($order, $transaction_id);
1789
+ }
1790
+
1791
+ /**
1792
+ * Refund a payment or invoice
1793
+ * @param object &$order Related PMPro order object.
1794
+ * @param string $transaction_id Payment or invoice id to void.
1795
+ * @return bool True or false if the refund worked.
1796
+ */
1797
+ function refund(&$order, $transaction_id = NULL)
1798
+ {
1799
+ //default to using the payment id from the order
1800
+ if(empty($transaction_id) && !empty($order->payment_transaction_id))
1801
+ $transaction_id = $order->payment_transaction_id;
1802
+
1803
+ //need a transaction id
1804
+ if(empty($transaction_id))
1805
+ return false;
1806
+
1807
+ //if an invoice ID is passed, get the charge/payment id
1808
+ if(strpos($transaction_id, "in_") !== false) {
1809
+ $invoice = Stripe_Invoice::retrieve($transaction_id);
1810
+
1811
+ if(!empty($invoice) && !empty($invoice->payment))
1812
+ $transaction_id = $invoice->payment;
1813
+ }
1814
+
1815
+ //get the charge
1816
+ $charge = Stripe_Charge::retrieve($transaction_id);
1817
+
1818
+ //can't find the charge?
1819
+ if(empty($charge)) {
1820
+ $order->status = "error";
1821
+ $order->errorcode = "";
1822
+ $order->error = "";
1823
+ $order->shorterror = "";
1824
+
1825
+ return false;
1826
+ }
1827
+
1828
+ //attempt refund
1829
+ try
1830
+ {
1831
+ $refund = $charge->refund();
1832
+ }
1833
+ catch (Exception $e)
1834
+ {
1835
+ //$order->status = "error";
1836
+ $order->errorcode = true;
1837
+ $order->error = __("Error: ", "pmpro") . $e->getMessage();
1838
+ $order->shorterror = $order->error;
1839
+ return false;
1840
+ }
1841
+
1842
+ if($refund->status == "succeeded") {
1843
+ $order->status = "refunded";
1844
+ $order->saveOrder();
1845
+
1846
+ return true;
1847
+ } else {
1848
+ $order->status = "error";
1849
+ $order->errorcode = true;
1850
+ $order->error = sprintf(__("Error: Unkown error while refunding charge #%s", "pmpro"), $transaction_id);
1851
+ $order->shorterror = $order->error;
1852
+
1853
+ return false;
1854
+ }
1855
+ }
1856
}
css/admin.css CHANGED
@@ -38,7 +38,7 @@ tr td.level_name a {font-size: 115%; font-weight: bold; }
38
.membership-levels tr.alternate {background: #f9f9f9;}
39
.membership-levels tr.ui-sortable-helper {border: 1px solid #2997C8;}
40
tr.testclass {border: 3px solid #2997C8; background: #2997C8;}
41
- .membershipcategory_hasparent {margin-left: 25px; }
42
43
/* settings */
44
tr.pmpro_settings_divider td {padding: 5px; margin: 0; color: #555; border-top: 1px solid #CCC; border-bottom: 1px solid #CCC;}
38
.membership-levels tr.alternate {background: #f9f9f9;}
39
.membership-levels tr.ui-sortable-helper {border: 1px solid #2997C8;}
40
tr.testclass {border: 3px solid #2997C8; background: #2997C8;}
41
+ tr.membership_categories ul {margin-left: 25px;}
42
43
/* settings */
44
tr.pmpro_settings_divider td {padding: 5px; margin: 0; color: #555; border-top: 1px solid #CCC; border-bottom: 1px solid #CCC;}
email/cancel.html CHANGED
@@ -1,3 +1,6 @@
1
<p>Your membership at !!sitename!! has been cancelled.</p>
2
3
<p>If you did not request this cancellation and would like more information please contact us at !!siteemail!!</p>
1
<p>Your membership at !!sitename!! has been cancelled.</p>
2
3
+ <p>Account: !!display_name!! (!!user_email!!)</p>
4
+ <p>Membership Level: !!membership_level_name!!</p>
5
+
6
<p>If you did not request this cancellation and would like more information please contact us at !!siteemail!!</p>
includes/addons.php CHANGED
@@ -41,7 +41,7 @@ function pmpro_getAddons()
41
$timeout = apply_filters("pmpro_get_addons_timeout", 5);
42
43
//get em
44
- $remote_addons = wp_remote_get(PMPRO_LICENSE_SERVER . "/addons/", $timeout);
45
46
//make sure we have at least an array to pass back
47
if(empty($addons))
@@ -121,7 +121,7 @@ function pmpro_update_plugins_filter( $value ) {
121
122
//get data for plugin
123
$plugin_file = $addon['Slug'] . '/' . $addon['Slug'] . '.php';
124
- $plugin_file_abs = ABSPATH . 'wp-content/plugins/' . $plugin_file;
125
126
//couldn't find plugin, skip
127
if(!file_exists($plugin_file_abs))
41
$timeout = apply_filters("pmpro_get_addons_timeout", 5);
42
43
//get em
44
+ $remote_addons = wp_remote_get(PMPRO_LICENSE_SERVER . "addons/", $timeout);
45
46
//make sure we have at least an array to pass back
47
if(empty($addons))
121
122
//get data for plugin
123
$plugin_file = $addon['Slug'] . '/' . $addon['Slug'] . '.php';
124
+ $plugin_file_abs = WP_PLUGIN_DIR . "/" . $plugin_file;
125
126
//couldn't find plugin, skip
127
if(!file_exists($plugin_file_abs))
includes/content.php CHANGED
@@ -96,8 +96,13 @@ function pmpro_has_membership_access($post_id = NULL, $user_id = NULL, $return_m
96
}
97
elseif(!empty($myuser->ID))
98
{
99
- $myuser->membership_level = pmpro_getMembershipLevelForUser($myuser->ID);
100
- if(!empty($myuser->membership_level->ID) && in_array($myuser->membership_level->ID, $post_membership_levels_ids))
101
{
102
//the users membership id is one that will grant access
103
$hasaccess = true;
96
}
97
elseif(!empty($myuser->ID))
98
{
99
+ $myuser->membership_level = pmpro_getMembershipLevelForUser($myuser->ID); // kept in for legacy filter users below.
100
+ $myuser->membership_levels = pmpro_getMembershipLevelsForUser($myuser->ID);
101
+ $mylevelids = array();
102
+ foreach($myuser->membership_levels as $curlevel) {
103
+ $mylevelids[] = $curlevel->id;
104
+ }
105
+ if(count($myuser->membership_levels)>0 && count(array_intersect($mylevelids, $post_membership_levels_ids))>0)
106
{
107
//the users membership id is one that will grant access
108
$hasaccess = true;
includes/filters.php CHANGED
@@ -155,4 +155,16 @@ if(empty($_REQUEST['discount_code']) && !empty($_REQUEST['other_discount_code'])
155
$_REQUEST['discount_code'] = $_REQUEST['other_discount_code'];
156
$_POST['discount_code'] = $_POST['other_discount_code'];
157
$_GET['discount_code'] = $_GET['other_discount_code'];
158
- }
155
$_REQUEST['discount_code'] = $_REQUEST['other_discount_code'];
156
$_POST['discount_code'] = $_POST['other_discount_code'];
157
$_GET['discount_code'] = $_GET['other_discount_code'];
158
+ }
159
+
160
+ //apply all the_content filters to confirmation messages for levels
161
+ function pmpro_pmpro_confirmation_message($message) {
162
+ return apply_filters('the_content', $message);
163
+ }
164
+ add_filter('pmpro_confirmation_message', 'pmpro_pmpro_confirmation_message');
165
+
166
+ //apply all the_content filters to level descriptions
167
+ function pmpro_pmpro_level_description($description) {
168
+ return apply_filters('the_content', $description);
169
+ }
170
+ add_filter('pmpro_level_description', 'pmpro_pmpro_level_description');
includes/functions.php CHANGED
@@ -168,6 +168,17 @@ function pmpro_isLevelFree(&$level)
168
return false;
169
}
170
171
function pmpro_isLevelRecurring(&$level)
172
{
173
if(!empty($level) && ($level->billing_amount > 0 || $level->trial_amount > 0))
@@ -406,6 +417,122 @@ function pmpro_getLevelCost(&$level, $tags = true, $short = false)
406
return $r;
407
}
408
409
function pmpro_getLevelExpiration(&$level)
410
{
411
if($level->expiration_number)
@@ -415,7 +542,41 @@ function pmpro_getLevelExpiration(&$level)
415
else
416
$expiration_text = "";
417
418
- $expiration_text = apply_filters("pmpro_level_expiration_text", $expiration_text, $level);
419
return $expiration_text;
420
}
421
@@ -746,16 +907,30 @@ function pmpro_hasMembershipLevel($levels = NULL, $user_id = NULL)
746
return $return;
747
}
748
749
- /* pmpro_changeMembershipLevel() creates or updates the membership level of the given user to the given level.
750
*
751
* $level may either be the ID or name of the desired membership_level.
752
* If $user_id is omitted, the value will be retrieved from $current_user.
753
*
754
* Return values:
755
* Success returns boolean true.
756
* Failure returns boolean false.
757
*/
758
- function pmpro_changeMembershipLevel($level, $user_id = NULL, $old_level_status = 'inactive')
759
{
760
global $wpdb;
761
global $current_user, $pmpro_error;
@@ -807,7 +982,31 @@ function pmpro_changeMembershipLevel($level, $user_id = NULL, $old_level_status
807
$old_levels = pmpro_getMembershipLevelsForUser($user_id);
808
809
//deactivate old memberships based on the old_level_status passed in (updates pmpro_memberships_users table)
810
- if($old_levels)
811
{
812
foreach($old_levels as $old_level) {
813
@@ -834,20 +1033,27 @@ function pmpro_changeMembershipLevel($level, $user_id = NULL, $old_level_status
834
* @param int $level_id ID of the level changed to.
835
* @param int $user_id ID of the user changed.
836
* @param array $old_levels array of prior levels the user belonged to.
837
*/
838
- do_action("pmpro_before_change_membership_level", $level_id, $user_id, $old_levels);
839
840
//should we cancel their gateway subscriptions?
841
- $pmpro_cancel_previous_subscriptions = true;
842
- if(isset($_REQUEST['cancel_membership']) && $_REQUEST['cancel_membership'] == false)
843
- $pmpro_cancel_previous_subscriptions = false;
844
- $pmpro_cancel_previous_subscriptions = apply_filters("pmpro_cancel_previous_subscriptions", $pmpro_cancel_previous_subscriptions);
845
-
846
- //cancel any other subscriptions they have (updates pmpro_membership_orders table)
847
- if($pmpro_cancel_previous_subscriptions)
848
- {
849
$other_order_ids = $wpdb->get_col("SELECT id FROM $wpdb->pmpro_membership_orders WHERE user_id = '" . $user_id . "' AND status = 'success' ORDER BY id DESC");
850
-
851
foreach($other_order_ids as $order_id)
852
{
853
$c_order = new MemberOrder($order_id);
@@ -931,11 +1137,45 @@ function pmpro_changeMembershipLevel($level, $user_id = NULL, $old_level_status
931
*
932
* @param int $level_id ID of the level changed to.
933
* @param int $user_id ID of the user changed.
934
*/
935
- do_action("pmpro_after_change_membership_level", $level_id, $user_id);
936
return true;
937
}
938
939
/* pmpro_toggleMembershipCategory() creates or deletes a linking entry between the membership level and post category tables.
940
*
941
* $level may either be the ID or name of the desired membership_level.
@@ -1352,15 +1592,13 @@ function pmpro_getDiscountCode($seed = NULL)
1352
return strtoupper($code);
1353
}
1354
1355
- //is a discount code valid
1356
function pmpro_checkDiscountCode($code, $level_id = NULL, $return_errors = false)
1357
{
1358
global $wpdb;
1359
1360
$error = false;
1361
-
1362
- //make sure level id is int for security
1363
- $level_id = intval($level_id);
1364
1365
//no code, no code
1366
if(empty($code))
@@ -1415,7 +1653,14 @@ function pmpro_checkDiscountCode($code, $level_id = NULL, $return_errors = false
1415
$pmpro_check_discount_code_levels = apply_filters("pmpro_check_discount_code_levels", true, $dbcode->id);
1416
if(!empty($level_id) && $pmpro_check_discount_code_levels)
1417
{
1418
- $code_level = $wpdb->get_row("SELECT l.id, cl.*, l.name, l.description, l.allow_signups FROM $wpdb->pmpro_discount_codes_levels cl LEFT JOIN $wpdb->pmpro_membership_levels l ON cl.level_id = l.id WHERE cl.code_id = '" . $dbcode->id . "' AND cl.level_id = '" . $level_id . "' LIMIT 1");
1419
1420
if(empty($code_level))
1421
$error = __("This discount code does not apply to this membership level.", "pmpro");
@@ -1707,6 +1952,63 @@ function pmpro_getAllLevels($include_hidden = false, $force = false)
1707
return $pmpro_levels;
1708
}
1709
1710
function pmpro_getCheckoutButton($level_id, $button_text = NULL, $classes = NULL)
1711
{
1712
if(empty($button_text))
@@ -1867,7 +2169,7 @@ function pmpro_setMessage($message, $type, $force = false)
1867
//for now, we only show the first message generated
1868
if($force || empty($pmpro_msg))
1869
{
1870
- $pmpro_msg = $message;
1871
$pmpro_msgt = $type;
1872
}
1873
}
@@ -1983,7 +2285,7 @@ function pmpro_formatAddress($name, $address1, $address2, $city, $state, $zip, $
1983
if($nl2br)
1984
$address = nl2br($address);
1985
1986
- return $address;
1987
}
1988
1989
/*
@@ -2288,3 +2590,22 @@ function pmpro_generatePages($pages) {
2288
else
2289
return false;
2290
}
168
return false;
169
}
170
171
+ // Given an array of levels, will return true if all of them are free.
172
+ function pmpro_areLevelsFree($levelarr) {
173
+ if(! is_array($levelarr)) { return false; }
174
+ foreach($levelarr as $curlevel) {
175
+ if(!empty($curlevel) && ($curlevel->initial_payment > 0 || $curlevel->billing_amount > 0 || $curlevel->trial_amount > 0)) {
176
+ return false;
177
+ }
178
+ }
179
+ return true;
180
+ }
181
+
182
function pmpro_isLevelRecurring(&$level)
183
{
184
if(!empty($level) && ($level->billing_amount > 0 || $level->trial_amount > 0))
417
return $r;
418
}
419
420
+ // Similar to pmpro_getLevelCost, but loops through all levels in the incoming array and puts it all together.
421
+ function pmpro_getLevelsCost(&$levels, $tags = true, $short = false)
422
+ {
423
+ // let's build the array to work from to consolidate recurring info.
424
+ // recurpmts[cycle_period][cycle_number][billing_limit] = total_amount
425
+ $initpmt = 0;
426
+ $recurpmts = array();
427
+ $trialperiods = 0;
428
+ foreach($levels as $curlevel) {
429
+ $initpmt += $curlevel->initial_payment;
430
+ if($curlevel->billing_amount != '0.00') {
431
+ if(array_key_exists($curlevel->cycle_period, $recurpmts)) {
432
+ if(array_key_exists($curlevel->cycle_number, $recurpmts[$curlevel->cycle_period])) {
433
+ if(array_key_exists($curlevel->billing_limit, $recurpmts[$curlevel->cycle_period][$curlevel->cycle_number])) {
434
+ $recurpmts[$curlevel->cycle_period][$curlevel->cycle_number][$curlevel->billing_limit] += $curlevel->billing_amount;
435
+ } else {
436
+ $recurpmts[$curlevel->cycle_period][$curlevel->cycle_number][$curlevel->billing_limit] = $curlevel->billing_amount;
437
+ }
438
+ } else {
439
+ $recurpmts[$curlevel->cycle_period][$curlevel->cycle_number] = array();
440
+ $recurpmts[$curlevel->cycle_period][$curlevel->cycle_number][$curlevel->billing_limit] = $curlevel->billing_amount;
441
+ }
442
+ } else {
443
+ $recurpmts[$curlevel->cycle_period] = array();
444
+ $recurpmts[$curlevel->cycle_period][$curlevel->cycle_number] = array();
445
+ $recurpmts[$curlevel->cycle_period][$curlevel->cycle_number][$curlevel->billing_limit] = $curlevel->billing_amount;
446
+ }
447
+ }
448
+ if($curlevel->trial_limit && intval($curlevel->trial_limit)>$trialperiods) {
449
+ $trialperiods = intval($curlevel->trial_limit);
450
+ }
451
+ }
452
+
453
+ // initial payment
454
+ if(!$short)
455
+ $r = sprintf(__('The price for membership is <strong>%s</strong> now', 'pmpro'), pmpro_formatPrice($initpmt));
456
+ else
457
+ $r = sprintf(__('<strong>%s</strong> now', 'pmpro'), pmpro_formatPrice($initpmt));
458
+
459
+ //recurring part
460
+ $billtextparts = array();
461
+ if(count($recurpmts)>0) {
462
+ foreach($recurpmts as $curperiod => $curpddata) {
463
+ foreach($curpddata as $curcyclenum => $curcycledata) {
464
+ foreach($curcycledata as $curbilllimit => $curtotal) {
465
+ if($curbilllimit > 1)
466
+ {
467
+ if($curcyclenum == '1')
468
+ {
469
+ $billtextparts[] = sprintf(__('<strong>%s per %s for %d more %s</strong>', 'pmpro'), pmpro_formatPrice($curtotal), pmpro_translate_billing_period($curperiod), $curbilllimit, pmpro_translate_billing_period($curperiod, $curbilllimit));
470
+ }
471
+ else
472
+ {
473
+ $billtextparts[] = sprintf(__('<strong>%s every %d %s for %d more payments</strong>', 'pmpro'), pmpro_formatPrice($curtotal), $curcyclenum, pmpro_translate_billing_period($curperiod, $curcyclenum), $curbilllimit);
474
+ }
475
+ }
476
+ elseif($curbilllimit == 1)
477
+ {
478
+ $billtextparts[] = sprintf(__('<strong>%s after %d %s</strong>', 'pmpro'), pmpro_formatPrice($curtotal), $curcyclenum, pmpro_translate_billing_period($curperiod, $curcyclenum));
479
+ }
480
+ else
481
+ {
482
+ if($curcyclenum == '1')
483
+ {
484
+ $billtextparts[] = sprintf(__('<strong>%s every %s</strong>', 'pmpro'), pmpro_formatPrice($curtotal), pmpro_translate_billing_period($curperiod));
485
+ }
486
+ else
487
+ {
488
+ $billtextparts[] = sprintf(__('<strong>%s every %d %s</strong>', 'pmpro'), pmpro_formatPrice($curtotal), $curcyclenum, pmpro_translate_billing_period($curperiod, $curcyclenum));
489
+ }
490
+ }
491
+ }
492
+ }
493
+ }
494
+ $laststanza = array_pop($billtextparts);
495
+ if(count($billtextparts)>0) {
496
+ $r .= ", ";
497
+ $r .= implode(', ', $billtextparts);
498
+ }
499
+ $r .= ", and ".$laststanza.".";
500
+ } else {
501
+ $r .= ".";
502
+ }
503
+
504
+
505
+ //add a space
506
+ $r .= ' ';
507
+
508
+ //trial part - not as detailed as the single-level counterpart. Could be improved in the future.
509
+ if($trialperiods>0) {
510
+ if($trialperiods==1) {
511
+ $r .= __('Trial pricing has been applied to the first payment.', 'mmpu');
512
+ } else {
513
+ $r .= sprintf(__('Trial pricing has been applied to the first %d payments.', 'mmpu'), $trialperiods);
514
+ }
515
+ }
516
+
517
+ //taxes part
518
+ $tax_state = pmpro_getOption("tax_state");
519
+ $tax_rate = pmpro_getOption("tax_rate");
520
+
521
+ if($tax_state && $tax_rate && !pmpro_areLevelsFree($levels))
522
+ {
523
+ $r .= sprintf(__('Customers in %s will be charged %s%% tax.', 'pmpro'), $tax_state, round($tax_rate * 100, 2));
524
+ }
525
+
526
+ if(!$tags)
527
+ $r = strip_tags($r);
528
+
529
+ /**
530
+ * Filter the levels cost text. Note the s in levels. Similar to pmpro_levels_cost_text
531
+ */
532
+ $r = apply_filters("pmpro_levels_cost_text", $r, $levels, $tags, $short);
533
+ return $r;
534
+ }
535
+
536
function pmpro_getLevelExpiration(&$level)
537
{
538
if($level->expiration_number)
542
else
543
$expiration_text = "";
544
545
+ $expiration_text = apply_filters("pmpro_levels_expiration_text", $expiration_text, $level);
546
+ return $expiration_text;
547
+ }
548
+
549
+ function pmpro_getLevelsExpiration(&$levels)
550
+ {
551
+ $expirystrings = array();
552
+ $ongoinglevelnum = 0;
553
+ if(!empty($levels) && !is_array($levels)) { $levels = array($levels); } elseif(empty($levels)) { $levels = array(); }
554
+ foreach($levels as $curlevel) {
555
+ if($curlevel->expiration_number) {
556
+ $expirystrings[] = sprintf(__("%s membership expires after %d %s", "pmpro"), $curlevel->name, $curlevel->expiration_number, pmpro_translate_billing_period($curlevel->expiration_period, $curlevel->expiration_number));
557
+ } else {
558
+ $ongoinglevelnum++;
559
+ }
560
+ }
561
+
562
+ $expiration_text = "";
563
+ if(count($expirystrings)>0) {
564
+ $laststanza = array_pop($expirystrings);
565
+ $expiration_text = implode(', ', $expirystrings);
566
+ if(count($expirystrings)>0) { $expiration_text .= ", and "; }
567
+ $expiration_text .= $laststanza;
568
+ $expiration_text .= ". ";
569
+ if($ongoinglevelnum>0) {
570
+ $expiration_text .= "The remaining membership";
571
+ if($ongoinglevelnum>1) { $expiration_text .= "s are"; } else { $expiration_text .= " is"; }
572
+ $expiration_text .= " ongoing.";
573
+ }
574
+ }
575
+
576
+ /**
577
+ * Filter the levels expiration text. Note the s in levels. Similar to pmpro_levels_expiration_text
578
+ */
579
+ $expiration_text = apply_filters("pmpro_levels_expiration_text", $expiration_text, $levels);
580
return $expiration_text;
581
}
582
907
return $return;
908
}
909
910
+ /**
911
+ * Wrapper for pmpro_changeMembershipLevel to cancel one level.
912
+ * @since 1.8.11
913
+ */
914
+ function pmpro_cancelMembershipLevel($cancel_level, $user_id = NULL, $old_level_status = 'inactive') {
915
+ return pmpro_changeMembershipLevel(0, $user_id, $old_level_status, $cancel_level);
916
+ }
917
+
918
+ /**
919
+ * Create, add, remove or updates the membership level of the given user to the given level.
920
*
921
* $level may either be the ID or name of the desired membership_level.
922
* If $user_id is omitted, the value will be retrieved from $current_user.
923
*
924
+ * @param int $level ID of level to set as new level, use 0 to cancel membership
925
+ * @param int $user_id ID of the user to change levels for
926
+ * @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'.
927
+ * $param int $cancel_level If set cancel just this one level instead of all active levels (to support Multiple Memberships per User)
928
+ *
929
* Return values:
930
* Success returns boolean true.
931
* Failure returns boolean false.
932
*/
933
+ function pmpro_changeMembershipLevel($level, $user_id = NULL, $old_level_status = 'inactive', $cancel_level = NULL)
934
{
935
global $wpdb;
936
global $current_user, $pmpro_error;
982
$old_levels = pmpro_getMembershipLevelsForUser($user_id);
983
984
//deactivate old memberships based on the old_level_status passed in (updates pmpro_memberships_users table)
985
+ $pmpro_deactivate_old_levels = true;
986
+ /**
987
+ * Filter whether old levels should be deactivated or not. This supports the MMPU addon.
988
+ * Typically you'll want to hook into pmpro_before_change_membership_level
989
+ * or pmpro_after_change_membership_level later to run your own deactivation logic.
990
+ *
991
+ * @since 1.8.11
992
+ * @var $pmpro_deactivate_old_levels bool True or false if levels should be deactivated. Defaults to true.
993
+ */
994
+ $pmpro_deactivate_old_levels = apply_filters("pmpro_deactivate_old_levels", $pmpro_deactivate_old_levels);
995
+
996
+ //make sure we deactivate the specified level if it's passed in
997
+ if(!empty($cancel_level)) {
998
+ $pmpro_deactivate_old_levels = true;
999
+ $new_old_levels = array();
1000
+ foreach($old_levels as $key => $old_level) {
1001
+ if($old_level->id == $cancel_level) {
1002
+ $new_old_levels[] = $old_levels[$key];
1003
+ break;
1004
+ }
1005
+ }
1006
+ $old_levels = $new_old_levels;
1007
+ }
1008
+
1009
+ if($old_levels && $pmpro_deactivate_old_levels)
1010
{
1011
foreach($old_levels as $old_level) {
1012
1033
* @param int $level_id ID of the level changed to.
1034
* @param int $user_id ID of the user changed.
1035
* @param array $old_levels array of prior levels the user belonged to.
1036
+ * $param int $cancel_level ID of the level being cancelled if specified
1037
*/
1038
+ do_action("pmpro_before_change_membership_level", $level_id, $user_id, $old_levels, $cancel_level);
1039
1040
//should we cancel their gateway subscriptions?
1041
+ if(!empty($cancel_level)) {
1042
+ $pmpro_cancel_previous_subscriptions = true; //don't filter cause we're doing just the one
1043
+
1044
+ $other_order_ids = $wpdb->get_col("SELECT id FROM $wpdb->pmpro_membership_orders WHERE user_id = '" . $user_id . "' AND status = 'success' AND membership_id = '" . esc_sql($cancel_level) . "' ORDER BY id DESC");
1045
+ } else {
1046
+ $pmpro_cancel_previous_subscriptions = true;
1047
+ if(isset($_REQUEST['cancel_membership']) && $_REQUEST['cancel_membership'] == false)
1048
+ $pmpro_cancel_previous_subscriptions = false;
1049
+ $pmpro_cancel_previous_subscriptions = apply_filters("pmpro_cancel_previous_subscriptions", $pmpro_cancel_previous_subscriptions);
1050
+
1051
$other_order_ids = $wpdb->get_col("SELECT id FROM $wpdb->pmpro_membership_orders WHERE user_id = '" . $user_id . "' AND status = 'success' ORDER BY id DESC");
1052
+ }
1053
+
1054
+ //cancel any other subscriptions they have (updates pmpro_membership_orders table)
1055
+ if($pmpro_cancel_previous_subscriptions && !empty($other_order_ids))
1056
+ {
1057
foreach($other_order_ids as $order_id)
1058
{
1059
$c_order = new MemberOrder($order_id);
1137
*
1138
* @param int $level_id ID of the level changed to.
1139
* @param int $user_id ID of the user changed.
1140
+ * $param int $cancel_level ID of the level being cancelled if specified.
1141
*/
1142
+ do_action("pmpro_after_change_membership_level", $level_id, $user_id, $cancel_level);
1143
return true;
1144
}
1145
1146
+ /**
1147
+ * Function to list WordPress categories in hierarchical format.
1148
+ *
1149
+ * This is a helper function for the Membership Categories section in adminpages/membershiplevels.php
1150
+ *
1151
+ * @since 1.8.11
1152
+ *
1153
+ * @param int $parent_id
1154
+ * @param array $level_categories
1155
+ */
1156
+ function pmpro_listCategories($parent_id = 0, $level_categories = array()) {
1157
+
1158
+ $args = array(
1159
+ 'parent' => $parent_id,
1160
+ 'hide_empty' => false,
1161
+ );
1162
+
1163
+ $cats = get_categories(apply_filters('pmpro_list_categories_args', $args));
1164
+
1165
+ if($cats) {
1166
+ foreach($cats as $cat) {
1167
+ $name = 'membershipcategory_' . $cat->term_id;
1168
+ if(!empty($level_categories))
1169
+ $checked = checked(in_array($cat->term_id, $level_categories), true, false);
1170
+ else
1171
+ $checked = "";
1172
+ echo "<ul><li class=membershipcategory><input type=checkbox name={$name} id={$name} value=yes {$checked}><label for={$name}>{$cat->name}</label>";
1173
+ pmpro_listCategories($cat->term_id, $level_categories);
1174
+ echo '</li></ul>';
1175
+ }
1176
+ }
1177
+ }
1178
+
1179
/* pmpro_toggleMembershipCategory() creates or deletes a linking entry between the membership level and post category tables.
1180
*
1181
* $level may either be the ID or name of the desired membership_level.
1592
return strtoupper($code);
1593
}
1594
1595
+ //is a discount code valid - level_id could be a scalar or an array (or unset)
1596
function pmpro_checkDiscountCode($code, $level_id = NULL, $return_errors = false)
1597
{
1598
global $wpdb;
1599
1600
$error = false;
1601
+ $dbcode = false;
1602
1603
//no code, no code
1604
if(empty($code))
1653
$pmpro_check_discount_code_levels = apply_filters("pmpro_check_discount_code_levels", true, $dbcode->id);
1654
if(!empty($level_id) && $pmpro_check_discount_code_levels)
1655
{
1656
+ // clean up level id for security before the database call
1657
+ if(is_array($level_id)) {
1658
+ $levelnums = array_map('intval', $level_id);
1659
+ $level_id = implode(',', $levelnums);
1660
+ } else {
1661
+ $level_id = intval($level_id);
1662
+ }
1663
+ $code_level = $wpdb->get_row("SELECT l.id, cl.*, l.name, l.description, l.allow_signups FROM $wpdb->pmpro_discount_codes_levels cl LEFT JOIN $wpdb->pmpro_membership_levels l ON cl.level_id = l.id WHERE cl.code_id = '" . $dbcode->id . "' AND cl.level_id IN (" . $level_id . ") LIMIT 1");
1664
1665
if(empty($code_level))
1666
$error = __("This discount code does not apply to this membership level.", "pmpro");
1952
return $pmpro_levels;
1953
}
1954
1955
+ /**
1956
+ * Get level at checkout and place into $pmpro_level global.
1957
+ */
1958
+ function pmpro_getLevelAtCheckout($level_id = NULL, $discount_code = NULL) {
1959
+ global $pmpro_level, $wpdb;
1960
+
1961
+ //reset pmpro_level
1962
+ $pmpro_level = NULL;
1963
+
1964
+ //default to level passed in via URL
1965
+ if(empty($level_id) && !empty($_REQUEST['level'])) {
1966
+ $level_id = intval($_REQUEST['level']);
1967
+ }
1968
+
1969
+ //default to discount code passed in
1970
+ if(empty($discount_code) && !empty($_REQUEST['discount_code'])) {
1971
+ $discount_code = preg_replace( "/[^A-Za-z0-9\-]/", "", $_REQUEST['discount_code'] );
1972
+ }
1973
+
1974
+ //what level are they purchasing? (discount code passed)
1975
+ if (!empty($level_id) && !empty($discount_code)) {
1976
+ $discount_code_id = $wpdb->get_var( "SELECT id FROM $wpdb->pmpro_discount_codes WHERE code = '" . $discount_code . "' LIMIT 1" );
1977
+
1978
+ //check code
1979
+ $code_check = pmpro_checkDiscountCode( $discount_code, $level_id, true );
1980
+ if ( $code_check[0] != false ) {
1981
+ $sqlQuery = "SELECT l.id, cl.*, l.name, l.description, l.allow_signups FROM $wpdb->pmpro_discount_codes_levels cl LEFT JOIN $wpdb->pmpro_membership_levels l ON cl.level_id = l.id LEFT JOIN $wpdb->pmpro_discount_codes dc ON dc.id = cl.code_id WHERE dc.code = '" . $discount_code . "' AND cl.level_id = '" . $level_id . "' LIMIT 1";
1982
+ $pmpro_level = $wpdb->get_row( $sqlQuery );
1983
+
1984
+ //if the discount code doesn't adjust the level, let's just get the straight level
1985
+ if ( empty( $pmpro_level ) ) {
1986
+ $pmpro_level = $wpdb->get_row( "SELECT * FROM $wpdb->pmpro_membership_levels WHERE id = '" . $level_id . "' LIMIT 1" );
1987
+ }
1988
+
1989
+ //filter adjustments to the level
1990
+ $pmpro_level->code_id = $discount_code_id;
1991
+ $pmpro_level = apply_filters( "pmpro_discount_code_level", $pmpro_level, $discount_code_id );
1992
+ }
1993
+ }
1994
+
1995
+ //what level are they purchasing? (no discount code)
1996
+ if ( empty( $pmpro_level ) && ! empty( $level_id ) ) {
1997
+ $pmpro_level = $wpdb->get_row( "SELECT * FROM $wpdb->pmpro_membership_levels WHERE id = '" . esc_sql( $level_id ) . "' AND allow_signups = 1 LIMIT 1" );
1998
+ } elseif ( empty( $pmpro_level ) ) {
1999
+ //check if a level is defined in custom fields
2000
+ $default_level = get_post_meta( $post->ID, "pmpro_default_level", true );
2001
+ if ( ! empty( $default_level ) ) {
2002
+ $pmpro_level = $wpdb->get_row( "SELECT * FROM $wpdb->pmpro_membership_levels WHERE id = '" . esc_sql( $default_level ) . "' AND allow_signups = 1 LIMIT 1" );
2003
+ }
2004
+ }
2005
+
2006
+ //filter the level (for upgrades, etc)
2007
+ $pmpro_level = apply_filters( "pmpro_checkout_level", $pmpro_level );
2008
+
2009
+ return $pmpro_level;
2010
+ }
2011
+
2012
function pmpro_getCheckoutButton($level_id, $button_text = NULL, $classes = NULL)
2013
{
2014
if(empty($button_text))
2169
//for now, we only show the first message generated
2170
if($force || empty($pmpro_msg))
2171
{
2172
+ $pmpro_msg = apply_filters('pmpro_set_message', $message, $type);
2173
$pmpro_msgt = $type;
2174
}
2175
}
2285
if($nl2br)
2286
$address = nl2br($address);
2287
2288
+ return apply_filters('pmpro_formatted_address', $address, $name, $address1, $address2, $city, $state, $zip, $country, $phone, $nl2br );
2289
}
2290
2291
/*
2590
else
2591
return false;
2592
}
2593
+
2594
+ /**
2595
+ * Get an array of orders for a specific checkout ID
2596
+ *
2597
+ * @param int $checkout_id Checkout ID
2598
+ * @since 1.8.11
2599
+ */
2600
+ function pmpro_getMemberOrdersByCheckoutID($checkout_id) {
2601
+ global $wpdb;
2602
+
2603
+ $order_ids = $wpdb->get_col($wpdb->prepare("SELECT id FROM $wpdb->pmpro_membership_orders WHERE checkout_id = %d", $checkout_id));
2604
+
2605
+ $r = array();
2606
+ foreach($order_ids as $order_id) {
2607
+ $r[] = new MemberOrder($order_id);
2608
+ }
2609
+
2610
+ return $r;
2611
+ }
languages/pmpro.mo CHANGED
Binary file
languages/pmpro.po CHANGED
@@ -5,7 +5,7 @@
5
msgid ""
6
msgstr ""
7
"Project-Id-Version: pmpro\n"
8
- "POT-Creation-Date: 2016-07-20 12:40-0400\n"
9
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
10
"Last-Translator: \n"
11
"Language-Team: Stranger Studios <jason@strangerstudios.com>\n"
@@ -34,7 +34,7 @@ msgstr ""
34
35
#: adminpages/addons.php:67 adminpages/admin_header.php:170
36
#: includes/adminpages.php:53 includes/adminpages.php:151
37
- #: adminpages/addons.php:64 adminpages/addons.php:80
38
#: adminpages/admin_header.php:133 adminpages/admin_header.php:154
39
#: adminpages/admin_header.php:170 includes/adminpages.php:14
40
#: includes/adminpages.php:52 includes/adminpages.php:53
@@ -44,165 +44,178 @@ msgstr ""
44
msgid "Add Ons"
45
msgstr ""
46
47
- #: adminpages/addons.php:74 adminpages/addons.php:71 adminpages/addons.php:87
48
#, php-format
49
msgid "Last checked on %s at %s."
50
msgstr ""
51
52
- #: adminpages/addons.php:75 adminpages/addons.php:72 adminpages/addons.php:88
53
msgid "Check Again"
54
msgstr ""
55
56
#: adminpages/addons.php:79 adminpages/orders.php:881 adminpages/addons.php:76
57
- #: adminpages/addons.php:92 adminpages/orders.php:605
58
#: adminpages/orders.php:712 adminpages/orders.php:741
59
- #: adminpages/orders.php:850
60
msgid "All"
61
msgstr ""
62
63
- #: adminpages/addons.php:80 adminpages/addons.php:77 adminpages/addons.php:93
64
msgid "Active"
65
msgstr ""
66
67
- #: adminpages/addons.php:81 adminpages/addons.php:78 adminpages/addons.php:94
68
msgid "Inactive"
69
msgstr ""
70
71
- #: adminpages/addons.php:82 adminpages/addons.php:79 adminpages/addons.php:95
72
msgid "Update Available"
73
msgstr ""
74
75
- #: adminpages/addons.php:83 adminpages/addons.php:80 adminpages/addons.php:96
76
msgid "Not Installed"
77
msgstr ""
78
79
- #: adminpages/addons.php:96 adminpages/addons.php:93 adminpages/addons.php:109
80
msgid "Add On Name"
81
msgstr ""
82
83
- #: adminpages/addons.php:97 adminpages/addons.php:94 adminpages/addons.php:110
84
msgid "Type"
85
msgstr ""
86
87
#: adminpages/addons.php:98 adminpages/membershiplevels.php:300
88
- #: adminpages/addons.php:95 adminpages/addons.php:111
89
#: adminpages/membershiplevels.php:296 adminpages/membershiplevels.php:298
90
#: adminpages/membershiplevels.php:300
91
msgid "Description"
92
msgstr ""
93
94
#: adminpages/addons.php:121 adminpages/addons.php:118
95
- #: adminpages/addons.php:134
96
msgid "No Add Ons found."
97
msgstr ""
98
99
#: adminpages/addons.php:182 adminpages/addons.php:187
100
#: adminpages/addons.php:199 adminpages/addons.php:179
101
- #: adminpages/addons.php:184 adminpages/addons.php:195
102
- #: adminpages/addons.php:196 adminpages/addons.php:200
103
- #: adminpages/addons.php:212
104
msgid "Install Now"
105
msgstr ""
106
107
#: adminpages/addons.php:188 adminpages/addons.php:194
108
#: adminpages/addons.php:200 adminpages/addons.php:206
109
- #: adminpages/addons.php:185 adminpages/addons.php:191
110
- #: adminpages/addons.php:197 adminpages/addons.php:201
111
- #: adminpages/addons.php:203 adminpages/addons.php:207
112
#: adminpages/addons.php:213 adminpages/addons.php:219
113
msgid "Download"
114
msgstr ""
115
116
#: adminpages/addons.php:193 adminpages/addons.php:205
117
- #: adminpages/addons.php:190 adminpages/addons.php:202
118
#: adminpages/addons.php:206 adminpages/addons.php:218
119
msgid "Update License"
120
msgstr ""
121
122
#: adminpages/addons.php:211 adminpages/addons.php:208
123
- #: adminpages/addons.php:224
124
msgid "Deactivate"
125
msgstr ""
126
127
#: adminpages/addons.php:211 adminpages/addons.php:208
128
- #: adminpages/addons.php:224
129
#, php-format
130
msgid "Deactivate %s"
131
msgstr ""
132
133
#: adminpages/addons.php:215 adminpages/addons.php:212
134
- #: adminpages/addons.php:228
135
msgid "Activate"
136
msgstr ""
137
138
#: adminpages/addons.php:215 adminpages/addons.php:212
139
- #: adminpages/addons.php:228
140
#, php-format
141
msgid "Activate %s"
142
msgstr ""
143
144
#: adminpages/addons.php:216 adminpages/addons.php:213
145
- #: adminpages/addons.php:229
146
msgid "Delete"
147
msgstr ""
148
149
#: adminpages/addons.php:216 adminpages/addons.php:213
150
- #: adminpages/addons.php:229
151
#, php-format
152
msgid "Delete %s"
153
msgstr ""
154
155
#: adminpages/addons.php:226 adminpages/addons.php:223
156
- #: adminpages/addons.php:239
157
msgid "PMPro Free"
158
msgstr ""
159
160
#: adminpages/addons.php:228 adminpages/addons.php:225
161
- #: adminpages/addons.php:241
162
msgid "PMPro Core"
163
msgstr ""
164
165
#: adminpages/addons.php:230 adminpages/addons.php:227
166
- #: adminpages/addons.php:243
167
msgid "PMPro Plus"
168
msgstr ""
169
170
#: adminpages/addons.php:232 adminpages/addons.php:229
171
- #: adminpages/addons.php:245
172
msgid "WordPress.org"
173
msgstr ""
174
175
- #: adminpages/addons.php:234 shortcodes/pmpro_account.php:145
176
- #: adminpages/addons.php:231 adminpages/addons.php:247
177
#: shortcodes/pmpro_account.php:146
178
msgid "N/A"
179
msgstr ""
180
181
#: adminpages/addons.php:243 adminpages/addons.php:240
182
- #: adminpages/addons.php:256
183
#, php-format
184
msgid "Version %s"
185
msgstr ""
186
187
#: adminpages/addons.php:248 adminpages/addons.php:245
188
- #: adminpages/addons.php:261
189
#, php-format
190
msgid "By %s"
191
msgstr ""
192
193
#: adminpages/addons.php:255 adminpages/addons.php:252
194
- #: adminpages/addons.php:268
195
#, php-format
196
msgid "More information about %s"
197
msgstr ""
198
199
#: adminpages/addons.php:257 adminpages/addons.php:254
200
- #: adminpages/addons.php:270
201
msgid "View details"
202
msgstr ""
203
204
#: adminpages/addons.php:262 adminpages/addons.php:259
205
- #: adminpages/addons.php:275
206
msgid "Visit plugin site"
207
msgstr ""
208
@@ -290,7 +303,7 @@ msgstr ""
290
msgid "User Forum"
291
msgstr ""
292
293
- #: adminpages/admin_header.php:150 adminpages/membershiplevels.php:619
294
#: adminpages/pagesettings.php:70 includes/adminpages.php:69
295
#: includes/adminpages.php:70 includes/adminpages.php:116
296
#: includes/metaboxes.php:131 adminpages/admin_header.php:128
@@ -322,12 +335,13 @@ msgid "Payment Gateway &amp; SSL"
322
msgstr ""
323
324
#: adminpages/admin_header.php:162 adminpages/memberslist.php:168
325
- #: shortcodes/pmpro_account.php:108 adminpages/admin_header.php:131
326
#: adminpages/admin_header.php:152 adminpages/admin_header.php:162
327
#: adminpages/memberslist.php:115 adminpages/memberslist.php:148
328
#: adminpages/memberslist.php:158 adminpages/memberslist.php:168
329
#: pages/account.php:52 pages/account.php:56 pages/account.php:77
330
- #: shortcodes/pmpro_account.php:106 shortcodes/pmpro_account.php:109
331
msgid "Email"
332
msgstr ""
333
@@ -438,7 +452,7 @@ msgid "Hide Ads From Members?"
438
msgstr ""
439
440
#: adminpages/advancedsettings.php:148 adminpages/advancedsettings.php:207
441
- #: adminpages/advancedsettings.php:219 adminpages/membershiplevels.php:672
442
#: adminpages/paymentsettings.php:210
443
#: classes/gateways/class.pmprogateway_stripe.php:209 includes/profile.php:110
444
#: adminpages/advancedsettings.php:128 adminpages/advancedsettings.php:135
@@ -449,16 +463,17 @@ msgstr ""
449
#: adminpages/membershiplevels.php:569 adminpages/membershiplevels.php:571
450
#: adminpages/membershiplevels.php:578 adminpages/membershiplevels.php:598
451
#: adminpages/membershiplevels.php:658 adminpages/membershiplevels.php:667
452
- #: adminpages/membershiplevels.php:668 adminpages/paymentsettings.php:210
453
- #: adminpages/paymentsettings.php:414 adminpages/paymentsettings.php:429
454
- #: adminpages/paymentsettings.php:434 adminpages/paymentsettings.php:436
455
- #: adminpages/paymentsettings.php:454 adminpages/paymentsettings.php:459
456
- #: adminpages/paymentsettings.php:461
457
#: classes/gateways/class.pmprogateway_stripe.php:173
458
#: classes/gateways/class.pmprogateway_stripe.php:174
459
#: classes/gateways/class.pmprogateway_stripe.php:184
460
#: classes/gateways/class.pmprogateway_stripe.php:206
461
- #: classes/gateways/class.pmprogateway_stripe.php:208 includes/profile.php:101
462
#: includes/profile.php:105 includes/profile.php:110 includes/profile.php:121
463
#: includes/profile.php:123
464
msgid "No"
@@ -499,7 +514,7 @@ msgstr ""
499
msgid "multisite only"
500
msgstr ""
501
502
- #: adminpages/advancedsettings.php:208 adminpages/membershiplevels.php:672
503
#: adminpages/paymentsettings.php:211
504
#: classes/gateways/class.pmprogateway_stripe.php:210 includes/profile.php:111
505
#: adminpages/advancedsettings.php:188 adminpages/advancedsettings.php:195
@@ -507,16 +522,18 @@ msgstr ""
507
#: adminpages/membershiplevels.php:569 adminpages/membershiplevels.php:571
508
#: adminpages/membershiplevels.php:578 adminpages/membershiplevels.php:598
509
#: adminpages/membershiplevels.php:658 adminpages/membershiplevels.php:667
510
- #: adminpages/membershiplevels.php:668 adminpages/paymentsettings.php:211
511
- #: adminpages/paymentsettings.php:415 adminpages/paymentsettings.php:424
512
- #: adminpages/paymentsettings.php:430 adminpages/paymentsettings.php:435
513
- #: adminpages/paymentsettings.php:437 adminpages/paymentsettings.php:455
514
- #: adminpages/paymentsettings.php:460 adminpages/paymentsettings.php:462
515
#: classes/gateways/class.pmprogateway_stripe.php:174
516
#: classes/gateways/class.pmprogateway_stripe.php:175
517
#: classes/gateways/class.pmprogateway_stripe.php:185
518
#: classes/gateways/class.pmprogateway_stripe.php:207
519
- #: classes/gateways/class.pmprogateway_stripe.php:209 includes/profile.php:102
520
#: includes/profile.php:106 includes/profile.php:111 includes/profile.php:122
521
#: includes/profile.php:124
522
msgid "Yes"
@@ -659,7 +676,7 @@ msgid "Add New Discount Code"
659
msgstr ""
660
661
#: adminpages/discountcodes.php:311 adminpages/discountcodes.php:587
662
- #: adminpages/membershiplevels.php:288 adminpages/membershiplevels.php:641
663
#: adminpages/memberslist.php:164 adminpages/orders.php:1134
664
#: adminpages/reports/login.php:158 adminpages/templates/orders-email.php:46
665
#: adminpages/templates/orders-print.php:75 adminpages/discountcodes.php:306
@@ -672,12 +689,13 @@ msgstr ""
672
#: adminpages/membershiplevels.php:511 adminpages/membershiplevels.php:513
673
#: adminpages/membershiplevels.php:540 adminpages/membershiplevels.php:541
674
#: adminpages/membershiplevels.php:583 adminpages/membershiplevels.php:636
675
- #: adminpages/membershiplevels.php:637 adminpages/memberslist.php:111
676
- #: adminpages/memberslist.php:144 adminpages/memberslist.php:154
677
- #: adminpages/memberslist.php:164 adminpages/orders.php:597
678
- #: adminpages/orders.php:900 adminpages/orders.php:910
679
- #: adminpages/orders.php:937 adminpages/orders.php:966
680
- #: adminpages/orders.php:1103 adminpages/reports/login.php:140
681
#: adminpages/reports/login.php:142 adminpages/reports/login.php:158
682
#: adminpages/templates/orders-email.php:46
683
#: adminpages/templates/orders-print.php:75
@@ -689,7 +707,7 @@ msgstr ""
689
#: adminpages/discountcodes.php:311 adminpages/discountcodes.php:312
690
#: adminpages/orders.php:211 adminpages/orders.php:261
691
#: adminpages/orders.php:333 adminpages/orders.php:344
692
- #: adminpages/orders.php:362
693
msgid "This will be generated when you save."
694
msgstr ""
695
@@ -702,9 +720,10 @@ msgstr ""
702
#: adminpages/discountcodes.php:588 adminpages/orders.php:215
703
#: adminpages/orders.php:265 adminpages/orders.php:337
704
#: adminpages/orders.php:349 adminpages/orders.php:366
705
- #: adminpages/orders.php:598 adminpages/orders.php:901
706
- #: adminpages/orders.php:911 adminpages/orders.php:938
707
- #: adminpages/orders.php:967 adminpages/orders.php:1104
708
msgid "Code"
709
msgstr ""
710
@@ -716,25 +735,28 @@ msgstr ""
716
717
#: adminpages/discountcodes.php:372
718
#: classes/gateways/class.pmprogateway_braintree.php:327
719
- #: classes/gateways/class.pmprogateway_stripe.php:503 pages/billing.php:310
720
- #: pages/checkout.php:575 adminpages/discountcodes.php:367
721
#: adminpages/discountcodes.php:370 adminpages/discountcodes.php:371
722
#: adminpages/discountcodes.php:372
723
#: classes/gateways/class.pmprogateway_braintree.php:308
724
#: classes/gateways/class.pmprogateway_braintree.php:321
725
#: classes/gateways/class.pmprogateway_braintree.php:323
726
#: classes/gateways/class.pmprogateway_braintree.php:326
727
#: classes/gateways/class.pmprogateway_stripe.php:454
728
#: classes/gateways/class.pmprogateway_stripe.php:455
729
#: classes/gateways/class.pmprogateway_stripe.php:465
730
#: classes/gateways/class.pmprogateway_stripe.php:469
731
#: classes/gateways/class.pmprogateway_stripe.php:495
732
#: classes/gateways/class.pmprogateway_stripe.php:498
733
- #: classes/gateways/class.pmprogateway_stripe.php:500 pages/billing.php:249
734
#: pages/billing.php:253 pages/billing.php:262 pages/billing.php:265
735
- #: pages/billing.php:268 pages/checkout.php:508 pages/checkout.php:524
736
- #: pages/checkout.php:525 pages/checkout.php:532 pages/checkout.php:553
737
- #: pages/checkout.php:562 pages/checkout.php:571 pages/checkout.php:575
738
msgid "Expiration Date"
739
msgstr ""
740
@@ -807,7 +829,7 @@ msgstr ""
807
808
#: adminpages/discountcodes.php:468 adminpages/discountcodes.php:522
809
#: adminpages/membershiplevels.php:376 adminpages/membershiplevels.php:479
810
- #: classes/gateways/class.pmprogateway_stripe.php:570
811
#: adminpages/discountcodes.php:446 adminpages/discountcodes.php:466
812
#: adminpages/discountcodes.php:467 adminpages/discountcodes.php:468
813
#: adminpages/discountcodes.php:492 adminpages/discountcodes.php:520
@@ -824,12 +846,13 @@ msgstr ""
824
#: classes/gateways/class.pmprogateway_stripe.php:562
825
#: classes/gateways/class.pmprogateway_stripe.php:566
826
#: classes/gateways/class.pmprogateway_stripe.php:567
827
msgid "Day(s)"
828
msgstr ""
829
830
#: adminpages/discountcodes.php:468 adminpages/discountcodes.php:522
831
#: adminpages/membershiplevels.php:376 adminpages/membershiplevels.php:479
832
- #: classes/gateways/class.pmprogateway_stripe.php:570
833
#: adminpages/discountcodes.php:446 adminpages/discountcodes.php:466
834
#: adminpages/discountcodes.php:467 adminpages/discountcodes.php:468
835
#: adminpages/discountcodes.php:492 adminpages/discountcodes.php:520
@@ -846,12 +869,13 @@ msgstr ""
846
#: classes/gateways/class.pmprogateway_stripe.php:562
847
#: classes/gateways/class.pmprogateway_stripe.php:566
848
#: classes/gateways/class.pmprogateway_stripe.php:567
849
msgid "Month(s)"
850
msgstr ""
851
852
#: adminpages/discountcodes.php:468 adminpages/discountcodes.php:522
853
#: adminpages/membershiplevels.php:376 adminpages/membershiplevels.php:479
854
- #: classes/gateways/class.pmprogateway_stripe.php:570
855
#: adminpages/discountcodes.php:446 adminpages/discountcodes.php:466
856
#: adminpages/discountcodes.php:467 adminpages/discountcodes.php:468
857
#: adminpages/discountcodes.php:492 adminpages/discountcodes.php:520
@@ -868,12 +892,13 @@ msgstr ""
868
#: classes/gateways/class.pmprogateway_stripe.php:562
869
#: classes/gateways/class.pmprogateway_stripe.php:566
870
#: classes/gateways/class.pmprogateway_stripe.php:567
871
msgid "Week(s)"
872
msgstr ""
873
874
#: adminpages/discountcodes.php:468 adminpages/discountcodes.php:522
875
#: adminpages/membershiplevels.php:376 adminpages/membershiplevels.php:479
876
- #: classes/gateways/class.pmprogateway_stripe.php:570
877
#: adminpages/discountcodes.php:446 adminpages/discountcodes.php:466
878
#: adminpages/discountcodes.php:467 adminpages/discountcodes.php:468
879
#: adminpages/discountcodes.php:492 adminpages/discountcodes.php:520
@@ -890,6 +915,7 @@ msgstr ""
890
#: classes/gateways/class.pmprogateway_stripe.php:562
891
#: classes/gateways/class.pmprogateway_stripe.php:566
892
#: classes/gateways/class.pmprogateway_stripe.php:567
893
msgid "Year(s)"
894
msgstr ""
895
@@ -1074,7 +1100,7 @@ msgid ""
1074
"select customers."
1075
msgstr ""
1076
1077
- #: adminpages/discountcodes.php:650 adminpages/membershiplevels.php:674
1078
#: adminpages/orders.php:1239 adminpages/discountcodes.php:614
1079
#: adminpages/discountcodes.php:619 adminpages/discountcodes.php:647
1080
#: adminpages/discountcodes.php:648 adminpages/discountcodes.php:649
@@ -1082,11 +1108,12 @@ msgstr ""
1082
#: adminpages/membershiplevels.php:570 adminpages/membershiplevels.php:572
1083
#: adminpages/membershiplevels.php:580 adminpages/membershiplevels.php:599
1084
#: adminpages/membershiplevels.php:660 adminpages/membershiplevels.php:669
1085
- #: adminpages/membershiplevels.php:670 adminpages/orders.php:658
1086
- #: adminpages/orders.php:961 adminpages/orders.php:979
1087
- #: adminpages/orders.php:989 adminpages/orders.php:992
1088
- #: adminpages/orders.php:1021 adminpages/orders.php:1050
1089
- #: adminpages/orders.php:1205
1090
msgid "edit"
1091
msgstr ""
1092
@@ -1101,7 +1128,7 @@ msgid ""
1101
"code anymore."
1102
msgstr ""
1103
1104
- #: adminpages/discountcodes.php:653 adminpages/membershiplevels.php:674
1105
#: adminpages/orders.php:1245 adminpages/discountcodes.php:617
1106
#: adminpages/discountcodes.php:622 adminpages/discountcodes.php:650
1107
#: adminpages/discountcodes.php:651 adminpages/discountcodes.php:652
@@ -1109,11 +1136,12 @@ msgstr ""
1109
#: adminpages/membershiplevels.php:572 adminpages/membershiplevels.php:574
1110
#: adminpages/membershiplevels.php:580 adminpages/membershiplevels.php:601
1111
#: adminpages/membershiplevels.php:660 adminpages/membershiplevels.php:669
1112
- #: adminpages/membershiplevels.php:670 adminpages/orders.php:664
1113
- #: adminpages/orders.php:967 adminpages/orders.php:985
1114
- #: adminpages/orders.php:995 adminpages/orders.php:998
1115
- #: adminpages/orders.php:1027 adminpages/orders.php:1056
1116
- #: adminpages/orders.php:1211
1117
msgid "delete"
1118
msgstr ""
1119
@@ -1286,15 +1314,15 @@ msgstr ""
1286
msgid "Add New Membership Level"
1287
msgstr ""
1288
1289
- #: adminpages/membershiplevels.php:295 adminpages/membershiplevels.php:642
1290
#: adminpages/reports/login.php:160 adminpages/membershiplevels.php:291
1291
#: adminpages/membershiplevels.php:293 adminpages/membershiplevels.php:295
1292
#: adminpages/membershiplevels.php:506 adminpages/membershiplevels.php:512
1293
#: adminpages/membershiplevels.php:514 adminpages/membershiplevels.php:541
1294
#: adminpages/membershiplevels.php:542 adminpages/membershiplevels.php:584
1295
#: adminpages/membershiplevels.php:637 adminpages/membershiplevels.php:638
1296
- #: adminpages/reports/login.php:142 adminpages/reports/login.php:144
1297
- #: adminpages/reports/login.php:160
1298
msgid "Name"
1299
msgstr ""
1300
@@ -1303,16 +1331,17 @@ msgstr ""
1303
msgid "Confirmation Message"
1304
msgstr ""
1305
1306
- #: adminpages/membershiplevels.php:337 adminpages/membershiplevels.php:643
1307
#: adminpages/membershiplevels.php:333 adminpages/membershiplevels.php:335
1308
#: adminpages/membershiplevels.php:337 adminpages/membershiplevels.php:338
1309
#: adminpages/membershiplevels.php:543 adminpages/membershiplevels.php:585
1310
#: adminpages/membershiplevels.php:638 adminpages/membershiplevels.php:639
1311
msgid "Billing Details"
1312
msgstr ""
1313
1314
#: adminpages/membershiplevels.php:372
1315
- #: classes/gateways/class.pmprogateway_stripe.php:668
1316
#: adminpages/membershiplevels.php:349 adminpages/membershiplevels.php:351
1317
#: adminpages/membershiplevels.php:370 adminpages/membershiplevels.php:372
1318
#: adminpages/membershiplevels.php:373
@@ -1323,6 +1352,7 @@ msgstr ""
1323
#: classes/gateways/class.pmprogateway_stripe.php:660
1324
#: classes/gateways/class.pmprogateway_stripe.php:664
1325
#: classes/gateways/class.pmprogateway_stripe.php:665
1326
msgid "per"
1327
msgstr ""
1328
@@ -1372,8 +1402,10 @@ msgstr ""
1372
#: adminpages/paymentsettings.php:179
1373
#: classes/gateways/class.pmprogateway_cybersource.php:101
1374
#: classes/gateways/class.pmprogateway_paypal.php:118
1375
#: classes/gateways/class.pmprogateway_paypalexpress.php:123
1376
#: classes/gateways/class.pmprogateway_paypalexpress.php:133
1377
#: classes/gateways/class.pmprogateway_paypalstandard.php:117
1378
msgid "Note"
1379
msgstr ""
@@ -1464,25 +1496,26 @@ msgstr ""
1464
msgid "Categories"
1465
msgstr ""
1466
1467
- #: adminpages/membershiplevels.php:517 adminpages/membershiplevels.php:516
1468
#: adminpages/membershiplevels.php:517
1469
msgid "Save Level"
1470
msgstr ""
1471
1472
- #: adminpages/membershiplevels.php:518 adminpages/orders.php:796
1473
- #: pages/billing.php:392 pages/cancel.php:71 shortcodes/pmpro_account.php:72
1474
#: adminpages/membershiplevels.php:517 adminpages/membershiplevels.php:518
1475
#: adminpages/orders.php:511 adminpages/orders.php:561
1476
#: adminpages/orders.php:633 adminpages/orders.php:662
1477
- #: adminpages/orders.php:765 pages/account.php:44 pages/billing.php:295
1478
- #: pages/billing.php:299 pages/billing.php:330 pages/billing.php:339
1479
- #: pages/billing.php:342 pages/billing.php:344 pages/billing.php:348
1480
- #: pages/cancel.php:71 shortcodes/pmpro_account.php:70
1481
#: shortcodes/pmpro_account.php:73
1482
msgid "Cancel"
1483
msgstr ""
1484
1485
- #: adminpages/membershiplevels.php:619 adminpages/membershiplevels.php:490
1486
#: adminpages/membershiplevels.php:496 adminpages/membershiplevels.php:498
1487
#: adminpages/membershiplevels.php:525 adminpages/membershiplevels.php:526
1488
#: adminpages/membershiplevels.php:569 adminpages/membershiplevels.php:618
@@ -1490,7 +1523,7 @@ msgstr ""
1490
msgid "Add New Level"
1491
msgstr ""
1492
1493
- #: adminpages/membershiplevels.php:622 adminpages/membershiplevels.php:625
1494
#: adminpages/membershiplevels.php:493 adminpages/membershiplevels.php:496
1495
#: adminpages/membershiplevels.php:499 adminpages/membershiplevels.php:501
1496
#: adminpages/membershiplevels.php:502 adminpages/membershiplevels.php:504
@@ -1502,67 +1535,69 @@ msgstr ""
1502
msgid "Search Levels"
1503
msgstr ""
1504
1505
- #: adminpages/membershiplevels.php:631 adminpages/membershiplevels.php:579
1506
#: adminpages/membershiplevels.php:630 adminpages/membershiplevels.php:631
1507
msgid "Drag and drop membership levels to reorder them on the Levels page."
1508
msgstr ""
1509
1510
- #: adminpages/membershiplevels.php:644 pages/cancel.php:53
1511
- #: pages/confirmation.php:83 pages/invoice.php:70
1512
- #: shortcodes/pmpro_account.php:45 adminpages/membershiplevels.php:510
1513
#: adminpages/membershiplevels.php:516 adminpages/membershiplevels.php:518
1514
#: adminpages/membershiplevels.php:544 adminpages/membershiplevels.php:545
1515
#: adminpages/membershiplevels.php:586 adminpages/membershiplevels.php:639
1516
- #: adminpages/membershiplevels.php:640 pages/account.php:20
1517
- #: pages/cancel.php:53 pages/confirmation.php:81 pages/confirmation.php:83
1518
- #: pages/invoice.php:68 pages/invoice.php:70 shortcodes/pmpro_account.php:46
1519
msgid "Expiration"
1520
msgstr ""
1521
1522
- #: adminpages/membershiplevels.php:645 adminpages/membershiplevels.php:511
1523
#: adminpages/membershiplevels.php:517 adminpages/membershiplevels.php:519
1524
#: adminpages/membershiplevels.php:545 adminpages/membershiplevels.php:546
1525
#: adminpages/membershiplevels.php:587 adminpages/membershiplevels.php:640
1526
- #: adminpages/membershiplevels.php:641
1527
msgid "Allow Signups"
1528
msgstr ""
1529
1530
- #: adminpages/membershiplevels.php:660 adminpages/membershiplevels.php:534
1531
#: adminpages/membershiplevels.php:540 adminpages/membershiplevels.php:542
1532
#: adminpages/membershiplevels.php:566 adminpages/membershiplevels.php:569
1533
#: adminpages/membershiplevels.php:646 adminpages/membershiplevels.php:655
1534
- #: adminpages/membershiplevels.php:656
1535
msgid "FREE"
1536
msgstr ""
1537
1538
- #: adminpages/membershiplevels.php:669 adminpages/membershiplevels.php:560
1539
#: adminpages/membershiplevels.php:566 adminpages/membershiplevels.php:568
1540
#: adminpages/membershiplevels.php:575 adminpages/membershiplevels.php:595
1541
#: adminpages/membershiplevels.php:655 adminpages/membershiplevels.php:664
1542
- #: adminpages/membershiplevels.php:665
1543
msgid "After"
1544
msgstr ""
1545
1546
- #: adminpages/membershiplevels.php:674 adminpages/membershiplevels.php:566
1547
#: adminpages/membershiplevels.php:572 adminpages/membershiplevels.php:574
1548
#: adminpages/membershiplevels.php:580 adminpages/membershiplevels.php:601
1549
#: adminpages/membershiplevels.php:660 adminpages/membershiplevels.php:669
1550
- #: adminpages/membershiplevels.php:670
1551
#, php-format
1552
msgid ""
1553
"Are you sure you want to delete membership level %s? All subscriptions will "
1554
"be cancelled."
1555
msgstr ""
1556
1557
- #: adminpages/membershiplevels.php:674 adminpages/orders.php:1242
1558
#: adminpages/membershiplevels.php:565 adminpages/membershiplevels.php:571
1559
#: adminpages/membershiplevels.php:573 adminpages/membershiplevels.php:580
1560
#: adminpages/membershiplevels.php:600 adminpages/membershiplevels.php:660
1561
#: adminpages/membershiplevels.php:669 adminpages/membershiplevels.php:670
1562
- #: adminpages/orders.php:661 adminpages/orders.php:964
1563
- #: adminpages/orders.php:982 adminpages/orders.php:992
1564
- #: adminpages/orders.php:995 adminpages/orders.php:1024
1565
- #: adminpages/orders.php:1053 adminpages/orders.php:1208
1566
msgid "copy"
1567
msgstr ""
1568
@@ -1579,6 +1614,7 @@ msgstr ""
1579
#: adminpages/memberslist.php:26 adminpages/orders.php:522
1580
#: adminpages/orders.php:591 adminpages/orders.php:698
1581
#: adminpages/orders.php:727 adminpages/orders.php:833
1582
msgid "Export to CSV"
1583
msgstr ""
1584
@@ -1587,8 +1623,9 @@ msgstr ""
1587
#: adminpages/reports/sales.php:202 adminpages/memberslist.php:30
1588
#: adminpages/orders.php:603 adminpages/orders.php:710
1589
#: adminpages/orders.php:739 adminpages/orders.php:848
1590
- #: adminpages/reports/login.php:65 adminpages/reports/login.php:67
1591
- #: adminpages/reports/login.php:83 adminpages/reports/memberships.php:256
1592
#: adminpages/reports/memberships.php:263
1593
#: adminpages/reports/memberships.php:276
1594
#: adminpages/reports/memberships.php:292 adminpages/reports/sales.php:185
@@ -1599,6 +1636,7 @@ msgstr ""
1599
1600
#: adminpages/memberslist.php:32 adminpages/reports/login.php:85
1601
#: adminpages/reports/memberships.php:303 adminpages/reports/sales.php:225
1602
#: adminpages/memberslist.php:32 adminpages/reports/login.php:67
1603
#: adminpages/reports/login.php:69 adminpages/reports/login.php:85
1604
#: adminpages/reports/memberships.php:281
@@ -1637,14 +1675,14 @@ msgstr ""
1637
msgid "%d members found."
1638
msgstr ""
1639
1640
- #: adminpages/memberslist.php:165 pages/checkout.php:184
1641
- #: shortcodes/pmpro_account.php:107 adminpages/memberslist.php:112
1642
#: adminpages/memberslist.php:145 adminpages/memberslist.php:155
1643
#: adminpages/memberslist.php:165 pages/account.php:51 pages/account.php:55
1644
#: pages/account.php:76 pages/checkout.php:168 pages/checkout.php:171
1645
#: pages/checkout.php:173 pages/checkout.php:180 pages/checkout.php:182
1646
#: pages/checkout.php:184 shortcodes/pmpro_account.php:105
1647
- #: shortcodes/pmpro_account.php:108
1648
msgid "Username"
1649
msgstr ""
1650
@@ -1660,16 +1698,17 @@ msgstr ""
1660
msgid "Last&nbsp;Name"
1661
msgstr ""
1662
1663
- #: adminpages/memberslist.php:170 pages/billing.php:76 pages/checkout.php:319
1664
- #: pages/confirmation.php:61 pages/invoice.php:48
1665
#: adminpages/memberslist.php:117 adminpages/memberslist.php:150
1666
#: adminpages/memberslist.php:160 adminpages/memberslist.php:170
1667
#: pages/account.php:90 pages/account.php:94 pages/billing.php:58
1668
#: pages/billing.php:62 pages/billing.php:71 pages/billing.php:74
1669
- #: pages/checkout.php:298 pages/checkout.php:300 pages/checkout.php:302
1670
- #: pages/checkout.php:311 pages/checkout.php:314 pages/checkout.php:317
1671
- #: pages/checkout.php:319 pages/checkout.php:321 pages/confirmation.php:59
1672
- #: pages/confirmation.php:61 pages/invoice.php:46 pages/invoice.php:48
1673
msgid "Billing Address"
1674
msgstr ""
1675
@@ -1703,7 +1742,7 @@ msgstr ""
1703
msgid "Ended"
1704
msgstr ""
1705
1706
- #: adminpages/memberslist.php:261 adminpages/reports/login.php:228
1707
#: adminpages/memberslist.php:195 adminpages/memberslist.php:223
1708
#: adminpages/memberslist.php:251 adminpages/memberslist.php:261
1709
#: adminpages/reports/login.php:210 adminpages/reports/login.php:212
@@ -1711,7 +1750,7 @@ msgstr ""
1711
msgid "No members found."
1712
msgstr ""
1713
1714
- #: adminpages/memberslist.php:261 adminpages/reports/login.php:228
1715
#: adminpages/memberslist.php:195 adminpages/memberslist.php:223
1716
#: adminpages/memberslist.php:251 adminpages/memberslist.php:261
1717
#: adminpages/reports/login.php:210 adminpages/reports/login.php:212
@@ -1741,97 +1780,110 @@ msgstr ""
1741
1742
#: adminpages/orders.php:285 adminpages/orders.php:119
1743
#: adminpages/orders.php:169 adminpages/orders.php:270
1744
- #: adminpages/orders.php:284
1745
msgid "Order saved successfully."
1746
msgstr ""
1747
1748
#: adminpages/orders.php:288 adminpages/orders.php:124
1749
#: adminpages/orders.php:174 adminpages/orders.php:275
1750
- #: adminpages/orders.php:287
1751
msgid "Error updating order timestamp."
1752
msgstr ""
1753
1754
#: adminpages/orders.php:292 adminpages/orders.php:130
1755
#: adminpages/orders.php:180 adminpages/orders.php:281
1756
- #: adminpages/orders.php:291
1757
msgid "Error saving order."
1758
msgstr ""
1759
1760
#: adminpages/orders.php:352 adminpages/orders.php:195
1761
#: adminpages/orders.php:245 adminpages/orders.php:317
1762
#: adminpages/orders.php:321 adminpages/orders.php:346
1763
msgid "Order"
1764
msgstr ""
1765
1766
#: adminpages/orders.php:354 adminpages/orders.php:197
1767
#: adminpages/orders.php:247 adminpages/orders.php:319
1768
#: adminpages/orders.php:323 adminpages/orders.php:348
1769
msgid "New Order"
1770
msgstr ""
1771
1772
#: adminpages/orders.php:390 adminpages/orders.php:220
1773
#: adminpages/orders.php:270 adminpages/orders.php:342
1774
#: adminpages/orders.php:359 adminpages/orders.php:371
1775
msgid "Randomly generated for you."
1776
msgstr ""
1777
1778
#: adminpages/orders.php:395 adminpages/orders.php:225
1779
#: adminpages/orders.php:275 adminpages/orders.php:347
1780
#: adminpages/orders.php:364 adminpages/orders.php:376
1781
msgid "User ID"
1782
msgstr ""
1783
1784
#: adminpages/orders.php:407 adminpages/orders.php:234
1785
#: adminpages/orders.php:284 adminpages/orders.php:356
1786
#: adminpages/orders.php:376 adminpages/orders.php:385
1787
msgid "Membership Level ID"
1788
msgstr ""
1789
1790
#: adminpages/orders.php:420 adminpages/orders.php:243
1791
#: adminpages/orders.php:293 adminpages/orders.php:365
1792
#: adminpages/orders.php:389 adminpages/orders.php:394
1793
msgid "Billing Name"
1794
msgstr ""
1795
1796
#: adminpages/orders.php:432 adminpages/orders.php:251
1797
#: adminpages/orders.php:301 adminpages/orders.php:373
1798
#: adminpages/orders.php:401 adminpages/orders.php:402
1799
msgid "Billing Street"
1800
msgstr ""
1801
1802
#: adminpages/orders.php:443 adminpages/orders.php:258
1803
#: adminpages/orders.php:308 adminpages/orders.php:380
1804
#: adminpages/orders.php:409 adminpages/orders.php:412
1805
msgid "Billing City"
1806
msgstr ""
1807
1808
#: adminpages/orders.php:454 adminpages/orders.php:265
1809
#: adminpages/orders.php:315 adminpages/orders.php:387
1810
#: adminpages/orders.php:416 adminpages/orders.php:423
1811
msgid "Billing State"
1812
msgstr ""
1813
1814
#: adminpages/orders.php:465 adminpages/orders.php:272
1815
#: adminpages/orders.php:322 adminpages/orders.php:394
1816
#: adminpages/orders.php:423 adminpages/orders.php:434
1817
msgid "Billing Postal Code"
1818
msgstr ""
1819
1820
#: adminpages/orders.php:476 adminpages/orders.php:279
1821
#: adminpages/orders.php:329 adminpages/orders.php:401
1822
#: adminpages/orders.php:430 adminpages/orders.php:445
1823
msgid "Billing Country"
1824
msgstr ""
1825
1826
#: adminpages/orders.php:488 adminpages/orders.php:287
1827
#: adminpages/orders.php:337 adminpages/orders.php:409
1828
#: adminpages/orders.php:438 adminpages/orders.php:457
1829
msgid "Billing Phone"
1830
msgstr ""
1831
1832
#: adminpages/orders.php:501 adminpages/orders.php:296
1833
#: adminpages/orders.php:346 adminpages/orders.php:418
1834
#: adminpages/orders.php:447 adminpages/orders.php:470
1835
msgid "Sub Total"
1836
msgstr ""
1837
@@ -1839,7 +1891,8 @@ msgstr ""
1839
#: adminpages/templates/orders-print.php:89 pages/invoice.php:80
1840
#: adminpages/orders.php:304 adminpages/orders.php:354
1841
#: adminpages/orders.php:426 adminpages/orders.php:455
1842
- #: adminpages/orders.php:481 adminpages/templates/orders-email.php:60
1843
#: adminpages/templates/orders-print.php:89 pages/invoice.php:78
1844
#: pages/invoice.php:80
1845
msgid "Tax"
@@ -1848,6 +1901,7 @@ msgstr ""
1848
#: adminpages/orders.php:523 adminpages/orders.php:312
1849
#: adminpages/orders.php:362 adminpages/orders.php:434
1850
#: adminpages/orders.php:463 adminpages/orders.php:492
1851
msgid "Coupon Amount"
1852
msgstr ""
1853
@@ -1856,10 +1910,11 @@ msgstr ""
1856
#: adminpages/templates/orders-print.php:93 pages/invoice.php:84
1857
#: adminpages/orders.php:320 adminpages/orders.php:370
1858
#: adminpages/orders.php:442 adminpages/orders.php:471
1859
- #: adminpages/orders.php:504 adminpages/orders.php:602
1860
- #: adminpages/orders.php:905 adminpages/orders.php:915
1861
- #: adminpages/orders.php:942 adminpages/orders.php:971
1862
- #: adminpages/orders.php:1108 adminpages/templates/orders-email.php:64
1863
#: adminpages/templates/orders-print.php:93 pages/invoice.php:82
1864
#: pages/invoice.php:84
1865
msgid "Total"
@@ -1868,48 +1923,54 @@ msgstr ""
1868
#: adminpages/orders.php:544 adminpages/orders.php:325
1869
#: adminpages/orders.php:375 adminpages/orders.php:447
1870
#: adminpages/orders.php:476 adminpages/orders.php:513
1871
msgid "Should be subtotal + tax - couponamount."
1872
msgstr ""
1873
1874
#: adminpages/orders.php:549 adminpages/orders.php:330
1875
#: adminpages/orders.php:380 adminpages/orders.php:452
1876
#: adminpages/orders.php:481 adminpages/orders.php:518
1877
msgid "Payment Type"
1878
msgstr ""
1879
1880
#: adminpages/orders.php:559 adminpages/orders.php:335
1881
#: adminpages/orders.php:385 adminpages/orders.php:457
1882
#: adminpages/orders.php:486 adminpages/orders.php:528
1883
msgid "e.g. PayPal Express, PayPal Standard, Credit Card."
1884
msgstr ""
1885
1886
#: adminpages/orders.php:563
1887
#: classes/gateways/class.pmprogateway_braintree.php:310
1888
- #: classes/gateways/class.pmprogateway_stripe.php:455 pages/billing.php:262
1889
- #: pages/checkout.php:527 adminpages/orders.php:339 adminpages/orders.php:389
1890
#: adminpages/orders.php:461 adminpages/orders.php:490
1891
- #: adminpages/orders.php:532
1892
#: classes/gateways/class.pmprogateway_braintree.php:291
1893
#: classes/gateways/class.pmprogateway_braintree.php:304
1894
#: classes/gateways/class.pmprogateway_braintree.php:306
1895
#: classes/gateways/class.pmprogateway_braintree.php:309
1896
#: classes/gateways/class.pmprogateway_stripe.php:408
1897
#: classes/gateways/class.pmprogateway_stripe.php:409
1898
#: classes/gateways/class.pmprogateway_stripe.php:419
1899
#: classes/gateways/class.pmprogateway_stripe.php:423
1900
#: classes/gateways/class.pmprogateway_stripe.php:447
1901
#: classes/gateways/class.pmprogateway_stripe.php:450
1902
- #: classes/gateways/class.pmprogateway_stripe.php:452 pages/billing.php:234
1903
#: pages/billing.php:238 pages/billing.php:247 pages/billing.php:250
1904
- #: pages/billing.php:253 pages/checkout.php:493 pages/checkout.php:507
1905
- #: pages/checkout.php:510 pages/checkout.php:516 pages/checkout.php:517
1906
- #: pages/checkout.php:525 pages/checkout.php:527
1907
msgid "Card Type"
1908
msgstr ""
1909
1910
#: adminpages/orders.php:571 adminpages/orders.php:344
1911
#: adminpages/orders.php:394 adminpages/orders.php:466
1912
#: adminpages/orders.php:495 adminpages/orders.php:540
1913
msgid "e.g. Visa, MasterCard, AMEX, etc"
1914
msgstr ""
1915
@@ -1917,8 +1978,8 @@ msgstr ""
1917
#: classes/gateways/class.pmprogateway_twocheckout.php:137
1918
#: adminpages/orders.php:348 adminpages/orders.php:398
1919
#: adminpages/orders.php:470 adminpages/orders.php:499
1920
- #: adminpages/orders.php:544 adminpages/paymentsettings.php:347
1921
- #: adminpages/paymentsettings.php:352
1922
#: classes/gateways/class.pmprogateway_twocheckout.php:129
1923
#: classes/gateways/class.pmprogateway_twocheckout.php:137
1924
#: classes/gateways/class.pmprogateway_twocheckout.php:148
@@ -1928,18 +1989,21 @@ msgstr ""
1928
#: adminpages/orders.php:584 adminpages/orders.php:353
1929
#: adminpages/orders.php:403 adminpages/orders.php:475
1930
#: adminpages/orders.php:504 adminpages/orders.php:553
1931
msgid "Obscure all but last 4 digits."
1932
msgstr ""
1933
1934
#: adminpages/orders.php:592 adminpages/orders.php:358
1935
#: adminpages/orders.php:408 adminpages/orders.php:480
1936
#: adminpages/orders.php:509 adminpages/orders.php:561
1937
msgid "Expiration Month"
1938
msgstr ""
1939
1940
#: adminpages/orders.php:600 adminpages/orders.php:365
1941
#: adminpages/orders.php:415 adminpages/orders.php:487
1942
#: adminpages/orders.php:516 adminpages/orders.php:569
1943
msgid "Expiration Year"
1944
msgstr ""
1945
@@ -1947,9 +2011,10 @@ msgstr ""
1947
#: adminpages/orders.php:373 adminpages/orders.php:423
1948
#: adminpages/orders.php:495 adminpages/orders.php:524
1949
#: adminpages/orders.php:579 adminpages/orders.php:606
1950
- #: adminpages/orders.php:909 adminpages/orders.php:919
1951
- #: adminpages/orders.php:946 adminpages/orders.php:975
1952
- #: adminpages/orders.php:1112
1953
msgid "Status"
1954
msgstr ""
1955
@@ -1957,9 +2022,10 @@ msgstr ""
1957
#: adminpages/orders.php:394 adminpages/orders.php:444
1958
#: adminpages/orders.php:516 adminpages/orders.php:545
1959
#: adminpages/orders.php:604 adminpages/orders.php:612
1960
- #: adminpages/orders.php:907 adminpages/orders.php:917
1961
- #: adminpages/orders.php:944 adminpages/orders.php:973
1962
- #: adminpages/orders.php:1110
1963
msgid "Gateway"
1964
msgstr ""
1965
@@ -1967,8 +2033,9 @@ msgstr ""
1967
#: adminpages/orders.php:411 adminpages/orders.php:461
1968
#: adminpages/orders.php:462 adminpages/orders.php:534
1969
#: adminpages/orders.php:563 adminpages/orders.php:633
1970
- #: adminpages/paymentsettings.php:124 adminpages/paymentsettings.php:175
1971
- #: adminpages/paymentsettings.php:179 adminpages/paymentsettings.php:184
1972
msgid "Gateway Environment"
1973
msgstr ""
1974
@@ -1976,8 +2043,9 @@ msgstr ""
1976
#: adminpages/orders.php:415 adminpages/orders.php:465
1977
#: adminpages/orders.php:466 adminpages/orders.php:538
1978
#: adminpages/orders.php:567 adminpages/orders.php:640
1979
- #: adminpages/paymentsettings.php:128 adminpages/paymentsettings.php:179
1980
- #: adminpages/paymentsettings.php:183 adminpages/paymentsettings.php:188
1981
msgid "Sandbox/Testing"
1982
msgstr ""
1983
@@ -1985,88 +2053,97 @@ msgstr ""
1985
#: adminpages/orders.php:416 adminpages/orders.php:466
1986
#: adminpages/orders.php:467 adminpages/orders.php:539
1987
#: adminpages/orders.php:568 adminpages/orders.php:642
1988
- #: adminpages/paymentsettings.php:129 adminpages/paymentsettings.php:180
1989
- #: adminpages/paymentsettings.php:184 adminpages/paymentsettings.php:189
1990
msgid "Live/Production"
1991
msgstr ""
1992
1993
#: adminpages/orders.php:681 adminpages/orders.php:423
1994
#: adminpages/orders.php:473 adminpages/orders.php:474
1995
#: adminpages/orders.php:546 adminpages/orders.php:575
1996
- #: adminpages/orders.php:650
1997
msgid "Payment Transaction ID"
1998
msgstr ""
1999
2000
#: adminpages/orders.php:690 adminpages/orders.php:428
2001
#: adminpages/orders.php:478 adminpages/orders.php:479
2002
#: adminpages/orders.php:551 adminpages/orders.php:580
2003
- #: adminpages/orders.php:659
2004
msgid "Generated by the gateway. Useful to cross reference orders."
2005
msgstr ""
2006
2007
#: adminpages/orders.php:695 adminpages/orders.php:432
2008
#: adminpages/orders.php:482 adminpages/orders.php:483
2009
#: adminpages/orders.php:555 adminpages/orders.php:584
2010
- #: adminpages/orders.php:664
2011
msgid "Subscription Transaction ID"
2012
msgstr ""
2013
2014
#: adminpages/orders.php:705 adminpages/orders.php:437
2015
#: adminpages/orders.php:487 adminpages/orders.php:488
2016
#: adminpages/orders.php:560 adminpages/orders.php:589
2017
- #: adminpages/orders.php:674
2018
msgid "Generated by the gateway. Useful to cross reference subscriptions."
2019
msgstr ""
2020
2021
#: adminpages/orders.php:710 adminpages/orders.php:1144 pages/invoice.php:107
2022
- #: shortcodes/pmpro_account.php:124 adminpages/orders.php:442
2023
#: adminpages/orders.php:492 adminpages/orders.php:493
2024
#: adminpages/orders.php:565 adminpages/orders.php:594
2025
#: adminpages/orders.php:607 adminpages/orders.php:679
2026
- #: adminpages/orders.php:910 adminpages/orders.php:920
2027
- #: adminpages/orders.php:947 adminpages/orders.php:976
2028
- #: adminpages/orders.php:1113 pages/account.php:91 pages/invoice.php:105
2029
#: pages/invoice.php:107 shortcodes/pmpro_account.php:122
2030
- #: shortcodes/pmpro_account.php:125
2031
msgid "Date"
2032
msgstr ""
2033
2034
#: adminpages/orders.php:747 adminpages/orders.php:477
2035
#: adminpages/orders.php:527 adminpages/orders.php:599
2036
#: adminpages/orders.php:628 adminpages/orders.php:716
2037
msgid "Affiliate ID"
2038
msgstr ""
2039
2040
#: adminpages/orders.php:759 adminpages/orders.php:485
2041
#: adminpages/orders.php:535 adminpages/orders.php:607
2042
#: adminpages/orders.php:636 adminpages/orders.php:728
2043
msgid "Affiliate SubID"
2044
msgstr ""
2045
2046
#: adminpages/orders.php:773 adminpages/orders.php:495
2047
#: adminpages/orders.php:545 adminpages/orders.php:617
2048
#: adminpages/orders.php:646 adminpages/orders.php:742
2049
msgid "Notes"
2050
msgstr ""
2051
2052
#: adminpages/orders.php:795 adminpages/orders.php:510
2053
#: adminpages/orders.php:560 adminpages/orders.php:632
2054
#: adminpages/orders.php:661 adminpages/orders.php:764
2055
msgid "Save Order"
2056
msgstr ""
2057
2058
#: adminpages/orders.php:831 adminpages/orders.php:667
2059
#: adminpages/orders.php:696 adminpages/orders.php:800
2060
msgid "Email Invoice"
2061
msgstr ""
2062
2063
#: adminpages/orders.php:834 adminpages/orders.php:670
2064
#: adminpages/orders.php:699 adminpages/orders.php:803
2065
msgid "Send an invoice for this order to: "
2066
msgstr ""
2067
2068
#: adminpages/orders.php:836 adminpages/orders.php:672
2069
#: adminpages/orders.php:701 adminpages/orders.php:805
2070
msgid "Send Email"
2071
msgstr ""
2072
@@ -2074,64 +2151,66 @@ msgstr ""
2074
#: includes/adminpages.php:172 adminpages/orders.php:520
2075
#: adminpages/orders.php:570 adminpages/orders.php:677
2076
#: adminpages/orders.php:706 adminpages/orders.php:810
2077
- #: includes/adminpages.php:17 includes/adminpages.php:55
2078
- #: includes/adminpages.php:56 includes/adminpages.php:84
2079
- #: includes/adminpages.php:156 includes/adminpages.php:163
2080
- #: includes/adminpages.php:167 includes/adminpages.php:172
2081
msgid "Orders"
2082
msgstr ""
2083
2084
#: adminpages/orders.php:843 adminpages/orders.php:521
2085
#: adminpages/orders.php:571 adminpages/orders.php:678
2086
#: adminpages/orders.php:707 adminpages/orders.php:812
2087
msgid "Add New Order"
2088
msgstr ""
2089
2090
#: adminpages/orders.php:883 adminpages/orders.php:606
2091
#: adminpages/orders.php:713 adminpages/orders.php:742
2092
- #: adminpages/orders.php:852
2093
msgid "Within a Date Range"
2094
msgstr ""
2095
2096
#: adminpages/orders.php:885 adminpages/orders.php:607
2097
#: adminpages/orders.php:714 adminpages/orders.php:743
2098
- #: adminpages/orders.php:854
2099
msgid "Predefined Date Range"
2100
msgstr ""
2101
2102
#: adminpages/orders.php:887 adminpages/orders.php:608
2103
#: adminpages/orders.php:715 adminpages/orders.php:744
2104
- #: adminpages/orders.php:856
2105
msgid "Within a Level"
2106
msgstr ""
2107
2108
#: adminpages/orders.php:889 adminpages/orders.php:609
2109
#: adminpages/orders.php:716 adminpages/orders.php:745
2110
- #: adminpages/orders.php:858
2111
msgid "Within a Status"
2112
msgstr ""
2113
2114
#: adminpages/orders.php:892 adminpages/orders.php:612
2115
#: adminpages/orders.php:719 adminpages/orders.php:748
2116
- #: adminpages/orders.php:861
2117
msgid "From"
2118
msgstr ""
2119
2120
#: adminpages/orders.php:907 adminpages/orders.php:624
2121
#: adminpages/orders.php:731 adminpages/orders.php:760
2122
- #: adminpages/orders.php:876
2123
msgid "To"
2124
msgstr ""
2125
2126
#: adminpages/orders.php:920 adminpages/orders.php:636
2127
#: adminpages/orders.php:743 adminpages/orders.php:772
2128
- #: adminpages/orders.php:889
2129
msgid "filter by "
2130
msgstr ""
2131
2132
#: adminpages/orders.php:963 adminpages/orders.php:674
2133
#: adminpages/orders.php:780 adminpages/orders.php:809
2134
- #: adminpages/orders.php:932
2135
msgid "Filter"
2136
msgstr ""
2137
@@ -2141,13 +2220,14 @@ msgstr ""
2141
#: adminpages/orders.php:883 adminpages/orders.php:886
2142
#: adminpages/orders.php:912 adminpages/orders.php:915
2143
#: adminpages/orders.php:1029 adminpages/orders.php:1032
2144
msgid "Search Orders"
2145
msgstr ""
2146
2147
#: adminpages/orders.php:1127 adminpages/orders.php:590
2148
#: adminpages/orders.php:893 adminpages/orders.php:903
2149
#: adminpages/orders.php:930 adminpages/orders.php:959
2150
- #: adminpages/orders.php:1096
2151
#, php-format
2152
msgid "%d orders found."
2153
msgstr ""
@@ -2157,24 +2237,26 @@ msgstr ""
2157
#: adminpages/orders.php:599 adminpages/orders.php:902
2158
#: adminpages/orders.php:912 adminpages/orders.php:939
2159
#: adminpages/orders.php:968 adminpages/orders.php:1105
2160
- #: adminpages/paymentsettings.php:211 adminpages/paymentsettings.php:215
2161
- #: adminpages/paymentsettings.php:220 adminpages/reports/login.php:141
2162
- #: adminpages/reports/login.php:143 adminpages/reports/login.php:159
2163
#: classes/gateways/class.pmprogateway_payflowpro.php:116
2164
msgid "User"
2165
msgstr ""
2166
2167
#: adminpages/orders.php:1138 includes/init.php:243 includes/profile.php:27
2168
- #: pages/checkout.php:42 pages/confirmation.php:47 pages/confirmation.php:64
2169
- #: pages/confirmation.php:105 pages/invoice.php:28 pages/invoice.php:51
2170
#: adminpages/orders.php:601 adminpages/orders.php:904
2171
#: adminpages/orders.php:914 adminpages/orders.php:941
2172
- #: adminpages/orders.php:970 adminpages/orders.php:1107 includes/init.php:214
2173
- #: includes/init.php:217 includes/init.php:218 includes/init.php:220
2174
- #: includes/init.php:222 includes/init.php:230 includes/init.php:238
2175
- #: includes/init.php:243 includes/profile.php:25 includes/profile.php:27
2176
- #: pages/checkout.php:33 pages/checkout.php:34 pages/checkout.php:35
2177
- #: pages/checkout.php:42 pages/confirmation.php:46 pages/confirmation.php:47
2178
#: pages/confirmation.php:62 pages/confirmation.php:64
2179
#: pages/confirmation.php:103 pages/confirmation.php:105 pages/invoice.php:27
2180
#: pages/invoice.php:28 pages/invoice.php:49 pages/invoice.php:51
@@ -2187,21 +2269,22 @@ msgstr ""
2187
#: adminpages/orders.php:943 adminpages/orders.php:954
2188
#: adminpages/orders.php:972 adminpages/orders.php:982
2189
#: adminpages/orders.php:1011 adminpages/orders.php:1040
2190
- #: adminpages/orders.php:1109 adminpages/orders.php:1186
2191
msgid "Payment"
2192
msgstr ""
2193
2194
#: adminpages/orders.php:1142 adminpages/orders.php:605
2195
#: adminpages/orders.php:908 adminpages/orders.php:918
2196
#: adminpages/orders.php:945 adminpages/orders.php:974
2197
- #: adminpages/orders.php:1111
2198
msgid "Transaction IDs"
2199
msgstr ""
2200
2201
#: adminpages/orders.php:1172 adminpages/orders.php:630
2202
#: adminpages/orders.php:933 adminpages/orders.php:943
2203
#: adminpages/orders.php:972 adminpages/orders.php:1001
2204
- #: adminpages/orders.php:1141
2205
msgid "deleted"
2206
msgstr ""
2207
@@ -2209,6 +2292,7 @@ msgstr ""
2209
#: adminpages/orders.php:956 adminpages/orders.php:974
2210
#: adminpages/orders.php:984 adminpages/orders.php:1013
2211
#: adminpages/orders.php:1042 adminpages/orders.php:1192
2212
msgid "Subscription"
2213
msgstr ""
2214
@@ -2216,7 +2300,7 @@ msgstr ""
2216
#: adminpages/orders.php:967 adminpages/orders.php:985
2217
#: adminpages/orders.php:995 adminpages/orders.php:998
2218
#: adminpages/orders.php:1027 adminpages/orders.php:1056
2219
- #: adminpages/orders.php:1211
2220
#, php-format
2221
msgid ""
2222
"Deleting orders is permanent and can affect active users. Are you sure you "
@@ -2225,11 +2309,13 @@ msgstr ""
2225
2226
#: adminpages/orders.php:1249 adminpages/orders.php:1030
2227
#: adminpages/orders.php:1059 adminpages/orders.php:1215
2228
msgid "print"
2229
msgstr ""
2230
2231
#: adminpages/orders.php:1253 adminpages/orders.php:1033
2232
#: adminpages/orders.php:1062 adminpages/orders.php:1219
2233
msgid "email"
2234
msgstr ""
2235
@@ -2237,7 +2323,7 @@ msgstr ""
2237
#: adminpages/orders.php:977 adminpages/orders.php:995
2238
#: adminpages/orders.php:1005 adminpages/orders.php:1008
2239
#: adminpages/orders.php:1043 adminpages/orders.php:1072
2240
- #: adminpages/orders.php:1228
2241
msgid "No orders found."
2242
msgstr ""
2243
@@ -2494,11 +2580,12 @@ msgstr ""
2494
msgid "Sales Tax"
2495
msgstr ""
2496
2497
- #: adminpages/paymentsettings.php:188 pages/billing.php:96
2498
#: adminpages/paymentsettings.php:188 adminpages/paymentsettings.php:398
2499
#: adminpages/paymentsettings.php:438 adminpages/paymentsettings.php:443
2500
#: adminpages/paymentsettings.php:445 pages/billing.php:78
2501
#: pages/billing.php:82 pages/billing.php:91 pages/billing.php:94
2502
msgid "optional"
2503
msgstr ""
2504
@@ -2862,7 +2949,7 @@ msgstr ""
2862
msgid "Update complete."
2863
msgstr ""
2864
2865
- #: classes/class.memberorder.php:706 classes/class.memberorder.php:553
2866
#: classes/class.memberorder.php:561 classes/class.memberorder.php:564
2867
#: classes/class.memberorder.php:573 classes/class.memberorder.php:644
2868
#: classes/class.memberorder.php:697 classes/class.memberorder.php:699
@@ -2886,26 +2973,26 @@ msgstr ""
2886
msgid "Your membership at %s has been CANCELLED"
2887
msgstr ""
2888
2889
- #: classes/class.pmproemail.php:156 classes/class.pmproemail.php:142
2890
#: classes/class.pmproemail.php:144 classes/class.pmproemail.php:147
2891
#: classes/class.pmproemail.php:156
2892
#, php-format
2893
msgid "Membership for %s at %s has been CANCELLED"
2894
msgstr ""
2895
2896
- #: classes/class.pmproemail.php:187 classes/class.pmproemail.php:172
2897
#: classes/class.pmproemail.php:173 classes/class.pmproemail.php:175
2898
#: classes/class.pmproemail.php:178 classes/class.pmproemail.php:187
2899
#, php-format
2900
msgid "Your membership confirmation for %s"
2901
msgstr ""
2902
2903
- #: classes/class.pmproemail.php:240 classes/class.pmproemail.php:249
2904
- #: classes/class.pmproemail.php:258 classes/class.pmproemail.php:337
2905
- #: classes/class.pmproemail.php:346 classes/class.pmproemail.php:659
2906
#: classes/gateways/class.pmprogateway_braintree.php:368
2907
- #: classes/gateways/class.pmprogateway_stripe.php:544 pages/checkout.php:76
2908
- #: pages/checkout.php:86 pages/checkout.php:612 pages/confirmation.php:52
2909
#: pages/invoice.php:33 classes/class.pmproemail.php:216
2910
#: classes/class.pmproemail.php:218 classes/class.pmproemail.php:225
2911
#: classes/class.pmproemail.php:227 classes/class.pmproemail.php:228
@@ -2932,7 +3019,8 @@ msgstr ""
2932
#: classes/gateways/class.pmprogateway_stripe.php:510
2933
#: classes/gateways/class.pmprogateway_stripe.php:536
2934
#: classes/gateways/class.pmprogateway_stripe.php:540
2935
- #: classes/gateways/class.pmprogateway_stripe.php:541 pages/checkout.php:66
2936
#: pages/checkout.php:67 pages/checkout.php:68 pages/checkout.php:75
2937
#: pages/checkout.php:76 pages/checkout.php:77 pages/checkout.php:78
2938
#: pages/checkout.php:85 pages/checkout.php:86 pages/checkout.php:549
@@ -2943,8 +3031,8 @@ msgstr ""
2943
msgid "Discount Code"
2944
msgstr ""
2945
2946
- #: classes/class.pmproemail.php:265 classes/class.pmproemail.php:358
2947
- #: classes/class.pmproemail.php:665 classes/class.pmproemail.php:241
2948
#: classes/class.pmproemail.php:243 classes/class.pmproemail.php:253
2949
#: classes/class.pmproemail.php:256 classes/class.pmproemail.php:265
2950
#: classes/class.pmproemail.php:325 classes/class.pmproemail.php:328
@@ -2957,45 +3045,45 @@ msgstr ""
2957
msgid "This membership will expire on %s."
2958
msgstr ""
2959
2960
- #: classes/class.pmproemail.php:287 classes/class.pmproemail.php:263
2961
#: classes/class.pmproemail.php:265 classes/class.pmproemail.php:275
2962
#: classes/class.pmproemail.php:278 classes/class.pmproemail.php:287
2963
#, php-format
2964
msgid "Member Checkout for %s at %s"
2965
msgstr ""
2966
2967
- #: classes/class.pmproemail.php:375 classes/class.pmproemail.php:375
2968
#, php-format
2969
msgid "Your billing information has been updated at %s"
2970
msgstr ""
2971
2972
- #: classes/class.pmproemail.php:428 classes/class.pmproemail.php:428
2973
#, php-format
2974
msgid "Billing information has been updated for %s at %s"
2975
msgstr ""
2976
2977
- #: classes/class.pmproemail.php:476 classes/class.pmproemail.php:425
2978
#: classes/class.pmproemail.php:430 classes/class.pmproemail.php:464
2979
#: classes/class.pmproemail.php:467 classes/class.pmproemail.php:476
2980
#, php-format
2981
msgid "Membership Payment Failed at %s"
2982
msgstr ""
2983
2984
- #: classes/class.pmproemail.php:522 classes/class.pmproemail.php:462
2985
#: classes/class.pmproemail.php:468 classes/class.pmproemail.php:510
2986
#: classes/class.pmproemail.php:513 classes/class.pmproemail.php:522
2987
#, php-format
2988
msgid "Membership Payment Failed For %s at %s"
2989
msgstr ""
2990
2991
- #: classes/class.pmproemail.php:569 classes/class.pmproemail.php:508
2992
#: classes/class.pmproemail.php:557 classes/class.pmproemail.php:560
2993
#: classes/class.pmproemail.php:569
2994
#, php-format
2995
msgid "Credit Card on File Expiring Soon at %s"
2996
msgstr ""
2997
2998
- #: classes/class.pmproemail.php:619 classes/class.pmproemail.php:501
2999
#: classes/class.pmproemail.php:548 classes/class.pmproemail.php:605
3000
#: classes/class.pmproemail.php:608 classes/class.pmproemail.php:617
3001
#: classes/class.pmproemail.php:619
@@ -3003,7 +3091,7 @@ msgstr ""
3003
msgid "INVOICE for %s membership"
3004
msgstr ""
3005
3006
- #: classes/class.pmproemail.php:690 classes/class.pmproemail.php:563
3007
#: classes/class.pmproemail.php:611 classes/class.pmproemail.php:676
3008
#: classes/class.pmproemail.php:679 classes/class.pmproemail.php:688
3009
#: classes/class.pmproemail.php:690
@@ -3011,7 +3099,7 @@ msgstr ""
3011
msgid "Your trial at %s is ending soon"
3012
msgstr ""
3013
3014
- #: classes/class.pmproemail.php:724 classes/class.pmproemail.php:596
3015
#: classes/class.pmproemail.php:645 classes/class.pmproemail.php:710
3016
#: classes/class.pmproemail.php:713 classes/class.pmproemail.php:722
3017
#: classes/class.pmproemail.php:724
@@ -3019,7 +3107,7 @@ msgstr ""
3019
msgid "Your membership at %s has ended"
3020
msgstr ""
3021
3022
- #: classes/class.pmproemail.php:749 classes/class.pmproemail.php:621
3023
#: classes/class.pmproemail.php:670 classes/class.pmproemail.php:735
3024
#: classes/class.pmproemail.php:738 classes/class.pmproemail.php:747
3025
#: classes/class.pmproemail.php:749
@@ -3027,7 +3115,7 @@ msgstr ""
3027
msgid "Your membership at %s will end soon"
3028
msgstr ""
3029
3030
- #: classes/class.pmproemail.php:769 classes/class.pmproemail.php:641
3031
#: classes/class.pmproemail.php:690 classes/class.pmproemail.php:755
3032
#: classes/class.pmproemail.php:758 classes/class.pmproemail.php:767
3033
#: classes/class.pmproemail.php:769
@@ -3035,7 +3123,7 @@ msgstr ""
3035
msgid "Your membership at %s has been changed"
3036
msgstr ""
3037
3038
- #: classes/class.pmproemail.php:773 classes/class.pmproemail.php:810
3039
#: classes/class.pmproemail.php:759 classes/class.pmproemail.php:762
3040
#: classes/class.pmproemail.php:771 classes/class.pmproemail.php:773
3041
#: classes/class.pmproemail.php:800 classes/class.pmproemail.php:809
@@ -3044,14 +3132,14 @@ msgstr ""
3044
msgid "The new level is %s"
3045
msgstr ""
3046
3047
- #: classes/class.pmproemail.php:775 classes/class.pmproemail.php:647
3048
#: classes/class.pmproemail.php:696 classes/class.pmproemail.php:761
3049
#: classes/class.pmproemail.php:764 classes/class.pmproemail.php:773
3050
#: classes/class.pmproemail.php:775
3051
msgid "Your membership has been cancelled"
3052
msgstr ""
3053
3054
- #: classes/class.pmproemail.php:778 classes/class.pmproemail.php:816
3055
#: classes/class.pmproemail.php:651 classes/class.pmproemail.php:689
3056
#: classes/class.pmproemail.php:700 classes/class.pmproemail.php:738
3057
#: classes/class.pmproemail.php:765 classes/class.pmproemail.php:768
@@ -3063,7 +3151,7 @@ msgstr ""
3063
msgid "This membership will expire on %s"
3064
msgstr ""
3065
3066
- #: classes/class.pmproemail.php:782 classes/class.pmproemail.php:820
3067
#: classes/class.pmproemail.php:655 classes/class.pmproemail.php:693
3068
#: classes/class.pmproemail.php:704 classes/class.pmproemail.php:742
3069
#: classes/class.pmproemail.php:769 classes/class.pmproemail.php:772
@@ -3074,7 +3162,7 @@ msgstr ""
3074
msgid "This membership does not expire"
3075
msgstr ""
3076
3077
- #: classes/class.pmproemail.php:806 classes/class.pmproemail.php:679
3078
#: classes/class.pmproemail.php:728 classes/class.pmproemail.php:793
3079
#: classes/class.pmproemail.php:796 classes/class.pmproemail.php:805
3080
#: classes/class.pmproemail.php:806 classes/class.pmproemail.php:807
@@ -3082,13 +3170,13 @@ msgstr ""
3082
msgid "Membership for %s at %s has been changed"
3083
msgstr ""
3084
3085
- #: classes/class.pmproemail.php:812 classes/class.pmproemail.php:799
3086
#: classes/class.pmproemail.php:802 classes/class.pmproemail.php:811
3087
#: classes/class.pmproemail.php:812 classes/class.pmproemail.php:813
3088
msgid "Membership has been cancelled"
3089
msgstr ""
3090
3091
- #: classes/class.pmproemail.php:849 classes/class.pmproemail.php:848
3092
#: classes/class.pmproemail.php:849 classes/class.pmproemail.php:850
3093
msgid "Invoice for Order #: "
3094
msgstr ""
@@ -3104,6 +3192,7 @@ msgstr ""
3104
#: classes/gateways/class.pmprogateway_authorizenet.php:171
3105
#: classes/gateways/class.pmprogateway_check.php:60
3106
#: classes/gateways/class.pmprogateway_check.php:193
3107
#: classes/gateways/class.pmprogateway_cybersource.php:57
3108
#: classes/gateways/class.pmprogateway_cybersource.php:171
3109
#: classes/gateways/class.pmprogateway_payflowpro.php:27
@@ -3111,6 +3200,7 @@ msgstr ""
3111
#: classes/gateways/class.pmprogateway_paypal.php:27
3112
#: classes/gateways/class.pmprogateway_paypal.php:247
3113
#: classes/gateways/class.pmprogateway_paypal.php:249
3114
msgid "Unknown error: Authorization failed."
3115
msgstr ""
3116
@@ -3145,8 +3235,10 @@ msgstr ""
3145
#: classes/gateways/class.pmprogateway_check.php:245
3146
#: classes/gateways/class.pmprogateway_check.php:249
3147
#: classes/gateways/class.pmprogateway_check.php:250
3148
#: classes/gateways/class.pmprogateway_check.php:267
3149
#: classes/gateways/class.pmprogateway_check.php:268
3150
#: classes/gateways/class.pmprogateway_cybersource.php:108
3151
#: classes/gateways/class.pmprogateway_cybersource.php:113
3152
#: classes/gateways/class.pmprogateway_cybersource.php:131
@@ -3160,6 +3252,7 @@ msgstr ""
3160
#: classes/gateways/class.pmprogateway_paypal.php:50
3161
#: classes/gateways/class.pmprogateway_paypal.php:270
3162
#: classes/gateways/class.pmprogateway_paypal.php:272
3163
msgid "Unknown error: Payment failed."
3164
msgstr ""
3165
@@ -3173,6 +3266,7 @@ msgstr ""
3173
#: classes/gateways/class.pmprogateway_check.php:118
3174
#: classes/gateways/class.pmprogateway_check.php:251
3175
#: classes/gateways/class.pmprogateway_check.php:252
3176
#: classes/gateways/class.pmprogateway_cybersource.php:115
3177
#: classes/gateways/class.pmprogateway_cybersource.php:229
3178
msgid ""
@@ -3181,7 +3275,7 @@ msgid ""
3181
msgstr ""
3182
3183
#: classes/gateways/class.pmprogateway_authorizenet.p