示例#1
0
 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))));
 }