/**
  * Return a link for subscribers to change the status of their subscription, as specified with $status parameter
  *
  * @param string $subscription_key A subscription key of the form created by @see self::get_subscription_key()
  * @since 1.0
  * @deprecated 2.0
  */
 public static function get_users_change_status_link($subscription_key, $status)
 {
     _deprecated_function(__METHOD__, '2.0', 'wcs_get_users_change_status_link( $subscription_id, $status )');
     if ('suspended' == $status) {
         _deprecated_argument(__METHOD__, '2.0', 'The "suspended" parameter value is deprecated. Use "on-hold" instead.');
         $status = 'on-hold';
     }
     $subscription_id = wcs_get_subscription_id_from_key($subscription_key);
     $current_status = '';
     $subscription = wcs_get_subscription($subscription_id);
     if ($subscription instanceof WC_Subscription) {
         $current_status = $subscription->get_status();
     }
     return apply_filters('woocommerce_subscriptions_users_action_link', wcs_get_users_change_status_link($subscription_id, $status, $current_status), $subscription_key, $status);
 }
    // Exit if accessed directly
}
if (empty($subscription)) {
    global $wp;
    if (!isset($wp->query_vars['confirm-cancel']) || 'shop_subscription' != get_post_type(absint($wp->query_vars['confirm-cancel'])) || !current_user_can('view_order', absint($wp->query_vars['confirm-cancel']))) {
        echo '<div class="woocommerce-error">' . esc_html__('Invalid Subscription.', 'woocommerce-skip-one') . ' <a href="' . esc_url(wc_get_page_permalink('myaccount')) . '" class="wc-forward">' . esc_html__('My Account', 'woocommerce-skip-one') . '</a>' . '</div>';
        return;
    }
    $subscription = wcs_get_subscription($wp->query_vars['confirm-cancel']);
}
wc_print_notices();
?>
<p><center><?php 
_e('Confirm Cancellation?', 'woocommerce-skip-one');
?>
</center></p>

<?php 
do_action('woocommerce_skip_one_confirm_cancel_before_action');
?>

<p><center><a class="button" href="<?php 
echo esc_url(wcs_get_users_change_status_link($subscription->id, 'cancelled'));
?>
"><?php 
echo apply_filters('woocommerce_skip_one_confirm_cancel_button_text', __('Confirm Cancelling Subscription', 'woocommerce-skip-one'));
?>
</a></center></p>

<?php 
do_action('woocommerce_skip_one_confirm_cancel_after_action');
/**
 * Retrieve available actions that a user can perform on the subscription
 *
 * @since 2.0
 */
function wcs_get_all_user_actions_for_subscription($subscription, $user_id)
{
    $actions = array();
    if (user_can($user_id, 'edit_shop_subscription_status', $subscription->id)) {
        $admin_with_suspension_disallowed = current_user_can('manage_woocommerce') && '0' === get_option(WC_Subscriptions_Admin::$option_prefix . '_max_customer_suspensions', '0') ? true : false;
        $current_status = $subscription->get_status();
        if ($subscription->can_be_updated_to('on-hold') && wcs_can_user_put_subscription_on_hold($subscription, $user_id) && !$admin_with_suspension_disallowed) {
            $actions['suspend'] = array('url' => wcs_get_users_change_status_link($subscription->id, 'on-hold', $current_status), 'name' => __('Suspend', 'woocommerce-subscriptions'));
        } elseif ($subscription->can_be_updated_to('active') && !$subscription->needs_payment()) {
            $actions['reactivate'] = array('url' => wcs_get_users_change_status_link($subscription->id, 'active', $current_status), 'name' => __('Reactivate', 'woocommerce-subscriptions'));
        }
        if (wcs_can_user_resubscribe_to($subscription, $user_id)) {
            $actions['resubscribe'] = array('url' => wcs_get_users_resubscribe_link($subscription), 'name' => __('Resubscribe', 'woocommerce-subscriptions'));
        }
        // Show button for subscriptions which can be cancelled and which may actually require cancellation (i.e. has a future payment)
        $next_payment = $subscription->get_time('next_payment');
        if ($subscription->can_be_updated_to('cancelled') && !$subscription->is_one_payment() && ($next_payment > 0 || $subscription->has_status('on-hold') && empty($next_payment))) {
            $actions['cancel'] = array('url' => wcs_get_users_change_status_link($subscription->id, 'cancelled', $current_status), 'name' => _x('Cancel', 'an action on a subscription', 'woocommerce-subscriptions'));
        }
    }
    return apply_filters('wcs_view_subscription_actions', $actions, $subscription);
}
 /**
  * Now uses the URL /my-account/confirm-cancel/{post-id} when
  * the customer wants to cancel the subscription from the Skip One Page.
  *
  * @since  1.0.0
  * @access public
  * @filter wcso_get_confirm_cancel_subscription_url
  * @return string
  */
 public static function get_confirm_cancel_sub_url($subscription_id)
 {
     $c = get_option('woocommerce_skip_one_can_customer_confirm');
     if ($c == 'yes') {
         $confirm_cancel_url = wc_get_endpoint_url('confirm-cancel', $subscription_id, wc_get_page_permalink('myaccount'));
     } else {
         $confirm_cancel_url = esc_url(wcs_get_users_change_status_link($subscription_id, 'cancelled'));
     }
     return apply_filters('wcso_get_confirm_cancel_subscription_url', $confirm_cancel_url, $subscription_id);
 }