/**
  * Loads the my-subscriptions.php template on the My Account page.
  *
  * @since 1.0
  */
 public static function get_my_subscriptions_template()
 {
     $subscriptions = WC_Subscriptions_Manager::get_users_subscriptions();
     $user_id = get_current_user_id();
     $all_actions = array();
     foreach ($subscriptions as $subscription_key => $subscription_details) {
         $actions = array();
         if ($subscription_details['status'] == 'trash') {
             unset($subscriptions[$subscription_key]);
             continue;
         }
         $admin_with_suspension_disallowed = current_user_can('manage_woocommerce') && 0 == get_option(WC_Subscriptions_Admin::$option_prefix . '_max_customer_suspensions', 0) ? true : false;
         if (WC_Subscriptions_Manager::can_subscription_be_changed_to('on-hold', $subscription_key, $user_id) && WC_Subscriptions_Manager::current_user_can_suspend_subscription($subscription_key) && !$admin_with_suspension_disallowed) {
             $actions['suspend'] = array('url' => WC_Subscriptions_Manager::get_users_change_status_link($subscription_key, 'on-hold'), 'name' => __('Suspend', 'woocommerce-subscriptions'));
         } elseif (WC_Subscriptions_Manager::can_subscription_be_changed_to('active', $subscription_key, $user_id) && !WC_Subscriptions_Manager::subscription_requires_payment($subscription_key, $user_id)) {
             $actions['reactivate'] = array('url' => WC_Subscriptions_Manager::get_users_change_status_link($subscription_key, 'active'), 'name' => __('Reactivate', 'woocommerce-subscriptions'));
         }
         if (WC_Subscriptions_Renewal_Order::can_subscription_be_renewed($subscription_key, $user_id)) {
             $actions['renew'] = array('url' => WC_Subscriptions_Renewal_Order::get_users_renewal_link($subscription_key), 'name' => __('Renew', 'woocommerce-subscriptions'));
         }
         $renewal_orders = WC_Subscriptions_Renewal_Order::get_renewal_orders($subscription_details['order_id'], 'ID');
         $last_order_id = end($renewal_orders);
         if ($last_order_id) {
             $renewal_order = new WC_Order($last_order_id);
             if (WC_Subscriptions_Manager::can_subscription_be_changed_to('active', $subscription_key, $user_id) && in_array($renewal_order->status, array('pending', 'failed')) && !is_numeric(get_post_meta($renewal_order->id, '_failed_order_replaced_by', true))) {
                 $actions['pay'] = array('url' => $renewal_order->get_checkout_payment_url(), 'name' => __('Pay', 'woocommerce-subscriptions'));
             }
         } else {
             // Check if the master order still needs to be paid
             $order = new WC_Order($subscription_details['order_id']);
             if ('pending' == $order->status && WC_Subscriptions_Manager::can_subscription_be_changed_to('active', $subscription_key, $user_id)) {
                 $actions['pay'] = array('url' => $order->get_checkout_payment_url(), 'name' => __('Pay', 'woocommerce-subscriptions'));
             }
         }
         if (WC_Subscriptions_Manager::can_subscription_be_changed_to('cancelled', $subscription_key, $user_id) && $subscription_details['interval'] != $subscription_details['length']) {
             $actions['cancel'] = array('url' => WC_Subscriptions_Manager::get_users_change_status_link($subscription_key, 'cancelled'), 'name' => __('Cancel', 'woocommerce-subscriptions'));
         }
         $all_actions[$subscription_key] = $actions;
     }
     $all_actions = apply_filters('woocommerce_my_account_my_subscriptions_actions', $all_actions, $subscriptions);
     woocommerce_get_template('myaccount/my-subscriptions.php', array('subscriptions' => $subscriptions, 'actions' => $all_actions, 'user_id' => $user_id), '', plugin_dir_path(__FILE__) . 'templates/');
 }
 /**
  * Set renewal order dates generated by 1.2 upgrade to be in site time & remove any renewal orders which were a
  * duplicate of the initial order.
  *
  * @since 1.2.1
  */
 private static function upgrade_to_version_1_2_1()
 {
     global $wpdb;
     // Get all the orders that existed at the time of the 1.2 upgrade
     $orders_to_upgrade = get_option('wcs_1_2_upgraded_order_ids', array());
     $upgraded_orders = get_option('wcs_1_2_1_upgraded_order_ids', array());
     $orders_to_upgrade = array_diff($orders_to_upgrade, $upgraded_orders);
     foreach ($orders_to_upgrade as $order_id) {
         if (WC_Subscriptions_Order::order_contains_subscription($order_id)) {
             // More efficient than creating a WC_Order object
             $post = get_post($order_id);
             // Trash any renewal orders created which are a duplicate of the initial order
             $return = $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->posts} WHERE post_date_gmt = %s AND post_parent = %d AND post_type = 'shop_order'", $post->post_date_gmt, $order_id));
             // Make sure each generated renewal order's date is in site time
             foreach (WC_Subscriptions_Renewal_Order::get_renewal_orders($order_id) as $renewal_order_id) {
                 $renewal_post = get_post($renewal_order_id);
                 $wpdb->query($wpdb->prepare("UPDATE {$wpdb->posts} SET post_date = %s WHERE post_date_gmt = %s AND ID = %d AND post_type = 'shop_order'", get_date_from_gmt($renewal_post->post_date_gmt), $renewal_post->post_date_gmt, $renewal_order_id));
             }
         }
         // Regardless of whether the order contains a subscription or not we don't want to upgrade it again
         $upgraded_orders[] = $order_id;
         update_option('wcs_1_2_1_upgraded_order_ids', $upgraded_orders);
     }
 }