function woo_ce_subscriptions_filter_by_subscription_status() { $woo_cd_url = 'http://www.visser.com.au/woocommerce/plugins/exporter-deluxe/'; $woo_cd_link = sprintf('<a href="%s" target="_blank">' . __('Store Exporter Deluxe', 'woo_ce') . '</a>', $woo_cd_url); $subscription_statuses = woo_ce_get_subscription_statuses(); ob_start(); ?> <p><label><input type="checkbox" id="subscriptions-filters-status" /> <?php _e('Filter Subscriptions by Subscription Status', 'woo_ce'); ?> <span class="description"> - <?php printf(__('available in %s', 'woo_ce'), $woo_cd_link); ?> </span></label></p> <div id="export-subscriptions-filters-status" class="separator"> <ul> <li> <?php if (!empty($subscription_statuses)) { ?> <select data-placeholder="<?php _e('Choose a Subscription Status...', 'woo_ce'); ?> " name="subscription_filter_status[]" multiple class="chzn-select" style="width:95%;"> <?php foreach ($subscription_statuses as $key => $subscription_status) { ?> <option value="<?php echo $key; ?> "><?php echo $subscription_status; ?> </option> <?php } ?> </select> <?php } else { ?> <?php _e('No Subscription Status\'s have been found.', 'woo_ce'); } ?> </li> </ul> <p class="description"><?php _e('Select the Subscription Status options you want to filter exported Subscriptions by. Default is to include all Subscription Status options.', 'woo_ce'); ?> </p> </div> <!-- #export-subscriptions-filters-status --> <?php ob_end_flush(); }
function woo_ce_get_subscriptions( $args = array() ) { global $export; $limit_volume = -1; $offset = 0; if( $args ) { $limit_volume = ( isset( $args['limit_volume'] ) ? $args['limit_volume'] : -1 ); $offset = $args['offset']; $subscription_status = ( isset( $args['subscription_status'] ) ? $args['subscription_status'] : array() ); $subscription_product = ( isset( $args['subscription_product'] ) ? $args['subscription_product'] : array() ); } $troubleshooting_url = 'http://www.visser.com.au/documentation/store-exporter-deluxe/usage/'; // @mod - Will migrate to a WP_Query solution once feature is stable /* $limit_volume = -1; $offset = 0; if( $args ) { $limit_volume = ( isset( $args['limit_volume'] ) ? $args['limit_volume'] : false ); $offset = $args['offset']; $orderby = ( isset( $args['subscription_orderby'] ) ? $args['subscription_orderby'] : 'ID' ); $order = ( isset( $args['subscription_order'] ) ? $args['subscription_order'] : 'ASC' ); } $post_type = 'shop_order'; $args = array( 'post_type' => $post_type, 'orderby' => $orderby, 'order' => $order, 'offset' => $offset, 'posts_per_page' => $limit_volume, 'post_status' => apply_filters( 'woo_ce_subscription_post_status', 'publish' ), 'fields' => 'ids' ); $subscription_ids = new WP_Query( $args ); if( $subscription_ids->posts ) { foreach( $subscription_ids->posts as $subscription_id ) $subscriptions[] = $subscription_id; $export->total_rows = count( $subscriptions ); } */ $output = array(); // Check that WooCommerce Subscriptions exists if( !class_exists( 'WC_Subscriptions' ) || !class_exists( 'WC_Subscriptions_Manager' ) ) { $message = __( 'The WooCommerce Subscriptions class <code>WC_Subscriptions</code> or <code>WC_Subscriptions_Manager</code> could not be found, this is required to export Subscriptions.', 'woo_ce' ) . ' (<a href="' . $troubleshooting_url . '" target="_blank">' . __( 'Need help?', 'woo_ce' ) . '</a>)'; woo_cd_admin_notice( $message, 'error' ); return; } else { // Check that the get_all_users_subscriptions() function exists if( !method_exists( 'WC_Subscriptions_Manager', 'get_all_users_subscriptions' ) ) { $message = __( 'The WooCommerce Subscriptions method <code>WC_Subscriptions_Manager->get_all_users_subscriptions()</code> could not be found, this is required to export Subscriptions.', 'woo_ce' ) . ' (<a href="' . $troubleshooting_url . '" target="_blank">' . __( 'Need help?', 'woo_ce' ) . '</a>)'; woo_cd_admin_notice( $message, 'error' ); return; } } if( class_exists( 'WC_Subscriptions' ) ) { if( method_exists( 'WC_Subscriptions', 'get_subscriptions' ) ) { $args = array( 'subscriptions_per_page' => $limit_volume, 'offset' => $offset ); // Allow other developers to bake in their own filters $args = apply_filters( 'woo_ce_get_subscriptions_args', $args ); if( $subscriptions = WC_Subscriptions::get_subscriptions( $args ) ) { $subscription_statuses = woo_ce_get_subscription_statuses(); foreach( $subscriptions as $subscription ) { $subscription = woo_ce_get_subscription_data( $subscription ); $key = $subscription['key']; $output[$key] = apply_filters( 'woo_ce_subscription', (object)$subscription ); // Filter by Subscription Status if( !empty( $subscription_status ) ) { if( !in_array( strtolower( $subscription['status'] ), $subscription_status ) ) { unset( $output[$key] ); continue; } } // Filter by Subscription Product if( !empty( $subscription_product ) ) { if( !in_array( $subscription['product_id'], $subscription_product ) ) { unset( $output[$key] ); continue; } } } } } } return $output; }