Created
December 9, 2011 21:45
-
-
Save strangerstudios/1453435 to your computer and use it in GitHub Desktop.
PMPro Disable Membership Dropdown on Profile Page For Users with Gateway Subscriptions
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Disable the membership level dropdown in the admin if the user has a subscription at the gateway. | |
This will keep admins from accidentally cancelling subscriptions. | |
Note: Requires PMPro version 1.3.7+ | |
*/ | |
function my_pmpro_profile_show_membership_level($show, $user) | |
{ | |
global $wpdb; | |
//if the user's membership level is attached to a gateway, disable this field | |
$last_invoice = new MemberOrder(); | |
$last_invoice->getLastMemberOrder($user->ID); | |
if(!empty($last_invoice->gateway) && $last_invoice->status == "success") | |
{ | |
//we don't want them to break the subscription. so show a disabled form | |
?> | |
<tr> | |
<th><label for="membership_level"><?php _e("Current Level"); ?></label></th> | |
<td> | |
<input type="hidden" name="membership_level" value="<?php echo $user->membership_level->id;?>" /> | |
<select name="" disabled="disabled"> | |
<option value="" <?php if(!$user->membership_level->ID) { ?>selected="selected"<?php } ?>><?php echo $user->membership_level->name; ?></option> | |
<?php | |
foreach($levels as $level) | |
{ | |
$current_level = ($user->membership_level->ID == $level->id); | |
?> | |
<option value="<?php echo $level->id?>" <?php if($current_level) { ?>selected="selected"<?php } ?>><?php echo $level->name?></option> | |
<?php | |
} | |
?> | |
</select> | |
<?php | |
$membership_values = $wpdb->get_row("SELECT * FROM $wpdb->pmpro_memberships_users WHERE user_id = '" . $user->ID . "' LIMIT 1"); | |
if($membership_values->billing_amount > 0 || $membership_values->trial_amount > 0) | |
{ | |
?> | |
<?php if($membership_values->billing_amount > 0) { ?> | |
at $<?php echo $membership_values->billing_amount?> | |
<?php if($membership_values->cycle_number > 1) { ?> | |
per <?php echo $membership_values->cycle_number?> <?php echo sornot($membership_values->cycle_period,$membership_values->cycle_number)?> | |
<?php } elseif($membership_values->cycle_number == 1) { ?> | |
per <?php echo $membership_values->cycle_period?> | |
<?php } ?> | |
<?php } ?> | |
<?php if($membership_values->billing_limit) { ?> for <?php echo $membership_values->billing_limit.' '.sornot($membership_values->cycle_period,$membership_values->billing_limit)?><?php } ?>. | |
<?php if($membership_values->trial_limit) { ?> | |
The first <?php echo $membership_values->trial_limit?> <?php echo sornot("payments",$membership_values->trial_limit)?> will cost $<?php echo $membership_values->trial_amount?>. | |
<?php } ?> | |
<?php | |
} | |
else | |
{ | |
?> | |
User is not paying. | |
<?php | |
} | |
?> | |
</td> | |
</tr> | |
<?php | |
//we showed the disabled field, so let's return false to skip the default | |
return false; | |
} | |
else | |
return $show; //all good. show them the form | |
} | |
add_filter("pmpro_profile_show_membership_level", "my_pmpro_profile_show_membership_level", 10, 2); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment