404,
)
);
}
$user_id = $user->ID;
if( !function_exists(‘pmpro_getMembershipLevelForUser’) || !function_exists(‘pmpro_changeMembershipLevel’) ) {
AppPresser_Logger::log( ‘Cannot add to membership level because PMPro plugin is not active.’, $user_email );
return new WP_Error( ‘rest_plugin_error’,
__( ‘PMPro plugin not active.’, ‘apppresser’ ),
array(
‘status’ => 404,
)
);
}
// is user already subscribed and active? If so, skip
$user_membership_level = pmpro_getMembershipLevelForUser( $user_id );
if( is_object( $user_membership_level ) ) {
$user_membership_level = $user_membership_level->ID;
}
if( $user_membership_level == self::$membership_level_id ) {
$membership_success = self::$membership_level_id;
AppPresser_Logger::log( ‘User ‘ . $user_id . ‘ purchased but is already active on membership level.’, self::$membership_level_id );
} elseif( !$user_membership_level || $user_membership_level != self::$membership_level_id ) {
// add user to level
//figure out start date
$now = current_time(‘timestamp’);
$startdate = date(“Y-m-d”, $now);
$custom_level = array(
‘user_id’ => $user_id,
‘membership_id’ => self::$membership_level_id,
‘code_id’ => ”,
‘initial_payment’ => ‘1.00’,
‘billing_amount’ => ”,
‘cycle_number’ => ”,
‘cycle_period’ => ”,
‘billing_limit’ => ”,
‘trial_amount’ => ”,
‘trial_limit’ => ”,
‘startdate’ => $startdate,
‘enddate’ => ”
);
$change = pmpro_changeMembershipLevel( $custom_level, $user_id );
if( $change ) {
AppPresser_Logger::log( ‘User ‘ . $user_id . ‘ added to membership level.’, self::$membership_level_id );
} else {
AppPresser_Logger::log( ‘User ‘ . $user_id . ‘ not added to membership level, unknown error.’, serialize( $change ) );
}
}
}
/*
* This function is called when a membership is cancelled.
* A user can always click “restore membership” if their membership is cancelled in error.
*/
public function cancel_membership( $user_email, $purchase, $request ) {
$user = get_user_by( ’email’, $user_email );
if( !$user || is_wp_error( $user ) ) {
AppPresser_Logger::log( ‘Cannot cancel membership because user does not exist.’, $user_email );
return new WP_Error( ‘rest_user_error’,
__( ‘Cannot cancel membership, because cannot get user for ‘ . $user_email, ‘apppresser’ ),
array(
‘status’ => 404,
)
);
}
$user_id = $user->ID;
// change membership level to 0 to cancel
$cancel = pmpro_changeMembershipLevel( 0, $user_id );
AppPresser_Logger::log( ‘Cancelled membership for ‘, $user_id );
}
}
AppPresser_IAP_PMP::get();