Beispiel #1
0
function woo_ce_generate_csv_filename($export_type = '')
{
    // Get the filename from WordPress options
    $filename = woo_ce_get_option('export_filename', 'woo-export_%dataset%-%date%.csv');
    // Strip other file extensions if present
    $filename = str_replace(array('xml', 'xls'), 'csv', $filename);
    if (strpos($filename, '.xml') !== false || strpos($filename, '.xls') !== false) {
        $filename = str_replace(array('.xml', '.xls'), '.csv', $filename);
    }
    // Add file extension if it has been removed
    if (strpos($filename, '.csv') === false) {
        $filename .= '.csv';
    }
    // Populate the available tags
    $date = date('Y_m_d');
    $time = date('H_i_s');
    $store_name = sanitize_title(get_bloginfo('name'));
    // Switch out the tags for filled values
    $filename = str_replace('%dataset%', $export_type, $filename);
    $filename = str_replace('%date%', $date, $filename);
    $filename = str_replace('%time%', $time, $filename);
    $filename = str_replace('%store_name%', $store_name, $filename);
    // Return the filename
    return $filename;
}
Beispiel #2
0
function woo_ce_override_product_vendor_field_labels($fields = array())
{
    $labels = woo_ce_get_option('product_vendor_labels', array());
    if (!empty($labels)) {
        foreach ($fields as $key => $field) {
            if (isset($labels[$field['name']])) {
                $fields[$key]['label'] = $labels[$field['name']];
            }
        }
    }
    return $fields;
}
function woo_ce_get_coupon_fields($format = 'full')
{
    $fields = array();
    $fields[] = array('name' => 'coupon_code', 'label' => __('Coupon Code', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'coupon_description', 'label' => __('Coupon Description', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'discount_type', 'label' => __('Discount Type', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'coupon_amount', 'label' => __('Coupon Amount', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'individual_use', 'label' => __('Individual Use', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'apply_before_tax', 'label' => __('Apply before tax', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'exclude_sale_items', 'label' => __('Exclude sale items', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'minimum_amount', 'label' => __('Minimum Amount', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'product_ids', 'label' => __('Products', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'exclude_product_ids', 'label' => __('Exclude Products', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'product_categories', 'label' => __('Product Categories', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'exclude_product_categories', 'label' => __('Exclude Product Categories', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'customer_email', 'label' => __('Customer e-mails', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'usage_limit', 'label' => __('Usage Limit', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'expiry_date', 'label' => __('Expiry Date', 'woo_ce'), 'default' => 1);
    /*
    	$fields[] = array(
    		'name' => '',
    		'label' => __( '', 'woo_ce' ),
    		'default' => 1
    	);
    */
    // Allow Plugin/Theme authors to add support for additional Coupon columns
    $fields = apply_filters('woo_ce_coupon_fields', $fields);
    if ($remember = woo_ce_get_option('coupons_fields')) {
        $remember = maybe_unserialize($remember);
        $size = count($fields);
        for ($i = 0; $i < $size; $i++) {
            if (!array_key_exists($fields[$i]['name'], $remember)) {
                $fields[$i]['default'] = 0;
            }
        }
    }
    switch ($format) {
        case 'summary':
            $output = array();
            $size = count($fields);
            for ($i = 0; $i < $size; $i++) {
                $output[$fields[$i]['name']] = 'on';
            }
            return $output;
            break;
        case 'full':
        default:
            return $fields;
            break;
    }
}
function woo_ce_get_category_fields($format = 'full')
{
    $fields = array();
    $fields[] = array('name' => 'term_id', 'label' => __('Term ID', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'name', 'label' => __('Category Name', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'slug', 'label' => __('Category Slug', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'parent_id', 'label' => __('Parent Term ID', 'woo_ce'), 'default' => 1);
    /*
    	$fields[] = array(
    		'name' => '',
    		'label' => __( '', 'woo_ce' ),
    		'default' => 1
    	);
    */
    // Allow Plugin/Theme authors to add support for additional Category columns
    $fields = apply_filters('woo_ce_category_fields', $fields);
    if ($remember = woo_ce_get_option('categories_fields', array())) {
        $remember = maybe_unserialize($remember);
        $size = count($fields);
        for ($i = 0; $i < $size; $i++) {
            $fields[$i]['disabled'] = 0;
            if (!array_key_exists($fields[$i]['name'], $remember)) {
                $fields[$i]['default'] = 0;
            }
        }
    }
    switch ($format) {
        case 'summary':
            $output = array();
            $size = count($fields);
            for ($i = 0; $i < $size; $i++) {
                $output[$fields[$i]['name']] = 'on';
            }
            return $output;
            break;
        case 'full':
        default:
            return $fields;
            break;
    }
}
Beispiel #5
0
function woo_ce_user_extend( $user ) {

	// WooCommerce Hear About Us - https://wordpress.org/plugins/woocommerce-hear-about-us/
	if( class_exists( 'WooCommerce_HearAboutUs' ) ) {
		$source = get_user_meta( $user->ID, '_wchau_source', true );
		if( $source == '' )
			$source = __( 'N/A', 'woo_ce' );
		$user->hear_about_us = $source;
		unset( $source );
	}

	// WooCommerce User Profile fields
	if( class_exists( 'WC_Admin_Profile' ) ) {
		$admin_profile = new WC_Admin_Profile();
		if( $show_fields = $admin_profile->get_customer_meta_fields() ) {
			foreach( $show_fields as $fieldset ) {
				foreach( $fieldset['fields'] as $key => $field )
					$user->{$key} = esc_attr( get_user_meta( $user->ID, $key, true ) );
			}
		}
		unset( $show_fields, $fieldset, $field );
	}

	// Custom User fields
	$custom_users = woo_ce_get_option( 'custom_users', '' );
	if( !empty( $custom_users ) ) {
		foreach( $custom_users as $custom_user ) {
			// Check that the custom User name is filled and it hasn't previously been set
			if( !empty( $custom_user ) && !isset( $user->{$custom_user} ) ) {
				$user->{$custom_user} = woo_ce_format_custom_meta( get_user_meta( $user->ID, $custom_user, true ) );
			}
		}
	}
	unset( $custom_users, $custom_user );

	return $user;

}
Beispiel #6
0
    function woo_ce_memory_prompt()
    {
        if (!woo_ce_get_option('dismiss_memory_prompt', 0)) {
            $memory_limit = (int) ini_get('memory_limit');
            $minimum_memory_limit = 64;
            if ($memory_limit < $minimum_memory_limit) {
                ob_start();
                $memory_url = add_query_arg('action', 'dismiss_memory_prompt');
                $message = sprintf(__('We recommend setting memory to at least %dMB, your site has %dMB currently allocated. See: <a href="%s" target="_blank">Increasing memory allocated to PHP</a>', 'woo_ce'), $minimum_memory_limit, $memory_limit, 'http://codex.wordpress.org/Editing_wp-config.php#Increasing_memory_allocated_to_PHP');
                ?>
<div class="error settings-error">
	<p>
		<strong><?php 
                echo $message;
                ?>
</strong>
		<span style="float:right;"><a href="<?php 
                echo $memory_url;
                ?>
"><?php 
                _e('Dismiss', 'woo_ce');
                ?>
</a></span>
	</p>
</div>
<?php 
                ob_end_flush();
            }
        }
    }
Beispiel #7
0
function woo_ce_trigger_new_order_export( $order_id = 0 ) {

	global $export;

	if( !empty( $order_id ) ) {
		$export_format = woo_ce_get_option( 'trigger_new_order_format', 'csv' );
		$export_fields = woo_ce_get_option( 'trigger_new_order_fields', 'all' );
		$gui = woo_ce_get_option( 'trigger_new_order_method', 'archive' );
		set_transient( WOO_CD_PREFIX . '_single_export_format', sanitize_text_field( $export_format ), MINUTE_IN_SECONDS );
		set_transient( WOO_CD_PREFIX . '_single_export_order_ids', absint( $order_id ), MINUTE_IN_SECONDS );
		set_transient( WOO_CD_PREFIX . '_single_export_fields', sanitize_text_field( $export_fields ), MINUTE_IN_SECONDS );
		$export_type = 'order';
		if( woo_ce_cron_export( $gui, $export_type ) ) {
			error_log( sprintf( '[store-exporter-deluxe] %s: Success: %s', $export->filename, sprintf( __( 'New Order #%d export saved to WordPress Media', 'woo_ce' ), $order_id ) ) );
		}
		delete_transient( WOO_CD_PREFIX . '_single_export_format' );
		delete_transient( WOO_CD_PREFIX . '_single_export_order_ids' );
		delete_transient( WOO_CD_PREFIX . '_single_export_fields' );
		unset( $gui, $export_type );
	}

}
Beispiel #8
0
 function woo_ce_memory_prompt()
 {
     if (!woo_ce_get_option('dismiss_memory_prompt', 0)) {
         $memory_limit = (int) ini_get('memory_limit');
         $minimum_memory_limit = 64;
         if ($memory_limit < $minimum_memory_limit) {
             $memory_url = add_query_arg('action', 'dismiss_memory_prompt');
             $troubleshooting_url = 'http://www.visser.com.au/documentation/store-exporter-deluxe/usage/';
             $message = sprintf(__('We recommend setting memory to at least %dMB, your site has only %dMB allocated to it. See: <a href="%s" target="_blank">Increasing memory allocated to PHP</a>', 'woo_ce'), $minimum_memory_limit, $memory_limit, $troubleshooting_url) . '<span style="float:right;"><a href="' . $memory_url . '">' . __('Dismiss', 'woo_ce') . '</a></span>';
             woo_ce_admin_notice($message, 'error');
         }
     }
 }
Beispiel #9
0
function woo_ce_extend_product_item($product, $product_id)
{
    // Custom Product meta
    $custom_products = woo_ce_get_option('custom_products', '');
    if (!empty($custom_products)) {
        foreach ($custom_products as $custom_product) {
            // Check that the custom Product name is filled and it hasn't previously been set
            if (!empty($custom_product) && !isset($product->{$custom_product})) {
                $product->{$custom_product} = get_post_meta($product_id, $custom_product, true);
            }
        }
    }
    return $product;
}
Beispiel #10
0
function woo_ce_extend_user_fields($fields = array())
{
    // WooCommerce User fields
    if (class_exists('WC_Admin_Profile')) {
        $admin_profile = new WC_Admin_Profile();
        if (method_exists('WC_Admin_Profile', 'get_customer_meta_fields')) {
            $show_fields = $admin_profile->get_customer_meta_fields();
            foreach ($show_fields as $fieldset) {
                foreach ($fieldset['fields'] as $key => $field) {
                    $fields[] = array('name' => $key, 'label' => sprintf(apply_filters('woo_ce_extend_user_fields_wc', '%s: %s'), $fieldset['title'], esc_html($field['label'])), 'disabled' => 1);
                }
            }
            unset($show_fields, $fieldset, $field);
        }
    }
    // Custom User meta
    $custom_users = woo_ce_get_option('custom_users', '');
    if (!empty($custom_users)) {
        foreach ($custom_users as $custom_user) {
            if (!empty($custom_user)) {
                $fields[] = array('name' => $custom_user, 'label' => $custom_user, 'disabled' => 1);
            }
        }
        unset($custom_users, $custom_user);
    }
    return $fields;
}
Beispiel #11
0
function woo_ce_extend_order_items_unique_columns( $fields = array(), $i = 0, $original_columns = array() ) {

	// WooCommerce Tax Rates
	$tax_rates = woo_ce_get_order_tax_rates();
	if( !empty( $tax_rates ) ) {
		foreach( $tax_rates as $tax_rate ) {
			if( isset( $original_columns[sprintf( 'order_item_%d_tax_rate_%d', $i, $tax_rate['rate_id'] )] ) )
				$fields[] = sprintf( __( 'Order Item #%d: Tax Rate - %s', 'woo_ce' ), $i, $tax_rate['label'] );
		}
	}
	unset( $tax_rates, $tax_rate );

	// Product Add-ons - http://www.woothemes.com/
	if( $product_addons = woo_ce_get_product_addons() ) {
		foreach( $product_addons as $product_addon ) {
			if( isset( $original_columns[sprintf( 'order_item_%d_product_addon_%s', $i, $product_addon->post_name )] ) )
				$fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, $product_addon->post_title );
		}
	}

	// WooCommerce Checkout Add-Ons - http://www.skyverge.com/product/woocommerce-checkout-add-ons/
	if( function_exists( 'init_woocommerce_checkout_add_ons' ) ) {
		if( isset( $original_columns[sprintf( 'order_item_%d_checkout_addon_id', $i )] ) )
			$fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_checkout_addon_id', 'name', 'unique' ) );
		if( isset( $original_columns[sprintf( 'order_item_%d_checkout_addon_label', $i )] ) )
			$fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_checkout_addon_label', 'name', 'unique' ) );
		if( isset( $original_columns[sprintf( 'order_item_%d_checkout_addon_value', $i )] ) )
			$fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_check_addon_value', 'name', 'unique' ) );
	}

	// WooCommerce Brands Addon - http://woothemes.com/woocommerce/
	// WooCommerce Brands - http://proword.net/Woocommerce_Brands/
	if( class_exists( 'WC_Brands' ) || class_exists( 'woo_brands' ) || taxonomy_exists( apply_filters( 'woo_ce_brand_term_taxonomy', 'product_brand' ) ) ) {
		if( isset( $original_columns[sprintf( 'order_item_%d_brand', $i )] ) )
			$fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_brand', 'name', 'unique' ) );
	}

	// Product Vendors - http://www.woothemes.com/products/product-vendors/
	if( class_exists( 'WooCommerce_Product_Vendors' ) ) {
		if( isset( $original_columns[sprintf( 'order_item_%d_vendor', $i )] ) )
			$fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_vendor', 'name', 'unique' ) );
	}

	// Cost of Goods - http://www.skyverge.com/product/woocommerce-cost-of-goods-tracking/
	if( class_exists( 'WC_COG' ) ) {
		if( isset( $original_columns[sprintf( 'order_item_%d_cost_of_goods', $i )] ) )
			$fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_cost_of_goods', 'name', 'unique' ) );
		if( isset( $original_columns[sprintf( 'order_item_%d_total_cost_of_goods', $i )] ) )
			$fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_total_cost_of_goods', 'name', 'unique' ) );
	}

	// WooCommerce MSRP Pricing - http://woothemes.com/woocommerce/
	if( function_exists( 'woocommerce_msrp_activate' ) ) {
		if( isset( $original_columns[sprintf( 'order_item_%d_msrp', $i )] ) )
			$fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_msrp', 'name', 'unique' ) );
	}

	// Gravity Forms - http://woothemes.com/woocommerce
	if( class_exists( 'RGForms' ) && class_exists( 'woocommerce_gravityforms' ) ) {
		if( isset( $original_columns[sprintf( 'order_item_%d_gf_form_id', $i )] ) )
			$fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_gf_form_id', 'name', 'unique' ) );
		if( isset( $original_columns[sprintf( 'order_item_%d_gf_form_label', $i )] ) )
			$fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_gf_form_label', 'name', 'unique' ) );
		// Check if there are any Products linked to Gravity Forms
		if( $gf_fields = woo_ce_get_gravity_form_fields() ) {
			foreach( $gf_fields as $key => $gf_field ) {
				if( isset( $original_columns[sprintf( 'order_item_%d_gf_%d_%s', $i, $gf_field['formId'], $gf_field['id'] )] ) )
					$fields[] = sprintf( apply_filters( 'woo_ce_extend_order_items_unique_columns_gf_fields', __( 'Order Item #%d: %s - %s', 'woo_ce' ) ), $i, $gf_field['formTitle'], $gf_field['label'] );
			}
		}
	}

	// Local Pickup Plus - http://www.woothemes.com/products/local-pickup-plus/
	if( class_exists( 'WC_Local_Pickup_Plus' ) ) {
		if( isset( $original_columns[sprintf( 'order_item_%d_pickup_location', $i )] ) )
			$fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_pickup_location', 'name', 'unique' ) );
	}

	// WooCommerce Bookings - http://www.woothemes.com/products/woocommerce-bookings/
	if( class_exists( 'WC_Bookings' ) ) {
		if( isset( $original_columns[sprintf( 'order_item_%d_booking_id', $i )] ) )
			$fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_booking_id', 'name', 'unique' ) );
		if( isset( $original_columns[sprintf( 'order_item_%d_booking_date', $i )] ) )
			$fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_booking_date', 'name', 'unique' ) );
		if( isset( $original_columns[sprintf( 'order_item_%d_booking_type', $i )] ) )
			$fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_booking_type', 'name', 'unique' ) );
		if( isset( $original_columns[sprintf( 'order_item_%d_booking_start_date', $i )] ) )
			$fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_booking_start_date', 'name', 'unique' ) );
		if( isset( $original_columns[sprintf( 'order_item_%d_booking_end_date', $i )] ) )
			$fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, woo_ce_get_order_field( 'order_items_booking_end_date', 'name', 'unique' ) );
	}

	// WooCommerce TM Extra Product Options - http://codecanyon.net/item/woocommerce-extra-product-options/7908619
	if( class_exists( 'TM_Extra_Product_Options' ) ) {
		if( $tm_fields = woo_ce_get_extra_product_option_fields() ) {
			foreach( $tm_fields as $tm_field ) {
				if( isset( $original_columns[sprintf( 'order_item_%d_tm_%s', $i, sanitize_key( $tm_field['name'] ) )] ) )
					$fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, $tm_field['name'] );
			}
		}
	}

	// Attributes
	if( $attributes = woo_ce_get_product_attributes() ) {
		foreach( $attributes as $attribute ) {
			if( isset( $original_columns[sprintf( 'order_item_%d_attribute_%s', $i, sanitize_key( $attribute->attribute_name ) )] ) ) {
				if( empty( $attribute->attribute_label ) )
					$attribute->attribute_label = $attribute->attribute_name;
				$fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, $attribute->attribute_label );
			}
		}
	}

	// Custom Order Items fields
	$custom_order_items = woo_ce_get_option( 'custom_order_items', '' );
	if( !empty( $custom_order_items ) ) {
		foreach( $custom_order_items as $custom_order_item ) {
			if( !empty( $custom_order_item ) ) {
				if( isset( $original_columns[sprintf( 'order_item_%d_%s', $i, $custom_order_item )] ) )
					$fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, $custom_order_item );
			}
		}
	}

	// Custom Product fields
	$custom_products = woo_ce_get_option( 'custom_products', '' );
	if( !empty( $custom_products ) ) {
		foreach( $custom_products as $custom_product ) {
			if( !empty( $custom_product ) ) {
				if( isset( $original_columns[sprintf( 'order_item_%d_%s', $i, $custom_product )] ) )
					$fields[] = sprintf( __( 'Order Item #%d: %s', 'woo_ce' ), $i, $custom_product );
			}
		}
	}

	return $fields;

}
function woo_ce_admin_save_settings() {

	// Strip file extension from export filename
	$export_filename = strip_tags( $_POST['export_filename'] );
	if( ( strpos( $export_filename, '.csv' ) !== false ) || ( strpos( $export_filename, '.xml' ) !== false ) || ( strpos( $export_filename, '.xls' ) !== false ) )
		$export_filename = str_replace( array( '.csv', '.xml', '.xls' ), '', $export_filename );
	woo_ce_update_option( 'export_filename', $export_filename );
	woo_ce_update_option( 'delete_file', absint( $_POST['delete_file'] ) );
	woo_ce_update_option( 'encoding', sanitize_text_field( $_POST['encoding'] ) );
	woo_ce_update_option( 'delimiter', sanitize_text_field( $_POST['delimiter'] ) );
	woo_ce_update_option( 'category_separator', sanitize_text_field( $_POST['category_separator'] ) );
	woo_ce_update_option( 'bom', absint( $_POST['bom'] ) );
	woo_ce_update_option( 'escape_formatting', sanitize_text_field( $_POST['escape_formatting'] ) );
	woo_ce_update_option( 'header_formatting', absint( $_POST['header_formatting'] ) );
	if( $_POST['date_format'] == 'custom' && !empty( $_POST['date_format_custom'] ) )
		woo_ce_update_option( 'date_format', sanitize_text_field( $_POST['date_format_custom'] ) );
	else
		woo_ce_update_option( 'date_format', sanitize_text_field( $_POST['date_format'] ) );
	woo_ce_update_option( 'email_to', sanitize_text_field( $_POST['email_to'] ) );
	woo_ce_update_option( 'email_subject', sanitize_text_field( $_POST['email_subject'] ) );
	woo_ce_update_option( 'post_to', sanitize_text_field( $_POST['post_to'] ) );

	// XML settings
	woo_ce_update_option( 'xml_attribute_url', ( isset( $_POST['xml_attribute_url'] ) ? absint( $_POST['xml_attribute_url'] ) : 0 ) );
	woo_ce_update_option( 'xml_attribute_title', ( isset( $_POST['xml_attribute_title'] ) ? absint( $_POST['xml_attribute_title'] ) : 0 ) );
	woo_ce_update_option( 'xml_attribute_date', ( isset( $_POST['xml_attribute_date'] ) ? absint( $_POST['xml_attribute_date'] ) : 0 ) );
	woo_ce_update_option( 'xml_attribute_time', ( isset( $_POST['xml_attribute_time'] ) ? absint( $_POST['xml_attribute_time'] ) : 0 ) );
	woo_ce_update_option( 'xml_attribute_export', ( isset( $_POST['xml_attribute_export'] ) ? absint( $_POST['xml_attribute_export'] ) : 0 ) );
	woo_ce_update_option( 'xml_attribute_orderby', ( isset( $_POST['xml_attribute_orderby'] ) ? absint( $_POST['xml_attribute_orderby'] ) : 0 ) );
	woo_ce_update_option( 'xml_attribute_order', ( isset( $_POST['xml_attribute_order'] ) ? absint( $_POST['xml_attribute_order'] ) : 0 ) );
	woo_ce_update_option( 'xml_attribute_limit', ( isset( $_POST['xml_attribute_limit'] ) ? absint( $_POST['xml_attribute_limit'] ) : 0 ) );
	woo_ce_update_option( 'xml_attribute_offset', ( isset( $_POST['xml_attribute_offset'] ) ? absint( $_POST['xml_attribute_offset'] ) : 0 ) );

	// RSS settings
	woo_ce_update_option( 'rss_title', ( isset( $_POST['rss_title'] ) ? sanitize_text_field( $_POST['rss_title'] ) : '' ) );
	woo_ce_update_option( 'rss_link', ( isset( $_POST['rss_link'] ) ? esc_url_raw( $_POST['rss_link'] ) : '' ) );
	woo_ce_update_option( 'rss_description', ( isset( $_POST['rss_description'] ) ? sanitize_text_field( $_POST['rss_description'] ) : '' ) );

	// Scheduled export settings
	$enable_auto = absint( $_POST['enable_auto'] );
	$auto_schedule = sanitize_text_field( $_POST['auto_schedule'] );
	$auto_interval = absint( $_POST['auto_interval'] );
	$auto_commence = sanitize_text_field( $_POST['auto_commence'] );
	$auto_commence_date = sanitize_text_field( $_POST['auto_commence_date'] );
	$site_hash = md5( get_option( 'siteurl' ) );

	// Display additional notice if Enabled Scheduled Exports is enabled/disabled or scheduling options are modified
	if( 
		woo_ce_get_option( 'enable_auto', 0 ) <> $enable_auto || 
		woo_ce_get_option( 'auto_schedule', 'custom' ) <> $auto_schedule || 
		woo_ce_get_option( 'auto_interval', 1440 ) <> $auto_interval || 
		woo_ce_get_option( 'auto_commence', 'now' ) <> $auto_commence || 
		woo_ce_get_option( 'auto_commence_date', date( 'd/m/Y H:i' ) ) <> $auto_commence_date
	) {

		// Save these fields before we re-load the WP-CRON schedule
		woo_ce_update_option( 'enable_auto', $enable_auto );

		// Remove from WP-CRON schedule if disabled
		if( $enable_auto == 0 ) {
			woo_ce_cron_activation();
		// Re-load the WP-CRON schedule with our new scheduling options
		} else if( 
			woo_ce_get_option( 'auto_schedule', 'custom' ) <> $auto_schedule || 
			woo_ce_get_option( 'auto_interval', 1440 ) <> $auto_interval || 
			woo_ce_get_option( 'auto_commence', 'now' ) <> $auto_commence || 
			woo_ce_get_option( 'auto_commence_date', date( 'd/m/Y H:i' ) ) <> $auto_commence_date || 
			woo_ce_get_option( 'site_hash', '' ) <> $site_hash
		) {
			// Save these fields before we re-load the WP-CRON schedule
			woo_ce_update_option( 'auto_commence', $auto_commence );
			woo_ce_update_option( 'auto_commence_date', $auto_commence_date );
			woo_ce_update_option( 'auto_schedule', $auto_schedule );
			woo_ce_update_option( 'auto_interval', $auto_interval );

			// Update the Site URL hash we use for live vs. staging checks
			woo_ce_update_option( 'site_hash', $site_hash );

			woo_ce_cron_activation( true );
		}

		switch( $auto_schedule ) {

			case 'daily':
			case 'weekly':
			case 'monthly':
				$interval = $auto_schedule;
				break;

			case 'custom':
				$interval = sprintf( __( 'in %d minute(s)', 'woo_ce' ), $auto_interval );
				break;

		}
		switch( $auto_commence ) {

			case 'now':
				$commence = __( ' from now' );
				break;

			case 'future':
				$commence = sprintf( __( ' starting %s' ), $auto_commence_date );
				break;

		}
		$message = sprintf( __( 'Scheduled exports has been %s.', 'woo_ce' ), ( ( $enable_auto == 1 ) ? sprintf( __( 'activated, next scheduled export will run %s%s', 'woo_ce' ), $interval, $commence ) : __( 'de-activated, no further automated exports will occur', 'woo_ce' ) ) );
		woo_cd_admin_notice( $message );

	}
	woo_ce_update_option( 'auto_type', sanitize_text_field( $_POST['auto_type'] ) );
	woo_ce_update_option( 'auto_product_type', ( isset( $_POST['product_filter_type'] ) ? array_map( 'sanitize_text_field', $_POST['product_filter_type'] ) : array() ) );
	woo_ce_update_option( 'auto_product_status', ( isset( $_POST['product_filter_status'] ) ? array_map( 'sanitize_text_field', $_POST['product_filter_status'] ) : array() ) );
	woo_ce_update_option( 'auto_product_stock', sanitize_text_field( $_POST['product_filter_stock'] ) );
	woo_ce_update_option( 'auto_product_category', ( isset( $_POST['product_filter_category'] ) ? array_map( 'absint', $_POST['product_filter_category'] ) : array() ) );
	woo_ce_update_option( 'auto_product_tag', ( isset( $_POST['product_filter_tag'] ) ? array_map( 'absint', $_POST['product_filter_tag'] ) : array() ) );
	woo_ce_update_option( 'auto_order_date', sanitize_text_field( $_POST['order_dates_filter'] ) );
	woo_ce_update_option( 'auto_order_dates_from', sanitize_text_field( $_POST['order_dates_from'] ) );
	woo_ce_update_option( 'auto_order_dates_to', sanitize_text_field( $_POST['order_dates_to'] ) );
	woo_ce_update_option( 'auto_order_date_variable', sanitize_text_field( $_POST['order_dates_filter_variable'] ) );
	woo_ce_update_option( 'auto_order_date_variable_length', sanitize_text_field( $_POST['order_dates_filter_variable_length'] ) );
	woo_ce_update_option( 'auto_order_status', ( isset( $_POST['order_filter_status'] ) ? woo_ce_format_product_filters( array_map( 'sanitize_text_field', $_POST['order_filter_status'] ) ) : array() ) );
	// Check if we are dealing with a string or array
	$auto_order_product = ( isset( $_POST['order_filter_product'] ) ? $_POST['order_filter_product'] : false );
	// Select2 passes us a string whereas Chosen gives us an array
	if( is_array( $auto_order_product ) && count( $auto_order_product ) == 1 )
		$auto_order_product = explode( ',', $auto_order_product[0] );
	woo_ce_update_option( 'auto_order_product', ( !empty( $auto_order_product ) ? woo_ce_format_product_filters( array_map( 'absint', $auto_order_product ) ) : array() ) );
	unset( $auto_order_product );
	woo_ce_update_option( 'auto_order_billing_country', ( isset( $_POST['order_filter_billing_country'] ) ? array_map( 'sanitize_text_field', $_POST['order_filter_billing_country'] ) : array() ) );
	woo_ce_update_option( 'auto_order_shipping_country', ( isset( $_POST['order_filter_shipping_country'] ) ? array_map( 'sanitize_text_field', $_POST['order_filter_shipping_country'] ) : array() ) );
	woo_ce_update_option( 'auto_order_payment', ( isset( $_POST['order_filter_payment'] ) ? array_map( 'sanitize_text_field', $_POST['order_filter_payment'] ) : array() ) );
	woo_ce_update_option( 'auto_order_shipping', ( isset( $_POST['order_filter_shipping'] ) ? array_map( 'sanitize_text_field', $_POST['order_filter_shipping'] ) : array() ) );
	woo_ce_update_option( 'auto_format', sanitize_text_field( $_POST['auto_format'] ) );
	woo_ce_update_option( 'auto_method', sanitize_text_field( $_POST['auto_method'] ) );
	woo_ce_update_option( 'auto_ftp_method_host', ( isset( $_POST['ftp_method_host'] ) ? woo_ce_format_ftp_host( sanitize_text_field( $_POST['ftp_method_host'] ) ) : '' ) );
	woo_ce_update_option( 'auto_ftp_method_user', sanitize_text_field( $_POST['ftp_method_user'] ) );
	// Update FTP password only if it is filled in
	if( !empty( $_POST['ftp_method_pass'] ) )
		woo_ce_update_option( 'auto_ftp_method_pass', sanitize_text_field( $_POST['ftp_method_pass'] ) );
	woo_ce_update_option( 'auto_ftp_method_port', sanitize_text_field( $_POST['ftp_method_port'] ) );
	woo_ce_update_option( 'auto_ftp_method_protocol', sanitize_text_field( $_POST['ftp_method_protocol'] ) );
	woo_ce_update_option( 'auto_ftp_method_path', sanitize_text_field( $_POST['ftp_method_path'] ) );
	// Strip file extension from export filename
	$ftp_filename = strip_tags( $_POST['ftp_method_filename'] );
	if( ( strpos( $ftp_filename, '.csv' ) !== false ) || ( strpos( $ftp_filename, '.xml' ) !== false ) || ( strpos( $ftp_filename, '.xls' ) !== false ) || ( strpos( $ftp_filename, '.xlsx' ) !== false ) )
		$ftp_filename = str_replace( array( '.csv', '.xml', '.xls', '.xlsx' ), '', $ftp_filename );
	woo_ce_update_option( 'auto_ftp_method_filename', $ftp_filename );
	unset( $ftp_filename );
	woo_ce_update_option( 'auto_ftp_method_passive', sanitize_text_field( $_POST['ftp_method_passive'] ) );
	woo_ce_update_option( 'auto_ftp_method_timeout', sanitize_text_field( $_POST['ftp_method_timeout'] ) );
	woo_ce_update_option( 'scheduled_fields', sanitize_text_field( $_POST['scheduled_fields'] ) );

	// CRON settings
	$enable_cron = absint( $_POST['enable_cron'] );
	// Display additional notice if Enabled CRON is enabled/disabled
	if( woo_ce_get_option( 'enable_cron', 0 ) <> $enable_cron ) {
		$message = sprintf( __( 'CRON support has been %s.', 'woo_ce' ), ( ( $enable_cron == 1 ) ? __( 'enabled', 'woo_ce' ) : __( 'disabled', 'woo_ce' ) ) );
		woo_cd_admin_notice( $message );
	}
	woo_ce_update_option( 'enable_cron', $enable_cron );
	woo_ce_update_option( 'secret_key', sanitize_text_field( $_POST['secret_key'] ) );
	woo_ce_update_option( 'cron_fields', sanitize_text_field( $_POST['cron_fields'] ) );

	// Orders Screen
	woo_ce_update_option( 'order_actions_csv', ( isset( $_POST['order_actions_csv'] ) ? absint( $_POST['order_actions_csv'] ) : 0 ) );
	woo_ce_update_option( 'order_actions_xml', ( isset( $_POST['order_actions_xml'] ) ? absint( $_POST['order_actions_xml'] ) : 0 ) );
	woo_ce_update_option( 'order_actions_xls', ( isset( $_POST['order_actions_xls'] ) ? absint( $_POST['order_actions_xls'] ) : 0 ) );
	woo_ce_update_option( 'order_actions_xlsx', ( isset( $_POST['order_actions_xlsx'] ) ? absint( $_POST['order_actions_xlsx'] ) : 0 ) );

	// Export Triggers
	woo_ce_update_option( 'enable_trigger_new_order', ( isset( $_POST['enable_trigger_new_order'] ) ? absint( $_POST['enable_trigger_new_order'] ) : 0 ) );
	woo_ce_update_option( 'trigger_new_order_format', sanitize_text_field( $_POST['trigger_new_order_format'] ) );
	woo_ce_update_option( 'trigger_new_order_method', sanitize_text_field( $_POST['trigger_new_order_method'] ) );
	woo_ce_update_option( 'trigger_new_order_fields', sanitize_text_field( $_POST['trigger_new_order_fields'] ) );

	$message = __( 'Changes have been saved.', 'woo_ce' );
	woo_cd_admin_notice( $message );

}
Beispiel #13
0
function woo_ce_get_commission_fields($format = 'full')
{
    $export_type = 'commission';
    $fields = array();
    $fields[] = array('name' => 'ID', 'label' => __('Commission ID', 'woo_ce'));
    $fields[] = array('name' => 'post_date', 'label' => __('Commission Date', 'woo_ce'));
    $fields[] = array('name' => 'title', 'label' => __('Commission Title', 'woo_ce'));
    $fields[] = array('name' => 'product_id', 'label' => __('Product ID', 'woo_ce'));
    $fields[] = array('name' => 'product_name', 'label' => __('Product Name', 'woo_ce'));
    $fields[] = array('name' => 'product_sku', 'label' => __('Product SKU', 'woo_ce'));
    $fields[] = array('name' => 'product_vendor_id', 'label' => __('Product Vendor ID', 'woo_ce'));
    $fields[] = array('name' => 'product_vendor_name', 'label' => __('Product Vendor Name', 'woo_ce'));
    $fields[] = array('name' => 'commission_amount', 'label' => __('Commission Amount', 'woo_ce'));
    $fields[] = array('name' => 'paid_status', 'label' => __('Commission Status', 'woo_ce'));
    $fields[] = array('name' => 'post_status', 'label' => __('Post Status', 'woo_ce'));
    /*
    	$fields[] = array(
    		'name' => '',
    		'label' => __( '', 'woo_ce' )
    	);
    */
    // Allow Plugin/Theme authors to add support for additional columns
    $fields = apply_filters('woo_ce_' . $export_type . '_fields', $fields, $export_type);
    switch ($format) {
        case 'summary':
            $output = array();
            $size = count($fields);
            for ($i = 0; $i < $size; $i++) {
                if (isset($fields[$i])) {
                    $output[$fields[$i]['name']] = 'on';
                }
            }
            return $output;
            break;
        case 'full':
        default:
            $sorting = woo_ce_get_option($export_type . '_sorting', array());
            $size = count($fields);
            for ($i = 0; $i < $size; $i++) {
                $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;
    }
}
Beispiel #14
0
 function woo_ce_admin_init()
 {
     global $export, $wp_roles;
     include_once 'includes/formatting.php';
     $action = woo_get_action();
     switch ($action) {
         case 'dismiss_memory_prompt':
             woo_ce_update_option('dismiss_memory_prompt', 1);
             $url = add_query_arg('action', null);
             wp_redirect($url);
             exit;
             break;
         case 'export':
             $export = new stdClass();
             $export->start_time = time();
             $export->idle_memory_start = woo_ce_current_memory_usage();
             $export->delimiter = $_POST['delimiter'];
             if ($export->delimiter != woo_ce_get_option('delimiter')) {
                 woo_ce_update_option('delimiter', $export->delimiter);
             }
             $export->category_separator = $_POST['category_separator'];
             if ($export->category_separator != woo_ce_get_option('category_separator')) {
                 woo_ce_update_option('category_separator', $export->category_separator);
             }
             $export->bom = $_POST['bom'];
             if ($export->bom != woo_ce_get_option('bom')) {
                 woo_ce_update_option('bom', $export->bom);
             }
             $export->escape_formatting = $_POST['escape_formatting'];
             if ($export->escape_formatting != woo_ce_get_option('escape_formatting')) {
                 woo_ce_update_option('escape_formatting', $export->escape_formatting);
             }
             $export->limit_volume = -1;
             if (!empty($_POST['limit_volume'])) {
                 $export->limit_volume = $_POST['limit_volume'];
                 if ($export->limit_volume != woo_ce_get_option('limit_volume')) {
                     woo_ce_update_option('limit_volume', $export->limit_volume);
                 }
             }
             $export->offset = 0;
             if (!empty($_POST['offset'])) {
                 $export->offset = (int) $_POST['offset'];
                 if ($export->offset != woo_ce_get_option('offset')) {
                     woo_ce_update_option('offset', $export->offset);
                 }
             }
             $export->delete_temporary_csv = 0;
             if (!empty($_POST['delete_temporary_csv'])) {
                 $export->delete_temporary_csv = (int) $_POST['delete_temporary_csv'];
                 if ($export->delete_temporary_csv != woo_ce_get_option('delete_csv')) {
                     woo_ce_update_option('delete_csv', $export->delete_temporary_csv);
                 }
             }
             $export->encoding = 'UTF-8';
             if (!empty($_POST['encoding'])) {
                 $export->encoding = (string) $_POST['encoding'];
                 if ($export->encoding != woo_ce_get_option('encoding')) {
                     woo_ce_update_option('encoding', $export->encoding);
                 }
             }
             if (!empty($_POST['date_format'])) {
                 $export->date_format = (string) $_POST['date_format'];
                 if ($export->date_format != woo_ce_get_option('date_format')) {
                     woo_ce_update_option('date_format', $export->date_format);
                 }
             }
             $export->fields = false;
             $export->product_categories = false;
             $export->product_tags = false;
             $export->product_status = false;
             $export->product_type = false;
             $export->product_orderby = false;
             $export->product_order = false;
             $export->category_orderby = false;
             $export->category_order = false;
             $export->tag_orderby = false;
             $export->tag_order = false;
             $export->order_dates_filter = false;
             $export->order_dates_from = '';
             $export->order_dates_to = '';
             $export->order_status = false;
             $export->order_customer = false;
             $export->order_user_roles = false;
             $export->order_items = 'combined';
             $export->order_orderby = false;
             $export->order_order = false;
             $export->type = isset($_POST['dataset']) ? $_POST['dataset'] : false;
             switch ($export->type) {
                 case 'products':
                     $export->fields = isset($_POST['product_fields']) ? $_POST['product_fields'] : false;
                     $export->product_categories = isset($_POST['product_filter_categories']) ? woo_ce_format_product_filters($_POST['product_filter_categories']) : false;
                     $export->product_tags = isset($_POST['product_filter_tags']) ? woo_ce_format_product_filters($_POST['product_filter_tags']) : false;
                     $export->product_status = isset($_POST['product_filter_status']) ? woo_ce_format_product_filters($_POST['product_filter_status']) : false;
                     $export->product_type = isset($_POST['product_filter_type']) ? woo_ce_format_product_filters($_POST['product_filter_type']) : false;
                     $export->product_orderby = isset($_POST['product_orderby']) ? $_POST['product_orderby'] : false;
                     if ($export->product_orderby != woo_ce_get_option('product_orderby')) {
                         woo_ce_update_option('product_orderby', $export->product_orderby);
                     }
                     $export->product_order = isset($_POST['product_order']) ? $_POST['product_order'] : false;
                     if ($export->product_order != woo_ce_get_option('product_order')) {
                         woo_ce_update_option('product_order', $export->product_order);
                     }
                     break;
                 case 'categories':
                     $export->fields = isset($_POST['category_fields']) ? $_POST['category_fields'] : false;
                     $export->category_orderby = isset($_POST['category_orderby']) ? $_POST['category_orderby'] : false;
                     if ($export->category_orderby != woo_ce_get_option('category_orderby')) {
                         woo_ce_update_option('category_orderby', $export->category_orderby);
                     }
                     $export->category_order = isset($_POST['category_order']) ? $_POST['category_order'] : false;
                     if ($export->category_order != woo_ce_get_option('category_order')) {
                         woo_ce_update_option('category_order', $export->category_order);
                     }
                     break;
                 case 'tags':
                     $export->fields = isset($_POST['tag_fields']) ? $_POST['tag_fields'] : false;
                     $export->tag_orderby = isset($_POST['tag_orderby']) ? $_POST['tag_orderby'] : false;
                     if ($export->tag_orderby != woo_ce_get_option('tag_orderby')) {
                         woo_ce_update_option('tag_orderby', $export->tag_orderby);
                     }
                     $export->tag_order = isset($_POST['tag_order']) ? $_POST['tag_order'] : false;
                     if ($export->tag_order != woo_ce_get_option('tag_order')) {
                         woo_ce_update_option('tag_order', $export->tag_order);
                     }
                     break;
                 case 'orders':
                     $export->fields = isset($_POST['order_fields']) ? $_POST['order_fields'] : false;
                     $export->order_dates_filter = isset($_POST['order_dates_filter']) ? $_POST['order_dates_filter'] : false;
                     $export->order_dates_from = $_POST['order_dates_from'];
                     $export->order_dates_to = $_POST['order_dates_to'];
                     $export->order_status = isset($_POST['order_filter_status']) ? woo_ce_format_product_filters($_POST['order_filter_status']) : false;
                     $export->order_customer = isset($_POST['order_customer']) ? $_POST['order_customer'] : false;
                     $export->order_user_roles = isset($_POST['order_filter_user_role']) ? woo_ce_format_user_role_filters($_POST['order_filter_user_role']) : false;
                     if (isset($_POST['order_items'])) {
                         $export->order_items = $_POST['order_items'];
                         if ($export->order_items != woo_ce_get_option('order_items_formatting')) {
                             woo_ce_update_option('order_items_formatting', $export->order_items);
                         }
                     }
                     if (isset($_POST['max_order_items'])) {
                         $export->max_order_items = (int) $_POST['max_order_items'];
                         if ($export->max_order_items != woo_ce_get_option('max_order_items')) {
                             woo_ce_update_option('max_order_items', $export->max_order_items);
                         }
                     }
                     $export->order_orderby = isset($_POST['order_orderby']) ? $_POST['order_orderby'] : false;
                     if ($export->order_orderby != woo_ce_get_option('order_orderby')) {
                         woo_ce_update_option('order_orderby', $export->order_orderby);
                     }
                     $export->order_order = isset($_POST['order_order']) ? $_POST['order_order'] : false;
                     if ($export->order_order != woo_ce_get_option('order_order')) {
                         woo_ce_update_option('order_order', $export->order_order);
                     }
                     break;
                 case 'customers':
                     $export->fields = $_POST['customer_fields'];
                     break;
                 case 'coupons':
                     $export->fields = $_POST['coupon_fields'];
                     break;
             }
             if ($export->type) {
                 $timeout = 600;
                 if (isset($_POST['timeout'])) {
                     $timeout = (int) $_POST['timeout'];
                     if ($timeout != woo_ce_get_option('timeout')) {
                         woo_ce_update_option('timeout', $timeout);
                     }
                 }
                 if (!ini_get('safe_mode')) {
                     @set_time_limit($timeout);
                 }
                 @ini_set('memory_limit', WP_MAX_MEMORY_LIMIT);
                 @ini_set('max_execution_time', (int) $timeout);
                 $args = array('limit_volume' => $export->limit_volume, 'offset' => $export->offset, 'encoding' => $export->encoding, 'date_format' => $export->date_format, 'product_categories' => $export->product_categories, 'product_tags' => $export->product_tags, 'product_status' => $export->product_status, 'product_type' => $export->product_type, 'product_orderby' => $export->product_orderby, 'product_order' => $export->product_order, 'category_orderby' => $export->category_orderby, 'category_order' => $export->category_order, 'tag_orderby' => $export->tag_orderby, 'tag_order' => $export->tag_order, 'order_status' => $export->order_status, 'order_dates_filter' => $export->order_dates_filter, 'order_dates_from' => woo_ce_format_order_date($export->order_dates_from), 'order_dates_to' => woo_ce_format_order_date($export->order_dates_to), 'order_customer' => $export->order_customer, 'order_user_roles' => $export->order_user_roles, 'order_items' => $export->order_items, 'order_orderby' => $export->order_orderby, 'order_order' => $export->order_order);
                 woo_ce_save_fields($export->type, $export->fields);
                 $export->filename = woo_ce_generate_csv_filename($export->type);
                 if (WOO_CE_DEBUG) {
                     woo_ce_export_dataset($export->type, $args);
                     $export->idle_memory_end = woo_ce_current_memory_usage();
                     $export->end_time = time();
                 } else {
                     // Generate CSV contents
                     $bits = woo_ce_export_dataset($export->type, $args);
                     unset($export->fields);
                     if (!$bits) {
                         wp_redirect(add_query_arg('empty', true));
                         exit;
                     }
                     if (isset($export->delete_temporary_csv) && $export->delete_temporary_csv) {
                         // Print to browser
                         woo_ce_generate_csv_header($export->type);
                         echo $bits;
                         exit;
                     } else {
                         // Save to file and insert to WordPress Media
                         if ($export->filename && $bits) {
                             $post_ID = woo_ce_save_csv_file_attachment($export->filename);
                             $upload = wp_upload_bits($export->filename, null, $bits);
                             if ($upload['error']) {
                                 wp_delete_attachment($post_ID, true);
                                 wp_redirect(add_query_arg(array('failed' => true, 'message' => urlencode($upload['error']))));
                                 return;
                             }
                             $attach_data = wp_generate_attachment_metadata($post_ID, $upload['file']);
                             wp_update_attachment_metadata($post_ID, $attach_data);
                             if ($post_ID) {
                                 woo_ce_save_csv_file_guid($post_ID, $export->type, $upload['url']);
                                 woo_ce_save_csv_file_details($post_ID);
                             }
                             $export_type = $export->type;
                             unset($export);
                             // The end memory usage and time is collected at the very last opportunity prior to the CSV header being rendered to the screen
                             woo_ce_update_csv_file_detail($post_ID, '_woo_idle_memory_end', woo_ce_current_memory_usage());
                             woo_ce_update_csv_file_detail($post_ID, '_woo_end_time', time());
                             // Generate CSV header
                             woo_ce_generate_csv_header($export_type);
                             unset($export_type);
                             // Print file contents to screen
                             if ($upload['file']) {
                                 readfile($upload['file']);
                             } else {
                                 wp_redirect(add_query_arg('failed', true));
                             }
                             unset($upload);
                         } else {
                             wp_redirect(add_query_arg('failed', true));
                         }
                         exit;
                     }
                 }
             }
             break;
         default:
             // Detect other platform versions
             woo_ce_detect_non_woo_install();
             add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_date');
             add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_status');
             add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_customer');
             add_action('woo_ce_export_order_options_after_table', 'woo_ce_orders_order_sorting');
             add_action('woo_ce_export_after_form', 'woo_ce_products_custom_fields');
             break;
     }
 }
Beispiel #15
0
function woo_ce_format_description_excerpt($string = '')
{
    if ($description_excerpt_formatting = woo_ce_get_option('description_excerpt_formatting', 0)) {
        $string = wp_kses($string);
    }
    return $string;
}
function woo_ce_get_order_fields($format = 'full')
{
    $fields = array();
    $fields[] = array('name' => 'purchase_id', 'label' => __('Purchase ID', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'purchase_total', 'label' => __('Order Total', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'order_discount', 'label' => __('Order Discount', 'woo_ce'), 'default' => 1);
    /*
    	$fields[] = array(
    		'name' => 'order_incl_tax',
    		'label' => __( 'Order Incl. Tax', 'woo_ce' ),
    		'default' => ''
    	);
    */
    $fields[] = array('name' => 'order_excl_tax', 'label' => __('Order Excl. Tax', 'woo_ce'), 'default' => 1);
    /*
    	$fields[] = array(
    		'name' => 'order_tax_rate',
    		'label' => __( 'Order Tax Rate', 'woo_ce' ),
    		'default' => ''
    	);
    */
    $fields[] = array('name' => 'order_sales_tax', 'label' => __('Sales Tax Total', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'order_shipping_tax', 'label' => __('Shipping Tax Total', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'payment_gateway_id', 'label' => __('Payment Gateway ID', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'payment_gateway', 'label' => __('Payment Gateway', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'shipping_method_id', 'label' => __('Shipping Method ID', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'shipping_method', 'label' => __('Shipping Method', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'shipping_cost', 'label' => __('Shipping Cost', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'payment_status', 'label' => __('Payment Status', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'order_key', 'label' => __('Order Key', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'purchase_date', 'label' => __('Purchase Date', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'purchase_time', 'label' => __('Purchase Time', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'customer_note', 'label' => __('Customer Note', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'order_notes', 'label' => __('Order Notes', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'user_id', 'label' => __('User ID', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'user_name', 'label' => __('Username', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'user_role', 'label' => __('User Role', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'ip_address', 'label' => __('Checkout IP Address', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'browser_agent', 'label' => __('Checkout Browser Agent', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'billing_full_name', 'label' => __('Billing: Full Name', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'billing_first_name', 'label' => __('Billing: First Name', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'billing_last_name', 'label' => __('Billing: Last Name', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'billing_company', 'label' => __('Billing: Company', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'billing_address', 'label' => __('Billing: Street Address', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'billing_city', 'label' => __('Billing: City', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'billing_postcode', 'label' => __('Billing: ZIP Code', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'billing_state', 'label' => __('Billing: State (prefix)', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'billing_state_full', 'label' => __('Billing: State', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'billing_country', 'label' => __('Billing: Country (prefix)', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'billing_country_full', 'label' => __('Billing: Country', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'billing_phone', 'label' => __('Billing: Phone Number', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'billing_email', 'label' => __('Billing: E-mail Address', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'shipping_full_name', 'label' => __('Shipping: Full Name', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'shipping_first_name', 'label' => __('Shipping: First Name', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'shipping_last_name', 'label' => __('Shipping: Last Name', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'shipping_company', 'label' => __('Shipping: Company', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'shipping_address', 'label' => __('Shipping: Street Address', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'shipping_city', 'label' => __('Shipping: City', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'shipping_postcode', 'label' => __('Shipping: ZIP Code', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'shipping_state', 'label' => __('Shipping: State (prefix)', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'shipping_state_full', 'label' => __('Shipping: State', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'shipping_country', 'label' => __('Shipping: Country (prefix)', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'shipping_country_full', 'label' => __('Shipping: Country', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'order_items_product_id', 'label' => __('Order Items: Product ID', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'order_items_variation_id', 'label' => __('Order Items: Variation ID', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'order_items_sku', 'label' => __('Order Items: SKU', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'order_items_name', 'label' => __('Order Items: Product Name', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'order_items_variation', 'label' => __('Order Items: Product Variation', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'order_items_tax_class', 'label' => __('Order Items: Tax Class', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'order_items_quantity', 'label' => __('Order Items: Quantity', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'order_items_total', 'label' => __('Order Items: Total', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'order_items_subtotal', 'label' => __('Order Items: Subtotal', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'order_items_tax', 'label' => __('Order Items: Tax', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'order_items_tax_subtotal', 'label' => __('Order Items: Tax Subtotal', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'order_items_type', 'label' => __('Order Items: Type', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'order_items_type', 'label' => __('Order Items: Type', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'order_items_category', 'label' => __('Order Items: Category', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'order_items_tag', 'label' => __('Order Items: Tag', 'woo_ce'), 'default' => 1);
    /*
    	$fields[] = array(
    		'name' => '',
    		'label' => __( '', 'woo_ce' ),
    		'default' => 1
    	);
    */
    // Allow Plugin/Theme authors to add support for additional Order columns
    $fields = apply_filters('woo_ce_order_fields', $fields);
    if ($remember = woo_ce_get_option('orders_fields')) {
        $remember = maybe_unserialize($remember);
        $size = count($fields);
        for ($i = 0; $i < $size; $i++) {
            if ($fields[$i]) {
                if (!array_key_exists($fields[$i]['name'], $remember)) {
                    $fields[$i]['default'] = 0;
                }
            }
        }
    }
    switch ($format) {
        case 'summary':
            $output = array();
            $size = count($fields);
            for ($i = 0; $i < $size; $i++) {
                $output[$fields[$i]['name']] = 'on';
            }
            return $output;
            break;
        case 'full':
        default:
            return $fields;
            break;
    }
}
Beispiel #17
0
function woo_ce_get_shipping_class_fields($format = 'full')
{
    $export_type = 'shipping_class';
    $fields = array();
    $fields[] = array('name' => 'term_id', 'label' => __('Term ID', 'woo_ce'));
    $fields[] = array('name' => 'name', 'label' => __('Shipping Class Name', 'woo_ce'));
    $fields[] = array('name' => 'slug', 'label' => __('Shipping Class Slug', 'woo_ce'));
    $fields[] = array('name' => 'description', 'label' => __('Shipping Class Description', 'woo_ce'));
    /*
    	$fields[] = array(
    		'name' => '',
    		'label' => __( '', 'woo_ce' )
    	);
    */
    // Allow Plugin/Theme authors to add support for additional columns
    $fields = apply_filters('woo_ce_' . $export_type . '_fields', $fields, $export_type);
    switch ($format) {
        case 'summary':
            $output = array();
            $size = count($fields);
            for ($i = 0; $i < $size; $i++) {
                if (isset($fields[$i])) {
                    $output[$fields[$i]['name']] = 'on';
                }
            }
            return $output;
            break;
        case 'full':
        default:
            $sorting = woo_ce_get_option($export_type . '_sorting', array());
            $size = count($fields);
            for ($i = 0; $i < $size; $i++) {
                $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;
    }
}
function woo_ce_extend_customer_fields( $fields = array() ) {

	// WooCommerce Follow-Up Emails
	if( class_exists( 'FollowUpEmails' ) ) {
		$fields[] = array(
			'name' => 'followup_optout',
			'label' => __( 'Follow-Up Emails: Opted Out', 'woo_ce' )
		);
	}

	// WooCommerce Hear About Us - https://wordpress.org/plugins/woocommerce-hear-about-us/
	if( class_exists( 'WooCommerce_HearAboutUs' ) ) {
		$fields[] = array(
			'name' => 'hear_about_us',
			'label' => __( 'Source', 'woo_ce' ),
			'hover' => __( 'WooCommerce Hear About Us', 'woo_ce' )
		);
	}

	// Custom Customer fields
	$custom_customers = woo_ce_get_option( 'custom_customers', '' );
	if( !empty( $custom_customers ) ) {
		foreach( $custom_customers as $custom_customer ) {
			if( !empty( $custom_customer ) ) {
				$fields[] = array(
					'name' => $custom_customer,
					'label' => woo_ce_clean_export_label( $custom_customer ),
					'hover' => sprintf( apply_filters( 'woo_ce_extend_customer_fields_custom_customer_hover', '%s: %s' ), __( 'Custom Customer', 'woo_ce' ), $custom_customer )
				);
			}
		}
		unset( $custom_customers, $custom_customer );
	}

	// Custom User fields
	$custom_users = woo_ce_get_option( 'custom_users', '' );
	if( !empty( $custom_users ) ) {
		foreach( $custom_users as $custom_user ) {
			if( !empty( $custom_user ) ) {
				$fields[] = array(
					'name' => $custom_user,
					'label' => woo_ce_clean_export_label( $custom_user ),
					'hover' => sprintf( apply_filters( 'woo_ce_extend_customer_fields_custom_user_hover', '%s: %s' ), __( 'Custom User', 'woo_ce' ), $custom_user )
				);
			}
		}
	}
	unset( $custom_users, $custom_user );

	return $fields;

}
Beispiel #19
0
function woo_ce_export_dataset($export_type = null, &$output = null)
{
    global $export;
    $separator = $export->delimiter;
    $export->columns = array();
    $export->total_rows = 0;
    $export->total_columns = 0;
    $troubleshooting_url = 'http://www.visser.com.au/documentation/store-exporter-deluxe/usage/';
    set_transient(WOO_CE_PREFIX . '_running', time(), woo_ce_get_option('timeout', MINUTE_IN_SECONDS));
    // Load up the fatal error notice if we 500 Internal Server Error (memory), hit a server timeout or encounter a fatal PHP error
    add_action('shutdown', 'woo_ce_fatal_error');
    // Drop in our content filters here
    add_filter('sanitize_key', 'woo_ce_sanitize_key');
    switch ($export_type) {
        // Products
        case 'product':
            $fields = woo_ce_get_product_fields('summary');
            if ($export->fields = array_intersect_assoc((array) $export->fields, $fields)) {
                foreach ($export->fields as $key => $field) {
                    $export->columns[] = woo_ce_get_product_field($key);
                }
            }
            $export->total_columns = $size = count($export->columns);
            $export->data_memory_start = woo_ce_current_memory_usage();
            if ($products = woo_ce_get_products($export->args)) {
                $export->total_rows = count($products);
                // 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;
                        }
                    }
                }
                $weight_unit = get_option('woocommerce_weight_unit');
                $dimension_unit = get_option('woocommerce_dimension_unit');
                $height_unit = $dimension_unit;
                $width_unit = $dimension_unit;
                $length_unit = $dimension_unit;
                if (!empty($export->fields)) {
                    foreach ($products as $product) {
                        $product = woo_ce_get_product_data($product, $export->args);
                        foreach ($export->fields as $key => $field) {
                            if (isset($product->{$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($product->{$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($products, $product);
            }
            $export->data_memory_end = woo_ce_current_memory_usage();
            break;
            // Categories
        // Categories
        case 'category':
            $fields = woo_ce_get_category_fields('summary');
            if ($export->fields = array_intersect_assoc((array) $export->fields, $fields)) {
                foreach ($export->fields as $key => $field) {
                    $export->columns[] = woo_ce_get_category_field($key);
                }
            }
            $export->total_columns = $size = count($export->columns);
            $export->data_memory_start = woo_ce_current_memory_usage();
            $category_args = array('orderby' => isset($export->args['category_orderby']) ? $export->args['category_orderby'] : 'ID', 'order' => isset($export->args['category_order']) ? $export->args['category_order'] : 'ASC');
            if ($categories = woo_ce_get_product_categories($category_args)) {
                $export->total_rows = count($categories);
                // 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 ($categories as $category) {
                        foreach ($export->fields as $key => $field) {
                            if (isset($category->{$key})) {
                                if (in_array($export->export_format, array('csv'))) {
                                    $output .= woo_ce_escape_csv_value($category->{$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($categories, $category);
            }
            $export->data_memory_end = woo_ce_current_memory_usage();
            break;
            // Tags
        // Tags
        case 'tag':
            $fields = woo_ce_get_tag_fields('summary');
            if ($export->fields = array_intersect_assoc((array) $export->fields, $fields)) {
                foreach ($export->fields as $key => $field) {
                    $export->columns[] = woo_ce_get_tag_field($key);
                }
            }
            $export->total_columns = $size = count($export->columns);
            $export->data_memory_start = woo_ce_current_memory_usage();
            $tag_args = array('orderby' => isset($export->args['tag_orderby']) ? $export->args['tag_orderby'] : 'ID', 'order' => isset($export->args['tag_order']) ? $export->args['tag_order'] : 'ASC');
            if ($tags = woo_ce_get_product_tags($tag_args)) {
                $export->total_rows = count($tags);
                // 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 ($tags as $tag) {
                        foreach ($export->fields as $key => $field) {
                            if (isset($tag->{$key})) {
                                if (in_array($export->export_format, array('csv'))) {
                                    $output .= woo_ce_escape_csv_value($tag->{$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($tags, $tag);
            }
            $export->data_memory_end = woo_ce_current_memory_usage();
            break;
            // Users
        // Users
        case 'user':
            $fields = woo_ce_get_user_fields('summary');
            if ($export->fields = array_intersect_assoc((array) $export->fields, $fields)) {
                foreach ($export->fields as $key => $field) {
                    $export->columns[] = woo_ce_get_user_field($key);
                }
            }
            $export->total_columns = $size = count($export->columns);
            $export->data_memory_start = woo_ce_current_memory_usage();
            if ($users = woo_ce_get_users($export->args)) {
                // Generate the export headers
                if (in_array($export->export_format, array('csv'))) {
                    $i = 0;
                    foreach ($export->columns as $column) {
                        if ($i == $size - 1) {
                            $output .= woo_ce_escape_csv_value($column, $export->delimiter, $export->escape_formatting) . "\n";
                        } else {
                            $output .= woo_ce_escape_csv_value($column, $export->delimiter, $export->escape_formatting) . $separator;
                        }
                        $i++;
                    }
                }
                if (!empty($export->fields)) {
                    foreach ($users as $user) {
                        $user = woo_ce_get_user_data($user, $export->args);
                        foreach ($export->fields as $key => $field) {
                            if (isset($user->{$key})) {
                                if (in_array($export->export_format, array('csv'))) {
                                    $output .= woo_ce_escape_csv_value($user->{$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($users, $user);
            }
            $export->data_memory_end = woo_ce_current_memory_usage();
            break;
    }
    // Remove our content filters here to play nice with other Plugins
    remove_filter('sanitize_key', 'woo_ce_sanitize_key');
    // Remove our fatal error notice so not to conflict with the CRON or scheduled export engine
    remove_action('shutdown', 'woo_ce_fatal_error');
    // Export completed successfully
    delete_transient(WOO_CE_PREFIX . '_running');
    // Check that the export file is populated, export columns have been assigned and rows counted
    if ($output && $export->total_rows && $export->total_columns) {
        if (in_array($export->export_format, array('csv'))) {
            $output = woo_ce_file_encoding($output);
            if ($export->export_format == 'csv' && $export->bom && WOO_CE_DEBUG == false) {
                $output = "" . $output;
            }
        }
        if (WOO_CE_DEBUG && !$export->cron) {
            $response = set_transient(WOO_CE_PREFIX . '_debug_log', base64_encode($output), woo_ce_get_option('timeout', MINUTE_IN_SECONDS));
            if ($response !== true) {
                $message = __('The export contents were too large to store in a single WordPress transient, use the Volume offset / Limit volume options to reduce the size of your export and try again.', 'woo_ce') . ' (<a href="' . $troubleshooting_url . '" target="_blank">' . __('Need help?', 'woo_ce') . '</a>)';
                if (function_exists('woo_ce_admin_notice')) {
                    woo_ce_admin_notice($message, 'error');
                } else {
                    error_log(sprintf('[store-exporter] woo_ce_export_dataset() - %s', $message));
                }
            }
        } else {
            return $output;
        }
    }
}
Beispiel #20
0
function woo_ce_extend_order_fields($fields = array())
{
    // Product Add-ons - http://www.woothemes.com/
    if (class_exists('Product_Addon_Admin') || class_exists('Product_Addon_Display')) {
        $product_addons = woo_ce_get_product_addons();
        if (!empty($product_addons)) {
            foreach ($product_addons as $product_addon) {
                if (!empty($product_addon)) {
                    $fields[] = array('name' => sprintf('order_items_product_addon_%s', $product_addon->post_name), 'label' => sprintf(__('Order Items: %s', 'woo_ce'), ucfirst($product_addon->post_title)), 'hover' => sprintf(apply_filters('woo_ce_extend_order_fields_product_addons', '%s: %s'), __('Product Add-ons', 'woo_ce'), $product_addon->form_title));
                }
            }
        }
        unset($product_addons, $product_addon);
    }
    // WooCommerce Sequential Order Numbers - http://www.skyverge.com/blog/woocommerce-sequential-order-numbers/
    // Sequential Order Numbers Pro - http://www.woothemes.com/products/sequential-order-numbers-pro/
    if (class_exists('WC_Seq_Order_Number') || class_exists('WC_Seq_Order_Number_Pro')) {
        $fields[] = array('name' => 'order_number', 'label' => __('Order Number', 'woo_ce'));
    }
    // WooCommerce Print Invoice & Delivery Note - https://wordpress.org/plugins/woocommerce-delivery-notes/
    if (class_exists('WooCommerce_Delivery_Notes')) {
        $fields[] = array('name' => 'invoice_number', 'label' => __('Invoice Number', 'woo_ce'));
        $fields[] = array('name' => 'invoice_date', 'label' => __('Invoice Date', 'woo_ce'));
    }
    // WooCommerce PDF Invoices & Packing Slips - http://www.wpovernight.com
    if (class_exists('WooCommerce_PDF_Invoices')) {
        $fields[] = array('name' => 'pdf_invoice_number', 'label' => __('PDF Invoice Number', 'woo_ce'));
        $fields[] = array('name' => 'pdf_invoice_date', 'label' => __('PDF Invoice Date', 'woo_ce'));
    }
    // WooCommerce Checkout Manager - http://wordpress.org/plugins/woocommerce-checkout-manager/
    // WooCommerce Checkout Manager Pro - http://www.trottyzone.com/product/woocommerce-checkout-manager-pro
    if (function_exists('wccs_install') || function_exists('wccs_install_pro')) {
        $options = get_option('wccs_settings');
        if (isset($options['buttons'])) {
            $buttons = $options['buttons'];
            if (!empty($buttons)) {
                $header = $buttons[0]['type'] == 'heading' ? $buttons[0]['label'] : false;
                foreach ($buttons as $button) {
                    if ($button['type'] == 'heading') {
                        continue;
                    }
                    $fields[] = array('name' => $button['label'], 'label' => !empty($header) ? sprintf(apply_filters('woo_ce_extend_order_fields_wccs', '%s: %s'), ucfirst($header), ucfirst($button['label'])) : ucfirst($button['label']));
                }
                unset($buttons, $button, $header);
            }
        }
        unset($options);
    }
    // Poor Guys Swiss Knife - http://wordpress.org/plugins/woocommerce-poor-guys-swiss-knife/
    if (function_exists('wcpgsk_init')) {
        $options = get_option('wcpgsk_settings');
        $billing_fields = isset($options['woofields']['billing']) ? $options['woofields']['billing'] : array();
        $shipping_fields = isset($options['woofields']['shipping']) ? $options['woofields']['shipping'] : array();
        // Custom billing fields
        if (!empty($billing_fields)) {
            foreach ($billing_fields as $key => $billing_field) {
                $fields[] = array('name' => $key, 'label' => $options['woofields']['label_' . $key]);
            }
            unset($billing_fields, $billing_field);
        }
        // Custom shipping fields
        if (!empty($shipping_fields)) {
            foreach ($shipping_fields as $key => $shipping_field) {
                $fields[] = array('name' => $key, 'label' => $options['woofields']['label_' . $key]);
            }
            unset($shipping_fields, $shipping_field);
        }
        unset($options);
    }
    // Checkout Field Editor - http://woothemes.com/woocommerce/
    if (function_exists('woocommerce_init_checkout_field_editor')) {
        $billing_fields = get_option('wc_fields_billing', array());
        $shipping_fields = get_option('wc_fields_shipping', array());
        $custom_fields = get_option('wc_fields_additional', array());
        // Custom billing fields
        if (!empty($billing_fields)) {
            foreach ($billing_fields as $key => $billing_field) {
                // Only add non-default Checkout fields to export columns list
                if (isset($billing_field['custom']) && $billing_field['custom'] == 1) {
                    $fields[] = array('name' => sprintf('wc_billing_%s', $key), 'label' => sprintf(__('Billing: %s', 'woo_ce'), ucfirst($billing_field['label'])));
                }
            }
        }
        unset($billing_fields, $billing_field);
        // Custom shipping fields
        if (!empty($shipping_fields)) {
            foreach ($shipping_fields as $key => $shipping_field) {
                // Only add non-default Checkout fields to export columns list
                if (isset($shipping_field['custom']) && $shipping_field['custom'] == 1) {
                    $fields[] = array('name' => sprintf('wc_shipping_%s', $key), 'label' => sprintf(__('Shipping: %s', 'woo_ce'), ucfirst($shipping_field['label'])));
                }
            }
        }
        unset($shipping_fields, $shipping_field);
        // Custom fields
        if (!empty($custom_fields)) {
            foreach ($custom_fields as $key => $custom_field) {
                // Only add non-default Checkout fields to export columns list
                if (isset($custom_field['custom']) && $custom_field['custom'] == 1) {
                    $fields[] = array('name' => sprintf('wc_additional_%s', $key), 'label' => sprintf(__('Additional: %s', 'woo_ce'), ucfirst($custom_field['label'])));
                }
            }
        }
        unset($custom_fields, $custom_field);
    }
    // Checkout Field Manager - http://61extensions.com
    if (function_exists('sod_woocommerce_checkout_manager_settings')) {
        $billing_fields = get_option('woocommerce_checkout_billing_fields', array());
        $shipping_fields = get_option('woocommerce_checkout_shipping_fields', array());
        $custom_fields = get_option('woocommerce_checkout_additional_fields', array());
        // Custom billing fields
        if (!empty($billing_fields)) {
            foreach ($billing_fields as $key => $billing_field) {
                // Only add non-default Checkout fields to export columns list
                if (strtolower($billing_field['default_field']) != 'on') {
                    $fields[] = array('name' => sprintf('sod_billing_%s', $billing_field['name']), 'label' => sprintf(__('Billing: %s', 'woo_ce'), ucfirst($billing_field['label'])));
                }
            }
        }
        unset($billing_fields, $billing_field);
        // Custom shipping fields
        if (!empty($shipping_fields)) {
            foreach ($shipping_fields as $key => $shipping_field) {
                // Only add non-default Checkout fields to export columns list
                if (strtolower($shipping_field['default_field']) != 'on') {
                    $fields[] = array('name' => sprintf('sod_shipping_%s', $shipping_field['name']), 'label' => sprintf(__('Shipping: %s', 'woo_ce'), ucfirst($shipping_field['label'])));
                }
            }
        }
        unset($shipping_fields, $shipping_field);
        // Custom fields
        if (!empty($custom_fields)) {
            foreach ($custom_fields as $key => $custom_field) {
                // Only add non-default Checkout fields to export columns list
                if (strtolower($custom_field['default_field']) != 'on') {
                    $fields[] = array('name' => sprintf('sod_additional_%s', $custom_field['name']), 'label' => sprintf(__('Additional: %s', 'woo_ce'), ucfirst($custom_field['label'])));
                }
            }
        }
        unset($custom_fields, $custom_field);
    }
    // WooCommerce Checkout Add-Ons - http://www.skyverge.com/product/woocommerce-checkout-add-ons/
    if (function_exists('init_woocommerce_checkout_add_ons')) {
        $fields[] = array('name' => 'order_items_checkout_addon_id', 'label' => __('Order Items: Checkout Add-ons ID', 'woo_ce'));
        $fields[] = array('name' => 'order_items_checkout_addon_label', 'label' => __('Order Items: Checkout Add-ons Label', 'woo_ce'));
        $fields[] = array('name' => 'order_items_checkout_addon_value', 'label' => __('Order Items: Checkout Add-ons Value', 'woo_ce'));
    }
    // WooCommerce Brands Addon - http://woothemes.com/woocommerce/
    // WooCommerce Brands - http://proword.net/Woocommerce_Brands/
    if (class_exists('WC_Brands') || class_exists('woo_brands') || taxonomy_exists(apply_filters('woo_ce_brand_term_taxonomy', 'product_brand'))) {
        $fields[] = array('name' => 'order_items_brand', 'label' => __('Order Items: Brand', 'woo_ce'));
    }
    // Product Vendors - http://www.woothemes.com/products/product-vendors/
    if (class_exists('WooCommerce_Product_Vendors')) {
        $fields[] = array('name' => 'order_items_vendor', 'label' => __('Order Items: Product Vendor', 'woo_ce'));
    }
    // Cost of Goods - http://www.skyverge.com/product/woocommerce-cost-of-goods-tracking/
    if (class_exists('WC_COG')) {
        $fields[] = array('name' => 'cost_of_goods', 'label' => __('Order Total Cost of Goods', 'woo_ce'));
        $fields[] = array('name' => 'order_items_cost_of_goods', 'label' => __('Order Items: Cost of Goods', 'woo_ce'));
        $fields[] = array('name' => 'order_items_total_cost_of_goods', 'label' => __('Order Items: Total Cost of Goods', 'woo_ce'));
    }
    // WooCommerce MSRP Pricing - http://woothemes.com/woocommerce/
    if (function_exists('woocommerce_msrp_activate')) {
        $fields[] = array('name' => 'order_items_msrp', 'label' => __('Order Items: MSRP', 'woo_ce'));
    }
    // Local Pickup Plus - http://www.woothemes.com/products/local-pickup-plus/
    if (class_exists('WC_Local_Pickup_Plus')) {
        $fields[] = array('name' => 'order_items_pickup_location', 'label' => __('Order Items: Pickup Location', 'woo_ce'));
    }
    // WooCommerce Bookings - http://www.woothemes.com/products/woocommerce-bookings/
    if (class_exists('WC_Bookings')) {
        $fields[] = array('name' => 'order_items_booking_id', 'label' => __('Order Items: Booking ID', 'woo_ce'), 'hover' => __('WooCommerce Bookings', 'woo_ce'));
        $fields[] = array('name' => 'order_items_booking_date', 'label' => __('Order Items: Booking Date', 'woo_ce'), 'hover' => __('WooCommerce Bookings', 'woo_ce'));
        $fields[] = array('name' => 'order_items_booking_start_date', 'label' => __('Order Items: Start Date', 'woo_ce'), 'hover' => __('WooCommerce Bookings', 'woo_ce'));
        $fields[] = array('name' => 'order_items_booking_end_date', 'label' => __('Order Items: End Date', 'woo_ce'), 'hover' => __('WooCommerce Bookings', 'woo_ce'));
    }
    // Gravity Forms - http://woothemes.com/woocommerce
    if (class_exists('RGForms') && class_exists('woocommerce_gravityforms')) {
        // Check if there are any Products linked to Gravity Forms
        if ($gf_fields = woo_ce_get_gravity_form_fields()) {
            $fields[] = array('name' => 'order_items_gf_form_id', 'label' => __('Order Items: Gravity Form ID', 'woo_ce'));
            $fields[] = array('name' => 'order_items_gf_form_label', 'label' => __('Order Items: Gravity Form Label', 'woo_ce'));
            foreach ($gf_fields as $gf_field) {
                $gf_field_duplicate = false;
                // Check if this isn't a duplicate Gravity Forms field
                foreach ($fields as $field) {
                    if (isset($field['name']) && $field['name'] == sprintf('order_items_gf_%d_%s', $gf_field['formId'], $gf_field['id'])) {
                        // Duplicate exists
                        $gf_field_duplicate = true;
                        break;
                    }
                }
                // If it's not a duplicate go ahead and add it to the list
                if ($gf_field_duplicate !== true) {
                    $fields[] = array('name' => sprintf('order_items_gf_%d_%s', $gf_field['formId'], $gf_field['id']), 'label' => sprintf(apply_filters('woo_ce_extend_order_fields_gf_label', __('Order Items: %s - %s', 'woo_ce')), ucwords(strtolower($gf_field['formTitle'])), ucfirst(strtolower($gf_field['label']))), 'hover' => sprintf(apply_filters('woo_ce_extend_order_fields_gf_hover', '%s: %s (ID: %d)'), __('Gravity Forms', 'woo_ce'), ucwords(strtolower($gf_field['formTitle'])), $gf_field['formId']));
                }
            }
            unset($gf_fields, $gf_field);
        }
    }
    // WooCommerce Currency Switcher - http://dev.pathtoenlightenment.net/shop
    if (class_exists('WC_Aelia_CurrencySwitcher')) {
        $fields[] = array('name' => 'order_currency', 'label' => __('Order Currency', 'woo_ce'));
    }
    // WooCommerce TM Extra Product Options - http://codecanyon.net/item/woocommerce-extra-product-options/7908619
    if (class_exists('TM_Extra_Product_Options')) {
        if ($tm_fields = woo_ce_get_extra_product_option_fields()) {
            foreach ($tm_fields as $tm_field) {
                $fields[] = array('name' => sprintf('order_items_tm_%s', sanitize_key($tm_field['name'])), 'label' => sprintf(__('Order Items: %s', 'woo_ce'), $tm_field['name']));
            }
            unset($tm_fields, $tm_field);
        }
    }
    // WooCommerce Ship to Multiple Addresses - http://woothemes.com/woocommerce
    if (class_exists('WC_Ship_Multiple')) {
        $fields[] = array('name' => 'wcms_number_packages', 'label' => __('Number of Packages', 'woo_ce'), 'hover' => __('Ship to Multiple Addresses', 'woo_ce'));
    }
    // Attributes
    if ($attributes = woo_ce_get_product_attributes()) {
        foreach ($attributes as $attribute) {
            $attribute->attribute_label = trim($attribute->attribute_label);
            if (empty($attribute->attribute_label)) {
                $attribute->attribute_label = $attribute->attribute_name;
            }
            $fields[] = array('name' => sprintf('order_items_attribute_%s', $attribute->attribute_name), 'label' => sprintf(__('Order Items: %s', 'woo_ce'), ucwords($attribute->attribute_label)), 'hover' => sprintf(apply_filters('woo_ce_extend_order_fields_attribute', '%s: %s (#%d)'), __('Attribute', 'woo_ce'), $attribute->attribute_name, $attribute->attribute_id));
        }
        unset($attributes, $attribute);
    }
    // Custom Order fields
    $custom_orders = woo_ce_get_option('custom_orders', '');
    if (!empty($custom_orders)) {
        foreach ($custom_orders as $custom_order) {
            if (!empty($custom_order)) {
                $fields[] = array('name' => $custom_order, 'label' => woo_ce_clean_export_label($custom_order), 'hover' => sprintf(apply_filters('woo_ce_extend_order_fields_custom_order_hover', '%s: %s'), __('Custom Order', 'woo_ce'), $custom_order));
            }
        }
        unset($custom_orders, $custom_order);
    }
    // Custom Order Items fields
    $custom_order_items = woo_ce_get_option('custom_order_items', '');
    if (!empty($custom_order_items)) {
        foreach ($custom_order_items as $custom_order_item) {
            if (!empty($custom_order_item)) {
                $fields[] = array('name' => sprintf('order_items_%s', $custom_order_item), 'label' => sprintf(__('Order Items: %s', 'woo_ce'), woo_ce_clean_export_label($custom_order_item)), 'hover' => sprintf(apply_filters('woo_ce_extend_order_fields_custom_order_item_hover', '%s: %s'), __('Custom Order Item', 'woo_ce'), $custom_order_item));
            }
        }
    }
    // Custom Product fields
    $custom_product_fields = woo_ce_get_option('custom_products', '');
    if (!empty($custom_product_fields)) {
        foreach ($custom_product_fields as $custom_product_field) {
            if (!empty($custom_product_field)) {
                $fields[] = array('name' => sprintf('order_items_%s', $custom_product_field), 'label' => sprintf(__('Order Items: %s', 'woo_ce'), woo_ce_clean_export_label($custom_product_field)), 'hover' => sprintf(apply_filters('woo_ce_extend_order_fields_custom_product_hover', '%s: %s'), __('Custom Product', 'woo_ce'), $custom_product_field));
            }
        }
    }
    return $fields;
}
function woo_ce_init() {

	// Check that Store Exporter Deluxe is installed and activated or jump out
	if( !function_exists( 'woo_ce_get_option' ) )
		return;

	// Check if scheduled exports is enabled
	if( woo_ce_get_option( 'enable_auto', 0 ) == 1 ) {

		// Add custom schedule for automated exports
		add_filter( 'cron_schedules', 'woo_ce_cron_schedules' );

		woo_ce_cron_activation();

	}

	// Check if trigger export on New Order is enabled
	if( woo_ce_get_option( 'enable_trigger_new_order', 0 ) == 1 ) {

		// There are other WordPress Actions (woocommerce_new_order, woocommerce_api_create_order) we can hook into but woocommerce_checkout_update_order_meta is the only one where we can access the Order Items
		add_action( 'woocommerce_checkout_update_order_meta', 'woo_ce_trigger_new_order_export', 10, 1 );

	}

	// Once every x minutes WP-CRON will run the automated export
	add_action( 'woo_ce_auto_export_schedule', 'woo_ce_auto_export' );

}
Beispiel #22
0
function woo_ce_tab_template($tab = '')
{
    if (!$tab) {
        $tab = 'overview';
    }
    // Store Exporter Deluxe
    $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);
    $troubleshooting_url = 'http://www.visser.com.au/documentation/store-exporter-deluxe/';
    switch ($tab) {
        case 'overview':
            $skip_overview = woo_ce_get_option('skip_overview', false);
            break;
        case 'export':
            $export_type = sanitize_text_field(isset($_POST['dataset']) ? $_POST['dataset'] : woo_ce_get_option('last_export', 'product'));
            $types = array_keys(woo_ce_return_export_types());
            // Check if the default export type exists
            if (!in_array($export_type, $types)) {
                $export_type = 'product';
            }
            $products = woo_ce_return_count('product');
            $categories = woo_ce_return_count('category');
            $tags = woo_ce_return_count('tag');
            $brands = '999';
            $orders = '999';
            $customers = '999';
            $users = woo_ce_return_count('user');
            $coupons = '999';
            $attributes = '999';
            $subscriptions = '999';
            $product_vendors = '999';
            $commissions = '999';
            $shipping_classes = '999';
            add_action('woo_ce_export_options', 'woo_ce_export_options_export_format');
            if ($product_fields = woo_ce_get_product_fields()) {
                foreach ($product_fields as $key => $product_field) {
                    $product_fields[$key]['disabled'] = isset($product_field['disabled']) ? $product_field['disabled'] : 0;
                }
                add_action('woo_ce_export_product_options_before_table', 'woo_ce_products_filter_by_product_category');
                add_action('woo_ce_export_product_options_before_table', 'woo_ce_products_filter_by_product_tag');
                add_action('woo_ce_export_product_options_before_table', 'woo_ce_products_filter_by_product_brand');
                add_action('woo_ce_export_product_options_before_table', 'woo_ce_products_filter_by_product_vendor');
                add_action('woo_ce_export_product_options_before_table', 'woo_ce_products_filter_by_product_status');
                add_action('woo_ce_export_product_options_before_table', 'woo_ce_products_filter_by_product_type');
                add_action('woo_ce_export_product_options_before_table', 'woo_ce_products_filter_by_stock_status');
                add_action('woo_ce_export_product_options_after_table', 'woo_ce_product_sorting');
                add_action('woo_ce_export_options', 'woo_ce_products_upsells_formatting');
                add_action('woo_ce_export_options', 'woo_ce_products_crosssells_formatting');
                add_action('woo_ce_export_options', 'woo_ce_export_options_gallery_format');
                add_action('woo_ce_export_after_form', 'woo_ce_products_custom_fields');
            }
            if ($category_fields = woo_ce_get_category_fields()) {
                foreach ($category_fields as $key => $category_field) {
                    $category_fields[$key]['disabled'] = isset($category_field['disabled']) ? $category_field['disabled'] : 0;
                }
                add_action('woo_ce_export_category_options_after_table', 'woo_ce_category_sorting');
            }
            if ($tag_fields = woo_ce_get_tag_fields()) {
                foreach ($tag_fields as $key => $tag_field) {
                    $tag_fields[$key]['disabled'] = isset($tag_field['disabled']) ? $tag_field['disabled'] : 0;
                }
                add_action('woo_ce_export_tag_options_after_table', 'woo_ce_tag_sorting');
            }
            if ($brand_fields = woo_ce_get_brand_fields()) {
                foreach ($brand_fields as $key => $brand_field) {
                    $brand_fields[$key]['disabled'] = isset($brand_field['disabled']) ? $brand_field['disabled'] : 0;
                }
                add_action('woo_ce_export_brand_options_before_table', 'woo_ce_brand_sorting');
            }
            if ($order_fields = woo_ce_get_order_fields()) {
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_date');
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_status');
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_customer');
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_billing_country');
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_shipping_country');
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_user_role');
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_coupon');
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_product');
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_product_category');
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_product_tag');
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_product_brand');
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_order_id');
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_payment_gateway');
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_shipping_method');
                add_action('woo_ce_export_order_options_after_table', 'woo_ce_order_sorting');
                add_action('woo_ce_export_options', 'woo_ce_orders_items_formatting');
                add_action('woo_ce_export_options', 'woo_ce_orders_max_order_items');
                add_action('woo_ce_export_options', 'woo_ce_orders_items_types');
                add_action('woo_ce_export_after_form', 'woo_ce_orders_custom_fields');
            }
            if ($customer_fields = woo_ce_get_customer_fields()) {
                add_action('woo_ce_export_customer_options_before_table', 'woo_ce_customers_filter_by_status');
                add_action('woo_ce_export_customer_options_before_table', 'woo_ce_customers_filter_by_user_role');
                add_action('woo_ce_export_after_form', 'woo_ce_customers_custom_fields');
            }
            if ($user_fields = woo_ce_get_user_fields()) {
                foreach ($user_fields as $key => $user_field) {
                    $user_fields[$key]['disabled'] = isset($user_field['disabled']) ? $user_field['disabled'] : 0;
                }
                add_action('woo_ce_export_user_options_after_table', 'woo_ce_user_sorting');
                add_action('woo_ce_export_after_form', 'woo_ce_users_custom_fields');
            }
            if ($coupon_fields = woo_ce_get_coupon_fields()) {
                add_action('woo_ce_export_coupon_options_before_table', 'woo_ce_coupon_sorting');
            }
            if ($subscription_fields = woo_ce_get_subscription_fields()) {
                add_action('woo_ce_export_subscription_options_before_table', 'woo_ce_subscriptions_filter_by_subscription_status');
                add_action('woo_ce_export_subscription_options_before_table', 'woo_ce_subscriptions_filter_by_subscription_product');
            }
            $product_vendor_fields = woo_ce_get_product_vendor_fields();
            if ($commission_fields = woo_ce_get_commission_fields()) {
                add_action('woo_ce_export_commission_options_before_table', 'woo_ce_commissions_filter_by_date');
                add_action('woo_ce_export_commission_options_before_table', 'woo_ce_commissions_filter_by_product_vendor');
                add_action('woo_ce_export_commission_options_before_table', 'woo_ce_commissions_filter_by_commission_status');
                add_action('woo_ce_export_commission_options_before_table', 'woo_ce_commission_sorting');
            }
            if ($shipping_class_fields = woo_ce_get_shipping_class_fields()) {
                add_action('woo_ce_export_shipping_class_options_after_table', 'woo_ce_shipping_class_sorting');
            }
            $attribute_fields = false;
            // Export modules
            $modules = woo_ce_modules_list();
            // Export options
            $limit_volume = woo_ce_get_option('limit_volume');
            $offset = woo_ce_get_option('offset');
            break;
        case 'fields':
            $export_type = isset($_GET['type']) ? sanitize_text_field($_GET['type']) : '';
            $types = array_keys(woo_ce_return_export_types());
            $fields = array();
            if (in_array($export_type, $types)) {
                if (has_filter('woo_ce_' . $export_type . '_fields', 'woo_ce_override_' . $export_type . '_field_labels')) {
                    remove_filter('woo_ce_' . $export_type . '_fields', 'woo_ce_override_' . $export_type . '_field_labels', 11);
                }
                if (function_exists(sprintf('woo_ce_get_%s_fields', $export_type))) {
                    $fields = call_user_func('woo_ce_get_' . $export_type . '_fields');
                }
                $labels = woo_ce_get_option($export_type . '_labels', array());
            }
            break;
        case 'archive':
            if (isset($_GET['deleted'])) {
                $message = __('Archived export has been deleted.', 'woo_ce');
                woo_ce_admin_notice($message);
            }
            if ($files = woo_ce_get_archive_files()) {
                foreach ($files as $key => $file) {
                    $files[$key] = woo_ce_get_archive_file($file);
                }
            }
            break;
        case 'settings':
            $export_filename = woo_ce_get_option('export_filename', '');
            // Default export filename
            if (empty($export_filename)) {
                $export_filename = 'woo-export_%dataset%-%date%.csv';
            }
            $delete_file = woo_ce_get_option('delete_file', 0);
            $timeout = woo_ce_get_option('timeout', 0);
            $encoding = woo_ce_get_option('encoding', 'UTF-8');
            $bom = woo_ce_get_option('bom', 1);
            $delimiter = woo_ce_get_option('delimiter', ',');
            $category_separator = woo_ce_get_option('category_separator', '|');
            $escape_formatting = woo_ce_get_option('escape_formatting', 'all');
            $date_format = woo_ce_get_option('date_format', 'd/m/Y');
            if ($date_format == 1 || $date_format == '') {
                $date_format = 'd/m/Y';
            }
            $file_encodings = function_exists('mb_list_encodings') ? mb_list_encodings() : false;
            add_action('woo_ce_export_settings_top', 'woo_ce_export_settings_quicklinks');
            add_action('woo_ce_export_settings_after', 'woo_ce_export_settings_csv');
            add_action('woo_ce_export_settings_after', 'woo_ce_export_settings_cron');
            break;
        case 'tools':
            // Product Importer Deluxe
            $woo_pd_url = 'http://www.visser.com.au/woocommerce/plugins/product-importer-deluxe/';
            $woo_pd_target = ' target="_blank"';
            if (function_exists('woo_pd_init')) {
                $woo_pd_url = add_query_arg(array('page' => 'woo_pd', 'tab' => null));
                $woo_pd_target = false;
            }
            // Store Toolkit
            $woo_st_url = 'http://www.visser.com.au/woocommerce/plugins/store-toolkit/';
            $woo_st_target = ' target="_blank"';
            if (function_exists('woo_st_admin_init')) {
                $woo_st_url = add_query_arg(array('page' => 'woo_st', 'tab' => null));
                $woo_st_target = false;
            }
            break;
    }
    if ($tab) {
        if (file_exists(WOO_CE_PATH . 'templates/admin/tabs-' . $tab . '.php')) {
            include_once WOO_CE_PATH . 'templates/admin/tabs-' . $tab . '.php';
        } else {
            $message = sprintf(__('We couldn\'t load the export template file <code>%s</code> within <code>%s</code>, this file should be present.', 'woo_ce'), 'tabs-' . $tab . '.php', WOO_CE_PATH . 'templates/admin/...');
            woo_ce_admin_notice_html($message, 'error');
            ob_start();
            ?>
<p><?php 
            _e('You can see this error for one of a few common reasons', 'woo_ce');
            ?>
:</p>
<ul class="ul-disc">
	<li><?php 
            _e('WordPress was unable to create this file when the Plugin was installed or updated', 'woo_ce');
            ?>
</li>
	<li><?php 
            _e('The Plugin files have been recently changed and there has been a file conflict', 'woo_ce');
            ?>
</li>
	<li><?php 
            _e('The Plugin file has been locked and cannot be opened by WordPress', 'woo_ce');
            ?>
</li>
</ul>
<p><?php 
            _e('Jump onto our website and download a fresh copy of this Plugin as it might be enough to fix this issue. If this persists get in touch with us.', 'woo_ce');
            ?>
</p>
<?php 
            ob_end_flush();
        }
    }
}
Beispiel #23
0
 function woo_ce_manage_form()
 {
     $tab = isset($_GET['tab']) ? sanitize_text_field($_GET['tab']) : false;
     // If Skip Overview is set then jump to Export screen
     if ($tab == false && woo_ce_get_option('skip_overview', false)) {
         $tab = 'export';
     }
     woo_ce_fail_notices();
     include_once WOO_CE_PATH . 'templates/admin/tabs.php';
 }
function woo_ce_subscription_extend( $subscription ) {

	// WooCommerce User Profile fields
	if( class_exists( 'WC_Admin_Profile' ) ) {
		$admin_profile = new WC_Admin_Profile();
		if( $show_fields = $admin_profile->get_customer_meta_fields() ) {
			foreach( $show_fields as $fieldset ) {
				foreach( $fieldset['fields'] as $key => $field )
					$subscription->{$key} = esc_attr( get_user_meta( $subscription->user_id, $key, true ) );
			}
		}
		unset( $show_fields, $fieldset, $field );
	}

	// Custom Order fields
	$custom_orders = woo_ce_get_option( 'custom_orders', '' );
	if( !empty( $custom_orders ) ) {
		foreach( $custom_orders as $custom_order ) {
			if( !empty( $custom_order ) && !isset( $subscription->{$custom_order} ) )
				$subscription->{$custom_order} = esc_attr( get_post_meta( $subscription->order_id, $custom_order, true ) );
		}
	}

	// Custom User fields
	$custom_users = woo_ce_get_option( 'custom_users', '' );
	if( !empty( $custom_users ) ) {
		foreach( $custom_users as $custom_user ) {
			if( !empty( $custom_user ) && !isset( $subscription->{$custom_user} ) ) {
				$subscription->{$custom_user} = woo_ce_format_custom_meta( get_user_meta( $subscription->user_id, $custom_user, true ) );
			}
		}
	}
	unset( $custom_users, $custom_user );

	return $subscription;

}
Beispiel #25
0
 function woo_ce_admin_init()
 {
     global $woo_ce, $export, $wp_roles;
     include_once 'includes/formatting.php';
     $action = woo_get_action();
     switch ($action) {
         case 'dismiss_memory_prompt':
             woo_ce_update_option('dismiss_memory_prompt', 1);
             $url = add_query_arg('action', null);
             wp_redirect($url);
             break;
         case 'export':
             $export = new stdClass();
             $export->delimiter = $_POST['delimiter'];
             if ($export->delimiter != woo_ce_get_option('delimiter')) {
                 woo_ce_update_option('delimiter', $export->delimiter);
             }
             $export->category_separator = $_POST['category_separator'];
             if ($export->category_separator != woo_ce_get_option('category_separator')) {
                 woo_ce_update_option('category_separator', $export->category_separator);
             }
             $export->bom = $_POST['bom'];
             if ($export->bom != woo_ce_get_option('bom')) {
                 woo_ce_update_option('bom', $export->bom);
             }
             $export->escape_formatting = $_POST['escape_formatting'];
             if ($export->escape_formatting != woo_ce_get_option('escape_formatting')) {
                 woo_ce_update_option('escape_formatting', $export->escape_formatting);
             }
             $export->limit_volume = -1;
             if (!empty($_POST['limit_volume'])) {
                 $export->limit_volume = $_POST['limit_volume'];
                 if ($export->limit_volume != woo_ce_get_option('limit_volume')) {
                     woo_ce_update_option('limit_volume', $export->limit_volume);
                 }
             }
             $export->offset = 0;
             if (!empty($_POST['offset'])) {
                 $export->offset = (int) $_POST['offset'];
                 if ($export->offset != woo_ce_get_option('offset')) {
                     woo_ce_update_option('offset', $export->offset);
                 }
             }
             $export->delete_temporary_csv = 0;
             if (!empty($_POST['delete_temporary_csv'])) {
                 $export->delete_temporary_csv = (int) $_POST['delete_temporary_csv'];
                 if ($export->limit_volume != woo_ce_get_option('delete_csv')) {
                     woo_ce_update_option('delete_csv', $export->delete_temporary_csv);
                 }
             }
             $export->encoding = $_POST['encoding'];
             $export->order_dates_filter = false;
             $export->order_dates_from = '';
             $export->order_dates_to = '';
             $export->order_status = false;
             $export->fields = false;
             $export->product_categories = false;
             $export->product_tags = false;
             $export->product_status = false;
             $export->product_type = false;
             $export->order_customer = false;
             $export->order_items = 'combined';
             $dataset = array();
             $export->type = $_POST['dataset'];
             switch ($export->type) {
                 case 'products':
                     $dataset[] = 'products';
                     $export->fields = isset($_POST['product_fields']) ? $_POST['product_fields'] : false;
                     $export->product_categories = isset($_POST['product_filter_categories']) ? woo_ce_format_product_filters($_POST['product_filter_categories']) : false;
                     $export->product_tags = isset($_POST['product_filter_tags']) ? woo_ce_format_product_filters($_POST['product_filter_tags']) : false;
                     $export->product_status = isset($_POST['product_filter_status']) ? woo_ce_format_product_filters($_POST['product_filter_status']) : false;
                     $export->product_type = isset($_POST['product_filter_type']) ? woo_ce_format_product_filters($_POST['product_filter_type']) : false;
                     break;
                 case 'categories':
                     $dataset[] = 'categories';
                     break;
                 case 'tags':
                     $dataset[] = 'tags';
                     break;
                 case 'orders':
                     $dataset[] = 'orders';
                     $export->fields = isset($_POST['order_fields']) ? $_POST['order_fields'] : false;
                     $export->order_status = isset($_POST['order_filter_status']) ? woo_ce_format_product_filters($_POST['order_filter_status']) : false;
                     $export->order_dates_filter = isset($_POST['order_dates_filter']) ? $_POST['order_dates_filter'] : false;
                     $export->order_dates_from = $_POST['order_dates_from'];
                     $export->order_dates_to = $_POST['order_dates_to'];
                     $export->order_customer = isset($_POST['order_customer']) ? $_POST['order_customer'] : false;
                     if (isset($_POST['order_items'])) {
                         $export->order_items = $_POST['order_items'];
                         if ($export->order_items != woo_ce_get_option('order_items_formatting')) {
                             woo_ce_update_option('order_items_formatting', $export->order_items);
                         }
                     }
                     if (isset($_POST['max_order_items'])) {
                         $export->max_order_items = (int) $_POST['max_order_items'];
                         if ($export->max_order_items != woo_ce_get_option('max_order_items')) {
                             woo_ce_update_option('max_order_items', $export->max_order_items);
                         }
                     }
                     break;
                 case 'customers':
                     $dataset[] = 'customers';
                     $export->fields = $_POST['customer_fields'];
                     break;
                 case 'coupons':
                     $dataset[] = 'coupons';
                     $export->fields = $_POST['coupon_fields'];
                     break;
             }
             if ($dataset) {
                 $timeout = 600;
                 if (isset($_POST['timeout'])) {
                     $timeout = (int) $_POST['timeout'];
                     if ($timeout != woo_ce_get_option('timeout')) {
                         woo_ce_update_option('timeout', $timeout);
                     }
                 }
                 if (!ini_get('safe_mode')) {
                     @set_time_limit($timeout);
                 }
                 @ini_set('memory_limit', WP_MAX_MEMORY_LIMIT);
                 @ini_set('max_execution_time', (int) $timeout);
                 $args = array('limit_volume' => $export->limit_volume, 'offset' => $export->offset, 'encoding' => $export->encoding, 'product_categories' => $export->product_categories, 'product_tags' => $export->product_tags, 'product_status' => $export->product_status, 'product_type' => $export->product_type, 'order_status' => $export->order_status, 'order_dates_filter' => $export->order_dates_filter, 'order_dates_from' => woo_ce_format_order_date($export->order_dates_from), 'order_dates_to' => woo_ce_format_order_date($export->order_dates_to), 'order_customer' => $export->order_customer, 'order_items' => $export->order_items);
                 woo_ce_save_fields($dataset, $export->fields);
                 $export->filename = woo_ce_generate_csv_filename($export->type);
                 if (isset($woo_ce['debug']) && $woo_ce['debug']) {
                     woo_ce_export_dataset($dataset, $args);
                 } else {
                     /* Generate CSV contents */
                     $bits = woo_ce_export_dataset($dataset, $args);
                     if (!$bits) {
                         wp_redirect(add_query_arg('empty', true));
                         exit;
                     }
                     if (isset($export->delete_temporary_csv) && $export->delete_temporary_csv) {
                         /* Print to browser */
                         woo_ce_generate_csv_header($export->type);
                         echo $bits;
                         exit;
                     } else {
                         /* Save to file and insert to WordPress Media */
                         if ($export->filename && $bits) {
                             $post_ID = woo_ce_save_csv_file_attachment($export->filename);
                             $upload = wp_upload_bits($export->filename, null, $bits);
                             $attach_data = wp_generate_attachment_metadata($post_ID, $upload['file']);
                             wp_update_attachment_metadata($post_ID, $attach_data);
                             if ($post_ID) {
                                 woo_ce_save_csv_file_guid($post_ID, $export->type, $upload['url']);
                             }
                             woo_ce_generate_csv_header($export->type);
                             readfile($upload['file']);
                         } else {
                             wp_redirect(add_query_arg('failed', true));
                         }
                         exit;
                     }
                 }
             }
             break;
         default:
             add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_date');
             add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_status');
             add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_customer');
             break;
     }
 }
Beispiel #26
0
function woo_ce_recent_scheduled_export_widget() {

	$recent_exports = woo_ce_get_option( 'recent_scheduled_exports', array() );
	if( empty( $recent_exports ) )
		$recent_exports = array();
	$size = count( $recent_exports );
	$recent_exports = array_reverse( $recent_exports );

	// Get widget options
	if( !$widget_options = get_option( 'woo_ce_recent_scheduled_export_widget_options', array() ) ) {
		$widget_options = array(
			'number' => 5
		);
	}
	// Check if we need to limit the number of recent exports
	if( $size > $widget_options['number'] ) {
		$i = $size;
		// Loop through the recent exports till we get it down to our limit
		for( $i; $i >= $widget_options['number']; $i-- ) {
			unset( $recent_exports[$i] );
		}
		// Save the changes so we don't have to do this next screen refresh
		woo_ce_update_option( 'recent_scheduled_exports', $recent_exports );
	}

	if( file_exists( WOO_CD_PATH . 'templates/admin/dashboard_widget-recent_scheduled_export.php' ) ) {
		include_once( WOO_CD_PATH . 'templates/admin/dashboard_widget-recent_scheduled_export.php' );
	} else {
		$message = sprintf( __( 'We couldn\'t load the widget template file <code>%s</code> within <code>%s</code>, this file should be present.', 'woo_ce' ), 'dashboard_widget-recent_scheduled_export.php', WOO_CD_PATH . 'templates/admin/...' );

		ob_start(); ?>
<p><strong><?php echo $message; ?></strong></p>
<p><?php _e( 'You can see this error for one of a few common reasons', 'woo_ce' ); ?>:</p>
<ul class="ul-disc">
	<li><?php _e( 'WordPress was unable to create this file when the Plugin was installed or updated', 'woo_ce' ); ?></li>
	<li><?php _e( 'The Plugin files have been recently changed and there has been a file conflict', 'woo_ce' ); ?></li>
	<li><?php _e( 'The Plugin file has been locked and cannot be opened by WordPress', 'woo_ce' ); ?></li>
</ul>
<p><?php _e( 'Jump onto our website and download a fresh copy of this Plugin as it might be enough to fix this issue. If this persists get in touch with us.', 'woo_ce' ); ?></p>
<?php
		ob_end_flush();
	}

}
Beispiel #27
0
function woo_ce_format_date($date = '')
{
    $output = '';
    if ($date) {
        $output = mysql2date(woo_ce_get_option('date_format', 'd/m/Y'), $date);
    }
    return $output;
}
function woo_ce_override_shipping_class_field_labels( $fields = array() ) {

	$labels = woo_ce_get_option( 'shipping_class_labels', array() );
	if( !empty( $labels ) ) {
		foreach( $fields as $key => $field ) {
			if( isset( $labels[$field['name']] ) )
				$fields[$key]['label'] = $labels[$field['name']];
		}
	}
	return $fields;

}
function woo_ce_get_line_ending() {

	$output = "\n";
	$line_ending_formatting = woo_ce_get_option( 'line_ending_formatting', 'windows' );
	if( $line_ending_formatting == false || $line_ending_formatting == '' ) {
		error_log( '[store-exporter-deluxe] Line ending formatting export option was corrupted, defaulted to windows' );
		$line_ending_formatting = 'windows';
		woo_ce_update_option( 'line_ending_formatting', 'windows' );
	}
	switch( $line_ending_formatting ) {

		case 'windows':
			$output = "\n";
			break;

		case 'mac':
			$output = "\r";
			break;

		case 'unix':
			$output = "\n";
			break;

	}
	return $output;

}
function woo_ce_get_customer_fields($format = 'full')
{
    $fields = array();
    $fields[] = array('name' => 'user_id', 'label' => __('User ID', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'user_name', 'label' => __('Username', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'user_role', 'label' => __('User Role', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'billing_full_name', 'label' => __('Billing: Full Name', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'billing_first_name', 'label' => __('Billing: First Name', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'billing_last_name', 'label' => __('Billing: Last Name', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'billing_company', 'label' => __('Billing: Company', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'billing_address', 'label' => __('Billing: Street Address', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'billing_city', 'label' => __('Billing: City', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'billing_postcode', 'label' => __('Billing: ZIP Code', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'billing_state', 'label' => __('Billing: State (prefix)', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'billing_state_full', 'label' => __('Billing: State', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'billing_country', 'label' => __('Billing: Country', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'billing_phone', 'label' => __('Billing: Phone Number', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'billing_email', 'label' => __('Billing: E-mail Address', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'shipping_full_name', 'label' => __('Shipping: Full Name', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'shipping_first_name', 'label' => __('Shipping: First Name', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'shipping_last_name', 'label' => __('Shipping: Last Name', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'shipping_company', 'label' => __('Shipping: Company', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'shipping_address', 'label' => __('Shipping: Street Address', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'shipping_city', 'label' => __('Shipping: City', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'shipping_postcode', 'label' => __('Shipping: ZIP Code', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'shipping_state', 'label' => __('Shipping: State (prefix)', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'shipping_state_full', 'label' => __('Shipping: State', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'shipping_country', 'label' => __('Shipping: Country (prefix)', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'shipping_country_full', 'label' => __('Shipping: Country', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'total_spent', 'label' => __('Total Spent', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'completed_orders', 'label' => __('Completed Orders', 'woo_ce'), 'default' => 1);
    $fields[] = array('name' => 'total_orders', 'label' => __('Total Orders', 'woo_ce'), 'default' => 1);
    /*
    	$fields[] = array(
    		'name' => '',
    		'label' => __( '', 'woo_ce' ),
    		'default' => 1
    	);
    */
    // Allow Plugin/Theme authors to add support for additional Customer columns
    $fields = apply_filters('woo_ce_customer_fields', $fields);
    if ($remember = woo_ce_get_option('customers_fields')) {
        $remember = maybe_unserialize($remember);
        $size = count($fields);
        for ($i = 0; $i < $size; $i++) {
            if (!array_key_exists($fields[$i]['name'], $remember)) {
                $fields[$i]['default'] = 0;
            }
        }
    }
    switch ($format) {
        case 'summary':
            $output = array();
            $size = count($fields);
            for ($i = 0; $i < $size; $i++) {
                $output[$fields[$i]['name']] = 'on';
            }
            return $output;
            break;
        case 'full':
        default:
            return $fields;
            break;
    }
}