Paid Memberships Pro - Version 1.8.5.4

Version Description

  • BUG: Fixed infinite redirect issues that would come up on servers setting $_SERVER['HTTPS'] to 'Off' vs 'off' or false. (Thanks, Gordon Seirup)
  • BUG: Using current_time('timestamp') in the sales report to avoid issues where sales at the beginning or end of the day aren't showing up under Today.
  • BUG: Fixed issues where delete links using the askfirst() JavaScript function would break for some language settings.
  • BUG: Added "CVV" and "What's This?" from the checkout page to the .pot file. (Thanks, Laurentc)
  • BUG: Fixed issue where preheaders/account.php was not loaded on the account page if you passed it sections params. (Thanks, sweettea)
  • BUG: Fixed issue where no data was showing up for the 31st of the month on the graph of the signups/cancellations report. (Thanks, David Koller)
  • ENHANCEMENT: Added the pmpro_extra_page_settings filter to add additional page settings fields for use with add-on plugins, etc.
  • ENHANCEMENT: Added the pmpro_next_payment filter to PayPal Express and Stripe gateways. These use the respective APIs to get the next payment date instead of estimating it from the date of the last order. These filters are in place, but haven't been enabled because hitting the API on each call could cause performance issues when exporting members or something else.
  • ENHANCEMENT: Now showing which levels a category is locked down for on the edit category page.
  • ENHANCEMENT: Updated the PayPal IPN handler to check the initial_payment_status and set order to "error" status if the payment failed. This will keep PMPro from counting the order in sales totals and can be used by gists and addons to tweak how orders are dealt with.
  • ENHANCEMENT: Filtering post_classes to add pmpro-level-required, pmpro-level-#, pmpro-has-access classes to post elements that require membership and/or the user has access to.
Download this release

Release Info

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

Code changes from version 1.8.5.3 to 1.8.5.4

adminpages/addons.php CHANGED
@@ -281,5 +281,4 @@
281
<?php
282
require_once(dirname(__FILE__) . "/admin_footer.php");
283
wp_print_request_filesystem_credentials_modal();
284
- echo '</div>';
285
- ?>
281
<?php
282
require_once(dirname(__FILE__) . "/admin_footer.php");
283
wp_print_request_filesystem_credentials_modal();
284
+ ?>
adminpages/discountcodes.php CHANGED
@@ -396,7 +396,7 @@
396
</tbody>
397
</table>
398
399
- <?php do_action("pmpro_discount_code_after_settings"); ?>
400
401
<h3><?php _e('Which Levels Will This Code Apply To?', 'pmpro'); ?></h3>
402
@@ -649,7 +649,7 @@
649
<a href="?page=pmpro-discountcodes&edit=<?php echo $code->id?>"><?php _e('edit', 'pmpro');?></a>
650
</td>
651
<td>
652
- <a href="javascript:askfirst('<?php printf(__('Are you sure you want to delete the %s discount code? The subscriptions for existing users will not change, but new users will not be able to use this code anymore.', 'pmpro'), $code->code);?>', '?page=pmpro-discountcodes&delete=<?php echo $code->id?>'); void(0);"><?php _e('delete', 'pmpro');?></a>
653
</td>
654
</tr>
655
<?php
396
</tbody>
397
</table>
398
399
+ <?php do_action("pmpro_discount_code_after_settings", $edit); ?>
400
401
<h3><?php _e('Which Levels Will This Code Apply To?', 'pmpro'); ?></h3>
402
649
<a href="?page=pmpro-discountcodes&edit=<?php echo $code->id?>"><?php _e('edit', 'pmpro');?></a>
650
</td>
651
<td>
652
+ <a href="javascript:askfirst('<?php echo str_replace("'", "\'", sprintf(__('Are you sure you want to delete the %s discount code? The subscriptions for existing users will not change, but new users will not be able to use this code anymore.', 'pmpro'), $code->code));?>', '?page=pmpro-discountcodes&delete=<?php echo $code->id?>'); void(0);"><?php _e('delete', 'pmpro');?></a>
653
</td>
654
</tr>
655
<?php
adminpages/membershiplevels.php CHANGED
@@ -666,7 +666,7 @@
666
</td>
667
<td><?php if($level->allow_signups) { ?><a href="<?php echo pmpro_url("checkout", "?level=" . $level->id);?>"><?php _e('Yes', 'pmpro');?></a><?php } else { ?><?php _e('No', 'pmpro');?><?php } ?></td>
668
669
- <td><a title="<?php _e('edit','pmpro'); ?>" href="admin.php?page=pmpro-membershiplevels&edit=<?php echo $level->id?>" class="button-primary"><?php _e('edit','pmpro'); ?></a>&nbsp;<a title="<?php _e('copy','pmpro'); ?>" href="admin.php?page=pmpro-membershiplevels&copy=<?php echo $level->id?>&edit=-1" class="button-secondary"><?php _e('copy','pmpro'); ?></a>&nbsp;<a title="<?php _e('delete','pmpro'); ?>" href="javascript: askfirst('<?php echo str_replace("'", "\'", sprintf("Are you sure you want to delete membership level %s? All subscriptions will be cancelled.", "pmpro"), $level->name);?>','admin.php?page=pmpro-membershiplevels&action=delete_membership_level&deleteid=<?php echo $level->id?>'); void(0);" class="button-secondary"><?php _e('delete','pmpro'); ?></a></td>
670
</tr>
671
<?php
672
}
666
</td>
667
<td><?php if($level->allow_signups) { ?><a href="<?php echo pmpro_url("checkout", "?level=" . $level->id);?>"><?php _e('Yes', 'pmpro');?></a><?php } else { ?><?php _e('No', 'pmpro');?><?php } ?></td>
668
669
+ <td><a title="<?php _e('edit','pmpro'); ?>" href="admin.php?page=pmpro-membershiplevels&edit=<?php echo $level->id?>" class="button-primary"><?php _e('edit','pmpro'); ?></a>&nbsp;<a title="<?php _e('copy','pmpro'); ?>" href="admin.php?page=pmpro-membershiplevels&copy=<?php echo $level->id?>&edit=-1" class="button-secondary"><?php _e('copy','pmpro'); ?></a>&nbsp;<a title="<?php _e('delete','pmpro'); ?>" href="javascript: askfirst('<?php echo str_replace("'", "\'", sprintf(__("Are you sure you want to delete membership level %s? All subscriptions will be cancelled.", "pmpro"), $level->name));?>','admin.php?page=pmpro-membershiplevels&action=delete_membership_level&deleteid=<?php echo $level->id?>'); void(0);" class="button-secondary"><?php _e('delete','pmpro'); ?></a></td>
670
</tr>
671
<?php
672
}
adminpages/orders.php CHANGED
@@ -995,7 +995,7 @@
995
<a href="admin.php?page=pmpro-orders&order=-1&copy=<?php echo $order->id;?>"><?php _e('copy', 'pmpro');?></a>
996
</td>
997
<td align="center">
998
- <a href="javascript:askfirst('<?php printf(__("Deleting orders is permanent and can affect active users. Are you sure you want to delete order %s?", "pmpro"), str_replace("'", "", $order->code));?>', 'admin.php?page=pmpro-orders&delete=<?php echo $order->id;?>'); void(0);"><?php _e('delete', 'pmpro');?></a>
999
</td>
1000
</tr>
1001
<?php
995
<a href="admin.php?page=pmpro-orders&order=-1&copy=<?php echo $order->id;?>"><?php _e('copy', 'pmpro');?></a>
996
</td>
997
<td align="center">
998
+ <a href="javascript:askfirst('<?php echo str_replace("'", "\'", sprintf(__("Deleting orders is permanent and can affect active users. Are you sure you want to delete order %s?", "pmpro"), str_replace("'", "", $order->code)));?>', 'admin.php?page=pmpro-orders&delete=<?php echo $order->id;?>'); void(0);"><?php _e('delete', 'pmpro');?></a>
999
</td>
1000
</tr>
1001
<?php
adminpages/pagesettings.php CHANGED
@@ -1,257 +1,300 @@
1
<?php
2
- //only admins can get this
3
- if(!function_exists("current_user_can") || (!current_user_can("manage_options") && !current_user_can("pmpro_pagesettings")))
4
- {
5
- die(__("You do not have permissions to perform this action.", "pmpro"));
6
- }
7
-
8
- global $wpdb, $msg, $msgt;
9
-
10
- //get/set settings
11
- global $pmpro_pages;
12
- if(!empty($_REQUEST['savesettings']))
13
- {
14
- //page ids
15
- pmpro_setOption("account_page_id");
16
- pmpro_setOption("billing_page_id");
17
- pmpro_setOption("cancel_page_id");
18
- pmpro_setOption("checkout_page_id");
19
- pmpro_setOption("confirmation_page_id");
20
- pmpro_setOption("invoice_page_id");
21
- pmpro_setOption("levels_page_id");
22
-
23
- //update the pages array
24
- $pmpro_pages["account"] = pmpro_getOption("account_page_id");
25
- $pmpro_pages["billing"] = pmpro_getOption("billing_page_id");
26
- $pmpro_pages["cancel"] = pmpro_getOption("cancel_page_id");
27
- $pmpro_pages["checkout"] = pmpro_getOption("checkout_page_id");
28
- $pmpro_pages["confirmation"] = pmpro_getOption("confirmation_page_id");
29
- $pmpro_pages["invoice"] = pmpro_getOption("invoice_page_id");
30
- $pmpro_pages["levels"] = pmpro_getOption("levels_page_id");
31
32
- //assume success
33
- $msg = true;
34
- $msgt = "Your page settings have been updated.";
35
- }
36
-
37
- //are we generating pages?
38
- if(!empty($_REQUEST['createpages']))
39
- {
40
- global $pmpro_pages;
41
-
42
- $pages_created = array();
43
-
44
- //check the pages array
45
- foreach($pmpro_pages as $pmpro_page_name => $pmpro_page_id)
46
- {
47
- if(!$pmpro_page_id)
48
- {
49
- switch ($pmpro_page_name) {
50
- case 'account':
51
- $pmpro_page_title = __( 'Membership Account', 'pmpro' );
52
- break;
53
- case 'billing':
54
- $pmpro_page_title = __( 'Membership Billing', 'pmpro' );
55
- break;
56
- case 'cancel':
57
- $pmpro_page_title = __( 'Membership Cancel', 'pmpro' );
58
- break;
59
- case 'checkout':
60
- $pmpro_page_title = __( 'Membership Checkout', 'pmpro' );
61
- break;
62
- case 'confirmation':
63
- $pmpro_page_title = __( 'Membership Confirmation', 'pmpro' );
64
- break;
65
- case 'invoice':
66
- $pmpro_page_title = __( 'Membership Invoice', 'pmpro' );
67
- break;
68
- case 'levels':
69
- $pmpro_page_title = __( 'Membership Levels', 'pmpro' );
70
- break;
71
-
72
- default:
73
- $pmpro_page_title = sprintf( __( 'Membership %s', 'Page title template', 'pmpro' ), ucwords($pmpro_page_name) );
74
- break;
75
- }
76
-
77
- //no id set. create an array to store the page info
78
- $insert = array(
79
- 'post_title' => $pmpro_page_title,
80
- 'post_status' => 'publish',
81
- 'post_type' => 'page',
82
- 'post_content' => '[pmpro_' . $pmpro_page_name . ']',
83
- 'comment_status' => 'closed',
84
- 'ping_status' => 'closed'
85
- );
86
-
87
- //make non-account pages a subpage of account
88
- if($pmpro_page_name != "account")
89
- {
90
- $insert['post_parent'] = $pmpro_pages['account'];
91
- }
92
-
93
- //create the page
94
- $pmpro_pages[$pmpro_page_name] = wp_insert_post( $insert );
95
-
96
- //add besecure post option to pages that need it
97
- /* these pages are handling this themselves in the preheader
98
- if(in_array($pmpro_page_name, array("billing", "checkout")))
99
- update_post_meta($pmpro_pages[$pmpro_page_name], "besecure", 1);
100
- */
101
-
102
- //update the option too
103
- pmpro_setOption($pmpro_page_name . "_page_id", $pmpro_pages[$pmpro_page_name]);
104
- $pages_created[] = $pmpro_pages[$pmpro_page_name];
105
- }
106
- }
107
-
108
- if(!empty($pages_created))
109
- {
110
- $msg = true;
111
- $msgt = __("The following pages have been created for you", "pmpro") . ": " . implode(", ", $pages_created) . ".";
112
- }
113
- }
114
-
115
- require_once(dirname(__FILE__) . "/admin_header.php");
116
- ?>
117
-
118
119
- <form action="" method="post" enctype="multipart/form-data">
120
- <h2><?php _e('Pages', 'pmpro');?></h2>
121
- <?php
122
- global $pmpro_pages_ready;
123
- if($pmpro_pages_ready)
124
- {
125
- ?>
126
- <p><?php _e('Manage the WordPress pages assigned to each required Paid Memberships Pro page.', 'pmpro');?></p>
127
- <?php
128
- }
129
- else
130
- {
131
- ?>
132
- <p><?php _e('Assign the WordPress pages for each required Paid Memberships Pro page or', 'pmpro');?> <a href="?page=pmpro-pagesettings&createpages=1"><?php _e('click here to let us generate them for you', 'pmpro');?></a>.</p>
133
- <?php
134
- }
135
- ?>
136
- <table class="form-table">
137
- <tbody>
138
- <tr>
139
- <th scope="row" valign="top">
140
- <label for="account_page_id"><?php _e('Account Page', 'pmpro');?>:</label>
141
- </th>
142
- <td>
143
- <?php
144
- wp_dropdown_pages(array("name"=>"account_page_id", "show_option_none"=>"-- ".__( 'Choose One', 'pmpro' )." --", "selected"=>$pmpro_pages['account']));
145
- ?>
146
- <?php if(!empty($pmpro_pages['account'])) { ?>
147
- <a target="_blank" href="post.php?post=<?php echo $pmpro_pages['account'];?>&action=edit" class="button button-secondary pmpro_page_edit"><?php _e('edit page', 'pmpro');?></a>
148
- &nbsp;
149
- <a target="_blank" href="<?php echo get_permalink($pmpro_pages['account']);?>" class="button button-secondary pmpro_page_view"><?php _e('view page', 'pmpro');?></a>
150
- <?php } ?>
151
- <br /><small class="pmpro_lite"><?php _e('Include the shortcode', 'pmpro');?> [pmpro_account].</small>
152
- </td>
153
- <tr>
154
- <th scope="row" valign="top">
155
- <label for="billing_page_id"><?php _e('Billing Information Page', 'pmpro');?>:</label>
156
- </th>
157
- <td>
158
- <?php
159
- wp_dropdown_pages(array("name"=>"billing_page_id", "show_option_none"=>"-- ".__( 'Choose One', 'pmpro' )." --", "selected"=>$pmpro_pages['billing']));
160
- ?>
161
- <?php if(!empty($pmpro_pages['billing'])) { ?>
162
- <a target="_blank" href="post.php?post=<?php echo $pmpro_pages['billing']?>&action=edit" class="button button-secondary pmpro_page_edit"><?php _e('edit page', 'pmpro');?></a>
163
- &nbsp;
164
- <a target="_blank" href="<?php echo get_permalink($pmpro_pages['billing']);?>" class="button button-secondary pmpro_page_view"><?php _e('view page', 'pmpro');?></a>
165
- <?php } ?>
166
- <br /><small class="pmpro_lite"><?php _e('Include the shortcode', 'pmpro');?> [pmpro_billing].</small>
167
- </td>
168
- <tr>
169
- <th scope="row" valign="top">
170
- <label for="cancel_page_id"><?php _e('Cancel Page', 'pmpro');?>:</label>
171
- </th>
172
- <td>
173
- <?php
174
- wp_dropdown_pages(array("name"=>"cancel_page_id", "show_option_none"=>"-- ".__( 'Choose One', 'pmpro' )." --", "selected"=>$pmpro_pages['cancel']));
175
- ?>
176
- <?php if(!empty($pmpro_pages['cancel'])) { ?>
177
- <a target="_blank" href="post.php?post=<?php echo $pmpro_pages['cancel']?>&action=edit" class="button button-secondary pmpro_page_edit"><?php _e('edit page', 'pmpro');?></a>
178
- &nbsp;
179
- <a target="_blank" href="<?php echo get_permalink($pmpro_pages['cancel']);?>" class="button button-secondary pmpro_page_view"><?php _e('view page', 'pmpro');?></a>
180
- <?php } ?>
181
- <br /><small class="pmpro_lite"><?php _e('Include the shortcode', 'pmpro');?> [pmpro_cancel].</small>
182
- </td>
183
- </tr>
184
- <tr>
185
- <th scope="row" valign="top">
186
- <label for="checkout_page_id"><?php _e('Checkout Page', 'pmpro');?>:</label>
187
- </th>
188
- <td>
189
- <?php
190
- wp_dropdown_pages(array("name"=>"checkout_page_id", "show_option_none"=>"-- ".__( 'Choose One', 'pmpro' )." --", "selected"=>$pmpro_pages['checkout']));
191
- ?>
192
- <?php if(!empty($pmpro_pages['checkout'])) { ?>
193
- <a target="_blank" href="post.php?post=<?php echo $pmpro_pages['checkout']?>&action=edit" class="button button-secondary pmpro_page_edit"><?php _e('edit page', 'pmpro');?></a>
194
- &nbsp;
195
- <a target="_blank" href="<?php echo get_permalink($pmpro_pages['checkout']);?>" class="button button-secondary pmpro_page_view"><?php _e('view page', 'pmpro');?></a>
196
- <?php } ?>
197
- <br /><small class="pmpro_lite"><?php _e('Include the shortcode', 'pmpro');?> [pmpro_checkout].</small>
198
- </td>
199
- </tr>
200
- <tr>
201
- <th scope="row" valign="top">
202
- <label for="confirmation_page_id"><?php _e('Confirmation Page', 'pmpro');?>:</label>
203
- </th>
204
- <td>
205
- <?php
206
- wp_dropdown_pages(array("name"=>"confirmation_page_id", "show_option_none"=>"-- ".__( 'Choose One', 'pmpro' )." --", "selected"=>$pmpro_pages['confirmation']));
207
- ?>
208
- <?php if(!empty($pmpro_pages['confirmation'])) { ?>
209
- <a target="_blank" href="post.php?post=<?php echo $pmpro_pages['confirmation']?>&action=edit" class="button button-secondary pmpro_page_edit"><?php _e('edit page', 'pmpro');?></a>
210
- &nbsp;
211
- <a target="_blank" href="<?php echo get_permalink($pmpro_pages['confirmation']);?>" class="button button-secondary pmpro_page_view"><?php _e('view page', 'pmpro');?></a>
212
- <?php } ?>
213
- <br /><small class="pmpro_lite"><?php _e('Include the shortcode', 'pmpro');?> [pmpro_confirmation].</small>
214
- </td>
215
- </tr>
216
- <tr>
217
- <th scope="row" valign="top">
218
- <label for="invoice_page_id"><?php _e('Invoice Page', 'pmpro');?>:</label>
219
- </th>
220
- <td>
221
- <?php
222
- wp_dropdown_pages(array("name"=>"invoice_page_id", "show_option_none"=>"-- ".__( 'Choose One', 'pmpro' )." --", "selected"=>$pmpro_pages['invoice']));
223
- ?>
224
- <?php if(!empty($pmpro_pages['invoice'])) { ?>
225
- <a target="_blank" href="post.php?post=<?php echo $pmpro_pages['invoice']?>&action=edit" class="button button-secondary pmpro_page_edit"><?php _e('edit page', 'pmpro');?></a>
226
- &nbsp;
227
- <a target="_blank" href="<?php echo get_permalink($pmpro_pages['invoice']);?>" class="button button-secondary pmpro_page_view"><?php _e('view page', 'pmpro');?></a>
228
- <?php } ?>
229
- <br /><small class="pmpro_lite"><?php _e('Include the shortcode', 'pmpro');?> [pmpro_invoice].</small>
230
- </td>
231
- </tr>
232
- <tr>
233
- <th scope="row" valign="top">
234
- <label for="levels_page_id"><?php _e('Levels Page', 'pmpro');?>:</label>
235
- </th>
236
- <td>
237
- <?php
238
- wp_dropdown_pages(array("name"=>"levels_page_id", "show_option_none"=>"-- ".__( 'Choose One', 'pmpro' )." --", "selected"=>$pmpro_pages['levels']));
239
?>
240
- <?php if(!empty($pmpro_pages['levels'])) { ?>
241
- <a target="_blank" href="post.php?post=<?php echo $pmpro_pages['levels']?>&action=edit" class="button button-secondary pmpro_page_edit"><?php _e('edit page', 'pmpro');?></a>
242
- &nbsp;
243
- <a target="_blank" href="<?php echo get_permalink($pmpro_pages['levels']);?>" class="button button-secondary pmpro_page_view"><?php _e('view page', 'pmpro');?></a>
244
- <?php } ?>
245
- <br /><small class="pmpro_lite"><?php _e('Include the shortcode', 'pmpro');?> [pmpro_levels].</small>
246
- </td>
247
- </tr>
248
- </tbody>
249
- </table>
250
- <p class="submit">
251
- <input name="savesettings" type="submit" class="button button-primary" value="<?php _e('Save Settings', 'pmpro');?>" />
252
- </p>
253
- </form>
254
-
255
<?php
256
- require_once(dirname(__FILE__) . "/admin_footer.php");
257
?>
1
<?php
2
+ //only admins can get this
3
+ if (!function_exists("current_user_can") || (!current_user_can("manage_options") && !current_user_can("pmpro_pagesettings"))) {
4
+ die(__("You do not have permissions to perform this action.", "pmpro"));
5
+ }
6
7
+ global $wpdb, $msg, $msgt;
8
9
+ //get/set settings
10
+ global $pmpro_pages;
11
+
12
+ /**
13
+ * Adds additional page settings for use with add-on plugins, etc.
14
+ *
15
+ * @param array $pages {
16
+ * Formatted as array($name => $label)
17
+ *
18
+ * @type string $name Page name. (Letters, numbers, and underscores only.)
19
+ * @type string $label Settings label.
20
+ * }
21
+ * @since 1.8.5
22
+ */
23
+ $extra_pages = apply_filters('pmpro_extra_page_settings', array());
24
+
25
+ if (!empty($_REQUEST['savesettings'])) {
26
+ //page ids
27
+ pmpro_setOption("account_page_id");
28
+ pmpro_setOption("billing_page_id");
29
+ pmpro_setOption("cancel_page_id");
30
+ pmpro_setOption("checkout_page_id");
31
+ pmpro_setOption("confirmation_page_id");
32
+ pmpro_setOption("invoice_page_id");
33
+ pmpro_setOption("levels_page_id");
34
+
35
+ //update the pages array
36
+ $pmpro_pages["account"] = pmpro_getOption("account_page_id");
37
+ $pmpro_pages["billing"] = pmpro_getOption("billing_page_id");
38
+ $pmpro_pages["cancel"] = pmpro_getOption("cancel_page_id");
39
+ $pmpro_pages["checkout"] = pmpro_getOption("checkout_page_id");
40
+ $pmpro_pages["confirmation"] = pmpro_getOption("confirmation_page_id");
41
+ $pmpro_pages["invoice"] = pmpro_getOption("invoice_page_id");
42
+ $pmpro_pages["levels"] = pmpro_getOption("levels_page_id");
43
+
44
+ //save additional pages
45
+ if (!empty($extra_pages)) {
46
+ foreach ($extra_pages as $name => $label) {
47
+ pmpro_setOption($name . '_page_id');
48
+ $pmpro_pages[$name] = pmpro_getOption($name . '_page_id');
49
+ }
50
+ }
51
+
52
+ //assume success
53
+ $msg = true;
54
+ $msgt = __("Your page settings have been updated.", "pmpro");
55
+ }
56
+
57
+ //are we generating pages?
58
+ if (!empty($_REQUEST['createpages'])) {
59
+
60
+ $pages = array();
61
+
62
+ if(empty($_REQUEST['page_name'])) {
63
+ //default pages
64
+ $pages['account'] = __('Membership Account', 'pmpro');
65
+ $pages['billing'] = __('Membership Billing', 'pmpro');
66
+ $pages['cancel'] = __('Membership Cancel', 'pmpro');
67
+ $pages['checkout'] = __('Membership Checkout', 'pmpro');
68
+ $pages['confirmation'] = __('Membership Confirmation', 'pmpro');
69
+ $pages['invoice'] = __('Membership Invoice', 'pmpro');
70
+ $pages['levels'] = __('Membership Levels', 'pmpro');
71
+
72
+ } else {
73
+ //generate extra pages one at a time
74
+ $pmpro_page_name = $_REQUEST['page_name'];
75
+ $pmpro_page_id = $pmpro_pages[$pmpro_page_name];
76
+ $pages[$pmpro_page_name] = $extra_pages[$pmpro_page_name];
77
+ }
78
+
79
+ $pages_created = pmpro_generatePages($pages);
80
+
81
+ if (!empty($pages_created)) {
82
+ $msg = true;
83
+ $msgt = __("The following pages have been created for you", "pmpro") . ": " . implode(", ", $pages_created) . ".";
84
+ }
85
+ }
86
+
87
+ require_once(dirname(__FILE__) . "/admin_header.php");
88
+ ?>
89
+
90
+
91
+ <form action="" method="post" enctype="multipart/form-data">
92
+ <h2><?php _e('Pages', 'pmpro'); ?></h2>
93
+ <?php
94
+ global $pmpro_pages_ready;
95
+ if ($pmpro_pages_ready) {
96
+ ?>
97
+ <p><?php _e('Manage the WordPress pages assigned to each required Paid Memberships Pro page.', 'pmpro'); ?></p>
98
+ <?php
99
+ } else {
100
+ ?>
101
+ <p><?php _e('Assign the WordPress pages for each required Paid Memberships Pro page or', 'pmpro'); ?> <a
102
+ href="?page=pmpro-pagesettings&createpages=1"><?php _e('click here to let us generate them for you', 'pmpro'); ?></a>.
103
+ </p>
104
+ <?php
105
+ }
106
+ ?>
107
+ <table class="form-table">
108
+ <tbody>
109
+ <tr>
110
+ <th scope="row" valign="top">
111
+ <label for="account_page_id"><?php _e('Account Page', 'pmpro'); ?>:</label>
112
+ </th>
113
+ <td>
114
+ <?php
115
+ wp_dropdown_pages(array("name" => "account_page_id", "show_option_none" => "-- " . __('Choose One', 'pmpro') . " --", "selected" => $pmpro_pages['account']));
116
+ ?>
117
+ <?php if (!empty($pmpro_pages['account'])) { ?>
118
+ <a target="_blank" href="post.php?post=<?php echo $pmpro_pages['account']; ?>&action=edit"
119
+ class="button button-secondary pmpro_page_edit"><?php _e('edit page', 'pmpro'); ?></a>
120
+ &nbsp;
121
+ <a target="_blank" href="<?php echo get_permalink($pmpro_pages['account']); ?>"
122
+ class="button button-secondary pmpro_page_view"><?php _e('view page', 'pmpro'); ?></a>
123
+ <?php } ?>
124
+ <br/>
125
+ <small class="pmpro_lite"><?php _e('Include the shortcode', 'pmpro'); ?> [pmpro_account].</small>
126
+ </td>
127
+ <tr>
128
+ <th scope="row" valign="top">
129
+ <label for="billing_page_id"><?php _e('Billing Information Page', 'pmpro'); ?>:</label>
130
+ </th>
131
+ <td>
132
+ <?php
133
+ wp_dropdown_pages(array("name" => "billing_page_id", "show_option_none" => "-- " . __('Choose One', 'pmpro') . " --", "selected" => $pmpro_pages['billing']));
134
+ ?>
135
+ <?php if (!empty($pmpro_pages['billing'])) { ?>
136
+ <a target="_blank" href="post.php?post=<?php echo $pmpro_pages['billing'] ?>&action=edit"
137
+ class="button button-secondary pmpro_page_edit"><?php _e('edit page', 'pmpro'); ?></a>
138
+ &nbsp;
139
+ <a target="_blank" href="<?php echo get_permalink($pmpro_pages['billing']); ?>"
140
+ class="button button-secondary pmpro_page_view"><?php _e('view page', 'pmpro'); ?></a>
141
+ <?php } ?>
142
+ <br/>
143
+ <small class="pmpro_lite"><?php _e('Include the shortcode', 'pmpro'); ?> [pmpro_billing].</small>
144
+ </td>
145
+ <tr>
146
+ <th scope="row" valign="top">
147
+ <label for="cancel_page_id"><?php _e('Cancel Page', 'pmpro'); ?>:</label>
148
+ </th>
149
+ <td>
150
+ <?php
151
+ wp_dropdown_pages(array("name" => "cancel_page_id", "show_option_none" => "-- " . __('Choose One', 'pmpro') . " --", "selected" => $pmpro_pages['cancel']));
152
+ ?>
153
+ <?php if (!empty($pmpro_pages['cancel'])) { ?>
154
+ <a target="_blank" href="post.php?post=<?php echo $pmpro_pages['cancel'] ?>&action=edit"
155
+ class="button button-secondary pmpro_page_edit"><?php _e('edit page', 'pmpro'); ?></a>
156
+ &nbsp;
157
+ <a target="_blank" href="<?php echo get_permalink($pmpro_pages['cancel']); ?>"
158
+ class="button button-secondary pmpro_page_view"><?php _e('view page', 'pmpro'); ?></a>
159
+ <?php } ?>
160
+ <br/>
161
+ <small class="pmpro_lite"><?php _e('Include the shortcode', 'pmpro'); ?> [pmpro_cancel].</small>
162
+ </td>
163
+ </tr>
164
+ <tr>
165
+ <th scope="row" valign="top">
166
+ <label for="checkout_page_id"><?php _e('Checkout Page', 'pmpro'); ?>:</label>
167
+ </th>
168
+ <td>
169
+ <?php
170
+ wp_dropdown_pages(array("name" => "checkout_page_id", "show_option_none" => "-- " . __('Choose One', 'pmpro') . " --", "selected" => $pmpro_pages['checkout']));
171
+ ?>
172
+ <?php if (!empty($pmpro_pages['checkout'])) { ?>
173
+ <a target="_blank" href="post.php?post=<?php echo $pmpro_pages['checkout'] ?>&action=edit"
174
+ class="button button-secondary pmpro_page_edit"><?php _e('edit page', 'pmpro'); ?></a>
175
+ &nbsp;
176
+ <a target="_blank" href="<?php echo get_permalink($pmpro_pages['checkout']); ?>"
177
+ class="button button-secondary pmpro_page_view"><?php _e('view page', 'pmpro'); ?></a>
178
+ <?php } ?>
179
+ <br/>
180
+ <small class="pmpro_lite"><?php _e('Include the shortcode', 'pmpro'); ?> [pmpro_checkout].</small>
181
+ </td>
182
+ </tr>
183
+ <tr>
184
+ <th scope="row" valign="top">
185
+ <label for="confirmation_page_id"><?php _e('Confirmation Page', 'pmpro'); ?>:</label>
186
+ </th>
187
+ <td>
188
+ <?php
189
+ wp_dropdown_pages(array("name" => "confirmation_page_id", "show_option_none" => "-- " . __('Choose One', 'pmpro') . " --", "selected" => $pmpro_pages['confirmation']));
190
+ ?>
191
+ <?php if (!empty($pmpro_pages['confirmation'])) { ?>
192
+ <a target="_blank" href="post.php?post=<?php echo $pmpro_pages['confirmation'] ?>&action=edit"
193
+ class="button button-secondary pmpro_page_edit"><?php _e('edit page', 'pmpro'); ?></a>
194
+ &nbsp;
195
+ <a target="_blank" href="<?php echo get_permalink($pmpro_pages['confirmation']); ?>"
196
+ class="button button-secondary pmpro_page_view"><?php _e('view page', 'pmpro'); ?></a>
197
+ <?php } ?>
198
+ <br/>
199
+ <small class="pmpro_lite"><?php _e('Include the shortcode', 'pmpro'); ?>[pmpro_confirmation].
200
+ </small>
201
+ </td>
202
+ </tr>
203
+ <tr>
204
+ <th scope="row" valign="top">
205
+ <label for="invoice_page_id"><?php _e('Invoice Page', 'pmpro'); ?>:</label>
206
+ </th>
207
+ <td>
208
+ <?php
209
+ wp_dropdown_pages(array("name" => "invoice_page_id", "show_option_none" => "-- " . __('Choose One', 'pmpro') . " --", "selected" => $pmpro_pages['invoice']));
210
+ ?>
211
+ <?php if (!empty($pmpro_pages['invoice'])) { ?>
212
+ <a target="_blank" href="post.php?post=<?php echo $pmpro_pages['invoice'] ?>&action=edit"
213
+ class="button button-secondary pmpro_page_edit"><?php _e('edit page', 'pmpro'); ?></a>
214
+ &nbsp;
215
+ <a target="_blank" href="<?php echo get_permalink($pmpro_pages['invoice']); ?>"
216
+ class="button button-secondary pmpro_page_view"><?php _e('view page', 'pmpro'); ?></a>
217
+ <?php } ?>
218
+ <br/>
219
+ <small class="pmpro_lite"><?php _e('Include the shortcode', 'pmpro'); ?> [pmpro_invoice].</small>
220
+ </td>
221
+ </tr>
222
+ <tr>
223
+ <th scope="row" valign="top">
224
+ <label for="levels_page_id"><?php _e('Levels Page', 'pmpro'); ?>:</label>
225
+ </th>
226
+ <td>
227
+ <?php
228
+ wp_dropdown_pages(array("name" => "levels_page_id", "show_option_none" => "-- " . __('Choose One', 'pmpro') . " --", "selected" => $pmpro_pages['levels']));
229
+ ?>
230
+ <?php if (!empty($pmpro_pages['levels'])) { ?>
231
+ <a target="_blank" href="post.php?post=<?php echo $pmpro_pages['levels'] ?>&action=edit"
232
+ class="button button-secondary pmpro_page_edit"><?php _e('edit page', 'pmpro'); ?></a>
233
+ &nbsp;
234
+ <a target="_blank" href="<?php echo get_permalink($pmpro_pages['levels']); ?>"
235
+ class="button button-secondary pmpro_page_view"><?php _e('view page', 'pmpro'); ?></a>
236
+ <?php } ?>
237
+ <br/>
238
+ <small class="pmpro_lite"><?php _e('Include the shortcode', 'pmpro'); ?> [pmpro_levels].</small>
239
+ </td>
240
+ </tr>
241
+ </tbody>
242
+ </table>
243
+ <?php
244
+ if (!empty($extra_pages)) { ?>
245
+ <h2><?php _e('Additional Page Settings', 'pmpro'); ?></h2>
246
+ <table class="form-table">
247
+ <tbody>
248
+ <?php foreach ($extra_pages as $name => $page) { ?>
249
+ <?php
250
+ if(is_array($page)) {
251
+ $label = $page['title'];
252
+ if(!empty($page['hint']))
253
+ $hint = $page['hint'];
254
+ else
255
+ $hint = '';
256
+ } else {
257
+ $label = $page;
258
+ $hint = '';
259
+ }
260
?>
261
+ <tr>
262
+ <th scope="row" valign="top">
263
+ <label for="<?php echo $name; ?>_page_id"><?php echo $label; ?></label>
264
+ </th>
265
+ <td>
266
+ <?php wp_dropdown_pages(array(
267
+ "name" => $name . '_page_id',
268
+ "show_option_none" => "-- " . __('Choose One', 'pmpro') . " --",
269
+ "selected" => $pmpro_pages[$name],
270
+ ));
271
+ if(!empty($pmpro_pages[$name])) {
272
+ ?>
273
+ <a target="_blank" href="post.php?post=<?php echo $pmpro_pages[$name] ?>&action=edit"
274
+ class="button button-secondary pmpro_page_edit"><?php _e('edit page', 'pmpro'); ?></a>
275
+ &nbsp;
276
+ <a target="_blank" href="<?php echo get_permalink($pmpro_pages[$name]); ?>"
277
+ class="button button-secondary pmpro_page_view"><?php _e('view page', 'pmpro'); ?></a>
278
+ <?php } else { ?>
279
+ &nbsp;
280
+ <a href="?page=pmpro-pagesettings&createpages=1&page_name=<?php echo $name; ?>"><?php _e('Generate Page', 'pmpro'); ?></a>
281
+ <?php } ?>
282
+ <?php if(!empty($hint)) { ?>
283
+ <br/>
284
+ <small class="pmpro_lite"><?php echo $hint;?></small>
285
+ <?php } ?>
286
+ </td>
287
+ </tr>
288
+ <?php } ?>
289
+ </tbody>
290
+ </table>
291
+ <?php } ?>
292
+ <p class="submit">
293
+ <input name="savesettings" type="submit" class="button button-primary"
294
+ value="<?php _e('Save Settings', 'pmpro'); ?>"/>
295
+ </p>
296
+ </form>
297
+
298
<?php
299
+ require_once(dirname(__FILE__) . "/admin_footer.php");
300
?>
adminpages/reports/memberships.php CHANGED
@@ -136,7 +136,7 @@ function pmpro_report_memberships_page()
136
if($period == "daily")
137
{
138
$startdate = $year . '-' . substr("0" . $month, strlen($month) - 1, 2) . '-01';
139
- $enddate = $year . '-' . substr("0" . $month, strlen($month) - 1, 2) . '-31';
140
$date_function = 'DAY';
141
}
142
elseif($period == "monthly")
136
if($period == "daily")
137
{
138
$startdate = $year . '-' . substr("0" . $month, strlen($month) - 1, 2) . '-01';
139
+ $enddate = $year . '-' . substr("0" . $month, strlen($month) - 1, 2) . '-32';
140
$date_function = 'DAY';
141
}
142
elseif($period == "monthly")
adminpages/reports/sales.php CHANGED
@@ -87,9 +87,9 @@ function pmpro_report_sales_page()
87
if(isset($_REQUEST['month']))
88
$month = intval($_REQUEST['month']);
89
else
90
- $month = date("n");
91
92
- $thisyear = date("Y");
93
if(isset($_REQUEST['year']))
94
$year = intval($_REQUEST['year']);
95
else
@@ -320,11 +320,11 @@ function pmpro_getSales($period, $levels = NULL)
320
321
//a sale is an order with status NOT IN('refunded', 'review', 'token', 'error')
322
if($period == "today")
323
- $startdate = date("Y-m-d");
324
elseif($period == "this month")
325
- $startdate = date("Y-m") . "-01";
326
elseif($period == "this year")
327
- $startdate = date("Y") . "-01-01";
328
else
329
$startdate = "";
330
@@ -363,11 +363,11 @@ function pmpro_getRevenue($period, $levels = NULL)
363
364
//a sale is an order with status NOT IN('refunded', 'review', 'token', 'error')
365
if($period == "today")
366
- $startdate = date("Y-m-d");
367
elseif($period == "this month")
368
- $startdate = date("Y-m") . "-01";
369
elseif($period == "this year")
370
- $startdate = date("Y") . "-01-01";
371
else
372
$startdate = "";
373
87
if(isset($_REQUEST['month']))
88
$month = intval($_REQUEST['month']);
89
else
90
+ $month = date("n", current_time('timestamp'));
91
92
+ $thisyear = date("Y", current_time('timestamp'));
93
if(isset($_REQUEST['year']))
94
$year = intval($_REQUEST['year']);
95
else
320
321
//a sale is an order with status NOT IN('refunded', 'review', 'token', 'error')
322
if($period == "today")
323
+ $startdate = date("Y-m-d", current_time('timestamp'));
324
elseif($period == "this month")
325
+ $startdate = date("Y-m", current_time('timestamp')) . "-01";
326
elseif($period == "this year")
327
+ $startdate = date("Y", current_time('timestamp')) . "-01-01";
328
else
329
$startdate = "";
330
363
364
//a sale is an order with status NOT IN('refunded', 'review', 'token', 'error')
365
if($period == "today")
366
+ $startdate = date("Y-m-d", current_time('timestamp'));
367
elseif($period == "this month")
368
+ $startdate = date("Y-m", current_time('timestamp')) . "-01";
369
elseif($period == "this year")
370
+ $startdate = date("Y", current_time('timestamp')) . "-01-01";
371
else
372
$startdate = "";
373
classes/gateways/class.pmprogateway_stripe.php CHANGED
@@ -71,6 +71,16 @@
71
add_action('pmpro_deactivation', array('PMProGateway_stripe', 'pmpro_deactivation'));
72
add_action('pmpro_cron_stripe_subscription_updates', array('PMProGateway_stripe', 'pmpro_cron_stripe_subscription_updates'));
73
74
//code to add at checkout if Stripe is the current gateway
75
$gateway = pmpro_getOption("gateway");
76
if($gateway == "stripe")
@@ -1615,4 +1625,34 @@
1615
return false;
1616
}
1617
}
1618
}
71
add_action('pmpro_deactivation', array('PMProGateway_stripe', 'pmpro_deactivation'));
72
add_action('pmpro_cron_stripe_subscription_updates', array('PMProGateway_stripe', 'pmpro_cron_stripe_subscription_updates'));
73
74
+ /*
75
+ Filter pmpro_next_payment to get actual value
76
+ via the Stripe API. This is disabled by default
77
+ for performance reasons, but you can enable it
78
+ by copying this line into a custom plugin or
79
+ your active theme's functions.php and uncommenting
80
+ it there.
81
+ */
82
+ //add_filter('pmpro_next_payment', array('PMProGateway_stripe', 'pmpro_next_payment'), 10, 3);
83
+
84
//code to add at checkout if Stripe is the current gateway
85
$gateway = pmpro_getOption("gateway");
86
if($gateway == "stripe")
1625
return false;
1626
}
1627
}
1628
+
1629
+ /**
1630
+ * Filter pmpro_next_payment to get date via API if possible
1631
+ *
1632
+ * @since 1.8.6
1633
+ */
1634
+ static function pmpro_next_payment($timestamp, $user_id, $order_status)
1635
+ {
1636
+ //find the last order for this user
1637
+ if(!empty($user_id))
1638
+ {
1639
+ //get last order
1640
+ $order = new MemberOrder();
1641
+ $order->getLastMemberOrder($user_id, $order_status);
1642
+
1643
+ //check if this is a paypal express order with a subscription transaction id
1644
+ if(!empty($order->id) && !empty($order->subscription_transaction_id) && $order->gateway == "stripe")
1645
+ {
1646
+ //get the subscription and return the current_period end or false
1647
+ $subscription = $order->Gateway->getSubscription($order);
1648
+
1649
+ if(!empty($subscription->current_period_end))
1650
+ return $subscription->current_period_end;
1651
+ else
1652
+ return false;
1653
+ }
1654
+ }
1655
+
1656
+ return $timestamp;
1657
+ }
1658
}
css/frontend.css CHANGED
@@ -1,200 +1,198 @@
1
- /*---------------------------------------
2
- Buttons
3
- ---------------------------------------*/
4
- .pmpro_btn, .pmpro_btn:link, .pmpro_content_message a, .pmpro_content_message a:link {
5
- display: inline-block;
6
- background-color: #EFEFEF;
7
- background-image: none;
8
- border: 1px solid #D6D6D6;
9
- -webkit-border-radius: 4px;
10
- -moz-border-radius: 4px;
11
- border-radius: 4px;
12
- padding: 6px 12px;
13
- margin: 0;
14
- color: #444;
15
- font-size: 12px;
16
- font-weight: 700;
17
- text-transform: none;
18
- text-decoration: none;
19
- text-align: center;
20
- white-space: nowrap;
21
- vertical-align: middle;
22
- cursor: pointer;
23
- -webkit-user-select: none;
24
- -moz-user-select: none;
25
- -ms-user-select: none;
26
- -o-user-select: none;
27
- user-select: none;
28
- }
29
-
30
- .pmpro_btn:focus, .pmpro_content_message a:focus {
31
- outline: thin dotted;
32
- outline: 5px auto -webkit-focus-ring-color;
33
- outline-offset: -2px;
34
- }
35
-
36
- .pmpro_btn:hover, .pmpro_btn:focus, .pmpro_content_message a:focus, .pmpro_content_message a:hover {
37
- color: #000;
38
- background-color: #FAFAFA;
39
- text-decoration: none;
40
- }
41
-
42
- .pmpro_btn:active,
43
- .pmpro_btn.active {
44
- background-image: none;
45
- outline: 0;
46
- -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
47
- box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
48
- }
49
-
50
- .pmpro_btn.disabled,
51
- .pmpro_btn[disabled],
52
- fieldset[disabled] .pmpro_btn {
53
- pointer-events: none;
54
- cursor: not-allowed;
55
- opacity: 0.65;
56
- filter: alpha(opacity=65);
57
- -webkit-box-shadow: none;
58
- box-shadow: none;
59
- }
60
-
61
- .pmpro_btn.pmpro_cancel, .pmpro_btn.pmpro_cancel:link {background: none; border: none; margin: 0 0 0 10px; }
62
- /*---------------------------------------
63
- Forms
64
- ---------------------------------------*/
65
- form.pmpro_form div {clear: left; margin: .5em 0 1em 0; }
66
- form.pmpro_form label {float: left; margin: 3px 10px 0 0; width: 120px; font-weight: bold; text-align: right; }
67
- form.pmpro_form label.pmpro_normal {float: none; margin: 0 0 0 0; width: auto; font-weight: normal; text-align: auto;}
68
- .pmpro_clickable {cursor: pointer;}
69
- form.pmpro_form .likelabel {font-weight: bold; }
70
- form.pmpro_form .input, form.pmpro_form textarea, .input, form.pmpro_form select {padding: 3px; border: 1px solid #AAA; margin: 0 3px 0 0; }
71
- form.pmpro_form textarea {font-family: Arial, Helvetica, sans-serif; font-size: 12px; }
72
- form.pmpro_form select {margin: 2px 0 0 0 ; font-size: 12px;}
73
- form.pmpro_form .lite {color: #666; }
74
- form.pmpro_form .leftmar {margin: 8px 0 0 130px; }
75
-
76
- form.pmpro_form .pmpro_captcha {margin: 0 0 0 130px !important; }
77
- form.pmpro_form .pmpro_captcha div {clear: none; margin: 0; }
78
- form.pmpro_form .pmpro_submit {margin-left: 130px; }
79
- form.pmpro_form .pmpro_submit span {float: left; }
80
- form.pmpro_form #pmpro_processing_message {margin: 5px 0 0 10px; font-style: italic; color: #999; }
81
-
82
- /*--------------------------------------------------
83
- Messages - Success, Error, Alert
84
- ----------------------------------------------------*/
85
- .pmpro_message {background-color: #d9edf7; margin: .5em 0; padding: 10px 15px; color: #31708f; font-size: 14px; font-weight: 400; line-height: 1.5em; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; border: 1px solid #bce8f1; }
86
-
87
- .pmpro_success {background-color: #dff0d8; color: #3c763d; border-color: #d6e9c6; }
88
- .pmpro_error {background-color: #f2dede; color: #a94442; border-color: #ebccd1; }
89
- .pmpro_alert {background-color: #fcf8e3; color: #8a6d3b; border-color: #faebcc;}
90
-
91
- .pmpro_content_message a {margin: 5px 5px 0 0; }
92
-
93
- .pmpro_message a {color: #245269; text-decoration: underline; }
94
- .pmpro_success a {color: #2b542c; }
95
- .pmpro_error a {color: #843534; }
96
- .pmpro_alert a {color: #66512c; }
97
-
98
- input.pmpro_error {background-image: none;}
99
- select.pmpro_error {background-image: none;}
100
-
101
- /*---------------------------------------
102
- Membership Checkout
103
- ---------------------------------------*/
104
- .pmpro_checkout thead th {font-weight: bold; color: #444; padding: 10px; }
105
- .pmpro_checkout tbody td {padding: 10px; }
106
- .pmpro_checkout tr.odd td {background: rgba(125,125,125,.1); }
107
- .pmpro_checkout tr.selected td {background: #FFC; }
108
- .pmpro_checkout tr.active td {background: #FFC; }
109
- .pmpro_checkout .name {font-weight: bold; }
110
- .pmpro_checkout ul {margin: 5px 0 0 20px; padding: 0; font-size: .8em; color: #444; }
111
-
112
- .pmpro_checkout tfoot td {padding: 10px; color: #444; }
113
- .pmpro_checkout .topfoot td {border-top: 2px solid #CCC;}
114
- .pmpro_checkout .total td {border-top: 1px solid #CCC; font-size: 1.2em; font-weight: bold; padding-bottom: 30px;}
115
- .pmpro_checkout tfoot .entercode td {background: #EEE; }
116
-
117
- .pmpro_checkout td.rtbdr {border-right: 1px solid #CCC; }
118
-
119
- .pmpro_checkout select {font-size: 11px; }
120
-
121
- .pmpro_thead-msg {display: block; float: right; width: auto; font-style: italic; font-weight: normal; text-align: right; white-space: nowrap; }
122
-
123
- .pmpro_ordersummary {float: right; }
124
-
125
- #pmpro_license { background: #FFF; padding: 5px; border: 1px solid #CCC; height: 200px; margin: 3px; color: #666; overflow: auto; }
126
-
127
- .pmpro_sslseal {float: right; clear: none !important; margin: 0 !important; }
128
-
129
- a.pmpro_radio {text-decoration: none; color: #000;}
130
-
131
- /*---------------------------------------
132
- Membership Invoice
133
- ---------------------------------------*/
134
- .pmpro_invoice { }
135
-
136
-
137
- /*---------------------------------------
138
- Membership Account
139
- ---------------------------------------*/
140
- #pmpro_account .pmpro_box {border-top: 1px solid #CCC; padding: 1em 0; margin: 1em 0; }
141
- #pmpro_account .pmpro_box h3 {margin: 0; padding: 0; border: none; background: none; }
142
- #pmpro_account .pmpro_box p {margin: .5em 0 0 0; padding: 0; }
143
- #pmpro_account .pmpro_box ul {margin-bottom: 0; }
144
-
145
- #pmpro_account #pmpro_account-membership { }
146
- #pmpro_account #pmpro_account-profile { }
147
- #pmpro_account #pmpro_account-billing { }
148
- #pmpro_account #pmpro_account-invoices { }
149
- #pmpro_account #pmpro_account-links { }
150
-
151
- .pmpro_actionlinks {font-size: .8em; margin: .25em 0 0 0; }
152
- .pmpro_actionlinks a {display: inline-block; padding: 0 5px 0 0; margin: 0; text-decoration: none; }
153
- .pmpro_actionlinks a:last-child {padding: 0; }
154
- .pmpro_hidden {display: none;}
155
- li.pmpro_more {list-style-type: none; text-align: center; margin-left: -20px; padding-left: 0;}
156
-
157
- /*---------------------------------------
158
- Membership Levels
159
- ---------------------------------------*/
160
- #pmpro_levels_table {background: #FFF; }
161
- #pmpro_levels_table .pmpro_btn {display: block; }
162
-
163
- /*---------------------------------------
164
- Misc
165
- ---------------------------------------*/
166
- .pmpro_a-right {float: right; width: auto; text-align: right; text-decoration: underline; font-size: 11px; }
167
- .pmpro_a-print {float: right; width: auto; text-decoration: none; color: #345395; background: url(../images/printer.gif) top left no-repeat; padding: 0px 0px 2px 20px; font-size: 11px; line-height: 16px; cursor: pointer; }
168
-
169
- .pmpro_red {color: #CC0000; }
170
- .pmpro_grey {color: #999; }
171
-
172
- .top1em {margin-top: 1em;}
173
- .bot1em {margin-bottom: 1em;}
174
- .bot0em {margin-bottom: 0em;}
175
- .clear {clear: both; }
176
-
177
- .pmpro_small {font-size: .8em;}
178
-
179
- /*
180
- Fixes for Twentyfiften and other themes.
181
- */
182
- form.pmpro_form .input {display: inline-block; width: auto; }
183
- #your-profile input {display: inline-block; width: auto; } /* front end profile via Theme My Login */
184
-
185
- @media (max-width:768px){
186
- #pmpro_levels_table {border: none; }
187
- #pmpro_levels_table th {display: none; }
188
- #pmpro_levels_table td {border: none; display: block; padding: 0 10px; text-align: center; }
189
- #pmpro_levels_table td:first-child {font-size: 1.4em; padding-top: 10px; }
190
- #pmpro_levels_table td:last-child {padding-bottom: 10px; padding-top: 10px; }
191
- form.pmpro_form label {display: block; margin: 0; text-align: left; width: 100%; }
192
- form.pmpro_form label.pmpro_normal, #pmpro_tos_fields label {display: inline-block; }
193
- form.pmpro_form input[type=text].input, form.pmpro_form input[type=password].input {width: 90%; }
194
- form.pmpro_form input[type=text]#other_discount_code, form.pmpro_form input[type=text]#CVV, form.pmpro_form input[type=text]#discount_code {width: 40%; }
195
- form.pmpro_form #pmpro_payment_information_fields .pmpro_thead-msg {float: none; margin-bottom: 10px; text-align: left; text-wrap: normal; white-space: normal; }
196
- form.pmpro_form .leftmar {margin: 2px 0 0 0; }
197
- form.pmpro_form .pmpro_submit {margin-left: 0; }
198
- form.pmpro_form .pmpro_submit #pmpro_submit_span {display: block; float: none; }
199
- form.pmpro_form .pmpro_btn {display: block; width: 100%; }
200
- }
1
+ /*---------------------------------------
2
+ Buttons
3
+ ---------------------------------------*/
4
+ .pmpro_btn, .pmpro_btn:link, .pmpro_content_message a, .pmpro_content_message a:link {
5
+ display: inline-block;
6
+ background-color: #EFEFEF;
7
+ background-image: none;
8
+ border: 1px solid #D6D6D6;
9
+ -webkit-border-radius: 4px;
10
+ -moz-border-radius: 4px;
11
+ border-radius: 4px;
12
+ padding: 6px 12px;
13
+ margin: 0;
14
+ color: #444;
15
+ font-size: 12px;
16
+ font-weight: 700;
17
+ text-transform: none;
18
+ text-decoration: none;
19
+ text-align: center;
20
+ white-space: nowrap;
21
+ vertical-align: middle;
22
+ cursor: pointer;
23
+ -webkit-user-select: none;
24
+ -moz-user-select: none;
25
+ -ms-user-select: none;
26
+ -o-user-select: none;
27
+ user-select: none;
28
+ }
29
+
30
+ .pmpro_btn:focus, .pmpro_content_message a:focus {
31
+ outline: thin dotted;
32
+ outline: 5px auto -webkit-focus-ring-color;
33
+ outline-offset: -2px;
34
+ }
35
+
36
+ .pmpro_btn:hover, .pmpro_btn:focus, .pmpro_content_message a:focus, .pmpro_content_message a:hover {
37
+ color: #000;
38
+ background-color: #FAFAFA;
39
+ text-decoration: none;
40
+ }
41
+
42
+ .pmpro_btn:active,
43
+ .pmpro_btn.active {
44
+ background-image: none;
45
+ outline: 0;
46
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
47
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
48
+ }
49
+
50
+ .pmpro_btn.disabled,
51
+ .pmpro_btn[disabled],
52
+ fieldset[disabled] .pmpro_btn {
53
+ pointer-events: none;
54
+ cursor: not-allowed;
55
+ opacity: 0.65;
56
+ filter: alpha(opacity=65);
57
+ -webkit-box-shadow: none;
58
+ box-shadow: none;
59
+ }
60
+
61
+ .pmpro_btn.pmpro_cancel, .pmpro_btn.pmpro_cancel:link {background: none; border: none; margin: 0 0 0 10px; }
62
+ /*---------------------------------------
63
+ Forms
64
+ ---------------------------------------*/
65
+ form.pmpro_form div {clear: left; margin: .5em 0 1em 0; }
66
+ form.pmpro_form label {float: left; margin: 3px 10px 0 0; width: 200px; font-weight: bold; text-align: right; }
67
+ form.pmpro_form label.pmpro_normal {float: none; margin: 0 0 0 0; width: auto; font-weight: normal; text-align: auto;}
68
+ .pmpro_clickable {cursor: pointer;}
69
+ form.pmpro_form .likelabel {font-weight: bold; }
70
+ form.pmpro_form .input, form.pmpro_form textarea, .input, form.pmpro_form select {border: 1px solid #AAA; display: inline-block; margin: 0 3px 0 0; padding: 3px; width: auto; max-width: 60%; }
71
+ form.pmpro_form textarea {font-family: Arial, Helvetica, sans-serif; font-size: 12px; }
72
+ form.pmpro_form select {margin: 2px 0 0 0 ; font-size: 12px;}
73
+ form.pmpro_form .lite {color: #666; }
74
+ form.pmpro_form .leftmar {margin: 8px 0 0 210px; }
75
+
76
+ form.pmpro_form .pmpro_captcha {margin: 0 0 0 210px !important; }
77
+ form.pmpro_form .pmpro_captcha div {clear: none; margin: 0; }
78
+ form.pmpro_form .pmpro_submit {margin-left: 210px; }
79
+ form.pmpro_form .pmpro_submit span {float: left; }
80
+ form.pmpro_form #pmpro_processing_message {margin: 5px 0 0 10px; font-style: italic; color: #999; }
81
+
82
+ /*--------------------------------------------------
83
+ Messages - Success, Error, Alert
84
+ ----------------------------------------------------*/
85
+ .pmpro_message {background-color: #d9edf7; margin: .5em 0; padding: 10px 15px; color: #31708f; font-size: 14px; font-weight: 400; line-height: 1.5em; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; border: 1px solid #bce8f1; }
86
+
87
+ .pmpro_success {background-color: #dff0d8; color: #3c763d; border-color: #d6e9c6; }
88
+ .pmpro_error {background-color: #f2dede; color: #a94442; border-color: #ebccd1; }
89
+ .pmpro_alert {background-color: #fcf8e3; color: #8a6d3b; border-color: #faebcc;}
90
+
91
+ .pmpro_content_message a {margin: 5px 5px 0 0; }
92
+
93
+ .pmpro_message a {color: #245269; text-decoration: underline; }
94
+ .pmpro_success a {color: #2b542c; }
95
+ .pmpro_error a {color: #843534; }
96
+ .pmpro_alert a {color: #66512c; }
97
+
98
+ input.pmpro_error {background-image: none;}
99
+ select.pmpro_error {background-image: none;}
100
+
101
+ /*---------------------------------------
102
+ Membership Checkout
103
+ ---------------------------------------*/
104
+ .pmpro_checkout thead th {font-weight: bold; color: #444; padding: 10px; }
105
+ .pmpro_checkout tbody td {padding: 10px; }
106
+ .pmpro_checkout tr.odd td {background: rgba(125,125,125,.1); }
107
+ .pmpro_checkout tr.selected td {background: #FFC; }
108
+ .pmpro_checkout tr.active td {background: #FFC; }
109
+ .pmpro_checkout .name {font-weight: bold; }
110
+ .pmpro_checkout ul {margin: 5px 0 0 20px; padding: 0; font-size: .8em; color: #444; }
111
+
112
+ .pmpro_checkout tfoot td {padding: 10px; color: #444; }
113
+ .pmpro_checkout .topfoot td {border-top: 2px solid #CCC;}
114
+ .pmpro_checkout .total td {border-top: 1px solid #CCC; font-size: 1.2em; font-weight: bold; padding-bottom: 30px;}
115
+ .pmpro_checkout tfoot .entercode td {background: #EEE; }
116
+
117
+ .pmpro_checkout td.rtbdr {border-right: 1px solid #CCC; }
118
+
119
+ .pmpro_checkout select {font-size: 11px; }
120
+
121
+ .pmpro_thead-name {float: left; width: 55%; }
122
+ .pmpro_thead-msg {float: right; font-size: .9em; font-style: italic; font-weight: normal; text-align: right; width: 45%; }
123
+
124
+ .pmpro_ordersummary {float: right; }
125
+
126
+ #pmpro_license { background: #FFF; padding: 5px; border: 1px solid #CCC; height: 200px; margin: 3px; color: #666; overflow: auto; }
127
+
128
+ .pmpro_sslseal {float: right; clear: none !important; margin: 0 !important; }
129
+
130
+ a.pmpro_radio {text-decoration: none; color: #000;}
131
+
132
+ /*---------------------------------------
133
+ Membership Invoice
134
+ ---------------------------------------*/
135
+ .pmpro_invoice { }
136
+
137
+
138
+ /*---------------------------------------
139
+ Membership Account
140
+ ---------------------------------------*/
141
+ #pmpro_account .pmpro_box {border-top: 1px solid #CCC; padding: 1em 0; margin: 1em 0; }
142
+ #pmpro_account .pmpro_box h3 {margin: 0; padding: 0; border: none; background: none; }
143
+ #pmpro_account .pmpro_box p {margin: .5em 0 0 0; padding: 0; }
144
+ #pmpro_account .pmpro_box ul {margin-bottom: 0; }
145
+
146
+ #pmpro_account #pmpro_account-membership { }
147
+ #pmpro_account #pmpro_account-profile { }
148
+ #pmpro_account #pmpro_account-billing { }
149
+ #pmpro_account #pmpro_account-invoices { }
150
+ #pmpro_account #pmpro_account-links { }
151
+
152
+ .pmpro_actionlinks {font-size: .8em; margin: .25em 0 0 0; }
153
+ .pmpro_actionlinks a {display: inline-block; padding: 0 5px 0 0; margin: 0; text-decoration: none; }
154
+ .pmpro_actionlinks a:last-child {padding: 0; }
155
+ .pmpro_hidden {display: none;}
156
+ li.pmpro_more {list-style-type: none; text-align: center; margin-left: -20px; padding-left: 0;}
157
+
158
+ /*---------------------------------------
159
+ Membership Levels
160
+ ---------------------------------------*/
161
+ #pmpro_levels_table {background: #FFF; }
162
+ #pmpro_levels_table .pmpro_btn {display: block; }
163
+
164
+ /*---------------------------------------
165
+ Misc
166
+ ---------------------------------------*/
167
+ .pmpro_a-right {float: right; width: auto; text-align: right; text-decoration: underline; font-size: 11px; }
168
+ .pmpro_a-print {float: right; width: auto; text-decoration: none; color: #345395; background: url(../images/printer.gif) top left no-repeat; padding: 0px 0px 2px 20px; font-size: 11px; line-height: 16px; cursor: pointer; }
169
+
170
+ .pmpro_red {color: #CC0000; }
171
+ .pmpro_grey {color: #999; }
172
+
173
+ .top1em {margin-top: 1em;}
174
+ .bot1em {margin-bottom: 1em;}
175
+ .bot0em {margin-bottom: 0em;}
176
+ .clear {clear: both; }
177
+
178
+ .pmpro_small {font-size: .8em;}
179
+
180
+ /* Fixes for Twentyfiften and other themes. */
181
+ #your-profile input {display: inline-block; width: auto; } /* front end profile via Theme My Login */
182
+
183
+ @media (max-width:768px){
184
+ #pmpro_levels_table {border: none; }
185
+ #pmpro_levels_table th {display: none; }
186
+ #pmpro_levels_table td {border: none; display: block; padding: 0 10px; text-align: center; }
187
+ #pmpro_levels_table td:first-child {font-size: 1.4em; padding-top: 10px; }
188
+ #pmpro_levels_table td:last-child {padding-bottom: 10px; padding-top: 10px; }
189
+ form.pmpro_form label {display: block; margin: 0; text-align: left; width: 100%; }
190
+ form.pmpro_form label.pmpro_normal, #pmpro_tos_fields label {display: inline-block; }
191
+ form.pmpro_form input[type=text].input, form.pmpro_form input[type=password].input {width: 90%; }
192
+ form.pmpro_form input[type=text]#other_discount_code, form.pmpro_form input[type=text]#CVV, form.pmpro_form input[type=text]#discount_code {width: 40%; }
193
+ form.pmpro_form #pmpro_payment_information_fields .pmpro_thead-msg {float: none; margin-bottom: 10px; text-align: left; text-wrap: normal; white-space: normal; }
194
+ form.pmpro_form .leftmar {margin: 2px 0 0 0; }
195
+ form.pmpro_form .pmpro_submit {margin-left: 0; }
196
+ form.pmpro_form .pmpro_submit #pmpro_submit_span {display: block; float: none; }
197
+ form.pmpro_form .pmpro_btn {display: block; width: 100%; }
198
+ }
includes/content.php CHANGED
@@ -458,4 +458,35 @@ function pmpro_hide_pages_redirect()
458
}
459
}
460
}
461
- add_action('wp', 'pmpro_hide_pages_redirect');
458
}
459
}
460
}
461
+ add_action('wp', 'pmpro_hide_pages_redirect');
462
+
463
+ /**
464
+ * Adds custom classes to the array of post classes.
465
+ *
466
+ * pmpro-level-required = this post requires at least one level
467
+ * pmpro-level-1 = this post requires level 1
468
+ * pmpro-has-access = this post is usually locked, but the current user has access to this post
469
+ *
470
+ * @param array $classes Classes for the post element.
471
+ * @return array
472
+ *
473
+ * @since 1.8.5.4
474
+ */
475
+ function pmpro_post_classes( $classes ) {
476
+ global $post;
477
+ $post_levels = array();
478
+ $post_levels = pmpro_has_membership_access($post->ID,NULL,true);
479
+ if(!empty($post_levels))
480
+ {
481
+ if(!empty($post_levels[1]))
482
+ {
483
+ $classes[] = 'pmpro-level-required';
484
+ foreach($post_levels[1] as $post_level)
485
+ $classes[] = 'pmpro-level-' . $post_level[0];
486
+ }
487
+ if(!empty($post_levels[0]) && $post_levels[0] == true)
488
+ $classes[] = 'pmpro-has-access';
489
+ }
490
+ return $classes;
491
+ }
492
+ add_filter( 'post_class', 'pmpro_post_classes' );
includes/functions.php CHANGED
@@ -1999,3 +1999,63 @@ function pmpro_isDateThisMonth($str)
1999
return false;
2000
}
2001
1999
return false;
2000
}
2001
2002
+ /**
2003
+ * Function to generate PMPro front end pages.
2004
+ *
2005
+ * @param array $pages {
2006
+ * Formatted as array($name => $title) or array(array('title'=>'The Title', 'content'=>'The Content'))
2007
+ *
2008
+ * @type string $name Page name. (Letters, numbers, and underscores only.)
2009
+ * @type string $title Page title.
2010
+ * }
2011
+ * @return array $created_pages Created page IDs.
2012
+ * @since 1.8.5
2013
+ */
2014
+ function pmpro_generatePages($pages) {
2015
+
2016
+ global $pmpro_pages;
2017
+
2018
+ $pages_created = array();
2019
+
2020
+ if(!empty($pages)) {
2021
+ foreach($pages as $name => $page) {
2022
+
2023
+ //does it already exist?
2024
+ if(!empty($pmpro_pages[$name]))
2025
+ continue;
2026
+
2027
+ //no id set. create an array to store the page info
2028
+ if(is_array($page)) {
2029
+ $title = $page['title'];
2030
+ $content = $page['content'];
2031
+ } else {
2032
+ $title = $page;
2033
+ $content = '[pmpro_' . $name . ']';
2034
+ }
2035
+
2036
+ $insert = array(
2037
+ 'post_title' => $title,
2038
+ 'post_status' => 'publish',
2039
+ 'post_type' => 'page',
2040
+ 'post_content' => $content,
2041
+ 'comment_status' => 'closed',
2042
+ 'ping_status' => 'closed'
2043
+ );
2044
+
2045
+ //make non-account pages a subpage of account
2046
+ if ($name != "account") {
2047
+ $insert['post_parent'] = $pmpro_pages['account'];
2048
+ }
2049
+
2050
+ //create the page
2051
+ $pmpro_pages[$name] = wp_insert_post($insert);
2052
+
2053
+ //update the option too
2054
+ pmpro_setOption($name . "_page_id", $pmpro_pages[$name]);
2055
+ $pages_created[] = $pmpro_pages[$name];
2056
+ }
2057
+ }
2058
+
2059
+ return $pages_created;
2060
+ }
2061
+
includes/https.php CHANGED
@@ -138,7 +138,7 @@ function pmpro_admin_https_handler()
138
{
139
if(!empty($_SERVER['HTTPS']))
140
{
141
- if($_SERVER['HTTPS'] && $_SERVER['HTTPS'] != "off" && $_SERVER['HTTPS'] != "false" && is_admin())
142
{
143
if(substr(get_option("siteurl"), 0, 5) == "http:" && !force_ssl_admin())
144
{
138
{
139
if(!empty($_SERVER['HTTPS']))
140
{
141
+ if($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != "off" && strtolower($_SERVER['HTTPS']) != "false" && is_admin())
142
{
143
if(substr(get_option("siteurl"), 0, 5) == "http:" && !force_ssl_admin())
144
{
includes/init.php CHANGED
@@ -82,6 +82,14 @@ function pmpro_init()
82
83
$pmpro_ready = pmpro_is_ready();
84
85
//set currency
86
$pmpro_currency = pmpro_getOption("currency");
87
if(!$pmpro_currency)
@@ -113,7 +121,7 @@ function pmpro_wp()
113
114
//run the appropriate preheader function
115
foreach($pmpro_pages as $pmpro_page_name => $pmpro_page_id)
116
- {
117
if(!empty($post->post_content) && strpos($post->post_content, "[pmpro_" . $pmpro_page_name . "]") !== false)
118
{
119
//preheader
@@ -141,6 +149,11 @@ function pmpro_wp()
141
add_shortcode("pmpro_" . $pmpro_page_name, "pmpro_pages_shortcode");
142
break; //only the first page found gets a shortcode replacement
143
}
144
}
145
}
146
}
82
83
$pmpro_ready = pmpro_is_ready();
84
85
+ /**
86
+ * This action is documented in /adminpages/pagesettings.php
87
+ */
88
+ $extra_pages = apply_filters('pmpro_extra_page_settings', array());
89
+ foreach($extra_pages as $name => $page)
90
+ $pmpro_pages[$name] = pmpro_getOption($name . '_page_id');
91
+
92
+
93
//set currency
94
$pmpro_currency = pmpro_getOption("currency");
95
if(!$pmpro_currency)
121
122
//run the appropriate preheader function
123
foreach($pmpro_pages as $pmpro_page_name => $pmpro_page_id)
124
+ {
125
if(!empty($post->post_content) && strpos($post->post_content, "[pmpro_" . $pmpro_page_name . "]") !== false)
126
{
127
//preheader
149
add_shortcode("pmpro_" . $pmpro_page_name, "pmpro_pages_shortcode");
150
break; //only the first page found gets a shortcode replacement
151
}
152
+ elseif(!empty($pmpro_page_id) && is_page($pmpro_page_id))
153
+ {
154
+ //shortcode has params, but we still want to load the preheader
155
+ require_once(PMPRO_DIR . "/preheaders/" . $pmpro_page_name . ".php");
156
+ }
157
}
158
}
159
}
includes/metaboxes.php CHANGED
@@ -1,108 +1,136 @@
1
- <?php
2
- /*
3
- Require Membership Meta Box
4
- */
5
- function pmpro_page_meta()
6
- {
7
- global $membership_levels, $post, $wpdb;
8
- $page_levels = $wpdb->get_col("SELECT membership_id FROM {$wpdb->pmpro_memberships_pages} WHERE page_id = '{$post->ID}'");
9
- ?>
10
- <ul id="membershipschecklist" class="list:category categorychecklist form-no-clear">
11
- <input type="hidden" name="pmpro_noncename" id="pmpro_noncename" value="<?php echo wp_create_nonce( plugin_basename(__FILE__) )?>" />
12
- <?php
13
- $in_member_cat = false;
14
- foreach($membership_levels as $level)
15
- {
16
- ?>
17
- <li id="membership-level-<?php echo $level->id?>">
18
- <label class="selectit">
19
- <input id="in-membership-level-<?php echo $level->id?>" type="checkbox" <?php if(in_array($level->id, $page_levels)) { ?>checked="checked"<?php } ?> name="page_levels[]" value="<?php echo $level->id?>" />
20
- <?php
21
- echo $level->name;
22
- //Check which categories are protected for this level
23
- $protectedcategories = $wpdb->get_col("SELECT category_id FROM $wpdb->pmpro_memberships_categories WHERE membership_id = $level->id");
24
- //See if this post is in any of the level's protected categories
25
- if(in_category($protectedcategories, $post->id))
26
- {
27
- $in_member_cat = true;
28
- echo ' *';
29
- }
30
- ?>
31
- </label>
32
- </li>
33
- <?php
34
- }
35
- ?>
36
- </ul>
37
- <?php if('post' == get_post_type($post) && $in_member_cat) { ?>
38
- <p class="pmpro_meta_notice">* <?php _e("This post is already protected for this level because it is within a category that requires membership.", "pmpro");?></p>
39
- <?php } ?>
40
- <?php
41
- }
42
-
43
- //saves meta options
44
- function pmpro_page_save($post_id)
45
- {
46
- global $wpdb;
47
-
48
- if(empty($post_id))
49
- return false;
50
-
51
- if (!empty($_POST['pmpro_noncename']) && !wp_verify_nonce( $_POST['pmpro_noncename'], plugin_basename(__FILE__) )) {
52
- return $post_id;
53
- }
54
-
55
- // verify if this is an auto save routine. If it is our form has not been submitted, so we dont want
56
- // to do anything
57
- if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE )
58
- return $post_id;
59
-
60
- // Check permissions
61
- if(!empty($_POST['post_type']) && 'page' == $_POST['post_type'] )
62
- {
63
- if ( !current_user_can( 'edit_page', $post_id ) )
64
- return $post_id;
65
- }
66
- else
67
- {
68
- if ( !current_user_can( 'edit_post', $post_id ) )
69
- return $post_id;
70
- }
71
-
72
- // OK, we're authenticated: we need to find and save the data
73
- if(isset($_POST['pmpro_noncename']))
74
- {
75
- if(!empty($_POST['page_levels']))
76
- $mydata = $_POST['page_levels'];
77
- else
78
- $mydata = NULL;
79
-
80
- //remove all memberships for this page
81
- $wpdb->query("DELETE FROM {$wpdb->pmpro_memberships_pages} WHERE page_id = '$post_id'");
82
-
83
- //add new memberships for this page
84
- if(is_array($mydata))
85
- {
86
- foreach($mydata as $level)
87
- $wpdb->query("INSERT INTO {$wpdb->pmpro_memberships_pages} (membership_id, page_id) VALUES('" . intval($level) . "', '" . intval($post_id) . "')");
88
- }
89
-
90
- return $mydata;
91
- }
92
- else
93
- return $post_id;
94
- }
95
-
96
- //wrapper to add meta boxes
97
- function pmpro_page_meta_wrapper()
98
- {
99
- add_meta_box('pmpro_page_meta', __('Require Membership', 'pmpro'), 'pmpro_page_meta', 'page', 'side');
100
- add_meta_box('pmpro_page_meta', __('Require Membership', 'pmpro'), 'pmpro_page_meta', 'post', 'side');
101
- }
102
- if (is_admin())
103
- {
104
- add_action('admin_menu', 'pmpro_page_meta_wrapper');
105
- add_action('save_post', 'pmpro_page_save');
106
-
107
- require_once(PMPRO_DIR . "/adminpages/dashboard.php");
108
- }
1
+ <?php
2
+ /*
3
+ Require Membership Meta Box
4
+ */
5
+ function pmpro_page_meta()
6
+ {
7
+ global $membership_levels, $post, $wpdb;
8
+ $page_levels = $wpdb->get_col("SELECT membership_id FROM {$wpdb->pmpro_memberships_pages} WHERE page_id = '{$post->ID}'");
9
+ ?>
10
+ <ul id="membershipschecklist" class="list:category categorychecklist form-no-clear">
11
+ <input type="hidden" name="pmpro_noncename" id="pmpro_noncename" value="<?php echo wp_create_nonce( plugin_basename(__FILE__) )?>" />
12
+ <?php
13
+ $in_member_cat = false;
14
+ foreach($membership_levels as $level)
15
+ {
16
+ ?>
17
+ <li id="membership-level-<?php echo $level->id?>">
18
+ <label class="selectit">
19
+ <input id="in-membership-level-<?php echo $level->id?>" type="checkbox" <?php if(in_array($level->id, $page_levels)) { ?>checked="checked"<?php } ?> name="page_levels[]" value="<?php echo $level->id?>" />
20
+ <?php
21
+ echo $level->name;
22
+ //Check which categories are protected for this level
23
+ $protectedcategories = $wpdb->get_col("SELECT category_id FROM $wpdb->pmpro_memberships_categories WHERE membership_id = $level->id");
24
+ //See if this post is in any of the level's protected categories
25
+ if(in_category($protectedcategories, $post->id))
26
+ {
27
+ $in_member_cat = true;
28
+ echo ' *';
29
+ }
30
+ ?>
31
+ </label>
32
+ </li>
33
+ <?php
34
+ }
35
+ ?>
36
+ </ul>
37
+ <?php if('post' == get_post_type($post) && $in_member_cat) { ?>
38
+ <p class="pmpro_meta_notice">* <?php _e("This post is already protected for this level because it is within a category that requires membership.", "pmpro");?></p>
39
+ <?php } ?>
40
+ <?php
41
+ }
42
+
43
+ //saves meta options
44
+ function pmpro_page_save($post_id)
45
+ {
46
+ global $wpdb;
47
+
48
+ if(empty($post_id))
49
+ return false;
50
+
51
+ if (!empty($_POST['pmpro_noncename']) && !wp_verify_nonce( $_POST['pmpro_noncename'], plugin_basename(__FILE__) )) {
52
+ return $post_id;
53
+ }
54
+
55
+ // verify if this is an auto save routine. If it is our form has not been submitted, so we dont want
56
+ // to do anything
57
+ if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE )
58
+ return $post_id;
59
+
60
+ // Check permissions
61
+ if(!empty($_POST['post_type']) && 'page' == $_POST['post_type'] )
62
+ {
63
+ if ( !current_user_can( 'edit_page', $post_id ) )
64
+ return $post_id;
65
+ }
66
+ else
67
+ {
68
+ if ( !current_user_can( 'edit_post', $post_id ) )
69
+ return $post_id;
70
+ }
71
+
72
+ // OK, we're authenticated: we need to find and save the data
73
+ if(isset($_POST['pmpro_noncename']))
74
+ {
75
+ if(!empty($_POST['page_levels']))
76
+ $mydata = $_POST['page_levels'];
77
+ else
78
+ $mydata = NULL;
79
+
80
+ //remove all memberships for this page
81
+ $wpdb->query("DELETE FROM {$wpdb->pmpro_memberships_pages} WHERE page_id = '$post_id'");
82
+
83
+ //add new memberships for this page
84
+ if(is_array($mydata))
85
+ {
86
+ foreach($mydata as $level)
87
+ $wpdb->query("INSERT INTO {$wpdb->pmpro_memberships_pages} (membership_id, page_id) VALUES('" . intval($level) . "', '" . intval($post_id) . "')");
88
+ }
89
+
90
+ return $mydata;
91
+ }
92
+ else
93
+ return $post_id;
94
+ }
95
+
96
+ //wrapper to add meta boxes
97
+ function pmpro_page_meta_wrapper()
98
+ {
99
+ add_meta_box('pmpro_page_meta', __('Require Membership', 'pmpro'), 'pmpro_page_meta', 'page', 'side');
100
+ add_meta_box('pmpro_page_meta', __('Require Membership', 'pmpro'), 'pmpro_page_meta', 'post', 'side');
101
+ }
102
+ if (is_admin())
103
+ {
104
+ add_action('admin_menu', 'pmpro_page_meta_wrapper');
105
+ add_action('save_post', 'pmpro_page_save');
106
+
107
+ require_once(PMPRO_DIR . "/adminpages/dashboard.php");
108
+ }
109
+
110
+ //show membership level restrictions on category edit
111
+ function pmpro_taxonomy_meta($term)
112
+ {
113
+ global $membership_levels, $post, $wpdb;
114
+
115
+ $protectedlevels = array();
116
+ foreach($membership_levels as $level)
117
+ {
118
+ $protectedlevel = $wpdb->get_col("SELECT category_id FROM $wpdb->pmpro_memberships_categories WHERE membership_id = $level->id AND category_id = $term->term_id");
119
+ if(!empty($protectedlevel))
120
+ $protectedlevels[] .= '<a target="_blank" href="admin.php?page=pmpro-membershiplevels&edit=' . $level->id . '">' . $level->name. '</a>';
121
+ }
122
+ if(!empty($protectedlevels))
123
+ {
124
+ ?>
125
+ <tr class="form-field">
126
+ <th scope="row" valign="top"><?php _e( 'Membership Levels', 'pmpro' ); ?></label></th>
127
+ <td>
128
+ <p><strong>
129
+ <?php echo implode(', ',$protectedlevels); ?></strong></p>
130
+ <p class="description"><?php _e('Only members of these levels will be able to view posts in this category.','pmpro'); ?></p>
131
+ </td>
132
+ </tr>
133
+ <?php
134
+ }
135
+ }
136
+ add_action( 'category_edit_form_fields', 'pmpro_taxonomy_meta', 10, 2 );
languages/pmpro.po CHANGED
@@ -5,7 +5,7 @@
5
msgid ""
6
msgstr ""
7
"Project-Id-Version: pmpro\n"
8
- "POT-Creation-Date: 2015-08-04 10:23-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"
@@ -13,160 +13,165 @@ msgstr ""
13
"Content-Type: text/plain; charset=UTF-8\n"
14
"Content-Transfer-Encoding: 8bit\n"
15
16
- #: adminpages/addons.php:21 adminpages/advancedsettings.php:5
17
- #: adminpages/discountcodes.php:5 adminpages/emailsettings.php:5
18
- #: adminpages/membershiplevels.php:5 adminpages/memberslist-csv.php:5
19
- #: adminpages/memberslist.php:5 adminpages/orders-csv.php:5
20
- #: adminpages/orders.php:5 adminpages/pagesettings.php:5
21
- #: adminpages/paymentsettings.php:5 includes/license.php:36
22
#: adminpages/addons.php:5 adminpages/advancedsettings.php:5
23
#: adminpages/discountcodes.php:5 adminpages/emailsettings.php:5
24
#: adminpages/membershiplevels.php:5 adminpages/memberslist-csv.php:5
25
#: adminpages/memberslist.php:5 adminpages/orders-csv.php:5
26
- #: adminpages/orders.php:5 adminpages/pagesettings.php:5
27
- #: adminpages/paymentsettings.php:5
28
msgid "You do not have permissions to perform this action."
29
msgstr ""
30
31
- #: adminpages/addons.php:80 adminpages/admin_header.php:170
32
#: includes/adminpages.php:52 includes/adminpages.php:146
33
- #: adminpages/admin_header.php:133 adminpages/admin_header.php:154
34
- #: adminpages/admin_header.php:170 includes/adminpages.php:14
35
- #: includes/adminpages.php:52 includes/adminpages.php:69
36
- #: includes/adminpages.php:135 includes/adminpages.php:142
37
- #: includes/adminpages.php:146
38
msgid "Add Ons"
39
msgstr ""
40
41
- #: adminpages/addons.php:87
42
#, php-format
43
msgid "Last checked on %s at %s."
44
msgstr ""
45
46
- #: adminpages/addons.php:88
47
msgid "Check Again"
48
msgstr ""
49
50
- #: adminpages/addons.php:92 adminpages/orders.php:605
51
#: adminpages/orders.php:605
52
msgid "All"
53
msgstr ""
54
55
- #: adminpages/addons.php:93
56
msgid "Active"
57
msgstr ""
58
59
- #: adminpages/addons.php:94
60
msgid "Inactive"
61
msgstr ""
62
63
- #: adminpages/addons.php:95
64
msgid "Update Available"
65
msgstr ""
66
67
- #: adminpages/addons.php:96
68
msgid "Not Installed"
69
msgstr ""
70
71
- #: adminpages/addons.php:109
72
msgid "Add On Name"
73
msgstr ""
74
75
- #: adminpages/addons.php:110
76
msgid "Type"
77
msgstr ""
78
79
- #: adminpages/addons.php:111 adminpages/membershiplevels.php:300
80
- #: adminpages/membershiplevels.php:296 adminpages/membershiplevels.php:298
81
- #: adminpages/membershiplevels.php:300
82
msgid "Description"
83
msgstr ""
84
85
- #: adminpages/addons.php:134
86
msgid "No Add Ons found."
87
msgstr ""
88
89
- #: adminpages/addons.php:195 adminpages/addons.php:200
90
- #: adminpages/addons.php:212
91
msgid "Install Now"
92
msgstr ""
93
94
#: adminpages/addons.php:201 adminpages/addons.php:207
95
#: adminpages/addons.php:213 adminpages/addons.php:219
96
msgid "Download"
97
msgstr ""
98
99
#: adminpages/addons.php:206 adminpages/addons.php:218
100
msgid "Update License"
101
msgstr ""
102
103
- #: adminpages/addons.php:224
104
msgid "Deactivate"
105
msgstr ""
106
107
- #: adminpages/addons.php:224
108
#, php-format
109
msgid "Deactivate %s"
110
msgstr ""
111
112
- #: adminpages/addons.php:228
113
msgid "Activate"
114
msgstr ""
115
116
- #: adminpages/addons.php:228
117
#, php-format
118
msgid "Activate %s"
119
msgstr ""
120
121
- #: adminpages/addons.php:229
122
msgid "Delete"
123
msgstr ""
124
125
- #: adminpages/addons.php:229
126
#, php-format
127
msgid "Delete %s"
128
msgstr ""
129
130
- #: adminpages/addons.php:239
131
msgid "PMPro Free"
132
msgstr ""
133
134
- #: adminpages/addons.php:241
135
msgid "PMPro Core"
136
msgstr ""
137
138
- #: adminpages/addons.php:243
139
msgid "PMPro Plus"
140
msgstr ""
141
142
- #: adminpages/addons.php:245
143
msgid "WordPress.org"
144
msgstr ""
145
146
- #: adminpages/addons.php:247
147
msgid "N/A"
148
msgstr ""
149
150
- #: adminpages/addons.php:256
151
#, php-format
152
msgid "Version %s"
153
msgstr ""
154
155
- #: adminpages/addons.php:261
156
#, php-format
157
msgid "By %s"
158
msgstr ""
159
160
- #: adminpages/addons.php:268
161
#, php-format
162
msgid "More information about %s"
163
msgstr ""
164
165
- #: adminpages/addons.php:270
166
msgid "View details"
167
msgstr ""
168
169
- #: adminpages/addons.php:275
170
msgid "Visit plugin site"
171
msgstr ""
172
@@ -254,21 +259,22 @@ msgstr ""
254
msgid "User Forum"
255
msgstr ""
256
257
- #: adminpages/admin_header.php:150 adminpages/membershiplevels.php:619
258
- #: adminpages/pagesettings.php:69 includes/adminpages.php:64
259
#: includes/adminpages.php:65 includes/adminpages.php:111
260
- #: adminpages/admin_header.php:128 adminpages/admin_header.php:149
261
- #: adminpages/admin_header.php:150 adminpages/membershiplevels.php:490
262
- #: adminpages/membershiplevels.php:496 adminpages/membershiplevels.php:498
263
- #: adminpages/membershiplevels.php:525 adminpages/membershiplevels.php:526
264
- #: adminpages/membershiplevels.php:569 adminpages/pagesettings.php:69
265
#: includes/adminpages.php:44 includes/adminpages.php:64
266
#: includes/adminpages.php:65 includes/adminpages.php:100
267
#: includes/adminpages.php:107 includes/adminpages.php:111
268
msgid "Membership Levels"
269
msgstr ""
270
271
- #: adminpages/admin_header.php:154 adminpages/pagesettings.php:120
272
#: adminpages/admin_header.php:129 adminpages/admin_header.php:150
273
#: adminpages/admin_header.php:154 adminpages/pagesettings.php:92
274
#: adminpages/pagesettings.php:120
@@ -396,9 +402,9 @@ msgid "Hide Ads From Members?"
396
msgstr ""
397
398
#: adminpages/advancedsettings.php:148 adminpages/advancedsettings.php:207
399
- #: adminpages/advancedsettings.php:219 adminpages/membershiplevels.php:668
400
#: adminpages/paymentsettings.php:210
401
- #: classes/gateways/class.pmprogateway_stripe.php:174 includes/profile.php:105
402
#: adminpages/advancedsettings.php:128 adminpages/advancedsettings.php:135
403
#: adminpages/advancedsettings.php:148 adminpages/advancedsettings.php:187
404
#: adminpages/advancedsettings.php:194 adminpages/advancedsettings.php:199
@@ -406,14 +412,14 @@ msgstr ""
406
#: adminpages/advancedsettings.php:219 adminpages/membershiplevels.php:563
407
#: adminpages/membershiplevels.php:569 adminpages/membershiplevels.php:571
408
#: adminpages/membershiplevels.php:578 adminpages/membershiplevels.php:598
409
- #: adminpages/membershiplevels.php:658 adminpages/paymentsettings.php:210
410
- #: adminpages/paymentsettings.php:414 adminpages/paymentsettings.php:429
411
- #: adminpages/paymentsettings.php:434 adminpages/paymentsettings.php:436
412
- #: adminpages/paymentsettings.php:454 adminpages/paymentsettings.php:459
413
- #: adminpages/paymentsettings.php:461
414
#: classes/gateways/class.pmprogateway_stripe.php:173
415
#: classes/gateways/class.pmprogateway_stripe.php:174 includes/profile.php:101
416
- #: includes/profile.php:121 includes/profile.php:123
417
msgid "No"
418
msgstr ""
419
@@ -452,21 +458,22 @@ msgstr ""
452
msgid "multisite only"
453
msgstr ""
454
455
- #: adminpages/advancedsettings.php:208 adminpages/membershiplevels.php:668
456
#: adminpages/paymentsettings.php:211
457
- #: classes/gateways/class.pmprogateway_stripe.php:175 includes/profile.php:106
458
#: adminpages/advancedsettings.php:188 adminpages/advancedsettings.php:195
459
#: adminpages/advancedsettings.php:208 adminpages/membershiplevels.php:563
460
#: adminpages/membershiplevels.php:569 adminpages/membershiplevels.php:571
461
#: adminpages/membershiplevels.php:578 adminpages/membershiplevels.php:598
462
- #: adminpages/membershiplevels.php:658 adminpages/paymentsettings.php:211
463
- #: adminpages/paymentsettings.php:415 adminpages/paymentsettings.php:424
464
- #: adminpages/paymentsettings.php:430 adminpages/paymentsettings.php:435
465
- #: adminpages/paymentsettings.php:437 adminpages/paymentsettings.php:455
466
- #: adminpages/paymentsettings.php:460 adminpages/paymentsettings.php:462
467
#: classes/gateways/class.pmprogateway_stripe.php:174
468
#: classes/gateways/class.pmprogateway_stripe.php:175 includes/profile.php:102
469
- #: includes/profile.php:122 includes/profile.php:124
470
msgid "Yes"
471
msgstr ""
472
@@ -522,7 +529,7 @@ msgstr ""
522
msgid "selected"
523
msgstr ""
524
525
- #: adminpages/advancedsettings.php:368 adminpages/pagesettings.php:251
526
#: adminpages/paymentsettings.php:238 adminpages/advancedsettings.php:284
527
#: adminpages/advancedsettings.php:355 adminpages/advancedsettings.php:368
528
#: adminpages/pagesettings.php:209 adminpages/pagesettings.php:223
@@ -598,7 +605,7 @@ msgid "Add New Discount Code"
598
msgstr ""
599
600
#: adminpages/discountcodes.php:310 adminpages/discountcodes.php:586
601
- #: adminpages/membershiplevels.php:288 adminpages/membershiplevels.php:637
602
#: adminpages/memberslist.php:164 adminpages/orders.php:910
603
#: adminpages/reports/login.php:142 adminpages/discountcodes.php:306
604
#: adminpages/discountcodes.php:309 adminpages/discountcodes.php:310
@@ -608,11 +615,12 @@ msgstr ""
608
#: adminpages/membershiplevels.php:288 adminpages/membershiplevels.php:505
609
#: adminpages/membershiplevels.php:511 adminpages/membershiplevels.php:513
610
#: adminpages/membershiplevels.php:540 adminpages/membershiplevels.php:541
611
- #: adminpages/membershiplevels.php:583 adminpages/memberslist.php:111
612
- #: adminpages/memberslist.php:144 adminpages/memberslist.php:154
613
- #: adminpages/memberslist.php:164 adminpages/orders.php:597
614
- #: adminpages/orders.php:900 adminpages/orders.php:910
615
- #: adminpages/reports/login.php:140 adminpages/reports/login.php:142
616
msgid "ID"
617
msgstr ""
618
@@ -641,7 +649,7 @@ msgstr ""
641
642
#: adminpages/discountcodes.php:371
643
#: classes/gateways/class.pmprogateway_braintree.php:321
644
- #: classes/gateways/class.pmprogateway_stripe.php:455 pages/billing.php:262
645
#: pages/checkout.php:562 adminpages/discountcodes.php:367
646
#: adminpages/discountcodes.php:370 adminpages/discountcodes.php:371
647
#: classes/gateways/class.pmprogateway_braintree.php:308
@@ -672,212 +680,225 @@ msgstr ""
672
msgid "Which Levels Will This Code Apply To?"
673
msgstr ""
674
675
- #: adminpages/discountcodes.php:431 adminpages/membershiplevels.php:342
676
#: adminpages/discountcodes.php:427 adminpages/discountcodes.php:430
677
#: adminpages/discountcodes.php:431 adminpages/membershiplevels.php:337
678
#: adminpages/membershiplevels.php:339 adminpages/membershiplevels.php:341
679
- #: adminpages/membershiplevels.php:507 adminpages/membershiplevels.php:513
680
- #: adminpages/membershiplevels.php:515 adminpages/membershiplevels.php:542
681
- #: pages/levels.php:14
682
msgid "Initial Payment"
683
msgstr ""
684
685
- #: adminpages/discountcodes.php:442 adminpages/membershiplevels.php:353
686
#: adminpages/discountcodes.php:428 adminpages/discountcodes.php:431
687
#: adminpages/discountcodes.php:441 adminpages/discountcodes.php:442
688
#: adminpages/membershiplevels.php:338 adminpages/membershiplevels.php:340
689
#: adminpages/membershiplevels.php:350 adminpages/membershiplevels.php:352
690
msgid "The initial amount collected at registration."
691
msgstr ""
692
693
- #: adminpages/discountcodes.php:447 adminpages/membershiplevels.php:357
694
#: adminpages/discountcodes.php:432 adminpages/discountcodes.php:435
695
#: adminpages/discountcodes.php:446 adminpages/discountcodes.php:447
696
#: adminpages/membershiplevels.php:342 adminpages/membershiplevels.php:344
697
#: adminpages/membershiplevels.php:354 adminpages/membershiplevels.php:356
698
msgid "Recurring Subscription"
699
msgstr ""
700
701
- #: adminpages/discountcodes.php:448 adminpages/membershiplevels.php:358
702
#: adminpages/discountcodes.php:433 adminpages/discountcodes.php:436
703
#: adminpages/discountcodes.php:447 adminpages/discountcodes.php:448
704
#: adminpages/membershiplevels.php:343 adminpages/membershiplevels.php:345
705
#: adminpages/membershiplevels.php:355 adminpages/membershiplevels.php:357
706
msgid "Check if this level has a recurring subscription payment."
707
msgstr ""
708
709
- #: adminpages/discountcodes.php:452 adminpages/membershiplevels.php:362
710
#: adminpages/discountcodes.php:440 adminpages/discountcodes.php:451
711
#: adminpages/discountcodes.php:452 adminpages/membershiplevels.php:347
712
#: adminpages/membershiplevels.php:349 adminpages/membershiplevels.php:359
713
- #: adminpages/membershiplevels.php:361
714
msgid "Billing Amount"
715
msgstr ""
716
717
#: adminpages/discountcodes.php:467 adminpages/discountcodes.php:521
718
- #: adminpages/membershiplevels.php:377 adminpages/membershiplevels.php:480
719
- #: classes/gateways/class.pmprogateway_stripe.php:522
720
#: adminpages/discountcodes.php:446 adminpages/discountcodes.php:466
721
#: adminpages/discountcodes.php:467 adminpages/discountcodes.php:492
722
#: adminpages/discountcodes.php:520 adminpages/discountcodes.php:521
723
#: adminpages/membershiplevels.php:353 adminpages/membershiplevels.php:355
724
#: adminpages/membershiplevels.php:374 adminpages/membershiplevels.php:376
725
- #: adminpages/membershiplevels.php:449 adminpages/membershiplevels.php:476
726
- #: adminpages/membershiplevels.php:477 adminpages/membershiplevels.php:479
727
#: classes/gateways/class.pmprogateway_stripe.php:521
728
#: classes/gateways/class.pmprogateway_stripe.php:522
729
msgid "Day(s)"
730
msgstr ""
731
732
#: adminpages/discountcodes.php:467 adminpages/discountcodes.php:521
733
- #: adminpages/membershiplevels.php:377 adminpages/membershiplevels.php:480
734
- #: classes/gateways/class.pmprogateway_stripe.php:522
735
#: adminpages/discountcodes.php:446 adminpages/discountcodes.php:466
736
#: adminpages/discountcodes.php:467 adminpages/discountcodes.php:492
737
#: adminpages/discountcodes.php:520 adminpages/discountcodes.php:521
738
#: adminpages/membershiplevels.php:353 adminpages/membershiplevels.php:355
739
#: adminpages/membershiplevels.php:374 adminpages/membershiplevels.php:376
740
- #: adminpages/membershiplevels.php:449 adminpages/membershiplevels.php:476
741
- #: adminpages/membershiplevels.php:477 adminpages/membershiplevels.php:479
742
#: classes/gateways/class.pmprogateway_stripe.php:521
743
#: classes/gateways/class.pmprogateway_stripe.php:522
744
msgid "Month(s)"
745
msgstr ""
746
747
#: adminpages/discountcodes.php:467 adminpages/discountcodes.php:521
748
- #: adminpages/membershiplevels.php:377 adminpages/membershiplevels.php:480
749
- #: classes/gateways/class.pmprogateway_stripe.php:522
750
#: adminpages/discountcodes.php:446 adminpages/discountcodes.php:466
751
#: adminpages/discountcodes.php:467 adminpages/discountcodes.php:492
752
#: adminpages/discountcodes.php:520 adminpages/discountcodes.php:521
753
#: adminpages/membershiplevels.php:353 adminpages/membershiplevels.php:355
754
#: adminpages/membershiplevels.php:374 adminpages/membershiplevels.php:376
755
- #: adminpages/membershiplevels.php:449 adminpages/membershiplevels.php:476
756
- #: adminpages/membershiplevels.php:477 adminpages/membershiplevels.php:479
757
#: classes/gateways/class.pmprogateway_stripe.php:521
758
#: classes/gateways/class.pmprogateway_stripe.php:522
759
msgid "Week(s)"
760
msgstr ""
761
762
#: adminpages/discountcodes.php:467 adminpages/discountcodes.php:521
763
- #: adminpages/membershiplevels.php:377 adminpages/membershiplevels.php:480
764
- #: classes/gateways/class.pmprogateway_stripe.php:522
765
#: adminpages/discountcodes.php:446 adminpages/discountcodes.php:466
766
#: adminpages/discountcodes.php:467 adminpages/discountcodes.php:492
767
#: adminpages/discountcodes.php:520 adminpages/discountcodes.php:521
768
#: adminpages/membershiplevels.php:353 adminpages/membershiplevels.php:355
769
#: adminpages/membershiplevels.php:374 adminpages/membershiplevels.php:376
770
- #: adminpages/membershiplevels.php:449 adminpages/membershiplevels.php:476
771
- #: adminpages/membershiplevels.php:477 adminpages/membershiplevels.php:479
772
#: classes/gateways/class.pmprogateway_stripe.php:521
773
#: classes/gateways/class.pmprogateway_stripe.php:522
774
msgid "Year(s)"
775
msgstr ""
776
777
- #: adminpages/discountcodes.php:475 adminpages/membershiplevels.php:386
778
#: adminpages/discountcodes.php:451 adminpages/discountcodes.php:454
779
#: adminpages/discountcodes.php:474 adminpages/discountcodes.php:475
780
#: adminpages/membershiplevels.php:362 adminpages/membershiplevels.php:364
781
#: adminpages/membershiplevels.php:383 adminpages/membershiplevels.php:385
782
msgid "The amount to be billed one cycle after the initial payment."
783
msgstr ""
784
785
- #: adminpages/discountcodes.php:480 adminpages/membershiplevels.php:404
786
#: adminpages/discountcodes.php:456 adminpages/discountcodes.php:459
787
#: adminpages/discountcodes.php:479 adminpages/discountcodes.php:480
788
#: adminpages/membershiplevels.php:380 adminpages/membershiplevels.php:382
789
#: adminpages/membershiplevels.php:401 adminpages/membershiplevels.php:403
790
msgid "Billing Cycle Limit"
791
msgstr ""
792
793
- #: adminpages/discountcodes.php:483 adminpages/membershiplevels.php:408
794
#: adminpages/discountcodes.php:459 adminpages/discountcodes.php:462
795
#: adminpages/discountcodes.php:482 adminpages/discountcodes.php:483
796
#: adminpages/membershiplevels.php:384 adminpages/membershiplevels.php:386
797
#: adminpages/membershiplevels.php:405 adminpages/membershiplevels.php:407
798
msgid ""
799
"The <strong>total</strong> number of recurring billing cycles for this "
800
"level, including the trial period (if applicable) but not including the "
801
"initial payment. Set to zero if membership is indefinite."
802
msgstr ""
803
804
- #: adminpages/discountcodes.php:488 adminpages/membershiplevels.php:417
805
#: adminpages/discountcodes.php:464 adminpages/discountcodes.php:467
806
#: adminpages/discountcodes.php:487 adminpages/discountcodes.php:488
807
#: adminpages/membershiplevels.php:393 adminpages/membershiplevels.php:395
808
#: adminpages/membershiplevels.php:414 adminpages/membershiplevels.php:416
809
msgid "Custom Trial"
810
msgstr ""
811
812
- #: adminpages/discountcodes.php:489 adminpages/membershiplevels.php:419
813
#: adminpages/discountcodes.php:465 adminpages/discountcodes.php:468
814
#: adminpages/discountcodes.php:488 adminpages/discountcodes.php:489
815
#: adminpages/membershiplevels.php:394 adminpages/membershiplevels.php:395
816
#: adminpages/membershiplevels.php:397 adminpages/membershiplevels.php:416
817
- #: adminpages/membershiplevels.php:418
818
msgid "Check to add a custom trial period."
819
msgstr ""
820
821
- #: adminpages/discountcodes.php:493 adminpages/membershiplevels.php:428
822
#: adminpages/discountcodes.php:469 adminpages/discountcodes.php:472
823
#: adminpages/discountcodes.php:492 adminpages/discountcodes.php:493
824
#: adminpages/membershiplevels.php:398 adminpages/membershiplevels.php:404
825
#: adminpages/membershiplevels.php:406 adminpages/membershiplevels.php:425
826
- #: adminpages/membershiplevels.php:427
827
msgid "Trial Billing Amount"
828
msgstr ""
829
830
- #: adminpages/discountcodes.php:504 adminpages/membershiplevels.php:439
831
#: adminpages/discountcodes.php:472 adminpages/discountcodes.php:475
832
#: adminpages/discountcodes.php:503 adminpages/discountcodes.php:504
833
#: adminpages/membershiplevels.php:401 adminpages/membershiplevels.php:407
834
#: adminpages/membershiplevels.php:409 adminpages/membershiplevels.php:436
835
- #: adminpages/membershiplevels.php:438
836
msgid "for the first"
837
msgstr ""
838
839
- #: adminpages/discountcodes.php:506 adminpages/membershiplevels.php:441
840
#: adminpages/discountcodes.php:474 adminpages/discountcodes.php:477
841
#: adminpages/discountcodes.php:505 adminpages/discountcodes.php:506
842
#: adminpages/membershiplevels.php:403 adminpages/membershiplevels.php:409
843
#: adminpages/membershiplevels.php:411 adminpages/membershiplevels.php:438
844
- #: adminpages/membershiplevels.php:440
845
msgid "subscription payments"
846
msgstr ""
847
848
- #: adminpages/discountcodes.php:511 adminpages/membershiplevels.php:470
849
#: adminpages/discountcodes.php:479 adminpages/discountcodes.php:482
850
#: adminpages/discountcodes.php:510 adminpages/discountcodes.php:511
851
#: adminpages/membershiplevels.php:431 adminpages/membershiplevels.php:437
852
#: adminpages/membershiplevels.php:439 adminpages/membershiplevels.php:466
853
#: adminpages/membershiplevels.php:467 adminpages/membershiplevels.php:469
854
msgid "Membership Expiration"
855
msgstr ""
856
857
- #: adminpages/discountcodes.php:512 adminpages/membershiplevels.php:471
858
#: adminpages/discountcodes.php:483 adminpages/discountcodes.php:511
859
#: adminpages/discountcodes.php:512 adminpages/membershiplevels.php:432
860
#: adminpages/membershiplevels.php:438 adminpages/membershiplevels.php:440
861
#: adminpages/membershiplevels.php:467 adminpages/membershiplevels.php:468
862
- #: adminpages/membershiplevels.php:470
863
msgid "Check this to set when membership access expires."
864
msgstr ""
865
866
- #: adminpages/discountcodes.php:516 adminpages/membershiplevels.php:475
867
#: adminpages/discountcodes.php:484 adminpages/discountcodes.php:487
868
#: adminpages/discountcodes.php:515 adminpages/discountcodes.php:516
869
#: adminpages/membershiplevels.php:436 adminpages/membershiplevels.php:442
870
#: adminpages/membershiplevels.php:444 adminpages/membershiplevels.php:471
871
#: adminpages/membershiplevels.php:472 adminpages/membershiplevels.php:474
872
msgid "Expires In"
873
msgstr ""
874
875
- #: adminpages/discountcodes.php:529 adminpages/membershiplevels.php:488
876
#: adminpages/discountcodes.php:500 adminpages/discountcodes.php:528
877
#: adminpages/discountcodes.php:529 adminpages/membershiplevels.php:449
878
#: adminpages/membershiplevels.php:455 adminpages/membershiplevels.php:457
879
#: adminpages/membershiplevels.php:484 adminpages/membershiplevels.php:485
880
- #: adminpages/membershiplevels.php:487
881
msgid ""
882
"Set the duration of membership access. Note that the any future payments "
883
"(recurring subscription, if any) will be cancelled when the membership "
@@ -910,13 +931,14 @@ msgid "Starts"
910
msgstr ""
911
912
#: adminpages/discountcodes.php:589 adminpages/memberslist.php:179
913
- #: adminpages/reports/login.php:147 includes/profile.php:102
914
#: adminpages/discountcodes.php:550 adminpages/discountcodes.php:560
915
#: adminpages/discountcodes.php:588 adminpages/discountcodes.php:589
916
#: adminpages/memberslist.php:121 adminpages/memberslist.php:159
917
#: adminpages/memberslist.php:169 adminpages/memberslist.php:179
918
#: adminpages/reports/login.php:145 adminpages/reports/login.php:147
919
- #: includes/profile.php:98 includes/profile.php:118 includes/profile.php:120
920
msgid "Expires"
921
msgstr ""
922
@@ -940,21 +962,22 @@ msgid ""
940
"select customers."
941
msgstr ""
942
943
- #: adminpages/discountcodes.php:649 adminpages/membershiplevels.php:670
944
#: adminpages/orders.php:992 adminpages/discountcodes.php:614
945
#: adminpages/discountcodes.php:619 adminpages/discountcodes.php:647
946
- #: adminpages/discountcodes.php:648 adminpages/membershiplevels.php:564
947
- #: adminpages/membershiplevels.php:570 adminpages/membershiplevels.php:572
948
- #: adminpages/membershiplevels.php:580 adminpages/membershiplevels.php:599
949
- #: adminpages/membershiplevels.php:660 adminpages/orders.php:658
950
#: adminpages/orders.php:961 adminpages/orders.php:979
951
- #: adminpages/orders.php:989
952
msgid "edit"
953
msgstr ""
954
955
#: adminpages/discountcodes.php:652 adminpages/discountcodes.php:617
956
#: adminpages/discountcodes.php:622 adminpages/discountcodes.php:650
957
- #: adminpages/discountcodes.php:651
958
#, php-format
959
msgid ""
960
"Are you sure you want to delete the %s discount code? The subscriptions for "
@@ -962,15 +985,16 @@ msgid ""
962
"code anymore."
963
msgstr ""
964
965
- #: adminpages/discountcodes.php:652 adminpages/membershiplevels.php:670
966
#: adminpages/orders.php:998 adminpages/discountcodes.php:617
967
#: adminpages/discountcodes.php:622 adminpages/discountcodes.php:650
968
- #: adminpages/discountcodes.php:651 adminpages/membershiplevels.php:566
969
- #: adminpages/membershiplevels.php:572 adminpages/membershiplevels.php:574
970
- #: adminpages/membershiplevels.php:580 adminpages/membershiplevels.php:601
971
- #: adminpages/membershiplevels.php:660 adminpages/orders.php:664
972
#: adminpages/orders.php:967 adminpages/orders.php:985
973
- #: adminpages/orders.php:995
974
msgid "delete"
975
msgstr ""
976
@@ -1139,13 +1163,14 @@ msgstr ""
1139
msgid "Add New Membership Level"
1140
msgstr ""
1141
1142
- #: adminpages/membershiplevels.php:295 adminpages/membershiplevels.php:638
1143
#: adminpages/reports/login.php:144 adminpages/membershiplevels.php:291
1144
#: adminpages/membershiplevels.php:293 adminpages/membershiplevels.php:295
1145
#: adminpages/membershiplevels.php:506 adminpages/membershiplevels.php:512
1146
#: adminpages/membershiplevels.php:514 adminpages/membershiplevels.php:541
1147
#: adminpages/membershiplevels.php:542 adminpages/membershiplevels.php:584
1148
- #: adminpages/reports/login.php:142 adminpages/reports/login.php:144
1149
msgid "Name"
1150
msgstr ""
1151
@@ -1154,226 +1179,249 @@ msgstr ""
1154
msgid "Confirmation Message"
1155
msgstr ""
1156
1157
- #: adminpages/membershiplevels.php:338 adminpages/membershiplevels.php:639
1158
#: adminpages/membershiplevels.php:333 adminpages/membershiplevels.php:335
1159
- #: adminpages/membershiplevels.php:337 adminpages/membershiplevels.php:543
1160
- #: adminpages/membershiplevels.php:585
1161
msgid "Billing Details"
1162
msgstr ""
1163
1164
- #: adminpages/membershiplevels.php:373
1165
- #: classes/gateways/class.pmprogateway_stripe.php:620
1166
#: adminpages/membershiplevels.php:349 adminpages/membershiplevels.php:351
1167
#: adminpages/membershiplevels.php:370 adminpages/membershiplevels.php:372
1168
#: classes/gateways/class.pmprogateway_stripe.php:619
1169
#: classes/gateways/class.pmprogateway_stripe.php:620
1170
msgid "per"
1171
msgstr ""
1172
1173
- #: adminpages/membershiplevels.php:388 adminpages/membershiplevels.php:366
1174
#: adminpages/membershiplevels.php:385 adminpages/membershiplevels.php:387
1175
msgid ""
1176
"Stripe integration currently only supports billing periods of \"Week\", "
1177
"\"Month\" or \"Year\"."
1178
msgstr ""
1179
1180
- #: adminpages/membershiplevels.php:390 adminpages/membershiplevels.php:366
1181
#: adminpages/membershiplevels.php:368 adminpages/membershiplevels.php:387
1182
- #: adminpages/membershiplevels.php:389
1183
msgid ""
1184
"Braintree integration currently only supports billing periods of \"Month\" "
1185
"or \"Year\"."
1186
msgstr ""
1187
1188
- #: adminpages/membershiplevels.php:392 adminpages/membershiplevels.php:368
1189
#: adminpages/membershiplevels.php:370 adminpages/membershiplevels.php:389
1190
- #: adminpages/membershiplevels.php:391
1191
msgid ""
1192
"Payflow integration currently only supports billing frequencies of 1 and "
1193
"billing periods of \"Week\", \"Month\" or \"Year\"."
1194
msgstr ""
1195
1196
- #: adminpages/membershiplevels.php:396 adminpages/membershiplevels.php:372
1197
#: adminpages/membershiplevels.php:374 adminpages/membershiplevels.php:393
1198
- #: adminpages/membershiplevels.php:395
1199
msgid ""
1200
"After saving this level, make note of the ID and create a \"Plan\" in your "
1201
"Braintree dashboard with the same settings and the \"Plan ID\" set to "
1202
"<em>pmpro_#</em>, where # is the level ID."
1203
msgstr ""
1204
1205
- #: adminpages/membershiplevels.php:396 adminpages/membershiplevels.php:398
1206
#: classes/gateways/class.pmprogateway_cybersource.php:101
1207
#: classes/gateways/class.pmprogateway_paypal.php:118
1208
#: classes/gateways/class.pmprogateway_paypalexpress.php:133
1209
#: classes/gateways/class.pmprogateway_paypalstandard.php:117
1210
#: adminpages/membershiplevels.php:372 adminpages/membershiplevels.php:374
1211
#: adminpages/membershiplevels.php:376 adminpages/membershiplevels.php:393
1212
- #: adminpages/membershiplevels.php:395 adminpages/membershiplevels.php:397
1213
#: adminpages/paymentsettings.php:170 adminpages/paymentsettings.php:174
1214
#: adminpages/paymentsettings.php:179
1215
#: classes/gateways/class.pmprogateway_cybersource.php:101
1216
#: classes/gateways/class.pmprogateway_paypal.php:118
1217
#: classes/gateways/class.pmprogateway_paypalexpress.php:123
1218
#: classes/gateways/class.pmprogateway_paypalstandard.php:117
1219
msgid "Note"
1220
msgstr ""
1221
1222
- #: adminpages/membershiplevels.php:398 adminpages/membershiplevels.php:374
1223
#: adminpages/membershiplevels.php:376 adminpages/membershiplevels.php:395
1224
- #: adminpages/membershiplevels.php:397
1225
msgid ""
1226
"You will need to create a \"Plan\" in your Braintree dashboard with the same "
1227
"settings and the \"Plan ID\" set to"
1228
msgstr ""
1229
1230
- #: adminpages/membershiplevels.php:410 adminpages/membershiplevels.php:386
1231
#: adminpages/membershiplevels.php:388 adminpages/membershiplevels.php:407
1232
- #: adminpages/membershiplevels.php:409
1233
msgid ""
1234
"Stripe integration currently does not support billing limits. You can still "
1235
"set an expiration date below."
1236
msgstr ""
1237
1238
- #: adminpages/membershiplevels.php:422 adminpages/membershiplevels.php:398
1239
#: adminpages/membershiplevels.php:400 adminpages/membershiplevels.php:419
1240
- #: adminpages/membershiplevels.php:421
1241
msgid ""
1242
"2Checkout integration does not support custom trials. You can do one period "
1243
"trials by setting an initial payment different from the billing amount."
1244
msgstr ""
1245
1246
- #: adminpages/membershiplevels.php:444 adminpages/membershiplevels.php:406
1247
#: adminpages/membershiplevels.php:412 adminpages/membershiplevels.php:414
1248
#: adminpages/membershiplevels.php:441 adminpages/membershiplevels.php:443
1249
msgid ""
1250
"Stripe integration currently does not support trial amounts greater than $0."
1251
msgstr ""
1252
1253
- #: adminpages/membershiplevels.php:448 adminpages/membershiplevels.php:410
1254
#: adminpages/membershiplevels.php:416 adminpages/membershiplevels.php:418
1255
#: adminpages/membershiplevels.php:445 adminpages/membershiplevels.php:447
1256
msgid ""
1257
"Braintree integration currently does not support trial amounts greater than "
1258
"$0."
1259
msgstr ""
1260
1261
- #: adminpages/membershiplevels.php:452 adminpages/membershiplevels.php:414
1262
#: adminpages/membershiplevels.php:420 adminpages/membershiplevels.php:422
1263
#: adminpages/membershiplevels.php:449 adminpages/membershiplevels.php:451
1264
msgid ""
1265
"Payflow integration currently does not support trial amounts greater than $0."
1266
msgstr ""
1267
1268
- #: adminpages/membershiplevels.php:461 adminpages/membershiplevels.php:422
1269
#: adminpages/membershiplevels.php:428 adminpages/membershiplevels.php:430
1270
#: adminpages/membershiplevels.php:457 adminpages/membershiplevels.php:458
1271
- #: adminpages/membershiplevels.php:460
1272
msgid "Other Settings"
1273
msgstr ""
1274
1275
- #: adminpages/membershiplevels.php:465 adminpages/membershiplevels.php:426
1276
#: adminpages/membershiplevels.php:432 adminpages/membershiplevels.php:434
1277
#: adminpages/membershiplevels.php:461 adminpages/membershiplevels.php:462
1278
- #: adminpages/membershiplevels.php:464
1279
msgid "Disable New Signups"
1280
msgstr ""
1281
1282
- #: adminpages/membershiplevels.php:466 adminpages/membershiplevels.php:427
1283
#: adminpages/membershiplevels.php:433 adminpages/membershiplevels.php:435
1284
#: adminpages/membershiplevels.php:462 adminpages/membershiplevels.php:463
1285
- #: adminpages/membershiplevels.php:465
1286
msgid ""
1287
"Check to hide this level from the membership levels page and disable "
1288
"registration."
1289
msgstr ""
1290
1291
- #: adminpages/membershiplevels.php:496 adminpages/membershiplevels.php:457
1292
#: adminpages/membershiplevels.php:463 adminpages/membershiplevels.php:465
1293
#: adminpages/membershiplevels.php:492 adminpages/membershiplevels.php:493
1294
- #: adminpages/membershiplevels.php:495
1295
msgid "Content Settings"
1296
msgstr ""
1297
1298
- #: adminpages/membershiplevels.php:500 adminpages/membershiplevels.php:461
1299
#: adminpages/membershiplevels.php:467 adminpages/membershiplevels.php:469
1300
#: adminpages/membershiplevels.php:496 adminpages/membershiplevels.php:497
1301
- #: adminpages/membershiplevels.php:499
1302
msgid "Categories"
1303
msgstr ""
1304
1305
- #: adminpages/membershiplevels.php:517 adminpages/membershiplevels.php:516
1306
msgid "Save Level"
1307
msgstr ""
1308
1309
- #: adminpages/membershiplevels.php:518 adminpages/orders.php:561
1310
#: pages/billing.php:339 pages/cancel.php:71 shortcodes/pmpro_account.php:70
1311
- #: adminpages/membershiplevels.php:517 adminpages/orders.php:511
1312
- #: adminpages/orders.php:561 pages/account.php:44 pages/billing.php:295
1313
- #: pages/billing.php:299 pages/billing.php:330 pages/billing.php:339
1314
- #: pages/cancel.php:71 shortcodes/pmpro_account.php:70
1315
msgid "Cancel"
1316
msgstr ""
1317
1318
- #: adminpages/membershiplevels.php:619 adminpages/membershiplevels.php:490
1319
#: adminpages/membershiplevels.php:496 adminpages/membershiplevels.php:498
1320
#: adminpages/membershiplevels.php:525 adminpages/membershiplevels.php:526
1321
- #: adminpages/membershiplevels.php:569
1322
msgid "Add New Level"
1323
msgstr ""
1324
1325
- #: adminpages/membershiplevels.php:622 adminpages/membershiplevels.php:625
1326
#: adminpages/membershiplevels.php:493 adminpages/membershiplevels.php:496
1327
#: adminpages/membershiplevels.php:499 adminpages/membershiplevels.php:501
1328
#: adminpages/membershiplevels.php:502 adminpages/membershiplevels.php:504
1329
#: adminpages/membershiplevels.php:528 adminpages/membershiplevels.php:529
1330
#: adminpages/membershiplevels.php:531 adminpages/membershiplevels.php:532
1331
#: adminpages/membershiplevels.php:572 adminpages/membershiplevels.php:575
1332
msgid "Search Levels"
1333
msgstr ""
1334
1335
- #: adminpages/membershiplevels.php:631 adminpages/membershiplevels.php:579
1336
msgid "Drag and drop membership levels to reorder them on the Levels page."
1337
msgstr ""
1338
1339
- #: adminpages/membershiplevels.php:640 pages/cancel.php:53
1340
#: pages/confirmation.php:83 pages/invoice.php:70
1341
#: shortcodes/pmpro_account.php:46 adminpages/membershiplevels.php:510
1342
#: adminpages/membershiplevels.php:516 adminpages/membershiplevels.php:518
1343
#: adminpages/membershiplevels.php:544 adminpages/membershiplevels.php:545
1344
- #: adminpages/membershiplevels.php:586 pages/account.php:20
1345
- #: pages/cancel.php:53 pages/confirmation.php:81 pages/confirmation.php:83
1346
- #: pages/invoice.php:68 pages/invoice.php:70 shortcodes/pmpro_account.php:46
1347
msgid "Expiration"
1348
msgstr ""
1349
1350
- #: adminpages/membershiplevels.php:641 adminpages/membershiplevels.php:511
1351
#: adminpages/membershiplevels.php:517 adminpages/membershiplevels.php:519
1352
#: adminpages/membershiplevels.php:545 adminpages/membershiplevels.php:546
1353
- #: adminpages/membershiplevels.php:587
1354
msgid "Allow Signups"
1355
msgstr ""
1356
1357
- #: adminpages/membershiplevels.php:656 adminpages/membershiplevels.php:534
1358
#: adminpages/membershiplevels.php:540 adminpages/membershiplevels.php:542
1359
#: adminpages/membershiplevels.php:566 adminpages/membershiplevels.php:569
1360
- #: adminpages/membershiplevels.php:646
1361
msgid "FREE"
1362
msgstr ""
1363
1364
- #: adminpages/membershiplevels.php:665 adminpages/membershiplevels.php:560
1365
#: adminpages/membershiplevels.php:566 adminpages/membershiplevels.php:568
1366
#: adminpages/membershiplevels.php:575 adminpages/membershiplevels.php:595
1367
- #: adminpages/membershiplevels.php:655
1368
msgid "After"
1369
msgstr ""
1370
1371
- #: adminpages/membershiplevels.php:670 adminpages/orders.php:995
1372
#: adminpages/membershiplevels.php:565 adminpages/membershiplevels.php:571
1373
#: adminpages/membershiplevels.php:573 adminpages/membershiplevels.php:580
1374
#: adminpages/membershiplevels.php:600 adminpages/membershiplevels.php:660
1375
- #: adminpages/orders.php:661 adminpages/orders.php:964
1376
- #: adminpages/orders.php:982 adminpages/orders.php:992
1377
msgid "copy"
1378
msgstr ""
1379
@@ -1636,7 +1684,7 @@ msgstr ""
1636
1637
#: adminpages/orders.php:389
1638
#: classes/gateways/class.pmprogateway_braintree.php:304
1639
- #: classes/gateways/class.pmprogateway_stripe.php:409 pages/billing.php:247
1640
#: pages/checkout.php:516 adminpages/orders.php:339 adminpages/orders.php:389
1641
#: classes/gateways/class.pmprogateway_braintree.php:291
1642
#: classes/gateways/class.pmprogateway_braintree.php:304
@@ -1832,7 +1880,7 @@ msgstr ""
1832
msgid "User"
1833
msgstr ""
1834
1835
- #: adminpages/orders.php:914 includes/init.php:222 includes/profile.php:27
1836
#: pages/checkout.php:42 pages/confirmation.php:47 pages/confirmation.php:64
1837
#: pages/confirmation.php:105 pages/invoice.php:28 pages/invoice.php:51
1838
#: adminpages/orders.php:601 adminpages/orders.php:904
@@ -1873,7 +1921,7 @@ msgstr ""
1873
1874
#: adminpages/orders.php:998 adminpages/orders.php:664
1875
#: adminpages/orders.php:967 adminpages/orders.php:985
1876
- #: adminpages/orders.php:995
1877
#, php-format
1878
msgid ""
1879
"Deleting orders is permanent and can affect active users. Are you sure you "
@@ -1882,122 +1930,121 @@ msgstr ""
1882
1883
#: adminpages/orders.php:1008 adminpages/orders.php:674
1884
#: adminpages/orders.php:977 adminpages/orders.php:995
1885
- #: adminpages/orders.php:1005
1886
msgid "No orders found."
1887
msgstr ""
1888
1889
- #: adminpages/pagesettings.php:51 adminpages/pagesettings.php:51
1890
msgid "Membership Account"
1891
msgstr ""
1892
1893
- #: adminpages/pagesettings.php:54 adminpages/pagesettings.php:54
1894
msgid "Membership Billing"
1895
msgstr ""
1896
1897
- #: adminpages/pagesettings.php:57 adminpages/pagesettings.php:57
1898
msgid "Membership Cancel"
1899
msgstr ""
1900
1901
- #: adminpages/pagesettings.php:60 adminpages/pagesettings.php:60
1902
msgid "Membership Checkout"
1903
msgstr ""
1904
1905
- #: adminpages/pagesettings.php:63 adminpages/pagesettings.php:63
1906
msgid "Membership Confirmation"
1907
msgstr ""
1908
1909
- #: adminpages/pagesettings.php:66 adminpages/pagesettings.php:66
1910
msgid "Membership Invoice"
1911
msgstr ""
1912
1913
- #: adminpages/pagesettings.php:73 adminpages/pagesettings.php:73
1914
- #, php-format
1915
- msgid "Membership %s"
1916
- msgstr ""
1917
-
1918
- #: adminpages/pagesettings.php:111 adminpages/pagesettings.php:83
1919
#: adminpages/pagesettings.php:111
1920
msgid "The following pages have been created for you"
1921
msgstr ""
1922
1923
- #: adminpages/pagesettings.php:126 adminpages/pagesettings.php:98
1924
#: adminpages/pagesettings.php:126
1925
msgid ""
1926
"Manage the WordPress pages assigned to each required Paid Memberships Pro "
1927
"page."
1928
msgstr ""
1929
1930
- #: adminpages/pagesettings.php:132 adminpages/pagesettings.php:104
1931
#: adminpages/pagesettings.php:132
1932
msgid ""
1933
"Assign the WordPress pages for each required Paid Memberships Pro page or"
1934
msgstr ""
1935
1936
- #: adminpages/pagesettings.php:132 adminpages/pagesettings.php:104
1937
#: adminpages/pagesettings.php:132
1938
msgid "click here to let us generate them for you"
1939
msgstr ""
1940
1941
- #: adminpages/pagesettings.php:140 adminpages/pagesettings.php:112
1942
#: adminpages/pagesettings.php:140
1943
msgid "Account Page"
1944
msgstr ""
1945
1946
- #: adminpages/pagesettings.php:144 adminpages/pagesettings.php:159
1947
- #: adminpages/pagesettings.php:174 adminpages/pagesettings.php:190
1948
- #: adminpages/pagesettings.php:206 adminpages/pagesettings.php:222
1949
- #: adminpages/pagesettings.php:238 adminpages/pagesettings.php:144
1950
- #: adminpages/pagesettings.php:147 adminpages/pagesettings.php:159
1951
- #: adminpages/pagesettings.php:162 adminpages/pagesettings.php:174
1952
- #: adminpages/pagesettings.php:177 adminpages/pagesettings.php:190
1953
- #: adminpages/pagesettings.php:193 adminpages/pagesettings.php:206
1954
- #: adminpages/pagesettings.php:209 adminpages/pagesettings.php:222
1955
- #: adminpages/pagesettings.php:225 adminpages/pagesettings.php:238
1956
- #: adminpages/pagesettings.php:241
1957
msgid "Choose One"
1958
msgstr ""
1959
1960
- #: adminpages/pagesettings.php:147 adminpages/pagesettings.php:162
1961
- #: adminpages/pagesettings.php:177 adminpages/pagesettings.php:193
1962
- #: adminpages/pagesettings.php:209 adminpages/pagesettings.php:225
1963
- #: adminpages/pagesettings.php:241 adminpages/pagesettings.php:119
1964
- #: adminpages/pagesettings.php:132 adminpages/pagesettings.php:134
1965
- #: adminpages/pagesettings.php:145 adminpages/pagesettings.php:147
1966
- #: adminpages/pagesettings.php:149 adminpages/pagesettings.php:150
1967
- #: adminpages/pagesettings.php:159 adminpages/pagesettings.php:162
1968
- #: adminpages/pagesettings.php:165 adminpages/pagesettings.php:173
1969
- #: adminpages/pagesettings.php:177 adminpages/pagesettings.php:180
1970
- #: adminpages/pagesettings.php:181 adminpages/pagesettings.php:187
1971
- #: adminpages/pagesettings.php:193 adminpages/pagesettings.php:196
1972
- #: adminpages/pagesettings.php:197 adminpages/pagesettings.php:201
1973
- #: adminpages/pagesettings.php:209 adminpages/pagesettings.php:212
1974
- #: adminpages/pagesettings.php:213 adminpages/pagesettings.php:225
1975
- #: adminpages/pagesettings.php:228 adminpages/pagesettings.php:241
1976
- #: adminpages/pagesettings.php:244
1977
msgid "edit page"
1978
msgstr ""
1979
1980
- #: adminpages/pagesettings.php:149 adminpages/pagesettings.php:164
1981
- #: adminpages/pagesettings.php:179 adminpages/pagesettings.php:195
1982
- #: adminpages/pagesettings.php:211 adminpages/pagesettings.php:227
1983
- #: adminpages/pagesettings.php:243 adminpages/pagesettings.php:121
1984
- #: adminpages/pagesettings.php:136 adminpages/pagesettings.php:149
1985
- #: adminpages/pagesettings.php:151 adminpages/pagesettings.php:152
1986
- #: adminpages/pagesettings.php:164 adminpages/pagesettings.php:167
1987
- #: adminpages/pagesettings.php:179 adminpages/pagesettings.php:182
1988
- #: adminpages/pagesettings.php:183 adminpages/pagesettings.php:195
1989
- #: adminpages/pagesettings.php:198 adminpages/pagesettings.php:199
1990
- #: adminpages/pagesettings.php:211 adminpages/pagesettings.php:214
1991
- #: adminpages/pagesettings.php:215 adminpages/pagesettings.php:227
1992
- #: adminpages/pagesettings.php:230 adminpages/pagesettings.php:243
1993
- #: adminpages/pagesettings.php:246
1994
msgid "view page"
1995
msgstr ""
1996
1997
- #: adminpages/pagesettings.php:151 adminpages/pagesettings.php:166
1998
- #: adminpages/pagesettings.php:181 adminpages/pagesettings.php:197
1999
- #: adminpages/pagesettings.php:213 adminpages/pagesettings.php:229
2000
- #: adminpages/pagesettings.php:245 adminpages/pagesettings.php:121
2001
#: adminpages/pagesettings.php:123 adminpages/pagesettings.php:134
2002
#: adminpages/pagesettings.php:138 adminpages/pagesettings.php:147
2003
#: adminpages/pagesettings.php:151 adminpages/pagesettings.php:153
@@ -2014,42 +2061,50 @@ msgstr ""
2014
msgid "Include the shortcode"
2015
msgstr ""
2016
2017
- #: adminpages/pagesettings.php:155 adminpages/pagesettings.php:125
2018
#: adminpages/pagesettings.php:127 adminpages/pagesettings.php:155
2019
#: adminpages/pagesettings.php:158
2020
msgid "Billing Information Page"
2021
msgstr ""
2022
2023
- #: adminpages/pagesettings.php:170 adminpages/pagesettings.php:138
2024
#: adminpages/pagesettings.php:142 adminpages/pagesettings.php:170
2025
#: adminpages/pagesettings.php:173
2026
msgid "Cancel Page"
2027
msgstr ""
2028
2029
- #: adminpages/pagesettings.php:186 adminpages/pagesettings.php:152
2030
#: adminpages/pagesettings.php:158 adminpages/pagesettings.php:186
2031
#: adminpages/pagesettings.php:189
2032
msgid "Checkout Page"
2033
msgstr ""
2034
2035
- #: adminpages/pagesettings.php:202 adminpages/pagesettings.php:166
2036
#: adminpages/pagesettings.php:174 adminpages/pagesettings.php:202
2037
#: adminpages/pagesettings.php:205
2038
msgid "Confirmation Page"
2039
msgstr ""
2040
2041
- #: adminpages/pagesettings.php:218 adminpages/pagesettings.php:180
2042
#: adminpages/pagesettings.php:190 adminpages/pagesettings.php:218
2043
#: adminpages/pagesettings.php:221
2044
msgid "Invoice Page"
2045
msgstr ""
2046
2047
- #: adminpages/pagesettings.php:234 adminpages/pagesettings.php:194
2048
#: adminpages/pagesettings.php:206 adminpages/pagesettings.php:234
2049
#: adminpages/pagesettings.php:237
2050
msgid "Levels Page"
2051
msgstr ""
2052
2053
#: adminpages/paymentsettings.php:49 adminpages/paymentsettings.php:49
2054
#: adminpages/paymentsettings.php:77 adminpages/paymentsettings.php:82
2055
msgid "Your payment settings have been updated."
@@ -2414,7 +2469,7 @@ msgstr ""
2414
#: classes/class.pmproemail.php:258 classes/class.pmproemail.php:337
2415
#: classes/class.pmproemail.php:346 classes/class.pmproemail.php:657
2416
#: classes/gateways/class.pmprogateway_braintree.php:362
2417
- #: classes/gateways/class.pmprogateway_stripe.php:496 pages/checkout.php:75
2418
#: pages/checkout.php:85 pages/checkout.php:603 pages/confirmation.php:52
2419
#: pages/invoice.php:33 classes/class.pmproemail.php:216
2420
#: classes/class.pmproemail.php:218 classes/class.pmproemail.php:225
@@ -2663,6 +2718,7 @@ msgstr ""
2663
#: paid-memberships-pro.php:130
2664
#: classes/gateways/class.pmprogateway_authorizenet.php:39
2665
#: paid-memberships-pro.php:122 paid-memberships-pro.php:123
2666
msgid "Authorize.net"
2667
msgstr ""
2668
@@ -2717,6 +2773,7 @@ msgstr ""
2717
#: classes/gateways/class.pmprogateway_braintree.php:63
2718
#: classes/gateways/class.pmprogateway_braintree.php:76
2719
#: paid-memberships-pro.php:123 paid-memberships-pro.php:124
2720
msgid "Braintree Payments"
2721
msgstr ""
2722 </