예제 #1
0
function woo_ce_escape_csv_array( $array = array(), $child = false, $escape = true ) {

	global $export;

	$output = '';
	if( !empty( $array ) ) {
		foreach( $array as $key => $value ) {
			$size = count( $value );
			if( is_array( $value ) && $size > 1 ) {
				$output .= '[' . $key . '] ';
				foreach( $value as $child_key => $child_value ) {
					$output .= $child_key . ': ' . woo_ce_escape_csv_array( $child_value, false, false ) . $export->category_separator;
				}
				$output .= $export->category_separator;
			} else {
				if( is_array( $value ) && $size == 1 ) {
					$keys = array_keys( $value );
					if( count( $keys ) == 1 )
						$value = $value[$keys[0]];
					unset( $keys );
				} else if( is_array( $value ) && empty( $value ) ) {
					$value = '';
				}
				$output .= '[' . $key . '] ' . $value . $export->category_separator;
			}
		}
		$output = substr( $output, 0, -1 );
	}
	$output = woo_ce_escape_csv_value( $output, $export->delimiter, $export->escape_formatting );
	return $output;

}
예제 #2
0
 function woo_cd_export_dataset($datatype = null, $export = null)
 {
     global $wpdb, $export;
     include_once WOO_CE_PATH . 'includes/formatting.php';
     include_once WOO_CD_PATH . 'includes/formatting.php';
     $csv = '';
     $separator = $export->delimiter;
     switch ($datatype) {
         case 'orders':
             $fields = woo_ce_get_order_fields('summary');
             if ($export->fields = array_intersect_assoc($fields, $export->fields)) {
                 foreach ($export->fields as $key => $field) {
                     $export->columns[] = woo_ce_get_order_field($key);
                 }
             }
             if ($export->args['order_items'] == 'unique') {
                 $export->fields = woo_cd_add_unique_order_item_fields($export->fields);
                 $export->columns = woo_cd_add_unique_order_item_columns($export->columns);
             }
             $export->data_memory_start = woo_ce_current_memory_usage();
             if ($orders = woo_cd_get_orders('orders', $export->args)) {
                 $export->total_columns = $size = count($export->columns);
                 $i = 0;
                 foreach ($export->columns as $column) {
                     if ($i == $size - 1) {
                         $csv .= woo_ce_escape_csv_value($column, $export->delimiter, $export->escape_formatting) . "\n";
                     } else {
                         $csv .= woo_ce_escape_csv_value($column, $export->delimiter, $export->escape_formatting) . $separator;
                     }
                     $i++;
                 }
                 unset($export->columns);
                 foreach ($orders as $order) {
                     if ($export->args['order_items'] == 'combined' || $export->args['order_items'] == 'unique') {
                         /* Order items formatting: SPECK-IPHONE|INCASE-NANO|- */
                         foreach ($export->fields as $key => $field) {
                             if (isset($order->{$key})) {
                                 if (is_array($field)) {
                                     foreach ($field as $array_key => $array_value) {
                                         if (!is_array($array_value)) {
                                             $csv .= woo_ce_escape_csv_value($array_value, $export->delimiter, $export->escape_formatting);
                                         }
                                     }
                                 } else {
                                     $csv .= woo_ce_escape_csv_value($order->{$key}, $export->delimiter, $export->escape_formatting);
                                 }
                             }
                             $csv .= $separator;
                         }
                         $csv = substr($csv, 0, -1) . "\n";
                     } else {
                         if ($export->args['order_items'] == 'individual') {
                             /* Order items formatting: SPECK-IPHONE<br />INCASE-NANO<br />- */
                             $order->order_items_count = 0;
                             foreach ($order->order_items as $order_item) {
                                 $order->order_items_product_id = '';
                                 $order->order_items_variation_id = '';
                                 $order->order_items_sku = '';
                                 $order->order_items_name = '';
                                 $order->order_items_variation = '';
                                 $order->order_items_tax_class = '';
                                 $order->order_items_quantity = '';
                                 $order->order_items_total = '';
                                 $order->order_items_subtotal = '';
                                 $order->order_items_tax = '';
                                 $order->order_items_tax_subtotal = '';
                                 $order->order_items_type = '';
                                 $order->order_items_category = '';
                                 $order->order_items_tag = '';
                                 if (empty($order_item->sku)) {
                                     $order_item->sku = '-';
                                 }
                                 $order->order_items_product_id .= $order_item->product_id;
                                 $order->order_items_variation_id .= $order_item->variation_id;
                                 $order->order_items_sku .= $order_item->sku;
                                 $order->order_items_name .= $order_item->name;
                                 $order->order_items_variation .= $order_item->variation;
                                 $order->order_items_tax_class .= $order_item->tax_class;
                                 $order->order_items_quantity .= $order_item->quantity;
                                 $order->order_items_total .= $order_item->total;
                                 $order->order_items_subtotal .= $order_item->subtotal;
                                 $order->order_items_tax .= $order_item->tax;
                                 $order->order_items_tax_subtotal .= $order_item->tax_subtotal;
                                 $order->order_items_type .= $order_item->type;
                                 $order->order_items_category .= $order_item->category;
                                 $order->order_items_tag .= $order_item->tag;
                                 $order = apply_filters('woo_cd_order_items_individual', $order, $order_item);
                                 foreach ($export->fields as $key => $field) {
                                     if (isset($order->{$key})) {
                                         if (is_array($field)) {
                                             foreach ($field as $array_key => $array_value) {
                                                 if (!is_array($array_value)) {
                                                     $csv .= woo_ce_escape_csv_value($array_value, $export->delimiter, $export->escape_formatting);
                                                 }
                                             }
                                         } else {
                                             $csv .= woo_ce_escape_csv_value($order->{$key}, $export->delimiter, $export->escape_formatting);
                                         }
                                     }
                                     $csv .= $separator;
                                 }
                                 $csv = substr($csv, 0, -1) . "\n";
                             }
                         }
                     }
                 }
                 unset($orders, $order);
             }
             $export->data_memory_end = woo_ce_current_memory_usage();
             unset($export->fields);
             break;
         case 'customers':
             $fields = woo_ce_get_customer_fields('summary');
             if ($export->fields = array_intersect_assoc($fields, $export->fields)) {
                 foreach ($export->fields as $key => $field) {
                     $export->columns[] = woo_ce_get_customer_field($key);
                 }
             }
             $export->data_memory_start = woo_ce_current_memory_usage();
             if ($customers = woo_cd_get_orders('customers', $export->args)) {
                 $size = count($export->columns);
                 $export->total_rows = $wpdb->num_rows;
                 $export->total_columns = $size = count($export->columns);
                 for ($i = 0; $i < $size; $i++) {
                     if ($i == $size - 1) {
                         $csv .= woo_ce_escape_csv_value($export->columns[$i], $export->delimiter, $export->escape_formatting) . "\n";
                     } else {
                         $csv .= woo_ce_escape_csv_value($export->columns[$i], $export->delimiter, $export->escape_formatting) . $separator;
                     }
                 }
                 foreach ($customers as $customer) {
                     foreach ($export->fields as $key => $field) {
                         if (isset($customer->{$key})) {
                             $csv .= woo_ce_escape_csv_value($customer->{$key}, $export->delimiter, $export->escape_formatting);
                         }
                         $csv .= $separator;
                     }
                     $csv = substr($csv, 0, -1) . "\n";
                 }
                 unset($customers, $customer);
             }
             $export->data_memory_end = woo_ce_current_memory_usage();
             unset($export->fields);
             break;
         case 'coupons':
             $fields = woo_ce_get_coupon_fields('summary');
             if ($export->fields = array_intersect_assoc($fields, $export->fields)) {
                 foreach ($export->fields as $key => $field) {
                     $export->columns[] = woo_ce_get_coupon_field($key);
                 }
             }
             $export->data_memory_start = woo_ce_current_memory_usage();
             if ($coupons = woo_cd_get_coupons()) {
                 // $export->total_rows = count( $coupons );
                 $export->total_columns = $size = count($export->columns);
                 for ($i = 0; $i < $size; $i++) {
                     if ($i == $size - 1) {
                         $csv .= woo_ce_escape_csv_value($export->columns[$i], $export->delimiter, $export->escape_formatting) . "\n";
                     } else {
                         $csv .= woo_ce_escape_csv_value($export->columns[$i], $export->delimiter, $export->escape_formatting) . $separator;
                     }
                 }
                 foreach ($coupons as $coupon) {
                     foreach ($export->fields as $key => $field) {
                         if (isset($coupon->{$key})) {
                             $csv .= woo_ce_escape_csv_value($coupon->{$key}, $export->delimiter, $export->escape_formatting);
                         }
                         $csv .= $separator;
                     }
                     $csv = substr($csv, 0, -1) . "\n";
                 }
                 unset($coupons, $coupon);
             }
             $export->data_memory_end = woo_ce_current_memory_usage();
             unset($export->fields);
             break;
     }
     return $csv;
 }
예제 #3
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;
        }
    }
}
예제 #4
0
파일: functions.php 프로젝트: jaiweb/ASP
 function woo_ce_export_dataset($dataset, $args = array())
 {
     global $wpdb, $woo_ce, $export;
     $csv = '';
     if ($export->bom) {
         $csv .= chr(239) . chr(187) . chr(191) . '';
     }
     $separator = $export->delimiter;
     $export->args = $args;
     foreach ($dataset as $datatype) {
         $csv = '';
         switch ($datatype) {
             /* Products */
             case 'products':
                 $fields = woo_ce_get_product_fields('summary');
                 $export->fields = array_intersect_assoc($fields, $export->fields);
                 if ($export->fields) {
                     foreach ($export->fields as $key => $field) {
                         $export->columns[] = woo_ce_get_product_field($key);
                     }
                 }
                 $products = woo_ce_get_products($export->args);
                 if ($products) {
                     $size = count($export->columns);
                     for ($i = 0; $i < $size; $i++) {
                         if ($i == $size - 1) {
                             $csv .= woo_ce_escape_csv_value($export->columns[$i], $export->delimiter, $export->escape_formatting) . "\n";
                         } else {
                             $csv .= 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;
                     foreach ($products as $product) {
                         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)) {
                                             $csv .= woo_ce_escape_csv_value($array_value, $export->delimiter, $export->escape_formatting);
                                         }
                                     }
                                 } else {
                                     $csv .= woo_ce_escape_csv_value($product->{$key}, $export->delimiter, $export->escape_formatting);
                                 }
                             }
                             $csv .= $separator;
                         }
                         $csv = substr($csv, 0, -1) . "\n";
                     }
                     unset($products, $product);
                 }
                 break;
                 /* Categories */
             /* Categories */
             case 'categories':
                 $columns = array(__('Category', 'woo_ce'));
                 $size = count($columns);
                 for ($i = 0; $i < $size; $i++) {
                     if ($i == $size - 1) {
                         $csv .= woo_ce_escape_csv_value($columns[$i], $export->delimiter, $export->escape_formatting) . "\n";
                     } else {
                         $csv .= woo_ce_escape_csv_value($columns[$i], $export->delimiter, $export->escape_formatting) . $separator;
                     }
                 }
                 $categories = woo_ce_get_product_categories();
                 if ($categories) {
                     foreach ($categories as $category) {
                         $csv .= $category->name . "\n";
                     }
                     unset($categories, $category);
                 }
                 break;
                 /* Tags */
             /* Tags */
             case 'tags':
                 $columns = array(__('Tags', 'woo_ce'));
                 $size = count($columns);
                 for ($i = 0; $i < $size; $i++) {
                     if ($i == $size - 1) {
                         $csv .= woo_ce_escape_csv_value($columns[$i], $export->delimiter, $export->escape_formatting) . "\n";
                     } else {
                         $csv .= woo_ce_escape_csv_value($columns[$i], $export->delimiter, $export->escape_formatting) . $separator;
                     }
                 }
                 $tags = woo_ce_get_product_tags();
                 if ($tags) {
                     foreach ($tags as $tag) {
                         $csv .= $tag->name . "\n";
                     }
                     unset($tags, $tag);
                 }
                 break;
                 /* Orders */
             /* Orders */
             case 'orders':
                 /* Customers */
             /* Customers */
             case 'customers':
                 /* Coupons */
             /* Coupons */
             case 'coupons':
                 $csv = apply_filters('woo_ce_export_dataset', $datatype, $export);
                 break;
         }
         if ($csv) {
             $csv = utf8_decode($csv);
             if (isset($woo_ce['debug']) && $woo_ce['debug']) {
                 $woo_ce['debug_log'] = $csv;
             } else {
                 return $csv;
             }
         } else {
             return false;
         }
     }
 }
예제 #5
0
 function woo_ce_export_dataset($dataset, $args = array())
 {
     global $wpdb, $export;
     $csv = '';
     if ($export->bom) {
         // $csv .= chr(239) . chr(187) . chr(191) . '';
         $csv .= "";
     }
     $separator = $export->delimiter;
     $export->args = $args;
     set_transient(WOO_CE_PREFIX . '_running', time(), woo_ce_get_option('timeout', MINUTE_IN_SECONDS));
     $csv = '';
     switch ($dataset) {
         // Products
         case 'products':
             $fields = woo_ce_get_product_fields('summary');
             if ($export->fields = array_intersect_assoc($fields, $export->fields)) {
                 foreach ($export->fields as $key => $field) {
                     $export->columns[] = woo_ce_get_product_field($key);
                 }
             }
             $export->data_memory_start = woo_ce_current_memory_usage();
             if ($products = woo_ce_get_products($export->args)) {
                 $export->total_rows = count($products);
                 $size = count($export->columns);
                 $export->total_columns = $size;
                 for ($i = 0; $i < $size; $i++) {
                     if ($i == $size - 1) {
                         $csv .= woo_ce_escape_csv_value($export->columns[$i], $export->delimiter, $export->escape_formatting) . "\n";
                     } else {
                         $csv .= woo_ce_escape_csv_value($export->columns[$i], $export->delimiter, $export->escape_formatting) . $separator;
                     }
                 }
                 unset($export->columns);
                 $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;
                 foreach ($products as $product) {
                     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)) {
                                         $csv .= woo_ce_escape_csv_value($array_value, $export->delimiter, $export->escape_formatting);
                                     }
                                 }
                             } else {
                                 $csv .= woo_ce_escape_csv_value($product->{$key}, $export->delimiter, $export->escape_formatting);
                             }
                         }
                         $csv .= $separator;
                     }
                     $csv = substr($csv, 0, -1) . "\n";
                 }
                 unset($products, $product);
             }
             $export->data_memory_end = woo_ce_current_memory_usage();
             break;
             // Categories
         // Categories
         case 'categories':
             $fields = woo_ce_get_category_fields('summary');
             if ($export->fields = array_intersect_assoc($fields, $export->fields)) {
                 foreach ($export->fields as $key => $field) {
                     $export->columns[] = woo_ce_get_category_field($key);
                 }
             }
             $export->data_memory_start = woo_ce_current_memory_usage();
             if ($categories = woo_ce_get_product_categories($export->args)) {
                 $export->total_rows = count($categories);
                 $size = count($export->columns);
                 $export->total_columns = $size;
                 for ($i = 0; $i < $size; $i++) {
                     if ($i == $size - 1) {
                         $csv .= woo_ce_escape_csv_value($export->columns[$i], $export->delimiter, $export->escape_formatting) . "\n";
                     } else {
                         $csv .= woo_ce_escape_csv_value($export->columns[$i], $export->delimiter, $export->escape_formatting) . $separator;
                     }
                 }
                 unset($export->columns);
                 foreach ($categories as $category) {
                     foreach ($export->fields as $key => $field) {
                         if (isset($category->{$key})) {
                             $csv .= woo_ce_escape_csv_value($category->{$key}, $export->delimiter, $export->escape_formatting);
                         }
                         $csv .= $separator;
                     }
                     $csv = substr($csv, 0, -1) . "\n";
                 }
                 unset($categories, $category);
             }
             $export->data_memory_end = woo_ce_current_memory_usage();
             break;
             // Tags
         // Tags
         case 'tags':
             $fields = woo_ce_get_tag_fields('summary');
             if ($export->fields = array_intersect_assoc($fields, $export->fields)) {
                 foreach ($export->fields as $key => $field) {
                     $export->columns[] = woo_ce_get_tag_field($key);
                 }
             }
             $export->data_memory_start = woo_ce_current_memory_usage();
             if ($tags = woo_ce_get_product_tags($export->args)) {
                 $export->total_rows = count($tags);
                 $size = count($export->columns);
                 $export->total_columns = $size;
                 for ($i = 0; $i < $size; $i++) {
                     if ($i == $size - 1) {
                         $csv .= woo_ce_escape_csv_value($export->columns[$i], $export->delimiter, $export->escape_formatting) . "\n";
                     } else {
                         $csv .= woo_ce_escape_csv_value($export->columns[$i], $export->delimiter, $export->escape_formatting) . $separator;
                     }
                 }
                 unset($export->columns);
                 foreach ($tags as $tag) {
                     foreach ($export->fields as $key => $field) {
                         if (isset($tag->{$key})) {
                             $csv .= woo_ce_escape_csv_value($tag->{$key}, $export->delimiter, $export->escape_formatting);
                         }
                         $csv .= $separator;
                     }
                     $csv = substr($csv, 0, -1) . "\n";
                 }
                 unset($tags, $tag);
             }
             $export->data_memory_end = woo_ce_current_memory_usage();
             break;
             // Orders
         // Orders
         case 'orders':
             // Customers
         // Customers
         case 'customers':
             // Coupons
         // Coupons
         case 'coupons':
             $csv = apply_filters('woo_ce_export_dataset', $export->type, $export);
             break;
     }
     if ($csv) {
         $csv = woo_ce_file_encoding($csv);
         if (WOO_CE_DEBUG) {
             set_transient(WOO_CE_PREFIX . '_debug_log', base64_encode($csv), woo_ce_get_option('timeout', MINUTE_IN_SECONDS));
         } else {
             return $csv;
         }
     }
     // Export completed successfully
     delete_transient(WOO_CE_PREFIX . '_running');
 }