Skip to content

Commit

Permalink
Added getMembershipLevelAtCheckout method to MemberOrder class and us…
Browse files Browse the repository at this point in the history
…ing it at checkout to avoid cases where a user's old level info was used in checkout logic.
  • Loading branch information
ideadude committed Jan 10, 2019
1 parent e0f4a58 commit d3e4a3a
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 5 deletions.
38 changes: 38 additions & 0 deletions classes/class.memberorder.php
Original file line number Diff line number Diff line change
Expand Up @@ -425,6 +425,44 @@ function getMembershipLevel($force = false)

return $this->membership_level;
}

/**
* Get a membership level object at checkout
* for the level associated with this order.
*
* @since 2.0.2
* @param bool $force If true, it will reset the property.
*
*/
function getMembershipLevelAtCheckout($force = false) {
global $pmpro_level;

if( ! empty( $this->membership_level ) && empty( $force ) ) {
return $this->membership_level;
}

// If for some reason, we haven't setup pmpro_level yet, do that.
if ( empty( $pmpro_level ) ) {
$pmpro_level = pmpro_getLevelAtCheckout();
}

// Set the level to the checkout level global.
$this->membership_level = $pmpro_level;

// Fix the membership level id.
if(!empty( $this->membership_level) && !empty($this->membership_level->level_id)) {
$this->membership_level->id = $this->membership_level->level_id;
}

// Round prices to avoid extra decimals.
if( ! empty( $this->membership_level ) ) {
$this->membership_level->initial_payment = pmpro_round_price( $this->membership_level->initial_payment );
$this->membership_level->billing_amount = pmpro_round_price( $this->membership_level->billing_amount );
$this->membership_level->trial_amount = pmpro_round_price( $this->membership_level->trial_amount );
}

return $this->membership_level;
}

/**
* Apply tax rules for the price given.
Expand Down
5 changes: 2 additions & 3 deletions classes/gateways/class.pmprogateway_paypalexpress.php
Original file line number Diff line number Diff line change
Expand Up @@ -330,9 +330,8 @@ static function pmpro_checkout_confirmed($pmpro_confirmed)
$morder->BillingFrequency = $pmpro_level->cycle_number;
$morder->Email = $bemail;

//set up level var
$morder->getMembershipLevel();
$morder->membership_level = apply_filters("pmpro_checkout_level", $morder->membership_level);
//setup level var
$morder->getMembershipLevelAtCheckout();

//tax
$morder->subtotal = $morder->InitialPayment;
Expand Down
3 changes: 1 addition & 2 deletions preheaders/checkout.php
Original file line number Diff line number Diff line change
Expand Up @@ -480,8 +480,7 @@
$morder->setGateway();

//setup level var
$morder->getMembershipLevel();
$morder->membership_level = apply_filters( "pmpro_checkout_level", $morder->membership_level );
$morder->getMembershipLevelAtCheckout();

//tax
$morder->subtotal = $morder->InitialPayment;
Expand Down

0 comments on commit d3e4a3a

Please sign in to comment.