File manager - Edit - /home/aussies6/.trash/wp-content/plugins/woocommerce-exporter/includes/order.php
Back
<?php if( is_admin() ) { /* Start of: WordPress Administration */ if( !function_exists( 'woo_ce_get_export_type_order_count' ) ) { function woo_ce_get_export_type_order_count() { $count = 0; $post_type = 'shop_order'; $woocommerce_version = woo_get_woo_version(); // Check if this is a WooCommerce 2.2+ instance (new Post Status) if( version_compare( $woocommerce_version, '2.2' ) >= 0 ) $post_status = ( function_exists( 'wc_get_order_statuses' ) ? apply_filters( 'woo_ce_order_post_status', array_keys( wc_get_order_statuses() ) ) : 'any' ); else $post_status = apply_filters( 'woo_ce_order_post_status', woo_ce_post_statuses() ); // Check if the existing Transient exists $cached = get_transient( WOO_CE_PREFIX . '_order_count' ); if( $cached == false ) { $args = array( 'post_type' => $post_type, 'posts_per_page' => 1, 'post_status' => $post_status, 'fields' => 'ids' ); $count_query = new WP_Query( $args ); $count = $count_query->found_posts; set_transient( WOO_CE_PREFIX . '_order_count', $count, HOUR_IN_SECONDS ); } else { $count = $cached; } return $count; } } function woo_ce_order_dataset_args( $args, $export_type = '' ) { // Check if we're dealing with the Order Export Type if( $export_type <> 'order' ) return $args; // Merge in the form data for this dataset $defaults = array( 'order_dates_filter' => ( isset( $_POST['order_dates_filter'] ) ? sanitize_text_field( $_POST['order_dates_filter'] ) : false ) ); $args = wp_parse_args( $args, $defaults ); // Save dataset export specific options if( $args['order_dates_filter'] <> woo_ce_get_option( 'order_dates_filter' ) ) woo_ce_update_option( 'order_dates_filter', $args['order_dates_filter'] ); return $args; } add_filter( 'woo_ce_extend_dataset_args', 'woo_ce_order_dataset_args', 10, 2 ); /* End of: WordPress Administration */ } // Returns a list of Order export columns function woo_ce_get_order_fields( $format = 'full', $post_ID = 0 ) { $export_type = 'order'; $fields = array(); $fields[] = array( 'name' => 'purchase_id', 'label' => __( 'Order ID', 'woocommerce-exporter' ) ); $fields[] = array( 'name' => 'post_id', 'label' => __( 'Post ID', 'woocommerce-exporter' ) ); $fields[] = array( 'name' => 'purchase_total', 'label' => __( 'Order Total', 'woocommerce-exporter' ) ); $fields[] = array( 'name' => 'purchase_subtotal', 'label' => __( 'Order Subtotal', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_currency', 'label' => __( 'Order Currency', 'woocommerce-exporter' ) ); $fields[] = array( 'name' => 'order_discount', 'label' => __( 'Order Discount', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'coupon_code', 'label' => __( 'Coupon Code', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'coupon_expiry_date', 'label' => __( 'Coupon Expiry Date', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'coupon_description', 'label' => __( 'Coupon Description', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'purchase_total_tax', 'label' => __( 'Order Total Tax', 'woocommerce-exporter' ), 'disabled' => 1 ); /* $fields[] = array( 'name' => 'order_incl_tax', 'label' => __( 'Order Incl. Tax', 'woocommerce-exporter' ) ); */ $fields[] = array( 'name' => 'order_subtotal_excl_tax', 'label' => __( 'Order Subtotal Excl. Tax', 'woocommerce-exporter' ), 'disabled' => 1 ); /* $fields[] = array( 'name' => 'order_tax_rate', 'label' => __( 'Order Tax Rate', 'woocommerce-exporter' ) ); */ $fields[] = array( 'name' => 'order_sales_tax', 'label' => __( 'Sales Tax Total', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_shipping_tax', 'label' => __( 'Shipping Tax Total', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'shipping_incl_tax', 'label' => __( 'Shipping Incl. Tax', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'shipping_excl_tax', 'label' => __( 'Shipping Excl. Tax', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'refund_total', 'label' => __( 'Refund Total', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'refund_date', 'label' => __( 'Refund Date', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_tax_percentage', 'label' => __( 'Order Tax Percentage', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'payment_gateway_id', 'label' => __( 'Payment Gateway ID', 'woocommerce-exporter' ) ); $fields[] = array( 'name' => 'payment_gateway', 'label' => __( 'Payment Gateway', 'woocommerce-exporter' ) ); $fields[] = array( 'name' => 'shipping_method_id', 'label' => __( 'Shipping Method ID', 'woocommerce-exporter' ) ); $fields[] = array( 'name' => 'shipping_method', 'label' => __( 'Shipping Method', 'woocommerce-exporter' ) ); $fields[] = array( 'name' => 'shipping_cost', 'label' => __( 'Shipping Cost', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'shipping_weight_total', 'label' => __( 'Shipping Weight', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'payment_status', 'label' => __( 'Order Status', 'woocommerce-exporter' ) ); $fields[] = array( 'name' => 'post_status', 'label' => __( 'Post Status', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_key', 'label' => __( 'Order Key', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'transaction_id', 'label' => __( 'Transaction ID', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'created_via', 'label' => __( 'Created Via', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'cart_hash', 'label' => __( 'Cart Hash', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'purchase_date', 'label' => __( 'Order Date', 'woocommerce-exporter' ) ); $fields[] = array( 'name' => 'purchase_time', 'label' => __( 'Order Time', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'customer_message', 'label' => __( 'Customer Message', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'customer_notes', 'label' => __( 'Customer Notes', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_notes', 'label' => __( 'Order Notes', 'woocommerce-exporter' ), 'disabled' => 1 ); // PayPal $fields[] = array( 'name' => 'paypal_payer_paypal_address', 'label' => __( 'PayPal: Payer PayPal Address', 'woocommerce-exporter' ), 'hover' => __( 'PayPal', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'paypal_payer_first_name', 'label' => __( 'PayPal: Payer first name', 'woocommerce-exporter' ), 'hover' => __( 'PayPal', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'paypal_payer_last_name', 'label' => __( 'PayPal: Payer last name', 'woocommerce-exporter' ), 'hover' => __( 'PayPal', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'paypal_payment_type', 'label' => __( 'PayPal: Payment type', 'woocommerce-exporter' ), 'hover' => __( 'PayPal', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'paypal_payment_status', 'label' => __( 'PayPal: Payment status', 'woocommerce-exporter' ), 'hover' => __( 'PayPal', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'total_quantity', 'label' => __( 'Total Quantity', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'total_order_items', 'label' => __( 'Total Order Items', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'user_id', 'label' => __( 'User ID', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'user_name', 'label' => __( 'Username', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'user_role', 'label' => __( 'User Role', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'ip_address', 'label' => __( 'Checkout IP Address', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'browser_agent', 'label' => __( 'Checkout Browser Agent', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'has_downloads', 'label' => __( 'Has Downloads', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'has_downloaded', 'label' => __( 'Has Downloaded', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'billing_full_name', 'label' => __( 'Billing: Full Name', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'billing_first_name', 'label' => __( 'Billing: First Name', 'woocommerce-exporter' ) ); $fields[] = array( 'name' => 'billing_last_name', 'label' => __( 'Billing: Last Name', 'woocommerce-exporter' ) ); $fields[] = array( 'name' => 'billing_company', 'label' => __( 'Billing: Company', 'woocommerce-exporter' ) ); $fields[] = array( 'name' => 'billing_address', 'label' => __( 'Billing: Street Address (Full)', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'billing_address_1', 'label' => __( 'Billing: Street Address 1', 'woocommerce-exporter' ) ); $fields[] = array( 'name' => 'billing_address_2', 'label' => __( 'Billing: Street Address 2', 'woocommerce-exporter' ) ); $fields[] = array( 'name' => 'billing_city', 'label' => __( 'Billing: City', 'woocommerce-exporter' ) ); $fields[] = array( 'name' => 'billing_postcode', 'label' => __( 'Billing: ZIP Code', 'woocommerce-exporter' ) ); $fields[] = array( 'name' => 'billing_state', 'label' => __( 'Billing: State (prefix)', 'woocommerce-exporter' ) ); $fields[] = array( 'name' => 'billing_state_full', 'label' => __( 'Billing: State', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'billing_country', 'label' => __( 'Billing: Country (prefix)', 'woocommerce-exporter' ) ); $fields[] = array( 'name' => 'billing_country_full', 'label' => __( 'Billing: Country', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'billing_phone', 'label' => __( 'Billing: Phone Number', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'billing_email', 'label' => __( 'Billing: E-mail Address', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'shipping_full_name', 'label' => __( 'Shipping: Full Name', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'shipping_first_name', 'label' => __( 'Shipping: First Name', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'shipping_last_name', 'label' => __( 'Shipping: Last Name', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'shipping_company', 'label' => __( 'Shipping: Company', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'shipping_address', 'label' => __( 'Shipping: Street Address (Full)', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'shipping_address_1', 'label' => __( 'Shipping: Street Address 1', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'shipping_address_2', 'label' => __( 'Shipping: Street Address 2', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'shipping_city', 'label' => __( 'Shipping: City', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'shipping_postcode', 'label' => __( 'Shipping: ZIP Code', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'shipping_state', 'label' => __( 'Shipping: State (prefix)', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'shipping_state_full', 'label' => __( 'Shipping: State', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'shipping_country', 'label' => __( 'Shipping: Country (prefix)', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'shipping_country_full', 'label' => __( 'Shipping: Country', 'woocommerce-exporter' ), 'disabled' => 1 ); /* $fields[] = array( 'name' => '', 'label' => __( '', 'woocommerce-exporter' ) ); */ // Drop in our content filters here add_filter( 'sanitize_key', 'woo_ce_filter_sanitize_key' ); // Allow Plugin/Theme authors to add support for additional Order columns $fields = apply_filters( sprintf( WOO_CE_PREFIX . '_%s_fields', $export_type ), $fields, $export_type ); // Remove our content filters here to play nice with other Plugins remove_filter( 'sanitize_key', 'woo_ce_filter_sanitize_key' ); $fields[] = array( 'name' => 'order_items_id', 'label' => __( 'Order Items: ID', 'woocommerce-exporter' ) ); $fields[] = array( 'name' => 'order_items_product_id', 'label' => __( 'Order Items: Product ID', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_items_variation_id', 'label' => __( 'Order Items: Variation ID', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_items_sku', 'label' => __( 'Order Items: SKU', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_items_name', 'label' => __( 'Order Items: Product Name', 'woocommerce-exporter' ) ); $fields[] = array( 'name' => 'order_items_variation', 'label' => __( 'Order Items: Product Variation', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_items_image_embed', 'label' => __( 'Order Items: Featured Image (Embed)', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_items_description', 'label' => __( 'Order Items: Product Description', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_items_excerpt', 'label' => __( 'Order Items: Product Excerpt', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_items_publish_date', 'label' => __( 'Order Items: Publish Date', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_items_modified_date', 'label' => __( 'Order Items: Modified Date', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_items_tax_class', 'label' => __( 'Order Items: Tax Class', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_items_quantity', 'label' => __( 'Order Items: Quantity', 'woocommerce-exporter' ) ); $fields[] = array( 'name' => 'order_items_total', 'label' => __( 'Order Items: Total', 'woocommerce-exporter' ) ); $fields[] = array( 'name' => 'order_items_subtotal', 'label' => __( 'Order Items: Subtotal', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_items_rrp', 'label' => __( 'Order Items: RRP', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_items_stock', 'label' => __( 'Order Items: Stock', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_items_shipping_class', 'label' => __( 'Order Items: Shipping Class', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_items_tax', 'label' => __( 'Order Items: Tax', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_items_tax_percentage', 'label' => __( 'Order Items: Tax Percentage', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_items_tax_subtotal', 'label' => __( 'Order Items: Tax Subtotal', 'woocommerce-exporter' ), 'disabled' => 1 ); // Order Item: Tax Rate - ... $tax_rates = woo_ce_get_order_tax_rates(); if( !empty( $tax_rates ) ) { foreach( $tax_rates as $tax_rate ) { $fields[] = array( 'name' => sprintf( 'order_items_tax_rate_%d', $tax_rate['rate_id'] ), 'label' => sprintf( __( 'Order Items: Tax Rate - %s', 'woocommerce-exporter' ), $tax_rate['label'] ), 'disabled' => 1 ); } } unset( $tax_rates, $tax_rate ); $fields[] = array( 'name' => 'order_items_refund_subtotal', 'label' => __( 'Order Items: Refund Subtotal', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_items_refund_quantity', 'label' => __( 'Order Items: Refund Quantity', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_items_type', 'label' => __( 'Order Items: Type', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_items_type_id', 'label' => __( 'Order Items: Type ID', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_items_category', 'label' => __( 'Order Items: Category', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_items_tag', 'label' => __( 'Order Items: Tag', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_items_total_sales', 'label' => __( 'Order Items: Total Sales', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_items_weight', 'label' => __( 'Order Items: Weight', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_items_height', 'label' => __( 'Order Items: Height', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_items_width', 'label' => __( 'Order Items: Width', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_items_length', 'label' => __( 'Order Items: Length', 'woocommerce-exporter' ), 'disabled' => 1 ); $fields[] = array( 'name' => 'order_items_total_weight', 'label' => __( 'Order Items: Total Weight', 'woocommerce-exporter' ), 'disabled' => 1 ); // Drop in our content filters here add_filter( 'sanitize_key', 'woo_ce_filter_sanitize_key' ); // Allow Plugin/Theme authors to add support for additional Order Item columns $fields = apply_filters( sprintf( WOO_CE_PREFIX . '_%s_fields', 'order_items' ), $fields, $export_type ); // Remove our content filters here to play nice with other Plugins remove_filter( 'sanitize_key', 'woo_ce_filter_sanitize_key' ); switch( $format ) { case 'summary': $output = array(); $size = count( $fields ); for( $i = 0; $i < $size; $i++ ) { if( isset( $fields[$i] ) ) { if( !isset( $fields[$i]['disabled'] ) ) $output[$fields[$i]['name']] = 'on'; } } return $output; break; case 'full': default: // Load the default sorting if( empty( $sorting ) ) $sorting = woo_ce_get_option( sprintf( '%s_sorting', $export_type ), array() ); $size = count( $fields ); for( $i = 0; $i < $size; $i++ ) { if( !isset( $fields[$i]['name'] ) ) { unset( $fields[$i] ); continue; } $fields[$i]['reset'] = $i; $fields[$i]['order'] = ( isset( $sorting[$fields[$i]['name']] ) ? $sorting[$fields[$i]['name']] : $i ); } // Check if we are using PHP 5.3 and above if( version_compare( phpversion(), '5.3' ) >= 0 ) usort( $fields, woo_ce_sort_fields( 'order' ) ); return $fields; break; } } // Check if we should override field labels from the Field Editor function woo_ce_override_order_field_labels( $fields = array() ) { $export_type = 'order'; $labels = false; // Default to Quick Export labels if( empty( $labels ) ) $labels = woo_ce_get_option( sprintf( '%s_labels', $export_type ), array() ); if( !empty( $labels ) ) { foreach( $fields as $key => $field ) { if( isset( $labels[$field['name']] ) ) $fields[$key]['label'] = $labels[$field['name']]; } } return $fields; } add_filter( 'woo_ce_order_fields', 'woo_ce_override_order_field_labels', 11 ); add_filter( 'woo_ce_order_items_fields', 'woo_ce_override_order_field_labels', 11 ); // Returns the export column header label based on an export column slug function woo_ce_get_order_field( $name = null, $format = 'name' ) { $output = ''; if( $name ) { $fields = woo_ce_get_order_fields(); $size = count( $fields ); for( $i = 0; $i < $size; $i++ ) { if( $fields[$i]['name'] == $name ) { switch( $format ) { case 'name': $output = $fields[$i]['label']; break; case 'full': $output = $fields[$i]; break; } $i = $size; } } } return $output; } // Returns a list of Order IDs function woo_ce_get_orders( $export_type = 'order', $args = array() ) { global $export; $limit_volume = -1; $offset = 0; if( $args ) { $limit_volume = ( isset( $args['limit_volume'] ) ? $args['limit_volume'] : false ); $offset = $args['offset']; $orderby = ( isset( $args['order_orderby'] ) ? $args['order_orderby'] : 'ID' ); $order = ( isset( $args['order_order'] ) ? $args['order_order'] : 'ASC' ); $order_dates_filter = ( isset( $args['order_dates_filter'] ) ? $args['order_dates_filter'] : false ); switch( $order_dates_filter ) { case 'today': $order_dates_from = woo_ce_get_order_date_filter( 'today', 'from' ); $order_dates_to = woo_ce_get_order_date_filter( 'today', 'to' ); break; case 'yesterday': $order_dates_from = woo_ce_get_order_date_filter( 'yesterday', 'from' ); $order_dates_to = woo_ce_get_order_date_filter( 'yesterday', 'to' ); break; case 'current_week': $order_dates_from = woo_ce_get_order_date_filter( 'current_week', 'from' ); $order_dates_to = woo_ce_get_order_date_filter( 'current_week', 'to' ); break; case 'last_week': $order_dates_from = woo_ce_get_order_date_filter( 'last_week', 'from' ); $order_dates_to = woo_ce_get_order_date_filter( 'last_week', 'to' ); break; default: $order_dates_from = false; $order_dates_to = false; break; } if( !empty( $order_dates_from ) && !empty( $order_dates_to ) ) { // From $order_dates_from = explode( '-', $order_dates_from ); // Check that a valid date was provided if( isset( $order_dates_from[0] ) && isset( $order_dates_from[1] ) && isset( $order_dates_from[2] ) ) { $order_dates_from = array( 'year' => absint( $order_dates_from[2] ), 'month' => absint( $order_dates_from[1] ), 'day' => absint( $order_dates_from[0] ), 'hour' => ( isset( $order_dates_from[3] ) ? $order_dates_from[3] : 0 ), 'minute' => ( isset( $order_dates_from[4] ) ? $order_dates_from[4] : 0 ), 'second' => ( isset( $order_dates_from[5] ) ? $order_dates_from[5] : 0 ) ); } else { $order_dates_from = false; } // To $order_dates_to = explode( '-', $order_dates_to ); // Check that a valid date was provided if( isset( $order_dates_to[0] ) && isset( $order_dates_to[1] ) && isset( $order_dates_to[2] ) ) { $order_dates_to = array( 'year' => absint( $order_dates_to[2] ), 'month' => absint( $order_dates_to[1] ), 'day' => absint( $order_dates_to[0] ), 'hour' => ( isset( $order_dates_to[3] ) ? $order_dates_to[3] : 23 ), 'minute' => ( isset( $order_dates_to[4] ) ? $order_dates_to[4] : 59 ), 'second' => ( isset( $order_dates_to[5] ) ? $order_dates_to[5] : 59 ) ); } else { $order_dates_to = false; } } } $post_type = 'shop_order'; $args = array( 'post_type' => $post_type, 'orderby' => $orderby, 'order' => $order, 'offset' => $offset, 'posts_per_page' => $limit_volume, 'fields' => 'ids', 'suppress_filters' => false ); $woocommerce_version = woo_get_woo_version(); // Check if this is a pre-WooCommerce 2.2 instance if( version_compare( $woocommerce_version, '2.2' ) >= 0 ) $args['post_status'] = ( function_exists( 'wc_get_order_statuses' ) ? apply_filters( 'woo_ce_order_post_status', array_keys( wc_get_order_statuses() ) ) : 'any' ); else $args['post_status'] = apply_filters( 'woo_ce_order_post_status', 'publish' ); // Filter Order dates if( !empty( $order_dates_from ) && !empty( $order_dates_to ) ) { $args['date_query'] = array( array( 'column' => apply_filters( 'woo_ce_get_orders_filter_order_dates_column', 'post_date' ), 'before' => $order_dates_to, 'after' => $order_dates_from, 'inclusive' => true ) ); } $orders = array(); $order_ids = new WP_Query( $args ); if( $order_ids->posts ) { foreach( $order_ids->posts as $order_id ) { // Check that a WP_Post didn't sneak through... if( is_object( $order_id ) ) $order_id = ( isset( $order_id->ID ) ? absint( $order_id->ID ) : $order_id ); $order_id = apply_filters( 'woo_ce_get_order_id', $order_id ); if( $order_id ) $orders[] = $order_id; } // Only populate the $export Global if it is an export if( isset( $export ) ) { $export->total_rows = count( $orders ); } unset( $order_ids, $order_id ); } return $orders; } // Returns WooCommerce Order data associated to a specific Order function woo_ce_get_order_wc_data( $order_id = 0 ) { if( !empty( $order_id ) ) { if( version_compare( woo_get_woo_version(), '2.7', '>=' ) ) { $order = ( class_exists( 'WC_Order' ) ? new WC_Order( $order_id ) : get_post( $order_id ) ); $order->status = ( method_exists( $order, 'get_status' ) ? $order->get_status() : false ); $order->order_date = ( method_exists( $order, 'get_date_created' ) ? $order->get_date_created() : false ); } else { $order = ( class_exists( 'WC_Order' ) ? new WC_Order( $order_id ) : get_post( $order_id ) ); } return $order; } } function woo_ce_get_order_data( $order_id = 0, $export_type = 'order', $args = array(), $fields = array() ) { global $export; // Check if this is a pre-WooCommerce 2.2 instance $woocommerce_version = woo_get_woo_version(); $defaults = array( 'order_items' => 'combined', 'order_items_types' => array_keys( woo_ce_get_order_items_types() ) ); $args = wp_parse_args( $args, $defaults ); // Get WooCommerce Order details $order = woo_ce_get_order_wc_data( $order_id ); $date_format = woo_ce_get_option( 'date_format', 'd/m/Y' ); $order->payment_status = $order->status; $order->purchase_total = get_post_meta( $order_id, '_order_total', true ); $order->order_currency = get_post_meta( $order_id, '_order_currency', true ); // Order billing details if( !apply_filters( 'woo_ce_get_order_data_legacy_billing_address', version_compare( $woocommerce_version, '3.0', '<' ) ) ) { // WC: 3.0+ Order billing address $billing_address = ( method_exists( $order, 'get_address' ) ? $order->get_address( 'billing' ) : false ); if( !empty( $billing_address ) ) { $order->billing_first_name = $billing_address['first_name']; $order->billing_last_name = $billing_address['last_name']; $order->billing_company = $billing_address['company']; $order->billing_address_1 = $billing_address['address_1']; $order->billing_address_2 = $billing_address['address_2']; $order->billing_city = $billing_address['city']; $order->billing_postcode = $billing_address['postcode']; $order->billing_state = $billing_address['state']; $order->billing_country = $billing_address['country']; } unset( $billing_address ); } else { // WC: Pre-3.0 Order billing address $order->billing_first_name = get_post_meta( $order_id, '_billing_first_name', true ); $order->billing_last_name = get_post_meta( $order_id, '_billing_last_name', true ); $order->billing_company = get_post_meta( $order_id, '_billing_company', true ); $order->billing_address_1 = get_post_meta( $order_id, '_billing_address_1', true ); $order->billing_address_2 = get_post_meta( $order_id, '_billing_address_2', true ); $order->billing_city = get_post_meta( $order_id, '_billing_city', true ); $order->billing_postcode = get_post_meta( $order_id, '_billing_postcode', true ); $order->billing_state = get_post_meta( $order_id, '_billing_state', true ); $order->billing_country = get_post_meta( $order_id, '_billing_country', true ); } if( $export_type == 'order' ) { $order->payment_gateway_id = get_post_meta( $order_id, '_payment_method', true ); $order->payment_gateway = woo_ce_format_order_payment_gateway( $order->payment_gateway_id ); // WooCommerce 2.1+ stores the shipping method in Order Items, includes fallback support if( version_compare( woo_get_woo_version(), '2.1', '>=' ) ) { $order->shipping_method_id = woo_ce_get_order_assoc_shipping_method_id( $order_id ); $order->shipping_method = $order->get_shipping_method(); } else { $order->shipping_method_id = woo_ce_get_order_assoc_shipping_method_id( $order_id ); $order->shipping_method = ''; } $order->purchase_date = ( function_exists( 'wc_format_datetime' ) ? wc_format_datetime( $order->order_date, $date_format ) : woo_ce_format_date( $order->order_date ) ); if( $order->order_items = woo_ce_get_order_items( $order_id, $args['order_items_types'] ) ) { $order->total_order_items = count( $order->order_items ); if( $args['order_items'] == 'combined' ) { $order->order_items_id = ''; $order->order_items_name = ''; $order->order_items_quantity = ''; $order->order_items_total = ''; if( !empty( $order->order_items ) ) { foreach( $order->order_items as $order_item ) { $order->order_items_id .= $order_item->id . $export->category_separator; $order->order_items_name .= $order_item->name . $export->category_separator; if( empty( $order_item->quantity ) && '0' != $order_item->quantity ) $order_item->quantity = ''; $order->order_items_quantity .= $order_item->quantity . $export->category_separator; $order->order_items_total .= $order_item->total . $export->category_separator; } $order->order_items_id = substr( $order->order_items_id, 0, -1 ); $order->order_items_name = substr( $order->order_items_name, 0, -1 ); $order->order_items_quantity = substr( $order->order_items_quantity, 0, -1 ); $order->order_items_total = substr( $order->order_items_total, 0, -1 ); } } } } return $order; } function woo_ce_export_dataset_override_order( $output = null, $export_type = null ) { global $export; if( $orders = woo_ce_get_orders( 'order', $export->args ) ) { $separator = $export->delimiter; $size = $export->total_columns; $export->total_rows = count( $orders ); // Generate the export headers if( in_array( $export->export_format, array( 'csv' ) ) ) { for( $i = 0; $i < $size; $i++ ) { if( $i == ( $size - 1 ) ) $output .= woo_ce_escape_csv_value( $export->columns[$i], $export->delimiter, $export->escape_formatting ) . "\n"; else $output .= woo_ce_escape_csv_value( $export->columns[$i], $export->delimiter, $export->escape_formatting ) . $separator; } } if( !empty( $export->fields ) ) { foreach( $orders as $order ) { $order = woo_ce_get_order_data( $order, 'order', $export->args, array_keys( $export->fields ) ); foreach( $export->fields as $key => $field ) { if( isset( $order->$key ) ) { if( is_array( $field ) ) { foreach( $field as $array_key => $array_value ) { if( !is_array( $array_value ) ) { if( in_array( $export->export_format, array( 'csv' ) ) ) $output .= woo_ce_escape_csv_value( $array_value, $export->delimiter, $export->escape_formatting ); } } } else { if( in_array( $export->export_format, array( 'csv' ) ) ) $output .= woo_ce_escape_csv_value( $order->$key, $export->delimiter, $export->escape_formatting ); } } if( in_array( $export->export_format, array( 'csv' ) ) ) $output .= $separator; } if( in_array( $export->export_format, array( 'csv' ) ) ) $output = substr( $output, 0, -1 ) . "\n"; } } unset( $orders, $order ); } return $output; } // Returns a list of WooCommerce Tax Rates based on existing Orders function woo_ce_get_order_tax_rates( $order_id = 0 ) { if( apply_filters( 'woo_ce_enable_order_tax_rates', true ) ) { global $wpdb; $order_item_type = 'tax'; $tax_rates_sql = $wpdb->prepare( "SELECT order_items.order_item_id as item_id FROM " . $wpdb->prefix . "woocommerce_order_items as order_items WHERE order_items.order_item_type = %s", $order_item_type ); if( !empty( $order_id ) ) { $tax_rates_sql .= $wpdb->prepare( " AND order_items.order_id = %d", $order_id ); } $tax_rates_sql .= " GROUP BY order_items.order_item_name"; $tax_rates = $wpdb->get_results( $tax_rates_sql, 'ARRAY_A' ); if( !empty( $tax_rates ) ) { $meta_type = 'order_item'; foreach( $tax_rates as $key => $tax_rate ) { $tax_rates[$key]['rate_id'] = get_metadata( $meta_type, $tax_rate['item_id'], 'rate_id', true ); $tax_rates[$key]['label'] = get_metadata( $meta_type, $tax_rate['item_id'], 'label', true ); } return $tax_rates; } } } function woo_ce_get_gravity_forms_products() { global $wpdb; $meta_key = '_gravity_form_data'; $post_ids_sql = $wpdb->prepare( "SELECT `post_id`, `meta_value` FROM `$wpdb->postmeta` WHERE `meta_key` = %s GROUP BY `meta_value`", $meta_key ); return $wpdb->get_results( $post_ids_sql ); } function woo_ce_get_gravity_form_fields() { if( $gf_products = woo_ce_get_gravity_forms_products() ) { $fields = array(); foreach( $gf_products as $gf_product ) { if( $gf_product_data = maybe_unserialize( get_post_meta( $gf_product->post_id, '_gravity_form_data', true ) ) ) { // Check the class and method for Gravity Forms exists if( class_exists( 'RGFormsModel' ) && method_exists( 'RGFormsModel', 'get_form_meta' ) ) { // Check the form exists $gf_form_meta = RGFormsModel::get_form_meta( $gf_product_data['id'] ); if( !empty( $gf_form_meta ) ) { // Check that the form has fields assigned to it if( !empty( $gf_form_meta['fields'] ) ) { foreach( $gf_form_meta['fields'] as $gf_form_field ) { // Check for duplicate Gravity Form fields $gf_form_field['formTitle'] = $gf_form_meta['title']; // Do not include page and section breaks, hidden as exportable fields if( !in_array( $gf_form_field['type'], array( 'page', 'section', 'hidden' ) ) ) $fields[] = $gf_form_field; } } } unset( $gf_form_meta ); } } } return $fields; } } // Return the PHP date format for the requested Order Date filter function woo_ce_get_order_date_filter( $filter = '', $format = '', $date_format = 'd-m-Y' ) { $output = false; if( !empty( $filter ) && !empty( $format ) ) { switch( $filter ) { // Today case 'today': if( $format == 'from' ) $output = date( $date_format, strtotime( 'today' ) ); else $output = date( $date_format, strtotime( 'tomorrow' ) ); break; // Yesterday case 'yesterday': if( $format == 'from' ) $output = date( $date_format, strtotime( 'yesterday' ) ); else $output = date( $date_format, strtotime( 'yesterday' ) ); break; // This week case 'current_week': if( $format == 'from' ) $output = date( $date_format, strtotime( 'last Monday' ) ); else $output = date( $date_format, strtotime( 'next Monday' ) ); break; // Last week case 'last_week': if( $format == 'from' ) $output = date( $date_format, strtotime( '-2 weeks Monday' ) ); else $output = date( $date_format, strtotime( '-1 weeks Monday' ) ); break; /* case '': if( $format == 'from' ) $output = ; else $output = ; break; */ default: woo_ce_error_log( sprintf( 'Warning: %s', sprintf( __( 'Unknown Order Date filter %s provided, defaulted to none', 'woocommerce-exporter' ), $filter ) ) ); break; } } return $output; } // Returns date of first Order received, any status function woo_ce_get_order_first_date( $date_format = 'd/m/Y' ) { $output = date( $date_format, mktime( 0, 0, 0, date( 'n' ), 1 ) ); $post_type = 'shop_order'; $args = array( 'post_type' => $post_type, 'orderby' => 'post_date', 'order' => 'ASC', 'numberposts' => 1, 'post_status' => 'any' ); $orders = get_posts( $args ); if( !empty( $orders ) ) { $output = date( $date_format, strtotime( $orders[0]->post_date ) ); unset( $orders ); } return $output; } // Returns a list of WooCommerce Order statuses function woo_ce_get_order_statuses() { $terms = false; // Check if the existing Transient exists $cached = get_transient( WOO_CE_PREFIX . '_order_statuses' ); if( $cached == false ) { // Check if this is a WooCommerce 2.2+ instance (new Post Status) $woocommerce_version = woo_get_woo_version(); if( version_compare( $woocommerce_version, '2.2' ) >= 0 ) { // Convert Order Status array into our magic sauce $order_statuses = ( function_exists( 'wc_get_order_statuses' ) ? wc_get_order_statuses() : false ); if( !empty( $order_statuses ) ) { $terms = array(); $post_type = 'shop_order'; $posts_count = wp_count_posts( $post_type ); foreach( $order_statuses as $key => $order_status ) { $terms[] = (object)array( 'name' => $order_status, 'slug' => $key, 'count' => ( isset( $posts_count->$key ) ? $posts_count->$key : 0 ) ); } } } else { $args = array( 'hide_empty' => false ); $terms = get_terms( 'shop_order_status', $args ); if( empty( $terms ) || ( is_wp_error( $terms ) == true ) ) $terms = array(); } set_transient( WOO_CE_PREFIX . '_order_statuses', $terms, HOUR_IN_SECONDS ); } else { $terms = $cached; } return $terms; } // Returns the Shipping Method ID associated to a specific Order function woo_ce_get_order_assoc_shipping_method_id( $order_id = 0 ) { if( empty( $order_id ) ) return false; if( class_exists( 'WC_Order' ) ) { $output = ''; $order = new WC_Order( $order_id ); if( method_exists( 'WC_Order', 'get_shipping_methods' ) ) { if( $shipping_methods = $order->get_shipping_methods() ) { foreach( $shipping_methods as $shipping_item_id => $shipping_item ) { if( isset( $shipping_item['method_id'] ) ) { $output = $shipping_item['method_id']; } if( empty( $output ) && isset( $shipping_item['item_meta'] ) ) { $output = ( isset( $shipping_item['item_meta']['method_id'] ) ? $shipping_item['item_meta']['method_id'] : false ); if( is_array( $output ) ) $output = ( isset( $output[0] ) ? $output[0] : false ); break; } // Check if a value has been set if( !empty( $output ) ) break; } } unset( $shipping_methods ); } else { $output = get_post_meta( $order_id, '_shipping_method', true ); if( is_array( $output ) ) $output = ( isset( $output[0] ) ? $output[0] : false ); } unset( $order ); return apply_filters( 'woo_ce_get_order_assoc_shipping_method_id', $output ); } } // Returns a list of Order Items for a specified Order function woo_ce_get_order_items( $order_id = 0, $order_items_types = array() ) { global $export, $wpdb; $upload_dir = wp_upload_dir(); if( !empty( $order_id ) ) { $order_items_sql = $wpdb->prepare( "SELECT `order_item_id` as id, `order_item_name` as name, `order_item_type` as type FROM `" . $wpdb->prefix . "woocommerce_order_items` WHERE `order_id` = %d", $order_id ); if( $order_items = $wpdb->get_results( $order_items_sql ) ) { $wpdb->flush(); // Default to Line Item for empty Order Item types if( empty( $order_items_types ) ) $order_items_types = array( 'line_item' ); foreach( $order_items as $key => $order_item ) { // Fetch all meta keys linked to an Order Item $order_item_meta_sql = $wpdb->prepare( "SELECT `meta_key`, `meta_value` FROM `" . $wpdb->prefix . "woocommerce_order_itemmeta` WHERE `order_item_id` = %d ORDER BY meta_key ASC", $order_item->id ); if( $order_item_meta = $wpdb->get_results( $order_item_meta_sql ) ) { $order_items[$key]->quantity = ''; $order_items[$key]->total = ''; $size = count( $order_item_meta ); for( $i = 0; $i < $size; $i++ ) { // Go through each Order Item meta found switch( $order_item_meta[$i]->meta_key ) { case '_qty': $order_items[$key]->quantity = $order_item_meta[$i]->meta_value; break; case '_product_id': break; case '_variation_id': break; case '_line_total': $order_items[$key]->total = woo_ce_format_price( $order_item_meta[$i]->meta_value ); break; } } } unset( $order_item_meta ); // Default the quantity to 1 for the Fee Order Item Type if( $order_items[$key]->type == 'fee' ) $order_items[$key]->quantity = 1; } return $order_items; } } } // Returns a list of WooCommerce Order Item Types function woo_ce_get_order_items_types() { $order_item_types = array( 'line_item' => __( 'Line Item', 'woocommerce-exporter' ), 'coupon' => __( 'Coupon', 'woocommerce-exporter' ), 'fee' => __( 'Fee', 'woocommerce-exporter' ), 'tax' => __( 'Tax', 'woocommerce-exporter' ), 'shipping' => __( 'Shipping', 'woocommerce-exporter' ) ); // Allow Plugin/Theme authors to add support for additional Order Item types $order_item_types = apply_filters( 'woo_ce_order_item_types', $order_item_types ); return $order_item_types; } function woo_ce_get_order_payment_gateways() { global $woocommerce; $output = false; // Test that payment gateways exist with WooCommerce 1.6 compatibility if( version_compare( $woocommerce->version, '2.0.0', '<' ) ) { if( $woocommerce->payment_gateways ) $output = $woocommerce->payment_gateways->payment_gateways; } else { if( $woocommerce->payment_gateways() ) $output = $woocommerce->payment_gateways()->payment_gateways(); } // Add Other to list of payment gateways $output['other'] = (object)array( 'id' => 'other', 'title' => __( 'Other', 'woocommerce-exporter' ), 'method_title' => __( 'Other', 'woocommerce-exporter' ) ); return $output; } function woo_ce_format_order_payment_gateway( $payment_id = '' ) { $output = $payment_id; $payment_gateways = woo_ce_get_order_payment_gateways(); if( !empty( $payment_gateways ) ) { foreach( $payment_gateways as $payment_gateway ) { if( $payment_gateway->id == $payment_id ) { if( method_exists( $payment_gateway, 'get_title' ) ) $output = $payment_gateway->get_title(); else $output = $payment_id; break; } } unset( $payment_gateways, $payment_gateway ); } if( empty( $payment_id ) ) $output = __( 'N/A', 'woocommerce-exporter' ); return $output; }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0 |
proxy
|
phpinfo
|
Settings