This commit is contained in:
Mike Jolley 2017-12-07 12:31:30 +00:00
parent cadfcfc11f
commit 91887b918f
2 changed files with 35 additions and 31 deletions

View File

@ -115,11 +115,11 @@ class WC_Admin_Exporters {
$exporter = new WC_Product_CSV_Exporter();
if ( ! empty( $_POST['columns'] ) ) {
$exporter->set_column_names( $_POST['columns'] );
$exporter->set_column_names( wp_unslash( $_POST['columns'] ) );
}
if ( ! empty( $_POST['selected_columns'] ) ) {
$exporter->set_columns_to_export( $_POST['selected_columns'] );
$exporter->set_columns_to_export( wp_unslash( $_POST['selected_columns'] ) );
}
if ( ! empty( $_POST['export_meta'] ) ) {
@ -127,7 +127,7 @@ class WC_Admin_Exporters {
}
if ( ! empty( $_POST['export_types'] ) ) {
$exporter->set_product_types_to_export( $_POST['export_types'] );
$exporter->set_product_types_to_export( wp_unslash( $_POST['export_types'] ) );
}
$exporter->set_page( $step );

View File

@ -7,6 +7,7 @@
* @package WooCommerce/Export
* @version 3.1.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
@ -25,18 +26,21 @@ class WC_Product_CSV_Exporter extends WC_CSV_Batch_Exporter {
/**
* Type of export used in filter names.
*
* @var string
*/
protected $export_type = 'product';
/**
* Should meta be exported?
*
* @var boolean
*/
protected $enable_meta_export = false;
/**
* Which product types are being exported.
*
* @var array
*/
protected $product_types_to_export = array();
@ -53,7 +57,7 @@ class WC_Product_CSV_Exporter extends WC_CSV_Batch_Exporter {
* Should meta be exported?
*
* @since 3.1.0
* @param bool $enable_meta_export
* @param bool $enable_meta_export Should meta be exported.
*/
public function enable_meta_export( $enable_meta_export ) {
$this->enable_meta_export = (bool) $enable_meta_export;
@ -63,7 +67,7 @@ class WC_Product_CSV_Exporter extends WC_CSV_Batch_Exporter {
* Product types to export.
*
* @since 3.1.0
* @param array $product_types_to_export
* @param array $product_types_to_export List of types to export.
*/
public function set_product_types_to_export( $product_types_to_export ) {
$this->product_types_to_export = array_map( 'wc_clean', $product_types_to_export );
@ -148,20 +152,20 @@ class WC_Product_CSV_Exporter extends WC_CSV_Batch_Exporter {
$value = '';
// Skip some columns if dynamically handled later or if we're being selective.
if ( in_array( $column_id, array( 'downloads', 'attributes', 'meta' ) ) || ! $this->is_column_exporting( $column_id ) ) {
if ( in_array( $column_id, array( 'downloads', 'attributes', 'meta' ), true ) || ! $this->is_column_exporting( $column_id ) ) {
continue;
}
// Filter for 3rd parties.
if ( has_filter( "woocommerce_product_export_{$this->export_type}_column_{$column_id}" ) ) {
// Filter for 3rd parties.
$value = apply_filters( "woocommerce_product_export_{$this->export_type}_column_{$column_id}", '', $product, $column_id );
// Handle special columns which don't map 1:1 to product data.
} elseif ( is_callable( array( $this, "get_column_value_{$column_id}" ) ) ) {
// Handle special columns which don't map 1:1 to product data.
$value = $this->{"get_column_value_{$column_id}"}( $product );
// Default and custom handling.
} elseif ( is_callable( array( $product, "get_{$column_id}" ) ) ) {
// Default and custom handling.
$value = $product->{"get_{$column_id}"}( 'edit' );
}
@ -180,7 +184,7 @@ class WC_Product_CSV_Exporter extends WC_CSV_Batch_Exporter {
* Get published value.
*
* @since 3.1.0
* @param WC_Product $product
* @param WC_Product $product Product being exported.
* @return int
*/
protected function get_column_value_published( $product ) {
@ -191,7 +195,7 @@ class WC_Product_CSV_Exporter extends WC_CSV_Batch_Exporter {
* Get product_cat value.
*
* @since 3.1.0
* @param WC_Product $product
* @param WC_Product $product Product being exported.
* @return string
*/
protected function get_column_value_category_ids( $product ) {
@ -203,7 +207,7 @@ class WC_Product_CSV_Exporter extends WC_CSV_Batch_Exporter {
* Get product_tag value.
*
* @since 3.1.0
* @param WC_Product $product
* @param WC_Product $product Product being exported.
* @return string
*/
protected function get_column_value_tag_ids( $product ) {
@ -215,7 +219,7 @@ class WC_Product_CSV_Exporter extends WC_CSV_Batch_Exporter {
* Get product_shipping_class value.
*
* @since 3.1.0
* @param WC_Product $product
* @param WC_Product $product Product being exported.
* @return string
*/
protected function get_column_value_shipping_class_id( $product ) {
@ -227,7 +231,7 @@ class WC_Product_CSV_Exporter extends WC_CSV_Batch_Exporter {
* Get images value.
*
* @since 3.1.0
* @param WC_Product $product
* @param WC_Product $product Product being exported.
* @return string
*/
protected function get_column_value_images( $product ) {
@ -249,7 +253,7 @@ class WC_Product_CSV_Exporter extends WC_CSV_Batch_Exporter {
* Prepare linked products for export.
*
* @since 3.1.0
* @param int[] $linked_products
* @param int[] $linked_products Array of linked product ids.
* @return string
*/
protected function prepare_linked_products_for_export( $linked_products ) {
@ -270,7 +274,7 @@ class WC_Product_CSV_Exporter extends WC_CSV_Batch_Exporter {
* Get cross_sell_ids value.
*
* @since 3.1.0
* @param WC_Product $product
* @param WC_Product $product Product being exported.
* @return string
*/
protected function get_column_value_cross_sell_ids( $product ) {
@ -281,7 +285,7 @@ class WC_Product_CSV_Exporter extends WC_CSV_Batch_Exporter {
* Get upsell_ids value.
*
* @since 3.1.0
* @param WC_Product $product
* @param WC_Product $product Product being exported.
* @return string
*/
protected function get_column_value_upsell_ids( $product ) {
@ -292,7 +296,7 @@ class WC_Product_CSV_Exporter extends WC_CSV_Batch_Exporter {
* Get parent_id value.
*
* @since 3.1.0
* @param WC_Product $product
* @param WC_Product $product Product being exported.
* @return string
*/
protected function get_column_value_parent_id( $product ) {
@ -311,7 +315,7 @@ class WC_Product_CSV_Exporter extends WC_CSV_Batch_Exporter {
* Get grouped_products value.
*
* @since 3.1.0
* @param WC_Product $product
* @param WC_Product $product Product being exported.
* @return string
*/
protected function get_column_value_grouped_products( $product ) {
@ -336,7 +340,7 @@ class WC_Product_CSV_Exporter extends WC_CSV_Batch_Exporter {
* Get download_limit value.
*
* @since 3.1.0
* @param WC_Product $product
* @param WC_Product $product Product being exported.
* @return string
*/
protected function get_column_value_download_limit( $product ) {
@ -347,7 +351,7 @@ class WC_Product_CSV_Exporter extends WC_CSV_Batch_Exporter {
* Get download_expiry value.
*
* @since 3.1.0
* @param WC_Product $product
* @param WC_Product $product Product being exported.
* @return string
*/
protected function get_column_value_download_expiry( $product ) {
@ -358,7 +362,7 @@ class WC_Product_CSV_Exporter extends WC_CSV_Batch_Exporter {
* Get stock value.
*
* @since 3.1.0
* @param WC_Product $product
* @param WC_Product $product Product being exported.
* @return string
*/
protected function get_column_value_stock( $product ) {
@ -378,7 +382,7 @@ class WC_Product_CSV_Exporter extends WC_CSV_Batch_Exporter {
* Get stock status value.
*
* @since 3.1.0
* @param WC_Product $product
* @param WC_Product $product Product being exported.
* @return string
*/
protected function get_column_value_stock_status( $product ) {
@ -395,7 +399,7 @@ class WC_Product_CSV_Exporter extends WC_CSV_Batch_Exporter {
* Get backorders.
*
* @since 3.1.0
* @param WC_Product $product
* @param WC_Product $product Product being exported.
* @return string
*/
protected function get_column_value_backorders( $product ) {
@ -413,7 +417,7 @@ class WC_Product_CSV_Exporter extends WC_CSV_Batch_Exporter {
* Get type value.
*
* @since 3.1.0
* @param WC_Product $product
* @param WC_Product $product Product being exported.
* @return string
*/
protected function get_column_value_type( $product ) {
@ -435,8 +439,8 @@ class WC_Product_CSV_Exporter extends WC_CSV_Batch_Exporter {
* Export downloads.
*
* @since 3.1.0
* @param WC_Product $product
* @param array $row
* @param WC_Product $product Product being exported.
* @param array $row Row being exported.
*/
protected function prepare_downloads_for_export( $product, &$row ) {
if ( $product->is_downloadable() && $this->is_column_exporting( 'downloads' ) ) {
@ -459,8 +463,8 @@ class WC_Product_CSV_Exporter extends WC_CSV_Batch_Exporter {
* Export attributes data.
*
* @since 3.1.0
* @param WC_Product $product
* @param array $row
* @param WC_Product $product Product being exported.
* @param array $row Row being exported.
*/
protected function prepare_attributes_for_export( $product, &$row ) {
if ( $this->is_column_exporting( 'attributes' ) ) {
@ -498,7 +502,7 @@ class WC_Product_CSV_Exporter extends WC_CSV_Batch_Exporter {
$row[ 'attributes:name' . $i ] = wc_attribute_label( $attribute_name, $product );
if ( 0 === strpos( $attribute_name, 'pa_' ) ) {
$option_term = get_term_by( 'slug', $attribute, $attribute_name );
$option_term = get_term_by( 'slug', $attribute, $attribute_name ); // @codingStandardsIgnoreLine.
$row[ 'attributes:value' . $i ] = $option_term && ! is_wp_error( $option_term ) ? str_replace( ',', '\\,', $option_term->name ) : $attribute;
$row[ 'attributes:taxonomy' . $i ] = 1;
} else {
@ -514,7 +518,7 @@ class WC_Product_CSV_Exporter extends WC_CSV_Batch_Exporter {
$default_value = $default_attributes[ sanitize_title( $attribute_name ) ];
if ( 0 === strpos( $attribute_name, 'pa_' ) ) {
$option_term = get_term_by( 'slug', $default_value, $attribute_name );
$option_term = get_term_by( 'slug', $default_value, $attribute_name ); // @codingStandardsIgnoreLine.
$row[ 'attributes:default' . $i ] = $option_term && ! is_wp_error( $option_term ) ? $option_term->name : $default_value;
} else {
$row[ 'attributes:default' . $i ] = $default_value;