Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/paid-memberships-pro/pages/checkout.php

Keine Baseline-Datei – Diff nur gegen leer.
Zur Liste
1 -
1 + <?php
2 + /**
3 + * Template: Checkout
4 + * Version: 3.5
5 + *
6 + * See documentation for how to override the PMPro templates.
7 + * @link https://www.paidmembershipspro.com/documentation/templates/
8 + *
9 + * @version 3.5
10 + *
11 + * @author Paid Memberships Pro
12 + */
13 +
14 + global $gateway, $pmpro_review, $skip_account_fields, $pmpro_paypal_token, $wpdb, $current_user, $pmpro_msg, $pmpro_msgt, $pmpro_requirebilling, $pmpro_level, $pmpro_show_discount_code, $pmpro_error_fields, $pmpro_default_country;
15 + global $discount_code, $username, $password, $password2, $bfirstname, $blastname, $baddress1, $baddress2, $bcity, $bstate, $bzipcode, $bcountry, $bphone, $bemail, $bconfirmemail, $CardType, $AccountNumber, $ExpirationMonth,$ExpirationYear;
16 +
17 + $pmpro_levels = pmpro_getAllLevels();
18 +
19 + //If global $pmpro_level is null, let's instantiate a dummy level object to avoid errors.
20 + if ( ! isset( $pmpro_level ) ) {
21 + $pmpro_level = new PMPro_Membership_Level();
22 + $pmpro_level->id = 0;
23 + $pmpro_level->name = __( 'Invalid Level', 'paid-memberships-pro' );
24 + $pmpro_level->description = $pmpro_level->name;
25 + $pmpro_level->confirmation = '';
26 + $pmpro_level->initial_payment = 0;
27 + $pmpro_level->billing_amount = 0;
28 + $pmpro_level->cycle_number = 0;
29 + $pmpro_level->cycle_period = 'Month';
30 + $pmpro_level->billing_limit = 0;
31 + $pmpro_level->trial_amount = 0;
32 + $pmpro_level->trial_limit = 0;
33 + $pmpro_level->expiration_number = 0;
34 + $pmpro_level->expiration_period = 'Month';
35 + }
36 +
37 + /**
38 + * Filter to set if PMPro uses email or text as the type for email field inputs.
39 + *
40 + * @since 1.8.4.5
41 + *
42 + * @param bool $use_email_type, true to use email type, false to use text type
43 + */
44 + $pmpro_email_field_type = apply_filters('pmpro_email_field_type', true);
45 +
46 + // Set the wrapping class for the checkout div based on the default gateway;
47 + $default_gateway = get_option( 'pmpro_gateway' );
48 + if ( empty( $default_gateway ) ) {
49 + $pmpro_checkout_gateway_class = 'pmpro_section pmpro_checkout_gateway-none';
50 + } else {
51 + $pmpro_checkout_gateway_class = 'pmpro_section pmpro_checkout_gateway-' . $default_gateway;
52 + }
53 + ?>
54 +
55 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro' ) ); ?>">
56 +
57 + <?php
58 + /**
59 + * Fires before the checkout form.
60 + *
61 + * @since 3.4 Added $pmpro_level as a parameter.
62 + *
63 + * @param object $pmpro_level The PMPro Level object being purchased.
64 + */
65 + do_action( 'pmpro_checkout_before_form', $pmpro_level );
66 + ?>
67 +
68 + <section id="pmpro_level-<?php echo intval( $pmpro_level->id ); ?>" class="<?php echo esc_attr( pmpro_get_element_class( $pmpro_checkout_gateway_class, 'pmpro_level-' . $pmpro_level->id ) ); ?>">
69 +
70 + <form id="pmpro_form" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form' ) ); ?>" action="<?php if(!empty($_REQUEST['review'])) echo esc_url( pmpro_url("checkout", "?pmpro_level=" . $pmpro_level->id ) ); ?>" method="post">
71 +
72 + <input type="hidden" id="pmpro_level" name="pmpro_level" value="<?php echo esc_attr( $pmpro_level->id ) ?>" />
73 + <input type="hidden" id="checkjavascript" name="checkjavascript" value="1" />
74 + <?php if ($discount_code && $pmpro_review) { ?>
75 + <input class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_alter_price', 'pmpro_discount_code' ) ); ?>" id="pmpro_discount_code" name="pmpro_discount_code" type="hidden" value="<?php echo esc_attr($discount_code) ?>" />
76 + <?php } ?>
77 +
78 + <?php if($pmpro_msg) { ?>
79 + <div role="alert" id="pmpro_message" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_message ' . $pmpro_msgt, $pmpro_msgt ) ); ?>">
80 + <?php echo wp_kses_post( apply_filters( 'pmpro_checkout_message', $pmpro_msg, $pmpro_msgt ) ); ?>
81 + </div>
82 + <?php } else { ?>
83 + <div id="pmpro_message" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_message' ) ); ?>" style="display: none;"></div>
84 + <?php } ?>
85 +
86 + <?php if ( $pmpro_review ) { ?>
87 + <p><?php echo wp_kses( __( 'Almost done. Review the membership information and pricing below then <strong>click the "Complete Payment" button</strong> to finish your order.', 'paid-memberships-pro' ), array( 'strong' => array() ) ); ?></p>
88 + <?php } ?>
89 +
90 + <?php
91 + $include_pricing_fields = apply_filters( 'pmpro_include_pricing_fields', true );
92 + if ( $include_pricing_fields ) {
93 + ?>
94 + <div id="pmpro_pricing_fields" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_card', 'pmpro_pricing_fields' ) ); ?>">
95 +
96 + <h2 class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_card_title pmpro_font-large' ) ); ?>"><?php esc_html_e( 'Membership Information', 'paid-memberships-pro' ); ?></h2>
97 +
98 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_card_content' ) ); ?>">
99 +
100 + <p class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_level_name_text' ) );?>">
101 + <?php
102 + // Tell the user which level they are signing up for.
103 + printf( esc_html__('You have selected the %s membership level.', 'paid-memberships-pro' ), '<strong>' . esc_html( $pmpro_level->name ) . '</strong>' );
104 +
105 + // If a level will be removed with this purchase, let them know that too.
106 + // First off, get the group for this level and check if it allows a user to have multiple levels.
107 + $group_id = pmpro_get_group_id_for_level( $pmpro_level->id );
108 + $group = pmpro_get_level_group( $group_id );
109 + if ( ! empty( $group ) && empty( $group->allow_multiple_selections ) ) {
110 + // Get all of the user's current membership levels.
111 + $levels = pmpro_getMembershipLevelsForUser( $current_user->ID );
112 +
113 + // Loop through the levels and see if any are in the same group as the level being purchased.
114 + if ( ! empty( $levels ) ) {
115 + foreach ( $levels as $level ) {
116 + // If this is the level that the user is purchasing, continue.
117 + if ( $level->id == $pmpro_level->id ) {
118 + continue;
119 + }
120 +
121 + // If this level is not in the same group, continue.
122 + if ( pmpro_get_group_id_for_level( $level->id ) != $group_id ) {
123 + continue;
124 + }
125 +
126 + // If we made it this far, the user is going to lose this level after checkout.
127 + printf( ' ' . esc_html__( 'Your current membership level of %s will be removed when you complete your purchase.', 'paid-memberships-pro' ), '<strong>' . esc_html( $level->name ) . '</strong>' );
128 + }
129 + }
130 + }
131 + ?>
132 + </p> <!-- end pmpro_level_name_text -->
133 +
134 + <?php
135 + /**
136 + * Allow devs to filter the level description at checkout.
137 + * We also have a function in includes/filters.php that applies the the_content filters to this description.
138 + * @param string $description The level description.
139 + * @param object $pmpro_level The PMPro Level object.
140 + */
141 + $level_description = apply_filters( 'pmpro_level_description', $pmpro_level->description, $pmpro_level );
142 + if ( ! empty( $level_description ) ) { ?>
143 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_level_description_text' ) );?>">
144 + <?php echo wp_kses_post( $level_description ); ?>
145 + </div> <!-- end pmpro_level_description_text -->
146 + <?php
147 + }
148 + ?>
149 +
150 + <div id="pmpro_level_cost">
151 + <?php if($discount_code && pmpro_checkDiscountCode($discount_code)) { ?>
152 + <?php
153 + echo '<p class="' . esc_attr( pmpro_get_element_class( 'pmpro_level_discount_applied' ) ) . '">';
154 + echo sprintf( esc_html__( 'The %s code has been applied to your order.', 'paid-memberships-pro' ), '<span class="' . esc_attr( pmpro_get_element_class( "pmpro_tag pmpro_tag-discount-code", "pmpro_tag-discount-code" ) ) . '">' . esc_html( $discount_code ) . '</span>' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
155 + echo '</p> <!-- end pmpro_level_discount_applied -->';
156 + ?>
157 + <?php } ?>
158 +
159 + <?php
160 + $level_cost_text = pmpro_getLevelCost( $pmpro_level );
161 + if ( ! empty( $level_cost_text ) ) { ?>
162 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_level_cost_text' ) );?>">
163 + <?php echo wp_kses_post( wpautop( $level_cost_text ) ); ?>
164 + </div> <!-- end pmpro_level_cost_text -->
165 + <?php }
166 + ?>
167 +
168 + <?php
169 + $level_expiration_text = pmpro_getLevelExpiration( $pmpro_level );
170 + if ( ! empty( $level_expiration_text ) ) { ?>
171 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_level_expiration_text' ) );?>">
172 + <?php echo wp_kses_post( wpautop( $level_expiration_text ) ); ?>
173 + </div> <!-- end pmpro_level_expiration_text -->
174 + <?php }
175 + ?>
176 + </div> <!-- end #pmpro_level_cost -->
177 +
178 + <?php
179 + /**
180 + * Fires after the level cost text is shown.
181 + *
182 + * @since 3.4 Added $pmpro_level as a parameter.
183 + *
184 + * @param object $pmpro_level The PMPro Level object being purchased.
185 + */
186 + do_action( 'pmpro_checkout_after_level_cost', $pmpro_level );
187 + ?>
188 +
189 + </div> <!-- end pmpro_card_content -->
190 + <?php if ( $pmpro_show_discount_code ) { ?>
191 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_card_actions' ) ); ?>">
192 + <?php if($discount_code && !$pmpro_review) { ?>
193 + <span id="other_discount_code_p"><button type="button" id="other_discount_code_toggle"><?php esc_html_e('Click here to change your discount code', 'paid-memberships-pro' );?></button></span>
194 + <?php } elseif(!$pmpro_review) { ?>
195 + <span id="other_discount_code_p"><?php esc_html_e('Do you have a discount code?', 'paid-memberships-pro' );?> <button type="button" id="other_discount_code_toggle"><?php esc_html_e('Click here to enter your discount code', 'paid-memberships-pro' );?></button></span>
196 + <?php } elseif($pmpro_review && $discount_code) { ?>
197 + <span><strong><?php esc_html_e('Discount Code', 'paid-memberships-pro' );?>:</strong> <?php echo esc_html( $discount_code ); ?></span>
198 + <?php } ?>
199 + <div id="other_discount_code_fields" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_field pmpro_form_field-text' ) ); ?>" style="display: none;">
200 + <label for="pmpro_other_discount_code" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_label' ) ); ?>"><?php esc_html_e('Discount Code', 'paid-memberships-pro' );?></label>
201 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_fields-inline' ) ); ?>">
202 + <input id="pmpro_other_discount_code" name="pmpro_other_discount_code" type="text" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_input pmpro_form_input-text pmpro_alter_price', 'other_discount_code' ) ); ?>" value="<?php echo esc_attr($discount_code); ?>" />
203 + <input aria-label="<?php esc_html_e( 'Apply discount code', 'paid-memberships-pro' ); ?>" type="button" name="other_discount_code_button" id="other_discount_code_button" value="<?php esc_attr_e('Apply', 'paid-memberships-pro' );?>" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_btn pmpro_btn-submit-discount-code', 'other_discount_code_button' ) ); ?>" />
204 + </div>
205 + </div>
206 + </div> <!-- end pmpro_card_actions -->
207 + <?php } ?>
208 + </div> <!-- end pmpro_pricing_fields -->
209 + <?php
210 + } // if ( $include_pricing_fields )
211 + ?>
212 +
213 + <?php
214 + /**
215 + * Fires after the pricing fields are shown.
216 + *
217 + * @since 3.4 Added $pmpro_level as a parameter.
218 + *
219 + * @param object $pmpro_level The PMPro Level object being purchased.
220 + */
221 + do_action( 'pmpro_checkout_after_pricing_fields', $pmpro_level );
222 + ?>
223 +
224 + <?php
225 + // Define whether we should show the Account Information box.
226 + $show_pmpro_user_fields_fieldset = true;
227 +
228 + // If $pmpro_review is set, skip.
229 + if ( $pmpro_review ) {
230 + $show_pmpro_user_fields_fieldset = false;
231 + }
232 +
233 + // If we are skipping the account fields and the user is logged out, skip the entire fieldset.
234 + // The logged out check is important since if the user is logged in, we will show a logged in message.
235 + if ( $skip_account_fields && ! $current_user->ID ) {
236 + $show_pmpro_user_fields_fieldset = false;
237 + }
238 +
239 + if ( $show_pmpro_user_fields_fieldset ) {
240 + ?>
241 + <fieldset id="pmpro_user_fields" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_fieldset', 'pmpro_user_fields' ) ); ?>">
242 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_card' ) ); ?>">
243 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_card_content' ) ); ?>">
244 + <legend class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_legend' ) ); ?>">
245 + <h2 class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_heading pmpro_font-large' ) ); ?>"><?php esc_html_e( 'Account Information', 'paid-memberships-pro' ); ?></h2>
246 + </legend>
247 + <?php if ( ! $skip_account_fields ) { ?>
248 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_fields' ) ); ?>">
249 + <?php
250 + // Get discount code from URL parameter, so if the user logs in it will keep it applied.
251 + $discount_code_link = ! empty( $discount_code) ? '&pmpro_discount_code=' . $discount_code : '';
252 + ?>
253 +
254 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_field pmpro_form_field-text pmpro_form_field-username', 'pmpro_form_field-username' ) ); ?>">
255 + <label for="username" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_label' ) ); ?>"><?php esc_html_e('Username', 'paid-memberships-pro' );?></label>
256 + <input id="username" name="username" type="text" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_input pmpro_form_input-text', 'username' ) ); ?>" autocomplete="username" value="<?php echo esc_attr( $username ); ?>" />
257 + </div> <!-- end pmpro_form_field-username -->
258 +
259 + <?php do_action( 'pmpro_checkout_after_username' ); ?>
260 +
261 + <?php
262 + /**
263 + * Filter to require confirmed password at checkout.
264 + *
265 + * @param bool $pmpro_checkout_confirm_password, true to require a password confirm field, false to hide.
266 + */
267 + $pmpro_checkout_confirm_password = apply_filters( 'pmpro_checkout_confirm_password', true );
268 +
269 + echo $pmpro_checkout_confirm_password ? '<div class="' . esc_attr( pmpro_get_element_class( 'pmpro_cols-2' ) ) . '">' : '';
270 + ?>
271 +
272 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_field pmpro_form_field-password' ) ); ?>">
273 + <label for="password" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_label' ) ); ?>">
274 + <?php esc_html_e( 'Password', 'paid-memberships-pro' );?>
275 + </label>
276 + <input type="password" name="password" id="password" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_input pmpro_form_input-password', 'password' ) ); ?>" autocomplete="new-password" spellcheck="false" value="<?php echo esc_attr( $password ); ?>" />
277 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_field-password-toggle' ) ); ?>">
278 + <button type="button" class="pmpro_btn pmpro_btn-plain pmpro_btn-password-toggle hide-if-no-js" data-toggle="0">
279 + <span class="pmpro_icon pmpro_icon-eye" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--pmpro--color--accent)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-eye"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path><circle cx="12" cy="12" r="3"></circle></svg></span>
280 + <span class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_field-password-toggle-state' ) ); ?>"><?php esc_html_e( 'Show Password', 'paid-memberships-pro' ); ?></span>
281 + </button>
282 + </div> <!-- end pmpro_form_field-password-toggle -->
283 + </div> <!-- end pmpro_form_field-password -->
284 +
285 + <?php
286 + if ( $pmpro_checkout_confirm_password ) {
287 + ?>
288 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_field pmpro_form_field-password', 'pmpro_form_field-password2' ) ); ?>">
289 + <label for="password2" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_label' ) ); ?>"><?php esc_html_e('Confirm Password', 'paid-memberships-pro' );?></label>
290 + <input type="password" name="password2" id="password2" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_input pmpro_form_input-password', 'password2' ) ); ?>" autocomplete="new-password" spellcheck="false" value="<?php echo esc_attr( $password2 ); ?>" />
291 + </div> <!-- end pmpro_form_field-password2 -->
292 + <?php
293 + } else {
294 + ?>
295 + <input type="hidden" name="password2_copy" value="1" />
296 + <?php
297 + }
298 + ?>
299 +
300 + <?php echo $pmpro_checkout_confirm_password ? '</div>' : ''; ?>
301 +
302 + <?php do_action( 'pmpro_checkout_after_password' ); ?>
303 +
304 + <?php
305 + /**
306 + * Filter to require confirmed email at checkout.
307 + *
308 + * @param bool $pmpro_checkout_confirm_email, true to require a email confirm field, false to hide.
309 + */
310 + $pmpro_checkout_confirm_email = apply_filters( 'pmpro_checkout_confirm_email', true );
311 +
312 + echo $pmpro_checkout_confirm_email ? '<div class="' . esc_attr( pmpro_get_element_class( 'pmpro_cols-2' ) ) . '">' : '';
313 + ?>
314 +
315 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_field pmpro_form_field-email pmpro_form_field-bemail', 'pmpro_form_field-bemail' ) ); ?>">
316 + <label for="bemail" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_label' ) ); ?>"><?php esc_html_e('Email Address', 'paid-memberships-pro' );?></label>
317 + <input id="bemail" name="bemail" type="<?php echo ( $pmpro_email_field_type ? 'email' : 'text' ); ?>" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_input pmpro_form_input-email', 'bemail' ) ); ?>" value="<?php echo esc_attr( $bemail ); ?>" />
318 + </div> <!-- end pmpro_form_field-bemail -->
319 +
320 + <?php
321 + if ( $pmpro_checkout_confirm_email ) {
322 + ?>
323 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_field pmpro_form_field-email pmpro_form_field-bconfirmemail', 'pmpro_form_field-bconfirmemail' ) ); ?>">
324 + <label for="bconfirmemail" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_label' ) ); ?>"><?php esc_html_e('Confirm Email Address', 'paid-memberships-pro' );?></label>
325 + <input id="bconfirmemail" name="bconfirmemail" type="<?php echo ( $pmpro_email_field_type ? 'email' : 'text' ); ?>" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_input pmpro_form_input-email', 'bconfirmemail' ) ); ?>" value="<?php echo esc_attr( $bconfirmemail ); ?>" />
326 + </div> <!-- end pmpro_form_field-bconfirmemail -->
327 + <?php
328 + } else {
329 + ?>
330 + <input type="hidden" name="bconfirmemail_copy" value="1" />
331 + <?php
332 + }
333 + ?>
334 +
335 + <?php echo $pmpro_checkout_confirm_email ? '</div>' : ''; ?>
336 +
337 + <?php do_action( 'pmpro_checkout_after_email' ); ?>
338 +
339 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_hidden' ) ); ?>">
340 + <label for="fullname"><?php esc_html_e('Full Name', 'paid-memberships-pro' );?></label>
341 + <input id="fullname" name="fullname" type="text" value="" autocomplete="off" aria-hidden="true" aria-label="<?php esc_html_e( 'Do not fill this field out. Leave this blank.', 'paid-memberships-pro'); ?>"/> <strong><?php esc_html_e('LEAVE THIS BLANK', 'paid-memberships-pro' );?></strong>
342 + </div> <!-- end pmpro_hidden -->
343 + </div> <!-- end pmpro_form_fields -->
344 + <?php } else { ?>
345 + <div id="pmpro_account_loggedin">
346 + <?php
347 + $allowed_html = array(
348 + 'a' => array(
349 + 'href' => array(),
350 + 'title' => array(),
351 + 'target' => array(),
352 + ),
353 + 'strong' => array(),
354 + );
355 + echo wp_kses( sprintf( __('You are logged in as <strong>%s</strong>. If you would like to use a different account for this membership, <a href="%s">log out now</a>.', 'paid-memberships-pro' ), $current_user->user_login, wp_logout_url( esc_url_raw( $_SERVER['REQUEST_URI'] ) ) ), $allowed_html );
356 + ?>
357 + </div> <!-- end pmpro_account_loggedin -->
358 + <?php } ?>
359 + </div> <!-- end pmpro_card_content -->
360 + <?php if ( ! $skip_account_fields ) { ?>
361 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_card_actions' ) ); ?>">
362 + <?php esc_html_e('Already have an account?', 'paid-memberships-pro' );?> <a href="<?php echo esc_url( wp_login_url( apply_filters( 'pmpro_checkout_login_redirect', pmpro_url("checkout", "?pmpro_level=" . $pmpro_level->id . $discount_code_link) ) ) ); ?>"><?php esc_html_e('Log in here', 'paid-memberships-pro' ); ?></a>
363 + </div> <!-- end pmpro_card_actions -->
364 + <?php } ?>
365 + </div> <!-- end pmpro_card -->
366 + </fieldset> <!-- end pmpro_user_fields -->
367 + <?php } ?>
368 +
369 + <?php do_action( 'pmpro_checkout_after_user_fields' ); ?>
370 +
371 + <?php
372 + /**
373 + * Add additional checkout boxes to the checkout page.
374 + *
375 + * @since 3.4 Added $pmpro_level as a parameter.
376 + *
377 + * @param object $pmpro_level The PMPro Level object being purchased.
378 + */
379 + do_action( 'pmpro_checkout_boxes', $pmpro_level );
380 + ?>
381 +
382 + <?php
383 + $pmpro_include_billing_address_fields = apply_filters('pmpro_include_billing_address_fields', true);
384 + if ( $pmpro_include_billing_address_fields ) { ?>
385 + <fieldset id="pmpro_billing_address_fields" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_fieldset', 'pmpro_billing_address_fields' ) ); ?>" <?php if ( ! $pmpro_requirebilling || apply_filters("pmpro_hide_billing_address_fields", false) ) { ?>style="display: none;"<?php } ?>>
386 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_card' ) ); ?>">
387 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_card_content' ) ); ?>">
388 + <legend class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_legend' ) ); ?>">
389 + <h2 class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_heading pmpro_font-large' ) ); ?>"><?php esc_html_e( 'Billing Address', 'paid-memberships-pro' ); ?></h2>
390 + </legend>
391 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_fields pmpro_cols-2' ) ); ?>">
392 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_field pmpro_form_field-text pmpro_form_field-bfirstname', 'pmpro_form_field-bfirstname' ) ); ?>">
393 + <label for="bfirstname" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_label' ) ); ?>"><?php esc_html_e('First Name', 'paid-memberships-pro' );?></label>
394 + <input id="bfirstname" name="bfirstname" type="text" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_input pmpro_form_input-text', 'bfirstname' ) ); ?>" value="<?php echo esc_attr($bfirstname); ?>" autocomplete="given-name" />
395 + </div> <!-- end pmpro_form_field-bfirstname -->
396 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_field pmpro_form_field-text pmpro_form_field-blastname', 'pmpro_form_field-blastname' ) ); ?>">
397 + <label for="blastname" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_label' ) ); ?>"><?php esc_html_e('Last Name', 'paid-memberships-pro' );?></label>
398 + <input id="blastname" name="blastname" type="text" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_input pmpro_form_input-text', 'blastname' ) ); ?>" value="<?php echo esc_attr($blastname); ?>" autocomplete="family-name" />
399 + </div> <!-- end pmpro_form_field-blastname -->
400 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_field pmpro_form_field-text pmpro_form_field-baddress1', 'pmpro_form_field-baddress1' ) ); ?>">
401 + <label for="baddress1" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_label' ) ); ?>"><?php esc_html_e('Address 1', 'paid-memberships-pro' );?></label>
402 + <input id="baddress1" name="baddress1" type="text" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_input pmpro_form_input-text', 'baddress1' ) ); ?>" value="<?php echo esc_attr($baddress1); ?>" autocomplete="billing street-address" />
403 + </div> <!-- end pmpro_form_field-baddress1 -->
404 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_field pmpro_form_field-text pmpro_form_field-baddress2', 'pmpro_form_field-baddress2' ) ); ?>">
405 + <label for="baddress2" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_label' ) ); ?>"><?php esc_html_e('Address 2', 'paid-memberships-pro' );?></label>
406 + <input id="baddress2" name="baddress2" type="text" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_input pmpro_form_input-text', 'baddress2' ) ); ?>" value="<?php echo esc_attr($baddress2); ?>" />
407 + </div> <!-- end pmpro_form_field-baddress2 -->
408 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_field pmpro_form_field-text pmpro_form_field-bcity', 'pmpro_form_field-bcity' ) ); ?>">
409 + <label for="bcity" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_label' ) ); ?>"><?php esc_html_e('City', 'paid-memberships-pro' );?></label>
410 + <input id="bcity" name="bcity" type="text" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_input pmpro_form_input-text', 'bcity' ) ); ?>" value="<?php echo esc_attr($bcity); ?>" />
411 + </div> <!-- end pmpro_form_field-bcity -->
412 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_field pmpro_form_field-text pmpro_form_field-bstate', 'pmpro_form_field-bstate' ) ); ?>">
413 + <label for="bstate" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_label' ) ); ?>"><?php esc_html_e('State', 'paid-memberships-pro' );?></label>
414 + <input id="bstate" name="bstate" type="text" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_input pmpro_form_input-text', 'bstate' ) ); ?>" value="<?php echo esc_attr($bstate); ?>" />
415 + </div> <!-- end pmpro_form_field-bstate -->
416 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_field pmpro_form_field-text pmpro_form_field-bzipcode', 'pmpro_form_field-bzipcode' ) ); ?>">
417 + <label for="bzipcode" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_label' ) ); ?>"><?php esc_html_e('Postal Code', 'paid-memberships-pro' );?></label>
418 + <input id="bzipcode" name="bzipcode" type="text" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_input pmpro_form_input-text', 'bzipcode' ) ); ?>" value="<?php echo esc_attr($bzipcode); ?>" autocomplete="billing postal-code" />
419 + </div> <!-- end pmpro_form_field-bzipcode -->
420 + <?php
421 + $show_country = apply_filters("pmpro_international_addresses", true);
422 + if($show_country) { ?>
423 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_field pmpro_form_field-select pmpro_form_field-bcountry', 'pmpro_form_field-bcountry' ) ); ?>">
424 + <label for="bcountry" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_label' ) ); ?>"><?php esc_html_e('Country', 'paid-memberships-pro' );?></label>
425 + <select name="bcountry" id="bcountry" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_input pmpro_form_input-select', 'bcountry' ) ); ?>" autocomplete="billing country">
426 + <?php
427 + global $pmpro_countries, $pmpro_default_country;
428 + if(!$bcountry) {
429 + $bcountry = $pmpro_default_country;
430 + }
431 + foreach($pmpro_countries as $abbr => $country) { ?>
432 + <option value="<?php echo esc_attr( $abbr ) ?>" <?php if($abbr == $bcountry) { ?>selected="selected"<?php } ?>><?php echo esc_html( $country )?></option>
433 + <?php } ?>
434 + </select>
435 + </div> <!-- end pmpro_form_field-bcountry -->
436 + <?php } else { ?>
437 + <input type="hidden" name="bcountry" id="bcountry" value="<?php echo esc_attr( $pmpro_default_country ); ?>" />
438 + <?php } ?>
439 + <?php if($skip_account_fields) { ?>
440 + <?php
441 + if($current_user->ID) {
442 + if(!$bemail && $current_user->user_email) {
443 + $bemail = $current_user->user_email;
444 + }
445 + if(!$bconfirmemail && $current_user->user_email) {
446 + $bconfirmemail = $current_user->user_email;
447 + }
448 + }
449 + ?>
450 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_field pmpro_form_field-email pmpro_form_field-bemail', 'pmpro_form_field-bemail' ) ); ?>">
451 + <label for="bemail" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_label' ) ); ?>"><?php esc_html_e('Email Address', 'paid-memberships-pro' );?></label>
452 + <input id="bemail" name="bemail" type="<?php echo ($pmpro_email_field_type ? 'email' : 'text'); ?>" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_input pmpro_form_input-email', 'bemail' ) ); ?>" value="<?php echo esc_attr($bemail); ?>" autocomplete="email" />
453 + </div> <!-- end pmpro_form_field-bemail -->
454 + <?php
455 + $pmpro_checkout_confirm_email = apply_filters("pmpro_checkout_confirm_email", true);
456 + if($pmpro_checkout_confirm_email) { ?>
457 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_field pmpro_form_field-email pmpro_form_field-bconfirmemail', 'pmpro_form_field-bconfirmemail' ) ); ?>">
458 + <label for="bconfirmemail" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_label' ) ); ?>"><?php esc_html_e('Confirm Email', 'paid-memberships-pro' );?></label>
459 + <input id="bconfirmemail" name="bconfirmemail" type="<?php echo ($pmpro_email_field_type ? 'email' : 'text'); ?>" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_input pmpro_form_input-email', 'bconfirmemail' ) ); ?>" value="<?php echo esc_attr($bconfirmemail); ?>" autocomplete="email" />
460 + </div> <!-- end pmpro_form_field-bconfirmemail -->
461 + <?php } else { ?>
462 + <input type="hidden" name="bconfirmemail_copy" value="1" />
463 + <?php } ?>
464 + <?php } ?>
465 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_field pmpro_form_field-text pmpro_form_field-bphone', 'pmpro_form_field-bphone' ) ); ?>">
466 + <label for="bphone" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_label' ) ); ?>"><?php esc_html_e('Phone', 'paid-memberships-pro' );?></label>
467 + <input id="bphone" name="bphone" type="text" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_input pmpro_form_input-text', 'bphone' ) ); ?>" value="<?php echo esc_attr(formatPhone($bphone)); ?>" autocomplete="tel" />
468 + </div> <!-- end pmpro_form_field-bphone -->
469 + </div> <!-- end pmpro_form_fields -->
470 + </div> <!-- end pmpro_card_content -->
471 + </div> <!-- end pmpro_card -->
472 + </fieldset> <!-- end pmpro_billing_address_fields -->
473 + <?php } ?>
474 +
475 + <?php do_action( 'pmpro_checkout_after_billing_fields' ); ?>
476 +
477 + <?php
478 + /**
479 + * Filter to set if the payment information fields should be shown.
480 + *
481 + * @param bool $include_payment_information_fields
482 + * @return bool
483 + */
484 + $pmpro_include_payment_information_fields = apply_filters( 'pmpro_include_payment_information_fields', true );
485 + if ( $pmpro_include_payment_information_fields ) {
486 + ?>
487 + <fieldset id="pmpro_payment_information_fields" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_fieldset', 'pmpro_payment_information_fields' ) ); ?>" <?php if ( ! $pmpro_requirebilling || apply_filters( 'pmpro_hide_payment_information_fields', false ) ) { ?>style="display: none;"<?php } ?>>
488 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_card' ) ); ?>">
489 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_card_content' ) ); ?>">
490 + <legend class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_legend' ) ); ?>">
491 + <h2 class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_heading pmpro_font-large' ) ); ?>"><?php esc_html_e( 'Payment Information', 'paid-memberships-pro' ); ?></h2>
492 + </legend>
493 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_fields' ) ); ?>">
494 + <input type="hidden" id="CardType" name="CardType" value="<?php echo esc_attr($CardType);?>" />
495 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_field pmpro_form_field-text pmpro_payment-account-number', 'pmpro_payment-account-number' ) ); ?>">
496 + <label for="AccountNumber" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_label' ) ); ?>"><?php esc_html_e('Card Number', 'paid-memberships-pro' );?></label>
497 + <input id="AccountNumber" name="AccountNumber" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_input pmpro_form_input-text', 'AccountNumber' ) ); ?>" type="text" value="<?php echo esc_attr($AccountNumber); ?>" data-encrypted-name="number" autocomplete="off" />
498 + </div>
499 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_cols-2' ) ); ?>">
500 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_field pmpro_form_field-select pmpro_payment-expiration', 'pmpro_payment-expiration' ) ); ?>">
501 + <label for="ExpirationMonth" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_label' ) ); ?>"><?php esc_html_e('Expiration Date', 'paid-memberships-pro' );?></label>
502 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_fields-inline' ) ); ?>">
503 + <select id="ExpirationMonth" name="ExpirationMonth" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_input pmpro_form_input-select', 'ExpirationMonth' ) ); ?>">
504 + <option value="01" <?php if($ExpirationMonth == "01") { ?>selected="selected"<?php } ?>>01</option>
505 + <option value="02" <?php if($ExpirationMonth == "02") { ?>selected="selected"<?php } ?>>02</option>
506 + <option value="03" <?php if($ExpirationMonth == "03") { ?>selected="selected"<?php } ?>>03</option>
507 + <option value="04" <?php if($ExpirationMonth == "04") { ?>selected="selected"<?php } ?>>04</option>
508 + <option value="05" <?php if($ExpirationMonth == "05") { ?>selected="selected"<?php } ?>>05</option>
509 + <option value="06" <?php if($ExpirationMonth == "06") { ?>selected="selected"<?php } ?>>06</option>
510 + <option value="07" <?php if($ExpirationMonth == "07") { ?>selected="selected"<?php } ?>>07</option>
511 + <option value="08" <?php if($ExpirationMonth == "08") { ?>selected="selected"<?php } ?>>08</option>
512 + <option value="09" <?php if($ExpirationMonth == "09") { ?>selected="selected"<?php } ?>>09</option>
513 + <option value="10" <?php if($ExpirationMonth == "10") { ?>selected="selected"<?php } ?>>10</option>
514 + <option value="11" <?php if($ExpirationMonth == "11") { ?>selected="selected"<?php } ?>>11</option>
515 + <option value="12" <?php if($ExpirationMonth == "12") { ?>selected="selected"<?php } ?>>12</option>
516 + </select>/<select id="ExpirationYear" name="ExpirationYear" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_input pmpro_form_input-select', 'ExpirationYear' ) ); ?>">
517 + <?php
518 + $num_years = apply_filters( 'pmpro_num_expiration_years', 10 );
519 +
520 + for ( $i = date_i18n( 'Y' ); $i < intval( date_i18n( 'Y' ) ) + intval( $num_years ); $i++ )
521 + {
522 + ?>
523 + <option value="<?php echo esc_attr( $i ) ?>" <?php if($ExpirationYear == $i) { ?>selected="selected"<?php } elseif($i == date_i18n( 'Y' ) + 1) { ?>selected="selected"<?php } ?>><?php echo esc_html( $i )?></option>
524 + <?php
525 + }
526 + ?>
527 + </select>
528 + </div> <!-- end pmpro_form_fields-inline -->
529 + </div>
530 + <?php
531 + $pmpro_show_cvv = apply_filters("pmpro_show_cvv", true);
532 + if($pmpro_show_cvv) { ?>
533 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_field pmpro_form_field-text pmpro_payment-cvv', 'pmpro_payment-cvv' ) ); ?>">
534 + <label for="CVV" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_label' ) ); ?>"><?php esc_html_e('Security Code (CVC)', 'paid-memberships-pro' );?></label>
535 + <input id="CVV" name="CVV" type="text" size="4" value="<?php if(!empty($_REQUEST['CVV'])) { echo esc_attr( sanitize_text_field( $_REQUEST['CVV'] ) ); }?>" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_input pmpro_form_input-text', 'CVV' ) ); ?>" />
536 + </div>
537 + <?php } ?>
538 + </div> <!-- end pmpro_cols-2 -->
539 + <?php if($pmpro_show_discount_code) { ?>
540 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_cols-2' ) ); ?>">
541 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_field pmpro_form_field-text pmpro_payment-discount-code', 'pmpro_payment-discount-code' ) ); ?>">
542 + <label for="pmpro_discount_code" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_label' ) ); ?>"><?php esc_html_e('Discount Code', 'paid-memberships-pro' );?></label>
543 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_fields-inline' ) ); ?>">
544 + <input class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_input pmpro_form_input-text pmpro_alter_price', 'discount_code' ) ); ?>" id="pmpro_discount_code" name="pmpro_discount_code" type="text" size="10" value="<?php echo esc_attr($discount_code); ?>" />
545 + <input aria-label="<?php esc_html_e( 'Apply discount code', 'paid-memberships-pro' ); ?>" type="button" id="discount_code_button" name="discount_code_button" value="<?php esc_attr_e('Apply', 'paid-memberships-pro' );?>" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_btn pmpro_btn-submit-discount-code', 'other_discount_code_button' ) ); ?>" />
546 + </div> <!-- end pmpro_form_fields-inline -->
547 + <div id="discount_code_message" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_message', 'discount_code_message' ) ); ?>" style="display: none;"></div>
548 + </div>
549 + </div> <!-- end pmpro_cols-2 -->
550 + <?php } ?>
551 + </div> <!-- end pmpro_form_fields -->
552 + </div> <!-- end pmpro_card_content -->
553 + </div> <!-- end pmpro_card -->
554 + </fieldset> <!-- end pmpro_payment_information_fields -->
555 + <?php
556 + }
557 + ?>
558 +
559 + <?php
560 + /**
561 + * Fires after the payment information fields on the checkout page.
562 + *
563 + * @since 3.4 Added $pmpro_level as a parameter.
564 + *
565 + * @param object $pmpro_level The PMPro Level object being purchased.
566 + */
567 + do_action( 'pmpro_checkout_after_payment_information_fields', $pmpro_level );
568 +
569 + /**
570 + * Fires before the submit button on the checkout page.
571 + *
572 + * @since 3.4 Added $pmpro_level as a parameter.
573 + *
574 + * @param object $pmpro_level The PMPro Level object being purchased.
575 + */
576 + do_action( 'pmpro_checkout_before_submit_button', $pmpro_level );
577 +
578 + // Add nonce.
579 + wp_nonce_field( 'pmpro_checkout_nonce', 'pmpro_checkout_nonce' );
580 + ?>
581 +
582 + <?php if ( $pmpro_msg ) { ?>
583 + <div id="pmpro_message_bottom" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_message ' . $pmpro_msgt, $pmpro_msgt ) ); ?>"><?php echo wp_kses_post( apply_filters( 'pmpro_checkout_message', $pmpro_msg, $pmpro_msgt ) ); ?></div>
584 + <?php } else { ?>
585 + <div id="pmpro_message_bottom" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_message' ) ); ?>" style="display: none;"></div>
586 + <?php } ?>
587 +
588 + <div class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_form_submit' ) ); ?>">
589 +
590 + <?php if ( $pmpro_review ) { ?>
591 + <span id="pmpro_submit_span">
592 + <input type="hidden" name="confirm" value="1" />
593 + <input type="hidden" name="token" value="<?php echo esc_attr($pmpro_paypal_token); ?>" />
594 + <input type="hidden" name="gateway" value="<?php echo esc_attr($gateway); ?>" />
595 + <input type="hidden" name="submit-checkout" value="1" />
596 + <input type="submit" id="pmpro_btn-submit" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_btn pmpro_btn-submit-checkout', 'pmpro_btn-submit-checkout' ) ); ?>" value="<?php esc_attr_e('Complete Payment', 'paid-memberships-pro' );?>" />
597 + </span>
598 +
599 + <?php } else { ?>
600 +
601 + <?php
602 + /**
603 + * Filter to set the default submit button on the checkout page.
604 + *
605 + * @param bool $pmpro_checkout_default_submit_button Default is true.
606 + * @return bool
607 + */
608 + $pmpro_checkout_default_submit_button = apply_filters('pmpro_checkout_default_submit_button', true);
609 + if ( $pmpro_checkout_default_submit_button ) {
610 + ?>
611 + <span id="pmpro_submit_span">
612 + <input type="hidden" name="submit-checkout" value="1" />
613 + <input type="submit" id="pmpro_btn-submit" class="<?php echo esc_attr( pmpro_get_element_class( 'pmpro_btn pmpro_btn-submit-checkout', 'pmpro_btn-submit-checkout' ) ); ?>" value="<?php if($pmpro_requirebilling) { esc_html_e('Submit and Check Out', 'paid-memberships-pro' ); } else { esc_html_e('Submit and Confirm', 'paid-memberships-pro' );}?>" />
614 + </span>
615 + <?php
616 + }
617 + ?>
618 +
619 + <?php } ?>
620 +
621 + <div id="pmpro_processing_message" style="visibility: hidden;">
622 + <?php
623 + $processing_message = apply_filters("pmpro_processing_message", __("Processing...", 'paid-memberships-pro' ));
624 + echo wp_kses_post( $processing_message );
625 + ?>
626 + </div>
627 +
628 + </div> <!-- end pmpro_form_submit -->
629 +
630 + </form> <!-- end pmpro_form -->
631 +
632 + <?php
633 + /**
634 + * Fires after the submit button on the checkout page.
635 + *
636 + * @since 3.4 Added $pmpro_level as a parameter.
637 + *
638 + * @param object $pmpro_level The PMPro Level object being purchased.
639 + */
640 + do_action( 'pmpro_checkout_after_form', $pmpro_level );
641 + ?>
642 +
643 + </section> <!-- end pmpro_level-ID -->
644 +
645 + </div> <!-- end pmpro -->
646 +