Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 1 addition & 5 deletions adminpages/membershiplevels.php
Original file line number Diff line number Diff line change
Expand Up @@ -486,11 +486,7 @@ function update_level_group_order(event, ui) {
</div>
</td>
<td>
<?php if(pmpro_isLevelFree($level)) { ?>
<?php esc_html_e( 'Free', 'paid-memberships-pro' ); ?>
<?php } else { ?>
<?php echo wp_kses_post( str_replace( 'The price for membership is', '', pmpro_getLevelCost($level) ) ); ?>
<?php } ?>
<?php echo wp_kses_post( pmpro_getLevelCost( $level, true, true ) ); ?>
</td>
<td>
<?php if(!pmpro_isLevelExpiring($level)) {
Expand Down
10 changes: 10 additions & 0 deletions adminpages/orders/view-order.php
Original file line number Diff line number Diff line change
Expand Up @@ -359,6 +359,16 @@
<?php } else { ?>
<p><?php esc_html_e( 'The user ID associated with this order is not a valid user.', 'paid-memberships-pro' ); ?></p>
<?php } ?>
<?php
/**
* Fires after the member information content in the order view sidebar.
*
* @since TBD
*
* @param MemberOrder $order The order being viewed.
*/
do_action( 'pmpro_order_view_after_member_info', $order );
?>
</div><!-- .pmpro_section_inside -->
</div><!-- .pmpro_section -->

Expand Down
9 changes: 9 additions & 0 deletions classes/class-pmpro-orders-list-table.php
Original file line number Diff line number Diff line change
Expand Up @@ -1066,6 +1066,15 @@ public function column_user( $item ) {
} else {
echo '['. esc_html__( 'none', 'paid-memberships-pro' ) . ']';
}

/**
* Fires after the user column content in the orders list table.
*
* @since TBD
*
* @param MemberOrder $item The order being displayed.
*/
do_action( 'pmpro_orders_column_after_user', $item );
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,10 +140,7 @@ public function get_recipient_name() {
public function get_email_template_variables() {
$order = $this->order;
$user = $this->user;
$membership_level = pmpro_getSpecificMembershipLevelForUser( $user->ID, $order->membership_id );
if ( empty( $membership_level ) ) {
$membership_level = pmpro_getLevel( $order->membership_id );
}
$membership_level = $order->getMembershipLevelAtCheckout();

$confirmation_in_email = get_pmpro_membership_level_meta( $membership_level->id, 'confirmation_in_email', true );
if ( ! empty( $confirmation_in_email ) ) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -179,10 +179,7 @@ public static function get_email_template_variables_with_description() {
public function get_email_template_variables() {
$order = $this->order;
$user = $this->user;
$membership_level = pmpro_getSpecificMembershipLevelForUser( $user->ID, $order->membership_id );
if ( empty( $membership_level ) ) {
$membership_level = pmpro_getLevel( $order->membership_id );
}
$membership_level = $order->getMembershipLevelAtCheckout();

$discount_code = "";
$discount_code_name = '';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -160,10 +160,7 @@ public static function get_email_template_variables_with_description() {
public function get_email_template_variables() {
$order = $this->order;
$user = $this->user;
$membership_level = pmpro_getSpecificMembershipLevelForUser( $user->ID, $order->membership_id );
if ( empty( $membership_level ) ) {
$membership_level = pmpro_getLevel( $order->membership_id );
}
$membership_level = $order->getMembershipLevelAtCheckout();

$confirmation_message = '';
$confirmation_in_email = get_pmpro_membership_level_meta( $membership_level->id, 'confirmation_in_email', true );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,10 +158,7 @@ public static function get_email_template_variables_with_description() {
public function get_email_template_variables() {
$order = $this->order;
$user = $this->user;
$membership_level = pmpro_getSpecificMembershipLevelForUser( $user->ID, $order->membership_id );
if ( empty( $membership_level ) ) {
$membership_level = pmpro_getLevel( $order->membership_id );
}
$membership_level = $order->getMembershipLevelAtCheckout();

$confirmation_message = '';
$confirmation_in_email = get_pmpro_membership_level_meta( $membership_level->id, 'confirmation_in_email', true );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,10 +146,7 @@ public function get_recipient_name() {
public function get_email_template_variables() {
$order = $this->order;
$user = $this->user;
$membership_level = pmpro_getSpecificMembershipLevelForUser( $user->ID, $order->membership_id );
if ( empty( $membership_level ) ) {
$membership_level = pmpro_getLevel( $order->membership_id );
}
$membership_level = $order->getMembershipLevelAtCheckout();

$confirmation_in_email = get_pmpro_membership_level_meta( $membership_level->id, 'confirmation_in_email', true );
if ( ! empty( $confirmation_in_email ) ) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -151,10 +151,7 @@ public function get_recipient_name() {
public function get_email_template_variables() {
$order = $this->order;
$user = $this->user;
$membership_level = pmpro_getSpecificMembershipLevelForUser( $user->ID, $order->membership_id );
if ( empty( $membership_level ) ) {
$membership_level = pmpro_getLevel( $order->membership_id );
}
$membership_level = $order->getMembershipLevelAtCheckout();

$confirmation_message = '';
$confirmation_in_email = get_pmpro_membership_level_meta( $membership_level->id, 'confirmation_in_email', true );
Expand Down
20 changes: 16 additions & 4 deletions classes/gateways/class.pmprogateway_stripe.php
Original file line number Diff line number Diff line change
Expand Up @@ -2466,11 +2466,23 @@ private function update_customer_at_checkout( $order ) {
$user = empty( $user_id ) ? null : get_userdata( $user_id );
$customer = empty( $user_id ) ? null : $this->get_customer_for_user( $user_id );

// Get customer name.
$name = empty( $order->billing->name ) ? $user->user_login : $order->billing->name;
// Get customer name. Fall back to billing info for guest checkouts.
if ( ! empty( $order->billing->name ) ) {
$name = $order->billing->name;
} elseif ( ! empty( $user->user_login ) ) {
$name = $user->user_login;
} else {
$name = '';
}

// Get user's email.
$email = empty( $user->user_email ) ? "No Email" : $user->user_email;
// Get user's email. Fall back to the email submitted at checkout.
if ( ! empty( $user->user_email ) ) {
$email = $user->user_email;
} elseif ( ! empty( $_REQUEST['bemail'] ) ) {
$email = sanitize_email( $_REQUEST['bemail'] );
} else {
$email = '';
}

// Build data to update customer with.
$customer_args = array(
Expand Down
49 changes: 38 additions & 11 deletions includes/checkout.php
Original file line number Diff line number Diff line change
Expand Up @@ -233,8 +233,19 @@ function pmpro_complete_checkout( $order ) {
'enddate' => $enddate
);

//change level and continue "checkout"
if ( pmpro_changeMembershipLevel( $custom_level, $order->user_id, 'changed' ) !== false ) {
/**
* Filter whether to skip the membership level change during checkout.
*
* When true, the checkout will proceed as successful without calling
* pmpro_changeMembershipLevel(). Used by standalone levels.
*
* @since TBD
*
* @param bool $skip_level_change Whether to skip the level change. Default false.
* @param MemberOrder $order The order being processed.
* @param array $custom_level The level data that would be assigned.
*/
if ( apply_filters( 'pmpro_checkout_skip_level_change', false, $order, $custom_level ) || pmpro_changeMembershipLevel( $custom_level, $order->user_id, 'changed' ) !== false ) {
// Mark the order as successful.
$order->status = "success";
if ( ! empty( $discount_code_id ) ) {
Expand Down Expand Up @@ -277,17 +288,33 @@ function pmpro_complete_checkout( $order ) {

// Check if we should send emails.
if ( apply_filters( 'pmpro_send_checkout_emails', true, $order ) ) {
// Set up some values for the emails.
$user = get_userdata( $order->user_id );
$user->membership_level = $pmpro_level; // Make sure that they have the right level info.
// Set up the user for the emails.
$user = get_userdata( $order->user_id );

// Send email to member.
$pmproemail = new PMProEmail();
$pmproemail->sendCheckoutEmail( $user, $order );
/**
* Filter the user object used for checkout emails.
*
* Allows overriding the user for cases where no WordPress user
* exists, such as guest checkouts.
*
* @since TBD
*
* @param WP_User|false $user The user object, or false if not found.
* @param MemberOrder $order The order being processed.
*/
$user = apply_filters( 'pmpro_checkout_email_user', $user, $order );

// Send email to admin.
$pmproemail = new PMProEmail();
$pmproemail->sendCheckoutAdminEmail( $user, $order );
if ( ! empty( $user ) ) {
$user->membership_level = $pmpro_level;

// Send email to member.
$pmproemail = new PMProEmail();
$pmproemail->sendCheckoutEmail( $user, $order );

// Send email to admin.
$pmproemail = new PMProEmail();
$pmproemail->sendCheckoutAdminEmail( $user, $order );
}
}

return true;
Expand Down
Loading