Skip to content

Instantly share code, notes, and snippets.

@strangerstudios
Created December 9, 2011 21:45
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save strangerstudios/1453435 to your computer and use it in GitHub Desktop.
Save strangerstudios/1453435 to your computer and use it in GitHub Desktop.
PMPro Disable Membership Dropdown on Profile Page For Users with Gateway Subscriptions
/*
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