function process_unsubscribe() { // only for sisow if ($this->setting['aquirer'] != 'sisow') { return parent::process_unsubscribe(); } // get user id $user_id = (int) $_POST['user_id']; //issue #1521 $is_admin = is_super_admin() ? true : false; // get user $user = get_userdata($user_id); $member = mgm_get_member($user_id); // multiple membesrhip level update: if (isset($_POST['membership_type']) && $member->membership_type != $_POST['membership_type']) { $member = mgm_get_member_another_purchase($user_id, $_POST['membership_type']); } // init $cancel_account = true; // check if (isset($member->payment_info->module) && $member->payment_info->module == $this->code) { // self check $subscr_id = null; if (!empty($member->payment_info->subscr_id)) { $subscr_id = $member->payment_info->subscr_id; } elseif (!empty($member->pack_id)) { //check the pack is recurring $s_packs = mgm_get_class('subscription_packs'); $sel_pack = $s_packs->get_pack($member->pack_id); if ($sel_pack['num_cycles'] != 1) { $subscr_id = 0; } // 0 stands for a lost subscription id } // cancel at ideal $cancel_account = $this->cancel_recurring_subscription(null, $user_id, $subscr_id); } // cancel in MGM if ($cancel_account === true) { $this->_cancel_membership($user_id, true); // redirected } // message $message = isset($this->response['message_text']) ? $this->response['message_text'] : __('Error while cancelling subscription', 'mgm'); // issue #1521 if ($is_admin) { mgm_redirect(add_query_arg(array('user_id' => $user_id, 'unsubscribe_errors' => urlencode($message)), admin_url('user-edit.php'))); } // force full url, bypass custom rewrite bug mgm_redirect(mgm_get_custom_url('membership_details', false, array('unsubscribe_errors' => urlencode($message)))); }