Exemplo n.º 1
0
    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;

}