/** * Return an associative array of a given subscriptions details (if it exists) in the pre v2.0 data structure. * * @param WC_Subscription $subscription An instance of WC_Subscription * @return array Subscription details * @since 2.0 */ function wcs_get_subscription_in_deprecated_structure(WC_Subscription $subscription) { $completed_payments = array(); if ($subscription->get_completed_payment_count()) { if (!empty($subscription->order) && $subscription->order->has_status($subscription->get_paid_order_statuses())) { $completed_payments[] = $subscription->order->post->post_date_gmt; } $paid_renewal_order_ids = get_posts(array('posts_per_page' => -1, 'post_status' => $subscription->get_paid_order_statuses(), 'post_type' => 'shop_order', 'orderby' => 'date', 'order' => 'desc', 'fields' => 'ids', 'meta_query' => array(array('key' => '_subscription_renewal', 'compare' => '=', 'value' => $subscription->id, 'type' => 'numeric')))); foreach ($paid_renewal_order_ids as $paid_renewal_order_id) { $completed_payments[] = get_post_field('post_date_gmt', $paid_renewal_order_id); } } $items = $subscription->get_items(); $item = array_pop($items); if (!empty($item)) { $deprecated_subscription_object = array('order_id' => $subscription->order->id, 'product_id' => isset($item['product_id']) ? $item['product_id'] : 0, 'variation_id' => isset($item['variation_id']) ? $item['variation_id'] : 0, 'status' => $subscription->get_status(), 'period' => $subscription->billing_period, 'interval' => $subscription->billing_interval, 'length' => wcs_estimate_periods_between(0 == $subscription->get_time('trial_end') ? $subscription->get_time('start') : $subscription->get_time('trial_end'), $subscription->get_time('end') + 120, $subscription->billing_period, 'floor') / $subscription->billing_interval, 'start_date' => $subscription->get_date('start'), 'expiry_date' => $subscription->get_date('end'), 'end_date' => $subscription->has_status(wcs_get_subscription_ended_statuses()) ? $subscription->get_date('end') : 0, 'trial_expiry_date' => $subscription->get_date('trial_end'), 'failed_payments' => $subscription->failed_payment_count, 'completed_payments' => $completed_payments, 'suspension_count' => $subscription->suspension_count, 'last_payment_date' => $subscription->get_date('last_payment')); } else { $deprecated_subscription_object = array(); } return $deprecated_subscription_object; }